summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/auto.pro12
-rw-r--r--tests/auto/baselineexample/baselineexample.pro18
-rw-r--r--tests/auto/corelib.pro115
-rw-r--r--tests/auto/corelib/animation/animation.pro9
-rw-r--r--tests/auto/corelib/animation/qabstractanimation/qabstractanimation.pro6
-rw-r--r--tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp171
-rw-r--r--tests/auto/corelib/animation/qanimationgroup/qanimationgroup.pro (renamed from tests/auto/qanimationgroup/qanimationgroup.pro)0
-rw-r--r--tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp (renamed from tests/auto/qanimationgroup/tst_qanimationgroup.cpp)0
-rw-r--r--tests/auto/corelib/animation/qparallelanimationgroup/qparallelanimationgroup.pro (renamed from tests/auto/qparallelanimationgroup/qparallelanimationgroup.pro)0
-rw-r--r--tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp (renamed from tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp)0
-rw-r--r--tests/auto/corelib/animation/qpauseanimation/qpauseanimation.pro (renamed from tests/auto/qpauseanimation/qpauseanimation.pro)0
-rw-r--r--tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp (renamed from tests/auto/qpauseanimation/tst_qpauseanimation.cpp)0
-rw-r--r--tests/auto/corelib/animation/qpropertyanimation/qpropertyanimation.pro5
-rw-r--r--tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp1243
-rw-r--r--tests/auto/corelib/animation/qsequentialanimationgroup/qsequentialanimationgroup.pro (renamed from tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro)0
-rw-r--r--tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp1672
-rw-r--r--tests/auto/corelib/animation/qvariantanimation/qvariantanimation.pro6
-rw-r--r--tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp164
-rw-r--r--tests/auto/corelib/codecs/codecs.pro3
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/.gitattributes (renamed from tests/auto/qtextcodec/.gitattributes)0
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/.gitignore (renamed from tests/auto/qtextcodec/.gitignore)0
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/QT4-crashtest.txt (renamed from tests/auto/qtextcodec/QT4-crashtest.txt)bin34 -> 34 bytes
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/echo/echo.pro (renamed from tests/auto/qtextcodec/echo/echo.pro)0
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/echo/main.cpp (renamed from tests/auto/qtextcodec/echo/main.cpp)0
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/korean.txt (renamed from tests/auto/qtextcodec/korean.txt)0
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro (renamed from tests/auto/qtextcodec/qtextcodec.pro)0
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/test/test.pro (renamed from tests/auto/qtextcodec/test/test.pro)0
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp (renamed from tests/auto/qtextcodec/tst_qtextcodec.cpp)0
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/utf8.txt (renamed from tests/auto/qtextcodec/utf8.txt)0
-rw-r--r--tests/auto/corelib/concurrent/concurrent.pro19
-rw-r--r--tests/auto/corelib/concurrent/qfuture/.gitignore (renamed from tests/auto/qfuture/.gitignore)0
-rw-r--r--tests/auto/corelib/concurrent/qfuture/qfuture.pro (renamed from tests/auto/qfuture/qfuture.pro)0
-rw-r--r--tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp1474
-rw-r--r--tests/auto/corelib/concurrent/qfuture/versioncheck.h (renamed from tests/auto/qfuture/versioncheck.h)0
-rw-r--r--tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro5
-rw-r--r--tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp158
-rw-r--r--tests/auto/corelib/concurrent/qfuturewatcher/.gitignore (renamed from tests/auto/qfuturewatcher/.gitignore)0
-rw-r--r--tests/auto/corelib/concurrent/qfuturewatcher/qfuturewatcher.pro (renamed from tests/auto/qfuturewatcher/qfuturewatcher.pro)0
-rw-r--r--tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp930
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentfilter/.gitignore (renamed from tests/auto/qtconcurrentfilter/.gitignore)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro (renamed from tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp1548
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentiteratekernel/.gitignore (renamed from tests/auto/qtconcurrentiteratekernel/.gitignore)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro (renamed from tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp (renamed from tests/auto/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentmap/.gitignore (renamed from tests/auto/qtconcurrentmap/.gitignore)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentmap/functions.h (renamed from tests/auto/qtconcurrentmap/functions.h)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentmap/qtconcurrentmap.pro (renamed from tests/auto/qtconcurrentmap/qtconcurrentmap.pro)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp2448
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro5
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp491
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentrun/.gitignore (renamed from tests/auto/qtconcurrentrun/.gitignore)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentrun/qtconcurrentrun.pro (renamed from tests/auto/qtconcurrentrun/qtconcurrentrun.pro)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp (renamed from tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentthreadengine/.gitignore (renamed from tests/auto/qtconcurrentthreadengine/.gitignore)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro (renamed from tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro)0
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp536
-rw-r--r--tests/auto/corelib/concurrent/qthreadpool/.gitignore (renamed from tests/auto/qthreadpool/.gitignore)0
-rw-r--r--tests/auto/corelib/concurrent/qthreadpool/qthreadpool.pro (renamed from tests/auto/qthreadpool/qthreadpool.pro)0
-rw-r--r--tests/auto/corelib/concurrent/qthreadpool/tst_qthreadpool.cpp (renamed from tests/auto/qthreadpool/tst_qthreadpool.cpp)0
-rw-r--r--tests/auto/corelib/corelib.pro13
-rw-r--r--tests/auto/corelib/global/global.pro8
-rw-r--r--tests/auto/corelib/global/q_func_info/.gitignore (renamed from tests/auto/q_func_info/.gitignore)0
-rw-r--r--tests/auto/corelib/global/q_func_info/q_func_info.pro (renamed from tests/auto/q_func_info/q_func_info.pro)0
-rw-r--r--tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp (renamed from tests/auto/q_func_info/tst_q_func_info.cpp)0
-rw-r--r--tests/auto/corelib/global/qflags/.gitignore (renamed from tests/auto/qflags/.gitignore)0
-rw-r--r--tests/auto/corelib/global/qflags/qflags.pro (renamed from tests/auto/qflags/qflags.pro)0
-rw-r--r--tests/auto/corelib/global/qflags/tst_qflags.cpp (renamed from tests/auto/qflags/tst_qflags.cpp)0
-rw-r--r--tests/auto/corelib/global/qgetputenv/.gitignore (renamed from tests/auto/qgetputenv/.gitignore)0
-rw-r--r--tests/auto/corelib/global/qgetputenv/qgetputenv.pro (renamed from tests/auto/qgetputenv/qgetputenv.pro)0
-rw-r--r--tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp (renamed from tests/auto/qgetputenv/tst_qgetputenv.cpp)0
-rw-r--r--tests/auto/corelib/global/qglobal/.gitignore (renamed from tests/auto/qglobal/.gitignore)0
-rw-r--r--tests/auto/corelib/global/qglobal/qglobal.pro (renamed from tests/auto/qglobal/qglobal.pro)0
-rw-r--r--tests/auto/corelib/global/qglobal/tst_qglobal.cpp (renamed from tests/auto/qglobal/tst_qglobal.cpp)0
-rw-r--r--tests/auto/corelib/global/qnumeric/.gitignore (renamed from tests/auto/qnumeric/.gitignore)0
-rw-r--r--tests/auto/corelib/global/qnumeric/qnumeric.pro (renamed from tests/auto/qnumeric/qnumeric.pro)0
-rw-r--r--tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp (renamed from tests/auto/qnumeric/tst_qnumeric.cpp)0
-rw-r--r--tests/auto/corelib/global/qrand/.gitignore (renamed from tests/auto/qrand/.gitignore)0
-rw-r--r--tests/auto/corelib/global/qrand/qrand.pro (renamed from tests/auto/qrand/qrand.pro)0
-rw-r--r--tests/auto/corelib/global/qrand/tst_qrand.cpp (renamed from tests/auto/qrand/tst_qrand.cpp)0
-rw-r--r--tests/auto/corelib/io/io.pro23
-rw-r--r--tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.pro (renamed from tests/auto/qabstractfileengine/qabstractfileengine.pro)0
-rw-r--r--tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.qrc (renamed from tests/auto/qabstractfileengine/qabstractfileengine.qrc)0
-rw-r--r--tests/auto/corelib/io/qabstractfileengine/resources/file.txt (renamed from tests/auto/qabstractfileengine/resources/file.txt)0
-rw-r--r--tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp (renamed from tests/auto/qabstractfileengine/tst_qabstractfileengine.cpp)0
-rw-r--r--tests/auto/corelib/io/qbuffer/.gitignore (renamed from tests/auto/qbuffer/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qbuffer/qbuffer.pro (renamed from tests/auto/qbuffer/qbuffer.pro)0
-rw-r--r--tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp (renamed from tests/auto/qbuffer/tst_qbuffer.cpp)0
-rw-r--r--tests/auto/corelib/io/qdatastream/.gitignore (renamed from tests/auto/qdatastream/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qdatastream/datastream.q42 (renamed from tests/auto/qdatastream/datastream.q42)bin668 -> 668 bytes
-rw-r--r--tests/auto/corelib/io/qdatastream/qdatastream.pro20
-rw-r--r--tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp (renamed from tests/auto/qdatastream/tst_qdatastream.cpp)0
-rw-r--r--tests/auto/corelib/io/qdebug/.gitignore (renamed from tests/auto/qdebug/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qdebug/qdebug.pro (renamed from tests/auto/qdebug/qdebug.pro)0
-rw-r--r--tests/auto/corelib/io/qdebug/tst_qdebug.cpp (renamed from tests/auto/qdebug/tst_qdebug.cpp)0
-rw-r--r--tests/auto/corelib/io/qdir/.gitignore (renamed from tests/auto/qdir/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qdir/entrylist/directory/dummy (renamed from tests/auto/moc/task71021/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/entrylist/file (renamed from tests/auto/qdir/entrylist/file)0
-rw-r--r--tests/auto/corelib/io/qdir/qdir.pro (renamed from tests/auto/qdir/qdir.pro)0
-rw-r--r--tests/auto/corelib/io/qdir/qdir.qrc (renamed from tests/auto/qdir/qdir.qrc)0
-rw-r--r--tests/auto/corelib/io/qdir/resources/entryList/file1.data (renamed from tests/auto/qdir/resources/entryList/file1.data)0
-rw-r--r--tests/auto/corelib/io/qdir/resources/entryList/file2.data (renamed from tests/auto/qdir/resources/entryList/file2.data)0
-rw-r--r--tests/auto/corelib/io/qdir/resources/entryList/file3.data (renamed from tests/auto/qdir/resources/entryList/file3.data)0
-rw-r--r--tests/auto/corelib/io/qdir/resources/entryList/file4.nothing (renamed from tests/auto/qdir/resources/entryList/file4.nothing)0
-rw-r--r--tests/auto/corelib/io/qdir/searchdir/subdir1/picker.png (renamed from tests/auto/qdir/searchdir/subdir1/picker.png)0
-rw-r--r--tests/auto/corelib/io/qdir/searchdir/subdir2/picker.png (renamed from tests/auto/qdir/searchdir/subdir2/picker.png)0
-rw-r--r--tests/auto/corelib/io/qdir/testData/empty (renamed from tests/auto/qdir/testData/empty)0
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir/qdir.pro (renamed from tests/auto/qdir/testdir/dir/qdir.pro)0
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp (renamed from tests/auto/qdir/testdir/dir/qrc_qdir.cpp)0
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir/tmp/empty (renamed from tests/auto/qdir/testdir/dir/tmp/empty)0
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp (renamed from tests/auto/qdir/testdir/dir/tst_qdir.cpp)0
-rw-r--r--tests/auto/corelib/io/qdir/testdir/spaces/foo. bar (renamed from tests/auto/qdir/testdir/spaces/foo. bar)0
-rw-r--r--tests/auto/corelib/io/qdir/testdir/spaces/foo.bar (renamed from tests/auto/qdir/testdir/spaces/foo.bar)0
-rw-r--r--tests/auto/corelib/io/qdir/tst_qdir.cpp1965
-rw-r--r--tests/auto/corelib/io/qdir/types/a (renamed from tests/auto/qdir/types/a)0
-rw-r--r--tests/auto/corelib/io/qdir/types/a.a (renamed from tests/auto/qdir/types/a.a)0
-rw-r--r--tests/auto/corelib/io/qdir/types/a.b (renamed from tests/auto/qdir/types/a.b)0
-rw-r--r--tests/auto/corelib/io/qdir/types/a.c (renamed from tests/auto/qdir/types/a.c)0
-rw-r--r--tests/auto/corelib/io/qdir/types/b (renamed from tests/auto/qdir/types/b)0
-rw-r--r--tests/auto/corelib/io/qdir/types/b.a (renamed from tests/auto/qdir/types/b.a)0
-rw-r--r--tests/auto/corelib/io/qdir/types/b.b (renamed from tests/auto/qdir/types/b.b)0
-rw-r--r--tests/auto/corelib/io/qdir/types/b.c (renamed from tests/auto/qdir/types/b.c)0
-rw-r--r--tests/auto/corelib/io/qdir/types/c (renamed from tests/auto/qdir/types/c)0
-rw-r--r--tests/auto/corelib/io/qdir/types/c.a (renamed from tests/auto/qdir/types/c.a)0
-rw-r--r--tests/auto/corelib/io/qdir/types/c.b (renamed from tests/auto/qdir/types/c.b)0
-rw-r--r--tests/auto/corelib/io/qdir/types/c.c (renamed from tests/auto/qdir/types/c.c)0
-rw-r--r--tests/auto/corelib/io/qdir/types/d.a/dummy (renamed from tests/auto/qdir/entrylist/directory/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/types/d.b/dummy (renamed from tests/auto/qdir/types/d.a/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/types/d.c/dummy (renamed from tests/auto/qdir/types/d.b/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/types/d/dummy (renamed from tests/auto/qdir/types/d.c/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/types/e.a/dummy (renamed from tests/auto/qdir/types/d/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/types/e.b/dummy (renamed from tests/auto/qdir/types/e.a/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/types/e.c/dummy (renamed from tests/auto/qdir/types/e.b/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/types/e/dummy (renamed from tests/auto/qdir/types/e.c/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/types/f.a/dummy (renamed from tests/auto/qdir/types/e/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/types/f.b/dummy (renamed from tests/auto/qdir/types/f.a/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/types/f.c/dummy (renamed from tests/auto/qdir/types/f.b/dummy)0
-rw-r--r--tests/auto/corelib/io/qdir/types/f/dummy (renamed from tests/auto/qdir/types/f.c/dummy)0
-rw-r--r--tests/auto/corelib/io/qdiriterator/.gitignore (renamed from tests/auto/qdiriterator/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qdiriterator/entrylist/directory/dummy (renamed from tests/auto/qdir/types/f/dummy)0
-rw-r--r--tests/auto/corelib/io/qdiriterator/entrylist/file (renamed from tests/auto/qdiriterator/entrylist/file)0
-rw-r--r--tests/auto/corelib/io/qdiriterator/qdiriterator.pro9
-rw-r--r--tests/auto/corelib/io/qdiriterator/qdiriterator.qrc (renamed from tests/auto/qdiriterator/qdiriterator.qrc)0
-rw-r--r--tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp639
-rw-r--r--tests/auto/corelib/io/qfile/.gitattributes (renamed from tests/auto/qfile/.gitattributes)0
-rw-r--r--tests/auto/corelib/io/qfile/.gitignore (renamed from tests/auto/qfile/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qfile/copy-fallback.qrc (renamed from tests/auto/qfile/copy-fallback.qrc)0
-rw-r--r--tests/auto/corelib/io/qfile/dosfile.txt (renamed from tests/auto/qfile/dosfile.txt)0
-rw-r--r--tests/auto/corelib/io/qfile/forCopying.txt (renamed from tests/auto/qfile/forCopying.txt)0
-rw-r--r--tests/auto/corelib/io/qfile/forRenaming.txt (renamed from tests/auto/qfile/forRenaming.txt)0
-rw-r--r--tests/auto/corelib/io/qfile/largefile/largefile.pro9
-rw-r--r--tests/auto/corelib/io/qfile/largefile/tst_largefile.cpp (renamed from tests/auto/qfile/largefile/tst_largefile.cpp)0
-rw-r--r--tests/auto/corelib/io/qfile/noendofline.txt (renamed from tests/auto/qfile/noendofline.txt)0
-rw-r--r--tests/auto/corelib/io/qfile/qfile.pro (renamed from tests/auto/qfile/qfile.pro)0
-rw-r--r--tests/auto/corelib/io/qfile/qfile.qrc (renamed from tests/auto/qfile/qfile.qrc)0
-rw-r--r--tests/auto/corelib/io/qfile/rename-fallback.qrc (renamed from tests/auto/qfile/rename-fallback.qrc)0
-rw-r--r--tests/auto/corelib/io/qfile/resources/file1.ext1 (renamed from tests/auto/qfile/resources/file1.ext1)0
-rw-r--r--tests/auto/corelib/io/qfile/stdinprocess/main.cpp (renamed from tests/auto/qfile/stdinprocess/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qfile/stdinprocess/stdinprocess.pro (renamed from tests/auto/qfile/stdinprocess/stdinprocess.pro)0
-rw-r--r--tests/auto/corelib/io/qfile/test/test.pro45
-rw-r--r--tests/auto/corelib/io/qfile/testfile.txt (renamed from tests/auto/qfile/testfile.txt)0
-rw-r--r--tests/auto/corelib/io/qfile/testlog.txt (renamed from tests/auto/qfile/testlog.txt)0
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp3406
-rw-r--r--tests/auto/corelib/io/qfile/two.dots.file (renamed from tests/auto/qfile/two.dots.file)0
-rw-r--r--tests/auto/corelib/io/qfileinfo/.gitignore (renamed from tests/auto/qfileinfo/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qfileinfo/qfileinfo.pro (renamed from tests/auto/qfileinfo/qfileinfo.pro)0
-rw-r--r--tests/auto/corelib/io/qfileinfo/qfileinfo.qrc (renamed from tests/auto/qfileinfo/qfileinfo.qrc)0
-rw-r--r--tests/auto/corelib/io/qfileinfo/resources/file1 (renamed from tests/auto/qfileinfo/resources/file1)0
-rw-r--r--tests/auto/corelib/io/qfileinfo/resources/file1.ext1 (renamed from tests/auto/qfileinfo/resources/file1.ext1)0
-rw-r--r--tests/auto/corelib/io/qfileinfo/resources/file1.ext1.ext2 (renamed from tests/auto/qfileinfo/resources/file1.ext1.ext2)0
-rw-r--r--tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp1811
-rw-r--r--tests/auto/corelib/io/qfilesystementry/qfilesystementry.pro8
-rw-r--r--tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp (renamed from tests/auto/qfilesystementry/tst_qfilesystementry.cpp)0
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/.gitignore (renamed from tests/auto/qfilesystemwatcher/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/qfilesystemwatcher.pro (renamed from tests/auto/qfilesystemwatcher/qfilesystemwatcher.pro)0
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp (renamed from tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp)0
-rw-r--r--tests/auto/corelib/io/qiodevice/.gitignore (renamed from tests/auto/qiodevice/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qiodevice/qiodevice.pro (renamed from tests/auto/qiodevice/qiodevice.pro)0
-rw-r--r--tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp611
-rw-r--r--tests/auto/corelib/io/qprocess/.gitignore (renamed from tests/auto/qprocess/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qprocess/fileWriterProcess/fileWriterProcess.pro (renamed from tests/auto/qprocess/fileWriterProcess/fileWriterProcess.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp (renamed from tests/auto/qprocess/fileWriterProcess/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/qprocess.pro (renamed from tests/auto/qprocess/qprocess.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/test/test.pro (renamed from tests/auto/qprocess/test/test.pro)0
-rwxr-xr-xtests/auto/corelib/io/qprocess/testBatFiles/simple.bat (renamed from tests/auto/qprocess/testBatFiles/simple.bat)0
-rwxr-xr-xtests/auto/corelib/io/qprocess/testBatFiles/with space.bat (renamed from tests/auto/qprocess/testBatFiles/with space.bat)0
-rw-r--r--tests/auto/corelib/io/qprocess/testDetached/main.cpp (renamed from tests/auto/qprocess/testDetached/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testDetached/testDetached.pro (renamed from tests/auto/qprocess/testDetached/testDetached.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testExitCodes/main.cpp (renamed from tests/auto/qprocess/testExitCodes/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testExitCodes/testExitCodes.pro (renamed from tests/auto/qprocess/testExitCodes/testExitCodes.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp59
-rw-r--r--tests/auto/corelib/io/qprocess/testGuiProcess/testGuiProcess.pro5
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp (renamed from tests/auto/qprocess/testProcessCrash/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessCrash/testProcessCrash.pro (renamed from tests/auto/qprocess/testProcessCrash/testProcessCrash.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp (renamed from tests/auto/qprocess/testProcessDeadWhileReading/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/testProcessDeadWhileReading.pro (renamed from tests/auto/qprocess/testProcessDeadWhileReading/testProcessDeadWhileReading.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp (renamed from tests/auto/qprocess/testProcessEOF/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEOF/testProcessEOF.pro (renamed from tests/auto/qprocess/testProcessEOF/testProcessEOF.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp (renamed from tests/auto/qprocess/testProcessEcho/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho/testProcessEcho.pro (renamed from tests/auto/qprocess/testProcessEcho/testProcessEcho.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp (renamed from tests/auto/qprocess/testProcessEcho2/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho2/testProcessEcho2.pro (renamed from tests/auto/qprocess/testProcessEcho2/testProcessEcho2.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp (renamed from tests/auto/qprocess/testProcessEcho3/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho3/testProcessEcho3.pro (renamed from tests/auto/qprocess/testProcessEcho3/testProcessEcho3.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp (renamed from tests/auto/qprocess/testProcessEchoGui/main_win.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEchoGui/testProcessEchoGui.pro (renamed from tests/auto/qprocess/testProcessEchoGui/testProcessEchoGui.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp (renamed from tests/auto/qprocess/testProcessEnvironment/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEnvironment/testProcessEnvironment.pro (renamed from tests/auto/qprocess/testProcessEnvironment/testProcessEnvironment.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp (renamed from tests/auto/qprocess/testProcessLoopback/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro (renamed from tests/auto/qprocess/testProcessLoopback/testProcessLoopback.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp (renamed from tests/auto/qprocess/testProcessNormal/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro (renamed from tests/auto/qprocess/testProcessNormal/testProcessNormal.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp (renamed from tests/auto/qprocess/testProcessOutput/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro (renamed from tests/auto/qprocess/testProcessOutput/testProcessOutput.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp (renamed from tests/auto/qprocess/testProcessSpacesArgs/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessSpacesArgs/nospace.pro (renamed from tests/auto/qprocess/testProcessSpacesArgs/nospace.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessSpacesArgs/onespace.pro (renamed from tests/auto/qprocess/testProcessSpacesArgs/onespace.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro (renamed from tests/auto/qprocess/testProcessSpacesArgs/twospaces.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp (renamed from tests/auto/qprocess/testSetWorkingDirectory/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro (renamed from tests/auto/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp (renamed from tests/auto/qprocess/testSoftExit/main_unix.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp58
-rw-r--r--tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro (renamed from tests/auto/qprocess/testSoftExit/testSoftExit.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp (renamed from tests/auto/qprocess/testSpaceInName/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro (renamed from tests/auto/qprocess/testSpaceInName/testSpaceInName.pro)0
-rw-r--r--tests/auto/corelib/io/qprocess/tst_qprocess.cpp (renamed from tests/auto/qprocess/tst_qprocess.cpp)0
-rw-r--r--tests/auto/corelib/io/qprocessenvironment/qprocessenvironment.pro (renamed from tests/auto/qprocessenvironment/qprocessenvironment.pro)0
-rw-r--r--tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp (renamed from tests/auto/qprocessenvironment/tst_qprocessenvironment.cpp)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/.gitattributes (renamed from tests/auto/qresourceengine/.gitattributes)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/.gitignore (renamed from tests/auto/qresourceengine/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/parentdir.txt (renamed from tests/auto/qresourceengine/parentdir.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/qresourceengine.pro47
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/aliasdir.txt (renamed from tests/auto/qresourceengine/testqrc/aliasdir/aliasdir.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/compressme.txt (renamed from tests/auto/qresourceengine/testqrc/aliasdir/compressme.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/blahblah.txt (renamed from tests/auto/qresourceengine/testqrc/blahblah.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/currentdir.txt (renamed from tests/auto/qresourceengine/testqrc/currentdir.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/currentdir2.txt (renamed from tests/auto/qresourceengine/testqrc/currentdir2.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/otherdir/otherdir.txt (renamed from tests/auto/qresourceengine/testqrc/otherdir/otherdir.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/search_file.txt (renamed from tests/auto/qresourceengine/testqrc/search_file.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/searchpath1/search_file.txt (renamed from tests/auto/qresourceengine/testqrc/searchpath1/search_file.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/searchpath2/search_file.txt (renamed from tests/auto/qresourceengine/testqrc/searchpath2/search_file.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/subdir/subdir.txt (renamed from tests/auto/qresourceengine/testqrc/subdir/subdir.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test.qrc (renamed from tests/auto/qresourceengine/testqrc/test.qrc)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test/german.txt (renamed from tests/auto/qresourceengine/testqrc/test/german.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test/test/test1.txt (renamed from tests/auto/qresourceengine/testqrc/test/test/test1.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test/test/test2.txt (renamed from tests/auto/qresourceengine/testqrc/test/test/test2.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test/testdir.txt (renamed from tests/auto/qresourceengine/testqrc/test/testdir.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test/testdir2.txt (renamed from tests/auto/qresourceengine/testqrc/test/testdir2.txt)0
-rw-r--r--tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp (renamed from tests/auto/qresourceengine/tst_qresourceengine.cpp)0
-rw-r--r--tests/auto/corelib/io/qsettings/.gitattributes (renamed from tests/auto/qsettings/.gitattributes)0
-rw-r--r--tests/auto/corelib/io/qsettings/.gitignore (renamed from tests/auto/qsettings/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qsettings/qsettings.pro (renamed from tests/auto/qsettings/qsettings.pro)0
-rw-r--r--tests/auto/corelib/io/qsettings/qsettings.qrc (renamed from tests/auto/qsettings/qsettings.qrc)0
-rw-r--r--tests/auto/corelib/io/qsettings/resourcefile.ini (renamed from tests/auto/qsettings/resourcefile.ini)0
-rw-r--r--tests/auto/corelib/io/qsettings/resourcefile2.ini (renamed from tests/auto/qsettings/resourcefile2.ini)0
-rw-r--r--tests/auto/corelib/io/qsettings/resourcefile3.ini (renamed from tests/auto/qsettings/resourcefile3.ini)0
-rw-r--r--tests/auto/corelib/io/qsettings/resourcefile4.ini (renamed from tests/auto/qsettings/resourcefile4.ini)0
-rw-r--r--tests/auto/corelib/io/qsettings/resourcefile5.ini (renamed from tests/auto/qsettings/resourcefile5.ini)0
-rw-r--r--tests/auto/corelib/io/qsettings/tst_qsettings.cpp3179
-rw-r--r--tests/auto/corelib/io/qtemporaryfile/.gitignore (renamed from tests/auto/qtemporaryfile/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qtemporaryfile/qtemporaryfile.pro (renamed from tests/auto/qtemporaryfile/qtemporaryfile.pro)0
-rw-r--r--tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp (renamed from tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp)0
-rw-r--r--tests/auto/corelib/io/qtextstream/.gitattributes (renamed from tests/auto/qtextstream/.gitattributes)0
-rw-r--r--tests/auto/corelib/io/qtextstream/.gitignore (renamed from tests/auto/qtextstream/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qtextstream/qtextstream.pro (renamed from tests/auto/qtextstream/qtextstream.pro)0
-rw-r--r--tests/auto/corelib/io/qtextstream/qtextstream.qrc (renamed from tests/auto/qtextstream/qtextstream.qrc)0
-rw-r--r--tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp (renamed from tests/auto/qtextstream/readAllStdinProcess/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qtextstream/readAllStdinProcess/readAllStdinProcess.pro (renamed from tests/auto/qtextstream/readAllStdinProcess/readAllStdinProcess.pro)0
-rw-r--r--tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp (renamed from tests/auto/qtextstream/readLineStdinProcess/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qtextstream/readLineStdinProcess/readLineStdinProcess.pro (renamed from tests/auto/qtextstream/readLineStdinProcess/readLineStdinProcess.pro)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data)bin6 -> 6 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data)bin116 -> 116 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data)bin6 -> 6 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data)bin116 -> 116 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data)bin32 -> 32 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data)bin34 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data)bin34 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data)bin36 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data)bin34 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data)bin36 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data)bin34 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data)bin36 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource0.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource1.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource10.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource10.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource11.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource11.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource12.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource12.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource2.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource20.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource20.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource21.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource21.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource3.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource4.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource5.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource6.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource7.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource8.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource9.data (renamed from tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource9.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data)bin6 -> 6 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data)bin116 -> 116 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data)bin6 -> 6 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data)bin116 -> 116 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data)bin8 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data)bin118 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data)bin2 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data)bin32 -> 32 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data)bin34 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data)bin34 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data)bin36 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data)bin34 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data)bin36 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data)bin34 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data)bin36 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data)bin28 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data)bin30 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data)bin24 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data)bin14 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data)bin16 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data)bin18 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data)bin20 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource0.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource0.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource1.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource1.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource10.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource10.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource11.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource11.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource12.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource12.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource2.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource2.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource20.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource20.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource21.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource21.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource3.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource3.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource4.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource4.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource5.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource5.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource6.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource6.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource7.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource7.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource8.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource8.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource9.data (renamed from tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource9.data)0
-rw-r--r--tests/auto/corelib/io/qtextstream/rfc3261.txt (renamed from tests/auto/qtextstream/rfc3261.txt)0
-rw-r--r--tests/auto/corelib/io/qtextstream/shift-jis.txt (renamed from tests/auto/qtextstream/shift-jis.txt)0
-rw-r--r--tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp (renamed from tests/auto/qtextstream/stdinProcess/main.cpp)0
-rw-r--r--tests/auto/corelib/io/qtextstream/stdinProcess/stdinProcess.pro (renamed from tests/auto/qtextstream/stdinProcess/stdinProcess.pro)0
-rw-r--r--tests/auto/corelib/io/qtextstream/task113817.txt (renamed from tests/auto/qtextstream/task113817.txt)0
-rw-r--r--tests/auto/corelib/io/qtextstream/test/test.pro (renamed from tests/auto/qtextstream/test/test.pro)0
-rw-r--r--tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp2919
-rw-r--r--tests/auto/corelib/io/qurl/.gitignore (renamed from tests/auto/qurl/.gitignore)0
-rw-r--r--tests/auto/corelib/io/qurl/idna-test.c (renamed from tests/auto/qurl/idna-test.c)0
-rw-r--r--tests/auto/corelib/io/qurl/qurl.pro (renamed from tests/auto/qurl/qurl.pro)0
-rw-r--r--tests/auto/corelib/io/qurl/tst_qurl.cpp (renamed from tests/auto/qurl/tst_qurl.cpp)0
-rw-r--r--tests/auto/corelib/kernel/kernel.pro22
-rw-r--r--tests/auto/corelib/kernel/qabstractitemmodel/.gitignore (renamed from tests/auto/qabstractitemmodel/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qabstractitemmodel/qabstractitemmodel.pro9
-rw-r--r--tests/auto/corelib/kernel/qabstractitemmodel/tst_qabstractitemmodel.cpp1816
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/.gitignore (renamed from tests/auto/qcoreapplication/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro (renamed from tests/auto/qcoreapplication/qcoreapplication.pro)0
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp (renamed from tests/auto/qcoreapplication/tst_qcoreapplication.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qeventloop/.gitignore (renamed from tests/auto/qeventloop/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qeventloop/qeventloop.pro (renamed from tests/auto/qeventloop/qeventloop.pro)0
-rw-r--r--tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp937
-rw-r--r--tests/auto/corelib/kernel/qitemmodel/.gitignore (renamed from tests/auto/qitemmodel/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qitemmodel/README (renamed from tests/auto/qitemmodel/README)0
-rw-r--r--tests/auto/corelib/kernel/qitemmodel/modelstotest.cpp424
-rw-r--r--tests/auto/corelib/kernel/qitemmodel/qitemmodel.pro26
-rw-r--r--tests/auto/corelib/kernel/qitemmodel/tst_qitemmodel.cpp (renamed from tests/auto/qitemmodel/tst_qitemmodel.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qmath/qmath.pro (renamed from tests/auto/qmath/qmath.pro)0
-rw-r--r--tests/auto/corelib/kernel/qmath/tst_qmath.cpp (renamed from tests/auto/qmath/tst_qmath.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/.gitignore (renamed from tests/auto/qmetaobject/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/qmetaobject.pro8
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp (renamed from tests/auto/qmetaobject/tst_qmetaobject.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qmetaproperty/qmetaproperty.pro4
-rw-r--r--tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp115
-rw-r--r--tests/auto/corelib/kernel/qmetatype/.gitignore (renamed from tests/auto/qmetatype/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qmetatype/qmetatype.pro (renamed from tests/auto/qmetatype/qmetatype.pro)0
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp365
-rw-r--r--tests/auto/corelib/kernel/qmimedata/qmimedata.pro (renamed from tests/auto/qmimedata/qmimedata.pro)0
-rw-r--r--tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp (renamed from tests/auto/qmimedata/tst_qmimedata.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qobject/.gitignore (renamed from tests/auto/qobject/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp (renamed from tests/auto/qobject/moc_oldnormalizeobject.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qobject/oldnormalizeobject.h (renamed from tests/auto/qobject/oldnormalizeobject.h)0
-rw-r--r--tests/auto/corelib/kernel/qobject/qobject.pro (renamed from tests/auto/qobject/qobject.pro)0
-rw-r--r--tests/auto/corelib/kernel/qobject/signalbug.cpp (renamed from tests/auto/qobject/signalbug.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qobject/signalbug.h (renamed from tests/auto/qobject/signalbug.h)0
-rw-r--r--tests/auto/corelib/kernel/qobject/signalbug.pro (renamed from tests/auto/qobject/signalbug.pro)0
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp4065
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.pro (renamed from tests/auto/qobject/tst_qobject.pro)0
-rw-r--r--tests/auto/corelib/kernel/qpointer/.gitignore (renamed from tests/auto/qpointer/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qpointer/qpointer.pro5
-rw-r--r--tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp (renamed from tests/auto/qpointer/tst_qpointer.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qsignalmapper/.gitignore (renamed from tests/auto/qsignalmapper/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qsignalmapper/qsignalmapper.pro6
-rw-r--r--tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp (renamed from tests/auto/qsignalmapper/tst_qsignalmapper.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qsocketnotifier/.gitignore (renamed from tests/auto/qsocketnotifier/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qsocketnotifier/qsocketnotifier.pro11
-rw-r--r--tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp367
-rw-r--r--tests/auto/corelib/kernel/qtimer/.gitignore (renamed from tests/auto/qtimer/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qtimer/qtimer.pro (renamed from tests/auto/qtimer/qtimer.pro)0
-rw-r--r--tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp794
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/lackey.pro (renamed from tests/auto/qtipc/lackey/lackey.pro)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/main.cpp (renamed from tests/auto/qtipc/lackey/main.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/consumer.js (renamed from tests/auto/qtipc/lackey/scripts/consumer.js)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js (renamed from tests/auto/qtipc/lackey/scripts/producer.js)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/readonly_segfault.js (renamed from tests/auto/qtipc/lackey/scripts/readonly_segfault.js)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_read.js (renamed from tests/auto/qtipc/lackey/scripts/systemlock_read.js)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_readwrite.js (renamed from tests/auto/qtipc/lackey/scripts/systemlock_readwrite.js)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquire.js (renamed from tests/auto/qtipc/lackey/scripts/systemsemaphore_acquire.js)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquirerelease.js (renamed from tests/auto/qtipc/lackey/scripts/systemsemaphore_acquirerelease.js)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_release.js (renamed from tests/auto/qtipc/lackey/scripts/systemsemaphore_release.js)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/.gitignore (renamed from tests/auto/qtipc/qsharedmemory/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/qsharedmemory.pro (renamed from tests/auto/qtipc/qsharedmemory/qsharedmemory.pro)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/qsystemlock.pro (renamed from tests/auto/qtipc/qsharedmemory/qsystemlock/qsystemlock.pro)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/tst_qsystemlock.cpp (renamed from tests/auto/qtipc/qsharedmemory/qsystemlock/tst_qsystemlock.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.cpp (renamed from tests/auto/qtipc/qsharedmemory/src/qsystemlock.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.h (renamed from tests/auto/qtipc/qsharedmemory/src/qsystemlock.h)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_p.h (renamed from tests/auto/qtipc/qsharedmemory/src/qsystemlock_p.h)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_unix.cpp (renamed from tests/auto/qtipc/qsharedmemory/src/qsystemlock_unix.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_win.cpp (renamed from tests/auto/qtipc/qsharedmemory/src/qsystemlock_win.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/src.pri (renamed from tests/auto/qtipc/qsharedmemory/src/src.pri)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/test/test.pro (renamed from tests/auto/qtipc/qsharedmemory/test/test.pro)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/tst_qsharedmemory.cpp (renamed from tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsystemsemaphore/.gitignore (renamed from tests/auto/qtipc/qsystemsemaphore/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsystemsemaphore/files.qrc (renamed from tests/auto/qtipc/qsystemsemaphore/files.qrc)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsystemsemaphore/qsystemsemaphore.pro (renamed from tests/auto/qtipc/qsystemsemaphore/qsystemsemaphore.pro)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp (renamed from tests/auto/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qtipc/qtipc.pro (renamed from tests/auto/qtipc/qtipc.pro)0
-rw-r--r--tests/auto/corelib/kernel/qtranslator/.gitignore (renamed from tests/auto/qtranslator/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qtranslator/hellotr_la.qm (renamed from tests/auto/qtranslator/hellotr_la.qm)bin230 -> 230 bytes
-rw-r--r--tests/auto/corelib/kernel/qtranslator/hellotr_la.ts (renamed from tests/auto/qtranslator/hellotr_la.ts)0
-rw-r--r--tests/auto/corelib/kernel/qtranslator/msgfmt_from_po.qm (renamed from tests/auto/qtranslator/msgfmt_from_po.qm)bin176988 -> 176988 bytes
-rw-r--r--tests/auto/corelib/kernel/qtranslator/qtranslator.pro12
-rw-r--r--tests/auto/corelib/kernel/qtranslator/qtranslator.qrc (renamed from tests/auto/qtranslator/qtranslator.qrc)0
-rw-r--r--tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp (renamed from tests/auto/qtranslator/tst_qtranslator.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qvariant/.gitignore (renamed from tests/auto/qvariant/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qvariant/qvariant.pro5
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp (renamed from tests/auto/qvariant/tst_qvariant.cpp)0
-rw-r--r--tests/auto/corelib/kernel/qwineventnotifier/.gitignore (renamed from tests/auto/qwineventnotifier/.gitignore)0
-rw-r--r--tests/auto/corelib/kernel/qwineventnotifier/qwineventnotifier.pro4
-rw-r--r--tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp (renamed from tests/auto/qwineventnotifier/tst_qwineventnotifier.cpp)0
-rw-r--r--tests/auto/corelib/plugin/plugin.pro6
-rw-r--r--tests/auto/corelib/plugin/qlibrary/.gitignore (renamed from tests/auto/qlibrary/.gitignore)0
-rw-r--r--tests/auto/corelib/plugin/qlibrary/lib/lib.pro (renamed from tests/auto/qlibrary/lib/lib.pro)0
-rw-r--r--tests/auto/corelib/plugin/qlibrary/lib/mylib.c (renamed from tests/auto/qlibrary/lib/mylib.c)0
-rw-r--r--tests/auto/corelib/plugin/qlibrary/lib2/lib2.pro (renamed from tests/auto/qlibrary/lib2/lib2.pro)0
-rw-r--r--tests/auto/corelib/plugin/qlibrary/lib2/mylib.c (renamed from tests/auto/qlibrary/lib2/mylib.c)0
-rw-r--r--tests/auto/corelib/plugin/qlibrary/library_path/invalid.so (renamed from tests/auto/qlibrary/library_path/invalid.so)0
-rw-r--r--tests/auto/corelib/plugin/qlibrary/qlibrary.pro (renamed from tests/auto/qlibrary/qlibrary.pro)0
-rw-r--r--tests/auto/corelib/plugin/qlibrary/tst/tst.pro (renamed from tests/auto/qlibrary/tst/tst.pro)0
-rw-r--r--tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp (renamed from tests/auto/qlibrary/tst_qlibrary.cpp)0
-rw-r--r--tests/auto/corelib/plugin/qplugin/.gitignore (renamed from tests/auto/qplugin/.gitignore)0
-rw-r--r--tests/auto/corelib/plugin/qplugin/debugplugin/debugplugin.pro (renamed from tests/auto/qplugin/debugplugin/debugplugin.pro)0
-rw-r--r--tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp (renamed from tests/auto/qplugin/debugplugin/main.cpp)0
-rw-r--r--tests/auto/corelib/plugin/qplugin/qplugin.pro (renamed from tests/auto/qplugin/qplugin.pro)0
-rw-r--r--tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp (renamed from tests/auto/qplugin/releaseplugin/main.cpp)0
-rw-r--r--tests/auto/corelib/plugin/qplugin/releaseplugin/releaseplugin.pro (renamed from tests/auto/qplugin/releaseplugin/releaseplugin.pro)0
-rw-r--r--tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp (renamed from tests/auto/qplugin/tst_qplugin.cpp)0
-rw-r--r--tests/auto/corelib/plugin/qplugin/tst_qplugin.pro (renamed from tests/auto/qplugin/tst_qplugin.pro)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/.gitignore (renamed from tests/auto/qpluginloader/.gitignore)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp (renamed from tests/auto/qpluginloader/almostplugin/almostplugin.cpp)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h (renamed from tests/auto/qpluginloader/almostplugin/almostplugin.h)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.pro (renamed from tests/auto/qpluginloader/almostplugin/almostplugin.pro)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/.gitattributes (renamed from tests/auto/qpluginloader/elftest/.gitattributes)0
-rwxr-xr-xtests/auto/corelib/plugin/qpluginloader/elftest/corrupt1.elf64.so (renamed from tests/auto/qpluginloader/elftest/corrupt1.elf64.so)bin239745 -> 239745 bytes
-rwxr-xr-xtests/auto/corelib/plugin/qpluginloader/elftest/corrupt2.elf64.so (renamed from tests/auto/qpluginloader/elftest/corrupt2.elf64.so)bin240097 -> 240097 bytes
-rwxr-xr-xtests/auto/corelib/plugin/qpluginloader/elftest/corrupt3.elf64.so (renamed from tests/auto/qpluginloader/elftest/corrupt3.elf64.so)bin240097 -> 240097 bytes
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/debugobj.so (renamed from tests/auto/qpluginloader/elftest/debugobj.so)bin507232 -> 507232 bytes
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage1.so (renamed from tests/auto/qpluginloader/elftest/garbage1.so)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage2.so (renamed from tests/auto/qpluginloader/elftest/garbage2.so)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage3.so (renamed from tests/auto/qpluginloader/elftest/garbage3.so)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage4.so (renamed from tests/auto/qpluginloader/elftest/garbage4.so)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage5.so (renamed from tests/auto/qpluginloader/elftest/garbage5.so)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/lib/lib.pro (renamed from tests/auto/qpluginloader/lib/lib.pro)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/lib/mylib.c (renamed from tests/auto/qpluginloader/lib/mylib.c)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro (renamed from tests/auto/qpluginloader/qpluginloader.pro)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h (renamed from tests/auto/qpluginloader/theplugin/plugininterface.h)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp (renamed from tests/auto/qpluginloader/theplugin/theplugin.cpp)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h (renamed from tests/auto/qpluginloader/theplugin/theplugin.h)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.pro (renamed from tests/auto/qpluginloader/theplugin/theplugin.pro)0
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/tst/tst.pro34
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp (renamed from tests/auto/qpluginloader/tst_qpluginloader.cpp)0
-rw-r--r--tests/auto/corelib/plugin/quuid/.gitignore (renamed from tests/auto/quuid/.gitignore)0
-rw-r--r--tests/auto/corelib/plugin/quuid/quuid.pro (renamed from tests/auto/quuid/quuid.pro)0
-rw-r--r--tests/auto/corelib/plugin/quuid/test/test.pro (renamed from tests/auto/quuid/test/test.pro)0
-rw-r--r--tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp (renamed from tests/auto/quuid/testProcessUniqueness/main.cpp)0
-rw-r--r--tests/auto/corelib/plugin/quuid/testProcessUniqueness/testProcessUniqueness.pro (renamed from tests/auto/quuid/testProcessUniqueness/testProcessUniqueness.pro)0
-rw-r--r--tests/auto/corelib/plugin/quuid/tst_quuid.cpp (renamed from tests/auto/quuid/tst_quuid.cpp)0
-rw-r--r--tests/auto/corelib/statemachine/qstate/qstate.pro (renamed from tests/auto/qstate/qstate.pro)0
-rw-r--r--tests/auto/corelib/statemachine/qstate/tst_qstate.cpp (renamed from tests/auto/qstate/tst_qstate.cpp)0
-rw-r--r--tests/auto/corelib/statemachine/qstatemachine/qstatemachine.pro5
-rw-r--r--tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp4448
-rw-r--r--tests/auto/corelib/statemachine/statemachine.pro4
-rw-r--r--tests/auto/corelib/thread/qatomicint/.gitignore (renamed from tests/auto/qatomicint/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qatomicint/qatomicint.pro (renamed from tests/auto/qatomicint/qatomicint.pro)0
-rw-r--r--tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp (renamed from tests/auto/qatomicint/tst_qatomicint.cpp)0
-rw-r--r--tests/auto/corelib/thread/qatomicpointer/.gitignore (renamed from tests/auto/qatomicpointer/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qatomicpointer/qatomicpointer.pro (renamed from tests/auto/qatomicpointer/qatomicpointer.pro)0
-rw-r--r--tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp (renamed from tests/auto/qatomicpointer/tst_qatomicpointer.cpp)0
-rw-r--r--tests/auto/corelib/thread/qmutex/.gitignore (renamed from tests/auto/qmutex/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qmutex/qmutex.pro (renamed from tests/auto/qmutex/qmutex.pro)0
-rw-r--r--tests/auto/corelib/thread/qmutex/tst_qmutex.cpp (renamed from tests/auto/qmutex/tst_qmutex.cpp)0
-rw-r--r--tests/auto/corelib/thread/qmutexlocker/.gitignore (renamed from tests/auto/qmutexlocker/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qmutexlocker/qmutexlocker.pro (renamed from tests/auto/qmutexlocker/qmutexlocker.pro)0
-rw-r--r--tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp (renamed from tests/auto/qmutexlocker/tst_qmutexlocker.cpp)0
-rw-r--r--tests/auto/corelib/thread/qreadlocker/.gitignore (renamed from tests/auto/qreadlocker/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qreadlocker/qreadlocker.pro (renamed from tests/auto/qreadlocker/qreadlocker.pro)0
-rw-r--r--tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp (renamed from tests/auto/qreadlocker/tst_qreadlocker.cpp)0
-rw-r--r--tests/auto/corelib/thread/qreadwritelock/.gitignore (renamed from tests/auto/qreadwritelock/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qreadwritelock/qreadwritelock.pro (renamed from tests/auto/qreadwritelock/qreadwritelock.pro)0
-rw-r--r--tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp (renamed from tests/auto/qreadwritelock/tst_qreadwritelock.cpp)0
-rw-r--r--tests/auto/corelib/thread/qsemaphore/.gitignore (renamed from tests/auto/qsemaphore/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qsemaphore/qsemaphore.pro (renamed from tests/auto/qsemaphore/qsemaphore.pro)0
-rw-r--r--tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp (renamed from tests/auto/qsemaphore/tst_qsemaphore.cpp)0
-rw-r--r--tests/auto/corelib/thread/qthread/.gitignore (renamed from tests/auto/qthread/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qthread/qthread.pro (renamed from tests/auto/qthread/qthread.pro)0
-rw-r--r--tests/auto/corelib/thread/qthread/tst_qthread.cpp (renamed from tests/auto/qthread/tst_qthread.cpp)0
-rw-r--r--tests/auto/corelib/thread/qthreadonce/.gitignore (renamed from tests/auto/qthreadonce/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp (renamed from tests/auto/qthreadonce/qthreadonce.cpp)0
-rw-r--r--tests/auto/corelib/thread/qthreadonce/qthreadonce.h (renamed from tests/auto/qthreadonce/qthreadonce.h)0
-rw-r--r--tests/auto/corelib/thread/qthreadonce/qthreadonce.pro (renamed from tests/auto/qthreadonce/qthreadonce.pro)0
-rw-r--r--tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp (renamed from tests/auto/qthreadonce/tst_qthreadonce.cpp)0
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/.gitignore (renamed from tests/auto/qthreadstorage/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp (renamed from tests/auto/qthreadstorage/crashOnExit.cpp)0
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/crashOnExit.pro (renamed from tests/auto/qthreadstorage/crashOnExit.pro)0
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/qthreadstorage.pro (renamed from tests/auto/qthreadstorage/qthreadstorage.pro)0
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp (renamed from tests/auto/qthreadstorage/tst_qthreadstorage.cpp)0
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.pro (renamed from tests/auto/qthreadstorage/tst_qthreadstorage.pro)0
-rw-r--r--tests/auto/corelib/thread/qwaitcondition/.gitignore (renamed from tests/auto/qwaitcondition/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qwaitcondition/qwaitcondition.pro (renamed from tests/auto/qwaitcondition/qwaitcondition.pro)0
-rw-r--r--tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp (renamed from tests/auto/qwaitcondition/tst_qwaitcondition.cpp)0
-rw-r--r--tests/auto/corelib/thread/qwritelocker/.gitignore (renamed from tests/auto/qwritelocker/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qwritelocker/qwritelocker.pro (renamed from tests/auto/qwritelocker/qwritelocker.pro)0
-rw-r--r--tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp (renamed from tests/auto/qwritelocker/tst_qwritelocker.cpp)0
-rw-r--r--tests/auto/corelib/thread/thread.pro14
-rw-r--r--tests/auto/corelib/tools/qalgorithms/.gitignore (renamed from tests/auto/qalgorithms/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qalgorithms/qalgorithms.pro (renamed from tests/auto/qalgorithms/qalgorithms.pro)0
-rw-r--r--tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp (renamed from tests/auto/qalgorithms/tst_qalgorithms.cpp)0
-rw-r--r--tests/auto/corelib/tools/qbitarray/.gitignore (renamed from tests/auto/qbitarray/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qbitarray/qbitarray.pro (renamed from tests/auto/qbitarray/qbitarray.pro)0
-rw-r--r--tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp (renamed from tests/auto/qbitarray/tst_qbitarray.cpp)0
-rw-r--r--tests/auto/corelib/tools/qbytearray/.gitattributes (renamed from tests/auto/qbytearray/.gitattributes)0
-rw-r--r--tests/auto/corelib/tools/qbytearray/.gitignore (renamed from tests/auto/qbytearray/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qbytearray/qbytearray.pro (renamed from tests/auto/qbytearray/qbytearray.pro)0
-rw-r--r--tests/auto/corelib/tools/qbytearray/rfc3252.txt (renamed from tests/auto/qbytearray/rfc3252.txt)0
-rw-r--r--tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp1569
-rw-r--r--tests/auto/corelib/tools/qbytearraymatcher/qbytearraymatcher.pro (renamed from tests/auto/qbytearraymatcher/qbytearraymatcher.pro)0
-rw-r--r--tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp129
-rw-r--r--tests/auto/corelib/tools/qcache/.gitignore (renamed from tests/auto/qcache/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qcache/qcache.pro (renamed from tests/auto/qcache/qcache.pro)0
-rw-r--r--tests/auto/corelib/tools/qcache/tst_qcache.cpp (renamed from tests/auto/qcache/tst_qcache.cpp)0
-rw-r--r--tests/auto/corelib/tools/qchar/.gitignore (renamed from tests/auto/qchar/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qchar/NormalizationTest.txt (renamed from tests/auto/qchar/NormalizationTest.txt)0
-rw-r--r--tests/auto/corelib/tools/qchar/qchar.pro (renamed from tests/auto/qchar/qchar.pro)0
-rw-r--r--tests/auto/corelib/tools/qchar/tst_qchar.cpp (renamed from tests/auto/qchar/tst_qchar.cpp)0
-rw-r--r--tests/auto/corelib/tools/qcontiguouscache/qcontiguouscache.pro (renamed from tests/auto/qcontiguouscache/qcontiguouscache.pro)0
-rw-r--r--tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp (renamed from tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp)0
-rw-r--r--tests/auto/corelib/tools/qcryptographichash/.gitignore (renamed from tests/auto/qcryptographichash/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qcryptographichash/qcryptographichash.pro (renamed from tests/auto/qcryptographichash/qcryptographichash.pro)0
-rw-r--r--tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp (renamed from tests/auto/qcryptographichash/tst_qcryptographichash.cpp)0
-rw-r--r--tests/auto/corelib/tools/qdate/.gitignore (renamed from tests/auto/qdate/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qdate/qdate.pro (renamed from tests/auto/qdate/qdate.pro)0
-rw-r--r--tests/auto/corelib/tools/qdate/tst_qdate.cpp (renamed from tests/auto/qdate/tst_qdate.cpp)0
-rw-r--r--tests/auto/corelib/tools/qdatetime/.gitignore (renamed from tests/auto/qdatetime/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qdatetime/qdatetime.pro (renamed from tests/auto/qdatetime/qdatetime.pro)0
-rw-r--r--tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp (renamed from tests/auto/qdatetime/tst_qdatetime.cpp)0
-rw-r--r--tests/auto/corelib/tools/qeasingcurve/qeasingcurve.pro (renamed from tests/auto/qeasingcurve/qeasingcurve.pro)0
-rw-r--r--tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp (renamed from tests/auto/qeasingcurve/tst_qeasingcurve.cpp)0
-rw-r--r--tests/auto/corelib/tools/qelapsedtimer/qelapsedtimer.pro (renamed from tests/auto/qelapsedtimer/qelapsedtimer.pro)0
-rw-r--r--tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp (renamed from tests/auto/qelapsedtimer/tst_qelapsedtimer.cpp)0
-rw-r--r--tests/auto/corelib/tools/qexplicitlyshareddatapointer/.gitignore (renamed from tests/auto/qexplicitlyshareddatapointer/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro (renamed from tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro)0
-rw-r--r--tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp (renamed from tests/auto/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp)0
-rw-r--r--tests/auto/corelib/tools/qfreelist/qfreelist.pro5
-rw-r--r--tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp (renamed from tests/auto/qfreelist/tst_qfreelist.cpp)0
-rw-r--r--tests/auto/corelib/tools/qhash/.gitignore (renamed from tests/auto/qhash/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qhash/qhash.pro (renamed from tests/auto/qhash/qhash.pro)0
-rw-r--r--tests/auto/corelib/tools/qhash/tst_qhash.cpp (renamed from tests/auto/qhash/tst_qhash.cpp)0
-rw-r--r--tests/auto/corelib/tools/qline/.gitignore (renamed from tests/auto/qline/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qline/qline.pro (renamed from tests/auto/qline/qline.pro)0
-rw-r--r--tests/auto/corelib/tools/qline/tst_qline.cpp (renamed from tests/auto/qline/tst_qline.cpp)0
-rw-r--r--tests/auto/corelib/tools/qlist/.gitignore (renamed from tests/auto/qlist/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qlist/qlist.pro (renamed from tests/auto/qlist/qlist.pro)0
-rw-r--r--tests/auto/corelib/tools/qlist/tst_qlist.cpp (renamed from tests/auto/qlist/tst_qlist.cpp)0
-rw-r--r--tests/auto/corelib/tools/qlocale/.gitignore (renamed from tests/auto/qlocale/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qlocale/qlocale.pro (renamed from tests/auto/qlocale/qlocale.pro)0
-rw-r--r--tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp (renamed from tests/auto/qlocale/syslocaleapp/syslocaleapp.cpp)0
-rw-r--r--tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.pro (renamed from tests/auto/qlocale/syslocaleapp/syslocaleapp.pro)0
-rw-r--r--tests/auto/corelib/tools/qlocale/test/test.pro (renamed from tests/auto/qlocale/test/test.pro)0
-rw-r--r--tests/auto/corelib/tools/qlocale/tst_qlocale.cpp (renamed from tests/auto/qlocale/tst_qlocale.cpp)0
-rw-r--r--tests/auto/corelib/tools/qmap/.gitignore (renamed from tests/auto/qmap/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qmap/qmap.pro (renamed from tests/auto/qmap/qmap.pro)0
-rw-r--r--tests/auto/corelib/tools/qmap/tst_qmap.cpp (renamed from tests/auto/qmap/tst_qmap.cpp)0
-rw-r--r--tests/auto/corelib/tools/qmargins/qmargins.pro (renamed from tests/auto/qmargins/qmargins.pro)0
-rw-r--r--tests/auto/corelib/tools/qmargins/tst_qmargins.cpp (renamed from tests/auto/qmargins/tst_qmargins.cpp)0
-rw-r--r--tests/auto/corelib/tools/qpoint/.gitignore (renamed from tests/auto/qpoint/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qpoint/qpoint.pro (renamed from tests/auto/qpoint/qpoint.pro)0
-rw-r--r--tests/auto/corelib/tools/qpoint/tst_qpoint.cpp (renamed from tests/auto/qpoint/tst_qpoint.cpp)0
-rw-r--r--tests/auto/corelib/tools/qqueue/.gitignore (renamed from tests/auto/qqueue/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qqueue/qqueue.pro (renamed from tests/auto/qqueue/qqueue.pro)0
-rw-r--r--tests/auto/corelib/tools/qqueue/tst_qqueue.cpp (renamed from tests/auto/qqueue/tst_qqueue.cpp)0
-rw-r--r--tests/auto/corelib/tools/qrect/.gitignore (renamed from tests/auto/qrect/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qrect/qrect.pro (renamed from tests/auto/qrect/qrect.pro)0
-rw-r--r--tests/auto/corelib/tools/qrect/tst_qrect.cpp (renamed from tests/auto/qrect/tst_qrect.cpp)0
-rw-r--r--tests/auto/corelib/tools/qregexp/.gitignore (renamed from tests/auto/qregexp/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qregexp/qregexp.pro (renamed from tests/auto/qregexp/qregexp.pro)0
-rw-r--r--tests/auto/corelib/tools/qregexp/tst_qregexp.cpp (renamed from tests/auto/qregexp/tst_qregexp.cpp)0
-rw-r--r--tests/auto/corelib/tools/qringbuffer/qringbuffer.pro (renamed from tests/auto/qringbuffer/qringbuffer.pro)0
-rw-r--r--tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp (renamed from tests/auto/qringbuffer/tst_qringbuffer.cpp)0
-rw-r--r--tests/auto/corelib/tools/qscopedpointer/.gitignore (renamed from tests/auto/qscopedpointer/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qscopedpointer/qscopedpointer.pro (renamed from tests/auto/qscopedpointer/qscopedpointer.pro)0
-rw-r--r--tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp (renamed from tests/auto/qscopedpointer/tst_qscopedpointer.cpp)0
-rw-r--r--tests/auto/corelib/tools/qscopedvaluerollback/qscopedvaluerollback.pro (renamed from tests/auto/qscopedvaluerollback/qscopedvaluerollback.pro)0
-rw-r--r--tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp (renamed from tests/auto/qscopedvaluerollback/tst_qscopedvaluerollback.cpp)0
-rw-r--r--tests/auto/corelib/tools/qset/.gitignore (renamed from tests/auto/qset/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qset/qset.pro (renamed from tests/auto/qset/qset.pro)0
-rw-r--r--tests/auto/corelib/tools/qset/tst_qset.cpp (renamed from tests/auto/qset/tst_qset.cpp)0
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/.gitignore (renamed from tests/auto/qsharedpointer/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/externaltests.cpp (renamed from tests/auto/qsharedpointer/externaltests.cpp)0
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/externaltests.h (renamed from tests/auto/qsharedpointer/externaltests.h)0
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/externaltests.pri (renamed from tests/auto/qsharedpointer/externaltests.pri)0
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp (renamed from tests/auto/qsharedpointer/forwarddeclaration.cpp)0
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp (renamed from tests/auto/qsharedpointer/forwarddeclared.cpp)0
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h (renamed from tests/auto/qsharedpointer/forwarddeclared.h)0
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/qsharedpointer.pro17
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp (renamed from tests/auto/qsharedpointer/tst_qsharedpointer.cpp)0
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/wrapper.cpp (renamed from tests/auto/qsharedpointer/wrapper.cpp)0
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/wrapper.h (renamed from tests/auto/qsharedpointer/wrapper.h)0
-rw-r--r--tests/auto/corelib/tools/qsize/.gitignore (renamed from tests/auto/qsize/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qsize/qsize.pro (renamed from tests/auto/qsize/qsize.pro)0
-rw-r--r--tests/auto/corelib/tools/qsize/tst_qsize.cpp (renamed from tests/auto/qsize/tst_qsize.cpp)0
-rw-r--r--tests/auto/corelib/tools/qsizef/.gitignore (renamed from tests/auto/qsizef/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qsizef/qsizef.pro (renamed from tests/auto/qsizef/qsizef.pro)0
-rw-r--r--tests/auto/corelib/tools/qsizef/tst_qsizef.cpp (renamed from tests/auto/qsizef/tst_qsizef.cpp)0
-rw-r--r--tests/auto/corelib/tools/qstl/.gitignore (renamed from tests/auto/qstl/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qstl/qstl.pro (renamed from tests/auto/qstl/qstl.pro)0
-rw-r--r--tests/auto/corelib/tools/qstl/tst_qstl.cpp (renamed from tests/auto/qstl/tst_qstl.cpp)0
-rw-r--r--tests/auto/corelib/tools/qstring/.gitignore (renamed from tests/auto/qstring/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qstring/double_data.h (renamed from tests/auto/qstring/double_data.h)0
-rw-r--r--tests/auto/corelib/tools/qstring/qstring.pro (renamed from tests/auto/qstring/qstring.pro)0
-rw-r--r--tests/auto/corelib/tools/qstring/tst_qstring.cpp5143
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder.pro6
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/qstringbuilder1.pro (renamed from tests/auto/qstringbuilder1/qstringbuilder1.pro)0
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp (renamed from tests/auto/qstringbuilder1/stringbuilder.cpp)0
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp (renamed from tests/auto/qstringbuilder1/tst_qstringbuilder1.cpp)0
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/qstringbuilder2.pro (renamed from tests/auto/qstringbuilder2/qstringbuilder2.pro)0
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp (renamed from tests/auto/qstringbuilder2/tst_qstringbuilder2.cpp)0
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/qstringbuilder3.pro (renamed from tests/auto/qstringbuilder3/qstringbuilder3.pro)0
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp (renamed from tests/auto/qstringbuilder3/tst_qstringbuilder3.cpp)0
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/qstringbuilder4.pro (renamed from tests/auto/qstringbuilder4/qstringbuilder4.pro)0
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp (renamed from tests/auto/qstringbuilder4/tst_qstringbuilder4.cpp)0
-rw-r--r--tests/auto/corelib/tools/qstringlist/.gitignore (renamed from tests/auto/qstringlist/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qstringlist/qstringlist.pro (renamed from tests/auto/qstringlist/qstringlist.pro)0
-rw-r--r--tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp (renamed from tests/auto/qstringlist/tst_qstringlist.cpp)0
-rw-r--r--tests/auto/corelib/tools/qstringmatcher/.gitignore (renamed from tests/auto/qstringmatcher/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qstringmatcher/qstringmatcher.pro (renamed from tests/auto/qstringmatcher/qstringmatcher.pro)0
-rw-r--r--tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp (renamed from tests/auto/qstringmatcher/tst_qstringmatcher.cpp)0
-rw-r--r--tests/auto/corelib/tools/qstringref/qstringref.pro (renamed from tests/auto/qstringref/qstringref.pro)0
-rw-r--r--tests/auto/corelib/tools/qstringref/tst_qstringref.cpp (renamed from tests/auto/qstringref/tst_qstringref.cpp)0
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/.gitignore (renamed from tests/auto/qtextboundaryfinder/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/data/GraphemeBreakTest.txt (renamed from tests/auto/qtextboundaryfinder/data/GraphemeBreakTest.txt)0
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/data/SentenceBreakTest.txt (renamed from tests/auto/qtextboundaryfinder/data/SentenceBreakTest.txt)0
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/data/WordBreakTest.txt (renamed from tests/auto/qtextboundaryfinder/data/WordBreakTest.txt)0
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/qtextboundaryfinder.pro (renamed from tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro)0
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp (renamed from tests/auto/qtextboundaryfinder/tst_qtextboundaryfinder.cpp)0
-rw-r--r--tests/auto/corelib/tools/qtime/.gitignore (renamed from tests/auto/qtime/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qtime/qtime.pro (renamed from tests/auto/qtime/qtime.pro)0
-rw-r--r--tests/auto/corelib/tools/qtime/tst_qtime.cpp (renamed from tests/auto/qtime/tst_qtime.cpp)0
-rw-r--r--tests/auto/corelib/tools/qtimeline/.gitignore (renamed from tests/auto/qtimeline/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qtimeline/qtimeline.pro (renamed from tests/auto/qtimeline/qtimeline.pro)0
-rw-r--r--tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp (renamed from tests/auto/qtimeline/tst_qtimeline.cpp)0
-rw-r--r--tests/auto/corelib/tools/qvarlengtharray/.gitignore (renamed from tests/auto/qvarlengtharray/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qvarlengtharray/qvarlengtharray.pro (renamed from tests/auto/qvarlengtharray/qvarlengtharray.pro)0
-rw-r--r--tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp (renamed from tests/auto/qvarlengtharray/tst_qvarlengtharray.cpp)0
-rw-r--r--tests/auto/corelib/tools/qvector/.gitignore (renamed from tests/auto/qvector/.gitignore)0
-rw-r--r--tests/auto/corelib/tools/qvector/qvector.pro (renamed from tests/auto/qvector/qvector.pro)0
-rw-r--r--tests/auto/corelib/tools/qvector/tst_qvector.cpp (renamed from tests/auto/qvector/tst_qvector.cpp)0
-rw-r--r--tests/auto/corelib/tools/tools.pro44
-rw-r--r--tests/auto/corelib/xml/qxmlstream/.gitattributes (renamed from tests/auto/qxmlstream/.gitattributes)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/.gitignore (renamed from tests/auto/qxmlstream/.gitignore)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite-LICENSE.txt (renamed from tests/auto/qxmlstream/XML-Test-Suite-LICENSE.txt)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/matrix.html (renamed from tests/auto/qxmlstream/XML-Test-Suite/matrix.html)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/changes.html (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/changes.html)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15a.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15a.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15b.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15b.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15c.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15c.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15d.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15d.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15e.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15e.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15f.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15f.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15g.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15g.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15h.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15h.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15i.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15i.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15j.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15j.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15k.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15k.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15l.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15l.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18-ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18-ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E22.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E22.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E24.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E27.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E27.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E29.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E29.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2a.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2a.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2b.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2b.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E34.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E34.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E41.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E41.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E48.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E48.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E50.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E50.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E55.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E55.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E57.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E57.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E61.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E61.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9a.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9a.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9b.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9b.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/errata2e.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/errata2e.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E19.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E24.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-pe (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-pe)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-extpe (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-extpe)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/testcases.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/testcases.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/xmlconf.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/xmlconf.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05a.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05a.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05b.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05b.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06a.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06a.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06b.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06b.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06c.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06c.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06d.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06d.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06e.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06e.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06f.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06f.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06g.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06g.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06h.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06h.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06i.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06i.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/errata3e.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/errata3e.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/testcases.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/testcases.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/xmlconf.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/xmlconf.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/001.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/003.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/004.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/004.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/005.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/007.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/007.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/008.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/008.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/009.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/009.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/010.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/010.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/011.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/011.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/012.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/012.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/013.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/013.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/014.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/014.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/015.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/015.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/016.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/016.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/017.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/017.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/018.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/018.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/019.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/019.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/020.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/020.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/021.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/021.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/022.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/022.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/023.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/023.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/024.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/024.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/025.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/025.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/026.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/026.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/027.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/027.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/028.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/028.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/029.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/029.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/030.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/030.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/031.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/031.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/032.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/032.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/033.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/033.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/034.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/034.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/035.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/035.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/036.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/036.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/037.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/037.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/038.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/038.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/039.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/039.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/040.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/040.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/041.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/041.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/042.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/042.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/043.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/043.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/044.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/044.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/045.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/045.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/046.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/046.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/rmt-ns10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/rmt-ns10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/001.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/003.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/004.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/004.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/005.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/rmt-ns11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/rmt-ns11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries.Log (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries.Log)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13a.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13a.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13b.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13b.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13c.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13c.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/errata1e.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/errata1e.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/testcases.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/testcases.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/xmlconf.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/xmlconf.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/testcases.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/testcases.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/xmlconf.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/xmlconf.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.pe (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.pe)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_1.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_1.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_2.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_2.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_1.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_1.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_2.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_2.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/007.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/007.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/008.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/008.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/010.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/010.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/011.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/011.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/012.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/012.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/013.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/013.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/014.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/014.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/015.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/015.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/016.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/016.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/017.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/017.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/018.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/018.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/019.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/019.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/020.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/020.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/021.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/021.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/022.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/022.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/023.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/023.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/024.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/024.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/025.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/025.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/026.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/026.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/027.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/027.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/028.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/028.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/029.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/029.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/030.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/030.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/031.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/031.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/032.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/032.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/033.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/033.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/034.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/034.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/035.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/035.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/036.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/036.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/037.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/037.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/038.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/038.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/039.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/039.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/040.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/040.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/041.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/041.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/042.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/042.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/043.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/043.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/044.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/044.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/045.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/045.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/046.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/046.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/047.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/047.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/048.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/048.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/049.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/049.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/050.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/050.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/051.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/051.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/052.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/052.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/053.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/053.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/054.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/054.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/055.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/055.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/056.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/056.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/057.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/057.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/007.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/007.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/010.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/010.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/012.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/012.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/015.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/015.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/017.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/017.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/018.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/018.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/022.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/022.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/023.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/023.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/024.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/024.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/025.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/025.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/026.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/026.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/027.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/027.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/028.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/028.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/029.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/029.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/030.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/030.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/031.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/031.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/032.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/032.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/033.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/033.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/034.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/034.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/035.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/035.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/036.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/036.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/037.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/037.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/040.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/040.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/043.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/043.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/044.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/044.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/045.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/045.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/046.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/046.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/047.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/047.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/048.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/048.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/049.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/049.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/050.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/050.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/051.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/051.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/052.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/052.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/053.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/053.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/054.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/054.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/testcases.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/testcases.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xml11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xml11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xmlconf.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xmlconf.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/a_oasis-logo.gif (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/a_oasis-logo.gif)bin9383 -> 9383 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/committee.css (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/committee.css)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/top3.jpe (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/top3.jpe)bin22775 -> 22775 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/finalCatalog.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/finalCatalog.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_invalid.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_invalid.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_not-wf.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_not-wf.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_readme.txt (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_readme.txt)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_valid.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_valid.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/ibm28i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/ibm28i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/ibm28i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/ibm28i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/ibm45i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/ibm45i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/ibm45i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/ibm45i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/ibm50i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/ibm50i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/ibm59i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/ibm59i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/ibm59i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/ibm59i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/ibm76i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/ibm76i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/ibm76i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/ibm76i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n01.xml)bin91 -> 91 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n19.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n21.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n21.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n22.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n22.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n23.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n23.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n24.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n25.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n25.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n26.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n26.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n27.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n27.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n28.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n28.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n29.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n29.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n30.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n30.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n31.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n31.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n32.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n32.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n33.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n33.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/ibm03n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/ibm03n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/student.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/student.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/ibm20n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/ibm20n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/ibm26n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/ibm26n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/ibm27n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/ibm27n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/cat.txt (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/cat.txt)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/ibm57n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/ibm57n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm70n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm70n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/ibm74n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/ibm74n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/empty.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/empty.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n100.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n100.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n101.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n101.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n102.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n102.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n103.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n103.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n104.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n104.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n105.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n105.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n106.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n106.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n107.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n107.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n108.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n108.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n109.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n109.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n110.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n110.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n111.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n111.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n112.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n112.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n113.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n113.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n114.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n114.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n115.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n115.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n116.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n116.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n117.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n117.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n118.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n118.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n119.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n119.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n120.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n120.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n121.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n121.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n122.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n122.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n123.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n123.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n124.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n124.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n125.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n125.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n126.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n126.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n127.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n127.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n128.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n128.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n129.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n129.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n130.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n130.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n131.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n131.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n132.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n132.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n133.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n133.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n134.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n134.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n135.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n135.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n136.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n136.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n137.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n137.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n138.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n138.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n139.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n139.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n140.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n140.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n141.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n141.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n142.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n142.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n143.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n143.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n144.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n144.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n145.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n145.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n146.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n146.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n147.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n147.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n148.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n148.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n149.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n149.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n150.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n150.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n151.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n151.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n152.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n152.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n153.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n153.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n154.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n154.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n155.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n155.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n156.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n156.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n157.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n157.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n158.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n158.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n159.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n159.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n160.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n160.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n161.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n161.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n162.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n162.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n163.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n163.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n164.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n164.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n165.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n165.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n166.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n166.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n167.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n167.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n168.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n168.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n169.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n169.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n170.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n170.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n171.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n171.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n172.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n172.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n173.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n173.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n174.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n174.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n175.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n175.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n176.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n176.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n177.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n177.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n178.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n178.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n179.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n179.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n180.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n180.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n181.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n181.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n182.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n182.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n183.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n183.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n184.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n184.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n185.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n185.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n186.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n186.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n187.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n187.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n188.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n188.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n189.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n189.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n19.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n190.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n190.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n191.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n191.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n192.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n192.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n193.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n193.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n194.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n194.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n195.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n195.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n196.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n196.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n197.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n197.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n198.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n198.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n21.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n21.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n22.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n22.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n23.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n23.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n24.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n25.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n25.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n26.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n26.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n27.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n27.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n28.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n28.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n29.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n29.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n30.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n30.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n31.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n31.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n32.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n32.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n33.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n33.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n34.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n34.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n35.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n35.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n36.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n36.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n37.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n37.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n38.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n38.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n39.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n39.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n40.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n40.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n41.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n41.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n42.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n42.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n43.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n43.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n44.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n44.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n45.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n45.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n46.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n46.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n47.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n47.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n48.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n48.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n49.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n49.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n50.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n50.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n51.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n51.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n52.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n52.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n53.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n53.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n54.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n54.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n55.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n55.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n56.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n56.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n57.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n57.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n58.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n58.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n59.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n59.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n60.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n60.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n61.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n61.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n62.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n62.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n63.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n63.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n64.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n64.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n65.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n65.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n66.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n66.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n67.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n67.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n68.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n68.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n69.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n69.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n70.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n70.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n71.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n71.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n72.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n72.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n73.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n73.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n74.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n74.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n75.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n75.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n76.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n76.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n77.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n77.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n78.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n78.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n79.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n79.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n80.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n80.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n81.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n81.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n82.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n82.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n83.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n83.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n84.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n84.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n85.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n85.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n86.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n86.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n87.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n87.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n88.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n88.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n89.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n89.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n90.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n90.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n91.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n91.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n92.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n92.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n93.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n93.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n94.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n94.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n95.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n95.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n96.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n96.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n97.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n97.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n98.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n98.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n99.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n99.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n19.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n21.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n21.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n22.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n22.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n23.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n23.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n24.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n25.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n25.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n26.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n26.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n27.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n27.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n28.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n28.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n29.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n29.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n30.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n30.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n31.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n31.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n32.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n32.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n33.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n33.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n34.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n34.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n35.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n35.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n36.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n36.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n37.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n37.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n38.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n38.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n39.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n39.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n40.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n40.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n41.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n41.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n42.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n42.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n43.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n43.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n44.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n44.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n45.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n45.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n46.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n46.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n47.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n47.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n48.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n48.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n49.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n49.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n50.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n50.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n51.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n51.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n52.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n52.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n53.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n53.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n54.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n54.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n55.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n55.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n56.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n56.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n57.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n57.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n58.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n58.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n59.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n59.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n60.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n60.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n61.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n61.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n62.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n62.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n63.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n63.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n64.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n64.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n66.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n66.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n67.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n67.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n68.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n68.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n69.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n69.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n70.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n70.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n71.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n71.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n72.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n72.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n73.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n73.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n74.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n74.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n75.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n75.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n76.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n76.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n77.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n77.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n78.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n78.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n79.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n79.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n80.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n80.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n81.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n81.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n82.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n82.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n83.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n83.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n84.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n84.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n85.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n85.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/432gewf.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/432gewf.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/ltinentval.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/ltinentval.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/simpleltinentval.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/simpleltinentval.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/ibm01v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/ibm01v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/ibm01v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/ibm01v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/ibm02v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/ibm02v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/ibm03v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/ibm03v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/ibm03v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/ibm03v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/student.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/student.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/student.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/student.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/student.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/student.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/ibm13v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/ibm13v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/ibm13v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/ibm13v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/student.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/student.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/ibm17v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/ibm17v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/ibm17v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/ibm17v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/ibm18v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/ibm18v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/ibm18v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/ibm18v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/ibm19v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/ibm19v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/ibm19v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/ibm19v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/ibm21v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/ibm21v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/ibm21v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/ibm21v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/ibm26v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/ibm26v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/ibm26v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/ibm26v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.txt (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.txt)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.txt (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.txt)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/ibm31v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/ibm31v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/ibm33v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/ibm33v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/ibm33v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/ibm33v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/ibm34v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/ibm34v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/ibm34v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/ibm34v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/ibm35v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/ibm35v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/ibm35v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/ibm35v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/ibm36v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/ibm36v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/ibm36v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/ibm36v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/ibm37v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/ibm37v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/ibm37v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/ibm37v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/ibm38v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/ibm38v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/ibm38v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/ibm38v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/ibm39v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/ibm39v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/ibm39v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/ibm39v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/ibm40v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/ibm40v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/ibm40v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/ibm40v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/ibm41v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/ibm41v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/ibm41v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/ibm41v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/ibm42v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/ibm42v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/ibm42v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/ibm42v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/ibm43v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/ibm43v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/ibm43v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/ibm43v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/ibm44v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/ibm44v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/ibm44v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/ibm44v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/ibm45v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/ibm45v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/ibm45v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/ibm45v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/ibm47v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/ibm47v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/ibm47v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/ibm47v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/ibm49v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/ibm49v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/ibm50v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/ibm50v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/ibm52v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/ibm52v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/ibm52v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/ibm52v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibmlogo.gif (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibmlogo.gif)bin1082 -> 1082 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/xmltech.gif (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/xmltech.gif)bin4070 -> 4070 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/ibm55v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/ibm55v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/ibm55v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/ibm55v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/ibm57v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/ibm57v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/ibm57v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/ibm57v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/ibm67v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/ibm67v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/ibm67v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/ibm67v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/ibm70v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/ibm70v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v02.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v02.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v03.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v03.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/ibm78v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/ibm78v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/ibm79v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/ibm79v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/ibm82v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/ibm82v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/ibm82v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/ibm82v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/ibm85v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/ibm85v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/ibm85v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/ibm85v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/ibm86v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/ibm86v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/ibm86v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/ibm86v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/ibm87v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/ibm87v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/ibm87v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/ibm87v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/ibm88v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/ibm88v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/ibm88v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/ibm88v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/ibm89v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/ibm89v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/ibm89v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/ibm89v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_invalid.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_invalid.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_not-wf.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_not-wf.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_valid.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_valid.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n09.xml)bin121 -> 121 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n19.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n21.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n21.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n22.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n22.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n23.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n23.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n24.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n25.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n25.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n26.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n26.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n27.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n27.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n28.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n28.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n29.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n29.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n30.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n30.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n31.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n31.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n32.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n32.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n33.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n33.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n34.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n34.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n35.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n35.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n36.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n36.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n37.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n37.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n38.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n38.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n39.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n39.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n40.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n40.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n41.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n41.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n42.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n42.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n43.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n43.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n44.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n44.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n45.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n45.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n46.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n46.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n47.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n47.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n48.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n48.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n49.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n49.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n50.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n50.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n51.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n51.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n52.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n52.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n53.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n53.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n54.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n54.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n55.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n55.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n56.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n56.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n57.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n57.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n58.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n58.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n59.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n59.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n60.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n60.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n61.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n61.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n62.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n62.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n63.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n63.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n67.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n67.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n68.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n68.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n69.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n69.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n70.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n70.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n71.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n71.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n19.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n21.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n21.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n22.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n22.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n23.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n23.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n24.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n25.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n25.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n26.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n26.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n27.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n27.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n28.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n28.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an19.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an21.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an21.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an22.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an22.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an23.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an23.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an24.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an25.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an25.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an26.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an26.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an27.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an27.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an28.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an28.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/ibm04v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/ibm04v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/ibm04av01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/ibm04av01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/ibm07v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/ibm07v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/japanese.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/japanese.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-euc-jp.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-euc-jp.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-iso-2022-jp.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-iso-2022-jp.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-little-endian.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-little-endian.xml)bin313076 -> 313076 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-shift_jis.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-shift_jis.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-16.xml)bin313074 -> 313074 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-8.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-8.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/spec.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/spec.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-little-endian.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-little-endian.xml)bin3186 -> 3186 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.dtd)bin5222 -> 5222 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.xml)bin3186 -> 3186 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/e2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/e2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/oasis.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/oasis.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail1.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail10.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail11.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail12.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail13.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail14.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail15.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail16.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail17.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail18.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail19.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail2.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail20.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail21.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail21.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail22.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail22.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail23.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail23.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail24.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail25.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail25.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail26.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail26.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail27.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail27.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail28.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail28.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail29.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail29.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail3.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail30.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail30.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail31.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail31.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail4.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail5.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail6.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail6.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail7.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail7.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail8.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail8.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail9.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail9.xml)bin26 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail1.xml)bin7 -> 7 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail17.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail17.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail18.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail18.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail19.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail19.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail21.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail21.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail22.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail22.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail23.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail23.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail24.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail25.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail25.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail26.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail26.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail27.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail27.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail28.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail28.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail29.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail29.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail7.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail7.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail8.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail8.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail9.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail9.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p07pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p07pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail6.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail6.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail7.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail7.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass6.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass6.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail6.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail6.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail6.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail6.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail7.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail7.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail6.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail6.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail7.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail7.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail8.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail8.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail6.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail6.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail5.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail6.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail6.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail2.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail3.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail4.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76pass1.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76pass1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/readme.html (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/readme.html)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/cxml.html (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/cxml.html)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr15.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr16.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/empty.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/empty.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional14.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional20.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional21.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional21.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional22.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional22.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional23.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional23.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional24.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional24.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional25.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional25.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required00.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required00.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/root.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/root.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16b.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16b.xml)bin98 -> 98 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16l.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16l.xml)bin98 -> 98 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd00.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd00.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element00.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element00.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/not-sa03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/not-sa03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pi.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pi.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml07.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml07.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml08.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml08.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml09.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml09.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml10.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml11.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml12.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml13.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/uri01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/uri01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-error.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-error.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-invalid.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-invalid.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-not-wf.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-not-wf.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-valid.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-valid.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd00.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd00.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtdtest.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtdtest.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/element.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/element.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/null.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/null.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/optional.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/optional.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd00.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd00.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/element.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/element.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/notation01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/notation01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/optional.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/optional.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe00.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe00.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/required00.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/required00.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sgml01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sgml01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/required00.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/required00.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sgml01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sgml01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang01.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang01.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang02.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang02.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang03.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang03.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang04.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang04.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang05.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang05.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang06.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang06.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/testcases.dtd (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/testcases.dtd)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.htm (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.htm)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20020521.htm (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20020521.htm)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20031030.htm (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20031030.htm)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.msxsl (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.msxsl)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.xsl (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.xsl)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/022.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/022.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/007.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/001.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/003.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/004.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/005.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/007.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/008.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/009.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/010.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/011.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/012.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/013.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/014.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/015.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/016.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/017.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/018.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/019.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/020.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/021.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/022.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/023.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/024.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/025.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/026.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/027.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/028.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/029.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/030.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/031.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/032.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/033.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/034.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/035.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/036.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/037.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/038.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/039.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/040.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/041.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/042.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/043.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/044.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/045.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/046.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/047.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/048.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/049.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/050.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/051.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/052.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/053.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/054.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/055.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/056.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/057.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/058.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/059.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/060.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/061.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/062.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/063.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/064.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/065.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/066.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/067.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/068.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/069.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/070.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/071.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/072.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/073.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/074.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/075.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/076.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/077.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/078.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/079.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/080.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/081.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/082.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/083.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/084.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/085.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/086.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/087.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/088.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/089.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/090.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/091.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/092.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/093.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/094.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/095.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/096.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/097.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/098.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/099.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/100.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/101.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/102.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/103.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/104.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/105.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/106.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/107.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/108.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/109.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/110.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/111.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/112.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/113.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/114.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/115.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/116.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/117.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/118.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/119.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/120.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/121.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/122.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/123.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/124.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/125.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/126.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/127.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/128.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/129.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/130.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/131.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/132.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/133.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/134.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/135.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/136.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/137.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/138.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/139.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/140.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/141.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/142.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/143.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/144.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/145.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/146.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/147.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/148.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/149.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/150.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/151.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/152.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/153.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/154.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/155.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/156.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/157.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/158.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/159.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/160.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/161.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/162.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/163.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/164.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/165.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/166.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/167.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/168.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/169.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/170.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/171.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/172.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/173.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/174.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/175.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/177.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/178.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/179.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/180.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/181.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/182.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/183.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/184.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/185.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/185.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/186.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/null.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/001.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/002.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/003.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/004.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/005.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/006.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/007.ent)bin4 -> 4 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/008.ent)bin54 -> 54 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/009.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/010.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/011.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/012.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/013.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/014.ent)bin12 -> 12 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/001.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/001.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/002.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/002.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003-1.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003-2.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004-1.ent)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004-2.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005-1.ent)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005-2.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/006.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/006.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/007.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/008.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/008.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/009.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/009.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/010.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/010.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/011.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/011.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/012.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/012.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/013.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/013.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/014.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/014.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/015.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/015.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/016.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/016.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/017.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/017.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/018.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/018.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/019.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/019.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/020.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/020.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/021.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/021.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/023.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/023.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/024.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/024.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/025.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/025.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/026.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/026.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/027.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/027.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/028.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/028.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/029.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/029.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/030.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/030.xml)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031-1.ent)0
-rw-r--r--[-rwxr-xr-x]tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031-2.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/001.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/003.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/004.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/005.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/007.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/008.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/009.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/010.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/011.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/012.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/013.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/014.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/015.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/016.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/017.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/018.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/019.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/020.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/021.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/022.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/023.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/024.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/025.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/026.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/027.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/028.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/029.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/030.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/031.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/032.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/033.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/034.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/035.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/036.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/037.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/038.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/039.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/040.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/041.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/042.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/043.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/044.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/045.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/046.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/047.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/048.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/049.xml)bin124 -> 124 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/050.xml)bin132 -> 132 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/051.xml)bin140 -> 140 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/052.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/053.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/054.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/055.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/056.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/057.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/058.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/059.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/060.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/061.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/062.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/063.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/064.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/065.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/066.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/067.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/068.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/069.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/070.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/071.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/072.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/073.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/074.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/075.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/076.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/077.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/078.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/079.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/080.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/081.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/082.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/083.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/084.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/085.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/086.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/087.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/088.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/090.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/091.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/092.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/094.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/095.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/096.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/097.ent)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/097.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/098.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/099.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/100.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/101.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/102.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/103.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/104.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/105.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/106.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/107.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/108.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/109.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/110.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/111.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/112.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/113.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/114.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/115.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/116.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/117.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/118.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/119.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/001.ref (renamed from tests/auto/qxmlstream/data/001.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/001.xml (renamed from tests/auto/qxmlstream/data/001.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/002.ref (renamed from tests/auto/qxmlstream/data/002.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/002.xml (renamed from tests/auto/qxmlstream/data/002.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/003.ref (renamed from tests/auto/qxmlstream/data/003.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/003.xml (renamed from tests/auto/qxmlstream/data/003.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/004.ref (renamed from tests/auto/qxmlstream/data/004.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/004.xml (renamed from tests/auto/qxmlstream/data/004.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/005.ref (renamed from tests/auto/qxmlstream/data/005.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/005.xml (renamed from tests/auto/qxmlstream/data/005.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/006.ref (renamed from tests/auto/qxmlstream/data/006.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/006.xml (renamed from tests/auto/qxmlstream/data/006.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/007.ref (renamed from tests/auto/qxmlstream/data/007.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/007.xml (renamed from tests/auto/qxmlstream/data/007.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/008.ref (renamed from tests/auto/qxmlstream/data/008.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/008.xml (renamed from tests/auto/qxmlstream/data/008.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/009.ref (renamed from tests/auto/qxmlstream/data/009.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/009.xml (renamed from tests/auto/qxmlstream/data/009.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/010.ref (renamed from tests/auto/qxmlstream/data/010.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/010.xml (renamed from tests/auto/qxmlstream/data/010.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/011.ref (renamed from tests/auto/qxmlstream/data/011.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/011.xml (renamed from tests/auto/qxmlstream/data/011.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/012.ref (renamed from tests/auto/qxmlstream/data/012.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/012.xml (renamed from tests/auto/qxmlstream/data/012.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/013.ref (renamed from tests/auto/qxmlstream/data/013.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/013.xml (renamed from tests/auto/qxmlstream/data/013.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/014.ref (renamed from tests/auto/qxmlstream/data/014.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/014.xml (renamed from tests/auto/qxmlstream/data/014.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/015.ref (renamed from tests/auto/qxmlstream/data/015.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/015.xml (renamed from tests/auto/qxmlstream/data/015.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/016.ref (renamed from tests/auto/qxmlstream/data/016.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/016.xml (renamed from tests/auto/qxmlstream/data/016.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/017.ref (renamed from tests/auto/qxmlstream/data/017.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/017.xml (renamed from tests/auto/qxmlstream/data/017.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/018.ref (renamed from tests/auto/qxmlstream/data/018.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/018.xml (renamed from tests/auto/qxmlstream/data/018.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/019.ref (renamed from tests/auto/qxmlstream/data/019.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/019.xml (renamed from tests/auto/qxmlstream/data/019.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/020.ref (renamed from tests/auto/qxmlstream/data/020.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/020.xml (renamed from tests/auto/qxmlstream/data/020.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/021.ref (renamed from tests/auto/qxmlstream/data/021.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/021.xml (renamed from tests/auto/qxmlstream/data/021.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/022.ref (renamed from tests/auto/qxmlstream/data/022.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/022.xml (renamed from tests/auto/qxmlstream/data/022.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/023.ref (renamed from tests/auto/qxmlstream/data/023.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/023.xml (renamed from tests/auto/qxmlstream/data/023.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/024.ref (renamed from tests/auto/qxmlstream/data/024.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/024.xml (renamed from tests/auto/qxmlstream/data/024.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/025.ref (renamed from tests/auto/qxmlstream/data/025.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/025.xml (renamed from tests/auto/qxmlstream/data/025.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/026.ref (renamed from tests/auto/qxmlstream/data/026.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/026.xml (renamed from tests/auto/qxmlstream/data/026.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/027.ref (renamed from tests/auto/qxmlstream/data/027.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/027.xml (renamed from tests/auto/qxmlstream/data/027.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/028.ref (renamed from tests/auto/qxmlstream/data/028.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/028.xml (renamed from tests/auto/qxmlstream/data/028.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/029.ref (renamed from tests/auto/qxmlstream/data/029.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/029.xml (renamed from tests/auto/qxmlstream/data/029.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/030.ref (renamed from tests/auto/qxmlstream/data/030.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/030.xml (renamed from tests/auto/qxmlstream/data/030.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/031.ref (renamed from tests/auto/qxmlstream/data/031.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/031.xml (renamed from tests/auto/qxmlstream/data/031.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/032.ref (renamed from tests/auto/qxmlstream/data/032.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/032.xml (renamed from tests/auto/qxmlstream/data/032.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/033.ref (renamed from tests/auto/qxmlstream/data/033.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/033.xml (renamed from tests/auto/qxmlstream/data/033.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/034.ref (renamed from tests/auto/qxmlstream/data/034.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/034.xml (renamed from tests/auto/qxmlstream/data/034.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/035.ref (renamed from tests/auto/qxmlstream/data/035.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/035.xml (renamed from tests/auto/qxmlstream/data/035.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/036.ref (renamed from tests/auto/qxmlstream/data/036.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/036.xml (renamed from tests/auto/qxmlstream/data/036.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/037.ref (renamed from tests/auto/qxmlstream/data/037.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/037.xml (renamed from tests/auto/qxmlstream/data/037.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/038.ref (renamed from tests/auto/qxmlstream/data/038.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/038.xml (renamed from tests/auto/qxmlstream/data/038.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/039.ref (renamed from tests/auto/qxmlstream/data/039.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/039.xml (renamed from tests/auto/qxmlstream/data/039.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/040.ref (renamed from tests/auto/qxmlstream/data/040.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/040.xml (renamed from tests/auto/qxmlstream/data/040.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/041.ref (renamed from tests/auto/qxmlstream/data/041.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/041.xml (renamed from tests/auto/qxmlstream/data/041.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/042.ref (renamed from tests/auto/qxmlstream/data/042.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/042.xml (renamed from tests/auto/qxmlstream/data/042.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/043.ref (renamed from tests/auto/qxmlstream/data/043.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/043.xml (renamed from tests/auto/qxmlstream/data/043.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/044.ref (renamed from tests/auto/qxmlstream/data/044.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/044.xml (renamed from tests/auto/qxmlstream/data/044.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/045.ref (renamed from tests/auto/qxmlstream/data/045.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/045.xml (renamed from tests/auto/qxmlstream/data/045.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/046.ref (renamed from tests/auto/qxmlstream/data/046.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/046.xml (renamed from tests/auto/qxmlstream/data/046.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/047.ref (renamed from tests/auto/qxmlstream/data/047.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/047.xml (renamed from tests/auto/qxmlstream/data/047.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/048.ref (renamed from tests/auto/qxmlstream/data/048.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/048.xml (renamed from tests/auto/qxmlstream/data/048.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/051reduced.ref (renamed from tests/auto/qxmlstream/data/051reduced.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/051reduced.xml (renamed from tests/auto/qxmlstream/data/051reduced.xml)bin22 -> 22 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/1.ref (renamed from tests/auto/qxmlstream/data/1.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/1.xml (renamed from tests/auto/qxmlstream/data/1.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/10.ref (renamed from tests/auto/qxmlstream/data/10.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/10.xml (renamed from tests/auto/qxmlstream/data/10.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/11.ref (renamed from tests/auto/qxmlstream/data/11.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/11.xml (renamed from tests/auto/qxmlstream/data/11.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/12.ref (renamed from tests/auto/qxmlstream/data/12.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/12.xml (renamed from tests/auto/qxmlstream/data/12.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/13.ref (renamed from tests/auto/qxmlstream/data/13.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/13.xml (renamed from tests/auto/qxmlstream/data/13.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/14.ref (renamed from tests/auto/qxmlstream/data/14.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/14.xml (renamed from tests/auto/qxmlstream/data/14.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/15.ref (renamed from tests/auto/qxmlstream/data/15.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/15.xml (renamed from tests/auto/qxmlstream/data/15.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/16.ref (renamed from tests/auto/qxmlstream/data/16.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/16.xml (renamed from tests/auto/qxmlstream/data/16.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/2.ref (renamed from tests/auto/qxmlstream/data/2.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/2.xml (renamed from tests/auto/qxmlstream/data/2.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/20.ref (renamed from tests/auto/qxmlstream/data/20.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/20.xml (renamed from tests/auto/qxmlstream/data/20.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/21.ref (renamed from tests/auto/qxmlstream/data/21.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/21.xml (renamed from tests/auto/qxmlstream/data/21.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/22.ref (renamed from tests/auto/qxmlstream/data/22.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/22.xml (renamed from tests/auto/qxmlstream/data/22.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/3.ref (renamed from tests/auto/qxmlstream/data/3.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/3.xml (renamed from tests/auto/qxmlstream/data/3.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/4.ref (renamed from tests/auto/qxmlstream/data/4.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/4.xml (renamed from tests/auto/qxmlstream/data/4.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/5.ref (renamed from tests/auto/qxmlstream/data/5.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/5.xml (renamed from tests/auto/qxmlstream/data/5.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/6.ref (renamed from tests/auto/qxmlstream/data/6.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/6.xml (renamed from tests/auto/qxmlstream/data/6.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/7.ref (renamed from tests/auto/qxmlstream/data/7.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/7.xml (renamed from tests/auto/qxmlstream/data/7.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/8.ref (renamed from tests/auto/qxmlstream/data/8.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/8.xml (renamed from tests/auto/qxmlstream/data/8.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/9.ref (renamed from tests/auto/qxmlstream/data/9.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/9.xml (renamed from tests/auto/qxmlstream/data/9.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/books.ref (renamed from tests/auto/qxmlstream/data/books.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/books.xml (renamed from tests/auto/qxmlstream/data/books.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/colonInPI.ref (renamed from tests/auto/qxmlstream/data/colonInPI.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/colonInPI.xml (renamed from tests/auto/qxmlstream/data/colonInPI.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.ref (renamed from tests/auto/qxmlstream/data/doctypeEmptyMarkupDecl.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.xml (renamed from tests/auto/qxmlstream/data/doctypeEmptyMarkupDecl.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/mixedContent.ref (renamed from tests/auto/qxmlstream/data/mixedContent.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/mixedContent.xml (renamed from tests/auto/qxmlstream/data/mixedContent.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.ref (renamed from tests/auto/qxmlstream/data/namespaceCDATA.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.xml (renamed from tests/auto/qxmlstream/data/namespaceCDATA.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/namespaces (renamed from tests/auto/qxmlstream/data/namespaces)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/org_module.ref (renamed from tests/auto/qxmlstream/data/org_module.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/org_module.xml (renamed from tests/auto/qxmlstream/data/org_module.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/spaceBracket.ref (renamed from tests/auto/qxmlstream/data/spaceBracket.ref)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/spaceBracket.xml (renamed from tests/auto/qxmlstream/data/spaceBracket.xml)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/qc14n.h (renamed from tests/auto/qxmlstream/qc14n.h)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/qxmlstream.pro (renamed from tests/auto/qxmlstream/qxmlstream.pro)0
-rwxr-xr-xtests/auto/corelib/xml/qxmlstream/setupSuite.sh (renamed from tests/auto/qxmlstream/setupSuite.sh)0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp (renamed from tests/auto/qxmlstream/tst_qxmlstream.cpp)0
-rw-r--r--tests/auto/corelib/xml/xml.pro3
-rw-r--r--tests/auto/dbus/dbus.pro (renamed from tests/auto/dbus.pro)0
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/.gitignore (renamed from tests/auto/qdbusabstractadaptor/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/myobject.h (renamed from tests/auto/qdbusabstractadaptor/myobject.h)0
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor.pro (renamed from tests/auto/qdbusabstractadaptor/qdbusabstractadaptor.pro)0
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp (renamed from tests/auto/qdbusabstractadaptor/qmyserver/qmyserver.cpp)0
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.pro (renamed from tests/auto/qdbusabstractadaptor/qmyserver/qmyserver.pro)0
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/test/test.pro (renamed from tests/auto/qdbusabstractadaptor/test/test.pro)0
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp (renamed from tests/auto/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp)0
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/com.trolltech.QtDBus.Pinger.xml (renamed from tests/auto/qdbusabstractinterface/com.trolltech.QtDBus.Pinger.xml)0
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/interface.cpp (renamed from tests/auto/qdbusabstractinterface/interface.cpp)0
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/interface.h (renamed from tests/auto/qdbusabstractinterface/interface.h)0
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/pinger.cpp (renamed from tests/auto/qdbusabstractinterface/pinger.cpp)0
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/pinger.h (renamed from tests/auto/qdbusabstractinterface/pinger.h)0
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface.pro (renamed from tests/auto/qdbusabstractinterface/qdbusabstractinterface.pro)0
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp (renamed from tests/auto/qdbusabstractinterface/qpinger/qpinger.cpp)0
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.pro (renamed from tests/auto/qdbusabstractinterface/qpinger/qpinger.pro)0
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/test/test.pro (renamed from tests/auto/qdbusabstractinterface/test/test.pro)0
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp (renamed from tests/auto/qdbusabstractinterface/tst_qdbusabstractinterface.cpp)0
-rw-r--r--tests/auto/dbus/qdbusconnection/.gitignore (renamed from tests/auto/qdbusconnection/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbusconnection/qdbusconnection.pro (renamed from tests/auto/qdbusconnection/qdbusconnection.pro)0
-rw-r--r--tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp (renamed from tests/auto/qdbusconnection/tst_qdbusconnection.cpp)0
-rw-r--r--tests/auto/dbus/qdbusconnection_no_bus/qdbusconnection_no_bus.pro (renamed from tests/auto/qdbusconnection_no_bus/qdbusconnection_no_bus.pro)0
-rw-r--r--tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp (renamed from tests/auto/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp)0
-rw-r--r--tests/auto/dbus/qdbuscontext/.gitignore (renamed from tests/auto/qdbuscontext/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbuscontext/qdbuscontext.pro (renamed from tests/auto/qdbuscontext/qdbuscontext.pro)0
-rw-r--r--tests/auto/dbus/qdbuscontext/tst_qdbuscontext.cpp (renamed from tests/auto/qdbuscontext/tst_qdbuscontext.cpp)0
-rw-r--r--tests/auto/dbus/qdbusinterface/.gitignore (renamed from tests/auto/qdbusinterface/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbusinterface/myobject.h (renamed from tests/auto/qdbusinterface/myobject.h)0
-rw-r--r--tests/auto/dbus/qdbusinterface/qdbusinterface.pro (renamed from tests/auto/qdbusinterface/qdbusinterface.pro)0
-rw-r--r--tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp (renamed from tests/auto/qdbusinterface/qmyserver/qmyserver.cpp)0
-rw-r--r--tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.pro (renamed from tests/auto/qdbusinterface/qmyserver/qmyserver.pro)0
-rw-r--r--tests/auto/dbus/qdbusinterface/test/test.pro (renamed from tests/auto/qdbusinterface/test/test.pro)0
-rw-r--r--tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp (renamed from tests/auto/qdbusinterface/tst_qdbusinterface.cpp)0
-rw-r--r--tests/auto/dbus/qdbuslocalcalls/.gitignore (renamed from tests/auto/qdbuslocalcalls/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbuslocalcalls/qdbuslocalcalls.pro (renamed from tests/auto/qdbuslocalcalls/qdbuslocalcalls.pro)0
-rw-r--r--tests/auto/dbus/qdbuslocalcalls/tst_qdbuslocalcalls.cpp (renamed from tests/auto/qdbuslocalcalls/tst_qdbuslocalcalls.cpp)0
-rw-r--r--tests/auto/dbus/qdbusmarshall/.gitignore (renamed from tests/auto/qdbusmarshall/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbusmarshall/common.h (renamed from tests/auto/qdbusmarshall/common.h)0
-rw-r--r--tests/auto/dbus/qdbusmarshall/dummy.cpp (renamed from tests/auto/qdbusmarshall/dummy.cpp)0
-rw-r--r--tests/auto/dbus/qdbusmarshall/qdbusmarshall.pro (renamed from tests/auto/qdbusmarshall/qdbusmarshall.pro)0
-rw-r--r--tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp (renamed from tests/auto/qdbusmarshall/qpong/qpong.cpp)0
-rw-r--r--tests/auto/dbus/qdbusmarshall/qpong/qpong.pro (renamed from tests/auto/qdbusmarshall/qpong/qpong.pro)0
-rw-r--r--tests/auto/dbus/qdbusmarshall/test/test.pro (renamed from tests/auto/qdbusmarshall/test/test.pro)0
-rw-r--r--tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp (renamed from tests/auto/qdbusmarshall/tst_qdbusmarshall.cpp)0
-rw-r--r--tests/auto/dbus/qdbusmetaobject/.gitignore (renamed from tests/auto/qdbusmetaobject/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbusmetaobject/qdbusmetaobject.pro (renamed from tests/auto/qdbusmetaobject/qdbusmetaobject.pro)0
-rw-r--r--tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp (renamed from tests/auto/qdbusmetaobject/tst_qdbusmetaobject.cpp)0
-rw-r--r--tests/auto/dbus/qdbusmetatype/.gitignore (renamed from tests/auto/qdbusmetatype/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbusmetatype/qdbusmetatype.pro (renamed from tests/auto/qdbusmetatype/qdbusmetatype.pro)0
-rw-r--r--tests/auto/dbus/qdbusmetatype/tst_qdbusmetatype.cpp (renamed from tests/auto/qdbusmetatype/tst_qdbusmetatype.cpp)0
-rw-r--r--tests/auto/dbus/qdbuspendingcall/.gitignore (renamed from tests/auto/qdbuspendingcall/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbuspendingcall/qdbuspendingcall.pro (renamed from tests/auto/qdbuspendingcall/qdbuspendingcall.pro)0
-rw-r--r--tests/auto/dbus/qdbuspendingcall/tst_qdbuspendingcall.cpp (renamed from tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp)0
-rw-r--r--tests/auto/dbus/qdbuspendingreply/.gitignore (renamed from tests/auto/qdbuspendingreply/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbuspendingreply/qdbuspendingreply.pro (renamed from tests/auto/qdbuspendingreply/qdbuspendingreply.pro)0
-rw-r--r--tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp (renamed from tests/auto/qdbuspendingreply/tst_qdbuspendingreply.cpp)0
-rw-r--r--tests/auto/dbus/qdbusreply/.gitignore (renamed from tests/auto/qdbusreply/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbusreply/qdbusreply.pro (renamed from tests/auto/qdbusreply/qdbusreply.pro)0
-rw-r--r--tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp (renamed from tests/auto/qdbusreply/tst_qdbusreply.cpp)0
-rw-r--r--tests/auto/dbus/qdbusservicewatcher/qdbusservicewatcher.pro (renamed from tests/auto/qdbusservicewatcher/qdbusservicewatcher.pro)0
-rw-r--r--tests/auto/dbus/qdbusservicewatcher/tst_qdbusservicewatcher.cpp (renamed from tests/auto/qdbusservicewatcher/tst_qdbusservicewatcher.cpp)0
-rw-r--r--tests/auto/dbus/qdbusthreading/.gitignore (renamed from tests/auto/qdbusthreading/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbusthreading/qdbusthreading.pro (renamed from tests/auto/qdbusthreading/qdbusthreading.pro)0
-rw-r--r--tests/auto/dbus/qdbusthreading/tst_qdbusthreading.cpp (renamed from tests/auto/qdbusthreading/tst_qdbusthreading.cpp)0
-rw-r--r--tests/auto/dbus/qdbustype/qdbustype.pro (renamed from tests/auto/qdbustype/qdbustype.pro)0
-rw-r--r--tests/auto/dbus/qdbustype/tst_qdbustype.cpp (renamed from tests/auto/qdbustype/tst_qdbustype.cpp)0
-rw-r--r--tests/auto/dbus/qdbusxmlparser/.gitignore (renamed from tests/auto/qdbusxmlparser/.gitignore)0
-rw-r--r--tests/auto/dbus/qdbusxmlparser/qdbusxmlparser.pro (renamed from tests/auto/qdbusxmlparser/qdbusxmlparser.pro)0
-rw-r--r--tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp (renamed from tests/auto/qdbusxmlparser/tst_qdbusxmlparser.cpp)0
-rw-r--r--tests/auto/exceptionsafety_objects/exceptionsafety_objects.pro1
-rw-r--r--tests/auto/gestures/gestures.pro4
-rw-r--r--tests/auto/gui.pro78
-rw-r--r--tests/auto/gui/gui.pro9
-rw-r--r--tests/auto/gui/image/image.pro18
-rw-r--r--tests/auto/gui/image/qicoimageformat/.gitignore (renamed from tests/auto/qicoimageformat/.gitignore)0
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/invalid/35floppy.ico (renamed from tests/auto/qicoimageformat/icons/invalid/35floppy.ico)bin1078 -> 1078 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/35FLOPPY.ICO (renamed from tests/auto/qicoimageformat/icons/valid/35FLOPPY.ICO)bin1078 -> 1078 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/AddPerfMon.ico (renamed from tests/auto/qicoimageformat/icons/valid/AddPerfMon.ico)bin1078 -> 1078 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/App.ico (renamed from tests/auto/qicoimageformat/icons/valid/App.ico)bin318 -> 318 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/Obj_N2_Internal_Mem.ico (renamed from tests/auto/qicoimageformat/icons/valid/Obj_N2_Internal_Mem.ico)bin25214 -> 25214 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/Qt.ico (renamed from tests/auto/qicoimageformat/icons/valid/Qt.ico)bin31371 -> 31371 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/Status_Play.ico (renamed from tests/auto/qicoimageformat/icons/valid/Status_Play.ico)bin2862 -> 2862 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/TIMER01.ICO (renamed from tests/auto/qicoimageformat/icons/valid/TIMER01.ICO)bin1078 -> 1078 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/WORLD.ico (renamed from tests/auto/qicoimageformat/icons/valid/WORLD.ico)bin3310 -> 3310 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/WORLDH.ico (renamed from tests/auto/qicoimageformat/icons/valid/WORLDH.ico)bin3310 -> 3310 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/abcardWindow.ico (renamed from tests/auto/qicoimageformat/icons/valid/abcardWindow.ico)bin22486 -> 22486 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/semitransparent.ico (renamed from tests/auto/qicoimageformat/icons/valid/semitransparent.ico)bin25214 -> 25214 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/icons/valid/trolltechlogo_tiny.ico (renamed from tests/auto/qicoimageformat/icons/valid/trolltechlogo_tiny.ico)bin3006 -> 3006 bytes
-rw-r--r--tests/auto/gui/image/qicoimageformat/qicoimageformat.pro (renamed from tests/auto/qicoimageformat/qicoimageformat.pro)0
-rw-r--r--tests/auto/gui/image/qicoimageformat/tst_qicoimageformat.cpp (renamed from tests/auto/qicoimageformat/tst_qicoimageformat.cpp)0
-rw-r--r--tests/auto/gui/image/qicon/.gitignore (renamed from tests/auto/qicon/.gitignore)0
-rw-r--r--tests/auto/gui/image/qicon/heart.svg (renamed from tests/auto/qicon/heart.svg)0
-rw-r--r--tests/auto/gui/image/qicon/heart.svgz (renamed from tests/auto/qicon/heart.svgz)bin1506 -> 1506 bytes
-rw-r--r--tests/auto/gui/image/qicon/icons/testtheme/16x16/actions/appointment-new.png (renamed from tests/auto/qicon/icons/testtheme/16x16/actions/appointment-new.png)bin897 -> 897 bytes
-rw-r--r--tests/auto/gui/image/qicon/icons/testtheme/22x22/actions/appointment-new.png (renamed from tests/auto/qicon/icons/testtheme/22x22/actions/appointment-new.png)bin1411 -> 1411 bytes
-rw-r--r--tests/auto/gui/image/qicon/icons/testtheme/32x32/actions/appointment-new.png (renamed from tests/auto/qicon/icons/testtheme/32x32/actions/appointment-new.png)bin2399 -> 2399 bytes
-rw-r--r--tests/auto/gui/image/qicon/icons/testtheme/index.theme (renamed from tests/auto/qicon/icons/testtheme/index.theme)0
-rw-r--r--tests/auto/gui/image/qicon/icons/testtheme/scalable/actions/svg-only.svg (renamed from tests/auto/qicon/icons/testtheme/scalable/actions/svg-only.svg)0
-rw-r--r--tests/auto/gui/image/qicon/icons/themeparent/16x16/actions/address-book-new.png (renamed from tests/auto/qicon/icons/themeparent/16x16/actions/address-book-new.png)bin796 -> 796 bytes
-rw-r--r--tests/auto/gui/image/qicon/icons/themeparent/16x16/actions/appointment-new.png (renamed from tests/auto/qicon/icons/themeparent/16x16/actions/appointment-new.png)bin897 -> 897 bytes
-rw-r--r--tests/auto/gui/image/qicon/icons/themeparent/22x22/actions/address-book-new.png (renamed from tests/auto/qicon/icons/themeparent/22x22/actions/address-book-new.png)bin924 -> 924 bytes
-rw-r--r--tests/auto/gui/image/qicon/icons/themeparent/22x22/actions/appointment-new.png (renamed from tests/auto/qicon/icons/themeparent/22x22/actions/appointment-new.png)bin1411 -> 1411 bytes
-rw-r--r--tests/auto/gui/image/qicon/icons/themeparent/32x32/actions/address-book-new.png (renamed from tests/auto/qicon/icons/themeparent/32x32/actions/address-book-new.png)bin1897 -> 1897 bytes
-rw-r--r--tests/auto/gui/image/qicon/icons/themeparent/32x32/actions/appointment-new.png (renamed from tests/auto/qicon/icons/themeparent/32x32/actions/appointment-new.png)bin2399 -> 2399 bytes
-rw-r--r--tests/auto/gui/image/qicon/icons/themeparent/index.theme (renamed from tests/auto/qicon/icons/themeparent/index.theme)0
-rw-r--r--tests/auto/gui/image/qicon/icons/themeparent/scalable/actions/address-book-new.svg (renamed from tests/auto/qicon/icons/themeparent/scalable/actions/address-book-new.svg)0
-rw-r--r--tests/auto/gui/image/qicon/icons/themeparent/scalable/actions/appointment-new.svg (renamed from tests/auto/qicon/icons/themeparent/scalable/actions/appointment-new.svg)0
-rw-r--r--tests/auto/gui/image/qicon/image.png (renamed from tests/auto/qicon/image.png)bin14743 -> 14743 bytes
-rw-r--r--tests/auto/gui/image/qicon/qicon.pro32
-rw-r--r--tests/auto/gui/image/qicon/rect.png (renamed from tests/auto/qicon/rect.png)bin175 -> 175 bytes
-rw-r--r--tests/auto/gui/image/qicon/rect.svg (renamed from tests/auto/qicon/rect.svg)0
-rw-r--r--tests/auto/gui/image/qicon/trash.svg (renamed from tests/auto/qicon/trash.svg)0
-rw-r--r--tests/auto/gui/image/qicon/tst_qicon.cpp (renamed from tests/auto/qicon/tst_qicon.cpp)0
-rw-r--r--tests/auto/gui/image/qicon/tst_qicon.qrc (renamed from tests/auto/qicon/tst_qicon.qrc)0
-rw-r--r--tests/auto/gui/image/qimage/.gitignore (renamed from tests/auto/qimage/.gitignore)0
-rw-r--r--tests/auto/gui/image/qimage/images/image.bmp (renamed from tests/auto/qimage/images/image.bmp)bin306 -> 306 bytes
-rw-r--r--tests/auto/gui/image/qimage/images/image.gif (renamed from tests/auto/qimage/images/image.gif)bin1089 -> 1089 bytes
-rw-r--r--tests/auto/gui/image/qimage/images/image.ico (renamed from tests/auto/qimage/images/image.ico)bin10134 -> 10134 bytes
-rw-r--r--tests/auto/gui/image/qimage/images/image.jpg (renamed from tests/auto/qimage/images/image.jpg)bin696 -> 696 bytes
-rw-r--r--tests/auto/gui/image/qimage/images/image.pbm (renamed from tests/auto/qimage/images/image.pbm)0
-rw-r--r--tests/auto/gui/image/qimage/images/image.pgm (renamed from tests/auto/qimage/images/image.pgm)0
-rw-r--r--tests/auto/gui/image/qimage/images/image.png (renamed from tests/auto/qimage/images/image.png)bin549 -> 549 bytes
-rw-r--r--tests/auto/gui/image/qimage/images/image.ppm (renamed from tests/auto/qimage/images/image.ppm)0
-rw-r--r--tests/auto/gui/image/qimage/images/image.tif (renamed from tests/auto/qimage/images/image.tif)bin2242 -> 2242 bytes
-rw-r--r--tests/auto/gui/image/qimage/images/image.xbm (renamed from tests/auto/qimage/images/image.xbm)0
-rw-r--r--tests/auto/gui/image/qimage/images/image.xpm (renamed from tests/auto/qimage/images/image.xpm)0
-rw-r--r--tests/auto/gui/image/qimage/qimage.pro (renamed from tests/auto/qimage/qimage.pro)0
-rw-r--r--tests/auto/gui/image/qimage/tst_qimage.cpp2014
-rw-r--r--tests/auto/gui/image/qimageiohandler/.gitignore (renamed from tests/auto/qimageiohandler/.gitignore)0
-rw-r--r--tests/auto/gui/image/qimageiohandler/qimageiohandler.pro (renamed from tests/auto/qimageiohandler/qimageiohandler.pro)0
-rw-r--r--tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp (renamed from tests/auto/qimageiohandler/tst_qimageiohandler.cpp)0
-rw-r--r--tests/auto/gui/image/qimagereader/.gitignore (renamed from tests/auto/qimagereader/.gitignore)0
-rw-r--r--tests/auto/gui/image/qimagereader/baseline/35floppy.png (renamed from tests/auto/qimagereader/baseline/35floppy.png)bin329 -> 329 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/baseline/connect.png (renamed from tests/auto/qimagereader/baseline/connect.png)bin12943 -> 12943 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/baseline/kde_favicon.png (renamed from tests/auto/qimagereader/baseline/kde_favicon.png)bin514 -> 514 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/baseline/semitransparent.png (renamed from tests/auto/qimagereader/baseline/semitransparent.png)bin545 -> 545 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/16bpp.bmp (renamed from tests/auto/qimagereader/images/16bpp.bmp)bin153654 -> 153654 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/4bpp-rle.bmp (renamed from tests/auto/qimagereader/images/4bpp-rle.bmp)bin23662 -> 23662 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/YCbCr_cmyk.jpg (renamed from tests/auto/qimagereader/images/YCbCr_cmyk.jpg)bin3699 -> 3699 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/YCbCr_cmyk.png (renamed from tests/auto/qimagereader/images/YCbCr_cmyk.png)bin230 -> 230 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/YCbCr_rgb.jpg (renamed from tests/auto/qimagereader/images/YCbCr_rgb.jpg)bin2045 -> 2045 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/away.png (renamed from tests/auto/qimagereader/images/away.png)bin753 -> 753 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/ball.mng (renamed from tests/auto/qimagereader/images/ball.mng)bin34394 -> 34394 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/bat1.gif (renamed from tests/auto/qimagereader/images/bat1.gif)bin953 -> 953 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/bat2.gif (renamed from tests/auto/qimagereader/images/bat2.gif)bin980 -> 980 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/beavis.jpg (renamed from tests/auto/qimagereader/images/beavis.jpg)bin20688 -> 20688 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/black.png (renamed from tests/auto/qimagereader/images/black.png)bin697 -> 697 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/black.xpm (renamed from tests/auto/qimagereader/images/black.xpm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/colorful.bmp (renamed from tests/auto/qimagereader/images/colorful.bmp)bin65002 -> 65002 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt-colors.xpm (renamed from tests/auto/qimagereader/images/corrupt-colors.xpm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt-data.tif (renamed from tests/auto/qimagereader/images/corrupt-data.tif)bin8590 -> 8590 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt-pixel-count.xpm (renamed from tests/auto/qimagereader/images/corrupt-pixel-count.xpm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt-pixels.xpm (renamed from tests/auto/qimagereader/images/corrupt-pixels.xpm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt.bmp (renamed from tests/auto/qimagereader/images/corrupt.bmp)bin116 -> 116 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt.gif (renamed from tests/auto/qimagereader/images/corrupt.gif)bin2608 -> 2608 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt.jpg (renamed from tests/auto/qimagereader/images/corrupt.jpg)bin18 -> 18 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt.mng (renamed from tests/auto/qimagereader/images/corrupt.mng)bin183 -> 183 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt.png (renamed from tests/auto/qimagereader/images/corrupt.png)bin95 -> 95 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt.svg (renamed from tests/auto/qimagereader/images/corrupt.svg)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt.svgz (renamed from tests/auto/qimagereader/images/corrupt.svgz)bin407 -> 407 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt.xbm (renamed from tests/auto/qimagereader/images/corrupt.xbm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/crash-signed-char.bmp (renamed from tests/auto/qimagereader/images/crash-signed-char.bmp)bin45748 -> 45748 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/earth.gif (renamed from tests/auto/qimagereader/images/earth.gif)bin51712 -> 51712 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/endless-anim.gif (renamed from tests/auto/qimagereader/images/endless-anim.gif)bin819 -> 819 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/fire.mng (renamed from tests/auto/qimagereader/images/fire.mng)bin44430 -> 44430 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/font.bmp (renamed from tests/auto/qimagereader/images/font.bmp)bin1026 -> 1026 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/four-frames.gif (renamed from tests/auto/qimagereader/images/four-frames.gif)bin427 -> 427 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/gnus.xbm (renamed from tests/auto/qimagereader/images/gnus.xbm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/grayscale-ref.tif (renamed from tests/auto/qimagereader/images/grayscale-ref.tif)bin256182 -> 256182 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/grayscale.tif (renamed from tests/auto/qimagereader/images/grayscale.tif)bin64162 -> 64162 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/image.pbm (renamed from tests/auto/qimagereader/images/image.pbm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/image.pgm (renamed from tests/auto/qimagereader/images/image.pgm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/image.png (renamed from tests/auto/qimagereader/images/image.png)bin549 -> 549 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/image.ppm (renamed from tests/auto/qimagereader/images/image.ppm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/image_100dpi.tif (renamed from tests/auto/qimagereader/images/image_100dpi.tif)bin2242 -> 2242 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/kollada-noext (renamed from tests/auto/qimagereader/images/kollada-noext)bin13907 -> 13907 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/kollada.png (renamed from tests/auto/qimagereader/images/kollada.png)bin13907 -> 13907 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/marble.xpm (renamed from tests/auto/qimagereader/images/marble.xpm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/namedcolors.xpm (renamed from tests/auto/qimagereader/images/namedcolors.xpm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/negativeheight.bmp (renamed from tests/auto/qimagereader/images/negativeheight.bmp)bin24630 -> 24630 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/noclearcode.bmp (renamed from tests/auto/qimagereader/images/noclearcode.bmp)bin326 -> 326 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/noclearcode.gif (renamed from tests/auto/qimagereader/images/noclearcode.gif)bin130 -> 130 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/nontransparent.xpm (renamed from tests/auto/qimagereader/images/nontransparent.xpm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/qt-gif-anim.gif (renamed from tests/auto/qimagereader/images/qt-gif-anim.gif)bin1661 -> 1661 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/qt-gif-noanim.gif (renamed from tests/auto/qimagereader/images/qt-gif-noanim.gif)bin1642 -> 1642 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/qt.gif (renamed from tests/auto/qimagereader/images/qt.gif)bin26504 -> 26504 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/qt1.gif (renamed from tests/auto/qimagereader/images/qt1.gif)bin7216 -> 7216 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/qt2.gif (renamed from tests/auto/qimagereader/images/qt2.gif)bin5559 -> 5559 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/qt3.gif (renamed from tests/auto/qimagereader/images/qt3.gif)bin4702 -> 4702 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/qt4.gif (renamed from tests/auto/qimagereader/images/qt4.gif)bin4310 -> 4310 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/qt5.gif (renamed from tests/auto/qimagereader/images/qt5.gif)bin4234 -> 4234 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/qt6.gif (renamed from tests/auto/qimagereader/images/qt6.gif)bin4732 -> 4732 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/qt7.gif (renamed from tests/auto/qimagereader/images/qt7.gif)bin5265 -> 5265 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/qt8.gif (renamed from tests/auto/qimagereader/images/qt8.gif)bin6144 -> 6144 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/qtbug13653-no_eoi.jpg (renamed from tests/auto/qimagereader/images/qtbug13653-no_eoi.jpg)bin8250 -> 8250 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rect.svg (renamed from tests/auto/qimagereader/images/rect.svg)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/rect.svgz (renamed from tests/auto/qimagereader/images/rect.svgz)bin5082 -> 5082 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif (renamed from tests/auto/qimagereader/images/rgba_adobedeflate_littleendian.tif)bin4784 -> 4784 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_lzw_littleendian.tif (renamed from tests/auto/qimagereader/images/rgba_lzw_littleendian.tif)bin26690 -> 26690 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif (renamed from tests/auto/qimagereader/images/rgba_nocompression_bigendian.tif)bin160384 -> 160384 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif (renamed from tests/auto/qimagereader/images/rgba_nocompression_littleendian.tif)bin160388 -> 160388 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_packbits_littleendian.tif (renamed from tests/auto/qimagereader/images/rgba_packbits_littleendian.tif)bin161370 -> 161370 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif (renamed from tests/auto/qimagereader/images/rgba_zipdeflate_littleendian.tif)bin14728 -> 14728 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/runners.ppm (renamed from tests/auto/qimagereader/images/runners.ppm)bin960016 -> 960016 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/teapot.ppm (renamed from tests/auto/qimagereader/images/teapot.ppm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/test.ppm (renamed from tests/auto/qimagereader/images/test.ppm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/test.xpm (renamed from tests/auto/qimagereader/images/test.xpm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/test32bfv4.bmp (renamed from tests/auto/qimagereader/images/test32bfv4.bmp)bin232874 -> 232874 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/test32v5.bmp (renamed from tests/auto/qimagereader/images/test32v5.bmp)bin174858 -> 174858 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff)bin7740 -> 7740 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff)bin9570 -> 9570 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff)bin11392 -> 11392 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff)bin11392 -> 11392 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff)bin11392 -> 11392 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff)bin11392 -> 11392 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff)bin11392 -> 11392 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff)bin11392 -> 11392 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_1.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/mono_orientation_1.tiff)bin2382 -> 2382 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_2.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/mono_orientation_2.tiff)bin1608 -> 1608 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_3.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/mono_orientation_3.tiff)bin1608 -> 1608 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_4.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/mono_orientation_4.tiff)bin1608 -> 1608 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_5.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/mono_orientation_5.tiff)bin1608 -> 1608 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_6.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/mono_orientation_6.tiff)bin1608 -> 1608 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_7.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/mono_orientation_7.tiff)bin1608 -> 1608 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_8.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/mono_orientation_8.tiff)bin1608 -> 1608 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/original_indexed.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/original_indexed.tiff)bin5922 -> 5922 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/original_mono.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/original_mono.tiff)bin786 -> 786 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/original_rgb.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/original_rgb.tiff)bin12608 -> 12608 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff)bin15560 -> 15560 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff)bin17972 -> 17972 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff)bin17324 -> 17324 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff)bin17324 -> 17324 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff)bin17648 -> 17648 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff)bin17324 -> 17324 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff)bin17324 -> 17324 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff (renamed from tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff)bin17324 -> 17324 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/transparent.xpm (renamed from tests/auto/qimagereader/images/transparent.xpm)0
-rw-r--r--tests/auto/gui/image/qimagereader/images/trolltech.gif (renamed from tests/auto/qimagereader/images/trolltech.gif)bin42629 -> 42629 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tst7.bmp (renamed from tests/auto/qimagereader/images/tst7.bmp)bin582 -> 582 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tst7.png (renamed from tests/auto/qimagereader/images/tst7.png)bin167 -> 167 bytes
-rwxr-xr-xtests/auto/gui/image/qimagereader/images/txts.png (renamed from tests/auto/qimagereader/images/txts.png)bin5413 -> 5413 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/qimagereader.pro36
-rw-r--r--tests/auto/gui/image/qimagereader/qimagereader.qrc (renamed from tests/auto/qimagereader/qimagereader.qrc)0
-rw-r--r--tests/auto/gui/image/qimagereader/tst_qimagereader.cpp2026
-rw-r--r--tests/auto/gui/image/qimagewriter/.gitignore (renamed from tests/auto/qimagewriter/.gitignore)0
-rw-r--r--tests/auto/gui/image/qimagewriter/images/YCbCr_cmyk.jpg (renamed from tests/auto/qimagewriter/images/YCbCr_cmyk.jpg)bin3699 -> 3699 bytes
-rw-r--r--tests/auto/gui/image/qimagewriter/images/YCbCr_rgb.jpg (renamed from tests/auto/qimagewriter/images/YCbCr_rgb.jpg)bin2045 -> 2045 bytes
-rw-r--r--tests/auto/gui/image/qimagewriter/images/beavis.jpg (renamed from tests/auto/qimagewriter/images/beavis.jpg)bin20688 -> 20688 bytes
-rw-r--r--tests/auto/gui/image/qimagewriter/images/colorful.bmp (renamed from tests/auto/qimagewriter/images/colorful.bmp)bin65002 -> 65002 bytes
-rw-r--r--tests/auto/gui/image/qimagewriter/images/earth.gif (renamed from tests/auto/qimagewriter/images/earth.gif)bin51712 -> 51712 bytes
-rw-r--r--tests/auto/gui/image/qimagewriter/images/font.bmp (renamed from tests/auto/qimagewriter/images/font.bmp)bin1026 -> 1026 bytes
-rw-r--r--tests/auto/gui/image/qimagewriter/images/gnus.xbm (renamed from tests/auto/qimagewriter/images/gnus.xbm)0
-rw-r--r--tests/auto/gui/image/qimagewriter/images/kollada.png (renamed from tests/auto/qimagewriter/images/kollada.png)bin13907 -> 13907 bytes
-rw-r--r--tests/auto/gui/image/qimagewriter/images/marble.xpm (renamed from tests/auto/qimagewriter/images/marble.xpm)0
-rw-r--r--tests/auto/gui/image/qimagewriter/images/ship63.pbm (renamed from tests/auto/qimagewriter/images/ship63.pbm)bin111 -> 111 bytes
-rw-r--r--tests/auto/gui/image/qimagewriter/images/teapot.ppm (renamed from tests/auto/qimagewriter/images/teapot.ppm)0
-rw-r--r--tests/auto/gui/image/qimagewriter/images/teapot.tiff (renamed from tests/auto/qimagewriter/images/teapot.tiff)bin262274 -> 262274 bytes
-rw-r--r--tests/auto/gui/image/qimagewriter/images/trolltech.gif (renamed from tests/auto/qimagewriter/images/trolltech.gif)bin42629 -> 42629 bytes
-rw-r--r--tests/auto/gui/image/qimagewriter/qimagewriter.pro25
-rw-r--r--tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp (renamed from tests/auto/qimagewriter/tst_qimagewriter.cpp)0
-rw-r--r--tests/auto/gui/image/qmovie/.gitignore (renamed from tests/auto/qmovie/.gitignore)0
-rw-r--r--tests/auto/gui/image/qmovie/animations/comicsecard.gif (renamed from tests/auto/qmovie/animations/comicsecard.gif)bin12112 -> 12112 bytes
-rw-r--r--tests/auto/gui/image/qmovie/animations/corrupt.gif (renamed from tests/auto/qmovie/animations/corrupt.gif)bin847 -> 847 bytes
-rw-r--r--tests/auto/gui/image/qmovie/animations/dutch.mng (renamed from tests/auto/qmovie/animations/dutch.mng)bin18534 -> 18534 bytes
-rw-r--r--tests/auto/gui/image/qmovie/animations/trolltech.gif (renamed from tests/auto/qmovie/animations/trolltech.gif)bin70228 -> 70228 bytes
-rw-r--r--tests/auto/gui/image/qmovie/qmovie.pro28
-rw-r--r--tests/auto/gui/image/qmovie/resources.qrc (renamed from tests/auto/qmovie/resources.qrc)0
-rw-r--r--tests/auto/gui/image/qmovie/tst_qmovie.cpp (renamed from tests/auto/qmovie/tst_qmovie.cpp)0
-rw-r--r--tests/auto/gui/image/qpicture/.gitignore (renamed from tests/auto/qpicture/.gitignore)0
-rw-r--r--tests/auto/gui/image/qpicture/qpicture.pro6
-rw-r--r--tests/auto/gui/image/qpicture/tst_qpicture.cpp (renamed from tests/auto/qpicture/tst_qpicture.cpp)0
-rw-r--r--tests/auto/gui/image/qpixmap/.gitignore (renamed from tests/auto/qpixmap/.gitignore)0
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromImage/task31722_0/img1.png (renamed from tests/auto/qpixmap/convertFromImage/task31722_0/img1.png)bin26622 -> 26622 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromImage/task31722_0/img2.png (renamed from tests/auto/qpixmap/convertFromImage/task31722_0/img2.png)bin149 -> 149 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromImage/task31722_1/img1.png (renamed from tests/auto/qpixmap/convertFromImage/task31722_1/img1.png)bin26532 -> 26532 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromImage/task31722_1/img2.png (renamed from tests/auto/qpixmap/convertFromImage/task31722_1/img2.png)bin160 -> 160 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp.ico (renamed from tests/auto/qpixmap/convertFromToHICON/icon_32bpp.ico)bin285478 -> 285478 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_16x16.png (renamed from tests/auto/qpixmap/convertFromToHICON/icon_32bpp_16x16.png)bin754 -> 754 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_256x256.png (renamed from tests/auto/qpixmap/convertFromToHICON/icon_32bpp_256x256.png)bin16269 -> 16269 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_32x32.png (renamed from tests/auto/qpixmap/convertFromToHICON/icon_32bpp_32x32.png)bin1745 -> 1745 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_48x48.png (renamed from tests/auto/qpixmap/convertFromToHICON/icon_32bpp_48x48.png)bin2618 -> 2618 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp.ico (renamed from tests/auto/qpixmap/convertFromToHICON/icon_8bpp.ico)bin7406 -> 7406 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp_16x16.png (renamed from tests/auto/qpixmap/convertFromToHICON/icon_8bpp_16x16.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp_32x32.png (renamed from tests/auto/qpixmap/convertFromToHICON/icon_8bpp_32x32.png)bin1721 -> 1721 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp_48x48.png (renamed from tests/auto/qpixmap/convertFromToHICON/icon_8bpp_48x48.png)bin1967 -> 1967 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/designer.png (renamed from tests/auto/qpixmap/images/designer.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_-10_dy_-10_50_50_100_100.png (renamed from tests/auto/qpixmap/images/dx_-10_dy_-10_50_50_100_100.png)bin4385 -> 4385 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_-10_dy_-10_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_-10_dy_-10_x_y_w_h.png)bin4104 -> 4104 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_-10_dy_0_50_50_100_100.png (renamed from tests/auto/qpixmap/images/dx_-10_dy_0_50_50_100_100.png)bin4243 -> 4243 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_-10_dy_0_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_-10_dy_0_x_y_w_h.png)bin4116 -> 4116 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_-128_dy_-128_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_-128_dy_-128_x_y_w_h.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_-128_dy_0_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_-128_dy_0_x_y_w_h.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_0_dy_-10_50_50_100_100.png (renamed from tests/auto/qpixmap/images/dx_0_dy_-10_50_50_100_100.png)bin4367 -> 4367 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_0_dy_-10_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_0_dy_-10_x_y_w_h.png)bin4157 -> 4157 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_0_dy_-128_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_0_dy_-128_x_y_w_h.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_0_dy_0_50_50_100_100.png (renamed from tests/auto/qpixmap/images/dx_0_dy_0_50_50_100_100.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_0_dy_0_null.png (renamed from tests/auto/qpixmap/images/dx_0_dy_0_null.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_0_dy_0_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_0_dy_0_x_y_w_h.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_0_dy_10_50_50_100_100.png (renamed from tests/auto/qpixmap/images/dx_0_dy_10_50_50_100_100.png)bin4271 -> 4271 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_0_dy_10_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_0_dy_10_x_y_w_h.png)bin4188 -> 4188 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_0_dy_128_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_0_dy_128_x_y_w_h.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_0_dy_1_null.png (renamed from tests/auto/qpixmap/images/dx_0_dy_1_null.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_10_dy_0_50_50_100_100.png (renamed from tests/auto/qpixmap/images/dx_10_dy_0_50_50_100_100.png)bin4248 -> 4248 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_10_dy_0_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_10_dy_0_x_y_w_h.png)bin4196 -> 4196 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_10_dy_10_50_50_100_100.png (renamed from tests/auto/qpixmap/images/dx_10_dy_10_50_50_100_100.png)bin4243 -> 4243 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_10_dy_10_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_10_dy_10_x_y_w_h.png)bin4220 -> 4220 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_128_dy_0_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_128_dy_0_x_y_w_h.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_128_dy_128_64_64_128_128.png (renamed from tests/auto/qpixmap/images/dx_128_dy_128_64_64_128_128.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_128_dy_128_x_y_w_h.png (renamed from tests/auto/qpixmap/images/dx_128_dy_128_x_y_w_h.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/images/dx_1_dy_0_null.png (renamed from tests/auto/qpixmap/images/dx_1_dy_0_null.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/loadFromData/designer_argb32.png (renamed from tests/auto/qpixmap/loadFromData/designer_argb32.png)bin4189 -> 4189 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_no_alpha.gif (renamed from tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha.gif)bin3317 -> 3317 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_no_alpha.png (renamed from tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha.png)bin2431 -> 2431 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_no_alpha_animated.gif (renamed from tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha_animated.gif)bin4075 -> 4075 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_with_alpha.gif (renamed from tests/auto/qpixmap/loadFromData/designer_indexed8_with_alpha.gif)bin2086 -> 2086 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_with_alpha.png (renamed from tests/auto/qpixmap/loadFromData/designer_indexed8_with_alpha.png)bin1405 -> 1405 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_with_alpha_animated.gif (renamed from tests/auto/qpixmap/loadFromData/designer_indexed8_with_alpha_animated.gif)bin4138 -> 4138 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/loadFromData/designer_rgb32.jpg (renamed from tests/auto/qpixmap/loadFromData/designer_rgb32.jpg)bin11810 -> 11810 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/loadFromData/designer_rgb32.png (renamed from tests/auto/qpixmap/loadFromData/designer_rgb32.png)bin4282 -> 4282 bytes
-rw-r--r--tests/auto/gui/image/qpixmap/qpixmap.pro35
-rw-r--r--tests/auto/gui/image/qpixmap/qpixmap.qrc (renamed from tests/auto/qpixmap/qpixmap.qrc)0
-rw-r--r--tests/auto/gui/image/qpixmap/tst_qpixmap.cpp1787
-rw-r--r--tests/auto/gui/image/qpixmapcache/.gitignore (renamed from tests/auto/qpixmapcache/.gitignore)0
-rw-r--r--tests/auto/gui/image/qpixmapcache/qpixmapcache.pro (renamed from tests/auto/qpixmapcache/qpixmapcache.pro)0
-rw-r--r--tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp (renamed from tests/auto/qpixmapcache/tst_qpixmapcache.cpp)0
-rw-r--r--tests/auto/gui/image/qpixmapfilter/noise.png (renamed from tests/auto/qpixmapfilter/noise.png)bin7517 -> 7517 bytes
-rw-r--r--tests/auto/gui/image/qpixmapfilter/qpixmapfilter.pro13
-rw-r--r--tests/auto/gui/image/qpixmapfilter/tst_qpixmapfilter.cpp (renamed from tests/auto/qpixmapfilter/tst_qpixmapfilter.cpp)0
-rw-r--r--tests/auto/gui/image/qvolatileimage/qvolatileimage.pro10
-rw-r--r--tests/auto/gui/image/qvolatileimage/tst_qvolatileimage.cpp (renamed from tests/auto/qvolatileimage/tst_qvolatileimage.cpp)0
-rw-r--r--tests/auto/gui/kernel/kernel.pro17
-rw-r--r--tests/auto/gui/kernel/qclipboard/.gitignore (renamed from tests/auto/qclipboard/.gitignore)0
-rw-r--r--tests/auto/gui/kernel/qclipboard/copier/copier.pro10
-rw-r--r--tests/auto/gui/kernel/qclipboard/copier/main.cpp (renamed from tests/auto/qclipboard/copier/main.cpp)0
-rw-r--r--tests/auto/gui/kernel/qclipboard/paster/main.cpp (renamed from tests/auto/qclipboard/paster/main.cpp)0
-rw-r--r--tests/auto/gui/kernel/qclipboard/paster/paster.pro11
-rw-r--r--tests/auto/gui/kernel/qclipboard/qclipboard.pro (renamed from tests/auto/qclipboard/qclipboard.pro)0
-rw-r--r--tests/auto/gui/kernel/qclipboard/test/test.pro (renamed from tests/auto/qclipboard/test/test.pro)0
-rw-r--r--tests/auto/gui/kernel/qclipboard/tst_qclipboard.cpp422
-rw-r--r--tests/auto/gui/kernel/qdrag/.gitignore (renamed from tests/auto/qdrag/.gitignore)0
-rw-r--r--tests/auto/gui/kernel/qdrag/qdrag.pro9
-rw-r--r--tests/auto/gui/kernel/qdrag/tst_qdrag.cpp (renamed from tests/auto/qdrag/tst_qdrag.cpp)0
-rw-r--r--tests/auto/gui/kernel/qevent/.gitignore (renamed from tests/auto/qevent/.gitignore)0
-rw-r--r--tests/auto/gui/kernel/qevent/qevent.pro (renamed from tests/auto/qevent/qevent.pro)0
-rw-r--r--tests/auto/gui/kernel/qevent/tst_qevent.cpp (renamed from tests/auto/qevent/tst_qevent.cpp)0
-rw-r--r--tests/auto/gui/kernel/qfileopenevent/qfileopenevent.pro3
-rw-r--r--tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.cpp (renamed from tests/auto/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.cpp)0
-rw-r--r--tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.pro10
-rw-r--r--tests/auto/gui/kernel/qfileopenevent/test/test.pro (renamed from tests/auto/qfileopenevent/test/test.pro)0
-rw-r--r--tests/auto/gui/kernel/qfileopenevent/test/tst_qfileopenevent.cpp (renamed from tests/auto/qfileopenevent/test/tst_qfileopenevent.cpp)0
-rw-r--r--tests/auto/gui/kernel/qguivariant/.gitignore (renamed from tests/auto/qguivariant/.gitignore)0
-rw-r--r--tests/auto/gui/kernel/qguivariant/qguivariant.pro (renamed from tests/auto/qguivariant/qguivariant.pro)0
-rw-r--r--tests/auto/gui/kernel/qguivariant/tst_qguivariant.cpp (renamed from tests/auto/qguivariant/tst_qguivariant.cpp)0
-rw-r--r--tests/auto/gui/kernel/qkeysequence/.gitignore (renamed from tests/auto/qkeysequence/.gitignore)0
-rw-r--r--tests/auto/gui/kernel/qkeysequence/keys_de.qm (renamed from tests/auto/qkeysequence/keys_de.qm)bin721 -> 721 bytes
-rw-r--r--tests/auto/gui/kernel/qkeysequence/keys_de.ts (renamed from tests/auto/qkeysequence/keys_de.ts)0
-rw-r--r--tests/auto/gui/kernel/qkeysequence/qkeysequence.pro8
-rw-r--r--tests/auto/gui/kernel/qkeysequence/qkeysequence.qrc (renamed from tests/auto/qkeysequence/qkeysequence.qrc)0
-rw-r--r--tests/auto/gui/kernel/qkeysequence/qt_de.qm (renamed from tests/auto/qkeysequence/qt_de.qm)bin186240 -> 186240 bytes
-rw-r--r--tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp (renamed from tests/auto/qkeysequence/tst_qkeysequence.cpp)0
-rw-r--r--tests/auto/gui/kernel/qmouseevent/.gitignore (renamed from tests/auto/qmouseevent/.gitignore)0
-rw-r--r--tests/auto/gui/kernel/qmouseevent/qmouseevent.pro3
-rw-r--r--tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp (renamed from tests/auto/qmouseevent/tst_qmouseevent.cpp)0
-rw-r--r--tests/auto/gui/kernel/qmouseevent_modal/.gitignore (renamed from tests/auto/qmouseevent_modal/.gitignore)0
-rw-r--r--tests/auto/gui/kernel/qmouseevent_modal/qmouseevent_modal.pro6
-rw-r--r--tests/auto/gui/kernel/qmouseevent_modal/tst_qmouseevent_modal.cpp (renamed from tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp)0
-rw-r--r--tests/auto/gui/kernel/qpalette/.gitignore (renamed from tests/auto/qpalette/.gitignore)0
-rw-r--r--tests/auto/gui/kernel/qpalette/qpalette.pro6
-rw-r--r--tests/auto/gui/kernel/qpalette/tst_qpalette.cpp (renamed from tests/auto/qpalette/tst_qpalette.cpp)0
-rw-r--r--tests/auto/gui/kernel/qshortcut/.gitignore (renamed from tests/auto/qshortcut/.gitignore)0
-rw-r--r--tests/auto/gui/kernel/qshortcut/qshortcut.pro11
-rw-r--r--tests/auto/gui/kernel/qshortcut/tst_qshortcut.cpp (renamed from tests/auto/qshortcut/tst_qshortcut.cpp)0
-rw-r--r--tests/auto/gui/kernel/qtouchevent/qtouchevent.pro3
-rw-r--r--tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp1398
-rw-r--r--tests/auto/gui/math3d/math3d.pro6
-rw-r--r--tests/auto/gui/math3d/qmatrixnxn/qmatrixnxn.pro (renamed from tests/auto/qmatrixnxn/qmatrixnxn.pro)0
-rw-r--r--tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp (renamed from tests/auto/qmatrixnxn/tst_qmatrixnxn.cpp)0
-rw-r--r--tests/auto/gui/math3d/qquaternion/qquaternion.pro (renamed from tests/auto/qquaternion/qquaternion.pro)0
-rw-r--r--tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp (renamed from tests/auto/qquaternion/tst_qquaternion.cpp)0
-rw-r--r--tests/auto/gui/math3d/qvectornd/qvectornd.pro (renamed from tests/auto/qvectornd/qvectornd.pro)0
-rw-r--r--tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp (renamed from tests/auto/qvectornd/tst_qvectornd.cpp)0
-rw-r--r--tests/auto/gui/painting/painting.pro21
-rw-r--r--tests/auto/gui/painting/qbrush/.gitignore (renamed from tests/auto/qbrush/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qbrush/qbrush.pro3
-rw-r--r--tests/auto/gui/painting/qbrush/tst_qbrush.cpp (renamed from tests/auto/qbrush/tst_qbrush.cpp)0
-rw-r--r--tests/auto/gui/painting/qcolor/.gitignore (renamed from tests/auto/qcolor/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qcolor/qcolor.pro (renamed from tests/auto/qcolor/qcolor.pro)0
-rw-r--r--tests/auto/gui/painting/qcolor/tst_qcolor.cpp (renamed from tests/auto/qcolor/tst_qcolor.cpp)0
-rw-r--r--tests/auto/gui/painting/qpaintengine/.gitignore (renamed from tests/auto/qpaintengine/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qpaintengine/qpaintengine.pro (renamed from tests/auto/qpaintengine/qpaintengine.pro)0
-rw-r--r--tests/auto/gui/painting/qpaintengine/tst_qpaintengine.cpp (renamed from tests/auto/qpaintengine/tst_qpaintengine.cpp)0
-rw-r--r--tests/auto/gui/painting/qpainter/.gitignore (renamed from tests/auto/qpainter/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawEllipse/10x10SizeAt0x0.png (renamed from tests/auto/qpainter/drawEllipse/10x10SizeAt0x0.png)bin243 -> 243 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawEllipse/10x10SizeAt100x100.png (renamed from tests/auto/qpainter/drawEllipse/10x10SizeAt100x100.png)bin245 -> 245 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawEllipse/10x10SizeAt200x200.png (renamed from tests/auto/qpainter/drawEllipse/10x10SizeAt200x200.png)bin195 -> 195 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawEllipse/13x100SizeAt0x0.png (renamed from tests/auto/qpainter/drawEllipse/13x100SizeAt0x0.png)bin461 -> 461 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawEllipse/13x100SizeAt100x100.png (renamed from tests/auto/qpainter/drawEllipse/13x100SizeAt100x100.png)bin470 -> 470 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawEllipse/13x100SizeAt200x200.png (renamed from tests/auto/qpainter/drawEllipse/13x100SizeAt200x200.png)bin195 -> 195 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawEllipse/200x200SizeAt0x0.png (renamed from tests/auto/qpainter/drawEllipse/200x200SizeAt0x0.png)bin1294 -> 1294 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawEllipse/200x200SizeAt100x100.png (renamed from tests/auto/qpainter/drawEllipse/200x200SizeAt100x100.png)bin619 -> 619 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawEllipse/200x200SizeAt200x200.png (renamed from tests/auto/qpainter/drawEllipse/200x200SizeAt200x200.png)bin195 -> 195 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/dst.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/dst.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_AndNotROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_AndNotROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_AndROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_AndROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_ClearROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_ClearROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_CopyROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_CopyROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NandROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_NandROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NopROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_NopROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NorROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_NorROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotAndROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotAndROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotCopyROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotCopyROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotOrROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotOrROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotXorROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotXorROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_OrNotROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_OrNotROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_OrROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_OrROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_SetROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_SetROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_XorROP.xbm (renamed from tests/auto/qpainter/drawLine_rop_bitmap/res/res_XorROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/dst1.png (renamed from tests/auto/qpainter/drawPixmap_rop/dst1.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/dst2.png (renamed from tests/auto/qpainter/drawPixmap_rop/dst2.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/dst3.png (renamed from tests/auto/qpainter/drawPixmap_rop/dst3.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP0.png)bin214 -> 214 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP1.png)bin247 -> 247 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP2.png)bin258 -> 258 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP3.png)bin253 -> 253 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP4.png)bin237 -> 237 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP5.png)bin260 -> 260 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP6.png)bin258 -> 258 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP7.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndROP0.png)bin173 -> 173 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndROP1.png)bin203 -> 203 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndROP2.png)bin217 -> 217 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndROP3.png)bin207 -> 207 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndROP4.png)bin196 -> 196 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndROP5.png)bin213 -> 213 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndROP6.png)bin218 -> 218 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_AndROP7.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP0.png)bin155 -> 155 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP1.png)bin155 -> 155 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP2.png)bin155 -> 155 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP3.png)bin155 -> 155 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP4.png)bin155 -> 155 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP5.png)bin155 -> 155 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP6.png)bin155 -> 155 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP7.png)bin155 -> 155 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP0.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP1.png)bin176 -> 176 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP2.png)bin175 -> 175 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP3.png)bin177 -> 177 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP4.png)bin176 -> 176 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP5.png)bin176 -> 176 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP6.png)bin176 -> 176 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP7.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NandROP0.png)bin217 -> 217 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NandROP1.png)bin242 -> 242 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NandROP2.png)bin249 -> 249 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NandROP3.png)bin244 -> 244 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NandROP4.png)bin234 -> 234 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NandROP5.png)bin254 -> 254 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NandROP6.png)bin251 -> 251 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NandROP7.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NopROP0.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NopROP1.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NopROP2.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NopROP3.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NopROP4.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NopROP5.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NopROP6.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NopROP7.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NorROP0.png)bin211 -> 211 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NorROP1.png)bin208 -> 208 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NorROP2.png)bin215 -> 215 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NorROP3.png)bin187 -> 187 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NorROP4.png)bin213 -> 213 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NorROP5.png)bin204 -> 204 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NorROP6.png)bin198 -> 198 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NorROP7.png)bin155 -> 155 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP0.png)bin177 -> 177 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP1.png)bin198 -> 198 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP2.png)bin195 -> 195 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP3.png)bin185 -> 185 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP4.png)bin188 -> 188 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP5.png)bin198 -> 198 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP6.png)bin185 -> 185 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP7.png)bin155 -> 155 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP0.png)bin168 -> 168 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP1.png)bin167 -> 167 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP2.png)bin167 -> 167 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP3.png)bin167 -> 167 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP4.png)bin167 -> 167 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP5.png)bin167 -> 167 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP6.png)bin167 -> 167 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP7.png)bin155 -> 155 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP0.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP1.png)bin224 -> 224 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP2.png)bin229 -> 229 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP3.png)bin224 -> 224 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP4.png)bin198 -> 198 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP5.png)bin229 -> 229 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP6.png)bin227 -> 227 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP7.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotROP0.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotROP1.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotROP2.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotROP3.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotROP4.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotROP5.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotROP6.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotROP7.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP0.png)bin239 -> 239 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP1.png)bin237 -> 237 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP2.png)bin243 -> 243 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP3.png)bin226 -> 226 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP4.png)bin235 -> 235 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP5.png)bin230 -> 230 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP6.png)bin232 -> 232 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP7.png)bin184 -> 184 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP0.png)bin217 -> 217 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP1.png)bin213 -> 213 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP2.png)bin222 -> 222 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP3.png)bin194 -> 194 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP4.png)bin219 -> 219 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP5.png)bin215 -> 215 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP6.png)bin212 -> 212 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP7.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrROP0.png)bin186 -> 186 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrROP1.png)bin212 -> 212 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrROP2.png)bin216 -> 216 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrROP3.png)bin194 -> 194 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrROP4.png)bin207 -> 207 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrROP5.png)bin214 -> 214 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrROP6.png)bin208 -> 208 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_OrROP7.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_SetROP0.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_SetROP1.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_SetROP2.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_SetROP3.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_SetROP4.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_SetROP5.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_SetROP6.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_SetROP7.png)bin169 -> 169 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP0.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_XorROP0.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP1.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_XorROP1.png)bin255 -> 255 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP2.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_XorROP2.png)bin260 -> 260 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP3.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_XorROP3.png)bin251 -> 251 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP4.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_XorROP4.png)bin251 -> 251 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP5.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_XorROP5.png)bin261 -> 261 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP6.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_XorROP6.png)bin264 -> 264 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP7.png (renamed from tests/auto/qpainter/drawPixmap_rop/res/res_XorROP7.png)bin228 -> 228 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/src1.xbm (renamed from tests/auto/qpainter/drawPixmap_rop/src1.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/src2-mask.xbm (renamed from tests/auto/qpainter/drawPixmap_rop/src2-mask.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/src2.xbm (renamed from tests/auto/qpainter/drawPixmap_rop/src2.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop/src3.xbm (renamed from tests/auto/qpainter/drawPixmap_rop/src3.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/dst.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/dst.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_AndNotROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_AndNotROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_AndROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_AndROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_ClearROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_ClearROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_CopyROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_CopyROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NandROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NandROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NopROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NopROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NorROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NorROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotAndROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotAndROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotCopyROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotCopyROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotOrROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotOrROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotXorROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotXorROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_OrNotROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_OrNotROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_OrROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_OrROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_SetROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_SetROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_XorROP.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_XorROP.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/src1-mask.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/src1-mask.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/src1.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/src1.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/src2.xbm (renamed from tests/auto/qpainter/drawPixmap_rop_bitmap/src2.xbm)0
-rw-r--r--tests/auto/gui/painting/qpainter/qpainter.pro20
-rw-r--r--tests/auto/gui/painting/qpainter/task217400.png (renamed from tests/auto/qpainter/task217400.png)bin526 -> 526 bytes
-rw-r--r--tests/auto/gui/painting/qpainter/tst_qpainter.cpp4697
-rw-r--r--tests/auto/gui/painting/qpainter/utils/createImages/createImages.pro (renamed from tests/auto/qpainter/utils/createImages/createImages.pro)0
-rw-r--r--tests/auto/gui/painting/qpainter/utils/createImages/main.cpp (renamed from tests/auto/qpainter/utils/createImages/main.cpp)0
-rw-r--r--tests/auto/gui/painting/qpainterpath/.gitignore (renamed from tests/auto/qpainterpath/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qpainterpath/qpainterpath.pro (renamed from tests/auto/qpainterpath/qpainterpath.pro)0
-rw-r--r--tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp (renamed from tests/auto/qpainterpath/tst_qpainterpath.cpp)0
-rw-r--r--tests/auto/gui/painting/qpainterpathstroker/.gitignore (renamed from tests/auto/qpainterpathstroker/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qpainterpathstroker/qpainterpathstroker.pro (renamed from tests/auto/qpainterpathstroker/qpainterpathstroker.pro)0
-rw-r--r--tests/auto/gui/painting/qpainterpathstroker/tst_qpainterpathstroker.cpp (renamed from tests/auto/qpainterpathstroker/tst_qpainterpathstroker.cpp)0
-rw-r--r--tests/auto/gui/painting/qpathclipper/.gitignore (renamed from tests/auto/qpathclipper/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qpathclipper/pathcompare.h (renamed from tests/auto/qpathclipper/pathcompare.h)0
-rw-r--r--tests/auto/gui/painting/qpathclipper/paths.cpp (renamed from tests/auto/qpathclipper/paths.cpp)0
-rw-r--r--tests/auto/gui/painting/qpathclipper/paths.h (renamed from tests/auto/qpathclipper/paths.h)0
-rw-r--r--tests/auto/gui/painting/qpathclipper/qpathclipper.pro11
-rw-r--r--tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp (renamed from tests/auto/qpathclipper/tst_qpathclipper.cpp)0
-rw-r--r--tests/auto/gui/painting/qpen/.gitignore (renamed from tests/auto/qpen/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qpen/qpen.pro (renamed from tests/auto/qpen/qpen.pro)0
-rw-r--r--tests/auto/gui/painting/qpen/tst_qpen.cpp (renamed from tests/auto/qpen/tst_qpen.cpp)0
-rw-r--r--tests/auto/gui/painting/qpolygon/.gitignore (renamed from tests/auto/qpolygon/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qpolygon/qpolygon.pro7
-rw-r--r--tests/auto/gui/painting/qpolygon/tst_qpolygon.cpp (renamed from tests/auto/qpolygon/tst_qpolygon.cpp)0
-rw-r--r--tests/auto/gui/painting/qprinter/.gitignore (renamed from tests/auto/qprinter/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qprinter/qprinter.pro6
-rw-r--r--tests/auto/gui/painting/qprinter/tst_qprinter.cpp1044
-rw-r--r--tests/auto/gui/painting/qprinterinfo/.gitignore (renamed from tests/auto/qprinterinfo/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qprinterinfo/qprinterinfo.pro8
-rw-r--r--tests/auto/gui/painting/qprinterinfo/tst_qprinterinfo.cpp (renamed from tests/auto/qprinterinfo/tst_qprinterinfo.cpp)0
-rw-r--r--tests/auto/gui/painting/qregion/.gitignore (renamed from tests/auto/qregion/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qregion/qregion.pro (renamed from tests/auto/qregion/qregion.pro)0
-rw-r--r--tests/auto/gui/painting/qregion/tst_qregion.cpp1012
-rw-r--r--tests/auto/gui/painting/qtransform/.gitignore (renamed from tests/auto/qtransform/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qtransform/qtransform.pro (renamed from tests/auto/qtransform/qtransform.pro)0
-rw-r--r--tests/auto/gui/painting/qtransform/tst_qtransform.cpp807
-rw-r--r--tests/auto/gui/painting/qwmatrix/.gitignore (renamed from tests/auto/qwmatrix/.gitignore)0
-rw-r--r--tests/auto/gui/painting/qwmatrix/qwmatrix.pro (renamed from tests/auto/qwmatrix/qwmatrix.pro)0
-rw-r--r--tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp (renamed from tests/auto/qwmatrix/tst_qwmatrix.cpp)0
-rw-r--r--tests/auto/gui/text/qabstracttextdocumentlayout/.gitignore (renamed from tests/auto/qabstracttextdocumentlayout/.gitignore)0
-rw-r--r--tests/auto/gui/text/qabstracttextdocumentlayout/qabstracttextdocumentlayout.pro9
-rw-r--r--tests/auto/gui/text/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp (renamed from tests/auto/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp)0
-rw-r--r--tests/auto/gui/text/qcssparser/.gitignore (renamed from tests/auto/qcssparser/.gitignore)0
-rw-r--r--tests/auto/gui/text/qcssparser/qcssparser.pro (renamed from tests/auto/qcssparser/qcssparser.pro)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/comments/input (renamed from tests/auto/qcssparser/testdata/scanner/comments/input)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/comments/output (renamed from tests/auto/qcssparser/testdata/scanner/comments/output)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/comments2/input (renamed from tests/auto/qcssparser/testdata/scanner/comments2/input)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/comments2/output (renamed from tests/auto/qcssparser/testdata/scanner/comments2/output)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/comments3/input (renamed from tests/auto/qcssparser/testdata/scanner/comments3/input)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/comments3/output (renamed from tests/auto/qcssparser/testdata/scanner/comments3/output)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/comments4/input (renamed from tests/auto/qcssparser/testdata/scanner/comments4/input)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/comments4/output (renamed from tests/auto/qcssparser/testdata/scanner/comments4/output)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/quotedstring/input (renamed from tests/auto/qcssparser/testdata/scanner/quotedstring/input)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/quotedstring/output (renamed from tests/auto/qcssparser/testdata/scanner/quotedstring/output)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/simple/input (renamed from tests/auto/qcssparser/testdata/scanner/simple/input)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/simple/output (renamed from tests/auto/qcssparser/testdata/scanner/simple/output)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/unicode/input (renamed from tests/auto/qcssparser/testdata/scanner/unicode/input)0
-rw-r--r--tests/auto/gui/text/qcssparser/testdata/scanner/unicode/output (renamed from tests/auto/qcssparser/testdata/scanner/unicode/output)0
-rw-r--r--tests/auto/gui/text/qcssparser/tst_qcssparser.cpp (renamed from tests/auto/qcssparser/tst_qcssparser.cpp)0
-rw-r--r--tests/auto/gui/text/qfont/.gitignore (renamed from tests/auto/qfont/.gitignore)0
-rw-r--r--tests/auto/gui/text/qfont/qfont.pro5
-rw-r--r--tests/auto/gui/text/qfont/tst_qfont.cpp (renamed from tests/auto/qfont/tst_qfont.cpp)0
-rw-r--r--tests/auto/gui/text/qfontdatabase/.gitignore (renamed from tests/auto/qfontdatabase/.gitignore)0
-rw-r--r--tests/auto/gui/text/qfontdatabase/FreeMono.ttf (renamed from tests/auto/qfontdatabase/FreeMono.ttf)bin267400 -> 267400 bytes
-rw-r--r--tests/auto/gui/text/qfontdatabase/qfontdatabase.pro (renamed from tests/auto/qfontdatabase/qfontdatabase.pro)0
-rw-r--r--tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp (renamed from tests/auto/qfontdatabase/tst_qfontdatabase.cpp)0
-rw-r--r--tests/auto/gui/text/qfontmetrics/.gitignore (renamed from tests/auto/qfontmetrics/.gitignore)0
-rw-r--r--tests/auto/gui/text/qfontmetrics/qfontmetrics.pro (renamed from tests/auto/qfontmetrics/qfontmetrics.pro)0
-rw-r--r--tests/auto/gui/text/qfontmetrics/testfont.qrc (renamed from tests/auto/qfontmetrics/testfont.qrc)0
-rw-r--r--tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp (renamed from tests/auto/qfontmetrics/tst_qfontmetrics.cpp)0
-rw-r--r--tests/auto/gui/text/qfontmetrics/ucs4font.ttf (renamed from tests/auto/qfontmetrics/ucs4font.ttf)bin3076 -> 3076 bytes
-rw-r--r--tests/auto/gui/text/qglyphrun/qglyphrun.pro (renamed from tests/auto/qglyphrun/qglyphrun.pro)0
-rw-r--r--tests/auto/gui/text/qglyphrun/test.ttf (renamed from tests/auto/qglyphrun/test.ttf)bin3712 -> 3712 bytes
-rw-r--r--tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp (renamed from tests/auto/qglyphrun/tst_qglyphrun.cpp)0
-rw-r--r--tests/auto/gui/text/qrawfont/qrawfont.pro16
-rw-r--r--tests/auto/gui/text/qrawfont/testfont.ttf (renamed from tests/auto/qrawfont/testfont.ttf)bin63212 -> 63212 bytes
-rw-r--r--tests/auto/gui/text/qrawfont/testfont_bold_italic.ttf (renamed from tests/auto/qrawfont/testfont_bold_italic.ttf)bin49760 -> 49760 bytes
-rw-r--r--tests/auto/gui/text/qrawfont/tst_qrawfont.cpp (renamed from tests/auto/qrawfont/tst_qrawfont.cpp)0
-rw-r--r--tests/auto/gui/text/qstatictext/qstatictext.pro6
-rw-r--r--tests/auto/gui/text/qstatictext/tst_qstatictext.cpp870
-rw-r--r--tests/auto/gui/text/qsyntaxhighlighter/.gitignore (renamed from tests/auto/qsyntaxhighlighter/.gitignore)0
-rw-r--r--tests/auto/gui/text/qsyntaxhighlighter/qsyntaxhighlighter.pro (renamed from tests/auto/qsyntaxhighlighter/qsyntaxhighlighter.pro)0
-rw-r--r--tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp (renamed from tests/auto/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp)0
-rw-r--r--tests/auto/gui/text/qtextblock/.gitignore (renamed from tests/auto/qtextblock/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextblock/qtextblock.pro9
-rw-r--r--tests/auto/gui/text/qtextblock/tst_qtextblock.cpp197
-rw-r--r--tests/auto/gui/text/qtextcursor/.gitignore (renamed from tests/auto/qtextcursor/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextcursor/qtextcursor.pro (renamed from tests/auto/qtextcursor/qtextcursor.pro)0
-rw-r--r--tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp (renamed from tests/auto/qtextcursor/tst_qtextcursor.cpp)0
-rw-r--r--tests/auto/gui/text/qtextdocument/.gitignore (renamed from tests/auto/qtextdocument/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextdocument/common.h (renamed from tests/auto/qtextdocument/common.h)0
-rw-r--r--tests/auto/gui/text/qtextdocument/qtextdocument.pro (renamed from tests/auto/qtextdocument/qtextdocument.pro)0
-rw-r--r--tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp (renamed from tests/auto/qtextdocument/tst_qtextdocument.cpp)0
-rw-r--r--tests/auto/gui/text/qtextdocumentfragment/.gitignore (renamed from tests/auto/qtextdocumentfragment/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextdocumentfragment/qtextdocumentfragment.pro (renamed from tests/auto/qtextdocumentfragment/qtextdocumentfragment.pro)0
-rw-r--r--tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp (renamed from tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp)0
-rw-r--r--tests/auto/gui/text/qtextdocumentlayout/.gitignore (renamed from tests/auto/qtextdocumentlayout/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextdocumentlayout/qtextdocumentlayout.pro5
-rw-r--r--tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp (renamed from tests/auto/qtextdocumentlayout/tst_qtextdocumentlayout.cpp)0
-rw-r--r--tests/auto/gui/text/qtextformat/.gitignore (renamed from tests/auto/qtextformat/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextformat/qtextformat.pro (renamed from tests/auto/qtextformat/qtextformat.pro)0
-rw-r--r--tests/auto/gui/text/qtextformat/tst_qtextformat.cpp (renamed from tests/auto/qtextformat/tst_qtextformat.cpp)0
-rw-r--r--tests/auto/gui/text/qtextlayout/.gitignore (renamed from tests/auto/qtextlayout/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextlayout/qtextlayout.pro (renamed from tests/auto/qtextlayout/qtextlayout.pro)0
-rw-r--r--tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp (renamed from tests/auto/qtextlayout/tst_qtextlayout.cpp)0
-rw-r--r--tests/auto/gui/text/qtextlist/.gitignore (renamed from tests/auto/qtextlist/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextlist/qtextlist.pro (renamed from tests/auto/qtextlist/qtextlist.pro)0
-rw-r--r--tests/auto/gui/text/qtextlist/tst_qtextlist.cpp (renamed from tests/auto/qtextlist/tst_qtextlist.cpp)0
-rw-r--r--tests/auto/gui/text/qtextobject/.gitignore (renamed from tests/auto/qtextobject/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextobject/qtextobject.pro9
-rw-r--r--tests/auto/gui/text/qtextobject/tst_qtextobject.cpp (renamed from tests/auto/qtextobject/tst_qtextobject.cpp)0
-rw-r--r--tests/auto/gui/text/qtextodfwriter/.gitignore (renamed from tests/auto/qtextodfwriter/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextodfwriter/qtextodfwriter.pro6
-rw-r--r--tests/auto/gui/text/qtextodfwriter/tst_qtextodfwriter.cpp (renamed from tests/auto/qtextodfwriter/tst_qtextodfwriter.cpp)0
-rw-r--r--tests/auto/gui/text/qtextpiecetable/.gitignore (renamed from tests/auto/qtextpiecetable/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextpiecetable/qtextpiecetable.pro9
-rw-r--r--tests/auto/gui/text/qtextpiecetable/tst_qtextpiecetable.cpp1155
-rw-r--r--tests/auto/gui/text/qtextscriptengine/.gitignore (renamed from tests/auto/qtextscriptengine/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtextscriptengine/generate/generate.pro (renamed from tests/auto/qtextscriptengine/generate/generate.pro)0
-rw-r--r--tests/auto/gui/text/qtextscriptengine/generate/main.cpp (renamed from tests/auto/qtextscriptengine/generate/main.cpp)0
-rw-r--r--tests/auto/gui/text/qtextscriptengine/qtextscriptengine.pro (renamed from tests/auto/qtextscriptengine/qtextscriptengine.pro)0
-rw-r--r--tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp (renamed from tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp)0
-rw-r--r--tests/auto/gui/text/qtexttable/.gitignore (renamed from tests/auto/qtexttable/.gitignore)0
-rw-r--r--tests/auto/gui/text/qtexttable/qtexttable.pro6
-rw-r--r--tests/auto/gui/text/qtexttable/tst_qtexttable.cpp (renamed from tests/auto/qtexttable/tst_qtexttable.cpp)0
-rw-r--r--tests/auto/gui/text/qzip/.gitignore (renamed from tests/auto/qzip/.gitignore)0
-rw-r--r--tests/auto/gui/text/qzip/qzip.pro12
-rw-r--r--tests/auto/gui/text/qzip/testdata/symlink.zip (renamed from tests/auto/qzip/testdata/symlink.zip)bin289 -> 289 bytes
-rw-r--r--tests/auto/gui/text/qzip/testdata/test.zip (renamed from tests/auto/qzip/testdata/test.zip)bin286 -> 286 bytes
-rw-r--r--tests/auto/gui/text/qzip/tst_qzip.cpp (renamed from tests/auto/qzip/tst_qzip.cpp)0
-rw-r--r--tests/auto/gui/text/text.pro33
-rw-r--r--tests/auto/gui/util/qdesktopservices/.gitignore (renamed from tests/auto/qdesktopservices/.gitignore)0
-rw-r--r--tests/auto/gui/util/qdesktopservices/qdesktopservices.pro30
-rw-r--r--tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp (renamed from tests/auto/qdesktopservices/tst_qdesktopservices.cpp)0
-rw-r--r--tests/auto/gui/util/util.pro4
-rw-r--r--tests/auto/headersclean/headersclean.pro9
-rw-r--r--tests/auto/headersclean/tst_headersclean.cpp79
-rw-r--r--tests/auto/host.pro8
-rw-r--r--tests/auto/lancelot/lancelot.pro4
-rw-r--r--tests/auto/lancelot/tst_lancelot.cpp2
-rw-r--r--tests/auto/languagechange/languagechange.pro3
-rw-r--r--tests/auto/languagechange/tst_languagechange.cpp8
-rw-r--r--tests/auto/macgui/macgui.pro2
-rw-r--r--tests/auto/macnativeevents/macnativeevents.pro2
-rw-r--r--tests/auto/maketestselftest/test/test.pro18
-rw-r--r--tests/auto/maketestselftest/tst_maketestselftest.cpp587
-rw-r--r--tests/auto/moc/moc.pro28
-rw-r--r--tests/auto/modeltest/modeltest.pro1
-rw-r--r--tests/auto/nativeimagehandleprovider/nativeimagehandleprovider.pro9
-rw-r--r--tests/auto/nativeimagehandleprovider/tst_nativeimagehandleprovider.cpp237
-rw-r--r--tests/auto/network.pro55
-rw-r--r--tests/auto/network/access/access.pro20
-rw-r--r--tests/auto/network/access/qabstractnetworkcache/.gitignore (renamed from tests/auto/qabstractnetworkcache/.gitignore)0
-rw-r--r--tests/auto/network/access/qabstractnetworkcache/qabstractnetworkcache.pro (renamed from tests/auto/qabstractnetworkcache/qabstractnetworkcache.pro)0
-rwxr-xr-xtests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_cachecontrol-expire.cgi (renamed from tests/auto/qabstractnetworkcache/tests/httpcachetest_cachecontrol-expire.cgi)0
-rwxr-xr-xtests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_cachecontrol.cgi (renamed from tests/auto/qabstractnetworkcache/tests/httpcachetest_cachecontrol.cgi)0
-rwxr-xr-xtests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_cachecontrol200.cgi (renamed from tests/auto/qabstractnetworkcache/tests/httpcachetest_cachecontrol200.cgi)0
-rwxr-xr-xtests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_etag200.cgi (renamed from tests/auto/qabstractnetworkcache/tests/httpcachetest_etag200.cgi)0
-rwxr-xr-xtests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_etag304.cgi (renamed from tests/auto/qabstractnetworkcache/tests/httpcachetest_etag304.cgi)0
-rwxr-xr-xtests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_expires200.cgi (renamed from tests/auto/qabstractnetworkcache/tests/httpcachetest_expires200.cgi)0
-rwxr-xr-xtests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_expires304.cgi (renamed from tests/auto/qabstractnetworkcache/tests/httpcachetest_expires304.cgi)0
-rwxr-xr-xtests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_expires500.cgi (renamed from tests/auto/qabstractnetworkcache/tests/httpcachetest_expires500.cgi)0
-rwxr-xr-xtests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_lastModified200.cgi (renamed from tests/auto/qabstractnetworkcache/tests/httpcachetest_lastModified200.cgi)0
-rwxr-xr-xtests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_lastModified304.cgi (renamed from tests/auto/qabstractnetworkcache/tests/httpcachetest_lastModified304.cgi)0
-rw-r--r--tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp416
-rw-r--r--tests/auto/network/access/qftp/.gitattributes (renamed from tests/auto/qftp/.gitattributes)0
-rw-r--r--tests/auto/network/access/qftp/.gitignore (renamed from tests/auto/qftp/.gitignore)0
-rw-r--r--tests/auto/network/access/qftp/qftp.pro (renamed from tests/auto/qftp/qftp.pro)0
-rw-r--r--tests/auto/network/access/qftp/rfc3252.txt (renamed from tests/auto/qftp/rfc3252.txt)0
-rw-r--r--tests/auto/network/access/qftp/tst_qftp.cpp2170
-rw-r--r--tests/auto/network/access/qhttp/.gitattributes (renamed from tests/auto/qhttp/.gitattributes)0
-rw-r--r--tests/auto/network/access/qhttp/.gitignore (renamed from tests/auto/qhttp/.gitignore)0
-rw-r--r--tests/auto/network/access/qhttp/dummyserver.h (renamed from tests/auto/qhttp/dummyserver.h)0
-rw-r--r--tests/auto/network/access/qhttp/qhttp.pro (renamed from tests/auto/qhttp/qhttp.pro)0
-rw-r--r--tests/auto/network/access/qhttp/rfc3252.txt (renamed from tests/auto/qhttp/rfc3252.txt)0
-rw-r--r--tests/auto/network/access/qhttp/trolltech (renamed from tests/auto/qhttp/trolltech)0
-rw-r--r--tests/auto/network/access/qhttp/tst_qhttp.cpp1576
-rwxr-xr-xtests/auto/network/access/qhttp/webserver/cgi-bin/retrieve_testfile.cgi (renamed from tests/auto/qhttp/webserver/cgi-bin/retrieve_testfile.cgi)0
-rwxr-xr-xtests/auto/network/access/qhttp/webserver/cgi-bin/rfc.cgi (renamed from tests/auto/qhttp/webserver/cgi-bin/rfc.cgi)0
-rwxr-xr-xtests/auto/network/access/qhttp/webserver/cgi-bin/store_testfile.cgi (renamed from tests/auto/qhttp/webserver/cgi-bin/store_testfile.cgi)0
-rw-r--r--tests/auto/network/access/qhttp/webserver/index.html (renamed from tests/auto/qhttp/webserver/index.html)0
-rw-r--r--tests/auto/network/access/qhttp/webserver/rfc3252 (renamed from tests/auto/qhttp/webserver/rfc3252)0
-rw-r--r--tests/auto/network/access/qhttp/webserver/rfc3252.txt (renamed from tests/auto/qhttp/webserver/rfc3252.txt)0
-rw-r--r--tests/auto/network/access/qhttpnetworkconnection/.gitignore (renamed from tests/auto/qhttpnetworkconnection/.gitignore)0
-rw-r--r--tests/auto/network/access/qhttpnetworkconnection/qhttpnetworkconnection.pro (renamed from tests/auto/qhttpnetworkconnection/qhttpnetworkconnection.pro)0
-rw-r--r--tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp1131
-rw-r--r--tests/auto/network/access/qhttpnetworkreply/.gitignore (renamed from tests/auto/qhttpnetworkreply/.gitignore)0
-rw-r--r--tests/auto/network/access/qhttpnetworkreply/qhttpnetworkreply.pro (renamed from tests/auto/qhttpnetworkreply/qhttpnetworkreply.pro)0
-rw-r--r--tests/auto/network/access/qhttpnetworkreply/tst_qhttpnetworkreply.cpp (renamed from tests/auto/qhttpnetworkreply/tst_qhttpnetworkreply.cpp)0
-rw-r--r--tests/auto/network/access/qnetworkaccessmanager/qnetworkaccessmanager.pro (renamed from tests/auto/qnetworkaccessmanager/qnetworkaccessmanager.pro)0
-rw-r--r--tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp (renamed from tests/auto/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp)0
-rw-r--r--tests/auto/network/access/qnetworkcachemetadata/.gitignore (renamed from tests/auto/qnetworkcachemetadata/.gitignore)0
-rw-r--r--tests/auto/network/access/qnetworkcachemetadata/qnetworkcachemetadata.pro (renamed from tests/auto/qnetworkcachemetadata/qnetworkcachemetadata.pro)0
-rw-r--r--tests/auto/network/access/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp (renamed from tests/auto/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp)0
-rw-r--r--tests/auto/network/access/qnetworkcookie/.gitignore (renamed from tests/auto/qnetworkcookie/.gitignore)0
-rw-r--r--tests/auto/network/access/qnetworkcookie/qnetworkcookie.pro (renamed from tests/auto/qnetworkcookie/qnetworkcookie.pro)0
-rw-r--r--tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp (renamed from tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp)0
-rw-r--r--tests/auto/network/access/qnetworkcookiejar/.gitignore (renamed from tests/auto/qnetworkcookiejar/.gitignore)0
-rw-r--r--tests/auto/network/access/qnetworkcookiejar/qnetworkcookiejar.pro (renamed from tests/auto/qnetworkcookiejar/qnetworkcookiejar.pro)0
-rw-r--r--tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp (renamed from tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp)0
-rw-r--r--tests/auto/network/access/qnetworkdiskcache/.gitignore (renamed from tests/auto/qnetworkdiskcache/.gitignore)0
-rw-r--r--tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro (renamed from tests/auto/qnetworkdiskcache/qnetworkdiskcache.pro)0
-rw-r--r--tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp677
-rw-r--r--tests/auto/network/access/qnetworkreply/.gitattributes (renamed from tests/auto/qnetworkreply/.gitattributes)0
-rw-r--r--tests/auto/network/access/qnetworkreply/.gitignore (renamed from tests/auto/qnetworkreply/.gitignore)0
-rw-r--r--tests/auto/network/access/qnetworkreply/bigfile (renamed from tests/auto/qnetworkreply/bigfile)0
-rw-r--r--tests/auto/network/access/qnetworkreply/certs/aspiriniks.ca.crt (renamed from tests/auto/qnetworkreply/certs/aspiriniks.ca.crt)0
-rw-r--r--tests/auto/network/access/qnetworkreply/certs/fluke.cert (renamed from tests/auto/qnetworkreply/certs/fluke.cert)0
-rw-r--r--tests/auto/network/access/qnetworkreply/certs/fluke.key (renamed from tests/auto/qnetworkreply/certs/fluke.key)0
-rw-r--r--tests/auto/network/access/qnetworkreply/certs/qt-test-server-cacert.pem (renamed from tests/auto/qnetworkreply/certs/qt-test-server-cacert.pem)0
-rw-r--r--tests/auto/network/access/qnetworkreply/certs/server.key (renamed from tests/auto/qnetworkreply/certs/server.key)0
-rw-r--r--tests/auto/network/access/qnetworkreply/certs/server.pem (renamed from tests/auto/qnetworkreply/certs/server.pem)0
-rw-r--r--tests/auto/network/access/qnetworkreply/echo/echo.pro (renamed from tests/auto/qnetworkreply/echo/echo.pro)0
-rw-r--r--tests/auto/network/access/qnetworkreply/echo/main.cpp (renamed from tests/auto/qnetworkreply/echo/main.cpp)0
-rw-r--r--tests/auto/network/access/qnetworkreply/empty (renamed from tests/auto/qnetworkreply/empty)0
-rw-r--r--tests/auto/network/access/qnetworkreply/image1.jpg (renamed from tests/auto/qnetworkreply/image1.jpg)bin1045459 -> 1045459 bytes
-rw-r--r--tests/auto/network/access/qnetworkreply/image2.jpg (renamed from tests/auto/qnetworkreply/image2.jpg)bin879218 -> 879218 bytes
-rw-r--r--tests/auto/network/access/qnetworkreply/image3.jpg (renamed from tests/auto/qnetworkreply/image3.jpg)bin887729 -> 887729 bytes
-rw-r--r--tests/auto/network/access/qnetworkreply/qnetworkreply.pro (renamed from tests/auto/qnetworkreply/qnetworkreply.pro)0
-rw-r--r--tests/auto/network/access/qnetworkreply/qnetworkreply.qrc (renamed from tests/auto/qnetworkreply/qnetworkreply.qrc)0
-rw-r--r--tests/auto/network/access/qnetworkreply/resource (renamed from tests/auto/qnetworkreply/resource)0
-rw-r--r--tests/auto/network/access/qnetworkreply/rfc3252.txt (renamed from tests/auto/qnetworkreply/rfc3252.txt)0
-rw-r--r--tests/auto/network/access/qnetworkreply/smb-file.txt (renamed from tests/auto/qnetworkreply/smb-file.txt)0
-rw-r--r--tests/auto/network/access/qnetworkreply/test/test.pro (renamed from tests/auto/qnetworkreply/test/test.pro)0
-rw-r--r--tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp6342
-rw-r--r--tests/auto/network/access/qnetworkrequest/.gitignore (renamed from tests/auto/qnetworkrequest/.gitignore)0
-rw-r--r--tests/auto/network/access/qnetworkrequest/qnetworkrequest.pro (renamed from tests/auto/qnetworkrequest/qnetworkrequest.pro)0
-rw-r--r--tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp (renamed from tests/auto/qnetworkrequest/tst_qnetworkrequest.cpp)0
-rw-r--r--tests/auto/network/bearer/bearer.pro6
-rw-r--r--tests/auto/network/bearer/qbearertestcommon.h (renamed from tests/auto/qbearertestcommon.h)0
-rw-r--r--tests/auto/network/bearer/qnetworkconfiguration/qnetworkconfiguration.pro (renamed from tests/auto/qnetworkconfiguration/qnetworkconfiguration.pro)0
-rw-r--r--tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp (renamed from tests/auto/qnetworkconfiguration/tst_qnetworkconfiguration.cpp)0
-rw-r--r--tests/auto/network/bearer/qnetworkconfigurationmanager/qnetworkconfigurationmanager.pro (renamed from tests/auto/qnetworkconfigurationmanager/qnetworkconfigurationmanager.pro)0
-rw-r--r--tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp (renamed from tests/auto/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp)0
-rw-r--r--tests/auto/network/bearer/qnetworksession/lackey/lackey.pro (renamed from tests/auto/qnetworksession/lackey/lackey.pro)0
-rw-r--r--tests/auto/network/bearer/qnetworksession/lackey/main.cpp (renamed from tests/auto/qnetworksession/lackey/main.cpp)0
-rw-r--r--tests/auto/network/bearer/qnetworksession/qnetworksession.pro (renamed from tests/auto/qnetworksession/qnetworksession.pro)0
-rw-r--r--tests/auto/network/bearer/qnetworksession/test/test.pro28
-rw-r--r--tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp (renamed from tests/auto/qnetworksession/test/tst_qnetworksession.cpp)0
-rw-r--r--tests/auto/network/kernel/kernel.pro14
-rw-r--r--tests/auto/network/kernel/qauthenticator/qauthenticator.pro (renamed from tests/auto/qauthenticator/qauthenticator.pro)0
-rw-r--r--tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp (renamed from tests/auto/qauthenticator/tst_qauthenticator.cpp)0
-rw-r--r--tests/auto/network/kernel/qhostaddress/.gitignore (renamed from tests/auto/qhostaddress/.gitignore)0
-rw-r--r--tests/auto/network/kernel/qhostaddress/qhostaddress.pro (renamed from tests/auto/qhostaddress/qhostaddress.pro)0
-rw-r--r--tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp (renamed from tests/auto/qhostaddress/tst_qhostaddress.cpp)0
-rw-r--r--tests/auto/network/kernel/qhostinfo/.gitignore (renamed from tests/auto/qhostinfo/.gitignore)0
-rw-r--r--tests/auto/network/kernel/qhostinfo/qhostinfo.pro (renamed from tests/auto/qhostinfo/qhostinfo.pro)0
-rw-r--r--tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp665
-rw-r--r--tests/auto/network/kernel/qnetworkaddressentry/.gitignore (renamed from tests/auto/qnetworkaddressentry/.gitignore)0
-rw-r--r--tests/auto/network/kernel/qnetworkaddressentry/qnetworkaddressentry.pro (renamed from tests/auto/qnetworkaddressentry/qnetworkaddressentry.pro)0
-rw-r--r--tests/auto/network/kernel/qnetworkaddressentry/tst_qnetworkaddressentry.cpp (renamed from tests/auto/qnetworkaddressentry/tst_qnetworkaddressentry.cpp)0
-rw-r--r--tests/auto/network/kernel/qnetworkinterface/.gitignore (renamed from tests/auto/qnetworkinterface/.gitignore)0
-rw-r--r--tests/auto/network/kernel/qnetworkinterface/qnetworkinterface.pro (renamed from tests/auto/qnetworkinterface/qnetworkinterface.pro)0
-rw-r--r--tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp241
-rw-r--r--tests/auto/network/kernel/qnetworkproxy/.gitignore (renamed from tests/auto/qnetworkproxy/.gitignore)0
-rw-r--r--tests/auto/network/kernel/qnetworkproxy/qnetworkproxy.pro (renamed from tests/auto/qnetworkproxy/qnetworkproxy.pro)0
-rw-r--r--tests/auto/network/kernel/qnetworkproxy/tst_qnetworkproxy.cpp (renamed from tests/auto/qnetworkproxy/tst_qnetworkproxy.cpp)0
-rw-r--r--tests/auto/network/kernel/qnetworkproxyfactory/.gitignore (renamed from tests/auto/qnetworkproxyfactory/.gitignore)0
-rw-r--r--tests/auto/network/kernel/qnetworkproxyfactory/qnetworkproxyfactory.pro (renamed from tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro)0
-rw-r--r--tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp (renamed from tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp)0
-rw-r--r--tests/auto/network/network.pro8
-rw-r--r--tests/auto/network/socket/platformsocketengine/.gitignore (renamed from tests/auto/platformsocketengine/.gitignore)0
-rw-r--r--tests/auto/network/socket/platformsocketengine/platformsocketengine.pri (renamed from tests/auto/platformsocketengine/platformsocketengine.pri)0
-rw-r--r--tests/auto/network/socket/platformsocketengine/platformsocketengine.pro (renamed from tests/auto/platformsocketengine/platformsocketengine.pro)0
-rw-r--r--tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp763
-rw-r--r--tests/auto/network/socket/qabstractsocket/.gitignore (renamed from tests/auto/qabstractsocket/.gitignore)0
-rw-r--r--tests/auto/network/socket/qabstractsocket/qabstractsocket.pro (renamed from tests/auto/qabstractsocket/qabstractsocket.pro)0
-rw-r--r--tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp (renamed from tests/auto/qabstractsocket/tst_qabstractsocket.cpp)0
-rw-r--r--tests/auto/network/socket/qhttpsocketengine/.gitignore (renamed from tests/auto/qhttpsocketengine/.gitignore)0
-rw-r--r--tests/auto/network/socket/qhttpsocketengine/qhttpsocketengine.pro (renamed from tests/auto/qhttpsocketengine/qhttpsocketengine.pro)0
-rw-r--r--tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp748
-rw-r--r--tests/auto/network/socket/qlocalsocket/.gitignore (renamed from tests/auto/qlocalsocket/.gitignore)0
-rw-r--r--tests/auto/network/socket/qlocalsocket/example/client/client.pro (renamed from tests/auto/qlocalsocket/example/client/client.pro)0
-rw-r--r--tests/auto/network/socket/qlocalsocket/example/client/main.cpp (renamed from tests/auto/qlocalsocket/example/client/main.cpp)0
-rw-r--r--tests/auto/network/socket/qlocalsocket/example/example.pro (renamed from tests/auto/qlocalsocket/example/example.pro)0
-rw-r--r--tests/auto/network/socket/qlocalsocket/example/server/main.cpp (renamed from tests/auto/qlocalsocket/example/server/main.cpp)0
-rw-r--r--tests/auto/network/socket/qlocalsocket/example/server/server.pro (renamed from tests/auto/qlocalsocket/example/server/server.pro)0
-rw-r--r--tests/auto/network/socket/qlocalsocket/lackey/lackey.pro (renamed from tests/auto/qlocalsocket/lackey/lackey.pro)0
-rw-r--r--tests/auto/network/socket/qlocalsocket/lackey/main.cpp (renamed from tests/auto/qlocalsocket/lackey/main.cpp)0
-rwxr-xr-xtests/auto/network/socket/qlocalsocket/lackey/scripts/client.js (renamed from tests/auto/qlocalsocket/lackey/scripts/client.js)0
-rw-r--r--tests/auto/network/socket/qlocalsocket/lackey/scripts/server.js (renamed from tests/auto/qlocalsocket/lackey/scripts/server.js)0
-rw-r--r--tests/auto/network/socket/qlocalsocket/qlocalsocket.pro (renamed from tests/auto/qlocalsocket/qlocalsocket.pro)0
-rw-r--r--tests/auto/network/socket/qlocalsocket/test/test.pro (renamed from tests/auto/qlocalsocket/test/test.pro)0
-rw-r--r--tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp1120
-rw-r--r--tests/auto/network/socket/qsocks5socketengine/.gitignore (renamed from tests/auto/qsocks5socketengine/.gitignore)0
-rw-r--r--tests/auto/network/socket/qsocks5socketengine/qsocks5socketengine.pro (renamed from tests/auto/qsocks5socketengine/qsocks5socketengine.pro)0
-rw-r--r--tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp963
-rw-r--r--tests/auto/network/socket/qtcpserver/.gitignore (renamed from tests/auto/qtcpserver/.gitignore)0
-rw-r--r--tests/auto/network/socket/qtcpserver/crashingServer/crashingServer.pro (renamed from tests/auto/qtcpserver/crashingServer/crashingServer.pro)0
-rw-r--r--tests/auto/network/socket/qtcpserver/crashingServer/main.cpp (renamed from tests/auto/qtcpserver/crashingServer/main.cpp)0
-rw-r--r--tests/auto/network/socket/qtcpserver/qtcpserver.pro (renamed from tests/auto/qtcpserver/qtcpserver.pro)0
-rw-r--r--tests/auto/network/socket/qtcpserver/test/test.pro36
-rw-r--r--tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp817
-rw-r--r--tests/auto/network/socket/qtcpsocket/.gitignore (renamed from tests/auto/qtcpsocket/.gitignore)0
-rw-r--r--tests/auto/network/socket/qtcpsocket/qtcpsocket.pro (renamed from tests/auto/qtcpsocket/qtcpsocket.pro)0
-rw-r--r--tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp (renamed from tests/auto/qtcpsocket/stressTest/Test.cpp)0
-rw-r--r--tests/auto/network/socket/qtcpsocket/stressTest/Test.h (renamed from tests/auto/qtcpsocket/stressTest/Test.h)0
-rw-r--r--tests/auto/network/socket/qtcpsocket/stressTest/main.cpp (renamed from tests/auto/qtcpsocket/stressTest/main.cpp)0
-rw-r--r--tests/auto/network/socket/qtcpsocket/stressTest/stressTest.pro (renamed from tests/auto/qtcpsocket/stressTest/stressTest.pro)0
-rw-r--r--tests/auto/network/socket/qtcpsocket/test/test.pro33
-rw-r--r--tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp2684
-rw-r--r--tests/auto/network/socket/qudpsocket/.gitignore (renamed from tests/auto/qudpsocket/.gitignore)0
-rw-r--r--tests/auto/network/socket/qudpsocket/clientserver/clientserver.pro (renamed from tests/auto/qudpsocket/clientserver/clientserver.pro)0
-rw-r--r--tests/auto/network/socket/qudpsocket/clientserver/main.cpp (renamed from tests/auto/qudpsocket/clientserver/main.cpp)0
-rw-r--r--tests/auto/network/socket/qudpsocket/qudpsocket.pro (renamed from tests/auto/qudpsocket/qudpsocket.pro)0
-rw-r--r--tests/auto/network/socket/qudpsocket/test/test.pro (renamed from tests/auto/qudpsocket/test/test.pro)0
-rw-r--r--tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp1356
-rw-r--r--tests/auto/network/socket/qudpsocket/udpServer/main.cpp (renamed from tests/auto/qudpsocket/udpServer/main.cpp)0
-rw-r--r--tests/auto/network/socket/qudpsocket/udpServer/udpServer.pro (renamed from tests/auto/qudpsocket/udpServer/udpServer.pro)0
-rw-r--r--tests/auto/network/socket/socket.pro17
-rw-r--r--tests/auto/network/ssl/qsslcertificate/.gitignore (renamed from tests/auto/qsslcertificate/.gitignore)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/ca-cert.pem (renamed from tests/auto/qsslcertificate/certificates/ca-cert.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/ca-cert.pem.digest-md5 (renamed from tests/auto/qsslcertificate/certificates/ca-cert.pem.digest-md5)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/ca-cert.pem.digest-sha1 (renamed from tests/auto/qsslcertificate/certificates/ca-cert.pem.digest-sha1)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san-utf8.pem (renamed from tests/auto/qsslcertificate/certificates/cert-ss-san-utf8.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san-utf8.pem.san (renamed from tests/auto/qsslcertificate/certificates/cert-ss-san-utf8.pem.san)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san.pem (renamed from tests/auto/qsslcertificate/certificates/cert-ss-san.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san.pem.san (renamed from tests/auto/qsslcertificate/certificates/cert-ss-san.pem.san)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.der (renamed from tests/auto/qsslcertificate/certificates/cert-ss.der)bin461 -> 461 bytes
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.der.pubkey (renamed from tests/auto/qsslcertificate/certificates/cert-ss.der.pubkey)bin162 -> 162 bytes
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem (renamed from tests/auto/qsslcertificate/certificates/cert-ss.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem.digest-md5 (renamed from tests/auto/qsslcertificate/certificates/cert-ss.pem.digest-md5)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem.digest-sha1 (renamed from tests/auto/qsslcertificate/certificates/cert-ss.pem.digest-sha1)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem.pubkey (renamed from tests/auto/qsslcertificate/certificates/cert-ss.pem.pubkey)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert.der (renamed from tests/auto/qsslcertificate/certificates/cert.der)bin503 -> 503 bytes
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert.der.pubkey (renamed from tests/auto/qsslcertificate/certificates/cert.der.pubkey)bin162 -> 162 bytes
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert.pem (renamed from tests/auto/qsslcertificate/certificates/cert.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert.pem.digest-md5 (renamed from tests/auto/qsslcertificate/certificates/cert.pem.digest-md5)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert.pem.digest-sha1 (renamed from tests/auto/qsslcertificate/certificates/cert.pem.digest-sha1)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/cert.pem.pubkey (renamed from tests/auto/qsslcertificate/certificates/cert.pem.pubkey)0
-rwxr-xr-xtests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh (renamed from tests/auto/qsslcertificate/certificates/gencertificates.sh)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/certificates/san.cnf (renamed from tests/auto/qsslcertificate/certificates/san.cnf)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/badguy-nul-cn.crt (renamed from tests/auto/qsslcertificate/more-certificates/badguy-nul-cn.crt)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/badguy-nul-san.crt (renamed from tests/auto/qsslcertificate/more-certificates/badguy-nul-san.crt)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted-google.com-diginotar.pem (renamed from tests/auto/qsslcertificate/more-certificates/blacklisted-google.com-diginotar.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted1.pem (renamed from tests/auto/qsslcertificate/more-certificates/blacklisted1.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted2.pem (renamed from tests/auto/qsslcertificate/more-certificates/blacklisted2.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted3.pem (renamed from tests/auto/qsslcertificate/more-certificates/blacklisted3.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted4.pem (renamed from tests/auto/qsslcertificate/more-certificates/blacklisted4.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted5.pem (renamed from tests/auto/qsslcertificate/more-certificates/blacklisted5.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted6.pem (renamed from tests/auto/qsslcertificate/more-certificates/blacklisted6.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted7.pem (renamed from tests/auto/qsslcertificate/more-certificates/blacklisted7.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted8.pem (renamed from tests/auto/qsslcertificate/more-certificates/blacklisted8.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted9.pem (renamed from tests/auto/qsslcertificate/more-certificates/blacklisted9.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-expiration-date.pem (renamed from tests/auto/qsslcertificate/more-certificates/cert-large-expiration-date.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-expiration-date.txt.0.9.8 (renamed from tests/auto/qsslcertificate/more-certificates/cert-large-expiration-date.txt.0.9.8)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-expiration-date.txt.1.0.0 (renamed from tests/auto/qsslcertificate/more-certificates/cert-large-expiration-date.txt.1.0.0)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-serial-number.pem (renamed from tests/auto/qsslcertificate/more-certificates/cert-large-serial-number.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/malformed-just-begin-no-newline.pem (renamed from tests/auto/qsslcertificate/more-certificates/malformed-just-begin-no-newline.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/malformed-just-begin.pem (renamed from tests/auto/qsslcertificate/more-certificates/malformed-just-begin.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/natwest-banking.pem (renamed from tests/auto/qsslcertificate/more-certificates/natwest-banking.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/no-ending-newline.pem (renamed from tests/auto/qsslcertificate/more-certificates/no-ending-newline.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/test-cn-two-cns-cert.pem (renamed from tests/auto/qsslcertificate/more-certificates/test-cn-two-cns-cert.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/test-cn-with-drink-cert.pem (renamed from tests/auto/qsslcertificate/more-certificates/test-cn-with-drink-cert.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/more-certificates/trailing-whitespace.pem (renamed from tests/auto/qsslcertificate/more-certificates/trailing-whitespace.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro (renamed from tests/auto/qsslcertificate/qsslcertificate.pro)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp (renamed from tests/auto/qsslcertificate/tst_qsslcertificate.cpp)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/verify-certs/README (renamed from tests/auto/qsslcertificate/verify-certs/README)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/verify-certs/cacert.pem (renamed from tests/auto/qsslcertificate/verify-certs/cacert.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/verify-certs/test-addons-mozilla-org-cert.pem (renamed from tests/auto/qsslcertificate/verify-certs/test-addons-mozilla-org-cert.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem (renamed from tests/auto/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem (renamed from tests/auto/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem (renamed from tests/auto/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcertificate/verify-certs/test-ocsp-good-cert.pem (renamed from tests/auto/qsslcertificate/verify-certs/test-ocsp-good-cert.pem)0
-rw-r--r--tests/auto/network/ssl/qsslcipher/.gitignore (renamed from tests/auto/qsslcipher/.gitignore)0
-rw-r--r--tests/auto/network/ssl/qsslcipher/qsslcipher.pro (renamed from tests/auto/qsslcipher/qsslcipher.pro)0
-rw-r--r--tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp (renamed from tests/auto/qsslcipher/tst_qsslcipher.cpp)0
-rw-r--r--tests/auto/network/ssl/qsslerror/.gitignore (renamed from tests/auto/qsslerror/.gitignore)0
-rw-r--r--tests/auto/network/ssl/qsslerror/qsslerror.pro (renamed from tests/auto/qsslerror/qsslerror.pro)0
-rw-r--r--tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp (renamed from tests/auto/qsslerror/tst_qsslerror.cpp)0
-rw-r--r--tests/auto/network/ssl/qsslkey/.gitignore (renamed from tests/auto/qsslkey/.gitignore)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pri-1024.der (renamed from tests/auto/qsslkey/keys/dsa-pri-1024.der)bin447 -> 447 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pri-1024.pem (renamed from tests/auto/qsslkey/keys/dsa-pri-1024.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pri-512.der (renamed from tests/auto/qsslkey/keys/dsa-pri-512.der)bin251 -> 251 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pri-512.pem (renamed from tests/auto/qsslkey/keys/dsa-pri-512.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pri-576.der (renamed from tests/auto/qsslkey/keys/dsa-pri-576.der)bin275 -> 275 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pri-576.pem (renamed from tests/auto/qsslkey/keys/dsa-pri-576.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pri-960.der (renamed from tests/auto/qsslkey/keys/dsa-pri-960.der)bin419 -> 419 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pri-960.pem (renamed from tests/auto/qsslkey/keys/dsa-pri-960.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pub-1024.der (renamed from tests/auto/qsslkey/keys/dsa-pub-1024.der)bin442 -> 442 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pub-1024.pem (renamed from tests/auto/qsslkey/keys/dsa-pub-1024.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pub-512.der (renamed from tests/auto/qsslkey/keys/dsa-pub-512.der)bin244 -> 244 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pub-512.pem (renamed from tests/auto/qsslkey/keys/dsa-pub-512.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pub-576.der (renamed from tests/auto/qsslkey/keys/dsa-pub-576.der)bin268 -> 268 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pub-576.pem (renamed from tests/auto/qsslkey/keys/dsa-pub-576.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pub-960.der (renamed from tests/auto/qsslkey/keys/dsa-pub-960.der)bin414 -> 414 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/dsa-pub-960.pem (renamed from tests/auto/qsslkey/keys/dsa-pub-960.pem)0
-rwxr-xr-xtests/auto/network/ssl/qsslkey/keys/genkeys.sh (renamed from tests/auto/qsslkey/keys/genkeys.sh)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-1023.der (renamed from tests/auto/qsslkey/keys/rsa-pri-1023.der)bin605 -> 605 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-1023.pem (renamed from tests/auto/qsslkey/keys/rsa-pri-1023.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-1024.der (renamed from tests/auto/qsslkey/keys/rsa-pri-1024.der)bin608 -> 608 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-1024.pem (renamed from tests/auto/qsslkey/keys/rsa-pri-1024.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-2048.der (renamed from tests/auto/qsslkey/keys/rsa-pri-2048.der)bin1190 -> 1190 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-2048.pem (renamed from tests/auto/qsslkey/keys/rsa-pri-2048.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-40.der (renamed from tests/auto/qsslkey/keys/rsa-pri-40.der)bin49 -> 49 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-40.pem (renamed from tests/auto/qsslkey/keys/rsa-pri-40.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-511.der (renamed from tests/auto/qsslkey/keys/rsa-pri-511.der)bin316 -> 316 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-511.pem (renamed from tests/auto/qsslkey/keys/rsa-pri-511.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-512.der (renamed from tests/auto/qsslkey/keys/rsa-pri-512.der)bin320 -> 320 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-512.pem (renamed from tests/auto/qsslkey/keys/rsa-pri-512.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-999.der (renamed from tests/auto/qsslkey/keys/rsa-pri-999.der)bin591 -> 591 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pri-999.pem (renamed from tests/auto/qsslkey/keys/rsa-pri-999.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-1023.der (renamed from tests/auto/qsslkey/keys/rsa-pub-1023.der)bin161 -> 161 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-1023.pem (renamed from tests/auto/qsslkey/keys/rsa-pub-1023.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-1024.der (renamed from tests/auto/qsslkey/keys/rsa-pub-1024.der)bin162 -> 162 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-1024.pem (renamed from tests/auto/qsslkey/keys/rsa-pub-1024.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-2048.der (renamed from tests/auto/qsslkey/keys/rsa-pub-2048.der)bin294 -> 294 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-2048.pem (renamed from tests/auto/qsslkey/keys/rsa-pub-2048.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-40.der (renamed from tests/auto/qsslkey/keys/rsa-pub-40.der)bin35 -> 35 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-40.pem (renamed from tests/auto/qsslkey/keys/rsa-pub-40.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-511.der (renamed from tests/auto/qsslkey/keys/rsa-pub-511.der)bin93 -> 93 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-511.pem (renamed from tests/auto/qsslkey/keys/rsa-pub-511.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-512.der (renamed from tests/auto/qsslkey/keys/rsa-pub-512.der)bin94 -> 94 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-512.pem (renamed from tests/auto/qsslkey/keys/rsa-pub-512.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-999.der (renamed from tests/auto/qsslkey/keys/rsa-pub-999.der)bin157 -> 157 bytes
-rw-r--r--tests/auto/network/ssl/qsslkey/keys/rsa-pub-999.pem (renamed from tests/auto/qsslkey/keys/rsa-pub-999.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/qsslkey.pro (renamed from tests/auto/qsslkey/qsslkey.pro)0
-rw-r--r--tests/auto/network/ssl/qsslkey/rsa-with-passphrase.pem (renamed from tests/auto/qsslkey/rsa-with-passphrase.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/rsa-without-passphrase.pem (renamed from tests/auto/qsslkey/rsa-without-passphrase.pem)0
-rw-r--r--tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp (renamed from tests/auto/qsslkey/tst_qsslkey.cpp)0
-rw-r--r--tests/auto/network/ssl/qsslsocket/.gitignore (renamed from tests/auto/qsslsocket/.gitignore)0
-rw-r--r--tests/auto/network/ssl/qsslsocket/certs/aspiriniks.ca.crt (renamed from tests/auto/qsslsocket/certs/aspiriniks.ca.crt)0
-rw-r--r--tests/auto/network/ssl/qsslsocket/certs/fake-login.live.com.key (renamed from tests/auto/qsslsocket/certs/fake-login.live.com.key)0
-rw-r--r--tests/auto/network/ssl/qsslsocket/certs/fake-login.live.com.pem (renamed from tests/auto/qsslsocket/certs/fake-login.live.com.pem)0
-rw-r--r--tests/auto/network/ssl/qsslsocket/certs/fluke.cert (renamed from tests/auto/qsslsocket/certs/fluke.cert)0
-rw-r--r--tests/auto/network/ssl/qsslsocket/certs/fluke.key (renamed from tests/auto/qsslsocket/certs/fluke.key)0
-rw-r--r--tests/auto/network/ssl/qsslsocket/certs/qt-test-server-cacert.pem (renamed from tests/auto/qsslsocket/certs/qt-test-server-cacert.pem)0
-rw-r--r--tests/auto/network/ssl/qsslsocket/qsslsocket.pro50
-rw-r--r--tests/auto/network/ssl/qsslsocket/ssl.tar.gz (renamed from tests/auto/qsslsocket/ssl.tar.gz)bin36299 -> 36299 bytes
-rw-r--r--tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp2097
-rw-r--r--tests/auto/network/ssl/ssl.pro8
-rw-r--r--tests/auto/opengl/opengl.pro (renamed from tests/auto/opengl.pro)0
-rw-r--r--tests/auto/opengl/qgl/.gitignore (renamed from tests/auto/qgl/.gitignore)0
-rw-r--r--tests/auto/opengl/qgl/qgl.pro15
-rw-r--r--tests/auto/opengl/qgl/qgl.qrc5
-rw-r--r--tests/auto/opengl/qgl/tst_qgl.cpp2400
-rw-r--r--tests/auto/opengl/qglbuffer/qglbuffer.pro11
-rw-r--r--tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp (renamed from tests/auto/qglbuffer/tst_qglbuffer.cpp)0
-rw-r--r--tests/auto/opengl/qglfunctions/qglfunctions.pro7
-rw-r--r--tests/auto/opengl/qglfunctions/tst_qglfunctions.cpp (renamed from tests/auto/qglfunctions/tst_qglfunctions.cpp)0
-rw-r--r--tests/auto/opengl/qglthreads/qglthreads.pro14
-rw-r--r--tests/auto/opengl/qglthreads/tst_qglthreads.cpp758
-rw-r--r--tests/auto/opengl/qglthreads/tst_qglthreads.h (renamed from tests/auto/qglthreads/tst_qglthreads.h)0
-rw-r--r--tests/auto/other.pro21
-rw-r--r--tests/auto/other/atwrapper/.gitignore (renamed from tests/auto/atwrapper/.gitignore)0
-rw-r--r--tests/auto/other/atwrapper/TODO (renamed from tests/auto/atwrapper/TODO)0
-rw-r--r--tests/auto/other/atwrapper/atWrapper.cpp (renamed from tests/auto/atwrapper/atWrapper.cpp)0
-rw-r--r--tests/auto/other/atwrapper/atWrapper.h (renamed from tests/auto/atwrapper/atWrapper.h)0
-rw-r--r--tests/auto/other/atwrapper/atWrapper.pro (renamed from tests/auto/atwrapper/atWrapper.pro)0
-rw-r--r--tests/auto/other/atwrapper/atWrapperAutotest.cpp (renamed from tests/auto/atwrapper/atWrapperAutotest.cpp)0
-rw-r--r--tests/auto/other/atwrapper/desert.ini (renamed from tests/auto/atwrapper/desert.ini)0
-rw-r--r--tests/auto/other/atwrapper/ephron.ini (renamed from tests/auto/atwrapper/ephron.ini)0
-rw-r--r--tests/auto/other/atwrapper/gullgubben.ini (renamed from tests/auto/atwrapper/gullgubben.ini)0
-rw-r--r--tests/auto/other/atwrapper/honshu.ini (renamed from tests/auto/atwrapper/honshu.ini)0
-rw-r--r--tests/auto/other/atwrapper/kramer.ini (renamed from tests/auto/atwrapper/kramer.ini)0
-rw-r--r--tests/auto/other/atwrapper/scruffy.ini (renamed from tests/auto/atwrapper/scruffy.ini)0
-rw-r--r--tests/auto/other/atwrapper/spareribs.ini (renamed from tests/auto/atwrapper/spareribs.ini)0
-rw-r--r--tests/auto/other/atwrapper/titan.ini (renamed from tests/auto/atwrapper/titan.ini)0
-rw-r--r--tests/auto/other/baselineexample/baselineexample.pro18
-rw-r--r--tests/auto/other/baselineexample/tst_baselineexample.cpp (renamed from tests/auto/baselineexample/tst_baselineexample.cpp)0
-rw-r--r--tests/auto/other/compiler/.gitignore (renamed from tests/auto/compiler/.gitignore)0
-rw-r--r--tests/auto/other/compiler/baseclass.cpp (renamed from tests/auto/compiler/baseclass.cpp)0
-rw-r--r--tests/auto/other/compiler/baseclass.h (renamed from tests/auto/compiler/baseclass.h)0
-rw-r--r--tests/auto/other/compiler/compiler.pro (renamed from tests/auto/compiler/compiler.pro)0
-rw-r--r--tests/auto/other/compiler/derivedclass.cpp (renamed from tests/auto/compiler/derivedclass.cpp)0
-rw-r--r--tests/auto/other/compiler/derivedclass.h (renamed from tests/auto/compiler/derivedclass.h)0
-rw-r--r--tests/auto/other/compiler/tst_compiler.cpp (renamed from tests/auto/compiler/tst_compiler.cpp)0
-rw-r--r--tests/auto/other/headersclean/headersclean.pro7
-rw-r--r--tests/auto/other/headersclean/tst_headersclean.cpp75
-rw-r--r--tests/auto/other/maketestselftest/checktest/checktest.pro (renamed from tests/auto/maketestselftest/checktest/checktest.pro)0
-rw-r--r--tests/auto/other/maketestselftest/checktest/main.cpp (renamed from tests/auto/maketestselftest/checktest/main.cpp)0
-rw-r--r--tests/auto/other/maketestselftest/features/dump_subdirs.prf (renamed from tests/auto/maketestselftest/features/dump_subdirs.prf)0
-rw-r--r--tests/auto/other/maketestselftest/maketestselftest.pro (renamed from tests/auto/maketestselftest/maketestselftest.pro)0
-rw-r--r--tests/auto/other/maketestselftest/test/test.pro19
-rw-r--r--tests/auto/other/maketestselftest/tst_maketestselftest.cpp561
-rw-r--r--tests/auto/other/other.pro11
-rw-r--r--tests/auto/other/qtmd5/.gitignore (renamed from tests/auto/qtmd5/.gitignore)0
-rw-r--r--tests/auto/other/qtmd5/qtmd5.pro15
-rw-r--r--tests/auto/other/qtmd5/tst_qtmd5.cpp (renamed from tests/auto/qtmd5/tst_qtmd5.cpp)0
-rw-r--r--tests/auto/other/qtokenautomaton/.gitignore (renamed from tests/auto/qtokenautomaton/.gitignore)0
-rwxr-xr-xtests/auto/other/qtokenautomaton/generateTokenizers.sh (renamed from tests/auto/qtokenautomaton/generateTokenizers.sh)0
-rw-r--r--tests/auto/other/qtokenautomaton/qtokenautomaton.pro (renamed from tests/auto/qtokenautomaton/qtokenautomaton.pro)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/basic/basic.cpp (renamed from tests/auto/qtokenautomaton/tokenizers/basic/basic.cpp)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/basic/basic.h (renamed from tests/auto/qtokenautomaton/tokenizers/basic/basic.h)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/basic/basic.xml (renamed from tests/auto/qtokenautomaton/tokenizers/basic/basic.xml)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp (renamed from tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h (renamed from tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.xml (renamed from tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.xml)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp (renamed from tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.h (renamed from tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.h)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml (renamed from tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp (renamed from tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.h (renamed from tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.h)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.xml (renamed from tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.xml)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.cpp (renamed from tests/auto/qtokenautomaton/tokenizers/noToString/noToString.cpp)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.h (renamed from tests/auto/qtokenautomaton/tokenizers/noToString/noToString.h)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.xml (renamed from tests/auto/qtokenautomaton/tokenizers/noToString/noToString.xml)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp (renamed from tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.h (renamed from tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.h)0
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.xml (renamed from tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.xml)0
-rw-r--r--tests/auto/other/qtokenautomaton/tst_qtokenautomaton.cpp (renamed from tests/auto/qtokenautomaton/tst_qtokenautomaton.cpp)0
-rw-r--r--tests/auto/platformsocketengine/tst_platformsocketengine.cpp763
-rw-r--r--tests/auto/qabstractbutton/qabstractbutton.pro1
-rw-r--r--tests/auto/qabstractitemmodel/qabstractitemmodel.pro9
-rw-r--r--tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp1816
-rw-r--r--tests/auto/qabstractitemview/qabstractitemview.pro3
-rw-r--r--tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp416
-rw-r--r--tests/auto/qabstractprintdialog/qabstractprintdialog.pro4
-rw-r--r--tests/auto/qabstractproxymodel/qabstractproxymodel.pro1
-rw-r--r--tests/auto/qabstractscrollarea/qabstractscrollarea.pro2
-rw-r--r--tests/auto/qabstractslider/qabstractslider.pro1
-rw-r--r--tests/auto/qabstractspinbox/qabstractspinbox.pro2
-rw-r--r--tests/auto/qabstracttextdocumentlayout/qabstracttextdocumentlayout.pro9
-rw-r--r--tests/auto/qaccessibility/qaccessibility.pro1
-rw-r--r--tests/auto/qaccessibility/tst_qaccessibility.cpp4
-rw-r--r--tests/auto/qaccessibility_mac/qaccessibility_mac.pro2
-rw-r--r--tests/auto/qaction/qaction.pro1
-rw-r--r--tests/auto/qactiongroup/qactiongroup.pro1
-rw-r--r--tests/auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro1
-rw-r--r--tests/auto/qapplication/modal/modal.pro1
-rw-r--r--tests/auto/qapplication/test/test.pro3
-rw-r--r--tests/auto/qapplication/wincmdline/wincmdline.pro1
-rw-r--r--tests/auto/qboxlayout/qboxlayout.pro1
-rw-r--r--tests/auto/qbrush/qbrush.pro5
-rw-r--r--tests/auto/qbuttongroup/qbuttongroup.pro1
-rw-r--r--tests/auto/qbytearray/tst_qbytearray.cpp1567
-rw-r--r--tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp124
-rw-r--r--tests/auto/qcalendarwidget/qcalendarwidget.pro1
-rw-r--r--tests/auto/qcheckbox/qcheckbox.pro1
-rw-r--r--tests/auto/qclipboard/copier/copier.pro9
-rw-r--r--tests/auto/qclipboard/paster/paster.pro11
-rw-r--r--tests/auto/qclipboard/tst_qclipboard.cpp422
-rw-r--r--tests/auto/qcolordialog/qcolordialog.pro1
-rw-r--r--tests/auto/qcolumnview/qcolumnview.pro1
-rw-r--r--tests/auto/qcolumnview/tst_qcolumnview.cpp4
-rw-r--r--tests/auto/qcombobox/qcombobox.pro3
-rw-r--r--tests/auto/qcombobox/tst_qcombobox.cpp6
-rw-r--r--tests/auto/qcommandlinkbutton/qcommandlinkbutton.pro1
-rw-r--r--tests/auto/qcompleter/qcompleter.pro1
-rw-r--r--tests/auto/qcomplextext/qcomplextext.pro3
-rw-r--r--tests/auto/qdatastream/qdatastream.pro20
-rw-r--r--tests/auto/qdatawidgetmapper/qdatawidgetmapper.pro1
-rw-r--r--tests/auto/qdatetimeedit/qdatetimeedit.pro1
-rw-r--r--tests/auto/qdesktopservices/qdesktopservices.pro29
-rw-r--r--tests/auto/qdesktopwidget/qdesktopwidget.pro4
-rw-r--r--tests/auto/qdesktopwidget/tst_qdesktopwidget.cpp2
-rw-r--r--tests/auto/qdial/qdial.pro1
-rw-r--r--tests/auto/qdialog/qdialog.pro3
-rw-r--r--tests/auto/qdialogbuttonbox/qdialogbuttonbox.pro1
-rw-r--r--tests/auto/qdialogbuttonbox/tst_qdialogbuttonbox.cpp10
-rw-r--r--tests/auto/qdir/tst_qdir.cpp1965
-rw-r--r--tests/auto/qdirectpainter/test/test.pro2
-rw-r--r--tests/auto/qdiriterator/qdiriterator.pro8
-rw-r--r--tests/auto/qdiriterator/tst_qdiriterator.cpp639
-rw-r--r--tests/auto/qdirmodel/qdirmodel.pro1
-rw-r--r--tests/auto/qdockwidget/qdockwidget.pro5
-rw-r--r--tests/auto/qdoublespinbox/qdoublespinbox.pro4
-rw-r--r--tests/auto/qdoublespinbox/tst_qdoublespinbox.cpp2
-rw-r--r--tests/auto/qdoublevalidator/qdoublevalidator.pro1
-rw-r--r--tests/auto/qdrag/qdrag.pro9
-rw-r--r--tests/auto/qerrormessage/qerrormessage.pro2
-rw-r--r--tests/auto/qeventloop/tst_qeventloop.cpp937
-rw-r--r--tests/auto/qfile/largefile/largefile.pro8
-rw-r--r--tests/auto/qfile/test/test.pro44
-rw-r--r--tests/auto/qfile/tst_qfile.cpp3406
-rw-r--r--tests/auto/qfiledialog/qfiledialog.pro2
-rw-r--r--tests/auto/qfiledialog/tst_qfiledialog.cpp6
-rw-r--r--tests/auto/qfiledialog2/qfiledialog2.pro1
-rw-r--r--tests/auto/qfiledialog2/tst_qfiledialog2.cpp6
-rw-r--r--tests/auto/qfileiconprovider/qfileiconprovider.pro1
-rw-r--r--tests/auto/qfileinfo/tst_qfileinfo.cpp1811
-rw-r--r--tests/auto/qfileopenevent/qfileopenevent.pro2
-rw-r--r--tests/auto/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.pro10
-rw-r--r--tests/auto/qfilesystementry/qfilesystementry.pro8
-rw-r--r--tests/auto/qfilesystemmodel/qfilesystemmodel.pro3
-rw-r--r--tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp2
-rw-r--r--tests/auto/qfocusevent/qfocusevent.pro1
-rw-r--r--tests/auto/qfocusframe/qfocusframe.pro2
-rw-r--r--tests/auto/qfont/qfont.pro4
-rw-r--r--tests/auto/qfontcombobox/qfontcombobox.pro3
-rw-r--r--tests/auto/qfontdialog/qfontdialog.pro1
-rw-r--r--tests/auto/qformlayout/qformlayout.pro1
-rw-r--r--tests/auto/qformlayout/tst_qformlayout.cpp3
-rw-r--r--tests/auto/qfreelist/qfreelist.pro6
-rw-r--r--tests/auto/qftp/tst_qftp.cpp2170
-rw-r--r--tests/auto/qfuture/tst_qfuture.cpp1469
-rw-r--r--tests/auto/qfuturewatcher/tst_qfuturewatcher.cpp930
-rw-r--r--tests/auto/qgl/qgl.pro15
-rw-r--r--tests/auto/qgl/qgl.qrc5
-rw-r--r--tests/auto/qgl/tst_qgl.cpp2402
-rw-r--r--tests/auto/qglbuffer/qglbuffer.pro11
-rw-r--r--tests/auto/qglfunctions/qglfunctions.pro7
-rw-r--r--tests/auto/qglthreads/qglthreads.pro14
-rw-r--r--tests/auto/qglthreads/tst_qglthreads.cpp757
-rw-r--r--tests/auto/qgraphicsanchorlayout/qgraphicsanchorlayout.pro1
-rw-r--r--tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp185
-rw-r--r--tests/auto/qgraphicsanchorlayout1/qgraphicsanchorlayout1.pro1
-rw-r--r--tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp2
-rw-r--r--tests/auto/qgraphicseffect/qgraphicseffect.pro1
-rw-r--r--tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp28
-rw-r--r--tests/auto/qgraphicseffectsource/qgraphicseffectsource.pro1
-rw-r--r--tests/auto/qgraphicseffectsource/tst_qgraphicseffectsource.cpp10
-rw-r--r--tests/auto/qgraphicsgridlayout/qgraphicsgridlayout.pro2
-rw-r--r--tests/auto/qgraphicsitem/qgraphicsitem.pro1
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp1
-rw-r--r--tests/auto/qgraphicsitemanimation/qgraphicsitemanimation.pro1
-rw-r--r--tests/auto/qgraphicslayout/qgraphicslayout.pro1
-rw-r--r--tests/auto/qgraphicslayoutitem/qgraphicslayoutitem.pro1
-rw-r--r--tests/auto/qgraphicslinearlayout/qgraphicslinearlayout.pro1
-rw-r--r--tests/auto/qgraphicsobject/qgraphicsobject.pro1
-rw-r--r--tests/auto/qgraphicspixmapitem/qgraphicspixmapitem.pro1
-rw-r--r--tests/auto/qgraphicspolygonitem/qgraphicspolygonitem.pro1
-rw-r--r--tests/auto/qgraphicsproxywidget/qgraphicsproxywidget.pro1
-rw-r--r--tests/auto/qgraphicsscene/qgraphicsscene.pro1
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp2
-rw-r--r--tests/auto/qgraphicssceneindex/qgraphicssceneindex.pro1
-rw-r--r--tests/auto/qgraphicssceneindex/tst_qgraphicssceneindex.cpp2
-rw-r--r--tests/auto/qgraphicstransform/qgraphicstransform.pro1
-rw-r--r--tests/auto/qgraphicsview/qgraphicsview.pro1
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp24
-rw-r--r--tests/auto/qgraphicswidget/qgraphicswidget.pro1
-rw-r--r--tests/auto/qgridlayout/qgridlayout.pro1
-rw-r--r--tests/auto/qgridlayout/tst_qgridlayout.cpp4
-rw-r--r--tests/auto/qgroupbox/qgroupbox.pro1
-rw-r--r--tests/auto/qheaderview/qheaderview.pro1
-rw-r--r--tests/auto/qhostinfo/tst_qhostinfo.cpp665
-rw-r--r--tests/auto/qhttp/tst_qhttp.cpp1576
-rw-r--r--tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp1131
-rw-r--r--tests/auto/qhttpsocketengine/tst_qhttpsocketengine.cpp746
-rw-r--r--tests/auto/qicon/qicon.pro29
-rw-r--r--tests/auto/qidentityproxymodel/qidentityproxymodel.pro1
-rw-r--r--tests/auto/qimage/tst_qimage.cpp2014
-rw-r--r--tests/auto/qimagereader/qimagereader.pro36
-rw-r--r--tests/auto/qimagereader/tst_qimagereader.cpp2026
-rw-r--r--tests/auto/qimagewriter/qimagewriter.pro24
-rw-r--r--tests/auto/qinputcontext/qinputcontext.pro3
-rw-r--r--tests/auto/qinputdialog/qinputdialog.pro1
-rw-r--r--tests/auto/qiodevice/tst_qiodevice.cpp611
-rw-r--r--tests/auto/qitemdelegate/qitemdelegate.pro1
-rw-r--r--tests/auto/qitemeditorfactory/qitemeditorfactory.pro1
-rw-r--r--tests/auto/qitemmodel/modelstotest.cpp425
-rw-r--r--tests/auto/qitemmodel/qitemmodel.pro26
-rw-r--r--tests/auto/qitemselectionmodel/qitemselectionmodel.pro1
-rw-r--r--tests/auto/qitemview/qitemview.pro1
-rw-r--r--tests/auto/qkeysequence/qkeysequence.pro7
-rw-r--r--tests/auto/qlabel/qlabel.pro3
-rw-r--r--tests/auto/qlayout/qlayout.pro2
-rw-r--r--tests/auto/qlayout/tst_qlayout.cpp6
-rw-r--r--tests/auto/qlcdnumber/qlcdnumber.pro2
-rw-r--r--tests/auto/qlineedit/qlineedit.pro3
-rw-r--r--tests/auto/qlineedit/tst_qlineedit.cpp2
-rw-r--r--tests/auto/qlistview/qlistview.pro1
-rw-r--r--tests/auto/qlistview/tst_qlistview.cpp23
-rw-r--r--tests/auto/qlistwidget/qlistwidget.pro1
-rw-r--r--tests/auto/qlocalsocket/tst_qlocalsocket.cpp1120
-rw-r--r--tests/auto/qmacstyle/qmacstyle.pro1
-rw-r--r--tests/auto/qmacstyle/tst_qmacstyle.cpp2
-rw-r--r--tests/auto/qmainwindow/qmainwindow.pro2
-rw-r--r--tests/auto/qmake/qmake.pro8
-rw-r--r--tests/auto/qmdiarea/qmdiarea.pro2
-rw-r--r--tests/auto/qmdisubwindow/qmdisubwindow.pro1
-rw-r--r--tests/auto/qmdisubwindow/tst_qmdisubwindow.cpp2
-rw-r--r--tests/auto/qmenu/qmenu.pro1
-rw-r--r--tests/auto/qmenubar/qmenubar.pro1
-rw-r--r--tests/auto/qmenubar/tst_qmenubar.cpp80
-rw-r--r--tests/auto/qmessagebox/qmessagebox.pro1
-rw-r--r--tests/auto/qmessagebox/tst_qmessagebox.cpp25
-rw-r--r--tests/auto/qmetaobject/qmetaobject.pro8
-rw-r--r--tests/auto/qmetatype/tst_qmetatype.cpp366
-rw-r--r--tests/auto/qmouseevent/qmouseevent.pro2
-rw-r--r--tests/auto/qmouseevent_modal/qmouseevent_modal.pro5
-rw-r--r--tests/auto/qmovie/qmovie.pro27
-rw-r--r--tests/auto/qmultiscreen/qmultiscreen.pro1
-rw-r--r--tests/auto/qnetworkaccessmanager_and_qprogressdialog/qnetworkaccessmanager_and_qprogressdialog.pro2
-rw-r--r--tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp677
-rw-r--r--tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp241
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp6342
-rw-r--r--tests/auto/qnetworksession/test/test.pro26
-rw-r--r--tests/auto/qobject/tst_qobject.cpp4063
-rw-r--r--tests/auto/qopengl/qopengl.pro10
-rw-r--r--tests/auto/qopengl/tst_qopengl.cpp437
-rw-r--r--tests/auto/qpainter/qpainter.pro20
-rw-r--r--tests/auto/qpainter/tst_qpainter.cpp4697
-rw-r--r--tests/auto/qpalette/qpalette.pro5
-rw-r--r--tests/auto/qpathclipper/qpathclipper.pro11
-rw-r--r--tests/auto/qpicture/qpicture.pro5
-rw-r--r--tests/auto/qpixmap/qpixmap.pro37
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp1863
-rw-r--r--tests/auto/qpixmapfilter/qpixmapfilter.pro12
-rw-r--r--tests/auto/qplaintextedit/qplaintextedit.pro1
-rw-r--r--tests/auto/qplaintextedit/tst_qplaintextedit.cpp4
-rw-r--r--tests/auto/qpluginloader/tst/tst.pro32
-rw-r--r--tests/auto/qpointer/qpointer.pro4
-rw-r--r--tests/auto/qpolygon/qpolygon.pro6
-rw-r--r--tests/auto/qprinter/qprinter.pro4
-rw-r--r--tests/auto/qprinter/tst_qprinter.cpp1044
-rw-r--r--tests/auto/qprinterinfo/qprinterinfo.pro7
-rw-r--r--tests/auto/qprocess/testGuiProcess/main.cpp58
-rw-r--r--tests/auto/qprocess/testGuiProcess/testGuiProcess.pro4
-rw-r--r--tests/auto/qprocess/testSoftExit/main_win.cpp58
-rw-r--r--tests/auto/qprogressbar/qprogressbar.pro1
-rw-r--r--tests/auto/qprogressdialog/qprogressdialog.pro2
-rw-r--r--tests/auto/qpropertyanimation/qpropertyanimation.pro5
-rw-r--r--tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp1243
-rw-r--r--tests/auto/qpushbutton/qpushbutton.pro1
-rw-r--r--tests/auto/qradiobutton/qradiobutton.pro1
-rw-r--r--tests/auto/qrawfont/qrawfont.pro14
-rw-r--r--tests/auto/qregion/tst_qregion.cpp1025
-rw-r--r--tests/auto/qresourceengine/qresourceengine.pro46
-rw-r--r--tests/auto/qscrollarea/qscrollarea.pro2
-rw-r--r--tests/auto/qscrollbar/qscrollbar.pro3
-rw-r--r--tests/auto/qscroller/qscroller.pro1
-rw-r--r--tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp1672
-rw-r--r--tests/auto/qsettings/tst_qsettings.cpp3179
-rw-r--r--tests/auto/qsharedpointer/qsharedpointer.pro15
-rw-r--r--tests/auto/qsharedpointer_and_qwidget/qsharedpointer_and_qwidget.pro1
-rw-r--r--tests/auto/qsharedpointer_and_qwidget/tst_qsharedpointer_and_qwidget.cpp4
-rw-r--r--tests/auto/qshortcut/qshortcut.pro10
-rw-r--r--tests/auto/qsidebar/qsidebar.pro1
-rw-r--r--tests/auto/qsidebar/tst_qsidebar.cpp4
-rw-r--r--tests/auto/qsignalmapper/qsignalmapper.pro5
-rw-r--r--tests/auto/qsizegrip/qsizegrip.pro1
-rw-r--r--tests/auto/qslider/qslider.pro2
-rw-r--r--tests/auto/qsocketnotifier/qsocketnotifier.pro11
-rw-r--r--tests/auto/qsocketnotifier/tst_qsocketnotifier.cpp359
-rw-r--r--tests/auto/qsocks5socketengine/tst_qsocks5socketengine.cpp959
-rw-r--r--tests/auto/qsoftkeymanager/qsoftkeymanager.pro1
-rw-r--r--tests/auto/qsortfilterproxymodel/qsortfilterproxymodel.pro2
-rw-r--r--tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp1
-rw-r--r--tests/auto/qspinbox/qspinbox.pro1
-rw-r--r--tests/auto/qspinbox/tst_qspinbox.cpp2
-rw-r--r--tests/auto/qsplitter/qsplitter.pro2
-rw-r--r--tests/auto/qsql/qsql.pro18
-rw-r--r--tests/auto/qsql/tst_qsql.cpp277
-rw-r--r--tests/auto/qsqlquerymodel/qsqlquerymodel.pro20
-rw-r--r--tests/auto/qsqlquerymodel/tst_qsqlquerymodel.cpp641
-rw-r--r--tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp1494
-rw-r--r--tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp1377
-rw-r--r--tests/auto/qsslsocket/qsslsocket.pro48
-rw-r--r--tests/auto/qsslsocket/tst_qsslsocket.cpp2095
-rw-r--r--tests/auto/qstackedlayout/qstackedlayout.pro1
-rw-r--r--tests/auto/qstackedwidget/qstackedwidget.pro2
-rw-r--r--tests/auto/qstandarditem/qstandarditem.pro1
-rw-r--r--tests/auto/qstandarditemmodel/qstandarditemmodel.pro1
-rw-r--r--tests/auto/qstatemachine/qstatemachine.pro4
-rw-r--r--tests/auto/qstatemachine/tst_qstatemachine.cpp4448
-rw-r--r--tests/auto/qstatictext/qstatictext.pro4
-rw-r--r--tests/auto/qstatictext/tst_qstatictext.cpp869
-rw-r--r--tests/auto/qstatusbar/qstatusbar.pro1
-rw-r--r--tests/auto/qstring/tst_qstring.cpp5147
-rw-r--r--tests/auto/qstringlistmodel/qstringlistmodel.pro1
-rw-r--r--tests/auto/qstyle/qstyle.pro1
-rw-r--r--tests/auto/qstyleoption/qstyleoption.pro2
-rw-r--r--tests/auto/qstylesheetstyle/qstylesheetstyle.pro1
-rw-r--r--tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp1
-rw-r--r--tests/auto/qsystemtrayicon/qsystemtrayicon.pro2
-rw-r--r--tests/auto/qtabbar/qtabbar.pro1
-rw-r--r--tests/auto/qtabbar/tst_qtabbar.cpp10
-rw-r--r--tests/auto/qtableview/qtableview.pro1
-rw-r--r--tests/auto/qtablewidget/qtablewidget.pro1
-rw-r--r--tests/auto/qtabwidget/qtabwidget.pro2
-rw-r--r--tests/auto/qtabwidget/tst_qtabwidget.cpp2
-rw-r--r--tests/auto/qtconcurrentfilter/tst_qtconcurrentfilter.cpp1546
-rw-r--r--tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp2448
-rw-r--r--tests/auto/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp536
-rw-r--r--tests/auto/qtcpserver/test/test.pro37
-rw-r--r--tests/auto/qtcpserver/tst_qtcpserver.cpp817
-rw-r--r--tests/auto/qtcpsocket/test/test.pro32
-rw-r--r--tests/auto/qtcpsocket/tst_qtcpsocket.cpp2684
-rw-r--r--tests/auto/qtessellator/.gitignore1
-rw-r--r--tests/auto/qtessellator/XrenderFake.h110
-rw-r--r--tests/auto/qtessellator/arc.cpp49
-rw-r--r--tests/auto/qtessellator/arc.data2
-rw-r--r--tests/auto/qtessellator/arc.h48
-rw-r--r--tests/auto/qtessellator/datafiles.qrc6
-rw-r--r--tests/auto/qtessellator/dataparser.cpp165
-rw-r--r--tests/auto/qtessellator/dataparser.h51
-rw-r--r--tests/auto/qtessellator/oldtessellator.cpp435
-rw-r--r--tests/auto/qtessellator/oldtessellator.h52
-rw-r--r--tests/auto/qtessellator/qnum.h145
-rw-r--r--tests/auto/qtessellator/qtessellator.pro10
-rw-r--r--tests/auto/qtessellator/sample_data.h51
-rw-r--r--tests/auto/qtessellator/simple.cpp49
-rw-r--r--tests/auto/qtessellator/simple.data195
-rw-r--r--tests/auto/qtessellator/simple.h48
-rw-r--r--tests/auto/qtessellator/testtessellator.cpp116
-rw-r--r--tests/auto/qtessellator/testtessellator.h59
-rw-r--r--tests/auto/qtessellator/tst_tessellator.cpp378
-rw-r--r--tests/auto/qtessellator/utils.cpp93
-rw-r--r--tests/auto/qtessellator/utils.h56
-rw-r--r--tests/auto/qtextblock/qtextblock.pro8
-rw-r--r--tests/auto/qtextblock/tst_qtextblock.cpp197
-rw-r--r--tests/auto/qtextbrowser/qtextbrowser.pro1
-rw-r--r--tests/auto/qtextdocumentlayout/qtextdocumentlayout.pro4
-rw-r--r--tests/auto/qtextedit/qtextedit.pro2
-rw-r--r--tests/auto/qtextedit/tst_qtextedit.cpp6
-rw-r--r--tests/auto/qtextobject/qtextobject.pro9
-rw-r--r--tests/auto/qtextodfwriter/qtextodfwriter.pro5
-rw-r--r--tests/auto/qtextpiecetable/qtextpiecetable.pro8
-rw-r--r--tests/auto/qtextpiecetable/tst_qtextpiecetable.cpp1154
-rw-r--r--tests/auto/qtextstream/tst_qtextstream.cpp2919
-rw-r--r--tests/auto/qtexttable/qtexttable.pro5
-rw-r--r--tests/auto/qtimer/tst_qtimer.cpp794
-rw-r--r--tests/auto/qtmd5/qtmd5.pro15
-rw-r--r--tests/auto/qtoolbar/qtoolbar.pro1
-rw-r--r--tests/auto/qtoolbox/qtoolbox.pro1
-rw-r--r--tests/auto/qtoolbutton/qtoolbutton.pro1
-rw-r--r--tests/auto/qtooltip/qtooltip.pro3
-rw-r--r--tests/auto/qtouchevent/qtouchevent.pro3
-rw-r--r--tests/auto/qtouchevent/tst_qtouchevent.cpp1398
-rw-r--r--tests/auto/qtransform/tst_qtransform.cpp807
-rw-r--r--tests/auto/qtranslator/qtranslator.pro11
-rw-r--r--tests/auto/qtreeview/qtreeview.pro1
-rw-r--r--tests/auto/qtreewidget/qtreewidget.pro3
-rw-r--r--tests/auto/qtreewidgetitemiterator/qtreewidgetitemiterator.pro1
-rw-r--r--tests/auto/qudpsocket/tst_qudpsocket.cpp1356
-rw-r--r--tests/auto/qundogroup/qundogroup.pro1
-rw-r--r--tests/auto/qundostack/qundostack.pro1
-rw-r--r--tests/auto/qvariant/qvariant.pro5
-rw-r--r--tests/auto/qvolatileimage/qvolatileimage.pro10
-rw-r--r--tests/auto/qwidget/qwidget.pro2
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp363
-rw-r--r--tests/auto/qwidget_window/qwidget_window.pro1
-rw-r--r--tests/auto/qwidgetaction/qwidgetaction.pro1
-rw-r--r--tests/auto/qwindow/qwindow.pro6
-rw-r--r--tests/auto/qwindow/tst_qwindow.cpp74
-rw-r--r--tests/auto/qwindowsurface/qwindowsurface.pro1
-rw-r--r--tests/auto/qwindowsurface/tst_qwindowsurface.cpp2
-rw-r--r--tests/auto/qwineventnotifier/qwineventnotifier.pro4
-rw-r--r--tests/auto/qwizard/qwizard.pro1
-rw-r--r--tests/auto/qworkspace/qworkspace.pro1
-rw-r--r--tests/auto/qwsembedwidget/qwsembedwidget.pro1
-rw-r--r--tests/auto/qzip/qzip.pro11
-rw-r--r--tests/auto/selftests/test/test.pro17
-rw-r--r--tests/auto/sql.pro14
-rw-r--r--tests/auto/sql/kernel/kernel.pro11
-rw-r--r--tests/auto/sql/kernel/qsql/.gitignore (renamed from tests/auto/qsql/.gitignore)0
-rw-r--r--tests/auto/sql/kernel/qsql/qsql.pro18
-rw-r--r--tests/auto/sql/kernel/qsql/tst_qsql.cpp277
-rw-r--r--tests/auto/sql/kernel/qsqldatabase/.gitignore (renamed from tests/auto/qsqldatabase/.gitignore)0
-rw-r--r--tests/auto/sql/kernel/qsqldatabase/qsqldatabase.pro (renamed from tests/auto/qsqldatabase/qsqldatabase.pro)0
-rwxr-xr-xtests/auto/sql/kernel/qsqldatabase/testdata/qtest.mdb (renamed from tests/auto/qsqldatabase/testdata/qtest.mdb)bin65536 -> 65536 bytes
-rw-r--r--tests/auto/sql/kernel/qsqldatabase/tst_databases.h (renamed from tests/auto/qsqldatabase/tst_databases.h)0
-rw-r--r--tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp (renamed from tests/auto/qsqldatabase/tst_qsqldatabase.cpp)0
-rw-r--r--tests/auto/sql/kernel/qsqldriver/qsqldriver.pro (renamed from tests/auto/qsqldriver/qsqldriver.pro)0
-rw-r--r--tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp (renamed from tests/auto/qsqldriver/tst_qsqldriver.cpp)0
-rw-r--r--tests/auto/sql/kernel/qsqlerror/.gitignore (renamed from tests/auto/qsqlerror/.gitignore)0
-rw-r--r--tests/auto/sql/kernel/qsqlerror/qsqlerror.pro (renamed from tests/auto/qsqlerror/qsqlerror.pro)0
-rw-r--r--tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp (renamed from tests/auto/qsqlerror/tst_qsqlerror.cpp)0
-rw-r--r--tests/auto/sql/kernel/qsqlfield/.gitignore (renamed from tests/auto/qsqlfield/.gitignore)0
-rw-r--r--tests/auto/sql/kernel/qsqlfield/qsqlfield.pro (renamed from tests/auto/qsqlfield/qsqlfield.pro)0
-rw-r--r--tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp (renamed from tests/auto/qsqlfield/tst_qsqlfield.cpp)0
-rw-r--r--tests/auto/sql/kernel/qsqlquery/.gitignore (renamed from tests/auto/qsqlquery/.gitignore)0
-rw-r--r--tests/auto/sql/kernel/qsqlquery/qsqlquery.pro (renamed from tests/auto/qsqlquery/qsqlquery.pro)0
-rw-r--r--tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp (renamed from tests/auto/qsqlquery/tst_qsqlquery.cpp)0
-rw-r--r--tests/auto/sql/kernel/qsqlrecord/.gitignore (renamed from tests/auto/qsqlrecord/.gitignore)0
-rw-r--r--tests/auto/sql/kernel/qsqlrecord/qsqlrecord.pro (renamed from tests/auto/qsqlrecord/qsqlrecord.pro)0
-rw-r--r--tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp (renamed from tests/auto/qsqlrecord/tst_qsqlrecord.cpp)0
-rw-r--r--tests/auto/sql/kernel/qsqlthread/.gitignore (renamed from tests/auto/qsqlthread/.gitignore)0
-rw-r--r--tests/auto/sql/kernel/qsqlthread/qsqlthread.pro (renamed from tests/auto/qsqlthread/qsqlthread.pro)0
-rw-r--r--tests/auto/sql/kernel/qsqlthread/tst_qsqlthread.cpp (renamed from tests/auto/qsqlthread/tst_qsqlthread.cpp)0
-rw-r--r--tests/auto/sql/models/models.pro6
-rw-r--r--tests/auto/sql/models/qsqlquerymodel/.gitignore (renamed from tests/auto/qsqlquerymodel/.gitignore)0
-rw-r--r--tests/auto/sql/models/qsqlquerymodel/qsqlquerymodel.pro20
-rw-r--r--tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp641
-rw-r--r--tests/auto/sql/models/qsqlrelationaltablemodel/.gitignore (renamed from tests/auto/qsqlrelationaltablemodel/.gitignore)0
-rw-r--r--tests/auto/sql/models/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro (renamed from tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro)0
-rw-r--r--tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp1494
-rw-r--r--tests/auto/sql/models/qsqltablemodel/.gitignore (renamed from tests/auto/qsqltablemodel/.gitignore)0
-rw-r--r--tests/auto/sql/models/qsqltablemodel/qsqltablemodel.pro (renamed from tests/auto/qsqltablemodel/qsqltablemodel.pro)0
-rw-r--r--tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp1377
-rw-r--r--tests/auto/sql/sql.pro5
-rw-r--r--tests/auto/testlib/qsignalspy/.gitignore (renamed from tests/auto/qsignalspy/.gitignore)0
-rw-r--r--tests/auto/testlib/qsignalspy/qsignalspy.pro (renamed from tests/auto/qsignalspy/qsignalspy.pro)0
-rw-r--r--tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp (renamed from tests/auto/qsignalspy/tst_qsignalspy.cpp)0
-rw-r--r--tests/auto/testlib/selftests/.gitignore (renamed from tests/auto/selftests/.gitignore)0
-rw-r--r--tests/auto/testlib/selftests/alive/.gitignore (renamed from tests/auto/selftests/alive/.gitignore)0
-rw-r--r--tests/auto/testlib/selftests/alive/alive.pro (renamed from tests/auto/selftests/alive/alive.pro)0
-rw-r--r--tests/auto/testlib/selftests/alive/qtestalive.cpp (renamed from tests/auto/selftests/alive/qtestalive.cpp)0
-rw-r--r--tests/auto/testlib/selftests/alive/tst_alive.cpp (renamed from tests/auto/selftests/alive/tst_alive.cpp)0
-rw-r--r--tests/auto/testlib/selftests/assert/assert.pro (renamed from tests/auto/selftests/assert/assert.pro)0
-rw-r--r--tests/auto/testlib/selftests/assert/tst_assert.cpp (renamed from tests/auto/selftests/assert/tst_assert.cpp)0
-rw-r--r--tests/auto/testlib/selftests/badxml/badxml.pro (renamed from tests/auto/selftests/badxml/badxml.pro)0
-rw-r--r--tests/auto/testlib/selftests/badxml/tst_badxml.cpp (renamed from tests/auto/selftests/badxml/tst_badxml.cpp)0
-rw-r--r--tests/auto/testlib/selftests/benchlibcallgrind/benchlibcallgrind.pro (renamed from tests/auto/selftests/benchlibcallgrind/benchlibcallgrind.pro)0
-rw-r--r--tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp (renamed from tests/auto/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp)0
-rw-r--r--tests/auto/testlib/selftests/benchlibeventcounter/benchlibeventcounter.pro (renamed from tests/auto/selftests/benchlibeventcounter/benchlibeventcounter.pro)0
-rw-r--r--tests/auto/testlib/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp (renamed from tests/auto/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp)0
-rw-r--r--tests/auto/testlib/selftests/benchliboptions/benchliboptions.pro (renamed from tests/auto/selftests/benchliboptions/benchliboptions.pro)0
-rw-r--r--tests/auto/testlib/selftests/benchliboptions/tst_benchliboptions.cpp (renamed from tests/auto/selftests/benchliboptions/tst_benchliboptions.cpp)0
-rw-r--r--tests/auto/testlib/selftests/benchlibtickcounter/benchlibtickcounter.pro (renamed from tests/auto/selftests/benchlibtickcounter/benchlibtickcounter.pro)0
-rw-r--r--tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp (renamed from tests/auto/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp)0
-rw-r--r--tests/auto/testlib/selftests/benchlibwalltime/benchlibwalltime.pro (renamed from tests/auto/selftests/benchlibwalltime/benchlibwalltime.pro)0
-rw-r--r--tests/auto/testlib/selftests/benchlibwalltime/tst_benchlibwalltime.cpp (renamed from tests/auto/selftests/benchlibwalltime/tst_benchlibwalltime.cpp)0
-rw-r--r--tests/auto/testlib/selftests/cmptest/cmptest.pro (renamed from tests/auto/selftests/cmptest/cmptest.pro)0
-rw-r--r--tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp (renamed from tests/auto/selftests/cmptest/tst_cmptest.cpp)0
-rw-r--r--tests/auto/testlib/selftests/commandlinedata/commandlinedata.pro (renamed from tests/auto/selftests/commandlinedata/commandlinedata.pro)0
-rw-r--r--tests/auto/testlib/selftests/commandlinedata/tst_commandlinedata.cpp (renamed from tests/auto/selftests/commandlinedata/tst_commandlinedata.cpp)0
-rw-r--r--tests/auto/testlib/selftests/crashes/crashes.pro (renamed from tests/auto/selftests/crashes/crashes.pro)0
-rw-r--r--tests/auto/testlib/selftests/crashes/tst_crashes.cpp (renamed from tests/auto/selftests/crashes/tst_crashes.cpp)0
-rw-r--r--tests/auto/testlib/selftests/datatable/datatable.pro (renamed from tests/auto/selftests/datatable/datatable.pro)0
-rw-r--r--tests/auto/testlib/selftests/datatable/tst_datatable.cpp (renamed from tests/auto/selftests/datatable/tst_datatable.cpp)0
-rw-r--r--tests/auto/testlib/selftests/datetime/datetime.pro (renamed from tests/auto/selftests/datetime/datetime.pro)0
-rw-r--r--tests/auto/testlib/selftests/datetime/tst_datetime.cpp (renamed from tests/auto/selftests/datetime/tst_datetime.cpp)0
-rw-r--r--tests/auto/testlib/selftests/differentexec/differentexec.pro (renamed from tests/auto/selftests/differentexec/differentexec.pro)0
-rw-r--r--tests/auto/testlib/selftests/differentexec/tst_differentexec.cpp (renamed from tests/auto/selftests/differentexec/tst_differentexec.cpp)0
-rw-r--r--tests/auto/testlib/selftests/exceptionthrow/exceptionthrow.pro (renamed from tests/auto/selftests/exceptionthrow/exceptionthrow.pro)0
-rw-r--r--tests/auto/testlib/selftests/exceptionthrow/tst_exceptionthrow.cpp (renamed from tests/auto/selftests/exceptionthrow/tst_exceptionthrow.cpp)0
-rw-r--r--tests/auto/testlib/selftests/expected_alive.txt (renamed from tests/auto/selftests/expected_alive.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_assert.lightxml (renamed from tests/auto/selftests/expected_assert.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_assert.txt (renamed from tests/auto/selftests/expected_assert.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_assert.xml (renamed from tests/auto/selftests/expected_assert.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_assert.xunitxml (renamed from tests/auto/selftests/expected_assert.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_badxml.lightxml (renamed from tests/auto/selftests/expected_badxml.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_badxml.txt (renamed from tests/auto/selftests/expected_badxml.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_badxml.xml (renamed from tests/auto/selftests/expected_badxml.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_badxml.xunitxml (renamed from tests/auto/selftests/expected_badxml.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibcallgrind.lightxml (renamed from tests/auto/selftests/expected_benchlibcallgrind.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibcallgrind.txt (renamed from tests/auto/selftests/expected_benchlibcallgrind.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibcallgrind.xml (renamed from tests/auto/selftests/expected_benchlibcallgrind.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibcallgrind.xunitxml (renamed from tests/auto/selftests/expected_benchlibcallgrind.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibeventcounter.lightxml (renamed from tests/auto/selftests/expected_benchlibeventcounter.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibeventcounter.txt (renamed from tests/auto/selftests/expected_benchlibeventcounter.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibeventcounter.xml (renamed from tests/auto/selftests/expected_benchlibeventcounter.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibeventcounter.xunitxml (renamed from tests/auto/selftests/expected_benchlibeventcounter.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchliboptions.lightxml (renamed from tests/auto/selftests/expected_benchliboptions.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchliboptions.txt (renamed from tests/auto/selftests/expected_benchliboptions.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchliboptions.xml (renamed from tests/auto/selftests/expected_benchliboptions.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchliboptions.xunitxml (renamed from tests/auto/selftests/expected_benchliboptions.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibtickcounter.lightxml (renamed from tests/auto/selftests/expected_benchlibtickcounter.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibtickcounter.txt (renamed from tests/auto/selftests/expected_benchlibtickcounter.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibtickcounter.xml (renamed from tests/auto/selftests/expected_benchlibtickcounter.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibtickcounter.xunitxml (renamed from tests/auto/selftests/expected_benchlibtickcounter.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibwalltime.lightxml (renamed from tests/auto/selftests/expected_benchlibwalltime.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibwalltime.txt (renamed from tests/auto/selftests/expected_benchlibwalltime.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibwalltime.xml (renamed from tests/auto/selftests/expected_benchlibwalltime.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_benchlibwalltime.xunitxml (renamed from tests/auto/selftests/expected_benchlibwalltime.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_cmptest.lightxml (renamed from tests/auto/selftests/expected_cmptest.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_cmptest.txt (renamed from tests/auto/selftests/expected_cmptest.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_cmptest.xml (renamed from tests/auto/selftests/expected_cmptest.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_cmptest.xunitxml (renamed from tests/auto/selftests/expected_cmptest.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_commandlinedata.lightxml (renamed from tests/auto/selftests/expected_commandlinedata.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_commandlinedata.txt (renamed from tests/auto/selftests/expected_commandlinedata.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_commandlinedata.xml (renamed from tests/auto/selftests/expected_commandlinedata.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_commandlinedata.xunitxml (renamed from tests/auto/selftests/expected_commandlinedata.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_crashes.lightxml (renamed from tests/auto/selftests/expected_crashes.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_crashes.xml (renamed from tests/auto/selftests/expected_crashes.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_crashes.xunitxml (renamed from tests/auto/selftests/expected_crashes.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_crashes_1.txt (renamed from tests/auto/selftests/expected_crashes_1.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_crashes_2.txt (renamed from tests/auto/selftests/expected_crashes_2.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_crashes_3.txt (renamed from tests/auto/selftests/expected_crashes_3.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_datatable.lightxml (renamed from tests/auto/selftests/expected_datatable.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_datatable.txt (renamed from tests/auto/selftests/expected_datatable.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_datatable.xml (renamed from tests/auto/selftests/expected_datatable.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_datatable.xunitxml (renamed from tests/auto/selftests/expected_datatable.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_datetime.lightxml (renamed from tests/auto/selftests/expected_datetime.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_datetime.txt (renamed from tests/auto/selftests/expected_datetime.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_datetime.xml (renamed from tests/auto/selftests/expected_datetime.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_datetime.xunitxml (renamed from tests/auto/selftests/expected_datetime.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_differentexec.txt (renamed from tests/auto/selftests/expected_differentexec.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_exceptionthrow.lightxml (renamed from tests/auto/selftests/expected_exceptionthrow.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_exceptionthrow.txt (renamed from tests/auto/selftests/expected_exceptionthrow.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_exceptionthrow.xml (renamed from tests/auto/selftests/expected_exceptionthrow.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_exceptionthrow.xunitxml (renamed from tests/auto/selftests/expected_exceptionthrow.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_expectfail.lightxml (renamed from tests/auto/selftests/expected_expectfail.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_expectfail.txt (renamed from tests/auto/selftests/expected_expectfail.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_expectfail.xml (renamed from tests/auto/selftests/expected_expectfail.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_expectfail.xunitxml (renamed from tests/auto/selftests/expected_expectfail.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_failinit.lightxml (renamed from tests/auto/selftests/expected_failinit.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_failinit.txt (renamed from tests/auto/selftests/expected_failinit.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_failinit.xml (renamed from tests/auto/selftests/expected_failinit.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_failinit.xunitxml (renamed from tests/auto/selftests/expected_failinit.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_failinitdata.lightxml (renamed from tests/auto/selftests/expected_failinitdata.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_failinitdata.txt (renamed from tests/auto/selftests/expected_failinitdata.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_failinitdata.xml (renamed from tests/auto/selftests/expected_failinitdata.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_failinitdata.xunitxml (renamed from tests/auto/selftests/expected_failinitdata.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_fatal.txt (renamed from tests/auto/selftests/expected_fatal.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_fetchbogus.lightxml (renamed from tests/auto/selftests/expected_fetchbogus.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_fetchbogus.txt (renamed from tests/auto/selftests/expected_fetchbogus.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_fetchbogus.xml (renamed from tests/auto/selftests/expected_fetchbogus.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_fetchbogus.xunitxml (renamed from tests/auto/selftests/expected_fetchbogus.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_globaldata.lightxml (renamed from tests/auto/selftests/expected_globaldata.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_globaldata.txt (renamed from tests/auto/selftests/expected_globaldata.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_globaldata.xml (renamed from tests/auto/selftests/expected_globaldata.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_globaldata.xunitxml (renamed from tests/auto/selftests/expected_globaldata.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_longstring.lightxml (renamed from tests/auto/selftests/expected_longstring.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_longstring.txt (renamed from tests/auto/selftests/expected_longstring.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_longstring.xml (renamed from tests/auto/selftests/expected_longstring.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_longstring.xunitxml (renamed from tests/auto/selftests/expected_longstring.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_maxwarnings.lightxml (renamed from tests/auto/selftests/expected_maxwarnings.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_maxwarnings.txt (renamed from tests/auto/selftests/expected_maxwarnings.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_maxwarnings.xml (renamed from tests/auto/selftests/expected_maxwarnings.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_maxwarnings.xunitxml (renamed from tests/auto/selftests/expected_maxwarnings.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_multiexec.lightxml (renamed from tests/auto/selftests/expected_multiexec.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_multiexec.txt (renamed from tests/auto/selftests/expected_multiexec.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_multiexec.xml (renamed from tests/auto/selftests/expected_multiexec.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_multiexec.xunitxml (renamed from tests/auto/selftests/expected_multiexec.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_qexecstringlist.txt (renamed from tests/auto/selftests/expected_qexecstringlist.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_singleskip.lightxml (renamed from tests/auto/selftests/expected_singleskip.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_singleskip.txt (renamed from tests/auto/selftests/expected_singleskip.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_singleskip.xml (renamed from tests/auto/selftests/expected_singleskip.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_singleskip.xunitxml (renamed from tests/auto/selftests/expected_singleskip.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skip.lightxml (renamed from tests/auto/selftests/expected_skip.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skip.txt (renamed from tests/auto/selftests/expected_skip.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_skip.xml (renamed from tests/auto/selftests/expected_skip.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skip.xunitxml (renamed from tests/auto/selftests/expected_skip.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipglobal.lightxml (renamed from tests/auto/selftests/expected_skipglobal.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipglobal.txt (renamed from tests/auto/selftests/expected_skipglobal.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipglobal.xml (renamed from tests/auto/selftests/expected_skipglobal.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipglobal.xunitxml (renamed from tests/auto/selftests/expected_skipglobal.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipinit.lightxml (renamed from tests/auto/selftests/expected_skipinit.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipinit.txt (renamed from tests/auto/selftests/expected_skipinit.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipinit.xml (renamed from tests/auto/selftests/expected_skipinit.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipinit.xunitxml (renamed from tests/auto/selftests/expected_skipinit.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipinitdata.lightxml (renamed from tests/auto/selftests/expected_skipinitdata.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipinitdata.txt (renamed from tests/auto/selftests/expected_skipinitdata.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipinitdata.xml (renamed from tests/auto/selftests/expected_skipinitdata.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_skipinitdata.xunitxml (renamed from tests/auto/selftests/expected_skipinitdata.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_sleep.lightxml (renamed from tests/auto/selftests/expected_sleep.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_sleep.txt (renamed from tests/auto/selftests/expected_sleep.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_sleep.xml (renamed from tests/auto/selftests/expected_sleep.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_sleep.xunitxml (renamed from tests/auto/selftests/expected_sleep.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_strcmp.lightxml (renamed from tests/auto/selftests/expected_strcmp.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_strcmp.txt (renamed from tests/auto/selftests/expected_strcmp.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_strcmp.xml (renamed from tests/auto/selftests/expected_strcmp.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_strcmp.xunitxml (renamed from tests/auto/selftests/expected_strcmp.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_subtest.lightxml (renamed from tests/auto/selftests/expected_subtest.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_subtest.txt (renamed from tests/auto/selftests/expected_subtest.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_subtest.xml (renamed from tests/auto/selftests/expected_subtest.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_subtest.xunitxml (renamed from tests/auto/selftests/expected_subtest.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_waitwithoutgui.lightxml (renamed from tests/auto/selftests/expected_waitwithoutgui.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_waitwithoutgui.txt (renamed from tests/auto/selftests/expected_waitwithoutgui.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_waitwithoutgui.xml (renamed from tests/auto/selftests/expected_waitwithoutgui.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_waitwithoutgui.xunitxml (renamed from tests/auto/selftests/expected_waitwithoutgui.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_warnings.lightxml (renamed from tests/auto/selftests/expected_warnings.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_warnings.txt (renamed from tests/auto/selftests/expected_warnings.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_warnings.xml (renamed from tests/auto/selftests/expected_warnings.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_warnings.xunitxml (renamed from tests/auto/selftests/expected_warnings.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_xunit.lightxml (renamed from tests/auto/selftests/expected_xunit.lightxml)0
-rw-r--r--tests/auto/testlib/selftests/expected_xunit.txt (renamed from tests/auto/selftests/expected_xunit.txt)0
-rw-r--r--tests/auto/testlib/selftests/expected_xunit.xml (renamed from tests/auto/selftests/expected_xunit.xml)0
-rw-r--r--tests/auto/testlib/selftests/expected_xunit.xunitxml (renamed from tests/auto/selftests/expected_xunit.xunitxml)0
-rw-r--r--tests/auto/testlib/selftests/expectfail/expectfail.pro (renamed from tests/auto/selftests/expectfail/expectfail.pro)0
-rw-r--r--tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp (renamed from tests/auto/selftests/expectfail/tst_expectfail.cpp)0
-rw-r--r--tests/auto/testlib/selftests/failinit/failinit.pro (renamed from tests/auto/selftests/failinit/failinit.pro)0
-rw-r--r--tests/auto/testlib/selftests/failinit/tst_failinit.cpp (renamed from tests/auto/selftests/failinit/tst_failinit.cpp)0
-rw-r--r--tests/auto/testlib/selftests/failinitdata/failinitdata.pro (renamed from tests/auto/selftests/failinitdata/failinitdata.pro)0
-rw-r--r--tests/auto/testlib/selftests/failinitdata/tst_failinitdata.cpp (renamed from tests/auto/selftests/failinitdata/tst_failinitdata.cpp)0
-rw-r--r--tests/auto/testlib/selftests/fetchbogus/fetchbogus.pro (renamed from tests/auto/selftests/fetchbogus/fetchbogus.pro)0
-rw-r--r--tests/auto/testlib/selftests/fetchbogus/tst_fetchbogus.cpp (renamed from tests/auto/selftests/fetchbogus/tst_fetchbogus.cpp)0
-rw-r--r--tests/auto/testlib/selftests/globaldata/globaldata.pro (renamed from tests/auto/selftests/globaldata/globaldata.pro)0
-rw-r--r--tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp (renamed from tests/auto/selftests/globaldata/tst_globaldata.cpp)0
-rw-r--r--tests/auto/testlib/selftests/longstring/longstring.pro (renamed from tests/auto/selftests/longstring/longstring.pro)0
-rw-r--r--tests/auto/testlib/selftests/longstring/tst_longstring.cpp (renamed from tests/auto/selftests/longstring/tst_longstring.cpp)0
-rw-r--r--tests/auto/testlib/selftests/maxwarnings/maxwarnings.cpp (renamed from tests/auto/selftests/maxwarnings/maxwarnings.cpp)0
-rw-r--r--tests/auto/testlib/selftests/maxwarnings/maxwarnings.pro (renamed from tests/auto/selftests/maxwarnings/maxwarnings.pro)0
-rw-r--r--tests/auto/testlib/selftests/multiexec/multiexec.pro (renamed from tests/auto/selftests/multiexec/multiexec.pro)0
-rw-r--r--tests/auto/testlib/selftests/multiexec/tst_multiexec.cpp (renamed from tests/auto/selftests/multiexec/tst_multiexec.cpp)0
-rw-r--r--tests/auto/testlib/selftests/qexecstringlist/qexecstringlist.pro (renamed from tests/auto/selftests/qexecstringlist/qexecstringlist.pro)0
-rw-r--r--tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp (renamed from tests/auto/selftests/qexecstringlist/tst_qexecstringlist.cpp)0
-rw-r--r--tests/auto/testlib/selftests/selftests.pro (renamed from tests/auto/selftests/selftests.pro)0
-rw-r--r--tests/auto/testlib/selftests/selftests.qrc (renamed from tests/auto/selftests/selftests.qrc)0
-rw-r--r--tests/auto/testlib/selftests/singleskip/singleskip.pro (renamed from tests/auto/selftests/singleskip/singleskip.pro)0
-rw-r--r--tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp (renamed from tests/auto/selftests/singleskip/tst_singleskip.cpp)0
-rw-r--r--tests/auto/testlib/selftests/skip/skip.pro (renamed from tests/auto/selftests/skip/skip.pro)0
-rw-r--r--tests/auto/testlib/selftests/skip/tst_skip.cpp (renamed from tests/auto/selftests/skip/tst_skip.cpp)0
-rw-r--r--tests/auto/testlib/selftests/skipglobal/skipglobal.pro (renamed from tests/auto/selftests/skipglobal/skipglobal.pro)0
-rw-r--r--tests/auto/testlib/selftests/skipglobal/tst_skipglobal.cpp (renamed from tests/auto/selftests/skipglobal/tst_skipglobal.cpp)0
-rw-r--r--tests/auto/testlib/selftests/skipinit/skipinit.pro (renamed from tests/auto/selftests/skipinit/skipinit.pro)0
-rw-r--r--tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp (renamed from tests/auto/selftests/skipinit/tst_skipinit.cpp)0
-rw-r--r--tests/auto/testlib/selftests/skipinitdata/skipinitdata.pro (renamed from tests/auto/selftests/skipinitdata/skipinitdata.pro)0
-rw-r--r--tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp (renamed from tests/auto/selftests/skipinitdata/tst_skipinitdata.cpp)0
-rw-r--r--tests/auto/testlib/selftests/sleep/sleep.pro (renamed from tests/auto/selftests/sleep/sleep.pro)0
-rw-r--r--tests/auto/testlib/selftests/sleep/tst_sleep.cpp (renamed from tests/auto/selftests/sleep/tst_sleep.cpp)0
-rw-r--r--tests/auto/testlib/selftests/strcmp/strcmp.pro (renamed from tests/auto/selftests/strcmp/strcmp.pro)0
-rw-r--r--tests/auto/testlib/selftests/strcmp/tst_strcmp.cpp (renamed from tests/auto/selftests/strcmp/tst_strcmp.cpp)0
-rw-r--r--tests/auto/testlib/selftests/subtest/subtest.pro (renamed from tests/auto/selftests/subtest/subtest.pro)0
-rw-r--r--tests/auto/testlib/selftests/subtest/tst_subtest.cpp (renamed from tests/auto/selftests/subtest/tst_subtest.cpp)0
-rw-r--r--tests/auto/testlib/selftests/test/test.pro17
-rw-r--r--tests/auto/testlib/selftests/tst_selftests.cpp (renamed from tests/auto/selftests/tst_selftests.cpp)0
-rw-r--r--tests/auto/testlib/selftests/waitwithoutgui/tst_waitwithoutgui.cpp (renamed from tests/auto/selftests/waitwithoutgui/tst_waitwithoutgui.cpp)0
-rw-r--r--tests/auto/testlib/selftests/waitwithoutgui/waitwithoutgui.pro (renamed from tests/auto/selftests/waitwithoutgui/waitwithoutgui.pro)0
-rw-r--r--tests/auto/testlib/selftests/warnings/tst_warnings.cpp (renamed from tests/auto/selftests/warnings/tst_warnings.cpp)0
-rw-r--r--tests/auto/testlib/selftests/warnings/warnings.pro (renamed from tests/auto/selftests/warnings/warnings.pro)0
-rw-r--r--tests/auto/testlib/selftests/xunit/tst_xunit.cpp (renamed from tests/auto/selftests/xunit/tst_xunit.cpp)0
-rw-r--r--tests/auto/testlib/selftests/xunit/xunit.pro (renamed from tests/auto/selftests/xunit/xunit.pro)0
-rw-r--r--tests/auto/testlib/testlib.pro5
-rw-r--r--tests/auto/tools/moc/.gitattributes (renamed from tests/auto/moc/.gitattributes)0
-rw-r--r--tests/auto/tools/moc/.gitignore (renamed from tests/auto/moc/.gitignore)0
-rw-r--r--tests/auto/tools/moc/Header (renamed from tests/auto/moc/Header)0
-rw-r--r--tests/auto/tools/moc/Test.framework/Headers/testinterface.h (renamed from tests/auto/moc/Test.framework/Headers/testinterface.h)0
-rw-r--r--tests/auto/tools/moc/assign-namespace.h (renamed from tests/auto/moc/assign-namespace.h)0
-rw-r--r--tests/auto/tools/moc/backslash-newlines.h (renamed from tests/auto/moc/backslash-newlines.h)0
-rw-r--r--tests/auto/tools/moc/c-comments.h (renamed from tests/auto/moc/c-comments.h)0
-rw-r--r--tests/auto/tools/moc/cstyle-enums.h (renamed from tests/auto/moc/cstyle-enums.h)0
-rw-r--r--tests/auto/tools/moc/dir-in-include-path.h (renamed from tests/auto/moc/dir-in-include-path.h)0
-rw-r--r--tests/auto/tools/moc/error-on-wrong-notify.h (renamed from tests/auto/moc/error-on-wrong-notify.h)0
-rw-r--r--tests/auto/tools/moc/escapes-in-string-literals.h (renamed from tests/auto/moc/escapes-in-string-literals.h)0
-rw-r--r--tests/auto/tools/moc/extraqualification.h (renamed from tests/auto/moc/extraqualification.h)0
-rw-r--r--tests/auto/tools/moc/forgotten-qinterface.h (renamed from tests/auto/moc/forgotten-qinterface.h)0
-rw-r--r--tests/auto/tools/moc/gadgetwithnoenums.h (renamed from tests/auto/moc/gadgetwithnoenums.h)0
-rw-r--r--tests/auto/tools/moc/interface-from-framework.h (renamed from tests/auto/moc/interface-from-framework.h)0
-rw-r--r--tests/auto/tools/moc/macro-on-cmdline.h (renamed from tests/auto/moc/macro-on-cmdline.h)0
-rw-r--r--tests/auto/tools/moc/moc.pro29
-rw-r--r--tests/auto/tools/moc/namespaced-flags.h (renamed from tests/auto/moc/namespaced-flags.h)0
-rw-r--r--tests/auto/tools/moc/no-keywords.h (renamed from tests/auto/moc/no-keywords.h)0
-rw-r--r--tests/auto/tools/moc/oldstyle-casts.h (renamed from tests/auto/moc/oldstyle-casts.h)0
-rw-r--r--tests/auto/tools/moc/os9-newlines.h (renamed from tests/auto/moc/os9-newlines.h)0
-rw-r--r--tests/auto/tools/moc/parse-boost.h (renamed from tests/auto/moc/parse-boost.h)0
-rw-r--r--tests/auto/tools/moc/pure-virtual-signals.h (renamed from tests/auto/moc/pure-virtual-signals.h)0
-rw-r--r--tests/auto/tools/moc/qinvokable.h (renamed from tests/auto/moc/qinvokable.h)0
-rw-r--r--tests/auto/tools/moc/qprivateslots.h (renamed from tests/auto/moc/qprivateslots.h)0
-rw-r--r--tests/auto/tools/moc/single_function_keyword.h (renamed from tests/auto/moc/single_function_keyword.h)0
-rw-r--r--tests/auto/tools/moc/slots-with-void-template.h (renamed from tests/auto/moc/slots-with-void-template.h)0
-rw-r--r--tests/auto/tools/moc/task189996.h (renamed from tests/auto/moc/task189996.h)0
-rw-r--r--tests/auto/tools/moc/task192552.h (renamed from tests/auto/moc/task192552.h)0
-rw-r--r--tests/auto/tools/moc/task234909.h (renamed from tests/auto/moc/task234909.h)0
-rw-r--r--tests/auto/tools/moc/task240368.h (renamed from tests/auto/moc/task240368.h)0
-rw-r--r--tests/auto/tools/moc/task71021/dummy (renamed from tests/auto/qdiriterator/entrylist/directory/dummy)0
-rw-r--r--tests/auto/tools/moc/task87883.h (renamed from tests/auto/moc/task87883.h)0
-rw-r--r--tests/auto/tools/moc/template-gtgt.h (renamed from tests/auto/moc/template-gtgt.h)0
-rw-r--r--tests/auto/tools/moc/testproject/Plugin/Plugin.h (renamed from tests/auto/moc/testproject/Plugin/Plugin.h)0
-rw-r--r--tests/auto/tools/moc/testproject/include/Plugin (renamed from tests/auto/moc/testproject/include/Plugin)0
-rw-r--r--tests/auto/tools/moc/trigraphs.h (renamed from tests/auto/moc/trigraphs.h)0
-rw-r--r--tests/auto/tools/moc/tst_moc.cpp (renamed from tests/auto/moc/tst_moc.cpp)0
-rw-r--r--tests/auto/tools/moc/using-namespaces.h (renamed from tests/auto/moc/using-namespaces.h)0
-rw-r--r--tests/auto/tools/moc/warn-on-multiple-qobject-subclasses.h (renamed from tests/auto/moc/warn-on-multiple-qobject-subclasses.h)0
-rw-r--r--tests/auto/tools/moc/warn-on-property-without-read.h (renamed from tests/auto/moc/warn-on-property-without-read.h)0
-rw-r--r--tests/auto/tools/moc/win-newlines.h (renamed from tests/auto/moc/win-newlines.h)0
-rw-r--r--tests/auto/tools/qmake/.gitignore (renamed from tests/auto/qmake/.gitignore)0
-rw-r--r--tests/auto/tools/qmake/qmake.pro8
-rw-r--r--tests/auto/tools/qmake/testcompiler.cpp (renamed from tests/auto/qmake/testcompiler.cpp)0
-rw-r--r--tests/auto/tools/qmake/testcompiler.h (renamed from tests/auto/qmake/testcompiler.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/bundle-spaces/bundle-spaces.pro (renamed from tests/auto/qmake/testdata/bundle-spaces/bundle-spaces.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/bundle-spaces/existing file (renamed from tests/auto/qmake/testdata/bundle-spaces/existing file)0
-rw-r--r--tests/auto/tools/qmake/testdata/bundle-spaces/main.cpp (renamed from tests/auto/qmake/testdata/bundle-spaces/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/bundle-spaces/some-file (renamed from tests/auto/qmake/testdata/bundle-spaces/some-file)0
-rw-r--r--tests/auto/tools/qmake/testdata/comments/comments.pro (renamed from tests/auto/qmake/testdata/comments/comments.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/duplicateLibraryEntries/duplib.pro (renamed from tests/auto/qmake/testdata/duplicateLibraryEntries/duplib.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/export_across_file_boundaries/.qmake.cache (renamed from tests/auto/qmake/testdata/export_across_file_boundaries/.qmake.cache)0
-rw-r--r--tests/auto/tools/qmake/testdata/export_across_file_boundaries/features/default_pre.prf (renamed from tests/auto/qmake/testdata/export_across_file_boundaries/features/default_pre.prf)0
-rw-r--r--tests/auto/tools/qmake/testdata/export_across_file_boundaries/foo.pro (renamed from tests/auto/qmake/testdata/export_across_file_boundaries/foo.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/export_across_file_boundaries/oink.pri (renamed from tests/auto/qmake/testdata/export_across_file_boundaries/oink.pri)0
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/findDeps.pro (renamed from tests/auto/qmake/testdata/findDeps/findDeps.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/main.cpp (renamed from tests/auto/qmake/testdata/findDeps/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object1.h (renamed from tests/auto/qmake/testdata/findDeps/object1.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object2.h (renamed from tests/auto/qmake/testdata/findDeps/object2.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object3.h (renamed from tests/auto/qmake/testdata/findDeps/object3.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object4.h (renamed from tests/auto/qmake/testdata/findDeps/object4.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object5.h (renamed from tests/auto/qmake/testdata/findDeps/object5.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object6.h (renamed from tests/auto/qmake/testdata/findDeps/object6.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object7.h (renamed from tests/auto/qmake/testdata/findDeps/object7.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object8.h (renamed from tests/auto/qmake/testdata/findDeps/object8.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object9.h (renamed from tests/auto/qmake/testdata/findDeps/object9.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/findMocs.pro (renamed from tests/auto/qmake/testdata/findMocs/findMocs.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/main.cpp (renamed from tests/auto/qmake/testdata/findMocs/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object1.h (renamed from tests/auto/qmake/testdata/findMocs/object1.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object2.h (renamed from tests/auto/qmake/testdata/findMocs/object2.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object3.h (renamed from tests/auto/qmake/testdata/findMocs/object3.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object4.h (renamed from tests/auto/qmake/testdata/findMocs/object4.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object5.h (renamed from tests/auto/qmake/testdata/findMocs/object5.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object6.h (renamed from tests/auto/qmake/testdata/findMocs/object6.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object7.h (renamed from tests/auto/qmake/testdata/findMocs/object7.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/func_export/func_export.pro (renamed from tests/auto/qmake/testdata/func_export/func_export.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/func_variables/func_variables.pro (renamed from tests/auto/qmake/testdata/func_variables/func_variables.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/1.cpp (renamed from tests/auto/qmake/testdata/functions/1.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/2.cpp (renamed from tests/auto/qmake/testdata/functions/2.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/functions.pro (renamed from tests/auto/qmake/testdata/functions/functions.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/infiletest.pro (renamed from tests/auto/qmake/testdata/functions/infiletest.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/one/1.cpp (renamed from tests/auto/qmake/testdata/functions/one/1.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/one/2.cpp (renamed from tests/auto/qmake/testdata/functions/one/2.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/three/wildcard21.cpp (renamed from tests/auto/qmake/testdata/functions/three/wildcard21.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/three/wildcard22.cpp (renamed from tests/auto/qmake/testdata/functions/three/wildcard22.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/two/1.cpp (renamed from tests/auto/qmake/testdata/functions/two/1.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/two/2.cpp (renamed from tests/auto/qmake/testdata/functions/two/2.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/wildcard21.cpp (renamed from tests/auto/qmake/testdata/functions/wildcard21.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/functions/wildcard22.cpp (renamed from tests/auto/qmake/testdata/functions/wildcard22.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/include_dir/foo.pro (renamed from tests/auto/qmake/testdata/include_dir/foo.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/include_dir/main.cpp (renamed from tests/auto/qmake/testdata/include_dir/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/include_dir/test_file.cpp (renamed from tests/auto/qmake/testdata/include_dir/test_file.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/include_dir/test_file.h (renamed from tests/auto/qmake/testdata/include_dir/test_file.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/include_dir/untitled.ui (renamed from tests/auto/qmake/testdata/include_dir/untitled.ui)0
-rw-r--r--tests/auto/tools/qmake/testdata/include_dir_build/README (renamed from tests/auto/qmake/testdata/include_dir_build/README)0
-rw-r--r--tests/auto/tools/qmake/testdata/include_function/existing_file.pri (renamed from tests/auto/qmake/testdata/include_function/existing_file.pri)0
-rw-r--r--tests/auto/tools/qmake/testdata/include_function/include_existing_file.pro (renamed from tests/auto/qmake/testdata/include_function/include_existing_file.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/include_function/include_missing_file.pro (renamed from tests/auto/qmake/testdata/include_function/include_missing_file.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/include_function/include_missing_file2.pro (renamed from tests/auto/qmake/testdata/include_function/include_missing_file2.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/include_function/main.cpp (renamed from tests/auto/qmake/testdata/include_function/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/install_depends/foo.pro (renamed from tests/auto/qmake/testdata/install_depends/foo.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/install_depends/main.cpp (renamed from tests/auto/qmake/testdata/install_depends/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/install_depends/test1 (renamed from tests/auto/qmake/testdata/install_depends/test1)0
-rw-r--r--tests/auto/tools/qmake/testdata/install_depends/test2 (renamed from tests/auto/qmake/testdata/install_depends/test2)0
-rw-r--r--tests/auto/tools/qmake/testdata/install_depends/test_file.cpp (renamed from tests/auto/qmake/testdata/install_depends/test_file.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/install_depends/test_file.h (renamed from tests/auto/qmake/testdata/install_depends/test_file.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/one_space/main.cpp (renamed from tests/auto/qmake/testdata/one_space/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/one_space/one_space.pro (renamed from tests/auto/qmake/testdata/one_space/one_space.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/operators/operators.pro (renamed from tests/auto/qmake/testdata/operators/operators.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/prompt/prompt.pro (renamed from tests/auto/qmake/testdata/prompt/prompt.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/quotedfilenames/main.cpp (renamed from tests/auto/qmake/testdata/quotedfilenames/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/quotedfilenames/quotedfilenames.pro (renamed from tests/auto/qmake/testdata/quotedfilenames/quotedfilenames.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/quotedfilenames/rc folder/logo.png (renamed from tests/auto/qmake/testdata/quotedfilenames/rc folder/logo.png)bin16715 -> 16715 bytes
-rw-r--r--tests/auto/tools/qmake/testdata/quotedfilenames/rc folder/test.qrc (renamed from tests/auto/qmake/testdata/quotedfilenames/rc folder/test.qrc)0
-rw-r--r--tests/auto/tools/qmake/testdata/shadow_files/foo.pro (renamed from tests/auto/qmake/testdata/shadow_files/foo.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/shadow_files/main.cpp (renamed from tests/auto/qmake/testdata/shadow_files/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/shadow_files/test.txt (renamed from tests/auto/qmake/testdata/shadow_files/test.txt)0
-rw-r--r--tests/auto/tools/qmake/testdata/shadow_files/test_file.cpp (renamed from tests/auto/qmake/testdata/shadow_files/test_file.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/shadow_files/test_file.h (renamed from tests/auto/qmake/testdata/shadow_files/test_file.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/shadow_files_build/README (renamed from tests/auto/qmake/testdata/shadow_files_build/README)0
-rw-r--r--tests/auto/tools/qmake/testdata/shadow_files_build/foo.bar (renamed from tests/auto/qmake/testdata/shadow_files_build/foo.bar)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_app/build/README (renamed from tests/auto/qmake/testdata/simple_app/build/README)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_app/main.cpp (renamed from tests/auto/qmake/testdata/simple_app/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_app/simple_app.pro (renamed from tests/auto/qmake/testdata/simple_app/simple_app.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_app/test.qrc (renamed from tests/auto/qmake/testdata/simple_app/test.qrc)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_app/test_file.cpp (renamed from tests/auto/qmake/testdata/simple_app/test_file.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_app/test_file.h (renamed from tests/auto/qmake/testdata/simple_app/test_file.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_app_build/README (renamed from tests/auto/qmake/testdata/simple_app_build/README)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_dll/simple.cpp (renamed from tests/auto/qmake/testdata/simple_dll/simple.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_dll/simple.h (renamed from tests/auto/qmake/testdata/simple_dll/simple.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_dll/simple_dll.pro (renamed from tests/auto/qmake/testdata/simple_dll/simple_dll.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_lib/simple.cpp (renamed from tests/auto/qmake/testdata/simple_lib/simple.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_lib/simple.h (renamed from tests/auto/qmake/testdata/simple_lib/simple.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/simple_lib/simple_lib.pro (renamed from tests/auto/qmake/testdata/simple_lib/simple_lib.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/simple/main.cpp (renamed from tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/simple/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/simple/simple.pro (renamed from tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/simple/simple.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/subdir.pro (renamed from tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/subdir.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/subdir_via_pro_file_extra_target.pro (renamed from tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/subdir_via_pro_file_extra_target.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_app/main.cpp (renamed from tests/auto/qmake/testdata/subdirs/simple_app/main.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_app/simple_app.pro (renamed from tests/auto/qmake/testdata/subdirs/simple_app/simple_app.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.cpp (renamed from tests/auto/qmake/testdata/subdirs/simple_app/test_file.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.h (renamed from tests/auto/qmake/testdata/subdirs/simple_app/test_file.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.cpp (renamed from tests/auto/qmake/testdata/subdirs/simple_dll/simple.cpp)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.h (renamed from tests/auto/qmake/testdata/subdirs/simple_dll/simple.h)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple_dll.pro (renamed from tests/auto/qmake/testdata/subdirs/simple_dll/simple_dll.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/subdirs.pro (renamed from tests/auto/qmake/testdata/subdirs/subdirs.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/substitutes/sub/test2.in (renamed from tests/auto/qmake/testdata/substitutes/sub/test2.in)0
-rw-r--r--tests/auto/tools/qmake/testdata/substitutes/test.in (renamed from tests/auto/qmake/testdata/substitutes/test.in)0
-rw-r--r--tests/auto/tools/qmake/testdata/substitutes/test.pro (renamed from tests/auto/qmake/testdata/substitutes/test.pro)0
-rw-r--r--tests/auto/tools/qmake/testdata/substitutes/test3.txt (renamed from tests/auto/qmake/testdata/substitutes/test3.txt)0
-rw-r--r--tests/auto/tools/qmake/testdata/substitutes_build/README (renamed from tests/auto/qmake/testdata/substitutes_build/README)0
-rw-r--r--tests/auto/tools/qmake/testdata/variables/variables.pro (renamed from tests/auto/qmake/testdata/variables/variables.pro)0
-rw-r--r--tests/auto/tools/qmake/tst_qmake.cpp (renamed from tests/auto/qmake/tst_qmake.cpp)0
-rw-r--r--tests/auto/tools/rcc/.gitignore (renamed from tests/auto/rcc/.gitignore)0
-rw-r--r--tests/auto/tools/rcc/data/images.bin.expected (renamed from tests/auto/rcc/data/images.bin.expected)bin663 -> 663 bytes
-rw-r--r--tests/auto/tools/rcc/data/images.expected (renamed from tests/auto/rcc/data/images.expected)0
-rw-r--r--tests/auto/tools/rcc/data/images.qrc (renamed from tests/auto/rcc/data/images.qrc)0
-rw-r--r--tests/auto/tools/rcc/data/images/circle.png (renamed from tests/auto/rcc/data/images/circle.png)bin165 -> 165 bytes
-rw-r--r--tests/auto/tools/rcc/data/images/square.png (renamed from tests/auto/rcc/data/images/square.png)bin94 -> 94 bytes
-rw-r--r--tests/auto/tools/rcc/data/images/subdir/triangle.png (renamed from tests/auto/rcc/data/images/subdir/triangle.png)bin170 -> 170 bytes
-rw-r--r--tests/auto/tools/rcc/rcc.pro (renamed from tests/auto/rcc/rcc.pro)0
-rw-r--r--tests/auto/tools/rcc/tst_rcc.cpp (renamed from tests/auto/rcc/tst_rcc.cpp)0
-rw-r--r--tests/auto/tools/tools.pro7
-rw-r--r--tests/auto/tools/uic/.gitignore (renamed from tests/auto/uic/.gitignore)0
-rw-r--r--tests/auto/tools/uic/baseline/.gitattributes (renamed from tests/auto/uic/baseline/.gitattributes)0
-rw-r--r--tests/auto/tools/uic/baseline/Dialog_with_Buttons_Bottom.ui (renamed from tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/Dialog_with_Buttons_Bottom.ui.h (renamed from tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/Dialog_with_Buttons_Right.ui (renamed from tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/Dialog_with_Buttons_Right.ui.h (renamed from tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/Dialog_without_Buttons.ui (renamed from tests/auto/uic/baseline/Dialog_without_Buttons.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/Dialog_without_Buttons.ui.h (renamed from tests/auto/uic/baseline/Dialog_without_Buttons.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/Main_Window.ui (renamed from tests/auto/uic/baseline/Main_Window.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/Main_Window.ui.h (renamed from tests/auto/uic/baseline/Main_Window.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/Widget.ui (renamed from tests/auto/uic/baseline/Widget.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/Widget.ui.h (renamed from tests/auto/uic/baseline/Widget.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/addlinkdialog.ui (renamed from tests/auto/uic/baseline/addlinkdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/addlinkdialog.ui.h (renamed from tests/auto/uic/baseline/addlinkdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/addtorrentform.ui (renamed from tests/auto/uic/baseline/addtorrentform.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/addtorrentform.ui.h (renamed from tests/auto/uic/baseline/addtorrentform.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/authenticationdialog.ui (renamed from tests/auto/uic/baseline/authenticationdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/authenticationdialog.ui.h (renamed from tests/auto/uic/baseline/authenticationdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/backside.ui (renamed from tests/auto/uic/baseline/backside.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/backside.ui.h (renamed from tests/auto/uic/baseline/backside.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/batchtranslation.ui (renamed from tests/auto/uic/baseline/batchtranslation.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/batchtranslation.ui.h (renamed from tests/auto/uic/baseline/batchtranslation.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/bookmarkdialog.ui (renamed from tests/auto/uic/baseline/bookmarkdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/bookmarkdialog.ui.h (renamed from tests/auto/uic/baseline/bookmarkdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/bookwindow.ui (renamed from tests/auto/uic/baseline/bookwindow.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/bookwindow.ui.h (renamed from tests/auto/uic/baseline/bookwindow.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/browserwidget.ui (renamed from tests/auto/uic/baseline/browserwidget.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/browserwidget.ui.h (renamed from tests/auto/uic/baseline/browserwidget.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/calculator.ui (renamed from tests/auto/uic/baseline/calculator.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/calculator.ui.h (renamed from tests/auto/uic/baseline/calculator.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/calculatorform.ui (renamed from tests/auto/uic/baseline/calculatorform.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/calculatorform.ui.h (renamed from tests/auto/uic/baseline/calculatorform.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/certificateinfo.ui (renamed from tests/auto/uic/baseline/certificateinfo.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/certificateinfo.ui.h (renamed from tests/auto/uic/baseline/certificateinfo.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/chatdialog.ui (renamed from tests/auto/uic/baseline/chatdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/chatdialog.ui.h (renamed from tests/auto/uic/baseline/chatdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/chatmainwindow.ui (renamed from tests/auto/uic/baseline/chatmainwindow.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/chatmainwindow.ui.h (renamed from tests/auto/uic/baseline/chatmainwindow.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/chatsetnickname.ui (renamed from tests/auto/uic/baseline/chatsetnickname.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/chatsetnickname.ui.h (renamed from tests/auto/uic/baseline/chatsetnickname.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/config.ui (renamed from tests/auto/uic/baseline/config.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/config.ui.h (renamed from tests/auto/uic/baseline/config.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/connectdialog.ui (renamed from tests/auto/uic/baseline/connectdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/connectdialog.ui.h (renamed from tests/auto/uic/baseline/connectdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/controller.ui (renamed from tests/auto/uic/baseline/controller.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/controller.ui.h (renamed from tests/auto/uic/baseline/controller.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/cookies.ui (renamed from tests/auto/uic/baseline/cookies.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/cookies.ui.h (renamed from tests/auto/uic/baseline/cookies.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/cookiesexceptions.ui (renamed from tests/auto/uic/baseline/cookiesexceptions.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/cookiesexceptions.ui.h (renamed from tests/auto/uic/baseline/cookiesexceptions.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/default.ui (renamed from tests/auto/uic/baseline/default.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/default.ui.h (renamed from tests/auto/uic/baseline/default.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/dialog.ui (renamed from tests/auto/uic/baseline/dialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/dialog.ui.h (renamed from tests/auto/uic/baseline/dialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/downloaditem.ui (renamed from tests/auto/uic/baseline/downloaditem.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/downloaditem.ui.h (renamed from tests/auto/uic/baseline/downloaditem.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/downloads.ui (renamed from tests/auto/uic/baseline/downloads.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/downloads.ui.h (renamed from tests/auto/uic/baseline/downloads.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/embeddeddialog.ui (renamed from tests/auto/uic/baseline/embeddeddialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/embeddeddialog.ui.h (renamed from tests/auto/uic/baseline/embeddeddialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/filespage.ui (renamed from tests/auto/uic/baseline/filespage.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/filespage.ui.h (renamed from tests/auto/uic/baseline/filespage.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/filternamedialog.ui (renamed from tests/auto/uic/baseline/filternamedialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/filternamedialog.ui.h (renamed from tests/auto/uic/baseline/filternamedialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/filterpage.ui (renamed from tests/auto/uic/baseline/filterpage.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/filterpage.ui.h (renamed from tests/auto/uic/baseline/filterpage.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/finddialog.ui (renamed from tests/auto/uic/baseline/finddialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/finddialog.ui.h (renamed from tests/auto/uic/baseline/finddialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/form.ui (renamed from tests/auto/uic/baseline/form.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/form.ui.h (renamed from tests/auto/uic/baseline/form.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/formwindowsettings.ui (renamed from tests/auto/uic/baseline/formwindowsettings.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/formwindowsettings.ui.h (renamed from tests/auto/uic/baseline/formwindowsettings.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/generalpage.ui (renamed from tests/auto/uic/baseline/generalpage.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/generalpage.ui.h (renamed from tests/auto/uic/baseline/generalpage.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/gridalignment.ui (renamed from tests/auto/uic/baseline/gridalignment.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/gridalignment.ui.h (renamed from tests/auto/uic/baseline/gridalignment.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/gridpanel.ui (renamed from tests/auto/uic/baseline/gridpanel.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/gridpanel.ui.h (renamed from tests/auto/uic/baseline/gridpanel.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/helpdialog.ui (renamed from tests/auto/uic/baseline/helpdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/helpdialog.ui.h (renamed from tests/auto/uic/baseline/helpdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/history.ui (renamed from tests/auto/uic/baseline/history.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/history.ui.h (renamed from tests/auto/uic/baseline/history.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/icontheme.ui (renamed from tests/auto/uic/baseline/icontheme.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/icontheme.ui.h (renamed from tests/auto/uic/baseline/icontheme.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/identifierpage.ui (renamed from tests/auto/uic/baseline/identifierpage.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/identifierpage.ui.h (renamed from tests/auto/uic/baseline/identifierpage.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/imagedialog.ui (renamed from tests/auto/uic/baseline/imagedialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/imagedialog.ui.h (renamed from tests/auto/uic/baseline/imagedialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/inputpage.ui (renamed from tests/auto/uic/baseline/inputpage.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/inputpage.ui.h (renamed from tests/auto/uic/baseline/inputpage.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/installdialog.ui (renamed from tests/auto/uic/baseline/installdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/installdialog.ui.h (renamed from tests/auto/uic/baseline/installdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/languagesdialog.ui (renamed from tests/auto/uic/baseline/languagesdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/languagesdialog.ui.h (renamed from tests/auto/uic/baseline/languagesdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/listwidgeteditor.ui (renamed from tests/auto/uic/baseline/listwidgeteditor.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/listwidgeteditor.ui.h (renamed from tests/auto/uic/baseline/listwidgeteditor.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/mainwindow.ui (renamed from tests/auto/uic/baseline/mainwindow.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/mainwindow.ui.h (renamed from tests/auto/uic/baseline/mainwindow.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/mydialog.ui (renamed from tests/auto/uic/baseline/mydialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/mydialog.ui.h (renamed from tests/auto/uic/baseline/mydialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/myform.ui (renamed from tests/auto/uic/baseline/myform.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/myform.ui.h (renamed from tests/auto/uic/baseline/myform.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/newactiondialog.ui (renamed from tests/auto/uic/baseline/newactiondialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/newactiondialog.ui.h (renamed from tests/auto/uic/baseline/newactiondialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/newdynamicpropertydialog.ui (renamed from tests/auto/uic/baseline/newdynamicpropertydialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/newdynamicpropertydialog.ui.h (renamed from tests/auto/uic/baseline/newdynamicpropertydialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/newform.ui (renamed from tests/auto/uic/baseline/newform.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/newform.ui.h (renamed from tests/auto/uic/baseline/newform.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/orderdialog.ui (renamed from tests/auto/uic/baseline/orderdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/orderdialog.ui.h (renamed from tests/auto/uic/baseline/orderdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/outputpage.ui (renamed from tests/auto/uic/baseline/outputpage.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/outputpage.ui.h (renamed from tests/auto/uic/baseline/outputpage.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/pagefold.ui (renamed from tests/auto/uic/baseline/pagefold.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/pagefold.ui.h (renamed from tests/auto/uic/baseline/pagefold.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/paletteeditor.ui (renamed from tests/auto/uic/baseline/paletteeditor.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/paletteeditor.ui.h (renamed from tests/auto/uic/baseline/paletteeditor.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/passworddialog.ui (renamed from tests/auto/uic/baseline/passworddialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/passworddialog.ui.h (renamed from tests/auto/uic/baseline/passworddialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/pathpage.ui (renamed from tests/auto/uic/baseline/pathpage.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/pathpage.ui.h (renamed from tests/auto/uic/baseline/pathpage.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/phrasebookbox.ui (renamed from tests/auto/uic/baseline/phrasebookbox.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/phrasebookbox.ui.h (renamed from tests/auto/uic/baseline/phrasebookbox.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/plugindialog.ui (renamed from tests/auto/uic/baseline/plugindialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/plugindialog.ui.h (renamed from tests/auto/uic/baseline/plugindialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/preferencesdialog.ui (renamed from tests/auto/uic/baseline/preferencesdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/preferencesdialog.ui.h (renamed from tests/auto/uic/baseline/preferencesdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/previewconfigurationwidget.ui (renamed from tests/auto/uic/baseline/previewconfigurationwidget.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/previewconfigurationwidget.ui.h (renamed from tests/auto/uic/baseline/previewconfigurationwidget.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/previewdialogbase.ui (renamed from tests/auto/uic/baseline/previewdialogbase.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/previewdialogbase.ui.h (renamed from tests/auto/uic/baseline/previewdialogbase.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/previewwidget.ui (renamed from tests/auto/uic/baseline/previewwidget.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/previewwidget.ui.h (renamed from tests/auto/uic/baseline/previewwidget.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/proxy.ui (renamed from tests/auto/uic/baseline/proxy.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/proxy.ui.h (renamed from tests/auto/uic/baseline/proxy.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qfiledialog.ui (renamed from tests/auto/uic/baseline/qfiledialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qfiledialog.ui.h (renamed from tests/auto/uic/baseline/qfiledialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qpagesetupwidget.ui (renamed from tests/auto/uic/baseline/qpagesetupwidget.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qpagesetupwidget.ui.h (renamed from tests/auto/uic/baseline/qpagesetupwidget.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qprintpropertieswidget.ui (renamed from tests/auto/uic/baseline/qprintpropertieswidget.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qprintpropertieswidget.ui.h (renamed from tests/auto/uic/baseline/qprintpropertieswidget.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qprintsettingsoutput.ui (renamed from tests/auto/uic/baseline/qprintsettingsoutput.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qprintsettingsoutput.ui.h (renamed from tests/auto/uic/baseline/qprintsettingsoutput.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qprintwidget.ui (renamed from tests/auto/uic/baseline/qprintwidget.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qprintwidget.ui.h (renamed from tests/auto/uic/baseline/qprintwidget.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qsqlconnectiondialog.ui (renamed from tests/auto/uic/baseline/qsqlconnectiondialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qsqlconnectiondialog.ui.h (renamed from tests/auto/uic/baseline/qsqlconnectiondialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qtgradientdialog.ui (renamed from tests/auto/uic/baseline/qtgradientdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qtgradientdialog.ui.h (renamed from tests/auto/uic/baseline/qtgradientdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qtgradienteditor.ui (renamed from tests/auto/uic/baseline/qtgradienteditor.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qtgradienteditor.ui.h (renamed from tests/auto/uic/baseline/qtgradienteditor.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qtgradientview.ui (renamed from tests/auto/uic/baseline/qtgradientview.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qtgradientview.ui.h (renamed from tests/auto/uic/baseline/qtgradientview.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qtgradientviewdialog.ui (renamed from tests/auto/uic/baseline/qtgradientviewdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qtgradientviewdialog.ui.h (renamed from tests/auto/uic/baseline/qtgradientviewdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qtresourceeditordialog.ui (renamed from tests/auto/uic/baseline/qtresourceeditordialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qtresourceeditordialog.ui.h (renamed from tests/auto/uic/baseline/qtresourceeditordialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/qttoolbardialog.ui (renamed from tests/auto/uic/baseline/qttoolbardialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/qttoolbardialog.ui.h (renamed from tests/auto/uic/baseline/qttoolbardialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/querywidget.ui (renamed from tests/auto/uic/baseline/querywidget.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/querywidget.ui.h (renamed from tests/auto/uic/baseline/querywidget.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/remotecontrol.ui (renamed from tests/auto/uic/baseline/remotecontrol.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/remotecontrol.ui.h (renamed from tests/auto/uic/baseline/remotecontrol.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/saveformastemplate.ui (renamed from tests/auto/uic/baseline/saveformastemplate.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/saveformastemplate.ui.h (renamed from tests/auto/uic/baseline/saveformastemplate.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/settings.ui (renamed from tests/auto/uic/baseline/settings.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/settings.ui.h (renamed from tests/auto/uic/baseline/settings.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/signalslotdialog.ui (renamed from tests/auto/uic/baseline/signalslotdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/signalslotdialog.ui.h (renamed from tests/auto/uic/baseline/signalslotdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/sslclient.ui (renamed from tests/auto/uic/baseline/sslclient.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/sslclient.ui.h (renamed from tests/auto/uic/baseline/sslclient.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/sslerrors.ui (renamed from tests/auto/uic/baseline/sslerrors.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/sslerrors.ui.h (renamed from tests/auto/uic/baseline/sslerrors.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/statistics.ui (renamed from tests/auto/uic/baseline/statistics.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/statistics.ui.h (renamed from tests/auto/uic/baseline/statistics.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/stringlisteditor.ui (renamed from tests/auto/uic/baseline/stringlisteditor.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/stringlisteditor.ui.h (renamed from tests/auto/uic/baseline/stringlisteditor.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/stylesheeteditor.ui (renamed from tests/auto/uic/baseline/stylesheeteditor.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/stylesheeteditor.ui.h (renamed from tests/auto/uic/baseline/stylesheeteditor.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/tabbedbrowser.ui (renamed from tests/auto/uic/baseline/tabbedbrowser.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/tabbedbrowser.ui.h (renamed from tests/auto/uic/baseline/tabbedbrowser.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/tablewidgeteditor.ui (renamed from tests/auto/uic/baseline/tablewidgeteditor.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/tablewidgeteditor.ui.h (renamed from tests/auto/uic/baseline/tablewidgeteditor.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/tetrixwindow.ui (renamed from tests/auto/uic/baseline/tetrixwindow.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/tetrixwindow.ui.h (renamed from tests/auto/uic/baseline/tetrixwindow.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/textfinder.ui (renamed from tests/auto/uic/baseline/textfinder.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/textfinder.ui.h (renamed from tests/auto/uic/baseline/textfinder.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/topicchooser.ui (renamed from tests/auto/uic/baseline/topicchooser.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/topicchooser.ui.h (renamed from tests/auto/uic/baseline/topicchooser.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/translatedialog.ui (renamed from tests/auto/uic/baseline/translatedialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/translatedialog.ui.h (renamed from tests/auto/uic/baseline/translatedialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/translationsettings.ui (renamed from tests/auto/uic/baseline/translationsettings.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/translationsettings.ui.h (renamed from tests/auto/uic/baseline/translationsettings.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/treewidgeteditor.ui (renamed from tests/auto/uic/baseline/treewidgeteditor.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/treewidgeteditor.ui.h (renamed from tests/auto/uic/baseline/treewidgeteditor.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/trpreviewtool.ui (renamed from tests/auto/uic/baseline/trpreviewtool.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/trpreviewtool.ui.h (renamed from tests/auto/uic/baseline/trpreviewtool.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/validators.ui (renamed from tests/auto/uic/baseline/validators.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/validators.ui.h (renamed from tests/auto/uic/baseline/validators.ui.h)0
-rw-r--r--tests/auto/tools/uic/baseline/wateringconfigdialog.ui (renamed from tests/auto/uic/baseline/wateringconfigdialog.ui)0
-rw-r--r--tests/auto/tools/uic/baseline/wateringconfigdialog.ui.h (renamed from tests/auto/uic/baseline/wateringconfigdialog.ui.h)0
-rw-r--r--tests/auto/tools/uic/generated_ui/placeholder (renamed from tests/auto/uic/generated_ui/placeholder)0
-rw-r--r--tests/auto/tools/uic/tst_uic.cpp (renamed from tests/auto/uic/tst_uic.cpp)0
-rw-r--r--tests/auto/tools/uic/uic.pro9
-rw-r--r--tests/auto/uic/uic.pro7
-rw-r--r--tests/auto/uiloader/uiloader/uiloader.pro2
-rw-r--r--tests/auto/v8/v8.pro2
-rw-r--r--tests/auto/windowsmobile/test/test.pro2
-rw-r--r--tests/auto/windowsmobile/testQMenuBar/testQMenuBar.pro1
-rw-r--r--tests/auto/xml.pro8
-rw-r--r--tests/auto/xml/dom/dom.pro4
-rw-r--r--tests/auto/xml/dom/qdom/.gitattributes (renamed from tests/auto/qdom/.gitattributes)0
-rw-r--r--tests/auto/xml/dom/qdom/.gitignore (renamed from tests/auto/qdom/.gitignore)0
-rw-r--r--tests/auto/xml/dom/qdom/doubleNamespaces.xml (renamed from tests/auto/qdom/doubleNamespaces.xml)0
-rw-r--r--tests/auto/xml/dom/qdom/qdom.pro (renamed from tests/auto/qdom/qdom.pro)0
-rw-r--r--tests/auto/xml/dom/qdom/testdata/excludedCodecs.txt (renamed from tests/auto/qdom/testdata/excludedCodecs.txt)0
-rw-r--r--tests/auto/xml/dom/qdom/testdata/toString_01/doc01.xml (renamed from tests/auto/qdom/testdata/toString_01/doc01.xml)0
-rw-r--r--tests/auto/xml/dom/qdom/testdata/toString_01/doc02.xml (renamed from tests/auto/qdom/testdata/toString_01/doc02.xml)0
-rw-r--r--tests/auto/xml/dom/qdom/testdata/toString_01/doc03.xml (renamed from tests/auto/qdom/testdata/toString_01/doc03.xml)0
-rw-r--r--tests/auto/xml/dom/qdom/testdata/toString_01/doc04.xml (renamed from tests/auto/qdom/testdata/toString_01/doc04.xml)0
-rw-r--r--tests/auto/xml/dom/qdom/testdata/toString_01/doc05.xml (renamed from tests/auto/qdom/testdata/toString_01/doc05.xml)0
-rw-r--r--tests/auto/xml/dom/qdom/testdata/toString_01/doc_euc-jp.xml (renamed from tests/auto/qdom/testdata/toString_01/doc_euc-jp.xml)0
-rw-r--r--tests/auto/xml/dom/qdom/testdata/toString_01/doc_iso-2022-jp.xml (renamed from tests/auto/qdom/testdata/toString_01/doc_iso-2022-jp.xml)0
-rw-r--r--tests/auto/xml/dom/qdom/testdata/toString_01/doc_little-endian.xml (renamed from tests/auto/qdom/testdata/toString_01/doc_little-endian.xml)bin3186 -> 3186 bytes
-rw-r--r--tests/auto/xml/dom/qdom/testdata/toString_01/doc_utf-16.xml (renamed from tests/auto/qdom/testdata/toString_01/doc_utf-16.xml)bin3186 -> 3186 bytes
-rw-r--r--tests/auto/xml/dom/qdom/testdata/toString_01/doc_utf-8.xml (renamed from tests/auto/qdom/testdata/toString_01/doc_utf-8.xml)0
-rw-r--r--tests/auto/xml/dom/qdom/tst_qdom.cpp (renamed from tests/auto/qdom/tst_qdom.cpp)0
-rw-r--r--tests/auto/xml/dom/qdom/umlaut.xml (renamed from tests/auto/qdom/umlaut.xml)0
-rw-r--r--tests/auto/xml/sax/qxml/.gitignore (renamed from tests/auto/qxml/.gitignore)0
-rw-r--r--tests/auto/xml/sax/qxml/0x010D.xml (renamed from tests/auto/qxml/0x010D.xml)0
-rw-r--r--tests/auto/xml/sax/qxml/qxml.pro (renamed from tests/auto/qxml/qxml.pro)0
-rw-r--r--tests/auto/xml/sax/qxml/tst_qxml.cpp (renamed from tests/auto/qxml/tst_qxml.cpp)0
-rw-r--r--tests/auto/xml/sax/qxmlinputsource/.gitignore (renamed from tests/auto/qxmlinputsource/.gitignore)0
-rw-r--r--tests/auto/xml/sax/qxmlinputsource/qxmlinputsource.pro (renamed from tests/auto/qxmlinputsource/qxmlinputsource.pro)0
-rw-r--r--tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp (renamed from tests/auto/qxmlinputsource/tst_qxmlinputsource.cpp)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/.gitattributes (renamed from tests/auto/qxmlsimplereader/.gitattributes)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/.gitignore (renamed from tests/auto/qxmlsimplereader/.gitignore)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/encodings/doc_euc-jp.xml (renamed from tests/auto/qxmlsimplereader/encodings/doc_euc-jp.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/encodings/doc_iso-2022-jp.xml.ref (renamed from tests/auto/qxmlsimplereader/encodings/doc_iso-2022-jp.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/encodings/doc_little-endian.xml (renamed from tests/auto/qxmlsimplereader/encodings/doc_little-endian.xml)bin3186 -> 3186 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/encodings/doc_utf-16.xml (renamed from tests/auto/qxmlsimplereader/encodings/doc_utf-16.xml)bin3186 -> 3186 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/encodings/doc_utf-8.xml (renamed from tests/auto/qxmlsimplereader/encodings/doc_utf-8.xml)0
-rwxr-xr-xtests/auto/xml/sax/qxmlsimplereader/generate_ref_files.sh (renamed from tests/auto/qxmlsimplereader/generate_ref_files.sh)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/parser/main.cpp (renamed from tests/auto/qxmlsimplereader/parser/main.cpp)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp (renamed from tests/auto/qxmlsimplereader/parser/parser.cpp)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/parser/parser.h (renamed from tests/auto/qxmlsimplereader/parser/parser.h)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/parser/parser.pro (renamed from tests/auto/qxmlsimplereader/parser/parser.pro)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/qxmlsimplereader.pro (renamed from tests/auto/qxmlsimplereader/qxmlsimplereader.pro)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp (renamed from tests/auto/qxmlsimplereader/tst_qxmlsimplereader.cpp)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/001.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/001.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/002.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/002.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/003.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/003.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/004.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/004.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/004.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/005.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/005.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/006.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/006.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/007.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/007.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/007.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/008.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/008.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/008.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/009.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/009.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/009.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/010.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/010.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/010.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/011.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/011.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/011.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/012.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/012.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/012.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/013.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/013.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/013.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/014.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/014.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/014.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/015.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/015.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/015.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/016.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/016.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/016.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/017.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/017.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/017.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/018.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/018.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/018.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/019.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/019.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/019.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/020.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/020.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/020.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/021.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/021.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/021.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/022.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/022.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/022.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/023.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/023.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/023.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/024.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/024.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/024.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/025.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/025.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/025.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/026.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/026.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/026.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/027.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/027.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/027.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/028.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/028.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/028.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/029.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/029.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/029.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/030.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/030.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/030.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/031.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/031.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/031.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/032.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/032.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/032.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/033.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/033.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/033.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/034.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/034.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/034.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/035.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/035.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/035.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/036.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/036.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/036.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/037.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/037.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/037.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/038.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/038.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/038.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/039.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/039.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/039.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/040.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/040.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/040.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/041.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/041.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/041.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/042.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/042.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/042.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/043.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/043.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/043.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/044.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/044.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/044.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/045.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/045.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/045.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/046.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/046.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/046.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/047.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/047.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/047.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/048.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/048.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/048.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/049.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/049.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/049.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/050.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/050.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/050.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/051.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/051.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/051.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/052.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/052.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/052.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/053.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/053.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/053.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/054.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/054.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/054.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/055.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/055.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/055.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/056.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/056.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/056.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/057.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/057.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/057.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/058.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/058.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/058.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/059.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/059.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/059.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/060.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/060.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/060.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/061.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/061.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/061.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/062.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/062.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/062.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/063.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/063.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/063.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/064.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/064.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/064.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/065.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/065.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/065.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/066.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/066.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/066.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/067.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/067.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/067.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/068.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/068.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/068.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/069.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/069.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/069.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/070.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/070.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/070.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/071.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/071.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/071.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/072.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/072.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/072.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/073.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/073.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/073.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/074.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/074.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/074.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/075.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/075.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/075.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/076.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/076.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/076.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/077.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/077.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/077.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/078.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/078.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/078.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/079.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/079.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/079.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/080.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/080.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/080.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/081.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/081.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/081.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/082.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/082.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/082.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/083.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/083.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/083.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/084.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/084.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/084.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/085.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/085.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/085.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/086.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/086.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/086.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/087.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/087.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/087.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/088.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/088.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/088.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/089.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/089.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/089.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/090.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/090.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/090.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/091.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/091.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/091.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/092.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/092.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/092.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/093.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/093.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/093.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/094.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/094.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/094.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/095.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/095.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/095.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/096.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/096.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/096.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/097.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/097.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/097.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/098.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/098.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/098.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/099.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/099.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/099.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/100.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/100.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/100.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/101.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/101.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/101.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/102.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/102.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/102.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/103.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/103.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/103.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/104.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/104.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/104.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/105.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/105.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/105.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/106.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/106.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/106.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/107.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/107.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/107.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/108.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/108.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/108.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/109.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/109.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/109.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/110.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/110.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/110.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/111.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/111.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/111.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/112.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/112.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/112.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/113.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/113.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/113.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/114.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/114.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/114.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/115.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/115.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/115.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/116.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/116.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/116.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/117.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/117.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/117.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/118.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/118.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/118.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/119.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/119.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/119.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/120.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/120.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/120.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/121.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/121.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/121.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/122.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/122.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/122.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/123.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/123.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/123.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/124.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/124.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/124.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/125.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/125.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/125.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/126.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/126.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/126.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/127.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/127.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/127.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/128.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/128.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/128.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/129.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/129.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/129.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/130.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/130.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/130.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/131.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/131.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/131.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/132.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/132.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/132.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/133.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/133.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/133.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/134.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/134.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/134.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/135.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/135.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/135.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/136.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/136.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/136.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/137.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/137.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/137.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/138.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/138.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/138.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/139.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/139.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/139.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/140.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/140.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/140.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/141.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/141.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/141.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/142.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/142.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/142.xml.ref)bin309 -> 309 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/143.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/143.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/143.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/144.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/144.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/144.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/145.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/145.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/145.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/146.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/146.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/146.xml.ref)bin309 -> 309 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/147.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/147.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/147.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/148.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/148.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/148.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/149.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/149.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/149.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/150.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/150.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/150.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/151.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/151.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/151.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/152.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/152.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/152.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/153.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/153.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/153.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/154.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/154.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/154.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/155.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/155.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/155.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/156.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/156.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/156.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/157.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/157.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/157.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/158.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/158.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/158.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/159.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/159.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/159.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/160.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/160.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/160.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/161.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/161.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/161.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/162.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/162.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/162.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/163.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/163.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/163.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/164.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/164.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/164.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/165.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/165.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/165.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/166.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/166.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/166.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/167.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/167.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/167.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/168.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/168.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/168.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/169.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/169.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/169.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/170.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/170.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/170.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/171.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/171.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/171.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/172.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/172.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/172.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/173.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/173.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/173.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/174.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/174.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/174.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/175.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/175.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/175.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/176.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/176.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/176.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/176.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/177.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/177.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/177.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/178.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/178.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/178.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/179.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/179.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/179.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/180.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/180.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/180.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/181.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/181.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/181.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/182.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/182.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/182.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/183.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/183.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/183.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/184.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/184.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/184.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/185.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/185.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/185.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/185.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/186.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/186.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/186.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/null.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/001.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/002.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/003.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/004.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/005.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/006.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/007.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent)bin4 -> 4 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/008.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent)bin54 -> 54 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/009.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/010.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/011.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/012.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/013.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/014.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent)bin12 -> 12 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/001.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/001.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/001.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/002.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/002.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/002.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003-1.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003-2.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004-1.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004-2.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005-1.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005-2.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/006.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/006.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/006.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/007.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/007.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/007.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/007.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/008.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/008.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/008.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/008.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/009.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/009.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/009.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/009.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/010.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/010.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/010.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/010.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/011.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/011.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/011.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/011.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/012.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/012.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/012.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/012.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/013.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/013.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/013.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/013.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/014.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/014.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/014.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/014.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/015.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/015.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/015.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/015.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/016.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/016.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/016.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/016.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/017.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/017.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/017.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/017.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/018.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/018.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/018.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/018.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/019.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/019.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/019.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/019.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/020.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/020.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/020.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/020.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/021.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/021.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/021.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/021.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/022.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/022.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/022.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/022.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/023.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/023.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/023.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/023.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/024.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/024.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/024.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/024.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/025.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/025.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/025.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/025.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/026.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/026.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/026.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/026.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/027.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/027.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/027.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/027.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/028.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/028.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/028.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/028.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/029.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/029.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/029.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/029.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/030.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/030.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/030.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/030.xml.ref)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031-1.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent)0
-rwxr-xr-x[-rw-r--r--]tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031-2.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/001.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/001.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/001.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/002.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/002.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/002.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/003.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/003.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/003.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/004.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/004.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/004.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/005.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/005.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/005.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/006.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/006.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/006.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/007.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/007.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/007.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/008.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/008.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/008.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/009.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/009.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/009.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/010.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/010.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/010.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/011.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/011.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/011.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/012.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/012.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/012.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/013.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/013.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/013.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/014.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/014.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/014.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/015.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/015.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/015.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/016.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/016.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/016.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/017.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/017.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/017.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/018.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/018.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/018.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/019.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/019.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/019.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/020.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/020.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/020.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/021.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/021.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/021.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/022.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/022.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/022.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/023.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/023.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/023.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/024.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/024.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/024.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/025.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/025.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/025.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/026.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/026.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/026.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/027.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/027.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/027.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/028.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/028.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/028.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/029.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/029.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/029.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/030.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/030.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/030.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/031.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/031.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/031.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/032.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/032.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/032.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/033.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/033.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/033.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/034.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/034.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/034.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/035.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/035.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/035.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/036.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/036.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/036.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/037.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/037.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/037.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/038.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/038.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/038.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/039.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/039.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/039.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/040.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/040.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/040.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/041.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/041.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/041.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/042.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/042.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/042.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/043.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/043.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/043.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/044.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/044.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/044.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/045.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/045.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/045.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/046.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/046.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/046.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/047.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/047.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/047.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/048.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/048.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/048.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/049.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml)bin124 -> 124 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/049.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/049.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/050.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml)bin132 -> 132 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/050.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/050.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/051.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml)bin140 -> 140 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/051.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/051.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/052.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/052.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/052.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/053.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/053.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/053.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/054.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/054.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/054.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/055.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/055.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/055.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/056.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/056.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/056.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/057.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/057.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/057.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/058.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/058.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/058.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/059.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/059.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/059.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/060.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/060.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/060.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/061.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/061.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/061.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/062.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/062.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/062.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/063.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/063.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/063.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/064.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/064.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/064.xml.ref)bin312 -> 312 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/065.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/065.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/065.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/066.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/066.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/066.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/067.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/067.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/067.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/068.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/068.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/068.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/069.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/069.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/069.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/070.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/070.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/070.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/071.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/071.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/071.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/072.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/072.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/072.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/073.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/073.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/073.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/074.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/074.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/074.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/075.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/075.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/075.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/076.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/076.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/076.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/077.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/077.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/077.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/078.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/078.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/078.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/079.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/079.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/079.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/080.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/080.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/080.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/081.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/081.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/081.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/082.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/082.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/082.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/083.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/083.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/083.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/084.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/084.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/084.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/085.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/085.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/085.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/086.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/086.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/086.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/087.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/087.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/087.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/088.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/088.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/088.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/089.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/089.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/089.xml.bak (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/089.xml.bak)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/089.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/089.xml.ref)bin381 -> 381 bytes
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/090.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/090.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/090.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/091.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/091.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/091.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/092.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/092.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/092.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/093.xml (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/093.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/093.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/093.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/094.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/094.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/094.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/095.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/095.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/095.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/096.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/096.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/096.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/097.ent (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/097.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/097.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/097.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/098.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/098.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/098.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/099.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/099.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/099.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/100.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/100.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/100.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/101.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/101.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/101.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/102.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/102.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/102.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/103.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/103.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/103.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/104.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/104.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/104.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/105.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/105.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/105.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/106.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/106.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/106.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/107.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/107.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/107.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/108.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/108.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/108.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/109.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/109.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/109.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/110.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/110.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/110.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/111.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/111.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/111.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/112.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/112.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/112.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/113.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/113.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/113.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/114.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/114.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/114.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/115.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/115.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/115.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/116.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/116.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/116.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/117.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/117.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/117.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/118.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/118.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/118.xml.ref)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/119.xml (renamed from tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml)0
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/119.xml.ref (renamed from tests/auto/qxmlsimplereader/xmldocs/valid/sa/119.xml.ref)0
-rw-r--r--tests/auto/xml/sax/sax.pro6
-rw-r--r--tests/auto/xml/xml.pro5
-rw-r--r--tests/benchmarks/benchmarks.pro2
-rw-r--r--tests/benchmarks/corelib/kernel/qmetaobject/main.cpp2
-rw-r--r--tests/benchmarks/corelib/kernel/qobject/main.cpp2
-rw-r--r--tests/benchmarks/corelib/kernel/qobject/qobject.pro1
-rw-r--r--tests/benchmarks/gui/animation/qanimation/main.cpp2
-rw-r--r--tests/benchmarks/gui/animation/qanimation/qanimation.pro1
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/qgraphicsanchorlayout.pro1
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp8
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsitem/qgraphicsitem.pro1
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsscene/qgraphicsscene.pro1
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp2
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.pri1
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro1
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp12
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicswidget/qgraphicswidget.pro1
-rw-r--r--tests/benchmarks/gui/gui.pro2
-rw-r--r--tests/benchmarks/gui/image/qimagereader/qimagereader.pro1
-rw-r--r--tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp8
-rw-r--r--tests/benchmarks/gui/itemviews/qtableview/qtableview.pro1
-rw-r--r--tests/benchmarks/gui/kernel/qapplication/qapplication.pro1
-rw-r--r--tests/benchmarks/gui/kernel/qwidget/qwidget.pro1
-rw-r--r--tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp4
-rw-r--r--tests/benchmarks/gui/painting/qpainter/qpainter.pro4
-rw-r--r--tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp9
-rw-r--r--tests/benchmarks/gui/painting/qtbench/qtbench.pro1
-rw-r--r--tests/benchmarks/gui/painting/qtracebench/qtracebench.pro4
-rw-r--r--tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp11
-rw-r--r--tests/benchmarks/gui/text/qtext/qtext.pro4
-rw-r--r--tests/benchmarks/network/network.pro12
8536 files changed, 97052 insertions, 97780 deletions
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index fc51280c35..5eda1236b7 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -4,11 +4,13 @@ SUBDIRS += \
corelib.pro \
gui.pro \
network.pro \
- sql.pro \
- xml.pro \
- other.pro
+ sql \
+ xml \
+ testlib \
+ other.pro \
!cross_compile: SUBDIRS += host.pro
-contains(QT_CONFIG, opengl): SUBDIRS += opengl.pro
-unix:!embedded:contains(QT_CONFIG, dbus): SUBDIRS += dbus.pro
+!cross_compile: SUBDIRS += tools
+contains(QT_CONFIG, opengl): SUBDIRS += opengl
+unix:!embedded:contains(QT_CONFIG, dbus): SUBDIRS += dbus
contains(QT_CONFIG, v8): SUBDIRS += v8.pro
diff --git a/tests/auto/baselineexample/baselineexample.pro b/tests/auto/baselineexample/baselineexample.pro
deleted file mode 100644
index 3d3d42e8cc..0000000000
--- a/tests/auto/baselineexample/baselineexample.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-#-------------------------------------------------
-#
-# Project created by QtCreator 2010-12-09T14:55:13
-#
-#-------------------------------------------------
-
-QT += testlib
-
-TARGET = tst_baselineexample
-CONFIG += console
-CONFIG -= app_bundle
-
-TEMPLATE = app
-
-SOURCES += tst_baselineexample.cpp
-DEFINES += SRCDIR=\\\"$$PWD/\\\"
-
-include($$PWD/../../baselineserver/shared/qbaselinetest.pri)
diff --git a/tests/auto/corelib.pro b/tests/auto/corelib.pro
index 7a655d6208..7269f890a7 100644
--- a/tests/auto/corelib.pro
+++ b/tests/auto/corelib.pro
@@ -1,118 +1,7 @@
-# The tests in this .pro file _MUST_ use QtCore only (i.e. QT=core).
-# The test system is allowed to run these tests before the test of Qt has
-# been compiled.
-
TEMPLATE=subdirs
SUBDIRS=\
+ corelib \
collections \
exceptionsafety \
- q_func_info \
- qanimationgroup \
- qatomicint \
- qatomicpointer \
- qbitarray \
- qbuffer \
- qbytearray \
- qbytearraymatcher \
- qcache \
- qchar \
- qcontiguouscache \
- qcoreapplication \
- qcryptographichash \
- qdate \
- qdatetime \
- qdebug \
- qdiriterator \
- qeasingcurve \
- qelapsedtimer \
- qevent \
- qexplicitlyshareddatapointer \
- qfileinfo \
- qfilesystemwatcher \
- qflags \
- qfreelist \
- qfuture \
- qfuturewatcher \
- qgetputenv \
- qglobal \
- qhash \
- qlibrary \
- qline \
- qmap \
- qmargins \
- qmath \
- qmetatype \
- qmutex \
- qmutexlocker \
- qnumeric \
- qobject \
qobjectrace \
- qplugin \
- qpluginloader \
- qpoint \
- qprocessenvironment \
- qqueue \
- qrand \
- qreadlocker \
- qreadwritelock \
- qrect \
- qregexp \
- qresourceengine \
- qringbuffer \
- qscopedpointer \
- qscopedvaluerollback \
- qsemaphore \
- qsequentialanimationgroup \
- qset \
- qsharedpointer \
- qsignalspy \
- qsize \
- qsizef \
- qstate \
- qstl \
- qstring \
- qstringbuilder1 \
- qstringbuilder2 \
- qstringbuilder3 \
- qstringbuilder4 \
- qstringlist \
- qstringmatcher \
- qstringref \
- qtconcurrentfilter \
- qtconcurrentiteratekernel \
- qtconcurrentmap \
- qtconcurrentrun \
- qtconcurrentthreadengine \
- qtemporaryfile \
- qtextboundaryfinder \
- qthread \
- qthreadonce \
- qthreadpool \
- qthreadstorage \
- qtime \
- qtimeline \
- qtimer \
- qtmd5 \
- qtokenautomaton \
- qurl \
- quuid \
- qvarlengtharray \
- qvector \
- qwaitcondition \
- qwineventnotifier \
- qwritelocker \
- selftests \
- utf8 \
- qfilesystementry \
- qabstractfileengine
-
-symbian:SUBDIRS -= \
- qtconcurrentfilter \
- qtconcurrentiteratekernel \
- qtconcurrentmap \
- qtconcurrentrun \
- qtconcurrentthreadengine \
-
-!contains(QT_CONFIG, private_tests): SUBDIRS -= \
- qfileinfo \
-
+ utf8
diff --git a/tests/auto/corelib/animation/animation.pro b/tests/auto/corelib/animation/animation.pro
new file mode 100644
index 0000000000..0d852acc60
--- /dev/null
+++ b/tests/auto/corelib/animation/animation.pro
@@ -0,0 +1,9 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qabstractanimation \
+ qanimationgroup \
+ qparallelanimationgroup \
+ qpauseanimation \
+ qpropertyanimation \
+ qsequentialanimationgroup \
+ qvariantanimation
diff --git a/tests/auto/corelib/animation/qabstractanimation/qabstractanimation.pro b/tests/auto/corelib/animation/qabstractanimation/qabstractanimation.pro
new file mode 100644
index 0000000000..f518423765
--- /dev/null
+++ b/tests/auto/corelib/animation/qabstractanimation/qabstractanimation.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qabstractanimation.cpp \
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp b/tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp
new file mode 100644
index 0000000000..f9dad9154a
--- /dev/null
+++ b/tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp
@@ -0,0 +1,171 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/qabstractanimation.h>
+#include <QtCore/qanimationgroup.h>
+#include <QtTest>
+
+class tst_QAbstractAnimation : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QAbstractAnimation() {};
+ virtual ~tst_QAbstractAnimation() {};
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ void construction();
+ void destruction();
+ void currentLoop();
+ void currentLoopTime();
+ void currentTime();
+ void direction();
+ void group();
+ void loopCount();
+ void state();
+ void totalDuration();
+};
+
+class TestableQAbstractAnimation : public QAbstractAnimation
+{
+ Q_OBJECT
+
+public:
+ virtual ~TestableQAbstractAnimation() {};
+
+ int duration() const { return 10; }
+ virtual void updateCurrentTime(int) {}
+};
+
+class DummyQAnimationGroup : public QAnimationGroup
+{
+ Q_OBJECT
+public:
+ int duration() const { return 10; }
+ virtual void updateCurrentTime(int) {}
+};
+
+void tst_QAbstractAnimation::init()
+{
+}
+
+void tst_QAbstractAnimation::cleanup()
+{
+}
+
+void tst_QAbstractAnimation::construction()
+{
+ TestableQAbstractAnimation anim;
+}
+
+void tst_QAbstractAnimation::destruction()
+{
+ TestableQAbstractAnimation *anim = new TestableQAbstractAnimation;
+ delete anim;
+}
+
+void tst_QAbstractAnimation::currentLoop()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.currentLoop(), 0);
+}
+
+void tst_QAbstractAnimation::currentLoopTime()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.currentLoopTime(), 0);
+}
+
+void tst_QAbstractAnimation::currentTime()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.currentTime(), 0);
+ anim.setCurrentTime(10);
+ QCOMPARE(anim.currentTime(), 10);
+}
+
+void tst_QAbstractAnimation::direction()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.direction(), QAbstractAnimation::Forward);
+ anim.setDirection(QAbstractAnimation::Backward);
+ QCOMPARE(anim.direction(), QAbstractAnimation::Backward);
+ anim.setDirection(QAbstractAnimation::Forward);
+ QCOMPARE(anim.direction(), QAbstractAnimation::Forward);
+}
+
+void tst_QAbstractAnimation::group()
+{
+ TestableQAbstractAnimation *anim = new TestableQAbstractAnimation;
+ DummyQAnimationGroup group;
+ group.addAnimation(anim);
+ QCOMPARE(anim->group(), &group);
+}
+
+void tst_QAbstractAnimation::loopCount()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.loopCount(), 1);
+ anim.setLoopCount(10);
+ QCOMPARE(anim.loopCount(), 10);
+}
+
+void tst_QAbstractAnimation::state()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+}
+
+void tst_QAbstractAnimation::totalDuration()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.duration(), 10);
+ anim.setLoopCount(5);
+ QCOMPARE(anim.totalDuration(), 50);
+}
+
+QTEST_MAIN(tst_QAbstractAnimation)
+
+#include "tst_qabstractanimation.moc"
diff --git a/tests/auto/qanimationgroup/qanimationgroup.pro b/tests/auto/corelib/animation/qanimationgroup/qanimationgroup.pro
index 5e1be0cb10..5e1be0cb10 100644
--- a/tests/auto/qanimationgroup/qanimationgroup.pro
+++ b/tests/auto/corelib/animation/qanimationgroup/qanimationgroup.pro
diff --git a/tests/auto/qanimationgroup/tst_qanimationgroup.cpp b/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp
index 26e2f2f4d8..26e2f2f4d8 100644
--- a/tests/auto/qanimationgroup/tst_qanimationgroup.cpp
+++ b/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp
diff --git a/tests/auto/qparallelanimationgroup/qparallelanimationgroup.pro b/tests/auto/corelib/animation/qparallelanimationgroup/qparallelanimationgroup.pro
index f2cacd3452..f2cacd3452 100644
--- a/tests/auto/qparallelanimationgroup/qparallelanimationgroup.pro
+++ b/tests/auto/corelib/animation/qparallelanimationgroup/qparallelanimationgroup.pro
diff --git a/tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp b/tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp
index d1d2860369..d1d2860369 100644
--- a/tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp
+++ b/tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp
diff --git a/tests/auto/qpauseanimation/qpauseanimation.pro b/tests/auto/corelib/animation/qpauseanimation/qpauseanimation.pro
index 7f612b69fe..7f612b69fe 100644
--- a/tests/auto/qpauseanimation/qpauseanimation.pro
+++ b/tests/auto/corelib/animation/qpauseanimation/qpauseanimation.pro
diff --git a/tests/auto/qpauseanimation/tst_qpauseanimation.cpp b/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp
index ea99e19fb3..ea99e19fb3 100644
--- a/tests/auto/qpauseanimation/tst_qpauseanimation.cpp
+++ b/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp
diff --git a/tests/auto/corelib/animation/qpropertyanimation/qpropertyanimation.pro b/tests/auto/corelib/animation/qpropertyanimation/qpropertyanimation.pro
new file mode 100644
index 0000000000..4dfd558610
--- /dev/null
+++ b/tests/auto/corelib/animation/qpropertyanimation/qpropertyanimation.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT = core gui widgets
+SOURCES += tst_qpropertyanimation.cpp
+
+
diff --git a/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp b/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp
new file mode 100644
index 0000000000..e5feab4aa6
--- /dev/null
+++ b/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp
@@ -0,0 +1,1243 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include "../../../../shared/util.h"
+
+#include <QtCore/qpropertyanimation.h>
+#include <QtCore/qvariantanimation.h>
+#include <QtWidgets/qwidget.h>
+#include "../../../../shared/util.h"
+
+//TESTED_CLASS=QPropertyAnimation
+//TESTED_FILES=
+
+class UncontrolledAnimation : public QPropertyAnimation
+{
+ Q_OBJECT
+public:
+ int duration() const { return -1; /* not time driven */ }
+
+protected:
+ void updateCurrentTime(int currentTime)
+ {
+ QPropertyAnimation::updateCurrentTime(currentTime);
+ if (currentTime >= QPropertyAnimation::duration() || currentLoop() >= 1)
+ stop();
+ }
+};
+
+class MyObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(qreal x READ x WRITE setX)
+public:
+ MyObject() : m_x(0) { }
+ qreal x() const { return m_x; }
+ void setX(qreal x) { m_x = x; }
+private:
+ qreal m_x;
+};
+
+class DummyPropertyAnimation : public QPropertyAnimation
+{
+public:
+ DummyPropertyAnimation(QObject *parent = 0) : QPropertyAnimation(parent)
+ {
+ setTargetObject(&o);
+ this->setPropertyName("x");
+ setEndValue(100);
+ }
+
+ MyObject o;
+};
+
+
+class tst_QPropertyAnimation : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QPropertyAnimation();
+ virtual ~tst_QPropertyAnimation();
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ void construction();
+ void setCurrentTime_data();
+ void setCurrentTime();
+ void statesAndSignals_data();
+ void statesAndSignals();
+ void deletion1();
+ void deletion2();
+ void deletion3();
+ void duration0();
+ void noStartValue();
+ void noStartValueWithLoop();
+ void startWhenAnotherIsRunning();
+ void easingcurve_data();
+ void easingcurve();
+ void startWithoutStartValue();
+ void startBackwardWithoutEndValue();
+ void playForwardBackward();
+ void interpolated();
+ void setStartEndValues_data();
+ void setStartEndValues();
+ void zeroDurationStart();
+ void operationsInStates_data();
+ void operationsInStates();
+ void oneKeyValue();
+ void updateOnSetKeyValues();
+ void restart();
+ void valueChanged();
+ void twoAnimations();
+ void deletedInUpdateCurrentTime();
+ void totalDuration();
+ void zeroLoopCount();
+};
+
+tst_QPropertyAnimation::tst_QPropertyAnimation()
+{
+}
+
+tst_QPropertyAnimation::~tst_QPropertyAnimation()
+{
+}
+
+void tst_QPropertyAnimation::init()
+{
+ qRegisterMetaType<QAbstractAnimation::State>("QAbstractAnimation::State");
+ qRegisterMetaType<QAbstractAnimation::DeletionPolicy>("QAbstractAnimation::DeletionPolicy");
+}
+
+void tst_QPropertyAnimation::cleanup()
+{
+}
+
+class AnimationObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int value READ value WRITE setValue)
+ Q_PROPERTY(qreal realValue READ realValue WRITE setRealValue)
+public:
+ AnimationObject(int startValue = 0)
+ : v(startValue), rv(startValue)
+ { }
+
+ int value() const { return v; }
+ void setValue(int value) { v = value; }
+
+ qreal realValue() const { return rv; }
+ void setRealValue(qreal value) { rv = value; }
+
+ int v;
+ qreal rv;
+};
+
+
+void tst_QPropertyAnimation::construction()
+{
+ QPropertyAnimation panimation;
+}
+
+void tst_QPropertyAnimation::setCurrentTime_data()
+{
+ QTest::addColumn<int>("duration");
+ QTest::addColumn<int>("loopCount");
+ QTest::addColumn<int>("currentTime");
+ QTest::addColumn<int>("testCurrentTime");
+ QTest::addColumn<int>("testCurrentLoop");
+
+ QTest::newRow("-1") << -1 << 1 << 0 << 0 << 0;
+ QTest::newRow("0") << 0 << 1 << 0 << 0 << 0;
+ QTest::newRow("1") << 0 << 1 << 1 << 0 << 0;
+ QTest::newRow("2") << 0 << 2 << 1 << 0 << 0;
+ QTest::newRow("3") << 1 << 1 << 0 << 0 << 0;
+ QTest::newRow("4") << 1 << 1 << 1 << 1 << 0;
+ QTest::newRow("5") << 1 << 2 << 1 << 0 << 1;
+ QTest::newRow("6") << 1 << 2 << 2 << 1 << 1;
+ QTest::newRow("7") << 1 << 2 << 3 << 1 << 1;
+ QTest::newRow("8") << 1 << 3 << 2 << 0 << 2;
+ QTest::newRow("9") << 1 << 3 << 3 << 1 << 2;
+ QTest::newRow("a") << 10 << 1 << 0 << 0 << 0;
+ QTest::newRow("b") << 10 << 1 << 1 << 1 << 0;
+ QTest::newRow("c") << 10 << 1 << 10 << 10 << 0;
+ QTest::newRow("d") << 10 << 2 << 10 << 0 << 1;
+ QTest::newRow("e") << 10 << 2 << 11 << 1 << 1;
+ QTest::newRow("f") << 10 << 2 << 20 << 10 << 1;
+ QTest::newRow("g") << 10 << 2 << 21 << 10 << 1;
+ QTest::newRow("negloop 0") << 10 << -1 << 0 << 0 << 0;
+ QTest::newRow("negloop 1") << 10 << -1 << 10 << 0 << 1;
+ QTest::newRow("negloop 2") << 10 << -1 << 15 << 5 << 1;
+ QTest::newRow("negloop 3") << 10 << -1 << 20 << 0 << 2;
+ QTest::newRow("negloop 4") << 10 << -1 << 30 << 0 << 3;
+}
+
+void tst_QPropertyAnimation::setCurrentTime()
+{
+ QFETCH(int, duration);
+ QFETCH(int, loopCount);
+ QFETCH(int, currentTime);
+ QFETCH(int, testCurrentTime);
+ QFETCH(int, testCurrentLoop);
+
+ QPropertyAnimation animation;
+ if (duration < 0)
+ QTest::ignoreMessage(QtWarningMsg, "QVariantAnimation::setDuration: cannot set a negative duration");
+ animation.setDuration(duration);
+ animation.setLoopCount(loopCount);
+ animation.setCurrentTime(currentTime);
+
+ QCOMPARE(animation.currentLoopTime(), testCurrentTime);
+ QCOMPARE(animation.currentLoop(), testCurrentLoop);
+}
+
+void tst_QPropertyAnimation::statesAndSignals_data()
+{
+ QTest::addColumn<bool>("uncontrolled");
+ QTest::newRow("normal animation") << false;
+ QTest::newRow("animation with undefined duration") << true;
+}
+
+void tst_QPropertyAnimation::statesAndSignals()
+{
+ QFETCH(bool, uncontrolled);
+ QPropertyAnimation *anim;
+ if (uncontrolled)
+ anim = new UncontrolledAnimation;
+ else
+ anim = new DummyPropertyAnimation;
+ anim->setDuration(100);
+
+ QSignalSpy finishedSpy(anim, SIGNAL(finished()));
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy currentLoopSpy(anim, SIGNAL(currentLoopChanged(int)));
+
+ anim->setCurrentTime(1);
+ anim->setCurrentTime(100);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(runningSpy.count(), 0);
+ QCOMPARE(currentLoopSpy.count(), 0);
+ QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+
+ anim->setLoopCount(3);
+ anim->setCurrentTime(101);
+
+ if (uncontrolled)
+ QSKIP("Uncontrolled animations don't handle looping", SkipSingle);
+
+ QCOMPARE(currentLoopSpy.count(), 1);
+ QCOMPARE(anim->currentLoop(), 1);
+
+ anim->setCurrentTime(0);
+ QCOMPARE(currentLoopSpy.count(), 2);
+ QCOMPARE(anim->currentLoop(), 0);
+
+ anim->start();
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(runningSpy.count(), 1); //anim must have started
+ QCOMPARE(anim->currentLoop(), 0);
+ runningSpy.clear();
+
+ anim->stop();
+ QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(runningSpy.count(), 1); //anim must have stopped
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(anim->currentLoopTime(), 0);
+ QCOMPARE(anim->currentLoop(), 0);
+ QCOMPARE(currentLoopSpy.count(), 2);
+ runningSpy.clear();
+
+ anim->start();
+ QTest::qWait(1000);
+ QTRY_COMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(runningSpy.count(), 2); //started and stopped again
+ runningSpy.clear();
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(anim->currentLoopTime(), 100);
+ QCOMPARE(anim->currentLoop(), 2);
+ QCOMPARE(currentLoopSpy.count(), 4);
+
+ anim->start(); // auto-rewinds
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(anim->currentTime(), 0);
+ QCOMPARE(anim->currentLoop(), 0);
+ QCOMPARE(currentLoopSpy.count(), 5);
+ QCOMPARE(runningSpy.count(), 1); // anim has started
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(anim->currentLoop(), 0);
+ runningSpy.clear();
+
+ QTest::qWait(1000);
+
+ QCOMPARE(currentLoopSpy.count(), 7);
+ QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim->currentLoop(), 2);
+ QCOMPARE(runningSpy.count(), 1); // anim has stopped
+ QCOMPARE(finishedSpy.count(), 2);
+ QCOMPARE(anim->currentLoopTime(), 100);
+
+ delete anim;
+}
+
+void tst_QPropertyAnimation::deletion1()
+{
+ QObject *object = new QWidget;
+ QPointer<QPropertyAnimation> anim = new QPropertyAnimation(object, "minimumWidth");
+
+ //test that the animation is deleted correctly depending of the deletion flag passed in start()
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy finishedSpy(anim, SIGNAL(finished()));
+ anim->setStartValue(10);
+ anim->setEndValue(20);
+ anim->setDuration(200);
+ anim->start();
+ QCOMPARE(runningSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ QVERIFY(anim);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QTest::qWait(100);
+ QVERIFY(anim);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QTest::qWait(150);
+ QVERIFY(anim); //The animation should not have been deleted
+ QTRY_COMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(runningSpy.count(), 2);
+ QCOMPARE(finishedSpy.count(), 1);
+
+ anim->start(QVariantAnimation::DeleteWhenStopped);
+ QVERIFY(anim);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QTest::qWait(100);
+ QVERIFY(anim);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QTest::qWait(150);
+ QTRY_COMPARE(runningSpy.count(), 4);
+ QCOMPARE(finishedSpy.count(), 2);
+ QVERIFY(!anim); //The animation must have been deleted
+ delete object;
+}
+
+void tst_QPropertyAnimation::deletion2()
+{
+ //test that the animation get deleted if the object is deleted
+ QObject *object = new QWidget;
+ QPointer<QPropertyAnimation> anim = new QPropertyAnimation(object,"minimumWidth");
+ anim->setStartValue(10);
+ anim->setEndValue(20);
+ anim->setDuration(200);
+
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy finishedSpy(anim, SIGNAL(finished()));
+
+ anim->setStartValue(10);
+ anim->setEndValue(20);
+ anim->setDuration(200);
+ anim->start();
+
+ QTest::qWait(50);
+ QVERIFY(anim);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+
+ QCOMPARE(runningSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ //we can't call deletaLater directly because the delete would only happen in the next loop of _this_ event loop
+ QTimer::singleShot(0, object, SLOT(deleteLater()));
+ QTest::qWait(50);
+
+ QVERIFY(anim->targetObject() == 0);
+}
+
+void tst_QPropertyAnimation::deletion3()
+{
+ //test that the stopped signal is emit when the animation is destroyed
+ QObject *object = new QWidget;
+ QPropertyAnimation *anim = new QPropertyAnimation(object,"minimumWidth");
+ anim->setStartValue(10);
+ anim->setEndValue(20);
+ anim->setDuration(200);
+
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy finishedSpy(anim, SIGNAL(finished()));
+ anim->start();
+
+ QTest::qWait(50);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(runningSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ delete anim;
+ QCOMPARE(runningSpy.count(), 2);
+ QCOMPARE(finishedSpy.count(), 0);
+}
+
+void tst_QPropertyAnimation::duration0()
+{
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation animation(&o, "ole");
+ animation.setEndValue(43);
+ QVERIFY(!animation.currentValue().isValid());
+ QCOMPARE(animation.currentValue().toInt(), 0);
+ animation.setStartValue(42);
+ QVERIFY(animation.currentValue().isValid());
+ QCOMPARE(animation.currentValue().toInt(), 42);
+
+ QCOMPARE(o.property("ole").toInt(), 42);
+ animation.setDuration(0);
+ QCOMPARE(animation.currentValue().toInt(), 43); //it is at the end
+ animation.start();
+ QCOMPARE(animation.state(), QAnimationGroup::Stopped);
+ QCOMPARE(animation.currentTime(), 0);
+ QCOMPARE(o.property("ole").toInt(), 43);
+}
+
+class StartValueTester : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int ole READ ole WRITE setOle)
+public:
+ StartValueTester() : o(0) { }
+ int ole() const { return o; }
+ void setOle(int v) { o = v; values << v; }
+
+ int o;
+ QList<int> values;
+};
+
+void tst_QPropertyAnimation::noStartValue()
+{
+ StartValueTester o;
+ o.setProperty("ole", 42);
+ o.values.clear();
+
+ QPropertyAnimation a(&o, "ole");
+ a.setEndValue(420);
+ a.setDuration(250);
+ a.start();
+
+ QTest::qWait(300);
+
+ QTRY_COMPARE(o.values.first(), 42);
+ QCOMPARE(o.values.last(), 420);
+}
+
+void tst_QPropertyAnimation::noStartValueWithLoop()
+{
+ StartValueTester o;
+ o.setProperty("ole", 42);
+ o.values.clear();
+
+ QPropertyAnimation a(&o, "ole");
+ a.setEndValue(420);
+ a.setDuration(250);
+ a.setLoopCount(2);
+ a.start();
+
+ a.setCurrentTime(250);
+ QCOMPARE(o.values.first(), 42);
+ QCOMPARE(a.currentValue().toInt(), 42);
+ QCOMPARE(o.values.last(), 42);
+
+ a.setCurrentTime(500);
+ QCOMPARE(a.currentValue().toInt(), 420);
+}
+
+void tst_QPropertyAnimation::startWhenAnotherIsRunning()
+{
+ StartValueTester o;
+ o.setProperty("ole", 42);
+ o.values.clear();
+
+ {
+ //normal case: the animation finishes and is deleted
+ QPointer<QVariantAnimation> anim = new QPropertyAnimation(&o, "ole");
+ anim->setEndValue(100);
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ anim->start(QVariantAnimation::DeleteWhenStopped);
+ QTest::qWait(anim->duration() + 100);
+ QTRY_COMPARE(runningSpy.count(), 2); //started and then stopped
+ QVERIFY(!anim);
+ }
+
+ {
+ QPointer<QVariantAnimation> anim = new QPropertyAnimation(&o, "ole");
+ anim->setEndValue(100);
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ anim->start(QVariantAnimation::DeleteWhenStopped);
+ QTest::qWait(anim->duration()/2);
+ QPointer<QVariantAnimation> anim2 = new QPropertyAnimation(&o, "ole");
+ anim2->setEndValue(100);
+ QCOMPARE(runningSpy.count(), 1);
+ QCOMPARE(anim->state(), QVariantAnimation::Running);
+
+ //anim2 will interrupt anim1
+ QMetaObject::invokeMethod(anim2, "start", Qt::QueuedConnection, Q_ARG(QAbstractAnimation::DeletionPolicy, QVariantAnimation::DeleteWhenStopped));
+ QTest::qWait(50);
+ QVERIFY(!anim); //anim should have been deleted
+ QVERIFY(anim2);
+ QTest::qWait(anim2->duration());
+ QTRY_VERIFY(!anim2); //anim2 is finished: it should have been deleted by now
+ QVERIFY(!anim);
+ }
+
+}
+
+// copy from easing.cpp in case that function changes definition
+static qreal easeInOutBack(qreal t)
+{
+ qreal s = 1.70158;
+ qreal t_adj = 2.0f * (qreal)t;
+ if (t_adj < 1) {
+ s *= 1.525f;
+ return 1.0/2*(t_adj*t_adj*((s+1)*t_adj - s));
+ } else {
+ t_adj -= 2;
+ s *= 1.525f;
+ return 1.0/2*(t_adj*t_adj*((s+1)*t_adj + s) + 2);
+ }
+}
+
+void tst_QPropertyAnimation::easingcurve_data()
+{
+ QTest::addColumn<int>("currentTime");
+ QTest::addColumn<int>("expectedvalue");
+
+ QTest::newRow("interpolation1") << 0 << 0;
+ QTest::newRow("interpolation2") << 1000 << 1000;
+ QTest::newRow("extrapolationbelow") << 250 << -99;
+ QTest::newRow("extrapolationabove") << 750 << 1099;
+}
+
+void tst_QPropertyAnimation::easingcurve()
+{
+ QFETCH(int, currentTime);
+ QFETCH(int, expectedvalue);
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation pAnimation(&o, "ole");
+ pAnimation.setStartValue(0);
+ pAnimation.setEndValue(1000);
+ pAnimation.setDuration(1000);
+
+ // this easingcurve assumes that we extrapolate before startValue and after endValue
+ QEasingCurve easingCurve;
+ easingCurve.setCustomType(easeInOutBack);
+ pAnimation.setEasingCurve(easingCurve);
+ pAnimation.start();
+ pAnimation.pause();
+ pAnimation.setCurrentTime(currentTime);
+ QCOMPARE(o.property("ole").toInt(), expectedvalue);
+}
+
+void tst_QPropertyAnimation::startWithoutStartValue()
+{
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation anim(&o, "ole");
+ anim.setEndValue(100);
+
+ anim.start();
+
+ QTest::qWait(100);
+ int current = anim.currentValue().toInt();
+ //it is somewhere in the animation
+ QVERIFY(current > 42);
+ QVERIFY(current < 100);
+
+ QTest::qWait(200);
+ QTRY_COMPARE(anim.state(), QVariantAnimation::Stopped);
+ current = anim.currentValue().toInt();
+ QCOMPARE(current, 100);
+ QCOMPARE(o.property("ole").toInt(), current);
+
+ anim.setEndValue(110);
+ anim.start();
+ current = anim.currentValue().toInt();
+ // the default start value will reevaluate the current property
+ // and set it to the end value of the last iteration
+ QCOMPARE(current, 100);
+ QTest::qWait(100);
+ current = anim.currentValue().toInt();
+ //it is somewhere in the animation
+ QVERIFY(current >= 100);
+ QVERIFY(current <= 110);
+}
+
+void tst_QPropertyAnimation::startBackwardWithoutEndValue()
+{
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation anim(&o, "ole");
+ anim.setStartValue(100);
+ anim.setDirection(QAbstractAnimation::Backward);
+
+ //we start without an end value
+ anim.start();
+ QCOMPARE(anim.state(), QAbstractAnimation::Running);
+ QCOMPARE(o.property("ole").toInt(), 42); //the initial value
+
+ QTest::qWait(100);
+ int current = anim.currentValue().toInt();
+ //it is somewhere in the animation
+ QVERIFY(current > 42);
+ QVERIFY(current < 100);
+
+ QTest::qWait(200);
+ QTRY_COMPARE(anim.state(), QVariantAnimation::Stopped);
+ current = anim.currentValue().toInt();
+ QCOMPARE(current, 100);
+ QCOMPARE(o.property("ole").toInt(), current);
+
+ anim.setStartValue(110);
+ anim.start();
+ current = anim.currentValue().toInt();
+ // the default start value will reevaluate the current property
+ // and set it to the end value of the last iteration
+ QCOMPARE(current, 100);
+ QTest::qWait(100);
+ current = anim.currentValue().toInt();
+ //it is somewhere in the animation
+ QVERIFY(current >= 100);
+ QVERIFY(current <= 110);
+}
+
+
+void tst_QPropertyAnimation::playForwardBackward()
+{
+ QObject o;
+ o.setProperty("ole", 0);
+ QCOMPARE(o.property("ole").toInt(), 0);
+
+ QPropertyAnimation anim(&o, "ole");
+ anim.setStartValue(0);
+ anim.setEndValue(100);
+ anim.start();
+ QTest::qWait(anim.duration() + 100);
+ QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(anim.currentTime(), anim.duration());
+
+ //the animation is at the end
+ anim.setDirection(QVariantAnimation::Backward);
+ anim.start();
+ QCOMPARE(anim.state(), QAbstractAnimation::Running);
+ QTest::qWait(anim.duration() + 100);
+ QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(anim.currentTime(), 0);
+
+ //the direction is backward
+ //restarting should jump to the end
+ anim.start();
+ QCOMPARE(anim.state(), QAbstractAnimation::Running);
+ QCOMPARE(anim.currentTime(), anim.duration());
+ QTest::qWait(anim.duration() + 100);
+ QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(anim.currentTime(), 0);
+}
+
+struct Number
+{
+ Number() {}
+ Number(int n)
+ : n(n) {}
+
+ Number(const Number &other)
+ : n(other.n){}
+
+ Number &operator=(const Number &other) {
+ n = other.n;
+ return *this;
+ }
+ bool operator==(const Number &other) const {
+ return n == other.n;
+ }
+
+ int n;
+};
+
+Q_DECLARE_METATYPE(Number)
+Q_DECLARE_METATYPE(QAbstractAnimation::State)
+
+QVariant numberInterpolator(const Number &f, const Number &t, qreal progress)
+{
+ return qVariantFromValue<Number>(Number(f.n + (t.n - f.n)*progress));
+}
+
+QVariant xaxisQPointInterpolator(const QPointF &f, const QPointF &t, qreal progress)
+{
+ return QPointF(f.x() + (t.x() - f.x())*progress, f.y());
+}
+
+void tst_QPropertyAnimation::interpolated()
+{
+ QObject o;
+ o.setProperty("point", QPointF()); //this will avoid warnings
+ o.setProperty("number", qVariantFromValue<Number>(Number(42)));
+ QCOMPARE(qVariantValue<Number>(o.property("number")), Number(42));
+ {
+ qRegisterAnimationInterpolator<Number>(numberInterpolator);
+ QPropertyAnimation anim(&o, "number");
+ anim.setStartValue(qVariantFromValue<Number>(Number(0)));
+ anim.setEndValue(qVariantFromValue<Number>(Number(100)));
+ anim.setDuration(1000);
+ anim.start();
+ anim.pause();
+ anim.setCurrentTime(100);
+ Number t(qVariantValue<Number>(o.property("number")));
+ QCOMPARE(t, Number(10));
+ anim.setCurrentTime(500);
+ QCOMPARE(qVariantValue<Number>(o.property("number")), Number(50));
+ }
+ {
+ qRegisterAnimationInterpolator<QPointF>(xaxisQPointInterpolator);
+ QPropertyAnimation anim(&o, "point");
+ anim.setStartValue(QPointF(0,0));
+ anim.setEndValue(QPointF(100, 100));
+ anim.setDuration(1000);
+ anim.start();
+ anim.pause();
+ anim.setCurrentTime(100);
+ QCOMPARE(o.property("point"), QVariant(QPointF(10, 0)));
+ anim.setCurrentTime(500);
+ QCOMPARE(o.property("point"), QVariant(QPointF(50, 0)));
+ }
+ {
+ // unregister it and see if we get back the default behaviour
+ qRegisterAnimationInterpolator<QPointF>(0);
+ QPropertyAnimation anim(&o, "point");
+ anim.setStartValue(QPointF(0,0));
+ anim.setEndValue(QPointF(100, 100));
+ anim.setDuration(1000);
+ anim.start();
+ anim.pause();
+ anim.setCurrentTime(100);
+ QCOMPARE(o.property("point").toPointF(), QPointF(10, 10));
+ anim.setCurrentTime(500);
+ QCOMPARE(o.property("point").toPointF(), QPointF(50, 50));
+ }
+
+ {
+ // Interpolate a qreal property with a int interpolator
+ AnimationObject o1;
+ o1.setRealValue(42.42);
+ QPropertyAnimation anim(&o1, "realValue");
+ anim.setStartValue(0);
+ anim.setEndValue(100);
+ anim.start();
+ QCOMPARE(o1.realValue(), qreal(0));
+ anim.setCurrentTime(250);
+ QCOMPARE(o1.realValue(), qreal(100));
+ }
+}
+
+Q_DECLARE_METATYPE(QVariant)
+
+void tst_QPropertyAnimation::setStartEndValues_data()
+{
+ QTest::addColumn<QByteArray>("propertyName");
+ QTest::addColumn<QVariant>("initialValue");
+ QTest::addColumn<QVariant>("startValue");
+ QTest::addColumn<QVariant>("endValue");
+
+ QTest::newRow("dynamic property") << QByteArray("ole") << QVariant(42) << QVariant(0) << QVariant(10);
+ QTest::newRow("real property, with unmatching types") << QByteArray("x") << QVariant(42.) << QVariant(0) << QVariant(10.);
+}
+
+void tst_QPropertyAnimation::setStartEndValues()
+{
+ MyObject object;
+ QFETCH(QByteArray, propertyName);
+ QFETCH(QVariant, initialValue);
+ QFETCH(QVariant, startValue);
+ QFETCH(QVariant, endValue);
+
+ //this tests the start value, end value and default start value
+ object.setProperty(propertyName, initialValue);
+ QPropertyAnimation anim(&object, propertyName);
+ QVariantAnimation::KeyValues values;
+ QCOMPARE(anim.keyValues(), values);
+
+ //let's add a start value
+ anim.setStartValue(startValue);
+ values << QVariantAnimation::KeyValue(0, startValue);
+ QCOMPARE(anim.keyValues(), values);
+
+ anim.setEndValue(endValue);
+ values << QVariantAnimation::KeyValue(1, endValue);
+ QCOMPARE(anim.keyValues(), values);
+
+ //now we can play with objects
+ QCOMPARE(object.property(propertyName).toDouble(), initialValue.toDouble());
+ anim.start();
+ QVERIFY(anim.startValue().isValid());
+ QCOMPARE(object.property(propertyName), anim.startValue());
+ anim.setCurrentTime(anim.duration()/2);
+ QCOMPARE(object.property(propertyName).toDouble(), (startValue.toDouble() + endValue.toDouble())/2 ); //just in the middle of the animation
+ anim.setCurrentTime(anim.duration()); //we go to the end of the animation
+ QCOMPARE(anim.state(), QAnimationGroup::Stopped); //it should have stopped
+ QVERIFY(anim.endValue().isValid());
+ QCOMPARE(object.property(propertyName), anim.endValue()); //end of the animations
+
+ //now we remove the explicit start value and test the implicit one
+ anim.stop();
+ object.setProperty(propertyName, initialValue);
+
+ //let's reset the start value
+ values.remove(0);
+ anim.setStartValue(QVariant());
+ QCOMPARE(anim.keyValues(), values);
+ QVERIFY(!anim.startValue().isValid());
+
+ anim.start();
+ QCOMPARE(object.property(propertyName), initialValue);
+ anim.setCurrentTime(anim.duration()/2);
+ QCOMPARE(object.property(propertyName).toDouble(), (initialValue.toDouble() + endValue.toDouble())/2 ); //just in the middle of the animation
+ anim.setCurrentTime(anim.duration()); //we go to the end of the animation
+ QCOMPARE(anim.state(), QAnimationGroup::Stopped); //it should have stopped
+ QVERIFY(anim.endValue().isValid());
+ QCOMPARE(object.property(propertyName), anim.endValue()); //end of the animations
+
+ //now we set back the startValue
+ anim.setStartValue(startValue);
+ QVERIFY(anim.startValue().isValid());
+ anim.start();
+ QCOMPARE(object.property(propertyName), startValue);
+}
+
+void tst_QPropertyAnimation::zeroDurationStart()
+{
+ DummyPropertyAnimation anim;
+ QSignalSpy spy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ anim.setDuration(0);
+ QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ anim.start();
+ //the animation stops immediately
+ QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(spy.count(), 2);
+
+ //let's check the first state change
+ const QVariantList firstChange = spy.first();
+ //old state
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(firstChange.last()), QAbstractAnimation::Stopped);
+ //new state
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(firstChange.first()), QAbstractAnimation::Running);
+
+ //let's check the first state change
+ const QVariantList secondChange = spy.last();
+ //old state
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(secondChange.last()), QAbstractAnimation::Running);
+ //new state
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(secondChange.first()), QAbstractAnimation::Stopped);
+}
+
+#define Pause 1
+#define Start 2
+#define Resume 3
+#define Stop 4
+
+void tst_QPropertyAnimation::operationsInStates_data()
+{
+ QTest::addColumn<QAbstractAnimation::State>("originState");
+ QTest::addColumn<int>("operation");
+ QTest::addColumn<QString>("expectedWarning");
+ QTest::addColumn<QAbstractAnimation::State>("expectedState");
+
+ QString pauseWarn(QLatin1String("QAbstractAnimation::pause: Cannot pause a stopped animation"));
+ QString resumeWarn(QLatin1String("QAbstractAnimation::resume: Cannot resume an animation that is not paused"));
+
+ QTest::newRow("S-pause") << QAbstractAnimation::Stopped << Pause << pauseWarn << QAbstractAnimation::Stopped;
+ QTest::newRow("S-start") << QAbstractAnimation::Stopped << Start << QString() << QAbstractAnimation::Running;
+ QTest::newRow("S-resume") << QAbstractAnimation::Stopped << Resume << resumeWarn << QAbstractAnimation::Stopped;
+ QTest::newRow("S-stop") << QAbstractAnimation::Stopped << Stop << QString() << QAbstractAnimation::Stopped;
+
+ QTest::newRow("P-pause") << QAbstractAnimation::Paused << Pause << QString() << QAbstractAnimation::Paused;
+ QTest::newRow("P-start") << QAbstractAnimation::Paused << Start << QString() << QAbstractAnimation::Running;
+ QTest::newRow("P-resume") << QAbstractAnimation::Paused << Resume << QString() << QAbstractAnimation::Running;
+ QTest::newRow("P-stop") << QAbstractAnimation::Paused << Stop << QString() << QAbstractAnimation::Stopped;
+
+ QTest::newRow("R-pause") << QAbstractAnimation::Running << Pause << QString() << QAbstractAnimation::Paused;
+ QTest::newRow("R-start") << QAbstractAnimation::Running << Start << QString() << QAbstractAnimation::Running;
+ QTest::newRow("R-resume") << QAbstractAnimation::Running << Resume << resumeWarn << QAbstractAnimation::Running;
+ QTest::newRow("R-stop") << QAbstractAnimation::Running << Stop << QString() << QAbstractAnimation::Stopped;
+}
+
+void tst_QPropertyAnimation::operationsInStates()
+{
+/**
+ * | pause() |start() |resume() |stop()
+ * ----------+------------+-----------+-----------+-------------------+
+ * Stopped | Stopped |Running |Stopped |Stopped |
+ * _| qWarning |restart |qWarning | |
+ * Paused | Paused |Running |Running |Stopped |
+ * _| | | | |
+ * Running | Paused |Running |Running |Stopped |
+ * | |restart |qWarning | |
+ * ----------+------------+-----------+-----------+-------------------+
+**/
+
+ QFETCH(QAbstractAnimation::State, originState);
+ QFETCH(int, operation);
+ QFETCH(QString, expectedWarning);
+ QFETCH(QAbstractAnimation::State, expectedState);
+
+ QObject o;
+ o.setProperty("ole", 42);
+ QPropertyAnimation anim(&o, "ole");
+ anim.setEndValue(100);
+ QSignalSpy spy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ anim.stop();
+ switch (originState) {
+ case QAbstractAnimation::Stopped:
+ break;
+ case QAbstractAnimation::Paused:
+ anim.start();
+ anim.pause();
+ break;
+ case QAbstractAnimation::Running:
+ anim.start();
+ break;
+ }
+ if (!expectedWarning.isEmpty()) {
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(expectedWarning));
+ }
+ QCOMPARE(anim.state(), originState);
+ switch (operation) {
+ case Pause:
+ anim.pause();
+ break;
+ case Start:
+ anim.start();
+ break;
+ case Resume:
+ anim.resume();
+ break;
+ case Stop:
+ anim.stop();
+ break;
+ }
+
+ QCOMPARE(anim.state(), expectedState);
+}
+#undef Pause
+#undef Start
+#undef Resume
+#undef Stop
+
+void tst_QPropertyAnimation::oneKeyValue()
+{
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation animation(&o, "ole");
+ animation.setStartValue(43);
+ animation.setEndValue(44);
+ animation.setDuration(100);
+
+ animation.setCurrentTime(0);
+
+ QVERIFY(animation.currentValue().isValid());
+ QCOMPARE(animation.currentValue().toInt(), 43);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ // remove the last key value
+ animation.setKeyValueAt(1.0, QVariant());
+
+ // we will neither interpolate, nor update the current value
+ // since there is only one 1 key value defined
+ animation.setCurrentTime(100);
+
+ // the animation should not have been modified
+ QVERIFY(animation.currentValue().isValid());
+ QCOMPARE(animation.currentValue().toInt(), 43);
+ QCOMPARE(o.property("ole").toInt(), 42);
+}
+
+void tst_QPropertyAnimation::updateOnSetKeyValues()
+{
+ QObject o;
+ o.setProperty("ole", 100);
+ QCOMPARE(o.property("ole").toInt(), 100);
+
+ QPropertyAnimation animation(&o, "ole");
+ animation.setStartValue(100);
+ animation.setEndValue(200);
+ animation.setDuration(100);
+
+ animation.setCurrentTime(50);
+ QCOMPARE(animation.currentValue().toInt(), 150);
+ animation.setKeyValueAt(0.0, 300);
+ QCOMPARE(animation.currentValue().toInt(), 250);
+
+ o.setProperty("ole", 100);
+ QPropertyAnimation animation2(&o, "ole");
+ QVariantAnimation::KeyValues kValues;
+ kValues << QVariantAnimation::KeyValue(0.0, 100) << QVariantAnimation::KeyValue(1.0, 200);
+ animation2.setKeyValues(kValues);
+ animation2.setDuration(100);
+ animation2.setCurrentTime(50);
+ QCOMPARE(animation2.currentValue().toInt(), 150);
+
+ kValues.clear();
+ kValues << QVariantAnimation::KeyValue(0.0, 300) << QVariantAnimation::KeyValue(1.0, 200);
+ animation2.setKeyValues(kValues);
+
+ QCOMPARE(animation2.currentValue().toInt(), animation.currentValue().toInt());
+}
+
+
+//this class will 'throw' an error in the test lib
+// if the property ole is set to ErrorValue
+class MyErrorObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int ole READ ole WRITE setOle)
+public:
+
+ static const int ErrorValue = 10000;
+
+ MyErrorObject() : m_ole(0) { }
+ int ole() const { return m_ole; }
+ void setOle(int o)
+ {
+ QVERIFY(o != ErrorValue);
+ m_ole = o;
+ }
+
+private:
+ int m_ole;
+
+
+};
+
+void tst_QPropertyAnimation::restart()
+{
+ //here we check that be restarting an animation
+ //it doesn't get an bogus intermediate value (end value)
+ //because the time is not yet reset to 0
+ MyErrorObject o;
+ o.setOle(100);
+ QCOMPARE(o.property("ole").toInt(), 100);
+
+ QPropertyAnimation anim(&o, "ole");
+ anim.setEndValue(200);
+ anim.start();
+ anim.setCurrentTime(anim.duration());
+ QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(o.property("ole").toInt(), 200);
+
+ //we'll check that the animation never gets a wrong value when starting it
+ //after having changed the end value
+ anim.setEndValue(MyErrorObject::ErrorValue);
+ anim.start();
+}
+
+void tst_QPropertyAnimation::valueChanged()
+{
+ qRegisterMetaType<QVariant>("QVariant");
+
+ //we check that we receive the valueChanged signal
+ MyErrorObject o;
+ o.setOle(0);
+ QCOMPARE(o.property("ole").toInt(), 0);
+ QPropertyAnimation anim(&o, "ole");
+ anim.setEndValue(5);
+ anim.setDuration(1000);
+ QSignalSpy spy(&anim, SIGNAL(valueChanged(QVariant)));
+ anim.start();
+
+ QTest::qWait(anim.duration() + 100);
+
+ QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(anim.currentTime(), anim.duration());
+
+ //let's check that the values go forward
+ QCOMPARE(spy.count(), 6); //we should have got everything from 0 to 5
+ for (int i = 0; i < spy.count(); ++i) {
+ QCOMPARE(qvariant_cast<QVariant>(spy.at(i).first()).toInt(), i);
+ }
+}
+
+//this class will help us make sure that 2 animations started
+//at the same time also end at the same time
+class MySyncObject : public MyErrorObject
+{
+ Q_OBJECT
+public:
+ MySyncObject() : anim(this, "ole")
+ {
+ anim.setEndValue(1000);
+ }
+public slots:
+ void checkAnimationFinished()
+ {
+ QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(ole(), 1000);
+ }
+
+public:
+ QPropertyAnimation anim;
+};
+
+void tst_QPropertyAnimation::twoAnimations()
+{
+ MySyncObject o1, o2;
+ o1.setOle(0);
+ o2.setOle(0);
+
+ //when the animation in o1 is finished
+ //the animation in o2 should stop around the same time
+ //We use a queued connection to check just after the tick from the common timer
+ //the other way is true too
+ QObject::connect(&o1.anim, SIGNAL(finished()),
+ &o2, SLOT(checkAnimationFinished()), Qt::QueuedConnection);
+ QObject::connect(&o2.anim, SIGNAL(finished()),
+ &o1, SLOT(checkAnimationFinished()), Qt::QueuedConnection);
+
+ o1.anim.start();
+ o2.anim.start();
+
+ QTest::qWait(o1.anim.duration() + 100);
+ QTRY_COMPARE(o1.anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(o2.anim.state(), QAbstractAnimation::Stopped);
+
+ QCOMPARE(o1.ole(), 1000);
+ QCOMPARE(o2.ole(), 1000);
+}
+
+class MyComposedAnimation : public QPropertyAnimation
+{
+ Q_OBJECT
+public:
+ MyComposedAnimation(QObject *target, const QByteArray &propertyName, const QByteArray &innerPropertyName)
+ : QPropertyAnimation(target, propertyName)
+ {
+ innerAnim = new QPropertyAnimation(target, innerPropertyName);
+ this->setEndValue(1000);
+ innerAnim->setEndValue(1000);
+ innerAnim->setDuration(duration() + 100);
+ }
+
+ void start()
+ {
+ QPropertyAnimation::start();
+ innerAnim->start();
+ }
+
+ void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
+ {
+ QPropertyAnimation::updateState(newState, oldState);
+ if (newState == QAbstractAnimation::Stopped)
+ delete innerAnim;
+ }
+
+public:
+ QPropertyAnimation *innerAnim;
+};
+
+void tst_QPropertyAnimation::deletedInUpdateCurrentTime()
+{
+ // this test case reproduces an animation being deleted in the updateCurrentTime of
+ // another animation(was causing segfault).
+ // the deleted animation must have been started after the animation that is deleting.
+ AnimationObject o;
+ o.setValue(0);
+ o.setRealValue(0.0);
+
+ MyComposedAnimation composedAnimation(&o, "value", "realValue");
+ composedAnimation.start();
+ QCOMPARE(composedAnimation.state(), QAbstractAnimation::Running);
+ QTest::qWait(composedAnimation.duration() + 100);
+
+ QTRY_COMPARE(composedAnimation.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(o.value(), 1000);
+}
+
+void tst_QPropertyAnimation::totalDuration()
+{
+ QPropertyAnimation anim;
+ QCOMPARE(anim.totalDuration(), 250);
+ anim.setLoopCount(2);
+ QCOMPARE(anim.totalDuration(), 2*250);
+ anim.setLoopCount(-1);
+ QCOMPARE(anim.totalDuration(), -1);
+ anim.setDuration(0);
+ QCOMPARE(anim.totalDuration(), 0);
+}
+
+void tst_QPropertyAnimation::zeroLoopCount()
+{
+ DummyPropertyAnimation* anim;
+ anim = new DummyPropertyAnimation;
+ anim->setStartValue(0);
+ anim->setDuration(20);
+ anim->setLoopCount(0);
+
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy finishedSpy(anim, SIGNAL(finished()));
+
+ QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim->currentValue().toInt(), 0);
+ QCOMPARE(runningSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ anim->start();
+
+ QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim->currentValue().toInt(), 0);
+ QCOMPARE(runningSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 0);
+}
+
+QTEST_MAIN(tst_QPropertyAnimation)
+#include "tst_qpropertyanimation.moc"
diff --git a/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro b/tests/auto/corelib/animation/qsequentialanimationgroup/qsequentialanimationgroup.pro
index c0c10c054d..c0c10c054d 100644
--- a/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro
+++ b/tests/auto/corelib/animation/qsequentialanimationgroup/qsequentialanimationgroup.pro
diff --git a/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp b/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
new file mode 100644
index 0000000000..00c038b948
--- /dev/null
+++ b/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
@@ -0,0 +1,1672 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include "../../../../shared/util.h"
+
+#include <QtCore/qanimationgroup.h>
+#include <QtCore/qsequentialanimationgroup.h>
+
+//TESTED_CLASS=QSequentialAnimationGroup
+//TESTED_FILES=
+
+Q_DECLARE_METATYPE(QAbstractAnimation::State)
+Q_DECLARE_METATYPE(QAbstractAnimation*)
+
+class tst_QSequentialAnimationGroup : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QSequentialAnimationGroup();
+ virtual ~tst_QSequentialAnimationGroup();
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ void construction();
+ void setCurrentTime();
+ void setCurrentTimeWithUncontrolledAnimation();
+ void seekingForwards();
+ void seekingBackwards();
+ void pauseAndResume();
+ void restart();
+ void looping();
+ void startDelay();
+ void clearGroup();
+ void groupWithZeroDurationAnimations();
+ void propagateGroupUpdateToChildren();
+ void updateChildrenWithRunningGroup();
+ void deleteChildrenWithRunningGroup();
+ void startChildrenWithStoppedGroup();
+ void stopGroupWithRunningChild();
+ void startGroupWithRunningChild();
+ void zeroDurationAnimation();
+ void stopUncontrolledAnimations();
+ void finishWithUncontrolledAnimation();
+ void addRemoveAnimation();
+ void currentAnimation();
+ void currentAnimationWithZeroDuration();
+ void insertAnimation();
+ void clear();
+ void pauseResume();
+};
+
+tst_QSequentialAnimationGroup::tst_QSequentialAnimationGroup()
+{
+}
+
+tst_QSequentialAnimationGroup::~tst_QSequentialAnimationGroup()
+{
+}
+
+void tst_QSequentialAnimationGroup::init()
+{
+ qRegisterMetaType<QAbstractAnimation::State>("QAbstractAnimation::State");
+ qRegisterMetaType<QAbstractAnimation*>("QAbstractAnimation*");
+}
+
+void tst_QSequentialAnimationGroup::cleanup()
+{
+}
+
+void tst_QSequentialAnimationGroup::construction()
+{
+ QSequentialAnimationGroup animationgroup;
+}
+
+class AnimationObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int value READ value WRITE setValue)
+public:
+ AnimationObject(int startValue = 0)
+ : v(startValue)
+ { }
+
+ int value() const { return v; }
+ void setValue(int value) { v = value; }
+
+ int v;
+};
+
+class TestAnimation : public QVariantAnimation
+{
+ Q_OBJECT
+public:
+ virtual void updateCurrentValue(const QVariant &value) { Q_UNUSED(value)};
+ virtual void updateState(QAbstractAnimation::State newState,
+ QAbstractAnimation::State oldState)
+ {
+ Q_UNUSED(oldState)
+ Q_UNUSED(newState)
+ };
+};
+
+class DummyPropertyAnimation : public QPropertyAnimation
+{
+public:
+ DummyPropertyAnimation(QObject *parent = 0) : QPropertyAnimation(parent)
+ {
+ setTargetObject(&o);
+ this->setPropertyName("value");
+ setEndValue(0);
+ }
+
+ AnimationObject o;
+};
+
+class UncontrolledAnimation : public QPropertyAnimation
+{
+ Q_OBJECT
+public:
+ UncontrolledAnimation(QObject *target, QObject *parent = 0)
+ : QPropertyAnimation(target, "value", parent)
+ {
+ setDuration(250);
+ setEndValue(0);
+ }
+
+ int duration() const { return -1; /* not time driven */ }
+
+protected:
+ void updateCurrentTime(int currentTime)
+ {
+ QPropertyAnimation::updateCurrentTime(currentTime);
+ if (currentTime >= QPropertyAnimation::duration())
+ stop();
+ }
+};
+
+void tst_QSequentialAnimationGroup::setCurrentTime()
+{
+ // sequence operating on same object/property
+ QAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
+ a2_s_o1->setLoopCount(3);
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a2_s_o1);
+ sequence->addAnimation(a3_s_o1);
+
+ // sequence operating on different object/properties
+ QAnimationGroup *sequence2 = new QSequentialAnimationGroup();
+ QVariantAnimation *a1_s_o2 = new DummyPropertyAnimation;
+ QVariantAnimation *a1_s_o3 = new DummyPropertyAnimation;
+ sequence2->addAnimation(a1_s_o2);
+ sequence2->addAnimation(a1_s_o3);
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+ group.addAnimation(sequence2);
+
+ // Current time = 1
+ group.setCurrentTime(1);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(sequence->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 250
+ group.setCurrentTime(250);
+ QCOMPARE(group.currentLoopTime(), 250);
+ QCOMPARE(sequence->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 251
+ group.setCurrentTime(251);
+ QCOMPARE(group.currentLoopTime(), 251);
+ QCOMPARE(sequence->currentLoopTime(), 251);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a2_s_o1->currentLoop(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 750
+ group.setCurrentTime(750);
+ QCOMPARE(group.currentLoopTime(), 750);
+ QCOMPARE(sequence->currentLoopTime(), 750);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1000
+ group.setCurrentTime(1000);
+ QCOMPARE(group.currentLoopTime(), 1000);
+ QCOMPARE(sequence->currentLoopTime(), 1000);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1010
+ group.setCurrentTime(1010);
+ QCOMPARE(group.currentLoopTime(), 1010);
+ QCOMPARE(sequence->currentLoopTime(), 1010);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 10);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1250
+ group.setCurrentTime(1250);
+ QCOMPARE(group.currentLoopTime(), 1250);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1500
+ group.setCurrentTime(1500);
+ QCOMPARE(group.currentLoopTime(), 1500);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1750
+ group.setCurrentTime(1750);
+ QCOMPARE(group.currentLoopTime(), 1750);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 250);
+
+ // Current time = 2000
+ group.setCurrentTime(2000);
+ QCOMPARE(group.currentLoopTime(), 1750);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 250);
+}
+
+void tst_QSequentialAnimationGroup::setCurrentTimeWithUncontrolledAnimation()
+{
+ AnimationObject t_o1;
+
+ // sequence operating on different object/properties
+ QAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QPropertyAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QPropertyAnimation *a1_s_o2 = new DummyPropertyAnimation;
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a1_s_o2);
+
+ QPropertyAnimation *notTimeDriven = new UncontrolledAnimation(&t_o1);
+ QCOMPARE(notTimeDriven->totalDuration(), -1);
+
+ QAbstractAnimation *loopsForever = new DummyPropertyAnimation;
+ loopsForever->setLoopCount(-1);
+ QCOMPARE(loopsForever->totalDuration(), -1);
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+ group.addAnimation(notTimeDriven);
+ group.addAnimation(loopsForever);
+ group.start();
+ group.pause(); // this allows the group to listen for the finish signal of its children
+
+ // Current time = 1
+ group.setCurrentTime(1);
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped);
+
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(sequence->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 0);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+
+ // Current time = 250
+ group.setCurrentTime(250);
+ QCOMPARE(group.currentLoopTime(), 250);
+ QCOMPARE(sequence->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 0);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+
+ // Current time = 500
+ group.setCurrentTime(500);
+ QCOMPARE(group.currentLoopTime(), 500);
+ QCOMPARE(sequence->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 0);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation *>(notTimeDriven));
+
+ // Current time = 505
+ group.setCurrentTime(505);
+ QCOMPARE(group.currentLoopTime(), 505);
+ QCOMPARE(sequence->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 5);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation *>(notTimeDriven));
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven->state(), QAnimationGroup::Paused);
+ QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped);
+
+ // Current time = 750 (end of notTimeDriven animation)
+ group.setCurrentTime(750);
+ QCOMPARE(group.currentLoopTime(), 750);
+ QCOMPARE(sequence->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 250);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), loopsForever);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever->state(), QAnimationGroup::Paused);
+
+ // Current time = 800 (as notTimeDriven was finished at 750, loopsforever should still run)
+ group.setCurrentTime(800);
+ QCOMPARE(group.currentLoopTime(), 800);
+ QCOMPARE(group.currentAnimation(), loopsForever);
+ QCOMPARE(sequence->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 250);
+ QCOMPARE(loopsForever->currentLoopTime(), 50);
+
+ loopsForever->stop(); // this should stop the group
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::seekingForwards()
+{
+
+ // sequence operating on same object/property
+ QAnimationGroup *sequence = new QSequentialAnimationGroup;
+ QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
+ a2_s_o1->setLoopCount(3);
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a2_s_o1);
+ sequence->addAnimation(a3_s_o1);
+
+ // sequence operating on different object/properties
+ QAnimationGroup *sequence2 = new QSequentialAnimationGroup;
+ QVariantAnimation *a1_s_o2 = new DummyPropertyAnimation;
+ QVariantAnimation *a1_s_o3 = new DummyPropertyAnimation;
+ sequence2->addAnimation(a1_s_o2);
+ sequence2->addAnimation(a1_s_o3);
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+ group.addAnimation(sequence2);
+
+ // Current time = 1
+ group.setCurrentTime(1);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
+
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(sequence->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1500
+ group.setCurrentTime(1500);
+ QCOMPARE(group.currentLoopTime(), 1500);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // this will restart the group
+ group.start();
+ group.pause();
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
+
+ // Current time = 1750
+ group.setCurrentTime(1750);
+ QCOMPARE(group.currentLoopTime(), 1750);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 250);
+}
+
+void tst_QSequentialAnimationGroup::seekingBackwards()
+{
+ // sequence operating on same object/property
+ QAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
+ a2_s_o1->setLoopCount(3);
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a2_s_o1);
+ sequence->addAnimation(a3_s_o1);
+
+ // sequence operating on different object/properties
+ QAnimationGroup *sequence2 = new QSequentialAnimationGroup();
+ QVariantAnimation *a1_s_o2 = new DummyPropertyAnimation;
+ QVariantAnimation *a1_s_o3 = new DummyPropertyAnimation;
+ sequence2->addAnimation(a1_s_o2);
+ sequence2->addAnimation(a1_s_o3);
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+ group.addAnimation(sequence2);
+
+ group.start();
+
+ // Current time = 1600
+ group.setCurrentTime(1600);
+ QCOMPARE(group.currentLoopTime(), 1600);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 350);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 100);
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Running);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o3->state(), QAnimationGroup::Running);
+
+ // Seeking backwards, current time = 1
+ group.setCurrentTime(1);
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(sequence->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 1);
+
+ QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children,"
+ "hence they don't reset from their current animation", Continue);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children,"
+ "hence they don't reset from their current animation", Continue);
+ QCOMPARE(a2_s_o1->currentLoop(), 0);
+ QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children,"
+ "hence they don't reset from their current animation", Continue);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(sequence->state(), QAnimationGroup::Running);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Running);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
+
+ // Current time = 2000
+ group.setCurrentTime(2000);
+ QCOMPARE(group.currentLoopTime(), 1750);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 250);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
+}
+
+typedef QList<QAbstractAnimation::State> StateList;
+
+static bool compareStates(const QSignalSpy& spy, const StateList &expectedStates)
+{
+ bool equals = true;
+ for (int i = 0; i < qMax(expectedStates.count(), spy.count()); ++i) {
+ if (i >= spy.count() || i >= expectedStates.count()) {
+ equals = false;
+ break;
+ }
+ QList<QVariant> args = spy.at(i);
+ QAbstractAnimation::State st = expectedStates.at(i);
+ QAbstractAnimation::State actual = qVariantValue<QAbstractAnimation::State>(args.first());
+ if (equals && actual != st) {
+ equals = false;
+ break;
+ }
+ }
+ if (!equals) {
+ const char *stateStrings[] = {"Stopped", "Paused", "Running"};
+ QString e,a;
+ for (int i = 0; i < qMax(expectedStates.count(), spy.count()); ++i) {
+ if (i < expectedStates.count()) {
+ int exp = int(expectedStates.at(i));
+ if (!e.isEmpty())
+ e += QLatin1String(", ");
+ e += QLatin1String(stateStrings[exp]);
+ }
+ if (i < spy.count()) {
+ QList<QVariant> args = spy.at(i);
+ QAbstractAnimation::State actual = qVariantValue<QAbstractAnimation::State>(args.value(1));
+ if (!a.isEmpty())
+ a += QLatin1String(", ");
+ if (int(actual) >= 0 && int(actual) <= 2) {
+ a += QLatin1String(stateStrings[int(actual)]);
+ } else {
+ a += QLatin1String("NaN");
+ }
+ }
+
+ }
+ qDebug("\n"
+ "expected (count == %d): %s\n"
+ "actual (count == %d): %s\n", expectedStates.count(), qPrintable(e), spy.count(), qPrintable(a));
+ }
+ return equals;
+}
+
+void tst_QSequentialAnimationGroup::pauseAndResume()
+{
+ // sequence operating on same object/property
+ QAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
+ a2_s_o1->setLoopCount(2);
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a2_s_o1);
+ sequence->addAnimation(a3_s_o1);
+ sequence->setLoopCount(2);
+
+ QSignalSpy a1StateChangedSpy(a1_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy seqStateChangedSpy(sequence, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+
+ group.start();
+ group.pause();
+
+ // Current time = 1751
+ group.setCurrentTime(1751);
+ QCOMPARE(group.currentLoopTime(), 1751);
+ QCOMPARE(sequence->currentLoopTime(), 751);
+ QCOMPARE(sequence->currentLoop(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 1);
+ QCOMPARE(a3_s_o1->currentLoop(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 1);
+
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3_s_o1->state(), QAnimationGroup::Paused);
+
+ QCOMPARE(a1StateChangedSpy.count(), 5); // Running,Paused,Stopped,Running,Stopped
+ QCOMPARE(seqStateChangedSpy.count(), 2); // Running,Paused
+
+ QVERIFY(compareStates(a1StateChangedSpy, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running
+ << QAbstractAnimation::Stopped)));
+
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(1).first()),
+ QAnimationGroup::Paused);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(2).first()),
+ QAnimationGroup::Stopped);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(3).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(4).first()),
+ QAnimationGroup::Stopped);
+
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(1).first()),
+ QAnimationGroup::Paused);
+
+ group.resume();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(sequence->state(), QAnimationGroup::Running);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3_s_o1->state(), QAnimationGroup::Running);
+
+ QVERIFY(group.currentLoopTime() >= 1751);
+ QVERIFY(sequence->currentLoopTime() >= 751);
+ QCOMPARE(sequence->currentLoop(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 1);
+ QCOMPARE(a3_s_o1->currentLoop(), 0);
+ QVERIFY(a3_s_o1->currentLoopTime() >= 1);
+
+ QCOMPARE(seqStateChangedSpy.count(), 3); // Running,Paused,Running
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(2).first()),
+ QAnimationGroup::Running);
+
+ group.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3_s_o1->state(), QAnimationGroup::Paused);
+
+ QVERIFY(group.currentLoopTime() >= 1751);
+ QVERIFY(sequence->currentLoopTime() >= 751);
+ QCOMPARE(sequence->currentLoop(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 1);
+ QCOMPARE(a3_s_o1->currentLoop(), 0);
+ QVERIFY(a3_s_o1->currentLoopTime() >= 1);
+
+ QCOMPARE(seqStateChangedSpy.count(), 4); // Running,Paused,Running,Paused
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(3).first()),
+ QAnimationGroup::Paused);
+
+ group.stop();
+
+ QCOMPARE(seqStateChangedSpy.count(), 5); // Running,Paused,Running,Paused,Stopped
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(4).first()),
+ QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::restart()
+{
+ // sequence operating on same object/property
+ QAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QSignalSpy seqCurrentAnimChangedSpy(sequence, SIGNAL(currentAnimationChanged(QAbstractAnimation*)));
+ QSignalSpy seqStateChangedSpy(sequence, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ QVariantAnimation *anims[3];
+ QSignalSpy *animsStateChanged[3];
+
+ for (int i = 0; i < 3; i++) {
+ anims[i] = new DummyPropertyAnimation;
+ anims[i]->setDuration(100);
+ animsStateChanged[i] = new QSignalSpy(anims[i], SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ }
+
+ anims[1]->setLoopCount(2);
+ sequence->addAnimation(anims[0]);
+ sequence->addAnimation(anims[1]);
+ sequence->addAnimation(anims[2]);
+ sequence->setLoopCount(2);
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+
+ group.start();
+
+ QTest::qWait(500);
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+
+ QTest::qWait(300);
+ QTRY_COMPARE(group.state(), QAnimationGroup::Stopped);
+
+ for (int i = 0; i < 3; i++) {
+ QCOMPARE(animsStateChanged[i]->count(), 4);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(1).first()),
+ QAnimationGroup::Stopped);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(2).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(3).first()),
+ QAnimationGroup::Stopped);
+ }
+
+ QCOMPARE(seqStateChangedSpy.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(1).first()),
+ QAnimationGroup::Stopped);
+
+ QCOMPARE(seqCurrentAnimChangedSpy.count(), 6);
+ for(int i=0; i<seqCurrentAnimChangedSpy.count(); i++)
+ QCOMPARE(static_cast<QAbstractAnimation*>(anims[i%3]), qVariantValue<QAbstractAnimation*>(seqCurrentAnimChangedSpy.at(i).at(0)));
+
+ group.start();
+
+ QCOMPARE(animsStateChanged[0]->count(), 5);
+ QCOMPARE(animsStateChanged[1]->count(), 4);
+ QCOMPARE(animsStateChanged[2]->count(), 4);
+ QCOMPARE(seqStateChangedSpy.count(), 3);
+}
+
+void tst_QSequentialAnimationGroup::looping()
+{
+ // sequence operating on same object/property
+ QSequentialAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QAbstractAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QAbstractAnimation *a2_s_o1 = new DummyPropertyAnimation;
+ QAbstractAnimation *a3_s_o1 = new DummyPropertyAnimation;
+
+ QSignalSpy a1Spy(a1_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy a2Spy(a2_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy a3Spy(a3_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy seqSpy(sequence, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ a2_s_o1->setLoopCount(2);
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a2_s_o1);
+ sequence->addAnimation(a3_s_o1);
+ sequence->setLoopCount(2);
+
+ QSequentialAnimationGroup group;
+ QSignalSpy groupSpy(&group, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ group.addAnimation(sequence);
+ group.setLoopCount(2);
+
+ group.start();
+ group.pause();
+
+ // Current time = 1750
+ group.setCurrentTime(1750);
+ QCOMPARE(group.currentLoopTime(), 1750);
+ QCOMPARE(sequence->currentLoopTime(), 750);
+ QCOMPARE(sequence->currentLoop(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 1);
+ // this animation is at the beginning because it is the current one inside sequence
+ QCOMPARE(a3_s_o1->currentLoop(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence->currentAnimation(), a3_s_o1);
+
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3_s_o1->state(), QAnimationGroup::Paused);
+
+ QCOMPARE(a1Spy.count(), 5); // Running,Paused,Stopped,Running,Stopped
+ QVERIFY(compareStates(a1Spy, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running
+ << QAbstractAnimation::Stopped)));
+
+ QCOMPARE(a2Spy.count(), 4); // Running,Stopped,Running,Stopped
+ QVERIFY(compareStates(a3Spy, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused)));
+
+ QCOMPARE(seqSpy.count(), 2); // Running,Paused
+ QCOMPARE(groupSpy.count(), 2); // Running,Paused
+
+ // Looping, current time = duration + 1
+ group.setCurrentTime(group.duration() + 1);
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(group.currentLoop(), 1);
+ QCOMPARE(sequence->currentLoopTime(), 1);
+ QCOMPARE(sequence->currentLoop(), 0);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 1);
+ // this animation is at the end because it was run on the previous loop
+ QCOMPARE(a3_s_o1->currentLoop(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Paused);
+ QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3_s_o1->state(), QAnimationGroup::Stopped);
+
+ QCOMPARE(a1Spy.count(), 7); // Running,Paused,Stopped,Running,Stopped,Running,Stopped
+ QCOMPARE(a2Spy.count(), 4); // Running, Stopped, Running, Stopped
+ QVERIFY(compareStates(a3Spy, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused
+ << QAbstractAnimation::Stopped)));
+ QVERIFY(compareStates(seqSpy, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused)));
+ QCOMPARE(groupSpy.count(), 2);
+}
+
+void tst_QSequentialAnimationGroup::startDelay()
+{
+ QSequentialAnimationGroup group;
+ group.addPause(250);
+ group.addPause(125);
+ QCOMPARE(group.totalDuration(), 375);
+
+ group.start();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+
+ QTest::qWait(500);
+
+ QTRY_COMPARE(group.state(), QAnimationGroup::Stopped);
+ QVERIFY(group.currentLoopTime() == 375);
+}
+
+void tst_QSequentialAnimationGroup::clearGroup()
+{
+ QSequentialAnimationGroup group;
+
+ static const int animationCount = 20;
+
+ for (int i = 0; i < animationCount/2; ++i) {
+ QSequentialAnimationGroup *subGroup = new QSequentialAnimationGroup(&group);
+ group.addPause(100);
+ subGroup->addPause(10);
+ }
+
+ QCOMPARE(group.animationCount(), animationCount);
+
+ QPointer<QAbstractAnimation> children[animationCount];
+ for (int i = 0; i < animationCount; ++i) {
+ QVERIFY(group.animationAt(i) != 0);
+ children[i] = group.animationAt(i);
+ }
+
+ group.clear();
+ QCOMPARE(group.animationCount(), 0);
+ QCOMPARE(group.currentLoopTime(), 0);
+ for (int i = 0; i < animationCount; ++i)
+ QVERIFY(children[i].isNull());
+}
+
+void tst_QSequentialAnimationGroup::groupWithZeroDurationAnimations()
+{
+ QObject o;
+ QObject o2;
+
+ o.setProperty("myProperty", 42);
+ o.setProperty("myOtherProperty", 13);
+ o2.setProperty("myProperty", 42);
+ o2.setProperty("myOtherProperty", 13);
+
+ QSequentialAnimationGroup group;
+
+ QVariantAnimation *a1 = new QPropertyAnimation(&o, "myProperty");
+ a1->setDuration(0);
+ a1->setEndValue(43);
+ group.addAnimation(a1);
+
+ //this should just run fine and change nothing
+ group.setCurrentTime(0);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(a1));
+
+ QVariantAnimation *a2 = new QPropertyAnimation(&o2, "myOtherProperty");
+ a2->setDuration(500);
+ a2->setEndValue(31);
+ group.addAnimation(a2);
+
+ QVariantAnimation *a3 = new QPropertyAnimation(&o, "myProperty");
+ a3->setDuration(0);
+ a3->setEndValue(44);
+ group.addAnimation(a3);
+
+ QVariantAnimation *a4 = new QPropertyAnimation(&o, "myOtherProperty");
+ a4->setDuration(250);
+ a4->setEndValue(75);
+ group.addAnimation(a4);
+
+ QVariantAnimation *a5 = new QPropertyAnimation(&o2, "myProperty");
+ a5->setDuration(0);
+ a5->setEndValue(12);
+ group.addAnimation(a5);
+
+ QCOMPARE(o.property("myProperty").toInt(), 42);
+ QCOMPARE(o.property("myOtherProperty").toInt(), 13);
+ QCOMPARE(o2.property("myProperty").toInt(), 42);
+ QCOMPARE(o2.property("myOtherProperty").toInt(), 13);
+
+
+ group.start();
+
+ QCOMPARE(o.property("myProperty").toInt(), 43);
+ QCOMPARE(o.property("myOtherProperty").toInt(), 13);
+ QCOMPARE(o2.property("myProperty").toInt(), 42);
+ QCOMPARE(o2.property("myOtherProperty").toInt(), 13);
+
+ QTest::qWait(100);
+
+ int o2val = o2.property("myOtherProperty").toInt();
+ QVERIFY(o2val > 13);
+ QVERIFY(o2val < 31);
+ QCOMPARE(o.property("myProperty").toInt(), 43);
+ QCOMPARE(o.property("myOtherProperty").toInt(), 13);
+
+ QTest::qWait(500);
+
+ QTRY_COMPARE(o.property("myProperty").toInt(), 44);
+ QCOMPARE(o2.property("myProperty").toInt(), 42);
+ QCOMPARE(o2.property("myOtherProperty").toInt(), 31);
+ QCOMPARE(a1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a4->state(), QAnimationGroup::Running);
+ QCOMPARE(a5->state(), QAnimationGroup::Stopped);
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QTest::qWait(500);
+
+ QTRY_COMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(o.property("myProperty").toInt(), 44);
+ QCOMPARE(o.property("myOtherProperty").toInt(), 75);
+ QCOMPARE(o2.property("myProperty").toInt(), 12);
+ QCOMPARE(o2.property("myOtherProperty").toInt(), 31);
+ QCOMPARE(a1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a4->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a5->state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::propagateGroupUpdateToChildren()
+{
+ // this test verifies if group state changes are updating its children correctly
+ QSequentialAnimationGroup group;
+
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation anim1(&o, "ole");
+ anim1.setEndValue(43);
+ anim1.setDuration(100);
+ QVERIFY(!anim1.currentValue().isValid());
+ QCOMPARE(anim1.currentValue().toInt(), 0);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(200);
+
+ QVERIFY(anim2.currentValue().isValid());
+ QCOMPARE(anim2.currentValue().toInt(), 0);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+
+ group.start();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(anim1.state(), QAnimationGroup::Paused);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::updateChildrenWithRunningGroup()
+{
+ // assert that its possible to modify a child's state directly while their group is running
+ QSequentialAnimationGroup group;
+
+ TestAnimation anim;
+ anim.setStartValue(0);
+ anim.setEndValue(100);
+ anim.setDuration(200);
+
+ QSignalSpy groupStateChangedSpy(&group, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy childStateChangedSpy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ QCOMPARE(groupStateChangedSpy.count(), 0);
+ QCOMPARE(childStateChangedSpy.count(), 0);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim);
+
+ group.start();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim.state(), QAnimationGroup::Running);
+
+ QCOMPARE(groupStateChangedSpy.count(), 1);
+ QCOMPARE(childStateChangedSpy.count(), 1);
+
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(childStateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+
+ // starting directly a running child will not have any effect
+ anim.start();
+
+ QCOMPARE(groupStateChangedSpy.count(), 1);
+ QCOMPARE(childStateChangedSpy.count(), 1);
+
+ anim.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim.state(), QAnimationGroup::Paused);
+
+ // in the animation stops directly, the group will still be running
+ anim.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::deleteChildrenWithRunningGroup()
+{
+ // test if children can be activated when their group is stopped
+ QSequentialAnimationGroup group;
+
+ QVariantAnimation *anim1 = new TestAnimation;
+ anim1->setStartValue(0);
+ anim1->setEndValue(100);
+ anim1->setDuration(200);
+ group.addAnimation(anim1);
+
+ QCOMPARE(group.duration(), anim1->duration());
+
+ group.start();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1->state(), QAnimationGroup::Running);
+
+ QTest::qWait(100);
+ QTRY_VERIFY(group.currentLoopTime() > 0);
+
+ delete anim1;
+ QCOMPARE(group.animationCount(), 0);
+ QCOMPARE(group.duration(), 0);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(group.currentLoopTime(), 0); //that's the invariant
+}
+
+void tst_QSequentialAnimationGroup::startChildrenWithStoppedGroup()
+{
+ // test if children can be activated when their group is stopped
+ QSequentialAnimationGroup group;
+
+ TestAnimation anim1;
+ anim1.setStartValue(0);
+ anim1.setEndValue(100);
+ anim1.setDuration(200);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(200);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+
+ group.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ anim1.start();
+ anim2.start();
+ anim2.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Paused);
+}
+
+void tst_QSequentialAnimationGroup::stopGroupWithRunningChild()
+{
+ // children that started independently will not be affected by a group stop
+ QSequentialAnimationGroup group;
+
+ TestAnimation anim1;
+ anim1.setStartValue(0);
+ anim1.setEndValue(100);
+ anim1.setDuration(200);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(200);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+
+ anim1.start();
+ anim2.start();
+ anim2.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Paused);
+
+ group.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Paused);
+
+ anim1.stop();
+ anim2.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::startGroupWithRunningChild()
+{
+ // as the group has precedence over its children, starting a group will restart all the children
+ QSequentialAnimationGroup group;
+
+ TestAnimation *anim1 = new TestAnimation();
+ anim1->setStartValue(0);
+ anim1->setEndValue(100);
+ anim1->setDuration(200);
+
+ TestAnimation *anim2 = new TestAnimation();
+ anim2->setStartValue(0);
+ anim2->setEndValue(100);
+ anim2->setDuration(200);
+
+ QSignalSpy stateChangedSpy1(anim1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy stateChangedSpy2(anim2, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ QCOMPARE(stateChangedSpy1.count(), 0);
+ QCOMPARE(stateChangedSpy2.count(), 0);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2->state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(anim1);
+ group.addAnimation(anim2);
+
+ anim1->start();
+ anim2->start();
+ anim2->pause();
+
+ QVERIFY(compareStates(stateChangedSpy1, (StateList() << QAbstractAnimation::Running)));
+
+ QVERIFY(compareStates(stateChangedSpy2, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused)));
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1->state(), QAnimationGroup::Running);
+ QCOMPARE(anim2->state(), QAnimationGroup::Paused);
+
+ group.start();
+
+ QVERIFY(compareStates(stateChangedSpy1, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running)));
+ QVERIFY(compareStates(stateChangedSpy2, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused)));
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1->state(), QAnimationGroup::Running);
+ QCOMPARE(anim2->state(), QAnimationGroup::Paused);
+
+ QTest::qWait(300);
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2->state(), QAnimationGroup::Running);
+
+ QCOMPARE(stateChangedSpy2.count(), 4);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(2).first()),
+ QAnimationGroup::Stopped);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(3).first()),
+ QAnimationGroup::Running);
+
+ group.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2->state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::zeroDurationAnimation()
+{
+ QSequentialAnimationGroup group;
+
+ TestAnimation *anim1 = new TestAnimation();
+ anim1->setStartValue(0);
+ anim1->setEndValue(100);
+ anim1->setDuration(0);
+
+ TestAnimation *anim2 = new TestAnimation();
+ anim2->setStartValue(0);
+ anim2->setEndValue(100);
+ anim2->setDuration(100);
+
+ DummyPropertyAnimation *anim3 = new DummyPropertyAnimation;
+ anim3->setEndValue(100);
+ anim3->setDuration(0);
+
+ QSignalSpy stateChangedSpy(anim1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ group.addAnimation(anim1);
+ group.addAnimation(anim2);
+ group.addAnimation(anim3);
+ group.setLoopCount(2);
+ group.start();
+
+ QCOMPARE(stateChangedSpy.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(1).first()),
+ QAnimationGroup::Stopped);
+
+ QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2->state(), QAnimationGroup::Running);
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+
+ //now let's try to seek to the next loop
+ group.setCurrentTime(group.duration() + 1);
+ QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2->state(), QAnimationGroup::Running);
+ QCOMPARE(anim3->state(), QAnimationGroup::Stopped);
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim3->o.value(), 100); //anim3 should have been run
+}
+
+void tst_QSequentialAnimationGroup::stopUncontrolledAnimations()
+{
+ QSequentialAnimationGroup group;
+
+ AnimationObject o1;
+ UncontrolledAnimation notTimeDriven(&o1);
+ QCOMPARE(notTimeDriven.totalDuration(), -1);
+
+ TestAnimation loopsForever;
+ loopsForever.setStartValue(0);
+ loopsForever.setEndValue(100);
+ loopsForever.setDuration(100);
+ loopsForever.setLoopCount(-1);
+
+ group.addAnimation(&notTimeDriven);
+ group.addAnimation(&loopsForever);
+
+ group.start();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running);
+ QCOMPARE(loopsForever.state(), QAnimationGroup::Stopped);
+
+ notTimeDriven.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever.state(), QAnimationGroup::Running);
+
+ loopsForever.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::finishWithUncontrolledAnimation()
+{
+ AnimationObject o1;
+
+ //1st case:
+ //first we test a group with one uncontrolled animation
+ QSequentialAnimationGroup group;
+ UncontrolledAnimation notTimeDriven(&o1, &group);
+ QSignalSpy spy(&group, SIGNAL(finished()));
+
+ group.start();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QCOMPARE(notTimeDriven.currentLoopTime(), 0);
+
+ QTest::qWait(300); //wait for the end of notTimeDriven
+ QTRY_COMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ const int actualDuration = notTimeDriven.currentLoopTime();
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(group.currentLoopTime(), actualDuration);
+ QCOMPARE(spy.count(), 1);
+
+ //2nd case:
+ // lets make sure the seeking will work again
+ spy.clear();
+ DummyPropertyAnimation anim(&group);
+ QSignalSpy animStateChangedSpy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ group.setCurrentTime(300);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven.currentLoopTime(), actualDuration);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
+
+ //3rd case:
+ //now let's add a perfectly defined animation at the end
+ QCOMPARE(animStateChangedSpy.count(), 0);
+ group.start();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QCOMPARE(notTimeDriven.currentLoopTime(), 0);
+
+ QCOMPARE(animStateChangedSpy.count(), 0);
+
+ QTest::qWait(300); //wait for the end of notTimeDriven
+ QTRY_COMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim.state(), QAnimationGroup::Running);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
+ QCOMPARE(animStateChangedSpy.count(), 1);
+ QTest::qWait(300); //wait for the end of anim
+
+ QTRY_COMPARE(anim.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim.currentLoopTime(), anim.duration());
+
+ //we should simply be at the end
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(animStateChangedSpy.count(), 2);
+ QCOMPARE(group.currentLoopTime(), notTimeDriven.currentLoopTime() + anim.currentLoopTime());
+}
+
+void tst_QSequentialAnimationGroup::addRemoveAnimation()
+{
+ //this test is specific to the sequential animation group
+ QSequentialAnimationGroup group;
+
+ QCOMPARE(group.duration(), 0);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QAbstractAnimation *anim1 = new QPropertyAnimation;
+ group.addAnimation(anim1);
+ QCOMPARE(group.duration(), 250);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), anim1);
+
+ //let's append an animation
+ QAbstractAnimation *anim2 = new QPropertyAnimation;
+ group.addAnimation(anim2);
+ QCOMPARE(group.duration(), 500);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), anim1);
+
+ //let's prepend an animation
+ QAbstractAnimation *anim0 = new QPropertyAnimation;
+ group.insertAnimation(0, anim0);
+ QCOMPARE(group.duration(), 750);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), anim0); //anim0 has become the new currentAnimation
+
+ group.setCurrentTime(300); //anim0 | anim1 | anim2
+ QCOMPARE(group.currentLoopTime(), 300);
+ QCOMPARE(group.currentAnimation(), anim1);
+ QCOMPARE(anim1->currentLoopTime(), 50);
+
+ group.removeAnimation(anim0); //anim1 | anim2
+ QCOMPARE(group.currentLoopTime(), 50);
+ QCOMPARE(group.currentAnimation(), anim1);
+ QCOMPARE(anim1->currentLoopTime(), 50);
+
+ group.setCurrentTime(0);
+ group.insertAnimation(0, anim0); //anim0 | anim1 | anim2
+ group.setCurrentTime(300);
+ QCOMPARE(group.currentLoopTime(), 300);
+ QCOMPARE(group.currentAnimation(), anim1);
+ QCOMPARE(anim1->currentLoopTime(), 50);
+
+ group.removeAnimation(anim1); //anim0 | anim2
+ QCOMPARE(group.currentLoopTime(), 250);
+ QCOMPARE(group.currentAnimation(), anim2);
+ QCOMPARE(anim0->currentLoopTime(), 250);
+}
+
+void tst_QSequentialAnimationGroup::currentAnimation()
+{
+ QSequentialAnimationGroup group;
+ QVERIFY(group.currentAnimation() == 0);
+
+ QPropertyAnimation anim;
+ anim.setDuration(0);
+ group.addAnimation(&anim);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
+}
+
+void tst_QSequentialAnimationGroup::currentAnimationWithZeroDuration()
+{
+ QSequentialAnimationGroup group;
+ QVERIFY(group.currentAnimation() == 0);
+
+ QPropertyAnimation zero1;
+ zero1.setDuration(0);
+ QPropertyAnimation zero2;
+ zero2.setDuration(0);
+
+ QPropertyAnimation anim;
+
+ QPropertyAnimation zero3;
+ zero3.setDuration(0);
+ QPropertyAnimation zero4;
+ zero4.setDuration(0);
+
+
+ group.addAnimation(&zero1);
+ group.addAnimation(&zero2);
+ group.addAnimation(&anim);
+ group.addAnimation(&zero3);
+ group.addAnimation(&zero4);
+
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&zero1));
+
+ group.setCurrentTime(0);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
+
+ group.setCurrentTime(group.duration());
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&zero4));
+
+ group.setDirection(QAbstractAnimation::Backward);
+
+ group.setCurrentTime(0);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&zero1));
+
+ group.setCurrentTime(group.duration());
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
+}
+
+void tst_QSequentialAnimationGroup::insertAnimation()
+{
+ QSequentialAnimationGroup group;
+ group.setLoopCount(2);
+ QPropertyAnimation *anim = new DummyPropertyAnimation(&group);
+ QCOMPARE(group.duration(), anim->duration());
+ group.setCurrentTime(300);
+ QCOMPARE(group.currentLoop(), 1);
+
+ //this will crash if the sequential group calls duration on the created animation
+ new QPropertyAnimation(&group);
+}
+
+
+class SequentialAnimationGroup : public QSequentialAnimationGroup
+{
+ Q_OBJECT
+public slots:
+ void clear()
+ {
+ QSequentialAnimationGroup::clear();
+ }
+
+ void refill()
+ {
+ stop();
+ clear();
+ new DummyPropertyAnimation(this);
+ start();
+ }
+
+};
+
+
+void tst_QSequentialAnimationGroup::clear()
+{
+ SequentialAnimationGroup group;
+ QPointer<QAbstractAnimation> anim1 = new DummyPropertyAnimation(&group);
+ group.connect(anim1, SIGNAL(finished()), SLOT(clear()));
+ new DummyPropertyAnimation(&group);
+ QCOMPARE(group.animationCount(), 2);
+
+ group.start();
+ QTest::qWait(anim1->duration() + 100);
+ QTRY_COMPARE(group.animationCount(), 0);
+ QCOMPARE(group.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(group.currentLoopTime(), 0);
+
+ anim1 = new DummyPropertyAnimation(&group);
+ group.connect(anim1, SIGNAL(finished()), SLOT(refill()));
+ group.start();
+ QTest::qWait(anim1->duration() + 100);
+ QTRY_COMPARE(group.state(), QAbstractAnimation::Running);
+ QVERIFY(anim1 == 0); //anim1 should have been deleted
+}
+
+void tst_QSequentialAnimationGroup::pauseResume()
+{
+ QObject dummy;
+ dummy.setProperty("foo", 0);
+ QParallelAnimationGroup group;
+ QPropertyAnimation *anim = new QPropertyAnimation(&dummy, "foo", &group);
+ anim->setDuration(250);
+ anim->setEndValue(250);
+ QSignalSpy spy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QCOMPARE(group.duration(), 250);
+ group.start();
+ QTest::qWait(100);
+ QTRY_COMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+ const int currentTime = group.currentLoopTime();
+ QCOMPARE(anim->currentLoopTime(), currentTime);
+
+ group.pause();
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(group.currentLoopTime(), currentTime);
+ QCOMPARE(anim->state(), QAnimationGroup::Paused);
+ QCOMPARE(anim->currentLoopTime(), currentTime);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+
+ group.resume();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(group.currentLoopTime(), currentTime);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(anim->currentLoopTime(), currentTime);
+ QCOMPARE(spy.count(), 1);
+}
+
+QTEST_MAIN(tst_QSequentialAnimationGroup)
+#include "tst_qsequentialanimationgroup.moc"
diff --git a/tests/auto/corelib/animation/qvariantanimation/qvariantanimation.pro b/tests/auto/corelib/animation/qvariantanimation/qvariantanimation.pro
new file mode 100644
index 0000000000..6c463051e8
--- /dev/null
+++ b/tests/auto/corelib/animation/qvariantanimation/qvariantanimation.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qvariantanimation.cpp \
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp b/tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp
new file mode 100644
index 0000000000..7dcfd1d4f5
--- /dev/null
+++ b/tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp
@@ -0,0 +1,164 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/qvariantanimation.h>
+#include <QtTest>
+
+class tst_QVariantAnimation : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QVariantAnimation() {}
+ virtual ~tst_QVariantAnimation() {}
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void construction();
+ void destruction();
+ void currentValue();
+ void easingCurve();
+ void startValue();
+ void endValue();
+ void keyValueAt();
+ void keyValues();
+ void duration();
+};
+
+class TestableQVariantAnimation : public QVariantAnimation
+{
+ Q_OBJECT
+public:
+ void updateCurrentValue(const QVariant&) {}
+};
+
+void tst_QVariantAnimation::init()
+{
+}
+
+void tst_QVariantAnimation::cleanup()
+{
+}
+
+void tst_QVariantAnimation::construction()
+{
+ TestableQVariantAnimation anim;
+}
+
+void tst_QVariantAnimation::destruction()
+{
+ TestableQVariantAnimation *anim = new TestableQVariantAnimation;
+ delete anim;
+}
+
+void tst_QVariantAnimation::currentValue()
+{
+ TestableQVariantAnimation anim;
+ QVERIFY(!anim.currentValue().isValid());
+}
+
+void tst_QVariantAnimation::easingCurve()
+{
+ TestableQVariantAnimation anim;
+ QVERIFY(anim.easingCurve() == QEasingCurve::Linear);
+ anim.setEasingCurve(QEasingCurve::InQuad);
+ QVERIFY(anim.easingCurve() == QEasingCurve::InQuad);
+}
+
+void tst_QVariantAnimation::endValue()
+{
+ TestableQVariantAnimation anim;
+ anim.setEndValue(QVariant(1));
+ QCOMPARE(anim.endValue().toInt(), 1);
+}
+
+void tst_QVariantAnimation::startValue()
+{
+ TestableQVariantAnimation anim;
+ anim.setStartValue(QVariant(1));
+ QCOMPARE(anim.startValue().toInt(), 1);
+ anim.setStartValue(QVariant(-1));
+ QCOMPARE(anim.startValue().toInt(), -1);
+}
+
+void tst_QVariantAnimation::keyValueAt()
+{
+ TestableQVariantAnimation anim;
+
+ int i=0;
+ for (qreal r=0.0; r<1.0; r+=0.1) {
+ anim.setKeyValueAt(0.1, ++i);
+ QCOMPARE(anim.keyValueAt(0.1).toInt(), i);
+ }
+}
+
+void tst_QVariantAnimation::keyValues()
+{
+ TestableQVariantAnimation anim;
+
+ QVariantAnimation::KeyValues values;
+ int i=0;
+ for (qreal r=0.0; r<1.0; r+=0.1) {
+ values.append(QVariantAnimation::KeyValue(r, i));
+ }
+
+ anim.setKeyValues(values);
+ QCOMPARE(anim.keyValues(), values);
+}
+
+void tst_QVariantAnimation::duration()
+{
+ TestableQVariantAnimation anim;
+ QCOMPARE(anim.duration(), 250);
+ anim.setDuration(500);
+ QCOMPARE(anim.duration(), 500);
+ QTest::ignoreMessage(QtWarningMsg, "QVariantAnimation::setDuration: cannot set a negative duration");
+ anim.setDuration(-1);
+ QCOMPARE(anim.duration(), 500);
+}
+
+QTEST_MAIN(tst_QVariantAnimation)
+
+#include "tst_qvariantanimation.moc"
diff --git a/tests/auto/corelib/codecs/codecs.pro b/tests/auto/corelib/codecs/codecs.pro
new file mode 100644
index 0000000000..41c5d8e46d
--- /dev/null
+++ b/tests/auto/corelib/codecs/codecs.pro
@@ -0,0 +1,3 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qtextcodec
diff --git a/tests/auto/qtextcodec/.gitattributes b/tests/auto/corelib/codecs/qtextcodec/.gitattributes
index a27a4d9153..a27a4d9153 100644
--- a/tests/auto/qtextcodec/.gitattributes
+++ b/tests/auto/corelib/codecs/qtextcodec/.gitattributes
diff --git a/tests/auto/qtextcodec/.gitignore b/tests/auto/corelib/codecs/qtextcodec/.gitignore
index bdbd16ad43..bdbd16ad43 100644
--- a/tests/auto/qtextcodec/.gitignore
+++ b/tests/auto/corelib/codecs/qtextcodec/.gitignore
diff --git a/tests/auto/qtextcodec/QT4-crashtest.txt b/tests/auto/corelib/codecs/qtextcodec/QT4-crashtest.txt
index d64a06e206..d64a06e206 100644
--- a/tests/auto/qtextcodec/QT4-crashtest.txt
+++ b/tests/auto/corelib/codecs/qtextcodec/QT4-crashtest.txt
Binary files differ
diff --git a/tests/auto/qtextcodec/echo/echo.pro b/tests/auto/corelib/codecs/qtextcodec/echo/echo.pro
index bf791ffc61..bf791ffc61 100644
--- a/tests/auto/qtextcodec/echo/echo.pro
+++ b/tests/auto/corelib/codecs/qtextcodec/echo/echo.pro
diff --git a/tests/auto/qtextcodec/echo/main.cpp b/tests/auto/corelib/codecs/qtextcodec/echo/main.cpp
index 774cab1a9b..774cab1a9b 100644
--- a/tests/auto/qtextcodec/echo/main.cpp
+++ b/tests/auto/corelib/codecs/qtextcodec/echo/main.cpp
diff --git a/tests/auto/qtextcodec/korean.txt b/tests/auto/corelib/codecs/qtextcodec/korean.txt
index 07e1b07f76..07e1b07f76 100644
--- a/tests/auto/qtextcodec/korean.txt
+++ b/tests/auto/corelib/codecs/qtextcodec/korean.txt
diff --git a/tests/auto/qtextcodec/qtextcodec.pro b/tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro
index 6cb13a9e06..6cb13a9e06 100644
--- a/tests/auto/qtextcodec/qtextcodec.pro
+++ b/tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro
diff --git a/tests/auto/qtextcodec/test/test.pro b/tests/auto/corelib/codecs/qtextcodec/test/test.pro
index 2188d2f22f..2188d2f22f 100644
--- a/tests/auto/qtextcodec/test/test.pro
+++ b/tests/auto/corelib/codecs/qtextcodec/test/test.pro
diff --git a/tests/auto/qtextcodec/tst_qtextcodec.cpp b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
index 4813f90652..4813f90652 100644
--- a/tests/auto/qtextcodec/tst_qtextcodec.cpp
+++ b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
diff --git a/tests/auto/qtextcodec/utf8.txt b/tests/auto/corelib/codecs/qtextcodec/utf8.txt
index f5ab44c8f4..f5ab44c8f4 100644
--- a/tests/auto/qtextcodec/utf8.txt
+++ b/tests/auto/corelib/codecs/qtextcodec/utf8.txt
diff --git a/tests/auto/corelib/concurrent/concurrent.pro b/tests/auto/corelib/concurrent/concurrent.pro
new file mode 100644
index 0000000000..6d7850b18f
--- /dev/null
+++ b/tests/auto/corelib/concurrent/concurrent.pro
@@ -0,0 +1,19 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qfuture \
+ qfuturesynchronizer \
+ qfuturewatcher \
+ qtconcurrentfilter \
+ qtconcurrentiteratekernel \
+ qtconcurrentmap \
+ qtconcurrentresultstore \
+ qtconcurrentrun \
+ qtconcurrentthreadengine \
+ qthreadpool
+
+symbian:SUBDIRS -= \
+ qtconcurrentfilter \
+ qtconcurrentiteratekernel \
+ qtconcurrentmap \
+ qtconcurrentrun \
+ qtconcurrentthreadengine \
diff --git a/tests/auto/qfuture/.gitignore b/tests/auto/corelib/concurrent/qfuture/.gitignore
index 77c055c874..77c055c874 100644
--- a/tests/auto/qfuture/.gitignore
+++ b/tests/auto/corelib/concurrent/qfuture/.gitignore
diff --git a/tests/auto/qfuture/qfuture.pro b/tests/auto/corelib/concurrent/qfuture/qfuture.pro
index 0e74f47678..0e74f47678 100644
--- a/tests/auto/qfuture/qfuture.pro
+++ b/tests/auto/corelib/concurrent/qfuture/qfuture.pro
diff --git a/tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp b/tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp
new file mode 100644
index 0000000000..d81df0d863
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp
@@ -0,0 +1,1474 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDebug>
+
+#define QFUTURE_TEST
+
+#include <QtTest/QtTest>
+#include <qfuture.h>
+#include "versioncheck.h"
+#include <qfuturewatcher.h>
+#include <qtconcurrentresultstore.h>
+#include <qtconcurrentexception.h>
+
+#ifndef QT_NO_CONCURRENT_TEST
+#include <private/qfutureinterface_p.h>
+
+using namespace QtConcurrent;
+
+// COM interface macro.
+#if defined(Q_OS_WIN) && defined(interface)
+# undef interface
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QFuture: public QObject
+{
+ Q_OBJECT
+private slots:
+ void resultStore();
+ void future();
+ void futureInterface();
+ void refcounting();
+ void cancel();
+ void statePropagation();
+ void multipleResults();
+ void indexedResults();
+ void progress();
+ void progressText();
+ void resultsAfterFinished();
+ void resultsAsList();
+ void implicitConversions();
+ void iterators();
+ void pause();
+ void throttling();
+ void voidConversions();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+ void exceptions_QTBUG18149();
+#endif
+};
+
+QTEST_MAIN(tst_QFuture)
+
+void tst_QFuture::resultStore()
+{
+ int int0 = 0;
+ int int1 = 1;
+ int int2 = 2;
+
+ {
+ ResultStore<int> store;
+ ResultIteratorBase it = store.begin();
+ QVERIFY(store.begin() == store.end());
+ QVERIFY(store.resultAt(0) == store.end());
+ QVERIFY(store.resultAt(1) == store.end());
+ }
+
+
+ {
+ ResultStoreBase store;
+ store.addResult(-1, &int0); // note to self: adding a pointer to the stack here is ok since
+ store.addResult(1, &int1); // ResultStoreBase does not take ownership, only ResultStore<> does.
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QVERIFY(it != store.begin());
+ QVERIFY(it == store.end());
+ }
+
+ QVector<int> vec0 = QVector<int>() << 2 << 3;
+ QVector<int> vec1 = QVector<int>() << 4 << 5;
+
+ {
+ ResultStoreBase store;
+ store.addResults(-1, &vec0, 2, 2);
+ store.addResults(-1, &vec1, 2, 2);
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+
+ ++it;
+ QVERIFY(it == store.end());
+ }
+ {
+ ResultStoreBase store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec1, 2, 2);
+ store.addResult(-1, &int1);
+
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+ QVERIFY(it != store.end());
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+ QVERIFY(it != store.end());
+ ++it;
+ QVERIFY(it == store.end());
+
+ QCOMPARE(store.resultAt(0).resultIndex(), 0);
+ QCOMPARE(store.resultAt(1).resultIndex(), 1);
+ QCOMPARE(store.resultAt(2).resultIndex(), 2);
+ QCOMPARE(store.resultAt(3).resultIndex(), 3);
+ QCOMPARE(store.resultAt(4), store.end());
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(-1, &int1);
+
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+ QVERIFY(it != store.end());
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+ QVERIFY(it != store.end());
+ ++it;
+ QVERIFY(it == store.end());
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(3).value(), int1);
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(200, &int1);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(200).value(), int1);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int1);
+ store.addResult(0, &int0);
+ store.addResult(-1, &int2);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), int1);
+ QCOMPARE(store.resultAt(2).value(), int2);
+ }
+
+ {
+ ResultStore<int> store;
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(INT_MAX), false);
+ }
+
+ {
+ // Test filter mode, where "gaps" in the result array aren't allowed.
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int2); // add result at index 2
+ QCOMPARE(store.contains(2), false); // but 1 is missing, so this 2 won't be reported yet.
+
+ store.addResult(1, &int1);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true); // 2 should be visible now.
+
+ store.addResult(4, &int0);
+ store.addResult(5, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(3, &int0); // adding 3 makes 4 and 5 visible
+ QCOMPARE(store.contains(4), true);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(6, &int0); // adding 6 makes 7 visible
+
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ QCOMPARE(store.contains(8), false);
+ }
+
+ {
+ // test canceled results
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.contains(2), false);
+
+ store.addCanceledResult(1); // report no result at 1
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true); // 2 gets renamed to 1
+ QCOMPARE(store.contains(2), false);
+
+ store.addResult(3, &int0);
+ QCOMPARE(store.contains(2), true); //3 gets renamed to 2
+
+ store.addResult(6, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(3), false);
+
+ store.addCanceledResult(4);
+ store.addCanceledResult(5);
+
+ QCOMPARE(store.contains(3), true); //6 gets renamed to 3
+ QCOMPARE(store.contains(4), true); //7 gets renamed to 4
+
+ store.addResult(8, &int0);
+ QCOMPARE(store.contains(5), true); //8 gets renamed to 4
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+
+ {
+ // test addResult return value
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 1); // result 0 becomes available
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 1);
+ QCOMPARE(store.contains(2), false);
+
+ store.addCanceledResult(1);
+ QCOMPARE(store.count(), 2); // result 2 is renamed to 1 and becomes available
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+
+ store.addResult(3, &int0);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(2), true);
+
+ store.addResult(6, &int0);
+ QCOMPARE(store.count(), 3);
+ store.addResult(7, &int0);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(3), false);
+
+ store.addCanceledResult(4);
+ store.addCanceledResult(5);
+ QCOMPARE(store.count(), 5); // 6 and 7 is renamed to 3 and 4 and becomes available
+
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), true);
+
+ store.addResult(8, &int0);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.count(), 6);
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+
+ {
+ // test resultCount in non-filtered mode. It should always be possible
+ // to iterate through the results 0 to resultCount.
+ ResultStore<int> store;
+ store.addResult(0, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(2, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 4);
+ }
+ {
+ ResultStore<int> store;
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 5);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addCanceledResult(2);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2); // results at 3 and 4 become available at index 0, 1
+
+ store.addResult(5, &int0);
+ QCOMPARE(store.count(), 3);// result 5 becomes available at index 2
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), false);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addCanceledResult(0);
+ store.addCanceledResult(2);
+ store.addCanceledResults(4, 2);
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addCanceledResult(0);
+ QCOMPARE(store.contains(0), false);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), false);
+ }
+}
+
+void tst_QFuture::future()
+{
+ // default constructors
+ QFuture<int> intFuture;
+ intFuture.waitForFinished();
+ QFuture<QString> stringFuture;
+ stringFuture.waitForFinished();
+ QFuture<void> voidFuture;
+ voidFuture.waitForFinished();
+ QFuture<void> defaultVoidFuture;
+ defaultVoidFuture.waitForFinished();
+
+ // copy constructor
+ QFuture<int> intFuture2(intFuture);
+ QFuture<void> voidFuture2(defaultVoidFuture);
+
+ // assigmnent operator
+ intFuture2 = QFuture<int>();
+ voidFuture2 = QFuture<void>();
+
+ // state
+ QCOMPARE(intFuture2.isStarted(), true);
+ QCOMPARE(intFuture2.isFinished(), true);
+}
+
+class IntResult : public QFutureInterface<int>
+{
+public:
+ QFuture<int> run()
+ {
+ this->reportStarted();
+ QFuture<int> future = QFuture<int>(this);
+
+ int res = 10;
+ reportFinished(&res);
+ return future;
+ }
+};
+
+int value = 10;
+
+class VoidResult : public QFutureInterfaceBase
+{
+public:
+ QFuture<void> run()
+ {
+ this->reportStarted();
+ QFuture<void> future = QFuture<void>(this);
+ reportFinished();
+ return future;
+ }
+};
+
+void tst_QFuture::futureInterface()
+{
+ {
+ QFuture<void> future;
+ {
+ QFutureInterface<void> i;
+ i.reportStarted();
+ future = i.future();
+ i.reportFinished();
+ }
+ }
+ {
+ QFuture<int> future;
+ {
+ QFutureInterface<int> i;
+ i.reportStarted();
+ i.reportResult(10);
+ future = i.future();
+ i.reportFinished();
+ }
+ QCOMPARE(future.resultAt(0), 10);
+ }
+
+ {
+ QFuture<int> intFuture;
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), true);
+
+ IntResult result;
+
+ result.reportStarted();
+ intFuture = result.future();
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), false);
+
+ result.reportFinished(&value);
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), true);
+
+ int e = intFuture.result();
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), true);
+ QCOMPARE(intFuture.isCanceled(), false);
+
+ QCOMPARE(e, value);
+ intFuture.waitForFinished();
+
+ IntResult intAlgo;
+ intFuture = intAlgo.run();
+ QFuture<int> intFuture2(intFuture);
+ QCOMPARE(intFuture.result(), value);
+ QCOMPARE(intFuture2.result(), value);
+ intFuture.waitForFinished();
+
+ VoidResult a;
+ a.run().waitForFinished();
+ }
+}
+
+template <typename T>
+void testRefCounting()
+{
+ QFutureInterface<T> interface;
+ QCOMPARE(int(interface.d->refCount), 1);
+
+ {
+ interface.reportStarted();
+
+ QFuture<T> f = interface.future();
+ QCOMPARE(int(interface.d->refCount), 2);
+
+ QFuture<T> f2(f);
+ QCOMPARE(int(interface.d->refCount), 3);
+
+ QFuture<T> f3;
+ f3 = f2;
+ QCOMPARE(int(interface.d->refCount), 4);
+
+ interface.reportFinished(0);
+ QCOMPARE(int(interface.d->refCount), 4);
+ }
+
+ QCOMPARE(int(interface.d->refCount), 1);
+}
+
+void tst_QFuture::refcounting()
+{
+ testRefCounting<int>();
+}
+
+void tst_QFuture::cancel()
+{
+ {
+ QFuture<void> f;
+ QFutureInterface<void> result;
+
+ result.reportStarted();
+ f = result.future();
+ QVERIFY(f.isCanceled() == false);
+ result.reportCanceled();
+ QVERIFY(f.isCanceled());
+ result.reportFinished();
+ QVERIFY(f.isCanceled());
+ f.waitForFinished();
+ QVERIFY(f.isCanceled());
+ }
+
+ // Cancel from the QFuture side and test if the result
+ // interface detects it.
+ {
+ QFutureInterface<void> result;
+
+ QFuture<void> f;
+ QVERIFY(f.isStarted() == true);
+
+ result.reportStarted();
+ f = result.future();
+
+ QVERIFY(f.isStarted() == true);
+
+ QVERIFY(result.isCanceled() == false);
+ f.cancel();
+
+ QVERIFY(result.isCanceled());
+
+ result.reportFinished();
+ }
+
+ // Test that finished futures can be canceled.
+ {
+ QFutureInterface<void> result;
+
+ QFuture<void> f;
+ QVERIFY(f.isStarted() == true);
+
+ result.reportStarted();
+ f = result.future();
+
+ QVERIFY(f.isStarted() == true);
+
+ result.reportFinished();
+
+ f.cancel();
+
+ QVERIFY(result.isCanceled());
+ QVERIFY(f.isCanceled());
+ }
+
+ // Results reported after canceled is called should not be propagated.
+ {
+
+ QFutureInterface<int> futureInterface;
+ futureInterface.reportStarted();
+ QFuture<int> f = futureInterface.future();
+
+ int result = 0;
+ futureInterface.reportResult(&result);
+ result = 1;
+ futureInterface.reportResult(&result);
+ f.cancel();
+ result = 2;
+ futureInterface.reportResult(&result);
+ result = 3;
+ futureInterface.reportResult(&result);
+ futureInterface.reportFinished();
+ QCOMPARE(f.results(), QList<int>());
+ }
+}
+
+void tst_QFuture::statePropagation()
+{
+ QFuture<void> f1;
+ QFuture<void> f2;
+
+ QCOMPARE(f1.isStarted(), true);
+
+ QFutureInterface<void> result;
+ result.reportStarted();
+ f1 = result.future();
+
+ f2 = f1;
+
+ QCOMPARE(f2.isStarted(), true);
+
+ result.reportCanceled();
+
+ QCOMPARE(f2.isStarted(), true);
+ QCOMPARE(f2.isCanceled(), true);
+
+ QFuture<void> f3 = f2;
+
+ QCOMPARE(f3.isStarted(), true);
+ QCOMPARE(f3.isCanceled(), true);
+
+ result.reportFinished();
+
+ QCOMPARE(f2.isStarted(), true);
+ QCOMPARE(f2.isCanceled(), true);
+
+ QCOMPARE(f3.isStarted(), true);
+ QCOMPARE(f3.isCanceled(), true);
+}
+
+/*
+ Tests that a QFuture can return multiple results.
+*/
+void tst_QFuture::multipleResults()
+{
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+
+ QFuture<int> copy = f;
+ int result;
+
+ result = 1;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(0), 1);
+
+ result = 2;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(1), 2);
+
+ result = 3;
+ a.reportResult(&result);
+
+ result = 4;
+ a.reportFinished(&result);
+
+ QCOMPARE(f.results(), QList<int>() << 1 << 2 << 3 << 4);
+
+ // test foreach
+ QList<int> fasit = QList<int>() << 1 << 2 << 3 << 4;
+ {
+ QList<int> results;
+ foreach(int result, f)
+ results.append(result);
+ QCOMPARE(results, fasit);
+ }
+ {
+ QList<int> results;
+ foreach(int result, copy)
+ results.append(result);
+ QCOMPARE(results, fasit);
+ }
+}
+
+/*
+ Test out-of-order result reporting using indexes
+*/
+void tst_QFuture::indexedResults()
+{
+ {
+ QFutureInterface<QChar> Interface;
+ QFuture<QChar> f;
+ QVERIFY(f.isStarted() == true);
+
+ Interface.reportStarted();
+ f = Interface.future();
+
+ QVERIFY(f.isStarted() == true);
+
+ QChar result;
+
+ result = 'B';
+ Interface.reportResult(&result, 1);
+
+ QCOMPARE(f.resultAt(1), result);
+
+ result = 'A';
+ Interface.reportResult(&result, 0);
+ QCOMPARE(f.resultAt(0), result);
+
+ result = 'C';
+ Interface.reportResult(&result); // no index
+ QCOMPARE(f.resultAt(2), result);
+
+ Interface.reportFinished();
+
+ QCOMPARE(f.results(), QList<QChar>() << 'A' << 'B' << 'C');
+ }
+
+ {
+ // Test result reporting with a missing result in the middle
+ QFutureInterface<int> Interface;
+ Interface.reportStarted();
+ QFuture<int> f = Interface.future();
+ int result;
+
+ result = 0;
+ Interface.reportResult(&result, 0);
+ QVERIFY(f.isResultReadyAt(0));
+ QCOMPARE(f.resultAt(0), 0);
+
+ result = 3;
+ Interface.reportResult(&result, 3);
+ QVERIFY(f.isResultReadyAt(3));
+ QCOMPARE(f.resultAt(3), 3);
+
+ result = 2;
+ Interface.reportResult(&result, 2);
+ QVERIFY(f.isResultReadyAt(2));
+ QCOMPARE(f.resultAt(2), 2);
+
+ result = 4;
+ Interface.reportResult(&result); // no index
+ QVERIFY(f.isResultReadyAt(4));
+ QCOMPARE(f.resultAt(4), 4);
+
+ Interface.reportFinished();
+
+ QCOMPARE(f.results(), QList<int>() << 0 << 2 << 3 << 4);
+ }
+}
+
+void tst_QFuture::progress()
+{
+ QFutureInterface<QChar> result;
+ QFuture<QChar> f;
+
+ QCOMPARE (f.progressValue(), 0);
+
+ result.reportStarted();
+ f = result.future();
+
+ QCOMPARE (f.progressValue(), 0);
+
+ result.setProgressValue(50);
+
+ QCOMPARE (f.progressValue(), 50);
+
+ result.reportFinished();
+
+ QCOMPARE (f.progressValue(), 50);
+}
+
+void tst_QFuture::progressText()
+{
+ QFutureInterface<void> i;
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ QCOMPARE(f.progressText(), QLatin1String(""));
+ i.setProgressValueAndText(1, QLatin1String("foo"));
+ QCOMPARE(f.progressText(), QLatin1String("foo"));
+ i.reportFinished();
+}
+
+/*
+ Test that results reported after finished are ignored.
+*/
+void tst_QFuture::resultsAfterFinished()
+{
+ {
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+ int result;
+
+ QCOMPARE(f.resultCount(), 0);
+
+ result = 1;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(0), 1);
+
+ a.reportFinished();
+
+ QCOMPARE(f.resultAt(0), 1);
+ QCOMPARE(f.resultCount(), 1);
+ result = 2;
+ a.reportResult(&result);
+ QCOMPARE(f.resultCount(), 1);
+ }
+ // cancel it
+ {
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+ int result;
+
+ QCOMPARE(f.resultCount(), 0);
+
+ result = 1;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(0), 1);
+ QCOMPARE(f.resultCount(), 1);
+
+ a.reportCanceled();
+
+ QCOMPARE(f.resultAt(0), 1);
+ QCOMPARE(f.resultCount(), 1);
+
+ result = 2;
+ a.reportResult(&result);
+ a.reportFinished();
+ }
+}
+
+void tst_QFuture::resultsAsList()
+{
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+
+ int result;
+ result = 1;
+ a.reportResult(&result);
+ result = 2;
+ a.reportResult(&result);
+
+ a.reportFinished();
+
+ QList<int> results = f.results();
+ QCOMPARE(results, QList<int>() << 1 << 2);
+}
+
+/*
+ Test that QFuture<T> can be implicitly converted to T
+*/
+void tst_QFuture::implicitConversions()
+{
+ QFutureInterface<QString> iface;
+ iface.reportStarted();
+
+ QFuture<QString> f(&iface);
+
+ const QString input("FooBar 2000");
+ iface.reportFinished(&input);
+
+ const QString result = f;
+ QCOMPARE(result, input);
+ QCOMPARE(QString(f), input);
+ QCOMPARE(static_cast<QString>(f), input);
+}
+
+void tst_QFuture::iterators()
+{
+ {
+ QFutureInterface<int> e;
+ e.reportStarted();
+ QFuture<int> f = e.future();
+
+ int result;
+ result = 1;
+ e.reportResult(&result);
+ result = 2;
+ e.reportResult(&result);
+ result = 3;
+ e.reportResult(&result);
+ e.reportFinished();
+
+ QList<int> results;
+ QFutureIterator<int> i(f);
+ while (i.hasNext()) {
+ results.append(i.next());
+ }
+
+ QCOMPARE(results, f.results());
+
+ QFuture<int>::const_iterator i1 = f.begin(), i2 = i1 + 1;
+ QFuture<int>::const_iterator c1 = i1, c2 = c1 + 1;
+
+ QVERIFY(i1 == i1);
+ QVERIFY(i1 == c1);
+ QVERIFY(c1 == i1);
+ QVERIFY(c1 == c1);
+ QVERIFY(i2 == i2);
+ QVERIFY(i2 == c2);
+ QVERIFY(c2 == i2);
+ QVERIFY(c2 == c2);
+
+ QVERIFY(i1 != i2);
+ QVERIFY(i1 != c2);
+ QVERIFY(c1 != i2);
+ QVERIFY(c1 != c2);
+ QVERIFY(i2 != i1);
+ QVERIFY(i2 != c1);
+ QVERIFY(c2 != i1);
+ QVERIFY(c2 != c1);
+
+ int x1 = *i1;
+ Q_UNUSED(x1);
+ int x2 = *i2;
+ Q_UNUSED(x2);
+ int y1 = *c1;
+ Q_UNUSED(y1);
+ int y2 = *c2;
+ Q_UNUSED(y2);
+ }
+
+ {
+ QFutureInterface<QString> e;
+ e.reportStarted();
+ QFuture<QString> f = e.future();
+
+ e.reportResult(QString("one"));
+ e.reportResult(QString("two"));
+ e.reportResult(QString("three"));
+ e.reportFinished();
+
+ QList<QString> results;
+ QFutureIterator<QString> i(f);
+ while (i.hasNext()) {
+ results.append(i.next());
+ }
+
+ QCOMPARE(results, f.results());
+
+ QFuture<QString>::const_iterator i1 = f.begin(), i2 = i1 + 1;
+ QFuture<QString>::const_iterator c1 = i1, c2 = c1 + 1;
+
+ QVERIFY(i1 == i1);
+ QVERIFY(i1 == c1);
+ QVERIFY(c1 == i1);
+ QVERIFY(c1 == c1);
+ QVERIFY(i2 == i2);
+ QVERIFY(i2 == c2);
+ QVERIFY(c2 == i2);
+ QVERIFY(c2 == c2);
+
+ QVERIFY(i1 != i2);
+ QVERIFY(i1 != c2);
+ QVERIFY(c1 != i2);
+ QVERIFY(c1 != c2);
+ QVERIFY(i2 != i1);
+ QVERIFY(i2 != c1);
+ QVERIFY(c2 != i1);
+ QVERIFY(c2 != c1);
+
+ QString x1 = *i1;
+ QString x2 = *i2;
+ QString y1 = *c1;
+ QString y2 = *c2;
+
+ QCOMPARE(x1, y1);
+ QCOMPARE(x2, y2);
+
+ int i1Size = i1->size();
+ int i2Size = i2->size();
+ int c1Size = c1->size();
+ int c2Size = c2->size();
+
+ QCOMPARE(i1Size, c1Size);
+ QCOMPARE(i2Size, c2Size);
+ }
+
+ {
+ const int resultCount = 20;
+
+ QFutureInterface<int> e;
+ e.reportStarted();
+ QFuture<int> f = e.future();
+
+ for (int i = 0; i < resultCount; ++i) {
+ e.reportResult(i);
+ }
+
+ e.reportFinished();
+
+ {
+ QFutureIterator<int> it(f);
+ QFutureIterator<int> it2(it);
+ }
+
+ {
+ QFutureIterator<int> it(f);
+
+ for (int i = 0; i < resultCount - 1; ++i) {
+ QVERIFY(it.hasNext());
+ QCOMPARE(it.peekNext(), i);
+ QCOMPARE(it.next(), i);
+ }
+
+ QVERIFY(it.hasNext());
+ QCOMPARE(it.peekNext(), resultCount - 1);
+ QCOMPARE(it.next(), resultCount - 1);
+ QVERIFY(it.hasNext() == false);
+ }
+
+ {
+ QFutureIterator<int> it(f);
+ QVERIFY(it.hasNext());
+ it.toBack();
+ QVERIFY(it.hasNext() == false);
+ it.toFront();
+ QVERIFY(it.hasNext());
+ }
+ }
+}
+
+class SignalSlotObject : public QObject
+{
+Q_OBJECT
+public:
+ SignalSlotObject()
+ : finishedCalled(false),
+ canceledCalled(false),
+ rangeBegin(0),
+ rangeEnd(0) { }
+
+public slots:
+ void finished()
+ {
+// qDebug() << "finished called";
+ finishedCalled = true;
+ }
+
+ void canceled()
+ {
+// qDebug() << "canceled called";
+ canceledCalled = true;
+ }
+
+ void resultReady(int index)
+ {
+// qDebug() << "result" << index << "ready";
+ results.insert(index);
+ }
+
+ void progressRange(int begin, int end)
+ {
+// qDebug() << "progress range" << begin << end;
+ rangeBegin = begin;
+ rangeEnd = end;
+ }
+
+ void progress(int progress)
+ {
+// qDebug() << "progress" << progress;
+ reportedProgress.insert(progress);
+ }
+public:
+ bool finishedCalled;
+ bool canceledCalled;
+ QSet<int> results;
+ int rangeBegin;
+ int rangeEnd;
+ QSet<int> reportedProgress;
+};
+
+void tst_QFuture::pause()
+{
+ QFutureInterface<void> Interface;
+
+ Interface.reportStarted();
+ QFuture<void> f = Interface.future();
+
+ QVERIFY(Interface.isPaused() == false);
+ f.pause();
+ QVERIFY(Interface.isPaused() == true);
+ f.resume();
+ QVERIFY(Interface.isPaused() == false);
+ f.togglePaused();
+ QVERIFY(Interface.isPaused() == true);
+ f.togglePaused();
+ QVERIFY(Interface.isPaused() == false);
+
+ Interface.reportFinished();
+}
+
+const int resultCount = 1000;
+
+class ResultObject : public QObject
+{
+Q_OBJECT
+public slots:
+ void resultReady(int)
+ {
+
+ }
+public:
+};
+
+// Test that that the isPaused() on future result interface returns true
+// if we report a lot of results that are not handled.
+void tst_QFuture::throttling()
+{
+ {
+ QFutureInterface<void> i;
+
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ QVERIFY(i.isThrottled() == false);
+
+ i.setThrottled(true);
+ QVERIFY(i.isThrottled());
+
+ i.setThrottled(false);
+ QVERIFY(i.isThrottled() == false);
+
+ i.setThrottled(true);
+ QVERIFY(i.isThrottled());
+
+ i.reportFinished();
+ }
+/*
+ QFutureInterface<int> *Interface = new QFutureInterface<int>();
+ Interface.reportStarted();
+ QFuture<int> f = QFuture<int>(Interface);
+
+ ResultObject object;
+ f.connectTo(ThrottledResultReadyAtSignal, &object, SLOT(resultReady(int)), Qt::DirectConnection);
+
+ for (int i = 0; i < 100; ++i)
+ Interface.reportResult(&i);
+
+ QVERIFY(Interface.isPaused() == true);
+
+ // read the results, this should resume the task.
+ for (int i = 0; i < 100; ++i)
+ f.throttledResult(i);
+
+ QVERIFY(Interface.isPaused() == false);
+ Interface.reportFinished();
+*/
+}
+
+void tst_QFuture::voidConversions()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> intFuture(&iface);
+
+ int value = 10;
+ iface.reportFinished(&value);
+
+ QFuture<void> voidFuture(intFuture);
+ voidFuture = intFuture;
+
+ QVERIFY(voidFuture == intFuture);
+}
+
+
+#ifndef QT_NO_EXCEPTIONS
+
+QFuture<void> createExceptionFuture()
+{
+ QFutureInterface<void> i;
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ Exception e;
+ i.reportException(e);
+ i.reportFinished();
+ return f;
+}
+
+QFuture<int> createExceptionResultFuture()
+{
+ QFutureInterface<int> i;
+ i.reportStarted();
+ QFuture<int> f = i.future();
+ int r = 0;
+ i.reportResult(r);
+
+ Exception e;
+ i.reportException(e);
+ i.reportFinished();
+ return f;
+}
+
+class DerivedException : public Exception
+{
+public:
+ void raise() const { throw *this; }
+ Exception *clone() const { return new DerivedException(*this); }
+};
+
+QFuture<void> createDerivedExceptionFuture()
+{
+ QFutureInterface<void> i;
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ DerivedException e;
+ i.reportException(e);
+ i.reportFinished();
+ return f;
+}
+
+void tst_QFuture::exceptions()
+{
+
+// test throwing from waitForFinished
+{
+ QFuture<void> f = createExceptionFuture();
+ bool caught = false;
+ try {
+ f.waitForFinished();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+// test result()
+{
+ QFuture<int> f = createExceptionResultFuture();
+ bool caught = false;
+ try {
+ f.result();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+// test result() and destroy
+{
+ bool caught = false;
+ try {
+ createExceptionResultFuture().result();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+// test results()
+{
+ QFuture<int> f = createExceptionResultFuture();
+ bool caught = false;
+ try {
+ f.results();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+// test foreach
+{
+ QFuture<int> f = createExceptionResultFuture();
+ bool caught = false;
+ try {
+ foreach (int e, f.results()) {
+ Q_UNUSED(e);
+ QFAIL("did not get exception");
+ }
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+// catch derived exceptions
+{
+ bool caught = false;
+ try {
+ createDerivedExceptionFuture().waitForFinished();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+{
+ bool caught = false;
+ try {
+ createDerivedExceptionFuture().waitForFinished();
+ } catch (DerivedException &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+}
+
+
+void tst_QFuture::exceptions_QTBUG18149()
+{
+ class MyClass
+ {
+ public:
+ ~MyClass()
+ {
+ QFuture<void> f = createExceptionFuture();
+ bool caught = false;
+ try {
+ f.waitForFinished();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+ }
+ };
+
+ try {
+ MyClass m;
+ Q_UNUSED(m);
+ throw 0;
+ } catch (int) {}
+
+}
+
+
+#endif // QT_NO_EXCEPTIONS
+
+#include "tst_qfuture.moc"
+
+#else
+QTEST_NOOP_MAIN
+#endif
diff --git a/tests/auto/qfuture/versioncheck.h b/tests/auto/corelib/concurrent/qfuture/versioncheck.h
index 9e4d0c6eeb..9e4d0c6eeb 100644
--- a/tests/auto/qfuture/versioncheck.h
+++ b/tests/auto/corelib/concurrent/qfuture/versioncheck.h
diff --git a/tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro b/tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro
new file mode 100644
index 0000000000..11012cce24
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qfuturesynchronizer.cpp \
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp b/tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp
new file mode 100644
index 0000000000..5aced3f8c1
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp
@@ -0,0 +1,158 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest>
+
+#include <QtCore/qfuturesynchronizer.h>
+#include <QtCore/qfuture.h>
+
+class tst_QFutureSynchronizer : public QObject
+{
+ Q_OBJECT
+
+
+private Q_SLOTS:
+ void construction();
+ void addFuture();
+ void cancelOnWait();
+ void clearFutures();
+ void futures();
+ void setFuture();
+ void waitForFinished();
+};
+
+
+void tst_QFutureSynchronizer::construction()
+{
+
+ QFuture<void> future;
+ QFutureSynchronizer<void> synchronizer;
+ QFutureSynchronizer<void> synchronizerWithFuture(future);
+
+ QCOMPARE(synchronizer.futures().size(), 0);
+ QCOMPARE(synchronizerWithFuture.futures().size(), 1);
+}
+
+void tst_QFutureSynchronizer::addFuture()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ synchronizer.addFuture(QFuture<void>());
+ QFuture<void> future;
+ synchronizer.addFuture(future);
+ synchronizer.addFuture(future);
+
+ QCOMPARE(synchronizer.futures().size(), 3);
+}
+
+void tst_QFutureSynchronizer::cancelOnWait()
+{
+ QFutureSynchronizer<void> synchronizer;
+ QVERIFY(!synchronizer.cancelOnWait());
+ synchronizer.setCancelOnWait(true);
+ QVERIFY(synchronizer.cancelOnWait());
+ synchronizer.setCancelOnWait(false);
+ QVERIFY(!synchronizer.cancelOnWait());
+ synchronizer.setCancelOnWait(true);
+ QVERIFY(synchronizer.cancelOnWait());
+}
+
+void tst_QFutureSynchronizer::clearFutures()
+{
+ QFutureSynchronizer<void> synchronizer;
+ synchronizer.clearFutures();
+ QVERIFY(synchronizer.futures().isEmpty());
+
+ synchronizer.addFuture(QFuture<void>());
+ QFuture<void> future;
+ synchronizer.addFuture(future);
+ synchronizer.addFuture(future);
+ synchronizer.clearFutures();
+ QVERIFY(synchronizer.futures().isEmpty());
+}
+
+void tst_QFutureSynchronizer::futures()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ QList<QFuture<void> > futures;
+ for (int i=0; i<100; i++) {
+ QFuture<void> future;
+ futures.append(future);
+ synchronizer.addFuture(future);
+ }
+
+ QCOMPARE(futures, synchronizer.futures());
+}
+
+void tst_QFutureSynchronizer::setFuture()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ for (int i=0; i<100; i++) {
+ synchronizer.addFuture(QFuture<void>());
+ }
+ QCOMPARE(synchronizer.futures().size(), 100);
+
+ QFuture<void> future;
+ synchronizer.setFuture(future);
+ QCOMPARE(synchronizer.futures().size(), 1);
+ QCOMPARE(synchronizer.futures().first(), future);
+}
+
+void tst_QFutureSynchronizer::waitForFinished()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ for (int i=0; i<100; i++) {
+ synchronizer.addFuture(QFuture<void>());
+ }
+ synchronizer.waitForFinished();
+ const QList<QFuture<void> > futures = synchronizer.futures();
+
+ for (int i=0; i<100; i++) {
+ QVERIFY(futures.at(i).isFinished());
+ }
+}
+
+QTEST_MAIN(tst_QFutureSynchronizer)
+
+#include "tst_qfuturesynchronizer.moc"
diff --git a/tests/auto/qfuturewatcher/.gitignore b/tests/auto/corelib/concurrent/qfuturewatcher/.gitignore
index 1d778431c5..1d778431c5 100644
--- a/tests/auto/qfuturewatcher/.gitignore
+++ b/tests/auto/corelib/concurrent/qfuturewatcher/.gitignore
diff --git a/tests/auto/qfuturewatcher/qfuturewatcher.pro b/tests/auto/corelib/concurrent/qfuturewatcher/qfuturewatcher.pro
index 9de37d014f..9de37d014f 100644
--- a/tests/auto/qfuturewatcher/qfuturewatcher.pro
+++ b/tests/auto/corelib/concurrent/qfuturewatcher/qfuturewatcher.pro
diff --git a/tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp b/tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp
new file mode 100644
index 0000000000..d8fa2230f3
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp
@@ -0,0 +1,930 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDebug>
+#include <QtTest/QtTest>
+
+#include <qfuture.h>
+#include "../qfuture/versioncheck.h"
+#include <qfuturewatcher.h>
+#include <qtconcurrentrun.h>
+#include <qtconcurrentmap.h>
+#include "../../../../shared/util.h"
+
+#ifndef QT_NO_CONCURRENT_TEST
+#include <private/qfutureinterface_p.h>
+
+using namespace QtConcurrent;
+
+#include <QtTest/QtTest>
+
+//#define PRINT
+
+class tst_QFutureWatcher: public QObject
+{
+ Q_OBJECT
+private slots:
+ void startFinish();
+ void progressValueChanged();
+ void canceled();
+ void resultAt();
+ void resultReadyAt();
+ void futureSignals();
+ void watchFinishedFuture();
+ void watchCanceledFuture();
+ void disconnectRunningFuture();
+ void toMuchProgress();
+ void progressText();
+ void sharedFutureInterface();
+ void changeFuture();
+ void cancelEvents();
+ void pauseEvents();
+ void finishedState();
+ void throttling();
+ void incrementalMapResults();
+ void incrementalFilterResults();
+ void qfutureSynchornizer();
+ void warnRace();
+};
+
+QTEST_MAIN(tst_QFutureWatcher)
+
+void sleeper()
+{
+ QTest::qSleep(100);
+}
+
+void tst_QFutureWatcher::startFinish()
+{
+ QFutureWatcher<void> futureWatcher;
+
+ QSignalSpy started(&futureWatcher, SIGNAL(started()));
+ QSignalSpy finished(&futureWatcher, SIGNAL(finished()));
+
+ futureWatcher.setFuture(QtConcurrent::run(sleeper));
+ QTest::qWait(10); // spin the event loop to deliver queued signals.
+ QCOMPARE(started.count(), 1);
+ QCOMPARE(finished.count(), 0);
+ futureWatcher.future().waitForFinished();
+ QTest::qWait(10);
+ QCOMPARE(started.count(), 1);
+ QCOMPARE(finished.count(), 1);
+}
+
+void mapSleeper(int &)
+{
+ QTest::qSleep(100);
+}
+
+QSet<int> progressValues;
+QSet<QString> progressTexts;
+QMutex mutex;
+class ProgressObject : public QObject
+{
+Q_OBJECT
+public slots:
+ void printProgress(int);
+ void printText(const QString &text);
+ void registerProgress(int);
+ void registerText(const QString &text);
+};
+
+void ProgressObject::printProgress(int progress)
+{
+ qDebug() << "thread" << QThread::currentThread() << "reports progress" << progress;
+}
+
+void ProgressObject::printText(const QString &text)
+{
+ qDebug() << "thread" << QThread::currentThread() << "reports progress text" << text;
+}
+
+void ProgressObject::registerProgress(int progress)
+{
+ QTest::qSleep(1);
+ progressValues.insert(progress);
+}
+
+void ProgressObject::registerText(const QString &text)
+{
+ QTest::qSleep(1);
+ progressTexts.insert(text);
+}
+
+
+QList<int> createList(int listSize)
+{
+ QList<int> list;
+ for (int i = 0; i < listSize; ++i) {
+ list.append(i);
+ }
+ return list;
+}
+
+void tst_QFutureWatcher::progressValueChanged()
+{
+#ifdef PRINT
+ qDebug() << "main thread" << QThread::currentThread();
+#endif
+
+ progressValues.clear();
+ const int listSize = 20;
+ QList<int> list = createList(listSize);
+
+ QFutureWatcher<void> futureWatcher;
+ ProgressObject progressObject;
+ QObject::connect(&futureWatcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+#ifdef PRINT
+ QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &progressObject, SLOT(printProgress(int)), Qt::DirectConnection );
+#endif
+ QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &progressObject, SLOT(registerProgress(int)));
+
+ futureWatcher.setFuture(QtConcurrent::map(list, mapSleeper));
+
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ futureWatcher.disconnect();
+ QVERIFY(progressValues.contains(0));
+ QVERIFY(progressValues.contains(listSize));
+}
+
+class CancelObject : public QObject
+{
+Q_OBJECT
+public:
+ bool wasCanceled;
+ CancelObject() : wasCanceled(false) {};
+public slots:
+ void cancel();
+};
+
+void CancelObject::cancel()
+{
+#ifdef PRINT
+ qDebug() << "thread" << QThread::currentThread() << "reports canceled";
+#endif
+ wasCanceled = true;
+}
+
+void tst_QFutureWatcher::canceled()
+{
+ const int listSize = 20;
+ QList<int> list = createList(listSize);
+
+ QFutureWatcher<void> futureWatcher;
+ QFuture<void> future;
+ CancelObject cancelObject;
+
+ QObject::connect(&futureWatcher, SIGNAL(canceled()), &cancelObject, SLOT(cancel()));
+ QObject::connect(&futureWatcher, SIGNAL(canceled()),
+ &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+
+ future = QtConcurrent::map(list, mapSleeper);
+ futureWatcher.setFuture(future);
+ futureWatcher.cancel();
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QVERIFY(future.isCanceled());
+ QVERIFY(cancelObject.wasCanceled);
+ futureWatcher.disconnect();
+ future.waitForFinished();
+}
+
+class IntTask : public RunFunctionTask<int>
+{
+public:
+ void runFunctor()
+ {
+ result = 10;
+ }
+};
+
+void tst_QFutureWatcher::resultAt()
+{
+ QFutureWatcher<int> futureWatcher;
+ futureWatcher.setFuture((new IntTask())->start());
+ futureWatcher.waitForFinished();
+ QCOMPARE(futureWatcher.result(), 10);
+ QCOMPARE(futureWatcher.resultAt(0), 10);
+}
+
+void tst_QFutureWatcher::resultReadyAt()
+{
+ QFutureWatcher<int> futureWatcher;
+ QObject::connect(&futureWatcher, SIGNAL(resultReadyAt(int)), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+
+ QFuture<int> future = (new IntTask())->start();
+ futureWatcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(1);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // Setting the future again should give us another signal.
+ // (this is to prevent the race where the task associated
+ // with the future finishes before setFuture is called.)
+ futureWatcher.setFuture(QFuture<int>());
+ futureWatcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(1);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
+class SignalSlotObject : public QObject
+{
+Q_OBJECT
+
+signals:
+ void cancel();
+
+public slots:
+ void started()
+ {
+ qDebug() << "started called";
+ }
+
+ void finished()
+ {
+ qDebug() << "finished called";
+ }
+
+ void canceled()
+ {
+ qDebug() << "canceled called";
+ }
+
+#ifdef PRINT
+ void resultReadyAt(int index)
+ {
+ qDebug() << "result" << index << "ready";
+ }
+#else
+ void resultReadyAt(int) { }
+#endif
+ void progressValueChanged(int progress)
+ {
+ qDebug() << "progress" << progress;
+ }
+
+ void progressRangeChanged(int min, int max)
+ {
+ qDebug() << "progress range" << min << max;
+ }
+
+};
+
+void tst_QFutureWatcher::futureSignals()
+{
+ {
+ QFutureInterface<int> a;
+ QFutureWatcher<int> f;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&f, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&f, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+#endif
+ // must connect to resultReadyAt so that the watcher can detect the connection
+ // (QSignalSpy does not trigger it.)
+ connect(&f, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ a.reportStarted();
+ f.setFuture(a.future());
+
+ QSignalSpy progressSpy(&f, SIGNAL(progressValueChanged(int)));
+ const int progress = 1;
+ a.setProgressValue(progress);
+ QTest::qWait(10);
+ QCOMPARE(progressSpy.count(), 2);
+ QCOMPARE(progressSpy.takeFirst().at(0).toInt(), 0);
+ QCOMPARE(progressSpy.takeFirst().at(0).toInt(), 1);
+
+ QSignalSpy finishedSpy(&f, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(&f, SIGNAL(resultReadyAt(int)));
+
+ const int result = 10;
+ a.reportResult(&result);
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+ a.reportFinished(&result);
+ QTest::qWait(10);
+
+ QCOMPARE(resultReadySpy.count(), 2);
+ QCOMPARE(resultReadySpy.takeFirst().at(0).toInt(), 0); // check the index
+ QCOMPARE(resultReadySpy.takeFirst().at(0).toInt(), 1);
+
+ QCOMPARE(finishedSpy.count(), 1);
+ }
+}
+
+void tst_QFutureWatcher::watchFinishedFuture()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> f = iface.future();
+
+ int value = 100;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(started()), &object, SLOT(started()));
+ connect(&watcher, SIGNAL(canceled()), &object, SLOT(canceled()));
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(progressRangeChanged(int, int)), &object, SLOT(progressRangeChanged(int, int)));
+#endif
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+
+ QSignalSpy startedSpy(&watcher, SIGNAL(started()));
+ QSignalSpy finishedSpy(&watcher, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+ QSignalSpy canceledSpy(&watcher, SIGNAL(canceled()));
+
+ watcher.setFuture(f);
+ QTest::qWait(10);
+
+ QCOMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(resultReadySpy.count(), 1);
+ QCOMPARE(canceledSpy.count(), 0);
+}
+
+void tst_QFutureWatcher::watchCanceledFuture()
+{
+ QFuture<int> f;
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(started()), &object, SLOT(started()));
+ connect(&watcher, SIGNAL(canceled()), &object, SLOT(canceled()));
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(progressRangeChanged(int, int)), &object, SLOT(progressRangeChanged(int, int)));
+#endif
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+
+ QSignalSpy startedSpy(&watcher, SIGNAL(started()));
+ QSignalSpy finishedSpy(&watcher, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+ QSignalSpy canceledSpy(&watcher, SIGNAL(canceled()));
+
+ watcher.setFuture(f);
+ QTest::qWait(10);
+
+ QCOMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(resultReadySpy.count(), 0);
+ QCOMPARE(canceledSpy.count(), 1);
+}
+
+void tst_QFutureWatcher::disconnectRunningFuture()
+{
+ QFutureInterface<int> a;
+ a.reportStarted();
+
+ QFuture<int> f = a.future();
+ QFutureWatcher<int> *watcher = new QFutureWatcher<int>();
+ watcher->setFuture(f);
+
+ SignalSlotObject object;
+ connect(watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+
+ QSignalSpy finishedSpy(watcher, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(watcher, SIGNAL(resultReadyAt(int)));
+
+ const int result = 10;
+ a.reportResult(&result);
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+
+ delete watcher;
+
+ a.reportResult(&result);
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+
+ a.reportFinished(&result);
+ QTest::qWait(10);
+ QCOMPARE(finishedSpy.count(), 0);
+}
+
+const int maxProgress = 100000;
+class ProgressEmitterTask : public RunFunctionTask<void>
+{
+public:
+ void runFunctor()
+ {
+ setProgressRange(0, maxProgress);
+ for (int p = 0; p <= maxProgress; ++p)
+ setProgressValue(p);
+ }
+};
+
+void tst_QFutureWatcher::toMuchProgress()
+{
+ progressValues.clear();
+ ProgressObject o;
+
+ QFutureWatcher<void> f;
+ QObject::connect(&f, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+#ifdef PRINT
+ QObject::connect(&f, SIGNAL(progressValueChanged(int)), &o, SLOT(printProgress(int)));
+#endif
+ QObject::connect(&f, SIGNAL(progressValueChanged(int)), &o, SLOT(registerProgress(int)));
+ f.setFuture((new ProgressEmitterTask())->start());
+
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(progressValues.contains(maxProgress));
+}
+
+template <typename T>
+class ProgressTextTask : public RunFunctionTask<T>
+{
+public:
+ void runFunctor()
+ {
+ this->setProgressValueAndText(1, QLatin1String("Foo 1"));
+
+ while (this->isProgressUpdateNeeded() == false)
+ QTest::qSleep(1);
+ this->setProgressValueAndText(2, QLatin1String("Foo 2"));
+
+ while (this->isProgressUpdateNeeded() == false)
+ QTest::qSleep(1);
+ this->setProgressValueAndText(3, QLatin1String("Foo 3"));
+
+ while (this->isProgressUpdateNeeded() == false)
+ QTest::qSleep(1);
+ this->setProgressValueAndText(4, QLatin1String("Foo 4"));
+ }
+};
+
+void tst_QFutureWatcher::progressText()
+{
+ { // instantiate API for T=int and T=void.
+ ProgressTextTask<int> a;
+ ProgressTextTask<void> b;
+ }
+ {
+ progressValues.clear();
+ progressTexts.clear();
+ QFuture<int> f = ((new ProgressTextTask<int>())->start());
+ QFutureWatcher<int> watcher;
+ ProgressObject o;
+ QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+#ifdef PRINT
+ QObject::connect(&watcher, SIGNAL(progressValueChanged(int)), &o, SLOT(printProgress(int)));
+ QObject::connect(&watcher, SIGNAL(progressTextChanged(const QString &)), &o, SLOT(printText(const QString &)));
+#endif
+ QObject::connect(&watcher, SIGNAL(progressValueChanged(int)), &o, SLOT(registerProgress(int)));
+ QObject::connect(&watcher, SIGNAL(progressTextChanged(const QString &)), &o, SLOT(registerText(const QString &)));
+
+ watcher.setFuture(f);
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(f.progressText(), QLatin1String("Foo 4"));
+ QCOMPARE(f.progressValue(), 4);
+ QVERIFY(progressValues.contains(1));
+ QVERIFY(progressValues.contains(2));
+ QVERIFY(progressValues.contains(3));
+ QVERIFY(progressValues.contains(4));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 1")));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 2")));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 3")));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 4")));
+ }
+}
+
+template <typename T>
+void callInterface(T &obj)
+{
+ obj.progressValue();
+ obj.progressMinimum();
+ obj.progressMaximum();
+ obj.progressText();
+
+ obj.isStarted();
+ obj.isFinished();
+ obj.isRunning();
+ obj.isCanceled();
+ obj.isPaused();
+
+ obj.cancel();
+ obj.pause();
+ obj.resume();
+ obj.togglePaused();
+ obj.waitForFinished();
+
+ const T& objConst = obj;
+ objConst.progressValue();
+ objConst.progressMinimum();
+ objConst.progressMaximum();
+ objConst.progressText();
+
+ objConst.isStarted();
+ objConst.isFinished();
+ objConst.isRunning();
+ objConst.isCanceled();
+ objConst.isPaused();
+}
+
+template <typename T>
+void callInterface(const T &obj)
+{
+ obj.result();
+ obj.resultAt(0);
+}
+
+
+// QFutureWatcher and QFuture has a similar interface. Test
+// that the functions we want ot have in both are actually
+// there.
+void tst_QFutureWatcher::sharedFutureInterface()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> intFuture = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFuture<void> voidFuture;
+ QFutureWatcher<int> intWatcher;
+ intWatcher.setFuture(intFuture);
+ QFutureWatcher<void> voidWatcher;
+
+ callInterface(intFuture);
+ callInterface(voidFuture);
+ callInterface(intWatcher);
+ callInterface(voidWatcher);
+
+ callInterface(intFuture);
+ callInterface(intWatcher);
+}
+
+void tst_QFutureWatcher::changeFuture()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFuture<int> b;
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+
+ watcher.setFuture(a); // Watch 'a' which will genere a resultReady event.
+ watcher.setFuture(b); // But oh no! we're switching to another future
+ QTest::qWait(10); // before the event gets delivered.
+
+ QCOMPARE(resultReadySpy.count(), 0);
+
+ watcher.setFuture(a);
+ watcher.setFuture(b);
+ watcher.setFuture(a); // setting it back gets us one event, not two.
+ QTest::qWait(10);
+
+ QCOMPARE(resultReadySpy.count(), 1);
+}
+
+// Test that events aren't delivered from canceled futures
+void tst_QFutureWatcher::cancelEvents()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+
+ watcher.setFuture(a);
+ watcher.cancel();
+
+ QTest::qWait(10);
+
+ QCOMPARE(resultReadySpy.count(), 0);
+}
+
+// Tests that events from paused futures are saved and
+// delivered on resume.
+void tst_QFutureWatcher::pauseEvents()
+{
+ {
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+
+ watcher.setFuture(a);
+ watcher.pause();
+
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 0);
+
+ watcher.resume();
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+ }
+ {
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+
+ watcher.setFuture(a);
+ a.pause();
+
+ QFuture<int> b;
+ watcher.setFuture(b); // If we watch b instead, resuming a
+ a.resume(); // should give us no results.
+
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 0);
+ }
+}
+
+// Test that the finished state for the watcher gets
+// set when the finished event is delivered.
+// This means it will lag the finished state for the future,
+// but makes it more useful.
+void tst_QFutureWatcher::finishedState()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+ QFuture<int> future = iface.future();
+ QFutureWatcher<int> watcher;
+
+ watcher.setFuture(future);
+ QTest::qWait(10);
+
+ iface.reportFinished();
+ QVERIFY(future.isFinished());
+ QVERIFY(watcher.isFinished() == false);
+
+ QTest::qWait(10);
+ QVERIFY(watcher.isFinished());
+}
+
+/*
+ Verify that throttling kicks in if you report a lot of results,
+ and that it clears when the result events are processed.
+*/
+void tst_QFutureWatcher::throttling()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+ QFuture<int> future = iface.future();
+ QFutureWatcher<int> watcher;
+ watcher.setFuture(future);
+
+ QVERIFY(iface.isThrottled() == false);
+
+ for (int i = 0; i < 1000; ++i) {
+ int result = 0;
+ iface.reportResult(result);
+ }
+
+ QVERIFY(iface.isThrottled() == true);
+
+ QTest::qWait(100); // process events.
+
+ QVERIFY(iface.isThrottled() == false);
+
+ iface.reportFinished();
+}
+
+int mapper(const int &i)
+{
+ return i;
+}
+
+class ResultReadyTester : public QObject
+{
+Q_OBJECT
+public:
+ ResultReadyTester(QFutureWatcher<int> *watcher)
+ :m_watcher(watcher), filter(false), ok(true), count(0)
+ {
+
+ }
+public slots:
+ void resultReadyAt(int index)
+ {
+ ++count;
+ if (m_watcher->future().isResultReadyAt(index) == false)
+ ok = false;
+ if (!filter && m_watcher->future().resultAt(index) != index)
+ ok = false;
+ if (filter && m_watcher->future().resultAt(index) != index * 2 + 1)
+ ok = false;
+ }
+public:
+ QFutureWatcher<int> *m_watcher;
+ bool filter;
+ bool ok;
+ int count;
+};
+
+void tst_QFutureWatcher::incrementalMapResults()
+{
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+#endif
+
+ QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ ResultReadyTester resultReadyTester(&watcher);
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
+
+ const int count = 10000;
+ QList<int> ints;
+ for (int i = 0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::mapped(ints, mapper);
+ watcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(resultReadyTester.count, count);
+ QVERIFY(resultReadyTester.ok);
+ QVERIFY(watcher.isFinished());
+ future.waitForFinished();
+}
+
+bool filterer(int i)
+{
+ return (i % 2);
+}
+
+void tst_QFutureWatcher::incrementalFilterResults()
+{
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+#endif
+
+ QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+
+ ResultReadyTester resultReadyTester(&watcher);
+ resultReadyTester.filter = true;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
+
+ const int count = 10000;
+ QList<int> ints;
+ for (int i = 0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::filtered(ints, filterer);
+ watcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(resultReadyTester.count, count / 2);
+ QVERIFY(resultReadyTester.ok);
+ QVERIFY(watcher.isFinished());
+ future.waitForFinished();
+}
+
+void tst_QFutureWatcher::qfutureSynchornizer()
+{
+ int taskCount = 1000;
+ QTime t;
+ t.start();
+
+ {
+ QFutureSynchronizer<void> sync;
+
+ sync.setCancelOnWait(true);
+ for (int i = 0; i < taskCount; ++i) {
+ sync.addFuture(run(sleeper));
+ }
+ }
+
+ // Test that we're not running each task.
+ QVERIFY(t.elapsed() < taskCount * 10);
+}
+
+class DummyObject : public QObject {
+ Q_OBJECT
+public slots:
+ void dummySlot() {}
+public:
+ static void function(QMutex *m)
+ {
+ QMutexLocker lock(m);
+ }
+};
+
+void tst_QFutureWatcher::warnRace()
+{
+#ifndef Q_OS_MAC //I don't know why it is not working on mac
+#ifndef QT_NO_DEBUG
+ QTest::ignoreMessage(QtWarningMsg, "QFutureWatcher::connect: connecting after calling setFuture() is likely to produce race");
+#endif
+#endif
+ QFutureWatcher<void> watcher;
+ DummyObject object;
+ QMutex mutex;
+ mutex.lock();
+
+ QFuture<void> future = QtConcurrent::run(DummyObject::function, &mutex);
+ watcher.setFuture(future);
+ QTRY_VERIFY(future.isStarted());
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(dummySlot()));
+ mutex.unlock();
+ future.waitForFinished();
+}
+
+#include "tst_qfuturewatcher.moc"
+
+#else
+QTEST_NOOP_MAIN
+#endif
diff --git a/tests/auto/qtconcurrentfilter/.gitignore b/tests/auto/corelib/concurrent/qtconcurrentfilter/.gitignore
index f93d27e009..f93d27e009 100644
--- a/tests/auto/qtconcurrentfilter/.gitignore
+++ b/tests/auto/corelib/concurrent/qtconcurrentfilter/.gitignore
diff --git a/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro b/tests/auto/corelib/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro
index 62d4908e69..62d4908e69 100644
--- a/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro
+++ b/tests/auto/corelib/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro
diff --git a/tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp b/tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
new file mode 100644
index 0000000000..970784c5d3
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
@@ -0,0 +1,1548 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtconcurrentfilter.h>
+#include <QCoreApplication>
+#include <QList>
+#include <QLinkedList>
+#include <QtTest/QtTest>
+
+#include "../qtconcurrentmap/functions.h"
+#include "../qfuture/versioncheck.h"
+
+class tst_QtConcurrentFilter : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void filter();
+ void filtered();
+ void filteredReduced();
+ void resultAt();
+ void incrementalResults();
+ void noDetatch();
+ void stlContainers();
+};
+
+#if !defined (QT_NO_CONCURRENT_TEST) && !defined(QT_NO_CONCURRENT_FILTER)
+
+void tst_QtConcurrentFilter::filter()
+{
+ // functor
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, KeepEvenIntegers()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, KeepEvenIntegers());
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, KeepEvenIntegers()).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, KeepEvenIntegers());
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(vector, KeepEvenIntegers()).waitForFinished();
+ QCOMPARE(vector, QVector<int>() << 2 << 4);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(vector, KeepEvenIntegers());
+ QCOMPARE(vector, QVector<int>() << 2 << 4);
+ }
+
+
+ // function
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, keepEvenIntegers).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, keepEvenIntegers);
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, keepEvenIntegers).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+
+ // bound function
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, keepEvenIntegers).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, keepEvenIntegers);
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, keepEvenIntegers).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+
+ // member
+ {
+ QList<Number> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, &Number::isEven).waitForFinished();
+ QCOMPARE(list, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, &Number::isEven);
+ QCOMPARE(list, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, &Number::isEven).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, &Number::isEven);
+ QCOMPARE(linkedList, QLinkedList<Number>() << 2 << 4);
+ }
+}
+
+void tst_QtConcurrentFilter::filtered()
+{
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+
+ // functor
+ {
+ QFuture<int> f = QtConcurrent::filtered(list, KeepEvenIntegers());
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), KeepEvenIntegers());
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers());
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered(list, KeepEvenIntegers());
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
+ list.end(),
+ KeepEvenIntegers());
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers());
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QVector<int> vector2 = QtConcurrent::blockingFiltered(vector, KeepEvenIntegers());
+ QCOMPARE(vector2, QVector<int>() << 2 << 4);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QFuture<int> f = QtConcurrent::filtered(vector, KeepEvenIntegers());
+ QCOMPARE(f.results(), QList<int>() << 2 << 4);
+ }
+
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QFuture<int> f = QtConcurrent::filtered(linkedList, KeepEvenIntegers());
+ QCOMPARE(f.results(), QList<int>() << 2 << 4);
+ }
+
+ // function
+ {
+ QFuture<int> f = QtConcurrent::filtered(list, keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered(list, keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
+ list.end(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // bound function
+ {
+ QFuture<int> f = QtConcurrent::filtered(list, keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered(list, keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
+ list.end(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // const member function
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers, &Number::isEven);
+ QList<Number> list2 = f.results();
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QList<Number> list2 = f.results();
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QList<Number> list2 = f.results();
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFiltered(integers, &Number::isEven);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFiltered<QList<Number> >(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QList<Number> list2 =
+ QtConcurrent::blockingFiltered<QList<Number> >(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+
+ // same thing on linked lists
+
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+
+ // functor
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList, KeepEvenIntegers());
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers());
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers());
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // function
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList, keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // bound function
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList, keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // const member function
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers, &Number::isEven);
+ QList<Number> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QList<Number> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QList<Number> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFiltered(integers, &Number::isEven);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<Number> >(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 =
+ QtConcurrent::blockingFiltered<QLinkedList<Number> >(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+}
+
+void tst_QtConcurrentFilter::filteredReduced()
+{
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3 << 4;
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ int sum = QtConcurrent::filteredReduced<int>(vector, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::filteredReduced(list, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::filteredReduced(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-member
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list, KeepEvenIntegers(), &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list, KeepEvenIntegers(), &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(QList<Number>(numberList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(QList<Number>(numberList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // member-member
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::filteredReduced(numbers,
+ &Number::isEven,
+ &QList<Number>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::filteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::filteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers,
+ &Number::isEven,
+ &QList<Number>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+
+ // function-member
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list, keepEvenIntegers, &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list, keepEvenIntegers, &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::filteredReduced(numberList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced(QList<Number>(numberList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced(QList<Number>(numberList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // same as above on linked lists
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3 << 4;
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-member
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList, KeepEvenIntegers(), &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList, KeepEvenIntegers(), &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberLinkedList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // member-member
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers,
+ &Number::isEven,
+ &QLinkedList<Number>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers,
+ &Number::isEven,
+ &QLinkedList<Number>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+
+ // function-member
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList, keepEvenIntegers, &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList, keepEvenIntegers, &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::filteredReduced(numberLinkedList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // ### the same as above, with an initial result value
+}
+
+bool filterfn(int i)
+{
+ return (i % 2);
+}
+
+void tst_QtConcurrentFilter::resultAt()
+{
+
+ QList<int> ints;
+ for (int i=0; i < 1000; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::filtered(ints, filterfn);
+ future.waitForFinished();
+
+
+ for (int i = 0; i < future.resultCount(); ++i) {
+ QCOMPARE(future.resultAt(i), ints.at(i * 2 + 1));
+ }
+
+}
+
+bool waitFilterfn(const int &i)
+{
+ QTest::qWait(1);
+ return (i % 2);
+}
+
+void tst_QtConcurrentFilter::incrementalResults()
+{
+ const int count = 200;
+ QList<int> ints;
+ for (int i=0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::filtered(ints, waitFilterfn);
+
+ QList<int> results;
+
+ while (future.isFinished() == false) {
+ for (int i = 0; i < future.resultCount(); ++i) {
+ results += future.resultAt(i);
+ }
+ QTest::qWait(1);
+ }
+
+ QCOMPARE(future.isFinished(), true);
+ QCOMPARE(future.resultCount(), count / 2);
+ QCOMPARE(future.results().count(), count / 2);
+}
+
+void tst_QtConcurrentFilter::noDetatch()
+{
+ {
+ QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::filtered(l, waitFilterfn).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::blockingFiltered(l, waitFilterfn);
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::filteredReduced(l, waitFilterfn, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::filter(l, waitFilterfn).waitForFinished();
+ QVERIFY(l.isDetached() == true);
+ QVERIFY(ll.isDetached() == true);
+ }
+ {
+ const QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ const QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::filtered(l, waitFilterfn).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::filteredReduced(l, waitFilterfn, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+ }
+}
+
+void tst_QtConcurrentFilter::stlContainers()
+{
+#if defined(QT_NO_STL)
+ QSKIP("Qt compiled without STL support", SkipAll);
+#elif defined(_MSC_VER) && _MSC_VER >= 1600
+ QSKIP("Test does not compile with MSVC 2010 (see QTBUG-18996)", SkipAll);
+#else
+ std::vector<int> vector;
+ vector.push_back(1);
+ vector.push_back(2);
+
+ std::vector<int> vector2 = QtConcurrent::blockingFiltered(vector, waitFilterfn);
+ QCOMPARE(vector2.size(), (std::vector<int>::size_type)(1));
+ QCOMPARE(vector2[0], 1);
+
+ std::list<int> list;
+ list.push_back(1);
+ list.push_back(2);
+
+ std::list<int> list2 = QtConcurrent::blockingFiltered(list, waitFilterfn);
+ QCOMPARE(list2.size(), (std::list<int>::size_type)(1));
+ QCOMPARE(*list2.begin(), 1);
+
+ QtConcurrent::filtered(list, waitFilterfn).waitForFinished();
+ QtConcurrent::filtered(vector, waitFilterfn).waitForFinished();
+ QtConcurrent::filtered(vector.begin(), vector.end(), waitFilterfn).waitForFinished();
+
+ QtConcurrent::blockingFilter(list, waitFilterfn);
+ QCOMPARE(list2.size(), (std::list<int>::size_type)(1));
+ QCOMPARE(*list2.begin(), 1);
+#endif
+}
+
+QTEST_MAIN(tst_QtConcurrentFilter)
+
+#else
+
+void tst_QtConcurrentFilter::filter() {}
+void tst_QtConcurrentFilter::filtered() {}
+void tst_QtConcurrentFilter::filteredReduced() {}
+void tst_QtConcurrentFilter::resultAt() {}
+void tst_QtConcurrentFilter::incrementalResults() {}
+void tst_QtConcurrentFilter::stlContainers() {}
+void tst_QtConcurrentFilter::noDetatch() {}
+
+QTEST_NOOP_MAIN
+#endif
+
+#include "tst_qtconcurrentfilter.moc"
diff --git a/tests/auto/qtconcurrentiteratekernel/.gitignore b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/.gitignore
index ac5dec4db6..ac5dec4db6 100644
--- a/tests/auto/qtconcurrentiteratekernel/.gitignore
+++ b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/.gitignore
diff --git a/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
index a61d275241..a61d275241 100644
--- a/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
+++ b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
diff --git a/tests/auto/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
index 521c517d90..521c517d90 100644
--- a/tests/auto/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
+++ b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
diff --git a/tests/auto/qtconcurrentmap/.gitignore b/tests/auto/corelib/concurrent/qtconcurrentmap/.gitignore
index f1c563e979..f1c563e979 100644
--- a/tests/auto/qtconcurrentmap/.gitignore
+++ b/tests/auto/corelib/concurrent/qtconcurrentmap/.gitignore
diff --git a/tests/auto/qtconcurrentmap/functions.h b/tests/auto/corelib/concurrent/qtconcurrentmap/functions.h
index a3dcd3c300..a3dcd3c300 100644
--- a/tests/auto/qtconcurrentmap/functions.h
+++ b/tests/auto/corelib/concurrent/qtconcurrentmap/functions.h
diff --git a/tests/auto/qtconcurrentmap/qtconcurrentmap.pro b/tests/auto/corelib/concurrent/qtconcurrentmap/qtconcurrentmap.pro
index 6fc358514e..6fc358514e 100644
--- a/tests/auto/qtconcurrentmap/qtconcurrentmap.pro
+++ b/tests/auto/corelib/concurrent/qtconcurrentmap/qtconcurrentmap.pro
diff --git a/tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp b/tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp
new file mode 100644
index 0000000000..8ec49accdf
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp
@@ -0,0 +1,2448 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtconcurrentmap.h>
+#include <qtconcurrentexception.h>
+
+#include <qdebug.h>
+#include <QThread>
+
+#include <QtTest/QtTest>
+
+#include "functions.h"
+#include "../qfuture/versioncheck.h"
+
+Q_DECLARE_METATYPE(QVector<int>);
+Q_DECLARE_METATYPE(QVector<double>);
+Q_DECLARE_METATYPE(QVector<QString>);
+Q_DECLARE_METATYPE(QList<int>);
+Q_DECLARE_METATYPE(QList<double>);
+Q_DECLARE_METATYPE(QList<QString>);
+
+class tst_QtConcurrentMap: public QObject
+{
+ Q_OBJECT
+private slots:
+ void map();
+ void blocking_map();
+ void mapped();
+ void blocking_mapped();
+ void mappedReduced();
+ void blocking_mappedReduced();
+ void assignResult();
+ void functionOverloads();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
+ void incrementalResults();
+ void noDetatch();
+ void stlContainers();
+ void qFutureAssignmentLeak();
+ void stressTest();
+public slots:
+ void throttling();
+};
+
+#if !defined (QT_NO_CONCURRENT_TEST) && !defined(QT_NO_CONCURRENT_MAP)
+
+using namespace QtConcurrent;
+
+void multiplyBy2Immutable(int x)
+{
+ x *= 2;
+}
+
+class MultiplyBy2Immutable
+{
+public:
+ void operator()(int x)
+ {
+ x *= 2;
+ }
+};
+
+void multiplyBy2InPlace(int &x)
+{
+ x *= 2;
+}
+
+class MultiplyBy2InPlace
+{
+public:
+ void operator()(int &x)
+ {
+ x *= 2;
+ }
+};
+
+Q_DECLARE_METATYPE(QList<Number>);
+
+void tst_QtConcurrentMap::map()
+{
+ // functors take arguments by reference, modifying the sequence in place
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::map(list, MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4 << 6);
+ QtConcurrent::map(list.begin(), list.end(), MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 8 << 16 << 24);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 32 << 64 << 96);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 64 << 128 << 192);
+
+ // member function
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::map(numberList, &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QList<Number>() << 2 << 4 << 6);
+ QtConcurrent::map(numberList.begin(), numberList.end(), &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QList<Number>() << 4 << 8 << 12);
+
+#ifdef Q_COMPILER_LAMBDA
+ // lambda
+ QtConcurrent::map(list, [](int &x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 128 << 256 << 384);
+ QtConcurrent::map(list.begin(), list.end(), [](int &x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 256 << 512 << 768);
+#endif
+
+ }
+
+ // functors don't take arguments by reference, making these no-ops
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::map(list, MultiplyBy2Immutable()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), MultiplyBy2Immutable()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // function
+ QtConcurrent::map(list, multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // bound function
+ QtConcurrent::map(list, multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+#ifdef Q_COMPILER_LAMBDA
+ // lambda
+ QtConcurrent::map(list, [](int x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), [](int x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+#endif
+ }
+
+ // Linked lists and forward iterators
+ {
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::map(list, MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 2 << 4 << 6);
+ QtConcurrent::map(list.begin(), list.end(), MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 8 << 16 << 24);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 32 << 64 << 96);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 64 << 128 << 192);
+
+ // member function
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::map(numberList, &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QLinkedList<Number>() << 2 << 4 << 6);
+ QtConcurrent::map(numberList.begin(), numberList.end(), &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QLinkedList<Number>() << 4 << 8 << 12);
+ }
+
+#if 0
+ // not allowed: map() with immutable sequences makes no sense
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;
+
+ QtConcurrent::map(list, MultiplyBy2Immutable());
+ QtConcurrent::map(list, multiplyBy2Immutable);
+ QtConcurrent::map(list, multiplyBy2Immutable);
+ }
+#endif
+
+#if 0
+ // not allowed: in place modification of a temp copy (since temp copy goes out of scope)
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ QtConcurrent::map(QList<int>(list), MultiplyBy2InPlace());
+ QtConcurrent::map(QList<int>(list), multiplyBy2);
+ QtConcurrent::map(QList<int>(list), multiplyBy2InPlace);
+
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::map(QList<Number>(numberList), &Number::multiplyBy2);
+ }
+#endif
+
+#if 0
+ // not allowed: map() on a const list, where functors try to modify the items in the list
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;;
+
+ QtConcurrent::map(list, MultiplyBy2InPlace());
+ QtConcurrent::map(list, multiplyBy2InPlace);
+ QtConcurrent::map(list, multiplyBy2InPlace);
+
+ const QList<Number> numberList = QList<Number>() << 1 << 2 << 3;
+ QtConcurrent::map(numberList, &Number::multiplyBy2);
+ }
+#endif
+}
+
+void tst_QtConcurrentMap::blocking_map()
+{
+ // functors take arguments by reference, modifying the sequence in place
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
+ QCOMPARE(list, QList<int>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2InPlace());
+ QCOMPARE(list, QList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 8 << 16 << 24);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 32 << 64 << 96);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 64 << 128 << 192);
+
+ // member function
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
+ QCOMPARE(numberList, QList<Number>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(numberList.begin(), numberList.end(), &Number::multiplyBy2);
+ QCOMPARE(numberList, QList<Number>() << 4 << 8 << 12);
+ }
+
+ // functors don't take arguments by reference, making these no-ops
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::blockingMap(list, MultiplyBy2Immutable());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2Immutable());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // function
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // bound function
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ }
+
+ // Linked lists and forward iterators
+ {
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
+ QCOMPARE(list, QLinkedList<int>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2InPlace());
+ QCOMPARE(list, QLinkedList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 8 << 16 << 24);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 32 << 64 << 96);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 64 << 128 << 192);
+
+ // member function
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
+ QCOMPARE(numberList, QLinkedList<Number>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(numberList.begin(), numberList.end(), &Number::multiplyBy2);
+ QCOMPARE(numberList, QLinkedList<Number>() << 4 << 8 << 12);
+ }
+
+#if 0
+ // not allowed: map() with immutable sequences makes no sense
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;
+
+ QtConcurrent::blockingMap(list, MultiplyBy2Immutable());
+ QtConcurrent::blockkng::map(list, multiplyBy2Immutable);
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+ }
+#endif
+
+#if 0
+ // not allowed: in place modification of a temp copy (since temp copy goes out of scope)
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ QtConcurrent::blockingMap(QList<int>(list), MultiplyBy2InPlace());
+ QtConcurrent::blockingMap(QList<int>(list), multiplyBy2);
+ QtConcurrent::blockingMap(QList<int>(list), multiplyBy2InPlace);
+
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::blockingMap(QList<Number>(numberList), &Number::multiplyBy2);
+ }
+#endif
+
+#if 0
+ // not allowed: map() on a const list, where functors try to modify the items in the list
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;;
+
+ QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+
+ const QList<Number> numberList = QList<Number>() << 1 << 2 << 3;
+ QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
+ }
+#endif
+}
+
+int multiplyBy2(int x)
+{
+ int y = x * 2;
+ return y;
+}
+
+class MultiplyBy2
+{
+public:
+ typedef int result_type;
+
+ int operator()(int x) const
+ {
+ int y = x * 2;
+ return y;
+ }
+};
+
+double intToDouble(int x)
+{
+ return double(x);
+}
+
+class IntToDouble
+{
+public:
+ typedef double result_type;
+
+ double operator()(int x) const
+ {
+ return double(x);
+ }
+};
+
+int stringToInt(const QString &string)
+{
+ return string.toInt();
+}
+
+class StringToInt
+{
+public:
+ typedef int result_type;
+
+ int operator()(const QString &string) const
+ {
+ return string.toInt();
+ }
+};
+
+void tst_QtConcurrentMap::mapped()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // functor
+ {
+ QList<int> list2 = QtConcurrent::mapped(list, MultiplyBy2()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ MultiplyBy2()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QList<int>(list), MultiplyBy2()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QList<int> list2 = QtConcurrent::mapped(linkedList, MultiplyBy2()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ MultiplyBy2()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 =
+ QtConcurrent::mapped(QLinkedList<int>(linkedList), MultiplyBy2()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+
+ // function
+ {
+ QList<int> list2 = QtConcurrent::mapped(list, multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QList<int>(list), multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QList<int> list2 = QtConcurrent::mapped(linkedList, multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 =
+ QtConcurrent::mapped(QLinkedList<int>(linkedList), multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+
+ // bound function
+ {
+ QList<int> list2 = QtConcurrent::mapped(list, multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QList<int>(list), multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QList<int> list2 = QtConcurrent::mapped(linkedList, multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList), multiplyBy2)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+
+ // const member function
+ {
+ QList<Number> numberList2 = QtConcurrent::mapped(numberList, &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList3 = QtConcurrent::mapped(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList4 = QtConcurrent::mapped(QList<Number>(numberList),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
+ }
+ {
+ QList<Number> numberList2 = QtConcurrent::mapped(numberLinkedList, &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList3 = QtConcurrent::mapped(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList4 = QtConcurrent::mapped(QLinkedList<Number>(numberLinkedList),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
+ }
+
+ // change the value_type, same container
+
+ // functor
+ {
+ QList<double> list2 = QtConcurrent::mapped(list, IntToDouble()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ IntToDouble())
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QList<int>(list),
+ IntToDouble())
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QList<double> list2 = QtConcurrent::mapped(linkedList, IntToDouble()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntToDouble())
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList),
+ IntToDouble())
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // function
+ {
+ QList<double> list2 = QtConcurrent::mapped(list, intToDouble).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QList<int>(list), intToDouble).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QList<double> list2 = QtConcurrent::mapped(linkedList, intToDouble).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList), intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // bound function
+ {
+ QList<double> list2 = QtConcurrent::mapped(list, intToDouble).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QList<double> list4 = QtConcurrent::mapped(QList<int>(list),
+ intToDouble)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QList<double> list2 = QtConcurrent::mapped(linkedList, intToDouble).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList),
+ intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // const member function
+ {
+ QList<QString> list2 = QtConcurrent::mapped(numberList, &Number::toString).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list3 = QtConcurrent::mapped(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toString)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list4 = QtConcurrent::mapped(QList<Number>(numberList), &Number::toString)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
+ }
+ {
+ QList<QString> list2 = QtConcurrent::mapped(numberLinkedList, &Number::toString).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list3 = QtConcurrent::mapped(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toString)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list4 = QtConcurrent::mapped(QLinkedList<Number>(numberLinkedList),
+ &Number::toString)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
+ }
+
+ // change the value_type
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, StringToInt()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt())
+ .results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, stringToInt).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt).results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+
+ {
+ QList<int> numberList2 = QtConcurrent::mapped(numberList, &Number::toInt).results();
+ QCOMPARE(numberList2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> numberList3 = QtConcurrent::mapped(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt)
+ .results();
+ QCOMPARE(numberList3, QList<int>() << 1 << 2 << 3);
+ }
+
+ // change the value_type from QStringList
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, StringToInt()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt())
+ .results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, stringToInt).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt)
+ .results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+}
+
+void tst_QtConcurrentMap::blocking_mapped()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // functor
+ {
+ QList<int> list2 = QtConcurrent::blockingMapped(list, MultiplyBy2());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ MultiplyBy2());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), MultiplyBy2());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, MultiplyBy2());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ MultiplyBy2());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), MultiplyBy2());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
+ }
+
+ // function
+ {
+ QList<int> list2 = QtConcurrent::blockingMapped(list, multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
+ }
+
+ // bound function
+ {
+ QList<int> list2 = QtConcurrent::blockingMapped(list, multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
+ }
+
+ // const member function
+ {
+ QList<Number> numberList2 = QtConcurrent::blockingMapped(numberList, &Number::multipliedBy2);
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList3 = QtConcurrent::blockingMapped<QList<Number> >(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::multipliedBy2);
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList4 = QtConcurrent::blockingMapped(QList<Number>(numberList),
+ &Number::multipliedBy2);
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<Number> numberLinkedList2 = QtConcurrent::blockingMapped(numberLinkedList, &Number::multipliedBy2);
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberLinkedList2, QLinkedList<Number>() << 2 << 4 << 6);
+
+ QLinkedList<Number> numberLinkedList3 = QtConcurrent::blockingMapped<QLinkedList<Number> >(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::multipliedBy2);
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberLinkedList3, QLinkedList<Number>() << 2 << 4 << 6);
+
+ QLinkedList<Number> numberLinkedList4 = QtConcurrent::blockingMapped(QLinkedList<Number>(numberLinkedList),
+ &Number::multipliedBy2);
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberLinkedList4, QLinkedList<Number>() << 2 << 4 << 6);
+ }
+
+ // change the value_type, same container
+
+ // functor
+ {
+ QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
+ list.constEnd(),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, IntToDouble());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntToDouble());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList),
+ IntToDouble());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // function
+ {
+ QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
+ list.constEnd(),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list), intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList), intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // bound function
+ {
+ QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
+ list.constEnd(),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList),
+ intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // const member function
+ {
+ QList<QString> list2 =
+ QtConcurrent::blockingMapped<QList<QString> >(numberList, &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list3 = QtConcurrent::blockingMapped<QList<QString> >(numberList.constBegin(),
+ numberList.constEnd()
+ , &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list4 =
+ QtConcurrent::blockingMapped<QList<QString> >(QList<Number>(numberList), &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
+ }
+ {
+ QLinkedList<QString> linkedList2 =
+ QtConcurrent::blockingMapped<QLinkedList<QString> >(numberLinkedList, &Number::toString);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<QString>() << "1" << "2" << "3");
+
+ QLinkedList<QString> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<QString> >(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd()
+ , &Number::toString);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<QString>() << "1" << "2" << "3");
+
+ QLinkedList<QString> linkedList4 =
+ QtConcurrent::blockingMapped<QLinkedList<QString> >(QLinkedList<Number>(numberLinkedList), &Number::toString);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<QString>() << "1" << "2" << "3");
+ }
+
+ // change the value_type
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, StringToInt());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt());
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, stringToInt);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+
+ {
+ QList<int> numberList2 = QtConcurrent::blockingMapped(numberList, &Number::toInt);
+ QCOMPARE(numberList2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> numberList3 = QtConcurrent::blockingMapped<QList<int> >(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt);
+ QCOMPARE(numberList3, QList<int>() << 1 << 2 << 3);
+ }
+
+ // change the value_type from QStringList
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, StringToInt());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt());
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, stringToInt);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+
+ // functor
+ {
+ QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(list.constBegin(),
+ list.constEnd(),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list4 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(strings, StringToInt());
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list6 = QtConcurrent::blockingMapped<QVector<int> >(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt());
+ QCOMPARE(list6, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list7 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings),
+ StringToInt());
+ QCOMPARE(list7, QVector<int>() << 1 << 2 << 3);
+ }
+
+ // function
+ {
+ QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(list.constBegin(),
+ list.constEnd(),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list4 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(strings, stringToInt);
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list6 = QtConcurrent::blockingMapped<QVector<int> >(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt);
+ QCOMPARE(list6, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list7 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings),
+ stringToInt);
+ QCOMPARE(list7, QVector<int>() << 1 << 2 << 3);
+ }
+
+ // bound function
+ {
+ QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list), intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list4 = QtConcurrent::blockingMapped<QVector<int> >(strings, stringToInt);
+ QCOMPARE(list4, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings), stringToInt);
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+ }
+
+ // const member function
+ {
+ QVector<QString> list2 = QtConcurrent::blockingMapped<QVector<QString> >(numberList, &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<QString>() << "1" << "2" << "3");
+
+ QVector<QString> list3 =
+ QtConcurrent::blockingMapped<QVector<QString> >(QList<Number>(numberList), &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<QString>() << "1" << "2" << "3");
+
+ // not allowed: const member function where all arguments have default values
+#if 0
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list4 = QtConcurrent::blockingMapped<QVector<int> >(strings, &QString::toInt);
+ QCOMPARE(list4, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings), &QString::toInt);
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+#endif
+ }
+}
+
+int intSquare(int x)
+{
+ return x * x;
+}
+
+class IntSquare
+{
+public:
+ typedef int result_type;
+
+ int operator()(int x)
+ {
+ return x * x;
+ }
+};
+
+void tst_QtConcurrentMap::mappedReduced()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // test Q_DECLARE_OPERATORS_FOR_FLAGS
+ QtConcurrent::ReduceOptions opt = (QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce);
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::mappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::mappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::mappedReduced<int>(QList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced<int>(linkedList, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::mappedReduced<int>(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::mappedReduced<int>(list, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QList<int>(list), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced<int>(linkedList, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::mappedReduced(list, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QList<int>(list), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced(linkedList, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::mappedReduced(list, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QList<int>(list), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-member
+ {
+ QList<int> list2 = QtConcurrent::mappedReduced(list,
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::mappedReduced(QList<int>(list),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(linkedList,
+ IntSquare(),
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList),
+ IntSquare(),
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::mappedReduced<int>(numberList, &Number::toInt, IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QList<Number>(numberList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced<int>(numberLinkedList, &Number::toInt, IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+
+ // member-member
+ {
+ QList<int> list2 = QtConcurrent::mappedReduced(numberList,
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list3 = QtConcurrent::mappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list3, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list4 = QtConcurrent::mappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ &QList<int>::push_back, OrderedReduce);
+ QCOMPARE(list4, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(numberLinkedList,
+ &Number::toInt,
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ &QLinkedList<int>::push_back, OrderedReduce);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 2 << 3);
+ }
+
+ // function-member
+ {
+ QList<int> list2 = QtConcurrent::mappedReduced(list,
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::mappedReduced(QList<int>(list),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(linkedList,
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::mappedReduced(numberList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced(numberLinkedList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+
+ // linked lists
+ {
+
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+
+ int sum = QtConcurrent::mappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::mappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // ### the same as above, with an initial result value
+}
+
+void tst_QtConcurrentMap::blocking_mappedReduced()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::blockingMappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(linkedList, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::blockingMappedReduced<int>(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(list, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(linkedList, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::blockingMappedReduced(list, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QList<int>(list), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced(linkedList, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::blockingMappedReduced(list, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QList<int>(list), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-member
+ {
+ QList<int> list2 = QtConcurrent::blockingMappedReduced(list,
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<int>(list),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(linkedList,
+ IntSquare(),
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList),
+ IntSquare(),
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(numberList, &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<Number>(numberList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(numberLinkedList, &Number::toInt, IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+
+ // member-member
+ {
+ QList<int> list2 = QtConcurrent::blockingMappedReduced(numberList,
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list3 = QtConcurrent::blockingMappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list3, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ &QList<int>::push_back, OrderedReduce);
+ QCOMPARE(list4, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(numberLinkedList,
+ &Number::toInt,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ &QLinkedList<int>::append, OrderedReduce);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 2 << 3);
+ }
+
+ // function-member
+ {
+ QList<int> list2 = QtConcurrent::blockingMappedReduced(list,
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<int>(list),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(linkedList,
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::blockingMappedReduced(numberList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced(numberLinkedList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+
+ // linked lists
+ {
+
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+
+ int sum = QtConcurrent::blockingMappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::blockingMappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // ### the same as above, with an initial result value
+}
+
+int sleeper(int val)
+{
+ QTest::qSleep(100);
+ return val;
+}
+
+void tst_QtConcurrentMap::assignResult()
+{
+ const QList<int> startList = QList<int>() << 0 << 1 << 2;
+ QList<int> list = QtConcurrent::blockingMapped(startList, sleeper);
+ QCOMPARE(list.at(0), 0);
+ QCOMPARE(list.at(1), 1);
+}
+
+int fnConst(const int &i)
+{
+ return i;
+}
+
+int fn(int &i)
+{
+ return i;
+}
+
+QString changeTypeConst(const int &)
+{
+ return QString();
+}
+
+QString changeType(int &)
+{
+ return QString();
+}
+
+int changeTypeQStringListConst(const QStringList &)
+{
+ return 0;
+}
+
+int changeTypeQStringList(QStringList &)
+{
+ return 0;
+}
+
+class MemFnTester
+{
+public:
+ MemFnTester() {}
+
+ MemFnTester fn()
+ {
+ return MemFnTester();
+ }
+
+ MemFnTester fnConst() const
+ {
+ return MemFnTester();
+ }
+
+ QString changeType()
+ {
+ return QString();
+ }
+
+ QString changeTypeConst() const
+ {
+ return QString();
+ }
+};
+
+Q_DECLARE_METATYPE(QVector<MemFnTester>);
+Q_DECLARE_METATYPE(QList<MemFnTester>);
+
+void tst_QtConcurrentMap::functionOverloads()
+{
+ QList<int> intList;
+ const QList<int> constIntList;
+ QList<MemFnTester> classList;
+ const QList<MemFnTester> constMemFnTesterList;
+
+ QtConcurrent::mapped(intList, fnConst);
+ QtConcurrent::mapped(constIntList, fnConst);
+ QtConcurrent::mapped(classList, &MemFnTester::fnConst);
+ QtConcurrent::mapped(constMemFnTesterList, &MemFnTester::fnConst);
+
+ QtConcurrent::blockingMapped<QVector<int> >(intList, fnConst);
+ QtConcurrent::blockingMapped<QVector<int> >(constIntList, fnConst);
+ QtConcurrent::blockingMapped<QVector<MemFnTester> >(classList, &MemFnTester::fnConst);
+ QtConcurrent::blockingMapped<QVector<MemFnTester> >(constMemFnTesterList, &MemFnTester::fnConst);
+
+ QtConcurrent::blockingMapped<QList<QString> >(intList, changeTypeConst);
+ QtConcurrent::blockingMapped<QList<QString> >(constIntList, changeTypeConst);
+ QtConcurrent::blockingMapped<QList<QString> >(classList, &MemFnTester::changeTypeConst);
+ QtConcurrent::blockingMapped<QList<QString> >(constMemFnTesterList, &MemFnTester::changeTypeConst);
+
+ QStringList stringList;
+ const QStringList constStringList;
+ // QtConcurrent::map(stringList, changeTypeQStringListConst);
+ // QtConcurrent::map(intList, changeTypeNonConst);
+ // QList<QString>(QtConcurrent::map(constStringList, changeTypeQStringList));
+ // QtConcurrent::map(classList, &MemFnTester::changeType);
+ // QtConcurrent::map(classList, &MemFnTester::changeTypeConst);
+ // QtConcurrent::map(constMemFnTesterList, &MemFnTester::changeTypeConst);
+}
+
+QAtomicInt currentInstanceCount;
+QAtomicInt peakInstanceCount;
+class InstanceCounter
+{
+public:
+ inline InstanceCounter()
+ { currentInstanceCount.fetchAndAddRelaxed(1); updatePeak(); }
+ inline ~InstanceCounter()
+ { currentInstanceCount.fetchAndAddRelaxed(-1);}
+ inline InstanceCounter(const InstanceCounter &)
+ { currentInstanceCount.fetchAndAddRelaxed(1); updatePeak(); }
+
+ void updatePeak()
+ {
+ forever {
+ const int localPeak = peakInstanceCount;
+ const int localCurrent = currentInstanceCount;
+ if (localCurrent <= localPeak)
+ break;
+ if (peakInstanceCount.testAndSetOrdered(localPeak, localCurrent))
+ break;
+ }
+ }
+};
+
+InstanceCounter slowMap(const InstanceCounter &in)
+{
+ QTest::qSleep(2);
+ return in;
+}
+
+InstanceCounter fastMap(const InstanceCounter &in)
+{
+ QTest::qSleep(rand() % 2 + 1);
+// qDebug() << "map " << QThread::currentThread();
+ return in;
+}
+
+void slowReduce(int &result, const InstanceCounter&)
+{
+ QTest::qSleep(rand() % 4 + 1);
+// qDebug() << "reduce" << QThread::currentThread();
+ ++result;
+}
+
+void fastReduce(int &result, const InstanceCounter&)
+{
+ ++result;
+}
+
+void tst_QtConcurrentMap::throttling()
+{
+ const int itemcount = 100;
+ const int allowedTemporaries = QThread::idealThreadCount() * 40;
+
+ {
+ currentInstanceCount = 0;
+ peakInstanceCount = 0;
+
+ QList<InstanceCounter> instances;
+ for (int i = 0; i < itemcount; ++i)
+ instances.append(InstanceCounter());
+
+ QCOMPARE((int)currentInstanceCount, itemcount);
+
+ int results = QtConcurrent::blockingMappedReduced(instances, slowMap, fastReduce);
+ QCOMPARE(results, itemcount);
+ qDebug() << (int)currentInstanceCount;
+ qDebug() << (int)peakInstanceCount;
+ QCOMPARE(int(currentInstanceCount), itemcount);
+ QVERIFY(int(peakInstanceCount) < itemcount + allowedTemporaries);
+ }
+
+ {
+ QCOMPARE(int(currentInstanceCount), 0);
+ peakInstanceCount = 0;
+
+ QList<InstanceCounter> instances;
+ for (int i = 0; i < itemcount; ++i)
+ instances.append(InstanceCounter());
+
+ QCOMPARE(int(currentInstanceCount), itemcount);
+ int results = QtConcurrent::blockingMappedReduced(instances, fastMap, slowReduce);
+
+ QCOMPARE(results, itemcount);
+ qDebug() << (int)currentInstanceCount;
+ qDebug() << (int)peakInstanceCount;
+ QCOMPARE((int)currentInstanceCount, itemcount);
+ QVERIFY(int(peakInstanceCount) < itemcount + allowedTemporaries);
+ }
+}
+
+#ifndef QT_NO_EXCEPTIONS
+void throwMapper(int &e)
+{
+ Q_UNUSED(e);
+ throw QtConcurrent::Exception();
+}
+
+void tst_QtConcurrentMap::exceptions()
+{
+ bool caught = false;
+ try {
+ QList<int> list = QList<int>() << 1 << 2 << 3;
+ QtConcurrent::map(list, throwMapper).waitForFinished();
+ } catch (const Exception &) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+}
+#endif
+
+int mapper(const int &i)
+{
+ QTest::qWait(1);
+ return i;
+}
+
+void tst_QtConcurrentMap::incrementalResults()
+{
+ const int count = 200;
+ QList<int> ints;
+ for (int i=0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::mapped(ints, mapper);
+
+ QList<int> results;
+
+ while (future.isFinished() == false) {
+ for (int i = 0; i < future.resultCount(); ++i) {
+ results += future.resultAt(i);
+ }
+
+ QTest::qWait(1);
+ }
+
+ QCOMPARE(future.isFinished(), true);
+ QCOMPARE(future.resultCount(), count);
+ QCOMPARE(future.results().count(), count);
+}
+
+/*
+ Test that mapped does not cause deep copies when holding
+ references to Qt containers.
+*/
+void tst_QtConcurrentMap::noDetatch()
+{
+ {
+ QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::mapped(l, mapper).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::mappedReduced(l, mapper, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::map(l, multiplyBy2Immutable).waitForFinished();
+ QVERIFY(l.isDetached() == true);
+ QVERIFY(ll.isDetached() == true);
+ }
+ {
+ const QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ const QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::mapped(l, mapper).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::mappedReduced(l, mapper, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+ }
+
+}
+
+void tst_QtConcurrentMap::stlContainers()
+{
+#ifdef QT_NO_STL
+ QSKIP("Qt compiled without STL support", SkipAll);
+#elif defined(Q_COMPILER_RVALUE_REFS)
+ //mapped uses &Container::push_back, but in c++0x, std::vector has two overload of it
+ // meaning it is not possible to take the address of that function anymore.
+ QSKIP("mapped do not work with c++0x stl vector", SkipAll);
+#else
+ std::vector<int> vector;
+ vector.push_back(1);
+ vector.push_back(2);
+
+ std::vector<int> vector2 = QtConcurrent::blockingMapped<std::vector<int> >(vector, mapper);
+ QCOMPARE(vector2.size(), (std::vector<int>::size_type)(2));
+
+ std::list<int> list;
+ list.push_back(1);
+ list.push_back(2);
+
+ std::list<int> list2 = QtConcurrent::blockingMapped<std::list<int> >(list, mapper);
+ QCOMPARE(list2.size(), (std::vector<int>::size_type)(2));
+
+ QtConcurrent::mapped(list, mapper).waitForFinished();
+
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+#endif
+}
+
+InstanceCounter ic_fn(const InstanceCounter & ic)
+{
+ return InstanceCounter(ic);
+};
+
+// Verify that held results are deleted when a future is
+// assigned over with operator ==
+void tst_QtConcurrentMap::qFutureAssignmentLeak()
+{
+ currentInstanceCount = 0;
+ peakInstanceCount = 0;
+ QFuture<InstanceCounter> future;
+ {
+ QList<InstanceCounter> list;
+ for (int i=0;i<1000;++i)
+ list += InstanceCounter();
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+ }
+
+ QCOMPARE(int(currentInstanceCount), 1000);
+ future = QFuture<InstanceCounter>();
+ QCOMPARE(int(currentInstanceCount), 0);
+}
+
+inline void increment(int &num)
+{
+ ++num;
+}
+
+inline int echo(const int &num)
+{
+ return num;
+}
+
+void add(int &result, const int &sum)
+{
+ result += sum;
+}
+
+void tst_QtConcurrentMap::stressTest()
+{
+ const int listSize = 1000;
+ const int sum = (listSize - 1) * (listSize / 2);
+ QList<int> list;
+
+
+ for (int i = 0; i < listSize; ++i) {
+ list.append(i);
+ }
+
+ for (int i =0 ; i < 100; ++i) {
+ QList<int> result = QtConcurrent::blockingMapped(list, echo);
+ for (int j = 0; j < listSize; ++j)
+ QCOMPARE(result.at(j), j);
+ }
+
+ for (int i = 0 ; i < 100; ++i) {
+ int result = QtConcurrent::blockingMappedReduced(list, echo, add);
+ QCOMPARE(result, sum);
+ }
+
+ for (int i = 0 ; i < 100; ++i) {
+ QtConcurrent::map(list, increment).waitForFinished();
+ for (int j = 0; j < listSize; ++j)
+ QCOMPARE(list.at(j), i + j + 1);
+ }
+}
+
+QTEST_MAIN(tst_QtConcurrentMap)
+
+#else
+
+void tst_QtConcurrentMap::map() {}
+void tst_QtConcurrentMap::blocking_map() {}
+void tst_QtConcurrentMap::mapped() {}
+void tst_QtConcurrentMap::blocking_mapped() {}
+void tst_QtConcurrentMap::mappedReduced() {}
+void tst_QtConcurrentMap::blocking_mappedReduced() {}
+void tst_QtConcurrentMap::assignResult() {}
+void tst_QtConcurrentMap::functionOverloads() {}
+#ifndef QT_NO_EXCEPTIONS
+void tst_QtConcurrentMap::exceptions() {}
+#endif
+void tst_QtConcurrentMap::incrementalResults() {}
+void tst_QtConcurrentMap::stressTest() {}
+void tst_QtConcurrentMap::throttling() {}
+void tst_QtConcurrentMap::stlContainers() {}
+void tst_QtConcurrentMap::noDetatch() {}
+
+QTEST_NOOP_MAIN
+
+#endif
+
+#include "tst_qtconcurrentmap.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro b/tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro
new file mode 100644
index 0000000000..8bc20c3f13
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+DEFINES += QT_STRICT_ITERATORS
+SOURCES += tst_qtconcurrentresultstore.cpp
+QT = core core-private
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp b/tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp
new file mode 100644
index 0000000000..1728be68fe
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp
@@ -0,0 +1,491 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <qtconcurrentresultstore.h>
+
+using namespace QtConcurrent;
+
+class tst_QtConcurrentResultStore : public QObject
+{
+ Q_OBJECT
+public slots:
+ void init();
+private slots:
+ void construction();
+ void iterators();
+ void addResult();
+ void addResults();
+ void resultIndex();
+ void resultAt();
+ void contains();
+ void filterMode();
+ void addCanceledResult();
+ void count();
+private:
+ int int0;
+ int int1;
+ int int2;
+ QVector<int> vec0;
+ QVector<int> vec1;
+};
+
+void tst_QtConcurrentResultStore::init()
+{
+ int0 = 0;
+ int1 = 1;
+ int2 = 2;
+ vec0 = QVector<int>() << 2 << 3;
+ vec1 = QVector<int>() << 4 << 5;
+}
+
+void tst_QtConcurrentResultStore::construction()
+{
+ ResultStore<int> store;
+ QCOMPARE(store.count(), 0);
+}
+
+void tst_QtConcurrentResultStore::iterators()
+{
+ {
+ ResultStore<int> store;
+ ResultIteratorBase it = store.begin();
+ QVERIFY(store.begin() == store.end());
+ QVERIFY(store.resultAt(0) == store.end());
+ QVERIFY(store.resultAt(1) == store.end());
+ }
+ {
+ ResultStoreBase storebase;
+ storebase.addResult(-1, &int0); // note to self: adding a pointer to the stack here is ok since
+ storebase.addResult(1, &int1); // ResultStoreBase does not take ownership, only ResultStore<> does.
+ ResultIteratorBase it = storebase.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == storebase.begin());
+ QVERIFY(it != storebase.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != storebase.begin());
+ QVERIFY(it != storebase.end());
+
+ ++it;
+ QVERIFY(it != storebase.begin());
+ QVERIFY(it == storebase.end());
+ }
+}
+
+void tst_QtConcurrentResultStore::addResult()
+{
+ {
+ // test addResult return value
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ QCOMPARE(store.addResult(0, &int0), 0);
+ QCOMPARE(store.count(), 1); // result 0 becomes available
+ QCOMPARE(store.contains(0), true);
+
+ QCOMPARE(store.addResult(2, &int0), 2);
+ QCOMPARE(store.count(), 1);
+ QCOMPARE(store.contains(2), false);
+
+ QCOMPARE(store.addCanceledResult(1), 1);
+ QCOMPARE(store.count(), 2); // result 2 is renamed to 1 and becomes available
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+
+ QCOMPARE(store.addResult(3, &int0), 3);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(2), true);
+
+ QCOMPARE(store.addResult(6, &int0), 6);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.addResult(7, &int0), 7);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(3), false);
+
+ QCOMPARE(store.addCanceledResult(4), 4);
+ QCOMPARE(store.addCanceledResult(5), 5);
+ QCOMPARE(store.count(), 5); // 6 and 7 is renamed to 3 and 4 and becomes available
+
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), true);
+
+ QCOMPARE(store.addResult(8, &int0), 8);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.count(), 6);
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+}
+
+void tst_QtConcurrentResultStore::addResults()
+{
+
+ ResultStoreBase store;
+ store.addResults(-1, &vec0, 2, 2);
+ store.addResults(-1, &vec1, 2, 2);
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+
+ ++it;
+ QVERIFY(it == store.end());
+}
+
+void tst_QtConcurrentResultStore::resultIndex()
+{
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(-1, &int1);
+
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+ QVERIFY(it != store.end());
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+ QVERIFY(it != store.end());
+ ++it;
+ QVERIFY(it == store.end());
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(3).value(), int1);
+}
+
+void tst_QtConcurrentResultStore::resultAt()
+{
+ {
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(200, &int1);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(200).value(), int1);
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int1);
+ store.addResult(0, &int0);
+ store.addResult(-1, &int2);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), int1);
+ QCOMPARE(store.resultAt(2).value(), int2);
+ }
+}
+
+void tst_QtConcurrentResultStore::contains()
+{
+ {
+ ResultStore<int> store;
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(INT_MAX), false);
+ store.addResult(1, &int1);
+ QVERIFY(store.contains(int1));
+ store.addResult(0, &int0);
+ QVERIFY(store.contains(int0));
+ store.addResult(-1, &int2);
+ QVERIFY(store.contains(int2));
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), false);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addCanceledResult(0);
+ store.addCanceledResult(2);
+ store.addCanceledResults(4, 2);
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addCanceledResult(0);
+ QCOMPARE(store.contains(0), false);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), false);
+ }
+}
+
+void tst_QtConcurrentResultStore::filterMode()
+{
+ // Test filter mode, where "gaps" in the result array aren't allowed.
+ ResultStore<int> store;
+ QCOMPARE(store.filterMode(), false);
+ store.setFilterMode(true);
+ QVERIFY(store.filterMode());
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int2); // add result at index 2
+ QCOMPARE(store.contains(2), false); // but 1 is missing, so this 2 won't be reported yet.
+
+ store.addResult(1, &int1);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true); // 2 should be visible now.
+
+ store.addResult(4, &int0);
+ store.addResult(5, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(3, &int0); // adding 3 makes 4 and 5 visible
+ QCOMPARE(store.contains(4), true);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(6, &int0); // adding 6 makes 7 visible
+
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ QCOMPARE(store.contains(8), false);
+}
+
+void tst_QtConcurrentResultStore::addCanceledResult()
+{
+ // test canceled results
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.contains(2), false);
+
+ store.addCanceledResult(1); // report no result at 1
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true); // 2 gets renamed to 1
+ QCOMPARE(store.contains(2), false);
+
+ store.addResult(3, &int0);
+ QCOMPARE(store.contains(2), true); //3 gets renamed to 2
+
+ store.addResult(6, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(3), false);
+
+ store.addCanceledResult(4);
+ store.addCanceledResult(5);
+
+ QCOMPARE(store.contains(3), true); //6 gets renamed to 3
+ QCOMPARE(store.contains(4), true); //7 gets renamed to 4
+
+ store.addResult(8, &int0);
+ QCOMPARE(store.contains(5), true); //8 gets renamed to 4
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+}
+
+void tst_QtConcurrentResultStore::count()
+{
+ {
+ // test resultCount in non-filtered mode. It should always be possible
+ // to iterate through the results 0 to resultCount.
+ ResultStore<int> store;
+ store.addResult(0, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(2, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 4);
+ }
+ {
+ ResultStore<int> store;
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 5);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addCanceledResult(2);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2); // results at 3 and 4 become available at index 0, 1
+
+ store.addResult(5, &int0);
+ QCOMPARE(store.count(), 3);// result 5 becomes available at index 2
+ }
+}
+
+QTEST_MAIN(tst_QtConcurrentResultStore)
+#include "tst_qtconcurrentresultstore.moc"
diff --git a/tests/auto/qtconcurrentrun/.gitignore b/tests/auto/corelib/concurrent/qtconcurrentrun/.gitignore
index d7a8334ec4..d7a8334ec4 100644
--- a/tests/auto/qtconcurrentrun/.gitignore
+++ b/tests/auto/corelib/concurrent/qtconcurrentrun/.gitignore
diff --git a/tests/auto/qtconcurrentrun/qtconcurrentrun.pro b/tests/auto/corelib/concurrent/qtconcurrentrun/qtconcurrentrun.pro
index 24576048e9..24576048e9 100644
--- a/tests/auto/qtconcurrentrun/qtconcurrentrun.pro
+++ b/tests/auto/corelib/concurrent/qtconcurrentrun/qtconcurrentrun.pro
diff --git a/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/corelib/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
index cacb09aae1..cacb09aae1 100644
--- a/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
+++ b/tests/auto/corelib/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
diff --git a/tests/auto/qtconcurrentthreadengine/.gitignore b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/.gitignore
index a2e2896246..a2e2896246 100644
--- a/tests/auto/qtconcurrentthreadengine/.gitignore
+++ b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/.gitignore
diff --git a/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
index bbfcf5ebe3..bbfcf5ebe3 100644
--- a/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
+++ b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
diff --git a/tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
new file mode 100644
index 0000000000..f22a2ed64b
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
@@ -0,0 +1,536 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtconcurrentthreadengine.h>
+#include <qtconcurrentexception.h>
+#include <QThread>
+#include <QtTest/QtTest>
+#include "../qfuture/versioncheck.h"
+
+#ifndef QT_NO_CONCURRENT_TEST
+
+using namespace QtConcurrent;
+
+class tst_QtConcurrentThreadEngine: public QObject
+{
+ Q_OBJECT
+public:
+ void threadCount();
+private slots:
+ void runDirectly();
+ void result();
+ void runThroughStarter();
+ void cancel();
+ void throttle();
+ void multipleResults();
+ void stresstest();
+ void cancelQueuedSlowUser();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
+};
+
+
+class PrintUser : public ThreadEngine<void>
+{
+public:
+ ThreadFunctionResult threadFunction()
+ {
+ QTest::qSleep(50);
+ QTest::qSleep(100);
+ return ThreadFinished;
+ }
+};
+
+void tst_QtConcurrentThreadEngine::runDirectly()
+{
+ {
+ PrintUser engine;
+ engine.startSingleThreaded();
+ engine.startBlocking();
+ }
+ {
+ PrintUser *engine = new PrintUser();
+ QFuture<void> f = engine->startAsynchronously();
+ f.waitForFinished();
+ }
+}
+
+class StringResultUser : public ThreadEngine<QString>
+{
+public:
+ typedef QString ResultType;
+ StringResultUser()
+ : done(false) { }
+
+ bool shouldStartThread()
+ {
+ return !done;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ done = true;
+ return ThreadFinished;
+ }
+
+ QString *result()
+ {
+ foo = "Foo";
+ return &foo;
+ }
+ QString foo;
+ bool done;
+};
+
+void tst_QtConcurrentThreadEngine::result()
+{
+ StringResultUser engine;
+ QCOMPARE(*engine.startBlocking(), QString("Foo"));
+}
+
+class VoidResultUser : public ThreadEngine<void>
+{
+public:
+ bool shouldStartThread()
+ {
+ return !done;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ done = true;
+ return ThreadFinished;
+ }
+
+ void *result()
+ {
+ return 0;
+ }
+ bool done;
+};
+
+void tst_QtConcurrentThreadEngine::runThroughStarter()
+{
+ {
+ ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser());
+ QFuture<QString> f = starter.startAsynchronously();
+ QCOMPARE(f.result(), QString("Foo"));
+ }
+
+ {
+ ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser());
+ QString str = starter.startBlocking();
+ QCOMPARE(str, QString("Foo"));
+ }
+}
+
+class CancelUser : public ThreadEngine<void>
+{
+public:
+ void *result()
+ {
+ return 0;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ while (this->isCanceled() == false)
+ {
+ QTest::qSleep(10);
+ }
+ return ThreadFinished;
+ }
+};
+
+void tst_QtConcurrentThreadEngine::cancel()
+{
+ {
+ CancelUser *engine = new CancelUser();
+ QFuture<void> f = engine->startAsynchronously();
+ f.cancel();
+ f.waitForFinished();
+ }
+ {
+ CancelUser *engine = new CancelUser();
+ QFuture<void> f = engine->startAsynchronously();
+ QTest::qSleep(10);
+ f.cancel();
+ f.waitForFinished();
+ }
+}
+
+QAtomicInt count;
+class ThrottleAlwaysUser : public ThreadEngine<void>
+{
+public:
+ ThrottleAlwaysUser()
+ {
+ count = initialCount = 100;
+ finishing = false;
+ }
+
+ bool shouldStartThread()
+ {
+ return !finishing;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ forever {
+ const int local = count;
+ if (local == 0) {
+ finishing = true;
+ return ThreadFinished;
+ }
+
+ if (count.testAndSetOrdered(local, local - 1))
+ break;
+ }
+ return ThrottleThread;
+ }
+
+ bool finishing;
+ int initialCount;
+};
+
+// Test that a user task with a thread function that always
+// want to be throttled still completes. The thread engine
+// should make keep one thread running at all times.
+void tst_QtConcurrentThreadEngine::throttle()
+{
+ const int repeats = 10;
+ for (int i = 0; i < repeats; ++i) {
+ QFuture<void> f = (new ThrottleAlwaysUser())->startAsynchronously();
+ f.waitForFinished();
+ QCOMPARE(int(count), 0);
+ }
+
+ for (int i = 0; i < repeats; ++i) {
+ ThrottleAlwaysUser t;
+ t.startBlocking();
+ QCOMPARE(int(count), 0);
+ }
+}
+
+QSet<QThread *> threads;
+QMutex mutex;
+class ThreadCountUser : public ThreadEngine<void>
+{
+public:
+ ThreadCountUser(bool finishImmediately = false)
+ {
+ threads.clear();
+ finishing = finishImmediately;
+ }
+
+ bool shouldStartThread()
+ {
+ return !finishing;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ {
+ QMutexLocker lock(&mutex);
+ threads.insert(QThread::currentThread());
+ }
+ QTest::qSleep(10);
+ finishing = true;
+ return ThreadFinished;
+ }
+
+ bool finishing;
+};
+
+void tst_QtConcurrentThreadEngine::threadCount()
+{
+ const int repeats = 10;
+ for (int i = 0; i < repeats; ++i) {
+ ThreadCountUser t;
+ t.startBlocking();
+ QCOMPARE(threads.count(), QThreadPool::globalInstance()->maxThreadCount() + 1); // +1 for the main thread.
+
+ (new ThreadCountUser())->startAsynchronously().waitForFinished();
+ QCOMPARE(threads.count(), QThreadPool::globalInstance()->maxThreadCount());
+ }
+
+ // Set the finish flag immediately, this should give us one thread only.
+ for (int i = 0; i < repeats; ++i) {
+ ThreadCountUser t(true /*finishImmediately*/);
+ t.startBlocking();
+ QCOMPARE(threads.count(), 1);
+
+ (new ThreadCountUser(true /*finishImmediately*/))->startAsynchronously().waitForFinished();
+ QCOMPARE(threads.count(), 1);
+ }
+}
+
+class MultipleResultsUser : public ThreadEngine<int>
+{
+public:
+ bool shouldStartThread()
+ {
+ return false;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ for (int i = 0; i < 10; ++i)
+ this->reportResult(&i);
+ return ThreadFinished;
+ }
+};
+
+
+void tst_QtConcurrentThreadEngine::multipleResults()
+{
+ MultipleResultsUser *engine = new MultipleResultsUser();
+ QFuture<int> f = engine->startAsynchronously();
+ QCOMPARE(f.results().count() , 10);
+ QCOMPARE(f.resultAt(0), 0);
+ QCOMPARE(f.resultAt(5), 5);
+ QCOMPARE(f.resultAt(9), 9);
+ f.waitForFinished();
+}
+
+
+class NoThreadsUser : public ThreadEngine<void>
+{
+public:
+ bool shouldStartThread()
+ {
+ return false;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ return ThreadFinished;
+ }
+
+ void *result()
+ {
+ return 0;
+ }
+};
+
+void tst_QtConcurrentThreadEngine::stresstest()
+{
+ const int times = 20000;
+
+ for (int i = 0; i < times; ++i) {
+ VoidResultUser *engine = new VoidResultUser();
+ engine->startAsynchronously().waitForFinished();
+ }
+
+ for (int i = 0; i < times; ++i) {
+ VoidResultUser *engine = new VoidResultUser();
+ engine->startAsynchronously();
+ }
+
+ for (int i = 0; i < times; ++i) {
+ VoidResultUser *engine = new VoidResultUser();
+ engine->startAsynchronously().waitForFinished();
+ }
+}
+
+const int sleepTime = 20;
+class SlowUser : public ThreadEngine<void>
+{
+public:
+ bool shouldStartThread() { return false; }
+ ThreadFunctionResult threadFunction() { QTest::qSleep(sleepTime); return ThreadFinished; }
+};
+
+void tst_QtConcurrentThreadEngine::cancelQueuedSlowUser()
+{
+ const int times = 100;
+
+ QTime t;
+ t.start();
+
+ {
+ QList<QFuture<void> > futures;
+ for (int i = 0; i < times; ++i) {
+ SlowUser *engine = new SlowUser();
+ futures.append(engine->startAsynchronously());
+ }
+
+ foreach(QFuture<void> future, futures)
+ future.cancel();
+ }
+
+ QVERIFY(t.elapsed() < (sleepTime * times) / 2);
+}
+
+#ifndef QT_NO_EXCEPTIONS
+
+class QtConcurrentExceptionThrower : public ThreadEngine<void>
+{
+public:
+ QtConcurrentExceptionThrower(QThread *blockThread = 0)
+ {
+ this->blockThread = blockThread;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ QTest::qSleep(50);
+ throw QtConcurrent::Exception();
+ return ThreadFinished;
+ }
+ QThread *blockThread;
+};
+
+class UnrelatedExceptionThrower : public ThreadEngine<void>
+{
+public:
+ UnrelatedExceptionThrower(QThread *blockThread = 0)
+ {
+ this->blockThread = blockThread;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ QTest::qSleep(50);
+ throw int();
+ return ThreadFinished;
+ }
+ QThread *blockThread;
+};
+
+void tst_QtConcurrentThreadEngine::exceptions()
+{
+ // Asynchronous mode:
+ {
+ bool caught = false;
+ try {
+ QtConcurrentExceptionThrower *e = new QtConcurrentExceptionThrower();
+ QFuture<void> f = e->startAsynchronously();
+ f.waitForFinished();
+ } catch (const Exception &) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+
+ // Blocking mode:
+ // test throwing the exception from a worker thread.
+ {
+ bool caught = false;
+ try {
+ QtConcurrentExceptionThrower e(QThread::currentThread());
+ e.startBlocking();
+ } catch (const Exception &) {
+ caught = true;
+ }
+
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+
+ // test throwing the exception from the main thread (different code path)
+ {
+ bool caught = false;
+ try {
+ QtConcurrentExceptionThrower e(0);
+ e.startBlocking();
+ } catch (const Exception &) {
+ caught = true;
+ }
+
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+
+ // Asynchronous mode:
+ {
+ bool caught = false;
+ try {
+ UnrelatedExceptionThrower *e = new UnrelatedExceptionThrower();
+ QFuture<void> f = e->startAsynchronously();
+ f.waitForFinished();
+ } catch (const QtConcurrent::UnhandledException &) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+
+ // Blocking mode:
+ // test throwing the exception from a worker thread.
+ {
+ bool caught = false;
+ try {
+ UnrelatedExceptionThrower e(QThread::currentThread());
+ e.startBlocking();
+ } catch (const QtConcurrent::UnhandledException &) {
+ caught = true;
+ }
+
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+
+ // test throwing the exception from the main thread (different code path)
+ {
+ bool caught = false;
+ try {
+ UnrelatedExceptionThrower e(0);
+ e.startBlocking();
+ } catch (const QtConcurrent::UnhandledException &) {
+ caught = true;
+ }
+
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+}
+
+#endif
+
+QTEST_MAIN(tst_QtConcurrentThreadEngine)
+
+#include "tst_qtconcurrentthreadengine.moc"
+
+#else
+QTEST_NOOP_MAIN
+#endif
diff --git a/tests/auto/qthreadpool/.gitignore b/tests/auto/corelib/concurrent/qthreadpool/.gitignore
index 16105821a2..16105821a2 100644
--- a/tests/auto/qthreadpool/.gitignore
+++ b/tests/auto/corelib/concurrent/qthreadpool/.gitignore
diff --git a/tests/auto/qthreadpool/qthreadpool.pro b/tests/auto/corelib/concurrent/qthreadpool/qthreadpool.pro
index dbaeb208dd..dbaeb208dd 100644
--- a/tests/auto/qthreadpool/qthreadpool.pro
+++ b/tests/auto/corelib/concurrent/qthreadpool/qthreadpool.pro
diff --git a/tests/auto/qthreadpool/tst_qthreadpool.cpp b/tests/auto/corelib/concurrent/qthreadpool/tst_qthreadpool.cpp
index 49c517a569..49c517a569 100644
--- a/tests/auto/qthreadpool/tst_qthreadpool.cpp
+++ b/tests/auto/corelib/concurrent/qthreadpool/tst_qthreadpool.cpp
diff --git a/tests/auto/corelib/corelib.pro b/tests/auto/corelib/corelib.pro
new file mode 100644
index 0000000000..b9063e5306
--- /dev/null
+++ b/tests/auto/corelib/corelib.pro
@@ -0,0 +1,13 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ animation \
+ codecs \
+ concurrent \
+ global \
+ io \
+ kernel \
+ plugin \
+ statemachine \
+ thread \
+ tools \
+ xml
diff --git a/tests/auto/corelib/global/global.pro b/tests/auto/corelib/global/global.pro
new file mode 100644
index 0000000000..e9b547be68
--- /dev/null
+++ b/tests/auto/corelib/global/global.pro
@@ -0,0 +1,8 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qflags \
+ q_func_info \
+ qgetputenv \
+ qglobal \
+ qnumeric \
+ qrand
diff --git a/tests/auto/q_func_info/.gitignore b/tests/auto/corelib/global/q_func_info/.gitignore
index ff7d730764..ff7d730764 100644
--- a/tests/auto/q_func_info/.gitignore
+++ b/tests/auto/corelib/global/q_func_info/.gitignore
diff --git a/tests/auto/q_func_info/q_func_info.pro b/tests/auto/corelib/global/q_func_info/q_func_info.pro
index 64f08d4d8d..64f08d4d8d 100644
--- a/tests/auto/q_func_info/q_func_info.pro
+++ b/tests/auto/corelib/global/q_func_info/q_func_info.pro
diff --git a/tests/auto/q_func_info/tst_q_func_info.cpp b/tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp
index 0a2a259462..0a2a259462 100644
--- a/tests/auto/q_func_info/tst_q_func_info.cpp
+++ b/tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp
diff --git a/tests/auto/qflags/.gitignore b/tests/auto/corelib/global/qflags/.gitignore
index 52e998ad15..52e998ad15 100644
--- a/tests/auto/qflags/.gitignore
+++ b/tests/auto/corelib/global/qflags/.gitignore
diff --git a/tests/auto/qflags/qflags.pro b/tests/auto/corelib/global/qflags/qflags.pro
index 097a218a5a..097a218a5a 100644
--- a/tests/auto/qflags/qflags.pro
+++ b/tests/auto/corelib/global/qflags/qflags.pro
diff --git a/tests/auto/qflags/tst_qflags.cpp b/tests/auto/corelib/global/qflags/tst_qflags.cpp
index 85e64a6d63..85e64a6d63 100644
--- a/tests/auto/qflags/tst_qflags.cpp
+++ b/tests/auto/corelib/global/qflags/tst_qflags.cpp
diff --git a/tests/auto/qgetputenv/.gitignore b/tests/auto/corelib/global/qgetputenv/.gitignore
index c045a3cc03..c045a3cc03 100644
--- a/tests/auto/qgetputenv/.gitignore
+++ b/tests/auto/corelib/global/qgetputenv/.gitignore
diff --git a/tests/auto/qgetputenv/qgetputenv.pro b/tests/auto/corelib/global/qgetputenv/qgetputenv.pro
index df94f14473..df94f14473 100644
--- a/tests/auto/qgetputenv/qgetputenv.pro
+++ b/tests/auto/corelib/global/qgetputenv/qgetputenv.pro
diff --git a/tests/auto/qgetputenv/tst_qgetputenv.cpp b/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp
index 9ad98122bc..9ad98122bc 100644
--- a/tests/auto/qgetputenv/tst_qgetputenv.cpp
+++ b/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp
diff --git a/tests/auto/qglobal/.gitignore b/tests/auto/corelib/global/qglobal/.gitignore
index 5b3248d6cf..5b3248d6cf 100644
--- a/tests/auto/qglobal/.gitignore
+++ b/tests/auto/corelib/global/qglobal/.gitignore
diff --git a/tests/auto/qglobal/qglobal.pro b/tests/auto/corelib/global/qglobal/qglobal.pro
index a4dffac815..a4dffac815 100644
--- a/tests/auto/qglobal/qglobal.pro
+++ b/tests/auto/corelib/global/qglobal/qglobal.pro
diff --git a/tests/auto/qglobal/tst_qglobal.cpp b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp
index 85aa03f642..85aa03f642 100644
--- a/tests/auto/qglobal/tst_qglobal.cpp
+++ b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp
diff --git a/tests/auto/qnumeric/.gitignore b/tests/auto/corelib/global/qnumeric/.gitignore
index c00531dd33..c00531dd33 100644
--- a/tests/auto/qnumeric/.gitignore
+++ b/tests/auto/corelib/global/qnumeric/.gitignore
diff --git a/tests/auto/qnumeric/qnumeric.pro b/tests/auto/corelib/global/qnumeric/qnumeric.pro
index c0af962a79..c0af962a79 100644
--- a/tests/auto/qnumeric/qnumeric.pro
+++ b/tests/auto/corelib/global/qnumeric/qnumeric.pro
diff --git a/tests/auto/qnumeric/tst_qnumeric.cpp b/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp
index 8eb4e468a1..8eb4e468a1 100644
--- a/tests/auto/qnumeric/tst_qnumeric.cpp
+++ b/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp
diff --git a/tests/auto/qrand/.gitignore b/tests/auto/corelib/global/qrand/.gitignore
index e8ec2ebfd1..e8ec2ebfd1 100644
--- a/tests/auto/qrand/.gitignore
+++ b/tests/auto/corelib/global/qrand/.gitignore
diff --git a/tests/auto/qrand/qrand.pro b/tests/auto/corelib/global/qrand/qrand.pro
index 0db8af821c..0db8af821c 100644
--- a/tests/auto/qrand/qrand.pro
+++ b/tests/auto/corelib/global/qrand/qrand.pro
diff --git a/tests/auto/qrand/tst_qrand.cpp b/tests/auto/corelib/global/qrand/tst_qrand.cpp
index 7ac778211c..7ac778211c 100644
--- a/tests/auto/qrand/tst_qrand.cpp
+++ b/tests/auto/corelib/global/qrand/tst_qrand.cpp
diff --git a/tests/auto/corelib/io/io.pro b/tests/auto/corelib/io/io.pro
new file mode 100644
index 0000000000..cbe2b609b9
--- /dev/null
+++ b/tests/auto/corelib/io/io.pro
@@ -0,0 +1,23 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qabstractfileengine \
+ qbuffer \
+ qdatastream \
+ qdebug \
+ qdir \
+ qdiriterator \
+ qfile \
+ qfileinfo \
+ qfilesystementry \
+ qfilesystemwatcher \
+ qiodevice \
+ qprocess \
+ qprocessenvironment \
+ qresourceengine \
+ qsettings \
+ qtemporaryfile \
+ qtextstream \
+ qurl \
+
+!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ qfileinfo
diff --git a/tests/auto/qabstractfileengine/qabstractfileengine.pro b/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.pro
index 870473a4cb..870473a4cb 100644
--- a/tests/auto/qabstractfileengine/qabstractfileengine.pro
+++ b/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.pro
diff --git a/tests/auto/qabstractfileengine/qabstractfileengine.qrc b/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.qrc
index 5401b086b2..5401b086b2 100644
--- a/tests/auto/qabstractfileengine/qabstractfileengine.qrc
+++ b/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.qrc
diff --git a/tests/auto/qabstractfileengine/resources/file.txt b/tests/auto/corelib/io/qabstractfileengine/resources/file.txt
index 8a03e0e55f..8a03e0e55f 100644
--- a/tests/auto/qabstractfileengine/resources/file.txt
+++ b/tests/auto/corelib/io/qabstractfileengine/resources/file.txt
diff --git a/tests/auto/qabstractfileengine/tst_qabstractfileengine.cpp b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp
index a81633341d..a81633341d 100644
--- a/tests/auto/qabstractfileengine/tst_qabstractfileengine.cpp
+++ b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp
diff --git a/tests/auto/qbuffer/.gitignore b/tests/auto/corelib/io/qbuffer/.gitignore
index 40447ec0db..40447ec0db 100644
--- a/tests/auto/qbuffer/.gitignore
+++ b/tests/auto/corelib/io/qbuffer/.gitignore
diff --git a/tests/auto/qbuffer/qbuffer.pro b/tests/auto/corelib/io/qbuffer/qbuffer.pro
index b768eb82d8..b768eb82d8 100644
--- a/tests/auto/qbuffer/qbuffer.pro
+++ b/tests/auto/corelib/io/qbuffer/qbuffer.pro
diff --git a/tests/auto/qbuffer/tst_qbuffer.cpp b/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
index bf4842ff94..bf4842ff94 100644
--- a/tests/auto/qbuffer/tst_qbuffer.cpp
+++ b/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
diff --git a/tests/auto/qdatastream/.gitignore b/tests/auto/corelib/io/qdatastream/.gitignore
index cdcbaa591e..cdcbaa591e 100644
--- a/tests/auto/qdatastream/.gitignore
+++ b/tests/auto/corelib/io/qdatastream/.gitignore
diff --git a/tests/auto/qdatastream/datastream.q42 b/tests/auto/corelib/io/qdatastream/datastream.q42
index 5c83f5c7fc..5c83f5c7fc 100644
--- a/tests/auto/qdatastream/datastream.q42
+++ b/tests/auto/corelib/io/qdatastream/datastream.q42
Binary files differ
diff --git a/tests/auto/corelib/io/qdatastream/qdatastream.pro b/tests/auto/corelib/io/qdatastream/qdatastream.pro
new file mode 100644
index 0000000000..51c342c350
--- /dev/null
+++ b/tests/auto/corelib/io/qdatastream/qdatastream.pro
@@ -0,0 +1,20 @@
+load(qttest_p4)
+SOURCES += tst_qdatastream.cpp
+QT += gui widgets
+wince*: {
+ addFiles.files = datastream.q42
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ DEFINES += SRCDIR=\\\"\\\"
+} else:symbian {
+ # SRCDIR defined in code in symbian
+ addFiles.files = datastream.q42
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ TARGET.EPOCHEAPSIZE = 1000000 10000000
+ TARGET.UID3 = 0xE0340001
+ DEFINES += SYMBIAN_SRCDIR_UID=$$lower($$replace(TARGET.UID3,"0x",""))
+}else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+
diff --git a/tests/auto/qdatastream/tst_qdatastream.cpp b/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp
index e5a80d9bf3..e5a80d9bf3 100644
--- a/tests/auto/qdatastream/tst_qdatastream.cpp
+++ b/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp
diff --git a/tests/auto/qdebug/.gitignore b/tests/auto/corelib/io/qdebug/.gitignore
index af993e9625..af993e9625 100644
--- a/tests/auto/qdebug/.gitignore
+++ b/tests/auto/corelib/io/qdebug/.gitignore
diff --git a/tests/auto/qdebug/qdebug.pro b/tests/auto/corelib/io/qdebug/qdebug.pro
index 2b5716860c..2b5716860c 100644
--- a/tests/auto/qdebug/qdebug.pro
+++ b/tests/auto/corelib/io/qdebug/qdebug.pro
diff --git a/tests/auto/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
index 772fd9fd04..772fd9fd04 100644
--- a/tests/auto/qdebug/tst_qdebug.cpp
+++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
diff --git a/tests/auto/qdir/.gitignore b/tests/auto/corelib/io/qdir/.gitignore
index 889f51029c..889f51029c 100644
--- a/tests/auto/qdir/.gitignore
+++ b/tests/auto/corelib/io/qdir/.gitignore
diff --git a/tests/auto/moc/task71021/dummy b/tests/auto/corelib/io/qdir/entrylist/directory/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/moc/task71021/dummy
+++ b/tests/auto/corelib/io/qdir/entrylist/directory/dummy
diff --git a/tests/auto/qdir/entrylist/file b/tests/auto/corelib/io/qdir/entrylist/file
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/entrylist/file
+++ b/tests/auto/corelib/io/qdir/entrylist/file
diff --git a/tests/auto/qdir/qdir.pro b/tests/auto/corelib/io/qdir/qdir.pro
index fc266a2a97..fc266a2a97 100644
--- a/tests/auto/qdir/qdir.pro
+++ b/tests/auto/corelib/io/qdir/qdir.pro
diff --git a/tests/auto/qdir/qdir.qrc b/tests/auto/corelib/io/qdir/qdir.qrc
index 4c5b5af3b8..4c5b5af3b8 100644
--- a/tests/auto/qdir/qdir.qrc
+++ b/tests/auto/corelib/io/qdir/qdir.qrc
diff --git a/tests/auto/qdir/resources/entryList/file1.data b/tests/auto/corelib/io/qdir/resources/entryList/file1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/resources/entryList/file1.data
+++ b/tests/auto/corelib/io/qdir/resources/entryList/file1.data
diff --git a/tests/auto/qdir/resources/entryList/file2.data b/tests/auto/corelib/io/qdir/resources/entryList/file2.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/resources/entryList/file2.data
+++ b/tests/auto/corelib/io/qdir/resources/entryList/file2.data
diff --git a/tests/auto/qdir/resources/entryList/file3.data b/tests/auto/corelib/io/qdir/resources/entryList/file3.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/resources/entryList/file3.data
+++ b/tests/auto/corelib/io/qdir/resources/entryList/file3.data
diff --git a/tests/auto/qdir/resources/entryList/file4.nothing b/tests/auto/corelib/io/qdir/resources/entryList/file4.nothing
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/resources/entryList/file4.nothing
+++ b/tests/auto/corelib/io/qdir/resources/entryList/file4.nothing
diff --git a/tests/auto/qdir/searchdir/subdir1/picker.png b/tests/auto/corelib/io/qdir/searchdir/subdir1/picker.png
index 52eee4fe28..52eee4fe28 100644
--- a/tests/auto/qdir/searchdir/subdir1/picker.png
+++ b/tests/auto/corelib/io/qdir/searchdir/subdir1/picker.png
diff --git a/tests/auto/qdir/searchdir/subdir2/picker.png b/tests/auto/corelib/io/qdir/searchdir/subdir2/picker.png
index 52eee4fe28..52eee4fe28 100644
--- a/tests/auto/qdir/searchdir/subdir2/picker.png
+++ b/tests/auto/corelib/io/qdir/searchdir/subdir2/picker.png
diff --git a/tests/auto/qdir/testData/empty b/tests/auto/corelib/io/qdir/testData/empty
index a437d5b711..a437d5b711 100644
--- a/tests/auto/qdir/testData/empty
+++ b/tests/auto/corelib/io/qdir/testData/empty
diff --git a/tests/auto/qdir/testdir/dir/qdir.pro b/tests/auto/corelib/io/qdir/testdir/dir/qdir.pro
index 139597f9cb..139597f9cb 100644
--- a/tests/auto/qdir/testdir/dir/qdir.pro
+++ b/tests/auto/corelib/io/qdir/testdir/dir/qdir.pro
diff --git a/tests/auto/qdir/testdir/dir/qrc_qdir.cpp b/tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp
index 74114760c9..74114760c9 100644
--- a/tests/auto/qdir/testdir/dir/qrc_qdir.cpp
+++ b/tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp
diff --git a/tests/auto/qdir/testdir/dir/tmp/empty b/tests/auto/corelib/io/qdir/testdir/dir/tmp/empty
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/testdir/dir/tmp/empty
+++ b/tests/auto/corelib/io/qdir/testdir/dir/tmp/empty
diff --git a/tests/auto/qdir/testdir/dir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp
index 74114760c9..74114760c9 100644
--- a/tests/auto/qdir/testdir/dir/tst_qdir.cpp
+++ b/tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp
diff --git a/tests/auto/qdir/testdir/spaces/foo. bar b/tests/auto/corelib/io/qdir/testdir/spaces/foo. bar
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/testdir/spaces/foo. bar
+++ b/tests/auto/corelib/io/qdir/testdir/spaces/foo. bar
diff --git a/tests/auto/qdir/testdir/spaces/foo.bar b/tests/auto/corelib/io/qdir/testdir/spaces/foo.bar
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/testdir/spaces/foo.bar
+++ b/tests/auto/corelib/io/qdir/testdir/spaces/foo.bar
diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp
new file mode 100644
index 0000000000..b317991570
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp
@@ -0,0 +1,1965 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qdebug.h>
+#include <qdir.h>
+#include <qfileinfo.h>
+#include <qregexp.h>
+#include <qstringlist.h>
+#include "../../../network-settings.h"
+
+#if defined(Q_OS_WIN)
+#define _WIN32_WINNT 0x500
+#endif
+
+#include "../../../../shared/filesystem.h"
+
+#if defined(Q_OS_SYMBIAN)
+# include <f32file.h>
+# define STRINGIFY(x) #x
+# define TOSTRING(x) STRINGIFY(x)
+# define SRCDIR "C:/Private/" TOSTRING(SYMBIAN_SRCDIR_UID) "/"
+#elif defined(Q_OS_UNIX)
+# include <unistd.h>
+# include <sys/stat.h>
+#endif
+
+#if defined(Q_OS_VXWORKS)
+#define Q_NO_SYMLINKS
+#endif
+
+#if defined(Q_OS_SYMBIAN)
+#define Q_NO_SYMLINKS
+#define Q_NO_SYMLINKS_TO_DIRS
+#endif
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QDir : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QDir();
+ virtual ~tst_QDir();
+
+private slots:
+ void getSetCheck();
+ void construction();
+
+ void setPath_data();
+ void setPath();
+
+ void entryList_data();
+ void entryList();
+
+ void entryListSimple_data();
+ void entryListSimple();
+
+ void entryListWithSymLinks();
+
+ void mkdir_data();
+ void mkdir();
+
+ void makedirReturnCode();
+
+ void rmdir_data();
+ void rmdir();
+
+ void exists_data();
+ void exists();
+
+ void isRelativePath_data();
+ void isRelativePath();
+
+ void canonicalPath_data();
+ void canonicalPath();
+
+ void current_data();
+ void current();
+
+ void cd_data();
+ void cd();
+
+ void setNameFilters_data();
+ void setNameFilters();
+
+ void cleanPath_data();
+ void cleanPath();
+
+ void compare();
+ void QDir_default();
+
+ void filePath_data();
+ void filePath();
+
+ void absoluteFilePath_data();
+ void absoluteFilePath();
+
+ void absolutePath_data();
+ void absolutePath();
+
+ void relativeFilePath_data();
+ void relativeFilePath();
+
+ void remove();
+ void rename();
+
+ void exists2_data();
+ void exists2();
+
+ void dirName_data();
+ void dirName();
+
+ void operator_eq();
+
+ void dotAndDotDot();
+ void homePath();
+ void tempPath();
+ void rootPath();
+
+ void nativeSeparators();
+
+ void searchPaths();
+ void searchPaths_data();
+
+ void entryListWithSearchPaths();
+
+ void longFileName_data();
+ void longFileName();
+
+ void updateFileLists();
+
+ void detachingOperations();
+
+ void testCaching();
+
+ void isRoot_data();
+ void isRoot();
+
+#ifndef QT_NO_REGEXP
+ void match_data();
+ void match();
+#endif
+
+ void drives();
+
+ void arrayOperator();
+
+ void equalityOperator_data();
+ void equalityOperator();
+
+ void isRelative_data();
+ void isRelative();
+
+ void isReadable();
+};
+
+// Testing get/set functions
+void tst_QDir::getSetCheck()
+{
+ QDir obj1;
+ // Filters QDir::filter()
+ // void QDir::setFilter(Filters)
+ obj1.setFilter(QDir::Filters(QDir::Dirs));
+ QCOMPARE(QDir::Filters(QDir::Dirs), obj1.filter());
+ obj1.setFilter(QDir::Filters(QDir::Dirs | QDir::Files));
+ QCOMPARE(QDir::Filters(QDir::Dirs | QDir::Files), obj1.filter());
+ obj1.setFilter(QDir::Filters(QDir::NoFilter));
+ QCOMPARE(QDir::Filters(QDir::NoFilter), obj1.filter());
+
+ // SortFlags QDir::sorting()
+ // void QDir::setSorting(SortFlags)
+ obj1.setSorting(QDir::SortFlags(QDir::Name));
+ QCOMPARE(QDir::SortFlags(QDir::Name), obj1.sorting());
+ obj1.setSorting(QDir::SortFlags(QDir::Name | QDir::IgnoreCase));
+ QCOMPARE(QDir::SortFlags(QDir::Name | QDir::IgnoreCase), obj1.sorting());
+ obj1.setSorting(QDir::SortFlags(QDir::NoSort));
+ QCOMPARE(QDir::SortFlags(QDir::NoSort), obj1.sorting());
+}
+
+tst_QDir::tst_QDir()
+{
+#ifdef Q_OS_SYMBIAN
+ // Can't deploy empty test dir, so create it here
+ QDir dir(SRCDIR);
+ dir.mkdir("testData");
+#endif
+}
+
+tst_QDir::~tst_QDir()
+{
+#ifdef Q_OS_SYMBIAN
+ // Remove created test dir
+ QDir dir(SRCDIR);
+ dir.rmdir("testData");
+#endif
+}
+
+void tst_QDir::construction()
+{
+ QFileInfo myFileInfo("/machine/share/dir1/file1");
+ QDir myDir(myFileInfo.absoluteDir()); // this asserted
+ QCOMPARE(myFileInfo.absoluteDir().absolutePath(), myDir.absolutePath());
+}
+
+void tst_QDir::setPath_data()
+{
+ QTest::addColumn<QString>("dir1");
+ QTest::addColumn<QString>("dir2");
+
+ QTest::newRow("data0") << QString(".") << QString("..");
+#if (defined(Q_WS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("data1") << QString("c:/") << QDir::currentPath();
+#endif
+}
+
+void tst_QDir::setPath()
+{
+ QFETCH(QString, dir1);
+ QFETCH(QString, dir2);
+
+ QDir shared;
+ QDir qDir1(dir1);
+ QStringList entries1 = qDir1.entryList();
+ shared.setPath(dir1);
+ QCOMPARE(shared.entryList(), entries1);
+
+ QDir qDir2(dir2);
+ QStringList entries2 = qDir2.entryList();
+ shared.setPath(dir2);
+ QCOMPARE(shared.entryList(), entries2);
+}
+
+void tst_QDir::mkdir_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("recurse");
+
+ QStringList dirs;
+ dirs << QDir::currentPath() + "/testdir/one/two/three"
+ << QDir::currentPath() + "/testdir/two"
+ << QDir::currentPath() + "/testdir/two/three";
+ QTest::newRow("data0") << dirs.at(0) << true;
+ QTest::newRow("data1") << dirs.at(1) << false;
+ QTest::newRow("data2") << dirs.at(2) << false;
+
+ // Ensure that none of these directories already exist
+ QDir dir;
+ for (int i = 0; i < dirs.count(); ++i)
+ dir.rmpath(dirs.at(i));
+}
+
+void tst_QDir::mkdir()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, recurse);
+
+ QDir dir;
+ dir.rmdir(path);
+ if (recurse)
+ QVERIFY(dir.mkpath(path));
+ else
+ QVERIFY(dir.mkdir(path));
+
+ //make sure it really exists (ie that mkdir returns the right value)
+ QFileInfo fi(path);
+ QVERIFY(fi.exists() && fi.isDir());
+}
+
+void tst_QDir::makedirReturnCode()
+{
+ QString dirName = QString::fromLatin1("makedirReturnCode");
+ QDir::current().rmdir(dirName); // cleanup a previous run.
+ QDir dir(dirName);
+ QVERIFY(!dir.exists());
+ QVERIFY(QDir::current().mkdir(dirName));
+ QVERIFY(!QDir::current().mkdir(dirName)); // calling mkdir on an existing dir will fail.
+ QVERIFY(QDir::current().mkpath(dirName)); // calling mkpath on an existing dir will pass
+}
+
+void tst_QDir::rmdir_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("recurse");
+
+ QTest::newRow("data0") << QDir::currentPath() + "/testdir/one/two/three" << true;
+ QTest::newRow("data1") << QDir::currentPath() + "/testdir/two/three" << false;
+ QTest::newRow("data2") << QDir::currentPath() + "/testdir/two" << false;
+}
+
+void tst_QDir::rmdir()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, recurse);
+
+ QDir dir;
+ if (recurse)
+ QVERIFY(dir.rmpath(path));
+ else
+ QVERIFY(dir.rmdir(path));
+
+ //make sure it really doesn't exist (ie that rmdir returns the right value)
+ QFileInfo fi(path);
+ QVERIFY(!fi.exists());
+}
+
+void tst_QDir::exists_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QDir::currentPath() << true;
+ QTest::newRow("data0.1") << QDir::currentPath() + "/" << true;
+ QTest::newRow("data1") << QString("/I/Do_not_expect_this_path_to_exist/") << false;
+ QTest::newRow("resource0") << QString(":/tst_qdir/") << true;
+ QTest::newRow("resource1") << QString(":/I/Do_not_expect_this_resource_to_exist/") << false;
+
+ QTest::newRow("simple dir") << SRCDIR "resources" << true;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << true;
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE))
+ QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
+ QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
+ QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << true;
+ QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << true;
+ QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << true;
+ QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << true;
+ QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << false;
+ QTest::newRow("unc 8") << "//" + QtNetworkSettings::winServerName() + "/asharethatshouldnotexist" << false;
+ QTest::newRow("unc 9") << "//ahostthatshouldnotexist" << false;
+#endif
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("This drive should exist") << "C:/" << true;
+ // find a non-existing drive and check if it does not exist
+ QFileInfoList drives = QFSFileEngine::drives();
+ QStringList driveLetters;
+ for (int i = 0; i < drives.count(); ++i) {
+ driveLetters+=drives.at(i).absoluteFilePath();
+ }
+ char drive = 'Z';
+ QString driv;
+ do {
+ driv = QString::fromAscii("%1:/").arg(drive);
+ if (!driveLetters.contains(driv)) break;
+ --drive;
+ } while (drive >= 'A');
+ if (drive >= 'A') {
+ QTest::newRow("This drive should not exist") << driv << false;
+ }
+#endif
+}
+
+void tst_QDir::exists()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, expected);
+
+ QDir dir(path);
+ QCOMPARE(dir.exists(), expected);
+}
+
+void tst_QDir::isRelativePath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("relative");
+
+ QTest::newRow("data0") << "../somedir" << true;
+#if (defined(Q_WS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("data1") << "C:/sOmedir" << false;
+#endif
+ QTest::newRow("data2") << "somedir" << true;
+ QTest::newRow("data3") << "/somedir" << false;
+
+ QTest::newRow("resource0") << ":/prefix" << false;
+ QTest::newRow("resource1") << ":/prefix/foo.bar" << false;
+}
+
+void tst_QDir::isRelativePath()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, relative);
+
+ QCOMPARE(QDir::isRelativePath(path),relative);
+}
+
+
+void tst_QDir::QDir_default()
+{
+ //default constructor QDir();
+ QDir dir; // according to documentation should be currentDirPath
+ QCOMPARE(dir.absolutePath(), QDir::currentPath());
+}
+
+void tst_QDir::compare()
+{
+ // operator==
+ QDir dir;
+ dir.makeAbsolute();
+ QVERIFY(dir == QDir::currentPath());
+}
+
+static QStringList filterLinks(const QStringList &list)
+{
+#ifndef Q_NO_SYMLINKS
+ return list;
+#else
+ QStringList result;
+ foreach (QString str, list) {
+ if (!str.endsWith(QLatin1String(".lnk")))
+ result.append(str);
+ }
+ return result;
+#endif
+}
+
+void tst_QDir::entryList_data()
+{
+ QTest::addColumn<QString>("dirName"); // relative from current path or abs
+ QTest::addColumn<QStringList>("nameFilters");
+ QTest::addColumn<int>("filterspec");
+ QTest::addColumn<int>("sortspec");
+ QTest::addColumn<QStringList>("expected");
+ QTest::newRow("spaces1") << SRCDIR "testdir/spaces" << QStringList("*. bar")
+ << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+ << QStringList("foo. bar"); // notice how spaces5 works
+ QTest::newRow("spaces2") << SRCDIR "testdir/spaces" << QStringList("*.bar")
+ << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+ << QStringList("foo.bar");
+ QTest::newRow("spaces3") << SRCDIR "testdir/spaces" << QStringList("foo.*")
+ << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+ << QString("foo. bar,foo.bar").split(',');
+ QTest::newRow("files1") << SRCDIR "testdir/dir" << QString("*r.cpp *.pro").split(" ")
+ << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+ << QString("qdir.pro,qrc_qdir.cpp,tst_qdir.cpp").split(',');
+ QTest::newRow("testdir1") << SRCDIR "testdir" << QStringList()
+ << (int)(QDir::AllDirs) << (int)(QDir::NoSort)
+ << QString(".,..,dir,spaces").split(',');
+// #### this test uses filenames that cannot be represented on all filesystems we test, in
+// particular HFS+ on the Mac. When checking out the files with perforce it silently ignores the
+// error that it cannot represent the file names stored in the repository and the test fails. That
+// is why the test is marked as 'skip' for the mac. When checking out the files with git on the mac
+// the error of not being able to represent the files stored in the repository is not silently
+// ignored but git reports an error. The test only tried to prevent QDir from _hanging_ when listing
+// the directory.
+// QTest::newRow("unprintablenames") << SRCDIR "unprintablenames" << QStringList("*")
+// << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+// << QString(".,..").split(",");
+ QTest::newRow("resources1") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data")
+ << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+ << QString("file1.data,file2.data,file3.data").split(',');
+ QTest::newRow("resources2") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data")
+ << (int)(QDir::Files) << (int)(QDir::NoSort)
+ << QString("file1.data,file2.data,file3.data").split(',');
+
+ QTest::newRow("nofilter") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::AllEntries") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::Files") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Files) << int(QDir::Name)
+ << filterLinks(QString("file,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::Dirs") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Dirs) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
+ QTest::newRow("QDir::Dirs | QDir::NoDotAndDotDot") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Dirs | QDir::NoDotAndDotDot) << int(QDir::Name)
+ << filterLinks(QString("directory,linktodirectory.lnk").split(','));
+ QTest::newRow("QDir::AllDirs") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllDirs) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
+ QTest::newRow("QDir::AllDirs | QDir::Dirs") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllDirs | QDir::Dirs) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
+ QTest::newRow("QDir::AllDirs | QDir::Files") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllDirs | QDir::Files) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::AllEntries | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries | QDir::NoSymLinks) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,writable").split(','));
+ QTest::newRow("QDir::AllEntries | QDir::NoSymLinks | QDir::NoDotAndDotDot") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries | QDir::NoSymLinks | QDir::NoDotAndDotDot) << int(QDir::Name)
+ << filterLinks(QString("directory,file,writable").split(','));
+ QTest::newRow("QDir::Files | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Files | QDir::NoSymLinks) << int(QDir::Name)
+ << filterLinks(QString("file,writable").split(','));
+ QTest::newRow("QDir::Dirs | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Dirs | QDir::NoSymLinks) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory").split(','));
+ QTest::newRow("QDir::Drives | QDir::Files | QDir::NoDotAndDotDot") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Drives | QDir::Files | QDir::NoDotAndDotDot) << int(QDir::Name)
+ << filterLinks(QString("file,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::System") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::System) << int(QDir::Name)
+ << filterLinks(QStringList("brokenlink.lnk"));
+ QTest::newRow("QDir::Hidden") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Hidden) << int(QDir::Name)
+ << QStringList();
+ QTest::newRow("QDir::System | QDir::Hidden") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::System | QDir::Hidden) << int(QDir::Name)
+ << filterLinks(QStringList("brokenlink.lnk"));
+ QTest::newRow("QDir::AllDirs | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllDirs | QDir::NoSymLinks) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory").split(','));
+ QTest::newRow("QDir::AllEntries | QDir::Hidden | QDir::System") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries | QDir::Hidden | QDir::System) << int(QDir::Name)
+ << filterLinks(QString(".,..,brokenlink.lnk,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::AllEntries | QDir::Readable") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries | QDir::Readable) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::AllEntries | QDir::Writable") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries | QDir::Writable) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,linktodirectory.lnk,writable").split(','));
+ QTest::newRow("QDir::Files | QDir::Readable") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Files | QDir::Readable) << int(QDir::Name)
+ << filterLinks(QString("file,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::Dirs | QDir::Readable") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Dirs | QDir::Readable) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
+ QTest::newRow("Namefilters b*") << SRCDIR "entrylist/" << QStringList("d*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString("directory").split(','));
+ QTest::newRow("Namefilters f*") << SRCDIR "entrylist/" << QStringList("f*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString("file").split(','));
+ QTest::newRow("Namefilters link*") << SRCDIR "entrylist/" << QStringList("link*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString("linktodirectory.lnk,linktofile.lnk").split(','));
+ QTest::newRow("Namefilters *to*") << SRCDIR "entrylist/" << QStringList("*to*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString("directory,linktodirectory.lnk,linktofile.lnk").split(','));
+ QTest::newRow("Sorting QDir::Name") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("Sorting QDir::Name | QDir::Reversed") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Name | QDir::Reversed)
+ << filterLinks(QString("writable,linktofile.lnk,linktodirectory.lnk,file,directory,..,.").split(','));
+
+ QTest::newRow("Sorting QDir::Type") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Type)
+ << QString(".,..,a,b,c,d,e,f,a.a,b.a,c.a,d.a,e.a,f.a,a.b,b.b,c.b,d.b,e.b,f.b,a.c,b.c,c.c,d.c,e.c,f.c").split(',');
+ QTest::newRow("Sorting QDir::Type | QDir::Reversed") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Type | QDir::Reversed)
+ << QString("f.c,e.c,d.c,c.c,b.c,a.c,f.b,e.b,d.b,c.b,b.b,a.b,f.a,e.a,d.a,c.a,b.a,a.a,f,e,d,c,b,a,..,.").split(',');
+ QTest::newRow("Sorting QDir::Type | QDir::DirsLast") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Type | QDir::DirsLast)
+ << QString("a,b,c,a.a,b.a,c.a,a.b,b.b,c.b,a.c,b.c,c.c,.,..,d,e,f,d.a,e.a,f.a,d.b,e.b,f.b,d.c,e.c,f.c").split(',');
+ QTest::newRow("Sorting QDir::Type | QDir::DirsFirst") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Type | QDir::DirsFirst)
+ << QString(".,..,d,e,f,d.a,e.a,f.a,d.b,e.b,f.b,d.c,e.c,f.c,a,b,c,a.a,b.a,c.a,a.b,b.b,c.b,a.c,b.c,c.c").split(',');
+ QTest::newRow("Sorting QDir::Size") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::AllEntries|QDir::NoDotAndDotDot) << int(QDir::Size | QDir::DirsFirst)
+ << QString("d,d.a,d.b,d.c,e,e.a,e.b,e.c,f,f.a,f.b,f.c,c.a,c.b,c.c,b.a,b.c,b.b,a.c,a.b,a.a,a,b,c").split(',');
+ QTest::newRow("Sorting QDir::Size | QDir::Reversed") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::AllEntries|QDir::NoDotAndDotDot) << int(QDir::Size | QDir::Reversed | QDir::DirsLast)
+ << QString("c,b,a,a.a,a.b,a.c,b.b,b.c,b.a,c.c,c.b,c.a,f.c,f.b,f.a,f,e.c,e.b,e.a,e,d.c,d.b,d.a,d").split(',');
+}
+
+void tst_QDir::entryList()
+{
+ QFETCH(QString, dirName);
+ QFETCH(QStringList, nameFilters);
+ QFETCH(int, filterspec);
+ QFETCH(int, sortspec);
+ QFETCH(QStringList, expected);
+
+ QFile(SRCDIR "entrylist/writable").open(QIODevice::ReadWrite);
+ QFile(SRCDIR "entrylist/file").setPermissions(QFile::ReadOwner | QFile::ReadUser);
+ QFile::remove(SRCDIR "entrylist/linktofile");
+ QFile::remove(SRCDIR "entrylist/linktodirectory");
+ QFile::remove(SRCDIR "entrylist/linktofile.lnk");
+ QFile::remove(SRCDIR "entrylist/linktodirectory.lnk");
+ QFile::remove(SRCDIR "entrylist/brokenlink.lnk");
+ QFile::remove(SRCDIR "entrylist/brokenlink");
+
+ // WinCE/Symbian does not have . and .. in the directory listing
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ expected.removeAll(".");
+ expected.removeAll("..");
+#endif
+
+#ifndef Q_NO_SYMLINKS
+#if defined(Q_OS_WIN)
+ // ### Sadly, this is a platform difference right now.
+ QFile::link(SRCDIR "entryList/file", SRCDIR "entrylist/linktofile.lnk");
+ QFile::link(SRCDIR "entryList/directory", SRCDIR "entrylist/linktodirectory.lnk");
+ QFile::link(SRCDIR "entryList/nothing", SRCDIR "entrylist/brokenlink.lnk");
+#elif defined(Q_OS_SYMBIAN)
+ // Symbian doesn't support links to directories
+ expected.removeAll("linktodirectory.lnk");
+
+ // Expecting failures from a couple of OpenC bugs. Do checks only once.
+ static int xFailChecked = false;
+ static int expectedFail1 = false;
+ static int expectedFail2 = false;
+
+ if (!expectedFail1) {
+ // Can't create link if file doesn't exist in symbian, so create file temporarily,
+ // But only if testing for
+ QFile tempFile(SRCDIR "entryList/nothing");
+ tempFile.open(QIODevice::WriteOnly);
+ tempFile.link(SRCDIR "entryList/brokenlink.lnk");
+ tempFile.remove();
+ }
+
+ if (!expectedFail2) {
+ QFile::link(SRCDIR "entryList/file", SRCDIR "entrylist/linktofile.lnk");
+ }
+
+ if (!xFailChecked) {
+ // ### Until OpenC supports stat correctly for symbolic links, expect them to fail.
+ expectedFail1 = QFileInfo(SRCDIR "entryList/brokenlink.lnk").exists();
+ expectedFail2 = !(QFileInfo(SRCDIR "entryList/linktofile.lnk").isFile());
+
+ QEXPECT_FAIL("", "OpenC bug, stat for broken links returns normally, when it should return error.", Continue);
+ QVERIFY(!expectedFail1);
+
+ QEXPECT_FAIL("", "OpenC bug, stat for file links doesn't indicate them as such.", Continue);
+ QVERIFY(!expectedFail2);
+ xFailChecked = true;
+ }
+
+ if (expectedFail1) {
+ expected.removeAll("brokenlink.lnk");
+ QFile::remove(SRCDIR "entrylist/brokenlink.lnk");
+ }
+
+ if (expectedFail2) {
+ expected.removeAll("linktofile.lnk");
+ QFile::remove(SRCDIR "entrylist/linktofile.lnk");
+ }
+#else
+ QFile::link("file", SRCDIR "entrylist/linktofile.lnk");
+ QFile::link("directory", SRCDIR "entrylist/linktodirectory.lnk");
+ QFile::link("nothing", SRCDIR "entrylist/brokenlink.lnk");
+#endif
+#endif //Q_NO_SYMLINKS
+
+#ifdef Q_WS_MAC
+ if (qstrcmp(QTest::currentDataTag(), "unprintablenames") == 0)
+ QSKIP("p4 doesn't sync the files with the unprintable names properly on Mac",SkipSingle);
+#endif
+ QDir dir(dirName);
+ QVERIFY(dir.exists());
+
+ QStringList actual = dir.entryList(nameFilters, (QDir::Filters)filterspec,
+ (QDir::SortFlags)sortspec);
+
+ int max = qMin(actual.count(), expected.count());
+
+ if (qstrcmp(QTest::currentDataTag(), "unprintablenames") == 0) {
+ // The purpose of this entry is to check that QDir doesn't
+ // lock up. The actual result depends on the file system.
+ return;
+ }
+ bool doContentCheck = true;
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ if (qstrcmp(QTest::currentDataTag(), "QDir::AllEntries | QDir::Writable") == 0) {
+ // for root, everything is writeable
+ if (::getuid() == 0)
+ doContentCheck = false;
+ }
+#endif
+
+ if (doContentCheck) {
+ for (int i=0; i<max; ++i)
+ QCOMPARE(actual[i], expected[i]);
+
+ QCOMPARE(actual.count(), expected.count());
+ }
+
+#if defined(Q_OS_SYMBIAN)
+ // Test cleanup on device requires setting the permissions back to normal
+ QFile(SRCDIR "entrylist/file").setPermissions(QFile::WriteUser | QFile::ReadUser);
+#endif
+
+ QFile::remove(SRCDIR "entrylist/writable");
+ QFile::remove(SRCDIR "entrylist/linktofile");
+ QFile::remove(SRCDIR "entrylist/linktodirectory");
+ QFile::remove(SRCDIR "entrylist/linktofile.lnk");
+ QFile::remove(SRCDIR "entrylist/linktodirectory.lnk");
+ QFile::remove(SRCDIR "entrylist/brokenlink.lnk");
+ QFile::remove(SRCDIR "entrylist/brokenlink");
+}
+
+void tst_QDir::entryListSimple_data()
+{
+ QTest::addColumn<QString>("dirName");
+ QTest::addColumn<int>("countMin");
+
+ QTest::newRow("data2") << "do_not_expect_this_path_to_exist/" << 0;
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("simple dir") << SRCDIR "resources" << 0;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << 0;
+#else
+ QTest::newRow("simple dir") << SRCDIR "resources" << 2;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << 2;
+#endif
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << 2;
+ QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << 2;
+ QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << 2;
+ QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << 2;
+ QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << 2;
+ QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << 2;
+ QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << 0;
+ QTest::newRow("unc 8") << "//" + QtNetworkSettings::winServerName() + "/asharethatshouldnotexist" << 0;
+ QTest::newRow("unc 9") << "//ahostthatshouldnotexist" << 0;
+#endif
+}
+
+void tst_QDir::entryListSimple()
+{
+ QFETCH(QString, dirName);
+ QFETCH(int, countMin);
+
+ QDir dir(dirName);
+ QStringList actual = dir.entryList();
+ QVERIFY(actual.count() >= countMin);
+}
+
+void tst_QDir::entryListWithSymLinks()
+{
+#ifndef Q_NO_SYMLINKS
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ QFile::remove("myLinkToDir.lnk");
+# endif
+ QFile::remove("myLinkToFile.lnk");
+ QFile::remove("testfile.cpp");
+ QDir dir;
+ dir.mkdir("myDir");
+ QFile("testfile.cpp").open(QIODevice::WriteOnly);
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ QVERIFY(QFile::link("myDir", "myLinkToDir.lnk"));
+# endif
+ QVERIFY(QFile::link("testfile.cpp", "myLinkToFile.lnk"));
+
+ {
+ QStringList entryList = QDir().entryList();
+ QVERIFY(entryList.contains("myDir"));
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ QVERIFY(entryList.contains("myLinkToDir.lnk"));
+#endif
+ QVERIFY(entryList.contains("myLinkToFile.lnk"));
+ }
+ {
+ QStringList entryList = QDir().entryList(QDir::Dirs);
+ QVERIFY(entryList.contains("myDir"));
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ QVERIFY(entryList.contains("myLinkToDir.lnk"));
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QEXPECT_FAIL("", "OpenC stat for symlinks is buggy.", Continue);
+#endif
+ QVERIFY(!entryList.contains("myLinkToFile.lnk"));
+ }
+ {
+ QStringList entryList = QDir().entryList(QDir::Dirs | QDir::NoSymLinks);
+ QVERIFY(entryList.contains("myDir"));
+ QVERIFY(!entryList.contains("myLinkToDir.lnk"));
+ QVERIFY(!entryList.contains("myLinkToFile.lnk"));
+ }
+
+ QFile::remove("myLinkToDir.lnk");
+ QFile::remove("myLinkToFile.lnk");
+ QFile::remove("testfile.cpp");
+ dir.rmdir("myDir");
+#endif
+}
+
+void tst_QDir::canonicalPath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("canonicalPath");
+ QString appPath = SRCDIR;
+ if (appPath.isEmpty())
+ appPath = QCoreApplication::instance()->applicationDirPath();
+ else
+ appPath.chop(1); // remove the ending slash
+
+#if defined Q_WS_WIN
+ if (appPath.endsWith("release", Qt::CaseInsensitive) || appPath.endsWith("debug", Qt::CaseInsensitive)) {
+ QDir appDir(appPath);
+ QVERIFY(appDir.cdUp());
+ appPath = appDir.absolutePath();
+ }
+#endif
+
+ QTest::newRow("relative") << "." << appPath;
+ QTest::newRow("relativeSubDir") << "./testData/../testData" << appPath + "/testData";
+
+#ifndef Q_WS_WIN
+ QTest::newRow("absPath") << appPath + "/testData/../testData" << appPath + "/testData";
+#else
+ QTest::newRow("absPath") << appPath + "\\testData\\..\\testData" << appPath + "/testData";
+#endif
+ QTest::newRow("nonexistant") << "testd" << QString();
+
+ QTest::newRow("rootPath") << QDir::rootPath() << QDir::rootPath();
+
+#ifdef Q_OS_MAC
+ // On Mac OS X 10.5 and earlier, canonicalPath depends on cleanPath which
+ // is itself very broken and fundamentally wrong on "/./" which, this would
+ // exercise
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6)
+#endif
+ QTest::newRow("rootPath + ./") << QDir::rootPath().append("./") << QDir::rootPath();
+
+ QTest::newRow("rootPath + ../.. ") << QDir::rootPath().append("../..") << QDir::rootPath();
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("drive:\\") << QDir::toNativeSeparators(QDir::rootPath()) << QDir::rootPath();
+ QTest::newRow("drive:\\.\\") << QDir::toNativeSeparators(QDir::rootPath().append("./")) << QDir::rootPath();
+ QTest::newRow("drive:\\..\\..") << QDir::toNativeSeparators(QDir::rootPath().append("../..")) << QDir::rootPath();
+ QTest::newRow("drive:") << QDir().canonicalPath().left(2) << QDir().canonicalPath();
+#endif
+
+ QTest::newRow("resource") << ":/tst_qdir/resources/entryList" << ":/tst_qdir/resources/entryList";
+}
+
+void tst_QDir::canonicalPath()
+{
+ QDir srcPath;
+ if (strlen(SRCDIR) > 0)
+ srcPath = QDir(SRCDIR);
+ else
+ srcPath = QDir(".");
+ if (srcPath.absolutePath() != srcPath.canonicalPath())
+ QSKIP("This test does not work if this directory path consists of symlinks.", SkipAll);
+
+ QString oldpwd = QDir::currentPath();
+ QDir::setCurrent(srcPath.absolutePath());
+
+ QFETCH(QString, path);
+ QFETCH(QString, canonicalPath);
+
+ QDir dir(path);
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QCOMPARE(dir.canonicalPath().toLower(), canonicalPath.toLower());
+#else
+ QCOMPARE(dir.canonicalPath(), canonicalPath);
+#endif
+
+ QDir::setCurrent(oldpwd);
+}
+
+void tst_QDir::current_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("currentDir");
+ QString appPath = SRCDIR;
+ if (appPath.isEmpty())
+ appPath = QCoreApplication::instance()->applicationDirPath();
+ else
+ appPath.chop(1); // remove the ending slash
+#if defined Q_WS_WIN
+ if (appPath.endsWith("release", Qt::CaseInsensitive))
+ appPath = appPath.left(appPath.length()-8);
+ else if (appPath.endsWith("debug", Qt::CaseInsensitive))
+ appPath = appPath.left(appPath.length()-6);
+#endif
+
+ QTest::newRow("startup") << QString() << appPath;
+ QTest::newRow("relPath") << "testData" << appPath + "/testData";
+#ifndef Q_WS_WIN
+ QTest::newRow("absPath") << appPath + "/testData" << appPath + "/testData";
+#else
+ QTest::newRow("absPath") << appPath + "\\testData" << appPath + "/testData";
+#endif
+ QTest::newRow("nonexistant") << "testd" << QString();
+
+ QTest::newRow("parent") << ".." << appPath.left(appPath.lastIndexOf('/'));
+}
+
+void tst_QDir::current()
+{
+ QString oldDir = QDir::currentPath();
+ QString appPath = SRCDIR;
+ if (appPath.isEmpty())
+ appPath = QCoreApplication::instance()->applicationDirPath();
+ QDir::setCurrent(appPath);
+ QFETCH(QString, path);
+ QFETCH(QString, currentDir);
+
+ if (!path.isEmpty()) {
+ bool b = QDir::setCurrent(path);
+ // If path is non existent, then setCurrent should be false (currentDir is empty in testData)
+ QVERIFY(b == !currentDir.isEmpty());
+ }
+ if (!currentDir.isEmpty()) {
+ QDir newCurrent = QDir::current();
+ QDir::setCurrent(oldDir);
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QCOMPARE(newCurrent.absolutePath().toLower(), currentDir.toLower());
+#else
+ QCOMPARE(newCurrent.absolutePath(), currentDir);
+#endif
+ }
+
+ QDir::setCurrent(oldDir);
+}
+
+void tst_QDir::cd_data()
+{
+ QTest::addColumn<QString>("startDir");
+ QTest::addColumn<QString>("cdDir");
+ QTest::addColumn<bool>("successExpected");
+ QTest::addColumn<QString>("newDir");
+
+ QString appPath = QDir::currentPath();
+ int index = appPath.lastIndexOf("/");
+ QTest::newRow("cdUp") << QDir::currentPath() << ".." << true << appPath.left(index==0?1:index);
+ QTest::newRow("noChange") << QDir::currentPath() << "." << true << appPath;
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN) // on windows QDir::root() is usually c:/ but cd "/" will not force it to be root
+ QTest::newRow("absolute") << QDir::currentPath() << "/" << true << "/";
+#else
+ QTest::newRow("absolute") << QDir::currentPath() << "/" << true << QDir::root().absolutePath();
+#endif
+ QTest::newRow("non existant") << "." << "../anonexistingdir" << false << QDir::currentPath();
+ QTest::newRow("self") << "." << (QString("../") + QFileInfo(QDir::currentPath()).fileName()) << true << QDir::currentPath();
+ QTest::newRow("file") << "." << "qdir.pro" << false << "";
+}
+
+void tst_QDir::cd()
+{
+ QFETCH(QString, startDir);
+ QFETCH(QString, cdDir);
+ QFETCH(bool, successExpected);
+ QFETCH(QString, newDir);
+
+ QDir d = startDir;
+ bool notUsed = d.exists(); // make sure we cache this before so we can see if 'cd' fails to flush this
+ Q_UNUSED(notUsed);
+ QCOMPARE(d.cd(cdDir), successExpected);
+ if (successExpected)
+ QCOMPARE(d.absolutePath(), newDir);
+}
+
+void tst_QDir::setNameFilters_data()
+{
+ // Effectively copied from entryList2() test
+
+ QTest::addColumn<QString>("dirName"); // relative from current path or abs
+ QTest::addColumn<QStringList>("nameFilters");
+ QTest::addColumn<QStringList>("expected");
+
+ QString appPath = SRCDIR;
+ if (appPath.isEmpty())
+ appPath = QCoreApplication::instance()->applicationDirPath();
+ if (!appPath.endsWith("/"))
+ appPath.append("/");
+
+ QTest::newRow("spaces1") << appPath + "testdir/spaces" << QStringList("*. bar")
+ << QStringList("foo. bar");
+ QTest::newRow("spaces2") << appPath + "testdir/spaces" << QStringList("*.bar")
+ << QStringList("foo.bar");
+ QTest::newRow("spaces3") << appPath + "testdir/spaces" << QStringList("foo.*")
+ << QString("foo. bar,foo.bar").split(",");
+ QTest::newRow("files1") << appPath + "testdir/dir" << QString("*r.cpp *.pro").split(" ")
+ << QString("qdir.pro,qrc_qdir.cpp,tst_qdir.cpp").split(",");
+ QTest::newRow("resources1") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data")
+ << QString("file1.data,file2.data,file3.data").split(',');
+}
+
+void tst_QDir::setNameFilters()
+{
+ QFETCH(QString, dirName);
+ QFETCH(QStringList, nameFilters);
+ QFETCH(QStringList, expected);
+
+ QDir dir(dirName);
+ QVERIFY(dir.exists());
+
+ dir.setNameFilters(nameFilters);
+ QStringList actual = dir.entryList();
+ int max = qMin(actual.count(), expected.count());
+
+ for (int i=0; i<max; ++i)
+ QCOMPARE(actual[i], expected[i]);
+ QCOMPARE(actual.count(), expected.count());
+}
+
+void
+tst_QDir::cleanPath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("data0") << "/Users/sam/troll/qt4.0//.." << "/Users/sam/troll";
+ QTest::newRow("data1") << "/Users/sam////troll/qt4.0//.." << "/Users/sam/troll";
+ QTest::newRow("data2") << "/" << "/";
+ QTest::newRow("data3") << QDir::cleanPath("../.") << "..";
+ QTest::newRow("data4") << QDir::cleanPath("../..") << "../..";
+#if !defined(Q_OS_WINCE)
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("data5") << "d:\\a\\bc\\def\\.." << "d:/a/bc";
+ QTest::newRow("data6") << "d:\\a\\bc\\def\\../../.." << "d:/";
+#else
+ QTest::newRow("data5") << "d:\\a\\bc\\def\\.." << "d:\\a\\bc\\def\\..";
+ QTest::newRow("data6") << "d:\\a\\bc\\def\\../../.." << "d:\\a\\bc\\def\\../../..";
+#endif
+#endif
+ QTest::newRow("data7") << ".//file1.txt" << "file1.txt";
+ QTest::newRow("data8") << "/foo/bar/..//file1.txt" << "/foo/file1.txt";
+ QTest::newRow("data9") << "//" << "/";
+#if !defined(Q_OS_WINCE)
+#if defined Q_OS_WIN
+ QTest::newRow("data10") << "c:\\" << "c:/";
+#else
+ QTest::newRow("data10") << "/:/" << "/:";
+#endif
+#endif
+
+ QTest::newRow("resource0") << ":/prefix/foo.bar" << ":/prefix/foo.bar";
+ QTest::newRow("resource1") << "://prefix/..//prefix/foo.bar" << ":/prefix/foo.bar";
+}
+
+
+void
+tst_QDir::cleanPath()
+{
+ QFETCH(QString, path);
+ QFETCH(QString, expected);
+ QString cleaned = QDir::cleanPath(path);
+ QCOMPARE(cleaned, expected);
+}
+
+void tst_QDir::absoluteFilePath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QString>("expectedFilePath");
+
+ QTest::newRow("0") << "/etc" << "/passwd" << "/passwd";
+ QTest::newRow("1") << "/etc" << "passwd" << "/etc/passwd";
+ QTest::newRow("2") << "/" << "passwd" << "/passwd";
+ QTest::newRow("3") << "relative" << "path" << QDir::currentPath() + "/relative/path";
+ QTest::newRow("4") << "" << "" << QDir::currentPath();
+ QTest::newRow("resource") << ":/prefix" << "foo.bar" << ":/prefix/foo.bar";
+}
+
+void tst_QDir::absoluteFilePath()
+{
+ QFETCH(QString, path);
+ QFETCH(QString, fileName);
+ QFETCH(QString, expectedFilePath);
+
+ QDir dir(path);
+ QString absFilePath = dir.absoluteFilePath(fileName);
+ QCOMPARE(absFilePath, expectedFilePath);
+}
+
+void tst_QDir::absolutePath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("expectedPath");
+
+ QTest::newRow("0") << "/machine/share/dir1" << "/machine/share/dir1";
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("1") << "\\machine\\share\\dir1" << "/machine/share/dir1";
+# if !defined(Q_OS_SYMBIAN)
+ QTest::newRow("2") << "//machine/share/dir1" << "//machine/share/dir1";
+ QTest::newRow("3") << "\\\\machine\\share\\dir1" << "//machine/share/dir1";
+# endif
+ QTest::newRow("4") << "c:/machine/share/dir1" << "c:/machine/share/dir1";
+ QTest::newRow("5") << "c:\\machine\\share\\dir1" << "c:/machine/share/dir1";
+#endif
+ //test dirty paths are cleaned (QTBUG-19995)
+ QTest::newRow("/home/qt/.") << QDir::rootPath() + "home/qt/." << QDir::rootPath() + "home/qt";
+ QTest::newRow("/system/data/../config") << QDir::rootPath() + "system/data/../config" << QDir::rootPath() + "system/config";
+ QTest::newRow("//home//qt/") << QDir::rootPath() + "/home//qt/" << QDir::rootPath() + "home/qt";
+ QTest::newRow("foo/../bar") << "foo/../bar" << QDir::currentPath() + "/bar";
+ QTest::newRow("resource") << ":/prefix/foo.bar" << ":/prefix/foo.bar";
+}
+
+void tst_QDir::absolutePath()
+{
+ QFETCH(QString, path);
+ QFETCH(QString, expectedPath);
+
+ QDir dir(path);
+ QCOMPARE(dir.absolutePath(), expectedPath);
+}
+
+void tst_QDir::relativeFilePath_data()
+{
+ QTest::addColumn<QString>("dir");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("0") << "/foo/bar" << "ding.txt" << "ding.txt";
+ QTest::newRow("1") << "/foo/bar" << "ding/dong.txt" << "ding/dong.txt";
+ QTest::newRow("2") << "/foo/bar" << "../ding/dong.txt" << "../ding/dong.txt";
+
+ QTest::newRow("3") << "/foo/bar" << "/foo/bar/ding.txt" << "ding.txt";
+ QTest::newRow("4") << "/foo/bar/" << "/foo/bar/ding/dong.txt" << "ding/dong.txt";
+ QTest::newRow("5") << "/foo/bar/" << "/ding/dong.txt" << "../../ding/dong.txt";
+
+ QTest::newRow("6") << "/" << "/ding/dong.txt" << "ding/dong.txt";
+ QTest::newRow("7") << "/" << "/ding/" << "ding";
+ QTest::newRow("8") << "/" << "/ding//" << "ding";
+ QTest::newRow("9") << "/" << "/ding/../dong" << "dong";
+ QTest::newRow("10") << "/" << "/ding/../../../../dong" << "../../../dong";
+
+ QTest::newRow("11") << "" << "" << "";
+
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("12") << "C:/foo/bar" << "ding" << "ding";
+ QTest::newRow("13") << "C:/foo/bar" << "C:/ding/dong" << "../../ding/dong";
+ QTest::newRow("14") << "C:/foo/bar" << "/ding/dong" << "../../ding/dong";
+ QTest::newRow("15") << "C:/foo/bar" << "D:/ding/dong" << "D:/ding/dong";
+ QTest::newRow("16") << "C:" << "C:/ding/dong" << "ding/dong";
+ QTest::newRow("17") << "C:/" << "C:/ding/dong" << "ding/dong";
+ QTest::newRow("18") << "C:" << "C:" << "";
+ QTest::newRow("19") << "C:/" << "C:" << "";
+ QTest::newRow("20") << "C:" << "C:/" << "";
+ QTest::newRow("21") << "C:/" << "C:/" << "";
+ QTest::newRow("22") << "C:" << "C:file.txt" << "file.txt";
+ QTest::newRow("23") << "C:/" << "C:file.txt" << "file.txt";
+ QTest::newRow("24") << "C:" << "C:/file.txt" << "file.txt";
+ QTest::newRow("25") << "C:/" << "C:/file.txt" << "file.txt";
+ QTest::newRow("26") << "C:" << "D:" << "D:";
+ QTest::newRow("27") << "C:" << "D:/" << "D:/";
+ QTest::newRow("28") << "C:/" << "D:" << "D:";
+ QTest::newRow("29") << "C:/" << "D:/" << "D:/";
+# if !defined(Q_OS_SYMBIAN)
+ QTest::newRow("30") << "C:/foo/bar" << "//anotherHost/foo/bar" << "//anotherHost/foo/bar";
+ QTest::newRow("31") << "//anotherHost/foo" << "//anotherHost/foo/bar" << "bar";
+ QTest::newRow("32") << "//anotherHost/foo" << "bar" << "bar";
+ QTest::newRow("33") << "//anotherHost/foo" << "C:/foo/bar" << "C:/foo/bar";
+# endif
+#endif
+
+ QTest::newRow("resource0") << ":/prefix" << "foo.bar" << "foo.bar";
+ QTest::newRow("resource1") << ":/prefix" << ":/prefix/foo.bar" << "foo.bar";
+}
+
+void tst_QDir::relativeFilePath()
+{
+ QFETCH(QString, dir);
+ QFETCH(QString, path);
+ QFETCH(QString, expected);
+
+ QCOMPARE(QDir(dir).relativeFilePath(path), expected);
+}
+
+void tst_QDir::filePath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QString>("expectedFilePath");
+
+ QTest::newRow("0") << "/etc" << "/passwd" << "/passwd";
+ QTest::newRow("1") << "/etc" << "passwd" << "/etc/passwd";
+ QTest::newRow("2") << "/" << "passwd" << "/passwd";
+ QTest::newRow("3") << "relative" << "path" << "relative/path";
+ QTest::newRow("4") << "" << "" << ".";
+ QTest::newRow("resource") << ":/prefix" << "foo.bar" << ":/prefix/foo.bar";
+}
+
+void tst_QDir::filePath()
+{
+ QFETCH(QString, path);
+ QFETCH(QString, fileName);
+ QFETCH(QString, expectedFilePath);
+
+ QDir dir(path);
+ QString absFilePath = dir.filePath(fileName);
+ QCOMPARE(absFilePath, expectedFilePath);
+}
+
+void tst_QDir::remove()
+{
+ QFile f("remove-test");
+ f.open(QIODevice::WriteOnly);
+ f.close();
+ QDir dir;
+ QVERIFY(dir.remove("remove-test"));
+ QVERIFY(!dir.remove("/remove-test"));
+ QTest::ignoreMessage(QtWarningMsg, "QDir::remove: Empty or null file name");
+ QVERIFY(!dir.remove(""));
+}
+
+void tst_QDir::rename()
+{
+ QFile f("rename-test");
+ f.open(QIODevice::WriteOnly);
+ f.close();
+ QDir dir;
+ QVERIFY(dir.rename("rename-test", "rename-test-renamed"));
+ QVERIFY(dir.rename("rename-test-renamed", "rename-test"));
+#if defined(Q_OS_MAC)
+ QVERIFY(!dir.rename("rename-test", "/etc/rename-test-renamed"));
+#elif defined(Q_OS_SYMBIAN)
+ QVERIFY(!dir.rename("rename-test", "/resource/rename-test-renamed"));
+#elif !defined(Q_OS_WIN)
+ // on windows this is possible - maybe make the test a bit better
+ QVERIFY(!dir.rename("rename-test", "/rename-test-renamed"));
+#endif
+ QTest::ignoreMessage(QtWarningMsg, "QDir::rename: Empty or null file name(s)");
+ QVERIFY(!dir.rename("rename-test", ""));
+ QTest::ignoreMessage(QtWarningMsg, "QDir::rename: Empty or null file name(s)");
+ QVERIFY(!dir.rename("", "rename-test-renamed"));
+ QVERIFY(!dir.rename("some-file-that-does-not-exist", "rename-test-renamed"));
+
+ QVERIFY(dir.remove("rename-test"));
+}
+
+void tst_QDir::exists2_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("exists");
+
+ QTest::newRow("0") << "." << true;
+ QTest::newRow("1") << "/" << true;
+ QTest::newRow("2") << "" << false;
+ QTest::newRow("3") << "testData" << true;
+ QTest::newRow("4") << "/testData" << false;
+ QTest::newRow("5") << "tst_qdir.cpp" << true;
+ QTest::newRow("6") << "/resources.cpp" << false;
+ QTest::newRow("resource0") << ":/prefix/foo.bar" << false;
+ QTest::newRow("resource1") << ":/tst_qdir/resources/entryList/file1.data" << true;
+}
+
+void tst_QDir::exists2()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, exists);
+
+ QString oldpwd = QDir::currentPath();
+ if (strlen(SRCDIR) > 0)
+ QDir::setCurrent(SRCDIR);
+
+ if (path.isEmpty())
+ QTest::ignoreMessage(QtWarningMsg, "QDir::exists: Empty or null file name");
+
+ QDir dir;
+ if (exists)
+ QVERIFY(dir.exists(path));
+ else
+ QVERIFY(!dir.exists(path));
+
+ QDir::setCurrent(oldpwd);
+}
+
+void tst_QDir::dirName_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("dirName");
+
+ QTest::newRow("slash0") << "c:/winnt/system32" << "system32";
+ QTest::newRow("slash1") << "/winnt/system32" << "system32";
+ QTest::newRow("slash2") << "c:/winnt/system32/kernel32.dll" << "kernel32.dll";
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("bslash0") << "c:\\winnt\\system32" << "system32";
+ QTest::newRow("bslash1") << "\\winnt\\system32" << "system32";
+ QTest::newRow("bslash2") << "c:\\winnt\\system32\\kernel32.dll" << "kernel32.dll";
+#endif
+
+ QTest::newRow("resource") << ":/prefix" << "prefix";
+}
+
+void tst_QDir::dirName()
+{
+ QFETCH(QString, path);
+ QFETCH(QString, dirName);
+
+ QDir dir(path);
+ QCOMPARE(dir.dirName(), dirName);
+}
+
+void tst_QDir::operator_eq()
+{
+ QDir dir1(".");
+ dir1 = dir1;
+ dir1.setPath("..");
+}
+
+void tst_QDir::dotAndDotDot()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("WinCE and Symbian do not have . nor ..", SkipAll);
+#else
+ QDir dir(QString(SRCDIR "testdir/"));
+ QStringList entryList = dir.entryList(QDir::Dirs);
+ QCOMPARE(entryList, QStringList() << QString(".") << QString("..") << QString("dir") << QString("spaces"));
+ entryList = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
+ QCOMPARE(entryList, QStringList() << QString("dir") << QString("spaces"));
+#endif
+}
+
+void tst_QDir::homePath()
+{
+ QDir homeDir = QDir::home();
+ QString strHome = QDir::homePath();
+
+ // docs say that homePath() is an absolute path
+ QCOMPARE(strHome, homeDir.absolutePath());
+ QVERIFY(QDir::isAbsolutePath(strHome));
+
+#ifdef Q_OS_UNIX
+ if (strHome.length() > 1) // root dir = "/"
+ QVERIFY(!strHome.endsWith('/'));
+#elif defined(Q_OS_WIN)
+ if (strHome.length() > 3) // root dir = "c:/"; "//" is not really valid...
+ QVERIFY(!strHome.endsWith('/'));
+#endif
+
+ QStringList entries = homeDir.entryList();
+ for (int i = 0; i < entries.count(); ++i) {
+ QFileInfo fi(QDir::homePath() + "/" + entries[i]);
+ QCOMPARE(fi.exists(), true);
+ }
+}
+
+void tst_QDir::tempPath()
+{
+ QDir dir = QDir::temp();
+ QString path = QDir::tempPath();
+
+ // docs say that tempPath() is an absolute path
+ QCOMPARE(path, dir.absolutePath());
+ QVERIFY(QDir::isAbsolutePath(path));
+
+#ifdef Q_OS_UNIX
+ if (path.length() > 1) // root dir = "/"
+ QVERIFY(!path.endsWith('/'));
+#elif defined(Q_OS_WIN)
+ if (path.length() > 3) // root dir = "c:/"; "//" is not really valid...
+ QVERIFY(!path.endsWith('/'));
+#endif
+}
+
+void tst_QDir::rootPath()
+{
+ QDir dir = QDir::root();
+ QString path = QDir::rootPath();
+
+ // docs say that tempPath() is an absolute path
+ QCOMPARE(path, dir.absolutePath());
+ QVERIFY(QDir::isAbsolutePath(path));
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ QCOMPARE(path, QString("/"));
+#endif
+}
+
+void tst_QDir::nativeSeparators()
+{
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QCOMPARE(QDir::toNativeSeparators(QLatin1String("/")), QString("\\"));
+ QCOMPARE(QDir::toNativeSeparators(QLatin1String("\\")), QString("\\"));
+ QCOMPARE(QDir::fromNativeSeparators(QLatin1String("/")), QString("/"));
+ QCOMPARE(QDir::fromNativeSeparators(QLatin1String("\\")), QString("/"));
+#else
+ QCOMPARE(QDir::toNativeSeparators(QLatin1String("/")), QString("/"));
+ QCOMPARE(QDir::toNativeSeparators(QLatin1String("\\")), QString("\\"));
+ QCOMPARE(QDir::fromNativeSeparators(QLatin1String("/")), QString("/"));
+ QCOMPARE(QDir::fromNativeSeparators(QLatin1String("\\")), QString("\\"));
+#endif
+}
+
+void tst_QDir::searchPaths_data()
+{
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<QString>("searchPathPrefixes");
+ QTest::addColumn<QString>("searchPaths");
+ QTest::addColumn<QString>("expectedAbsolutePath");
+
+ QString srcdir = SRCDIR;
+ if (srcdir.isEmpty())
+ srcdir = QDir::currentPath();
+ else
+ srcdir.chop(1); // remove ending slash
+ QString searchDir = srcdir + "/searchdir";
+
+ // sanity
+ QTest::newRow("nopath") << "picker.png" << QString() << QString() << QString();
+ QTest::newRow("emptysearchpath") << "subdir1/picker.png" << QString() << QString() << QString();
+ QTest::newRow("searchpathwithoutprefix") << SRCDIR "searchdir/subdir1/picker.png" << QString("searchpath") << QString("searchdir") << (searchDir+"/subdir1/picker.png");
+
+ // new
+ QTest::newRow("novalidsearchpath") << "searchpath:subdir1/picker.png" << QString() << QString() << QString();
+ QTest::newRow("invalidsearchpath") << "searchpath:subdir1/picker.png" << QString("invalid") << QString("invalid") << QString();
+ QTest::newRow("onlyvalidsearchpath") << "searchpath:subdir1/picker.png" << QString("searchpath") << QString(SRCDIR "searchdir") << (searchDir+"/subdir1/picker.png");
+ QTest::newRow("validandinvalidsearchpath") << "searchpath:subdir1/picker.png" << QString("invalid;searchpath") << QString("invalid;" SRCDIR "searchdir") << (searchDir+"/subdir1/picker.png");
+ QTest::newRow("precedence1") << "searchpath:picker.png" << QString("invalid;searchpath") << QString("invalid;" SRCDIR "searchdir/subdir1," SRCDIR "searchdir/subdir2") << (searchDir+"/subdir1/picker.png");
+ QTest::newRow("precedence2") << "searchpath:picker.png" << QString("invalid;searchpath") << QString("invalid;" SRCDIR "searchdir/subdir2," SRCDIR "searchdir/subdir1") << (searchDir+"/subdir2/picker.png");
+ QTest::newRow("precedence3") << "searchpath2:picker.png" << QString("searchpath1;searchpath2") << QString(SRCDIR "searchdir/subdir1;" SRCDIR "searchdir/subdir2") << (searchDir+"/subdir2/picker.png");
+
+ // re
+}
+
+void tst_QDir::searchPaths()
+{
+ QFETCH(QString, filename);
+ QFETCH(QString, searchPathPrefixes);
+ QStringList searchPathPrefixList = searchPathPrefixes.split(";", QString::SkipEmptyParts);
+ QFETCH(QString, searchPaths);
+ QStringList searchPathsList = searchPaths.split(";", QString::SkipEmptyParts);
+ QFETCH(QString, expectedAbsolutePath);
+ bool exists = !expectedAbsolutePath.isEmpty();
+
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QDir::setSearchPaths(searchPathPrefixList.at(i), searchPathsList.at(i).split(","));
+ }
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)) == searchPathsList.at(i).split(","));
+ }
+
+ QCOMPARE(QFile(filename).exists(), exists);
+ QCOMPARE(QFileInfo(filename).exists(), exists);
+
+ if (exists) {
+ QCOMPARE(QFileInfo(filename).absoluteFilePath(), expectedAbsolutePath);
+ }
+
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QDir::setSearchPaths(searchPathPrefixList.at(i), QStringList());
+ }
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)).isEmpty());
+ }
+
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ foreach (QString path, searchPathsList.at(i).split(",")) {
+ QDir::addSearchPath(searchPathPrefixList.at(i), path);
+ }
+ }
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)) == searchPathsList.at(i).split(","));
+ }
+
+ QCOMPARE(QFile(filename).exists(), exists);
+ QCOMPARE(QFileInfo(filename).exists(), exists);
+
+ if (exists) {
+ QCOMPARE(QFileInfo(filename).absoluteFilePath(), expectedAbsolutePath);
+ }
+
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QDir::setSearchPaths(searchPathPrefixList.at(i), QStringList());
+ }
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)).isEmpty());
+ }
+}
+
+void tst_QDir::entryListWithSearchPaths()
+{
+ QDir realDir(":/tst_qdir/resources/entryList");
+ QVERIFY(realDir.exists());
+ QVERIFY(!realDir.entryList().isEmpty());
+ QVERIFY(realDir.entryList().contains("file3.data"));
+
+ QDir::setSearchPaths("searchpath", QStringList(":/tst_qdir/resources"));
+ QDir dir("searchpath:entryList/");
+ QCOMPARE(dir.path(), QString(":/tst_qdir/resources/entryList"));
+ QVERIFY(dir.exists());
+ QStringList entryList = dir.entryList();
+ QVERIFY(entryList.contains("file3.data"));
+}
+
+void tst_QDir::longFileName_data()
+{
+ QTest::addColumn<int>("length");
+
+ QTest::newRow("128") << 128;
+ QTest::newRow("256") << 256;
+ QTest::newRow("512") << 512;
+ QTest::newRow("1024") << 1024;
+ QTest::newRow("2048") << 2048;
+ QTest::newRow("4096") << 4096;
+}
+
+void tst_QDir::longFileName()
+{
+ QFETCH(int, length);
+
+ QString fileName(length, QLatin1Char('a'));
+ fileName += QLatin1String(".txt");
+
+ QFile file(fileName);
+ if (!file.open(QFile::WriteOnly))
+ QSKIP("Cannot create long file names", SkipAll);
+
+ QFile file2(fileName);
+ QVERIFY(file2.open(QFile::ReadOnly));
+
+ QVERIFY(QDir().entryList().contains(fileName));
+
+ file.close();
+ file2.close();
+
+ QFile::remove(fileName);
+}
+
+void tst_QDir::updateFileLists()
+{
+ // Test setup
+
+ FileSystem fs;
+
+ QVERIFY( fs.createDirectory("update-file-lists") );
+ QVERIFY( fs.createFile("update-file-lists/file1.txt") );
+ QVERIFY( fs.createFile("update-file-lists/file2.doc") );
+
+ QVERIFY( fs.createDirectory("update-file-lists/sub-dir1") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir1/file3.txt") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir1/file4.doc") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir1/file5.txt") );
+
+ QVERIFY( fs.createDirectory("update-file-lists/sub-dir2") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir2/file6.txt") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir2/file7.txt") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir2/file8.doc") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir2/file9.doc") );
+
+ // Actual test
+
+ QDir dir("update-file-lists");
+
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE)
+ //no . and .. on these OS.
+ QCOMPARE(dir.count(), uint(4));
+ QCOMPARE(dir.entryList().size(), 4);
+ QCOMPARE(dir.entryInfoList().size(), 4);
+#else
+ QCOMPARE(dir.count(), uint(6));
+ QCOMPARE(dir.entryList().size(), 6);
+ QCOMPARE(dir.entryInfoList().size(), 6);
+#endif
+
+ dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot);
+
+ QCOMPARE(dir.entryList().size(), 4);
+ QCOMPARE(dir.count(), uint(4));
+ QCOMPARE(dir.entryInfoList().size(), 4);
+
+ dir.setPath("update-file-lists/sub-dir1");
+
+ QCOMPARE(dir.entryInfoList().size(), 3);
+ QCOMPARE(dir.count(), uint(3));
+ QCOMPARE(dir.entryList().size(), 3);
+
+ dir.setNameFilters(QStringList("*.txt"));
+
+ QCOMPARE(dir.entryInfoList().size(), 2);
+ QCOMPARE(dir.entryList().size(), 2);
+ QCOMPARE(dir.count(), uint(2));
+
+ dir.setPath("update-file-lists");
+ dir = QDir(dir.path(),
+ "*.txt",
+ QDir::Name | QDir::DirsLast,
+ QDir::AllEntries | QDir::AllDirs | QDir::NoDotAndDotDot);
+
+ QCOMPARE(dir.count(), uint(3));
+ QCOMPARE(dir.entryList().size(), 3);
+ QCOMPARE(dir.entryInfoList().size(), 3);
+ QCOMPARE(dir.entryList(), QStringList() << "file1.txt" << "sub-dir1" << "sub-dir2");
+
+ dir.setSorting(QDir::Name | QDir::DirsFirst);
+
+ QCOMPARE(dir.count(), uint(3));
+ QCOMPARE(dir.entryList().size(), 3);
+ QCOMPARE(dir.entryInfoList().size(), 3);
+ QCOMPARE(dir.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "file1.txt");
+
+ {
+ QVERIFY( fs.createFile("update-file-lists/extra-file.txt") );
+
+ QDir dir2(dir);
+
+ QCOMPARE(dir2.count(), uint(3));
+ QCOMPARE(dir2.entryList().size(), 3);
+ QCOMPARE(dir2.entryInfoList().size(), 3);
+ QCOMPARE(dir2.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "file1.txt");
+
+ dir2.refresh();
+
+ QCOMPARE(dir2.count(), uint(4));
+ QCOMPARE(dir2.entryList().size(), 4);
+ QCOMPARE(dir2.entryInfoList().size(), 4);
+ QCOMPARE(dir2.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "extra-file.txt" << "file1.txt");
+ }
+
+ QCOMPARE(dir.count(), uint(3));
+ QCOMPARE(dir.entryList().size(), 3);
+ QCOMPARE(dir.entryInfoList().size(), 3);
+ QCOMPARE(dir.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "file1.txt");
+}
+
+void tst_QDir::detachingOperations()
+{
+ QString const defaultPath(".");
+ QStringList const defaultNameFilters = QStringList("*");
+ QDir::SortFlags const defaultSorting = QDir::Name | QDir::IgnoreCase;
+ QDir::Filters const defaultFilter = QDir::AllEntries;
+
+ QString const path1("..");
+ QString const path2("./foo");
+ QStringList const nameFilters = QStringList(QString("*.txt"));
+ QDir::SortFlags const sorting = QDir::Name | QDir::DirsLast | QDir::Reversed;
+ QDir::Filters const filter = QDir::Writable;
+
+ QDir dir1;
+
+ QCOMPARE(dir1.path(), defaultPath);
+ QCOMPARE(dir1.filter(), defaultFilter);
+ QCOMPARE(dir1.nameFilters(), defaultNameFilters);
+ QCOMPARE(dir1.sorting(), defaultSorting);
+
+ dir1.setPath(path1);
+ QCOMPARE(dir1.path(), path1);
+ QCOMPARE(dir1.filter(), defaultFilter);
+ QCOMPARE(dir1.nameFilters(), defaultNameFilters);
+ QCOMPARE(dir1.sorting(), defaultSorting);
+
+ dir1.setFilter(filter);
+ QCOMPARE(dir1.path(), path1);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), defaultNameFilters);
+ QCOMPARE(dir1.sorting(), defaultSorting);
+
+ dir1.setNameFilters(nameFilters);
+ QCOMPARE(dir1.path(), path1);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), defaultSorting);
+
+ dir1.setSorting(sorting);
+ QCOMPARE(dir1.path(), path1);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), sorting);
+
+ dir1.setPath(path2);
+ QCOMPARE(dir1.path(), path2);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), sorting);
+
+ {
+ QDir dir2(dir1);
+ QCOMPARE(dir2.path(), path2);
+ QCOMPARE(dir2.filter(), filter);
+ QCOMPARE(dir2.nameFilters(), nameFilters);
+ QCOMPARE(dir2.sorting(), sorting);
+ }
+
+ {
+ QDir dir2;
+ QCOMPARE(dir2.path(), defaultPath);
+ QCOMPARE(dir2.filter(), defaultFilter);
+ QCOMPARE(dir2.nameFilters(), defaultNameFilters);
+ QCOMPARE(dir2.sorting(), defaultSorting);
+
+ dir2 = dir1;
+ QCOMPARE(dir2.path(), path2);
+ QCOMPARE(dir2.filter(), filter);
+ QCOMPARE(dir2.nameFilters(), nameFilters);
+ QCOMPARE(dir2.sorting(), sorting);
+
+ dir2 = path1;
+ QCOMPARE(dir2.path(), path1);
+ QCOMPARE(dir2.filter(), filter);
+ QCOMPARE(dir2.nameFilters(), nameFilters);
+ QCOMPARE(dir2.sorting(), sorting);
+ }
+
+ dir1.refresh();
+ QCOMPARE(dir1.path(), path2);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), sorting);
+
+ QString const currentPath = QDir::currentPath();
+ QVERIFY(dir1.cd(currentPath));
+ QCOMPARE(dir1.path(), currentPath);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), sorting);
+
+ QVERIFY(dir1.cdUp());
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), sorting);
+}
+
+void tst_QDir::testCaching()
+{
+ QString dirName = QString::fromLatin1("testCaching");
+ QDir::current().rmdir(dirName); // cleanup a previous run.
+ QDir dir(dirName);
+ QVERIFY(!dir.exists());
+ QDir::current().mkdir(dirName);
+ QVERIFY(QDir(dirName).exists()); // dir exists
+ QVERIFY(dir.exists()); // QDir doesn't cache the 'exist' between calls.
+}
+
+void tst_QDir::isRoot_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isRoot");
+
+ QString test = QDir::rootPath();
+ QTest::newRow(QString("rootPath " + test).toLatin1()) << test << true;
+ test = QDir::rootPath().append("./");
+ QTest::newRow(QString("./ appended " + test).toLatin1()) << test << false;
+
+ test = QDir(QDir::rootPath().append("./")).canonicalPath();
+#ifdef Q_OS_MAC
+ // On Mac OS X 10.5 and earlier, canonicalPath depends on cleanPath which
+ // is itself very broken and fundamentally wrong on "/./", which this would
+ // exercise
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6)
+#endif
+ QTest::newRow(QString("canonicalPath " + test).toLatin1()) << test << true;
+
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ test = QDir::rootPath().left(2);
+ QTest::newRow(QString("drive relative " + test).toLatin1()) << test << false;
+#endif
+
+ QTest::newRow("resources root") << ":/" << true;
+ QTest::newRow("resources nonroot") << ":/entrylist" << false;
+}
+
+void tst_QDir::isRoot()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isRoot);
+
+ QDir dir(path);
+ QCOMPARE(dir.isRoot(),isRoot);
+}
+
+#ifndef QT_NO_REGEXP
+void tst_QDir::match_data()
+{
+ QTest::addColumn<QString>("filter");
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<bool>("match");
+
+ QTest::newRow("single, matching") << "*.cpp" << "tst_qdir.cpp" << true;
+ QTest::newRow("single, not matching") << "*.cpp" << "tst_qdir.h" << false;
+ QTest::newRow("multi, matching") << "*.cpp;*.h" << "tst_qdir.cpp" << true;
+ QTest::newRow("multi, matching2") << "*.cpp;*.h" << "tst_qdir.h" << true;
+ QTest::newRow("multi, not matching") << "*.cpp;*.h" << "readme.txt" << false;
+}
+
+void tst_QDir::match()
+{
+ QFETCH(QString, filter);
+ QFETCH(QString, filename);
+ QFETCH(bool, match);
+
+ QCOMPARE(QDir::match(filter, filename), match);
+ QCOMPARE(QDir::match(filter.split(QLatin1Char(';')), filename), match);
+}
+#endif
+
+void tst_QDir::drives()
+{
+ QFileInfoList list(QDir::drives());
+#if defined(Q_OS_WIN)
+ QVERIFY(list.count() >= 1); //system
+ QLatin1Char systemdrive('c');
+#elif defined(Q_OS_SYMBIAN)
+ QVERIFY(list.count() >= 2); //system, rom
+ QLatin1Char romdrive('z');
+ QLatin1Char systemdrive('a' + int(RFs::GetSystemDrive()));
+#endif
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QVERIFY(list.count() <= 26);
+ bool foundsystem = false;
+#ifdef Q_OS_SYMBIAN
+ bool foundrom = false;
+#endif
+ foreach (QFileInfo fi, list) {
+ QCOMPARE(fi.absolutePath().size(), 3); //"x:/"
+ QCOMPARE(fi.absolutePath().at(1), QChar(QLatin1Char(':')));
+ QCOMPARE(fi.absolutePath().at(2), QChar(QLatin1Char('/')));
+ if (fi.absolutePath().at(0).toLower() == systemdrive)
+ foundsystem = true;
+#ifdef Q_OS_SYMBIAN
+ if (fi.absolutePath().at(0).toLower() == romdrive)
+ foundrom = true;
+#endif
+ }
+ QCOMPARE(foundsystem, true);
+#ifdef Q_OS_SYMBIAN
+ QCOMPARE(foundrom, true);
+#endif
+#else
+ QCOMPARE(list.count(), 1); //root
+ QCOMPARE(list.at(0).absolutePath(), QLatin1String("/"));
+#endif
+}
+
+void tst_QDir::arrayOperator()
+{
+ QDir dir1(SRCDIR "entrylist/");
+ QDir dir2(SRCDIR "entrylist/");
+
+ QStringList entries(dir1.entryList());
+ int i = dir2.count();
+ QCOMPARE(i, entries.count());
+ --i;
+ for (;i>=0;--i) {
+ QCOMPARE(dir2[i], entries.at(i));
+ }
+}
+
+void tst_QDir::equalityOperator_data()
+{
+ QTest::addColumn<QString>("leftPath");
+ QTest::addColumn<QString>("leftNameFilters");
+ QTest::addColumn<int>("leftSort");
+ QTest::addColumn<int>("leftFilters");
+ QTest::addColumn<QString>("rightPath");
+ QTest::addColumn<QString>("rightNameFilters");
+ QTest::addColumn<int>("rightSort");
+ QTest::addColumn<int>("rightFilters");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("same") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << true;
+
+ QTest::newRow("relativepaths") << "entrylist/" << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << "./entrylist" << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << true;
+
+ QTest::newRow("QTBUG-20495") << QDir::currentPath() + "/entrylist/.." << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << "." << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << true;
+
+ QTest::newRow("QTBUG-20495-root") << QDir::rootPath() + "tmp/.." << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << QDir::rootPath() << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << true;
+
+ QTest::newRow("diff-filters") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Dirs)
+ << false;
+
+ QTest::newRow("diff-sort") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << SRCDIR << "*.cpp" << int(QDir::Time) << int(QDir::Files)
+ << false;
+
+ QTest::newRow("diff-namefilters") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << SRCDIR << "*.jpg" << int(QDir::Name) << int(QDir::Files)
+ << false;
+}
+
+void tst_QDir::equalityOperator()
+{
+ QFETCH(QString, leftPath);
+ QFETCH(QString, leftNameFilters);
+ QFETCH(int, leftSort);
+ QFETCH(int, leftFilters);
+ QFETCH(QString, rightPath);
+ QFETCH(QString, rightNameFilters);
+ QFETCH(int, rightSort);
+ QFETCH(int, rightFilters);
+ QFETCH(bool, expected);
+
+ QDir dir1(leftPath, leftNameFilters, QDir::SortFlags(leftSort), QDir::Filters(leftFilters));
+ QDir dir2(rightPath, rightNameFilters, QDir::SortFlags(rightSort), QDir::Filters(rightFilters));
+
+ QCOMPARE((dir1 == dir2), expected);
+ QCOMPARE((dir2 == dir1), expected);
+ QCOMPARE((dir1 != dir2), !expected);
+ QCOMPARE((dir2 != dir1), !expected);
+}
+
+void tst_QDir::isRelative_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("relative");
+
+ QTest::newRow(".") << "./" << true;
+ QTest::newRow("..") << "../" << true;
+ QTest::newRow("content") << "entrylist/" << true;
+ QTest::newRow("current") << QDir::currentPath() << false;
+ QTest::newRow("homepath") << QDir::homePath() << false;
+ QTest::newRow("temppath") << QDir::tempPath() << false;
+ QTest::newRow("rootpath") << QDir::rootPath() << false;
+ foreach (QFileInfo root, QDir::drives()) {
+ QTest::newRow(root.absolutePath().toLocal8Bit()) << root.absolutePath() << false;
+ }
+
+ QTest::newRow("resource") << ":/prefix" << false;
+}
+
+void tst_QDir::isRelative()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, relative);
+
+ QCOMPARE(QDir(path).isRelative(), relative);
+}
+
+void tst_QDir::isReadable()
+{
+ QDir dir;
+
+ QVERIFY(dir.isReadable());
+#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
+ QVERIFY(dir.mkdir("nonreadabledir"));
+ QVERIFY(0 == ::chmod("nonreadabledir", 0));
+ QVERIFY(!QDir("nonreadabledir").isReadable());
+ QVERIFY(0 == ::chmod("nonreadabledir", S_IRUSR | S_IWUSR | S_IXUSR));
+ QVERIFY(dir.rmdir("nonreadabledir"));
+#endif
+}
+
+QTEST_MAIN(tst_QDir)
+#include "tst_qdir.moc"
+
diff --git a/tests/auto/qdir/types/a b/tests/auto/corelib/io/qdir/types/a
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/a
+++ b/tests/auto/corelib/io/qdir/types/a
diff --git a/tests/auto/qdir/types/a.a b/tests/auto/corelib/io/qdir/types/a.a
index 7898192261..7898192261 100644
--- a/tests/auto/qdir/types/a.a
+++ b/tests/auto/corelib/io/qdir/types/a.a
diff --git a/tests/auto/qdir/types/a.b b/tests/auto/corelib/io/qdir/types/a.b
index e61ef7b965..e61ef7b965 100644
--- a/tests/auto/qdir/types/a.b
+++ b/tests/auto/corelib/io/qdir/types/a.b
diff --git a/tests/auto/qdir/types/a.c b/tests/auto/corelib/io/qdir/types/a.c
index 72943a16fb..72943a16fb 100644
--- a/tests/auto/qdir/types/a.c
+++ b/tests/auto/corelib/io/qdir/types/a.c
diff --git a/tests/auto/qdir/types/b b/tests/auto/corelib/io/qdir/types/b
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/b
+++ b/tests/auto/corelib/io/qdir/types/b
diff --git a/tests/auto/qdir/types/b.a b/tests/auto/corelib/io/qdir/types/b.a
index 90b451628d..90b451628d 100644
--- a/tests/auto/qdir/types/b.a
+++ b/tests/auto/corelib/io/qdir/types/b.a
diff --git a/tests/auto/qdir/types/b.b b/tests/auto/corelib/io/qdir/types/b.b
index 5d308e1d06..5d308e1d06 100644
--- a/tests/auto/qdir/types/b.b
+++ b/tests/auto/corelib/io/qdir/types/b.b
diff --git a/tests/auto/qdir/types/b.c b/tests/auto/corelib/io/qdir/types/b.c
index ccc3e7b48d..ccc3e7b48d 100644
--- a/tests/auto/qdir/types/b.c
+++ b/tests/auto/corelib/io/qdir/types/b.c
diff --git a/tests/auto/qdir/types/c b/tests/auto/corelib/io/qdir/types/c
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/c
+++ b/tests/auto/corelib/io/qdir/types/c
diff --git a/tests/auto/qdir/types/c.a b/tests/auto/corelib/io/qdir/types/c.a
index 2b932011c2..2b932011c2 100644
--- a/tests/auto/qdir/types/c.a
+++ b/tests/auto/corelib/io/qdir/types/c.a
diff --git a/tests/auto/qdir/types/c.b b/tests/auto/corelib/io/qdir/types/c.b
index ea8f022358..ea8f022358 100644
--- a/tests/auto/qdir/types/c.b
+++ b/tests/auto/corelib/io/qdir/types/c.b
diff --git a/tests/auto/qdir/types/c.c b/tests/auto/corelib/io/qdir/types/c.c
index e5a0c33b87..e5a0c33b87 100644
--- a/tests/auto/qdir/types/c.c
+++ b/tests/auto/corelib/io/qdir/types/c.c
diff --git a/tests/auto/qdir/entrylist/directory/dummy b/tests/auto/corelib/io/qdir/types/d.a/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/entrylist/directory/dummy
+++ b/tests/auto/corelib/io/qdir/types/d.a/dummy
diff --git a/tests/auto/qdir/types/d.a/dummy b/tests/auto/corelib/io/qdir/types/d.b/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/d.a/dummy
+++ b/tests/auto/corelib/io/qdir/types/d.b/dummy
diff --git a/tests/auto/qdir/types/d.b/dummy b/tests/auto/corelib/io/qdir/types/d.c/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/d.b/dummy
+++ b/tests/auto/corelib/io/qdir/types/d.c/dummy
diff --git a/tests/auto/qdir/types/d.c/dummy b/tests/auto/corelib/io/qdir/types/d/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/d.c/dummy
+++ b/tests/auto/corelib/io/qdir/types/d/dummy
diff --git a/tests/auto/qdir/types/d/dummy b/tests/auto/corelib/io/qdir/types/e.a/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/d/dummy
+++ b/tests/auto/corelib/io/qdir/types/e.a/dummy
diff --git a/tests/auto/qdir/types/e.a/dummy b/tests/auto/corelib/io/qdir/types/e.b/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/e.a/dummy
+++ b/tests/auto/corelib/io/qdir/types/e.b/dummy
diff --git a/tests/auto/qdir/types/e.b/dummy b/tests/auto/corelib/io/qdir/types/e.c/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/e.b/dummy
+++ b/tests/auto/corelib/io/qdir/types/e.c/dummy
diff --git a/tests/auto/qdir/types/e.c/dummy b/tests/auto/corelib/io/qdir/types/e/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/e.c/dummy
+++ b/tests/auto/corelib/io/qdir/types/e/dummy
diff --git a/tests/auto/qdir/types/e/dummy b/tests/auto/corelib/io/qdir/types/f.a/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/e/dummy
+++ b/tests/auto/corelib/io/qdir/types/f.a/dummy
diff --git a/tests/auto/qdir/types/f.a/dummy b/tests/auto/corelib/io/qdir/types/f.b/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/f.a/dummy
+++ b/tests/auto/corelib/io/qdir/types/f.b/dummy
diff --git a/tests/auto/qdir/types/f.b/dummy b/tests/auto/corelib/io/qdir/types/f.c/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/f.b/dummy
+++ b/tests/auto/corelib/io/qdir/types/f.c/dummy
diff --git a/tests/auto/qdir/types/f.c/dummy b/tests/auto/corelib/io/qdir/types/f/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/f.c/dummy
+++ b/tests/auto/corelib/io/qdir/types/f/dummy
diff --git a/tests/auto/qdiriterator/.gitignore b/tests/auto/corelib/io/qdiriterator/.gitignore
index cf5974f1a5..cf5974f1a5 100644
--- a/tests/auto/qdiriterator/.gitignore
+++ b/tests/auto/corelib/io/qdiriterator/.gitignore
diff --git a/tests/auto/qdir/types/f/dummy b/tests/auto/corelib/io/qdiriterator/entrylist/directory/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdir/types/f/dummy
+++ b/tests/auto/corelib/io/qdiriterator/entrylist/directory/dummy
diff --git a/tests/auto/qdiriterator/entrylist/file b/tests/auto/corelib/io/qdiriterator/entrylist/file
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdiriterator/entrylist/file
+++ b/tests/auto/corelib/io/qdiriterator/entrylist/file
diff --git a/tests/auto/corelib/io/qdiriterator/qdiriterator.pro b/tests/auto/corelib/io/qdiriterator/qdiriterator.pro
new file mode 100644
index 0000000000..f9f5c8d664
--- /dev/null
+++ b/tests/auto/corelib/io/qdiriterator/qdiriterator.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+SOURCES += tst_qdiriterator.cpp
+RESOURCES += qdiriterator.qrc
+QT = core
+
+wince*mips*|wincewm50smart-msvc200*: DEFINES += WINCE_BROKEN_ITERATE=1
+
+CONFIG += parallel_test
+CONFIG += insignificant_test # QTBUG-21160
diff --git a/tests/auto/qdiriterator/qdiriterator.qrc b/tests/auto/corelib/io/qdiriterator/qdiriterator.qrc
index 058d474780..058d474780 100644
--- a/tests/auto/qdiriterator/qdiriterator.qrc
+++ b/tests/auto/corelib/io/qdiriterator/qdiriterator.qrc
diff --git a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
new file mode 100644
index 0000000000..9014da9033
--- /dev/null
+++ b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
@@ -0,0 +1,639 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qdebug.h>
+#include <qdiriterator.h>
+#include <qfileinfo.h>
+#include <qstringlist.h>
+
+#if defined(Q_OS_VXWORKS)
+#define Q_NO_SYMLINKS
+#endif
+
+#if defined(Q_OS_SYMBIAN)
+#define Q_NO_SYMLINKS
+#define Q_NO_SYMLINKS_TO_DIRS
+#endif
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+# include "../../../network-settings.h"
+#endif
+
+Q_DECLARE_METATYPE(QDirIterator::IteratorFlags)
+Q_DECLARE_METATYPE(QDir::Filters)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QDirIterator : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QDirIterator();
+ virtual ~tst_QDirIterator();
+
+private: // convenience functions
+ QStringList createdDirectories;
+ QStringList createdFiles;
+
+ QDir currentDir;
+ bool createDirectory(const QString &dirName)
+ {
+ if (currentDir.mkdir(dirName)) {
+ createdDirectories.prepend(dirName);
+ return true;
+ }
+ return false;
+ }
+
+ enum Cleanup { DoDelete, DontDelete };
+ bool createFile(const QString &fileName, Cleanup cleanup = DoDelete)
+ {
+ QFile file(fileName);
+ if (file.open(QIODevice::WriteOnly)) {
+ if (cleanup == DoDelete)
+ createdFiles << fileName;
+ return true;
+ }
+ return false;
+ }
+
+ bool createLink(const QString &destination, const QString &linkName)
+ {
+ if (QFile::link(destination, linkName)) {
+ createdFiles << linkName;
+ return true;
+ }
+ return false;
+ }
+
+private slots:
+ void iterateRelativeDirectory_data();
+ void iterateRelativeDirectory();
+ void iterateResource_data();
+ void iterateResource();
+ void stopLinkLoop();
+ void engineWithNoIterator();
+ void absoluteFilePathsFromRelativeIteratorPath();
+ void recurseWithFilters() const;
+ void longPath();
+ void task185502_dirorder();
+ void relativePaths();
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ void uncPaths_data();
+ void uncPaths();
+#endif
+ void qtbug15421_hiddenDirs_hiddenFiles();
+};
+
+tst_QDirIterator::tst_QDirIterator()
+{
+ QFile::remove("entrylist/entrylist1.lnk");
+ QFile::remove("entrylist/entrylist2.lnk");
+ QFile::remove("entrylist/entrylist3.lnk");
+ QFile::remove("entrylist/entrylist4.lnk");
+ QFile::remove("entrylist/directory/entrylist1.lnk");
+ QFile::remove("entrylist/directory/entrylist2.lnk");
+ QFile::remove("entrylist/directory/entrylist3.lnk");
+ QFile::remove("entrylist/directory/entrylist4.lnk");
+
+ createDirectory("entrylist");
+ createDirectory("entrylist/directory");
+ createFile("entrylist/file", DontDelete);
+ createFile("entrylist/writable");
+ createFile("entrylist/directory/dummy", DontDelete);
+
+ createDirectory("recursiveDirs");
+ createDirectory("recursiveDirs/dir1");
+ createFile("recursiveDirs/textFileA.txt");
+ createFile("recursiveDirs/dir1/aPage.html");
+ createFile("recursiveDirs/dir1/textFileB.txt");
+
+ createDirectory("foo");
+ createDirectory("foo/bar");
+ createFile("foo/bar/readme.txt");
+
+ createDirectory("empty");
+
+#ifndef Q_NO_SYMLINKS
+# if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ // ### Sadly, this is a platform difference right now.
+ createLink("entrylist/file", "entrylist/linktofile.lnk");
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ createLink("entrylist/directory", "entrylist/linktodirectory.lnk");
+# endif
+ createLink("entrylist/nothing", "entrylist/brokenlink.lnk");
+# else
+ createLink("file", "entrylist/linktofile.lnk");
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ createLink("directory", "entrylist/linktodirectory.lnk");
+# endif
+ createLink("nothing", "entrylist/brokenlink.lnk");
+# endif
+#endif
+
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/normalFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenFile");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/normalFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/.hiddenFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/normalFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenFile");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/normalDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/.hiddenDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/normalDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenDirectory");
+}
+
+tst_QDirIterator::~tst_QDirIterator()
+{
+ Q_FOREACH(QString fileName, createdFiles)
+ QFile::remove(fileName);
+
+ Q_FOREACH(QString dirName, createdDirectories)
+ currentDir.rmdir(dirName);
+}
+
+void tst_QDirIterator::iterateRelativeDirectory_data()
+{
+ QTest::addColumn<QString>("dirName"); // relative from current path or abs
+ QTest::addColumn<QDirIterator::IteratorFlags>("flags");
+ QTest::addColumn<QDir::Filters>("filters");
+ QTest::addColumn<QStringList>("nameFilters");
+ QTest::addColumn<QStringList>("entries");
+
+ QTest::newRow("no flags")
+ << QString("entrylist") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoFilter) << QStringList("*")
+ << QString(
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ "entrylist/.,"
+ "entrylist/..,"
+#endif
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory,"
+#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
+ "entrylist/linktodirectory.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("NoDot")
+ << QString("entrylist") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::AllEntries | QDir::NoDot) << QStringList("*")
+ << QString(
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ "entrylist/..,"
+#endif
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory,"
+#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
+ "entrylist/linktodirectory.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("NoDotDot")
+ << QString("entrylist") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::AllEntries | QDir::NoDotDot) << QStringList("*")
+ << QString(
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ "entrylist/.,"
+#endif
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory,"
+#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
+ "entrylist/linktodirectory.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("NoDotAndDotDot")
+ << QString("entrylist") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::AllEntries | QDir::NoDotAndDotDot) << QStringList("*")
+ << QString(
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory,"
+#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
+ "entrylist/linktodirectory.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("QDir::Subdirectories | QDir::FollowSymlinks")
+ << QString("entrylist") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories | QDirIterator::FollowSymlinks)
+ << QDir::Filters(QDir::NoFilter) << QStringList("*")
+ << QString(
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ "entrylist/.,"
+ "entrylist/..,"
+ "entrylist/directory/.,"
+ "entrylist/directory/..,"
+#endif
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory,"
+ "entrylist/directory/dummy,"
+#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
+ "entrylist/linktodirectory.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("QDir::Subdirectories / QDir::Files")
+ << QString("entrylist") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories)
+ << QDir::Filters(QDir::Files) << QStringList("*")
+ << QString("entrylist/directory/dummy,"
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("QDir::Subdirectories | QDir::FollowSymlinks / QDir::Files")
+ << QString("entrylist") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories | QDirIterator::FollowSymlinks)
+ << QDir::Filters(QDir::Files) << QStringList("*")
+ << QString("entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory/dummy,"
+ "entrylist/writable").split(',');
+
+ QTest::newRow("empty, default")
+ << QString("empty") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoFilter) << QStringList("*")
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE)
+ << QStringList();
+#else
+ << QString("empty/.,empty/..").split(',');
+#endif
+
+ QTest::newRow("empty, QDir::NoDotAndDotDot")
+ << QString("empty") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoDotAndDotDot) << QStringList("*")
+ << QStringList();
+}
+
+void tst_QDirIterator::iterateRelativeDirectory()
+{
+ QFETCH(QString, dirName);
+ QFETCH(QDirIterator::IteratorFlags, flags);
+ QFETCH(QDir::Filters, filters);
+ QFETCH(QStringList, nameFilters);
+ QFETCH(QStringList, entries);
+
+ QDirIterator it(dirName, nameFilters, filters, flags);
+ QStringList list;
+ while (it.hasNext()) {
+ QString next = it.next();
+
+ QString fileName = it.fileName();
+ QString filePath = it.filePath();
+ QString path = it.path();
+
+ QFileInfo info = it.fileInfo();
+
+ QCOMPARE(path, dirName);
+ QCOMPARE(next, filePath);
+
+ QCOMPARE(info, QFileInfo(next));
+ QCOMPARE(fileName, info.fileName());
+ QCOMPARE(filePath, info.filePath());
+
+ // Using canonical file paths for final comparison
+ list << info.canonicalFilePath();
+ }
+
+ // The order of items returned by QDirIterator is not guaranteed.
+ list.sort();
+
+ QStringList sortedEntries;
+ foreach(QString item, entries)
+ sortedEntries.append(QFileInfo(item).canonicalFilePath());
+ sortedEntries.sort();
+
+ if (sortedEntries != list) {
+ qDebug() << "EXPECTED:" << sortedEntries;
+ qDebug() << "ACTUAL: " << list;
+ }
+
+ QCOMPARE(list, sortedEntries);
+}
+
+void tst_QDirIterator::iterateResource_data()
+{
+ QTest::addColumn<QString>("dirName"); // relative from current path or abs
+ QTest::addColumn<QDirIterator::IteratorFlags>("flags");
+ QTest::addColumn<QDir::Filters>("filters");
+ QTest::addColumn<QStringList>("nameFilters");
+ QTest::addColumn<QStringList>("entries");
+
+ QTest::newRow("invalid") << QString::fromLatin1(":/burpaburpa") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
+ << QStringList();
+ QTest::newRow(":/") << QString::fromLatin1(":/") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
+ << QString::fromLatin1(":/entrylist").split(QLatin1String(","));
+ QTest::newRow(":/entrylist") << QString::fromLatin1(":/entrylist") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
+ << QString::fromLatin1(":/entrylist/directory,:/entrylist/file").split(QLatin1String(","));
+ QTest::newRow(":/ recursive") << QString::fromLatin1(":/") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories)
+ << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
+ << QString::fromLatin1(":/entrylist,:/entrylist/directory,:/entrylist/directory/dummy,:/entrylist/file").split(QLatin1String(","));
+}
+
+void tst_QDirIterator::iterateResource()
+{
+ QFETCH(QString, dirName);
+ QFETCH(QDirIterator::IteratorFlags, flags);
+ QFETCH(QDir::Filters, filters);
+ QFETCH(QStringList, nameFilters);
+ QFETCH(QStringList, entries);
+
+ QDirIterator it(dirName, nameFilters, filters, flags);
+ QStringList list;
+ while (it.hasNext())
+ list << it.next();
+
+ list.sort();
+ QStringList sortedEntries = entries;
+ sortedEntries.sort();
+
+ if (sortedEntries != list) {
+ qDebug() << "EXPECTED:" << sortedEntries;
+ qDebug() << "ACTUAL:" << list;
+ }
+
+ QCOMPARE(list, sortedEntries);
+}
+
+void tst_QDirIterator::stopLinkLoop()
+{
+#ifdef Q_OS_WIN
+ // ### Sadly, this is a platform difference right now.
+ createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/entrylist1.lnk");
+ createLink("entrylist/.", "entrylist/entrylist2.lnk");
+ createLink("entrylist/../entrylist/.", "entrylist/entrylist3.lnk");
+ createLink("entrylist/..", "entrylist/entrylist4.lnk");
+ createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/directory/entrylist1.lnk");
+ createLink("entrylist/.", "entrylist/directory/entrylist2.lnk");
+ createLink("entrylist/../directory/.", "entrylist/directory/entrylist3.lnk");
+ createLink("entrylist/..", "entrylist/directory/entrylist4.lnk");
+#else
+ createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/entrylist1.lnk");
+ createLink(".", "entrylist/entrylist2.lnk");
+ createLink("../entrylist/.", "entrylist/entrylist3.lnk");
+ createLink("..", "entrylist/entrylist4.lnk");
+ createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/directory/entrylist1.lnk");
+ createLink(".", "entrylist/directory/entrylist2.lnk");
+ createLink("../directory/.", "entrylist/directory/entrylist3.lnk");
+ createLink("..", "entrylist/directory/entrylist4.lnk");
+#endif
+
+ QDirIterator it(QLatin1String("entrylist"), QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+ QStringList list;
+ int max = 200;
+ while (--max && it.hasNext())
+ it.next();
+ QVERIFY(max);
+
+ // The goal of this test is only to ensure that the test above don't malfunction
+}
+
+class EngineWithNoIterator : public QFSFileEngine
+{
+public:
+ EngineWithNoIterator(const QString &fileName)
+ : QFSFileEngine(fileName)
+ { }
+
+ QAbstractFileEngineIterator *beginEntryList(QDir::Filters, const QStringList &)
+ { return 0; }
+};
+
+class EngineWithNoIteratorHandler : public QAbstractFileEngineHandler
+{
+public:
+ QAbstractFileEngine *create(const QString &fileName) const
+ {
+ return new EngineWithNoIterator(fileName);
+ }
+};
+
+void tst_QDirIterator::engineWithNoIterator()
+{
+ EngineWithNoIteratorHandler handler;
+
+ QDir("entrylist").entryList();
+ QVERIFY(true); // test that the above line doesn't crash
+}
+
+void tst_QDirIterator::absoluteFilePathsFromRelativeIteratorPath()
+{
+ QDirIterator it("entrylist/", QDir::NoDotAndDotDot);
+ while (it.hasNext()) {
+ it.next();
+ QVERIFY(QFileInfo(it.filePath()).absoluteFilePath().contains("entrylist"));
+ }
+}
+
+void tst_QDirIterator::recurseWithFilters() const
+{
+ QStringList nameFilters;
+ nameFilters.append("*.txt");
+
+ QDirIterator it("recursiveDirs/", nameFilters, QDir::Files,
+ QDirIterator::Subdirectories);
+
+ QSet<QString> actualEntries;
+ QSet<QString> expectedEntries;
+ expectedEntries.insert(QString::fromLatin1("recursiveDirs/dir1/textFileB.txt"));
+ expectedEntries.insert(QString::fromLatin1("recursiveDirs/textFileA.txt"));
+
+ QVERIFY(it.hasNext());
+ it.next();
+ actualEntries.insert(it.fileInfo().filePath());
+ QVERIFY(it.hasNext());
+ it.next();
+ actualEntries.insert(it.fileInfo().filePath());
+ QVERIFY(actualEntries == expectedEntries);
+
+ QVERIFY(!it.hasNext());
+}
+
+void tst_QDirIterator::longPath()
+{
+ QDir dir;
+ dir.mkdir("longpaths");
+ dir.cd("longpaths");
+
+ QString dirName = "x";
+ int n = 0;
+ while (dir.exists(dirName) || dir.mkdir(dirName)) {
+ ++n;
+ dirName.append('x');
+#if defined(Q_OS_WINCE) && defined(WINCE_BROKEN_ITERATE)
+ // Some Windows CE devices/emulators are broken.
+ // though one can create directories of length <= 217,
+ // FindNextFile only reports entries until ~ 214.
+ if (n >= 210)
+ break;
+#endif
+ }
+
+ QDirIterator it(dir.absolutePath(), QDir::NoDotAndDotDot|QDir::Dirs, QDirIterator::Subdirectories);
+ int m = 0;
+ while (it.hasNext()) {
+ ++m;
+ it.next();
+ }
+
+ QCOMPARE(n, m);
+
+ dirName.chop(1);
+ while (dirName.length() > 0 && dir.exists(dirName) && dir.rmdir(dirName)) {
+ dirName.chop(1);
+ }
+ dir.cdUp();
+ dir.rmdir("longpaths");
+}
+
+void tst_QDirIterator::task185502_dirorder()
+{
+ QDirIterator iterator("foo", QDirIterator::Subdirectories);
+ while (iterator.hasNext() && iterator.next() != "foo/bar")
+ { }
+
+ QCOMPARE(iterator.filePath(), QString("foo/bar"));
+ QCOMPARE(iterator.fileInfo().filePath(), QString("foo/bar"));
+}
+
+void tst_QDirIterator::relativePaths()
+{
+ QDirIterator iterator("*", QDirIterator::Subdirectories);
+ while(iterator.hasNext()) {
+ QCOMPARE(iterator.filePath(), QDir::cleanPath(iterator.filePath()));
+ }
+}
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+void tst_QDirIterator::uncPaths_data()
+{
+ QTest::addColumn<QString>("dirName");
+ QTest::newRow("uncserver")
+ <<QString("//" + QtNetworkSettings::winServerName());
+ QTest::newRow("uncserver/testshare")
+ <<QString("//" + QtNetworkSettings::winServerName() + "/testshare");
+ QTest::newRow("uncserver/testshare/tmp")
+ <<QString("//" + QtNetworkSettings::winServerName() + "/testshare/tmp");
+}
+void tst_QDirIterator::uncPaths()
+{
+ QFETCH(QString, dirName);
+ QDirIterator iterator(dirName, QDir::AllEntries|QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
+ while(iterator.hasNext()) {
+ iterator.next();
+ QCOMPARE(iterator.filePath(), QDir::cleanPath(iterator.filePath()));
+ }
+}
+#endif
+
+void tst_QDirIterator::qtbug15421_hiddenDirs_hiddenFiles()
+{
+ // In Unix it is easy to create hidden files, but in Windows it requires
+ // a special call since hidden files need to be "marked" while in Unix
+ // anything starting by a '.' is a hidden file.
+ // For that reason this test is not run in Windows.
+#if defined Q_OS_WIN || Q_OS_WINCE
+ QSKIP("To create hidden files a special call is required in Windows.", SkipAll);
+#else
+ // Only files
+ {
+ int matches = 0;
+ int failures = 0;
+ QDirIterator di("qtbug15421_hiddenDirs_hiddenFiles", QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
+ while (di.hasNext()) {
+ ++matches;
+ QString filename = di.next();
+ if (QFileInfo(filename).isDir())
+ ++failures; // search was only supposed to find files
+ }
+ QCOMPARE(matches, 6);
+ QCOMPARE(failures, 0);
+ }
+ // Only directories
+ {
+ int matches = 0;
+ int failures = 0;
+ QDirIterator di("qtbug15421_hiddenDirs_hiddenFiles", QDir::Dirs | QDir::Hidden | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
+ while (di.hasNext()) {
+ ++matches;
+ QString filename = di.next();
+ if (!QFileInfo(filename).isDir())
+ ++failures; // search was only supposed to find files
+ }
+ QCOMPARE(matches, 6);
+ QCOMPARE(failures, 0);
+ }
+#endif // Q_OS_WIN || Q_OS_WINCE
+}
+
+QTEST_MAIN(tst_QDirIterator)
+
+#include "tst_qdiriterator.moc"
+
diff --git a/tests/auto/qfile/.gitattributes b/tests/auto/corelib/io/qfile/.gitattributes
index 3be66dc5eb..3be66dc5eb 100644
--- a/tests/auto/qfile/.gitattributes
+++ b/tests/auto/corelib/io/qfile/.gitattributes
diff --git a/tests/auto/qfile/.gitignore b/tests/auto/corelib/io/qfile/.gitignore
index c508239722..c508239722 100644
--- a/tests/auto/qfile/.gitignore
+++ b/tests/auto/corelib/io/qfile/.gitignore
diff --git a/tests/auto/qfile/copy-fallback.qrc b/tests/auto/corelib/io/qfile/copy-fallback.qrc
index 864491f326..864491f326 100644
--- a/tests/auto/qfile/copy-fallback.qrc
+++ b/tests/auto/corelib/io/qfile/copy-fallback.qrc
diff --git a/tests/auto/qfile/dosfile.txt b/tests/auto/corelib/io/qfile/dosfile.txt
index 47205062e1..47205062e1 100644
--- a/tests/auto/qfile/dosfile.txt
+++ b/tests/auto/corelib/io/qfile/dosfile.txt
diff --git a/tests/auto/qfile/forCopying.txt b/tests/auto/corelib/io/qfile/forCopying.txt
index d4143d5958..d4143d5958 100644
--- a/tests/auto/qfile/forCopying.txt
+++ b/tests/auto/corelib/io/qfile/forCopying.txt
diff --git a/tests/auto/qfile/forRenaming.txt b/tests/auto/corelib/io/qfile/forRenaming.txt
index 7032162406..7032162406 100644
--- a/tests/auto/qfile/forRenaming.txt
+++ b/tests/auto/corelib/io/qfile/forRenaming.txt
diff --git a/tests/auto/corelib/io/qfile/largefile/largefile.pro b/tests/auto/corelib/io/qfile/largefile/largefile.pro
new file mode 100644
index 0000000000..7786bdb892
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/largefile/largefile.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+
+QT = core
+SOURCES += tst_largefile.cpp
+
+wince*: SOURCES += $$QT_SOURCE_TREE/src/corelib/kernel/qfunctions_wince.cpp
+
+CONFIG += parallel_test
+CONFIG += insignificant_test # QTBUG-21175
diff --git a/tests/auto/qfile/largefile/tst_largefile.cpp b/tests/auto/corelib/io/qfile/largefile/tst_largefile.cpp
index bf6cc688ba..bf6cc688ba 100644
--- a/tests/auto/qfile/largefile/tst_largefile.cpp
+++ b/tests/auto/corelib/io/qfile/largefile/tst_largefile.cpp
diff --git a/tests/auto/qfile/noendofline.txt b/tests/auto/corelib/io/qfile/noendofline.txt
index e120842ad9..e120842ad9 100644
--- a/tests/auto/qfile/noendofline.txt
+++ b/tests/auto/corelib/io/qfile/noendofline.txt
diff --git a/tests/auto/qfile/qfile.pro b/tests/auto/corelib/io/qfile/qfile.pro
index f41d32789a..f41d32789a 100644
--- a/tests/auto/qfile/qfile.pro
+++ b/tests/auto/corelib/io/qfile/qfile.pro
diff --git a/tests/auto/qfile/qfile.qrc b/tests/auto/corelib/io/qfile/qfile.qrc
index 2c63d8afeb..2c63d8afeb 100644
--- a/tests/auto/qfile/qfile.qrc
+++ b/tests/auto/corelib/io/qfile/qfile.qrc
diff --git a/tests/auto/qfile/rename-fallback.qrc b/tests/auto/corelib/io/qfile/rename-fallback.qrc
index c8a894a61d..c8a894a61d 100644
--- a/tests/auto/qfile/rename-fallback.qrc
+++ b/tests/auto/corelib/io/qfile/rename-fallback.qrc
diff --git a/tests/auto/qfile/resources/file1.ext1 b/tests/auto/corelib/io/qfile/resources/file1.ext1
index e56e15bb7d..e56e15bb7d 100644
--- a/tests/auto/qfile/resources/file1.ext1
+++ b/tests/auto/corelib/io/qfile/resources/file1.ext1
diff --git a/tests/auto/qfile/stdinprocess/main.cpp b/tests/auto/corelib/io/qfile/stdinprocess/main.cpp
index 57a8d904f5..57a8d904f5 100644
--- a/tests/auto/qfile/stdinprocess/main.cpp
+++ b/tests/auto/corelib/io/qfile/stdinprocess/main.cpp
diff --git a/tests/auto/qfile/stdinprocess/stdinprocess.pro b/tests/auto/corelib/io/qfile/stdinprocess/stdinprocess.pro
index bf791ffc61..bf791ffc61 100644
--- a/tests/auto/qfile/stdinprocess/stdinprocess.pro
+++ b/tests/auto/corelib/io/qfile/stdinprocess/stdinprocess.pro
diff --git a/tests/auto/corelib/io/qfile/test/test.pro b/tests/auto/corelib/io/qfile/test/test.pro
new file mode 100644
index 0000000000..4117d3f690
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/test/test.pro
@@ -0,0 +1,45 @@
+load(qttest_p4)
+SOURCES += ../tst_qfile.cpp
+
+wince*|symbian {
+ QT = core gui
+ files.files += ..\\dosfile.txt ..\\noendofline.txt ..\\testfile.txt \
+ ..\\testlog.txt ..\\two.dots.file ..\\tst_qfile.cpp \
+ ..\\Makefile ..\\forCopying.txt ..\\forRenaming.txt
+ files.path = .
+ resour.files += ..\\resources\\file1.ext1
+ resour.path = resources
+
+ DEPLOYMENT += files resour
+}
+
+wince* {
+ SOURCES += $$QT_SOURCE_TREE/src/corelib/kernel/qfunctions_wince.cpp # needed for QT_OPEN
+ DEFINES += SRCDIR=\\\"\\\"
+} else:symbian {
+ # do not define SRCDIR at all
+ TARGET.EPOCHEAPSIZE = 0x100000 0x3000000
+} else {
+ QT = core network
+ DEFINES += SRCDIR=\\\"$$PWD/../\\\"
+}
+
+RESOURCES += ../qfile.qrc ../rename-fallback.qrc ../copy-fallback.qrc
+
+TARGET = ../tst_qfile
+
+win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qfile
+ } else {
+ TARGET = ../../release/tst_qfile
+ }
+ LIBS+=-lole32 -luuid
+}
+
+symbian {
+ LIBS+=-lefsrv
+}
+
+mac*:CONFIG+=insignificant_test
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qfile/testfile.txt b/tests/auto/corelib/io/qfile/testfile.txt
index a5f25a118a..a5f25a118a 100644
--- a/tests/auto/qfile/testfile.txt
+++ b/tests/auto/corelib/io/qfile/testfile.txt
diff --git a/tests/auto/qfile/testlog.txt b/tests/auto/corelib/io/qfile/testlog.txt
index bcc7222b2f..bcc7222b2f 100644
--- a/tests/auto/qfile/testlog.txt
+++ b/tests/auto/corelib/io/qfile/testlog.txt
diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp
new file mode 100644
index 0000000000..f2031497ed
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp
@@ -0,0 +1,3406 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qplatformdefs.h>
+
+#include <QAbstractFileEngine>
+#include <QFSFileEngine>
+#include <QCoreApplication>
+#include <QDebug>
+#include <QDir>
+#include <QFile>
+#include <QFileInfo>
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+#include <QHostInfo>
+#endif
+#include <QProcess>
+#ifndef Q_OS_WIN
+# include <sys/types.h>
+# include <unistd.h>
+#endif
+#ifdef Q_OS_MAC
+# include <sys/mount.h>
+#elif defined(Q_OS_LINUX)
+# include <sys/vfs.h>
+#elif defined(Q_OS_FREEBSD)
+# include <sys/param.h>
+# include <sys/mount.h>
+#elif defined(Q_OS_IRIX)
+# include <sys/statfs.h>
+#elif defined(Q_OS_WINCE)
+# include <qplatformdefs.h>
+# include <private/qfsfileengine_p.h>
+#elif defined(Q_OS_SYMBIAN)
+# include <f32file.h>
+#endif
+
+#include <stdio.h>
+#include <errno.h>
+#include "../../../network-settings.h"
+
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR ""
+#endif
+
+#ifndef STDIN_FILENO
+#define STDIN_FILENO 0
+#endif
+
+#ifndef STDOUT_FILENO
+#define STDOUT_FILENO 1
+#endif
+
+#ifndef STDERR_FILENO
+#define STDERR_FILENO 2
+#endif
+
+#ifndef QT_OPEN_BINARY
+#define QT_OPEN_BINARY 0
+#endif
+
+Q_DECLARE_METATYPE(QFile::FileError)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QFile : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QFile();
+ virtual ~tst_QFile();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void exists();
+ void open_data();
+ void open();
+ void openUnbuffered();
+ void size_data();
+ void size();
+ void sizeNoExist();
+ void seek();
+ void setSize();
+ void setSizeSeek();
+ void atEnd();
+ void readLine();
+ void readLine2();
+ void readLineNullInLine();
+ void readAll_data();
+ void readAll();
+ void readAllBuffer();
+ void readAllStdin();
+ void readLineStdin();
+ void readLineStdin_lineByLine();
+ void text();
+ void missingEndOfLine();
+ void readBlock();
+ void getch();
+ void ungetChar();
+ void createFile();
+ void append();
+ void permissions_data();
+ void permissions();
+ void setPermissions();
+ void copy();
+ void copyAfterFail();
+ void copyRemovesTemporaryFile() const;
+ void copyShouldntOverwrite();
+ void copyFallback();
+ void link();
+ void linkToDir();
+ void absolutePathLinkToRelativePath();
+ void readBrokenLink();
+ void readTextFile_data();
+ void readTextFile();
+ void readTextFile2();
+ void writeTextFile_data();
+ void writeTextFile();
+ /* void largeFileSupport(); */
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ void largeUncFileSupport();
+#endif
+ void tailFile();
+ void flush();
+ void bufferedRead();
+ void isSequential();
+ void encodeName();
+ void truncate();
+ void seekToPos();
+ void seekAfterEndOfFile();
+ void FILEReadWrite();
+ void i18nFileName_data();
+ void i18nFileName();
+ void longFileName_data();
+ void longFileName();
+ void fileEngineHandler();
+ void useQFileInAFileHandler();
+ void getCharFF();
+ void remove_and_exists();
+ void removeOpenFile();
+ void fullDisk();
+ void writeLargeDataBlock_data();
+ void writeLargeDataBlock();
+ void readFromWriteOnlyFile();
+ void writeToReadOnlyFile();
+ void virtualFile();
+ void textFile();
+ void rename_data();
+ void rename();
+ void renameWithAtEndSpecialFile() const;
+ void renameFallback();
+ void renameMultiple();
+ void appendAndRead();
+ void miscWithUncPathAsCurrentDir();
+ void standarderror();
+ void handle();
+ void nativeHandleLeaks();
+
+ void readEof_data();
+ void readEof();
+
+ void map_data();
+ void map();
+ void mapResource_data();
+ void mapResource();
+ void mapOpenMode_data();
+ void mapOpenMode();
+
+ void openStandardStreams();
+
+ void resize_data();
+ void resize();
+
+ void objectConstructors();
+#ifdef Q_OS_SYMBIAN
+ void platformSecurity_data();
+ void platformSecurity();
+#endif
+ void caseSensitivity();
+
+ void autocloseHandle();
+
+ // --- Task related tests below this line
+ void task167217();
+
+ void openDirectory();
+ void writeNothing();
+
+public:
+// disabled this test for the moment... it hangs
+ void invalidFile_data();
+ void invalidFile();
+
+private:
+ enum FileType {
+ OpenQFile,
+ OpenFd,
+ OpenStream,
+#ifdef Q_OS_SYMBIAN
+ OpenRFile,
+#endif
+ NumberOfFileTypes
+ };
+
+ void openStandardStreamsFileDescriptors();
+ void openStandardStreamsBufferedStreams();
+
+ bool openFd(QFile &file, QIODevice::OpenMode mode, QFile::FileHandleFlags handleFlags)
+ {
+ int fdMode = QT_OPEN_LARGEFILE | QT_OPEN_BINARY;
+
+ // File will be truncated if in Write mode.
+ if (mode & QIODevice::WriteOnly)
+ fdMode |= QT_OPEN_WRONLY | QT_OPEN_TRUNC;
+ if (mode & QIODevice::ReadOnly)
+ fdMode |= QT_OPEN_RDONLY;
+
+ fd_ = QT_OPEN(qPrintable(file.fileName()), fdMode);
+
+ return (-1 != fd_) && file.open(fd_, mode, handleFlags);
+ }
+
+ bool openStream(QFile &file, QIODevice::OpenMode mode, QFile::FileHandleFlags handleFlags)
+ {
+ char const *streamMode = "";
+
+ // File will be truncated if in Write mode.
+ if (mode & QIODevice::WriteOnly)
+ streamMode = "wb+";
+ else if (mode & QIODevice::ReadOnly)
+ streamMode = "rb";
+
+ stream_ = QT_FOPEN(qPrintable(file.fileName()), streamMode);
+
+ return stream_ && file.open(stream_, mode, handleFlags);
+ }
+
+#ifdef Q_OS_SYMBIAN
+ bool openRFile(QFile &file, QIODevice::OpenMode mode, QFile::FileHandleFlags handleFlags)
+ {
+ //connect file server first time
+ if (!rfs_.Handle() && rfs_.Connect() != KErrNone)
+ return false;
+ //symbian does not like ./ in filenames, so open by absolute path
+ QString fileName(QDir::toNativeSeparators(QFileInfo(file).absoluteFilePath()));
+ TPtrC fn(fileName.utf16(), fileName.length());
+ TInt smode = 0;
+ if (mode & QIODevice::WriteOnly)
+ smode |= EFileWrite;
+ if (mode & QIODevice::ReadOnly)
+ smode |= EFileRead;
+ TInt r;
+ if ((mode & QIODevice::Truncate) || (!(mode & QIODevice::ReadOnly) && !(mode & QIODevice::Append))) {
+ r = rfile_.Replace(rfs_, fn, smode);
+ } else {
+ r = rfile_.Open(rfs_, fn, smode);
+ if (r == KErrNotFound && (mode & QIODevice::WriteOnly)) {
+ r = rfile_.Create(rfs_, fn, smode);
+ }
+ }
+ return (r == KErrNone) && file.open(rfile_, mode, handleFlags);
+ }
+#endif
+
+ bool openFile(QFile &file, QIODevice::OpenMode mode, FileType type = OpenQFile, QFile::FileHandleFlags handleFlags = QFile::DontCloseHandle)
+ {
+ if (mode & QIODevice::WriteOnly && !file.exists())
+ {
+ // Make sure the file exists
+ QFile createFile(file.fileName());
+ if (!createFile.open(QIODevice::ReadWrite))
+ return false;
+ }
+
+ // Note: openFd and openStream will truncate the file if write mode.
+ switch (type)
+ {
+ case OpenQFile:
+ return file.open(mode);
+
+ case OpenFd:
+ return openFd(file, mode, handleFlags);
+
+ case OpenStream:
+ return openStream(file, mode, handleFlags);
+#ifdef Q_OS_SYMBIAN
+ case OpenRFile:
+ return openRFile(file, mode, handleFlags);
+#endif
+ case NumberOfFileTypes:
+ break;
+ }
+
+ return false;
+ }
+
+ void closeFile(QFile &file)
+ {
+ file.close();
+
+ if (-1 != fd_)
+ QT_CLOSE(fd_);
+ if (stream_)
+ ::fclose(stream_);
+#ifdef Q_OS_SYMBIAN
+ if (rfile_.SubSessionHandle())
+ rfile_.Close();
+#endif
+
+ fd_ = -1;
+ stream_ = 0;
+ }
+
+ int fd_;
+ FILE *stream_;
+#ifdef Q_OS_SYMBIAN
+ RFs rfs_;
+ RFile rfile_;
+#endif
+};
+
+tst_QFile::tst_QFile()
+{
+}
+
+tst_QFile::~tst_QFile()
+{
+
+}
+
+void tst_QFile::init()
+{
+// TODO: Add initialization code here.
+// This will be executed immediately before each test is run.
+ fd_ = -1;
+ stream_ = 0;
+}
+
+void tst_QFile::cleanup()
+{
+// TODO: Add cleanup code here.
+// This will be executed immediately after each test is run.
+
+ // for copyFallback()
+ if (QFile::exists("file-copy-destination.txt")) {
+ QFile::setPermissions("file-copy-destination.txt",
+ QFile::ReadOwner | QFile::WriteOwner);
+ QFile::remove("file-copy-destination.txt");
+ }
+
+ // for renameFallback()
+ QFile::remove("file-rename-destination.txt");
+
+ // for copyAfterFail()
+ QFile::remove("file-to-be-copied.txt");
+ QFile::remove("existing-file.txt");
+ QFile::remove("copied-file-1.txt");
+ QFile::remove("copied-file-2.txt");
+
+ // for renameMultiple()
+ QFile::remove("file-to-be-renamed.txt");
+ QFile::remove("existing-file.txt");
+ QFile::remove("file-renamed-once.txt");
+ QFile::remove("file-renamed-twice.txt");
+
+ if (-1 != fd_)
+ QT_CLOSE(fd_);
+ if (stream_)
+ ::fclose(stream_);
+}
+
+void tst_QFile::initTestCase()
+{
+ QFile::remove("noreadfile");
+
+ // create a file and make it read-only
+ QFile file("readonlyfile");
+ file.open(QFile::WriteOnly);
+ file.write("a", 1);
+ file.close();
+ file.setPermissions(QFile::ReadOwner);
+
+ // create another file and make it not readable
+ file.setFileName("noreadfile");
+ file.open(QFile::WriteOnly);
+ file.write("b", 1);
+ file.close();
+ file.setPermissions(0);
+}
+
+void tst_QFile::cleanupTestCase()
+{
+ // clean up the files we created
+ QFile::remove("readonlyfile");
+ QFile::remove("noreadfile");
+ QFile::remove("myLink.lnk");
+ QFile::remove("appendme.txt");
+ QFile::remove("createme.txt");
+ QFile::remove("file.txt");
+ QFile::remove("genfile.txt");
+ QFile::remove("seekToPos.txt");
+ QFile::remove("setsizeseek.txt");
+ QFile::remove("stdfile.txt");
+ QFile::remove("textfile.txt");
+ QFile::remove("truncate.txt");
+ QFile::remove("winfile.txt");
+ QFile::remove("writeonlyfile");
+ QFile::remove("largeblockfile.txt");
+ QFile::remove("tst_qfile_copy.cpp");
+ QFile::remove("nullinline.txt");
+ QFile::remove("myLink2.lnk");
+ QFile::remove("resources");
+ QFile::remove("qfile_map_testfile");
+ QFile::remove("readAllBuffer.txt");
+ QFile::remove("qt_file.tmp");
+ QFile::remove("File.txt");
+}
+
+//------------------------------------------
+// The 'testfile' is currently just a
+// testfile. The path of this file, the
+// attributes and the contents itself
+// will be changed as far as we have a
+// proper way to handle files in the
+// testing environment.
+//------------------------------------------
+
+void tst_QFile::exists()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ QCOMPARE( f.exists(), (bool)TRUE );
+
+ QFile file("nobodyhassuchafile");
+ file.remove();
+ QVERIFY(!file.exists());
+
+ QFile file2("nobodyhassuchafile");
+ QVERIFY(file2.open(QIODevice::WriteOnly));
+ file2.close();
+
+ QVERIFY(file.exists());
+
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ file.close();
+ QVERIFY(file.exists());
+
+ file.remove();
+ QVERIFY(!file.exists());
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QFile unc("//" + QtNetworkSettings::winServerName() + "/testshare/readme.txt");
+ QVERIFY(unc.exists());
+#endif
+}
+
+void tst_QFile::open_data()
+{
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<int>("mode");
+ QTest::addColumn<bool>("ok");
+ QTest::addColumn<QFile::FileError>("status");
+
+#ifdef Q_OS_MAC
+ static const QString denied("Operation not permitted");
+#else
+ static const QString denied("Permission denied");
+#endif
+ QTest::newRow( "exist_readOnly" )
+ << QString(SRCDIR "testfile.txt") << int(QIODevice::ReadOnly)
+ << (bool)TRUE << QFile::NoError;
+
+ QTest::newRow( "exist_writeOnly" )
+ << QString("readonlyfile")
+ << int(QIODevice::WriteOnly)
+ << (bool)FALSE
+ << QFile::OpenError;
+
+ QTest::newRow( "exist_append" )
+ << QString("readonlyfile") << int(QIODevice::Append)
+ << (bool)FALSE << QFile::OpenError;
+
+ QTest::newRow( "nonexist_readOnly" )
+ << QString("nonExist.txt") << int(QIODevice::ReadOnly)
+ << (bool)FALSE << QFile::OpenError;
+
+ QTest::newRow("emptyfile")
+ << QString("")
+ << int(QIODevice::ReadOnly)
+ << (bool)FALSE
+ << QFile::OpenError;
+
+ QTest::newRow("nullfile") << QString() << int(QIODevice::ReadOnly) << (bool)FALSE
+ << QFile::OpenError;
+
+ QTest::newRow("two-dots") << QString(SRCDIR "two.dots.file") << int(QIODevice::ReadOnly) << (bool)TRUE
+ << QFile::NoError;
+
+ QTest::newRow("readonlyfile") << QString("readonlyfile") << int(QIODevice::WriteOnly)
+ << (bool)FALSE << QFile::OpenError;
+ QTest::newRow("noreadfile") << QString("noreadfile") << int(QIODevice::ReadOnly)
+ << (bool)FALSE << QFile::OpenError;
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QTest::newRow("//./PhysicalDrive0") << QString("//./PhysicalDrive0") << int(QIODevice::ReadOnly)
+ << (bool)TRUE << QFile::NoError;
+ QTest::newRow("uncFile") << "//" + QtNetworkSettings::winServerName() + "/testshare/test.pri" << int(QIODevice::ReadOnly)
+ << true << QFile::NoError;
+#endif
+}
+
+void tst_QFile::open()
+{
+ QFETCH( QString, filename );
+ QFETCH( int, mode );
+
+ QFile f( filename );
+
+ QFETCH( bool, ok );
+
+#if defined(Q_OS_SYMBIAN)
+ if (qstrcmp(QTest::currentDataTag(), "noreadfile") == 0)
+ QSKIP("Symbian does not support non-readable files", SkipSingle);
+#elif defined(Q_OS_UNIX)
+ if (::getuid() == 0)
+ // root and Chuck Norris don't care for file permissions. Skip.
+ QSKIP("Running this test as root doesn't make sense", SkipAll);
+#endif
+
+#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
+ QEXPECT_FAIL("noreadfile", "Windows does not currently support non-readable files.", Abort);
+#endif
+ if (filename.isEmpty())
+ QTest::ignoreMessage(QtWarningMsg, "QFSFileEngine::open: No file name specified");
+
+ QCOMPARE(f.open( QIODevice::OpenMode(mode) ), ok);
+
+ QTEST( f.error(), "status" );
+}
+
+void tst_QFile::openUnbuffered()
+{
+ QFile file(SRCDIR "testfile.txt");
+ QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Unbuffered));
+ char c = '\0';
+ QVERIFY(file.seek(1));
+ QCOMPARE(file.pos(), qint64(1));
+ QVERIFY(file.getChar(&c));
+ QCOMPARE(file.pos(), qint64(2));
+ char d = '\0';
+ QVERIFY(file.seek(3));
+ QCOMPARE(file.pos(), qint64(3));
+ QVERIFY(file.getChar(&d));
+ QCOMPARE(file.pos(), qint64(4));
+ QVERIFY(file.seek(1));
+ QCOMPARE(file.pos(), qint64(1));
+ char c2 = '\0';
+ QVERIFY(file.getChar(&c2));
+ QCOMPARE(file.pos(), qint64(2));
+ QVERIFY(file.seek(3));
+ QCOMPARE(file.pos(), qint64(3));
+ char d2 = '\0';
+ QVERIFY(file.getChar(&d2));
+ QCOMPARE(file.pos(), qint64(4));
+ QCOMPARE(c, c2);
+ QCOMPARE(d, d2);
+ QCOMPARE(c, '-');
+ QCOMPARE(d, '-');
+}
+
+void tst_QFile::size_data()
+{
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<qint64>("size");
+
+ QTest::newRow( "exist01" ) << QString(SRCDIR "testfile.txt") << (qint64)245;
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ // Only test UNC on Windows./
+ QTest::newRow("unc") << "//" + QString(QtNetworkSettings::winServerName() + "/testshare/test.pri") << (qint64)34;
+#endif
+}
+
+void tst_QFile::size()
+{
+ QFETCH( QString, filename );
+ QFETCH( qint64, size );
+
+#ifdef Q_WS_WINCE
+ filename = QFileInfo(filename).absoluteFilePath();
+#endif
+
+ {
+ QFile f( filename );
+ QCOMPARE( f.size(), size );
+
+ QVERIFY( f.open(QIODevice::ReadOnly) );
+ QCOMPARE( f.size(), size );
+ }
+
+ {
+ QFile f;
+ FILE* stream = QT_FOPEN(filename.toLocal8Bit().constData(), "rb");
+ QVERIFY( stream );
+ QVERIFY( f.open(stream, QIODevice::ReadOnly) );
+ QCOMPARE( f.size(), size );
+
+ f.close();
+ fclose(stream);
+ }
+
+ {
+#ifdef Q_WS_WINCE
+ QSKIP("Currently low level file I/O not well supported on Windows CE", SkipSingle);
+#endif
+ QFile f;
+
+ int fd = QT_OPEN(filename.toLocal8Bit().constData(), QT_OPEN_RDONLY);
+
+ QVERIFY( fd != -1 );
+ QVERIFY( f.open(fd, QIODevice::ReadOnly) );
+ QCOMPARE( f.size(), size );
+
+ f.close();
+ QT_CLOSE(fd);
+ }
+}
+
+void tst_QFile::sizeNoExist()
+{
+ QFile file("nonexist01");
+ QVERIFY( !file.exists() );
+ QCOMPARE( file.size(), (qint64)0 );
+ QVERIFY( !file.open(QIODevice::ReadOnly) );
+}
+
+void tst_QFile::seek()
+{
+ QFile::remove("newfile.txt");
+ QFile file("newfile.txt");
+ file.open(QIODevice::WriteOnly);
+ QCOMPARE(file.size(), qint64(0));
+ QCOMPARE(file.pos(), qint64(0));
+ QVERIFY(file.seek(10));
+ QCOMPARE(file.pos(), qint64(10));
+ QCOMPARE(file.size(), qint64(0));
+ file.close();
+ QFile::remove("newfile.txt");
+}
+
+void tst_QFile::setSize()
+{
+ DEPENDS_ON( "size" );
+
+ if ( QFile::exists( "createme.txt" ) )
+ QFile::remove( "createme.txt" );
+ QVERIFY( !QFile::exists( "createme.txt" ) );
+
+ QFile f("createme.txt");
+ QVERIFY(f.open(QIODevice::Truncate | QIODevice::ReadWrite));
+ f.putChar('a');
+
+ f.seek(0);
+ char c = '\0';
+ f.getChar(&c);
+ QCOMPARE(c, 'a');
+
+ QCOMPARE(f.size(), (qlonglong)1);
+ bool ok = f.resize(99);
+ QVERIFY(ok);
+ QCOMPARE(f.size(), (qlonglong)99);
+
+ f.seek(0);
+ c = '\0';
+ f.getChar(&c);
+ QCOMPARE(c, 'a');
+
+ QVERIFY(f.resize(1));
+ QCOMPARE(f.size(), (qlonglong)1);
+
+ f.seek(0);
+ c = '\0';
+ f.getChar(&c);
+ QCOMPARE(c, 'a');
+
+ f.close();
+
+ QCOMPARE(f.size(), (qlonglong)1);
+ QVERIFY(f.resize(100));
+ QCOMPARE(f.size(), (qlonglong)100);
+ QVERIFY(f.resize(50));
+ QCOMPARE(f.size(), (qlonglong)50);
+}
+
+void tst_QFile::setSizeSeek()
+{
+ QFile::remove("setsizeseek.txt");
+ QFile f("setsizeseek.txt");
+ QVERIFY(f.open(QFile::WriteOnly));
+ f.write("ABCD");
+
+ QCOMPARE(f.pos(), qint64(4));
+ f.resize(2);
+ QCOMPARE(f.pos(), qint64(2));
+ f.resize(4);
+ QCOMPARE(f.pos(), qint64(2));
+ f.resize(0);
+ QCOMPARE(f.pos(), qint64(0));
+ f.resize(4);
+ QCOMPARE(f.pos(), qint64(0));
+
+ f.seek(3);
+ QCOMPARE(f.pos(), qint64(3));
+ f.resize(2);
+ QCOMPARE(f.pos(), qint64(2));
+}
+
+void tst_QFile::atEnd()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ QVERIFY(f.open( QIODevice::ReadOnly ));
+
+ int size = f.size();
+ f.seek( size );
+
+ bool end = f.atEnd();
+ f.close();
+ QCOMPARE( end, (bool)TRUE );
+}
+
+void tst_QFile::readLine()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ QVERIFY(f.open( QIODevice::ReadOnly ));
+
+ int i = 0;
+ char p[128];
+ int foo;
+ while ( (foo=f.readLine( p, 128 )) > 0 ) {
+ ++i;
+ if ( i == 5 ) {
+ QCOMPARE( p[0], 'T' );
+ QCOMPARE( p[3], 's' );
+ QCOMPARE( p[11], 'i' );
+ }
+ }
+ f.close();
+ QCOMPARE( i, 6 );
+}
+
+void tst_QFile::readLine2()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ f.open( QIODevice::ReadOnly );
+
+ char p[128];
+ QCOMPARE(f.readLine(p, 60), qlonglong(59));
+ QCOMPARE(f.readLine(p, 60), qlonglong(59));
+ memset(p, '@', sizeof(p));
+ QCOMPARE(f.readLine(p, 60), qlonglong(59));
+
+ QCOMPARE(p[57], '-');
+ QCOMPARE(p[58], '\n');
+ QCOMPARE(p[59], '\0');
+ QCOMPARE(p[60], '@');
+}
+
+void tst_QFile::readLineNullInLine()
+{
+ QFile::remove("nullinline.txt");
+ QFile file("nullinline.txt");
+ QVERIFY(file.open(QIODevice::ReadWrite));
+ QVERIFY(file.write("linewith\0null\nanotherline\0withnull\n\0\nnull\0", 42) > 0);
+ QVERIFY(file.flush());
+ file.reset();
+
+ QCOMPARE(file.readLine(), QByteArray("linewith\0null\n", 14));
+ QCOMPARE(file.readLine(), QByteArray("anotherline\0withnull\n", 21));
+ QCOMPARE(file.readLine(), QByteArray("\0\n", 2));
+ QCOMPARE(file.readLine(), QByteArray("null\0", 5));
+ QCOMPARE(file.readLine(), QByteArray());
+}
+
+void tst_QFile::readAll_data()
+{
+ QTest::addColumn<bool>("textMode");
+ QTest::addColumn<QString>("fileName");
+ QTest::newRow( "TextMode unixfile" ) << true << SRCDIR "testfile.txt";
+ QTest::newRow( "BinaryMode unixfile" ) << false << SRCDIR "testfile.txt";
+ QTest::newRow( "TextMode dosfile" ) << true << SRCDIR "dosfile.txt";
+ QTest::newRow( "BinaryMode dosfile" ) << false << SRCDIR "dosfile.txt";
+ QTest::newRow( "TextMode bigfile" ) << true << SRCDIR "tst_qfile.cpp";
+ QTest::newRow( "BinaryMode bigfile" ) << false << SRCDIR "tst_qfile.cpp";
+ QVERIFY(QFile(SRCDIR "tst_qfile.cpp").size() > 64*1024);
+}
+
+void tst_QFile::readAll()
+{
+ QFETCH( bool, textMode );
+ QFETCH( QString, fileName );
+
+ QFile file(fileName);
+ if (textMode)
+ QVERIFY(file.open(QFile::Text | QFile::ReadOnly));
+ else
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ QByteArray a = file.readAll();
+ file.reset();
+ QVERIFY(file.pos() == 0);
+
+ QVERIFY(file.bytesAvailable() > 7);
+ QByteArray b = file.read(1);
+ char x;
+ file.getChar(&x);
+ b.append(x);
+ b.append(file.read(5));
+ b.append(file.readAll());
+
+ QCOMPARE(a, b);
+}
+
+void tst_QFile::readAllBuffer()
+{
+ QString fileName = QLatin1String("readAllBuffer.txt");
+
+ QFile::remove(fileName);
+
+ QFile writer(fileName);
+ QFile reader(fileName);
+
+ QByteArray data1("This is arguably a very simple text.");
+ QByteArray data2("This is surely not as simple a test.");
+
+ QVERIFY( writer.open(QIODevice::ReadWrite | QIODevice::Unbuffered) );
+ QVERIFY( reader.open(QIODevice::ReadOnly) );
+
+ QCOMPARE( writer.write(data1), qint64(data1.size()) );
+ QVERIFY( writer.seek(0) );
+
+ QByteArray result;
+ result = reader.read(18);
+ QCOMPARE( result.size(), 18 );
+
+ QCOMPARE( writer.write(data2), qint64(data2.size()) ); // new data, old version buffered in reader
+ QCOMPARE( writer.write(data2), qint64(data2.size()) ); // new data, unbuffered in reader
+
+ result += reader.readAll();
+
+ QCOMPARE( result, data1 + data2 );
+
+ QFile::remove(fileName);
+}
+
+void tst_QFile::readAllStdin()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Currently no stdin/out supported for Windows CE or Symbian", SkipAll);
+#endif
+#if defined(QT_NO_PROCESS)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+ QByteArray lotsOfData(1024, '@'); // 10 megs
+
+ QProcess process;
+ process.start("stdinprocess/stdinprocess all");
+ QVERIFY( process.waitForStarted() );
+ for (int i = 0; i < 5; ++i) {
+ QTest::qWait(1000);
+ process.write(lotsOfData);
+ while (process.bytesToWrite() > 0) {
+ QVERIFY(process.waitForBytesWritten());
+ }
+ }
+
+ process.closeWriteChannel();
+ process.waitForFinished();
+ QCOMPARE(process.readAll().size(), lotsOfData.size() * 5);
+#endif
+}
+
+void tst_QFile::readLineStdin()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Currently no stdin/out supported for Windows CE or Symbian", SkipAll);
+#endif
+#if defined(QT_NO_PROCESS)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+
+ QByteArray lotsOfData(1024, '@'); // 10 megs
+ for (int i = 0; i < lotsOfData.size(); ++i) {
+ if ((i % 32) == 31)
+ lotsOfData[i] = '\n';
+ else
+ lotsOfData[i] = char('0' + i % 32);
+ }
+
+ for (int i = 0; i < 2; ++i) {
+ QProcess process;
+ process.start(QString("stdinprocess/stdinprocess line %1").arg(i), QIODevice::Text | QIODevice::ReadWrite);
+ for (int i = 0; i < 5; ++i) {
+ QTest::qWait(1000);
+ process.write(lotsOfData);
+ while (process.bytesToWrite() > 0) {
+ QVERIFY(process.waitForBytesWritten());
+ }
+ }
+
+ process.closeWriteChannel();
+ QVERIFY(process.waitForFinished(5000));
+
+ QByteArray array = process.readAll();
+ QCOMPARE(array.size(), lotsOfData.size() * 5);
+ for (int i = 0; i < array.size(); ++i) {
+ if ((i % 32) == 31)
+ QCOMPARE(char(array[i]), '\n');
+ else
+ QCOMPARE(char(array[i]), char('0' + i % 32));
+ }
+ }
+#endif
+}
+
+void tst_QFile::readLineStdin_lineByLine()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Currently no stdin/out supported for Windows CE", SkipAll);
+#endif
+#if defined(QT_NO_PROCESS)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+ for (int i = 0; i < 2; ++i) {
+ QProcess process;
+ process.start(QString("stdinprocess/stdinprocess line %1").arg(i), QIODevice::Text | QIODevice::ReadWrite);
+ QVERIFY(process.waitForStarted());
+
+ for (int j = 0; j < 3; ++j) {
+ QByteArray line = "line " + QByteArray::number(j) + "\n";
+ QCOMPARE(process.write(line), qint64(line.size()));
+ QVERIFY(process.waitForBytesWritten(2000));
+ if (process.bytesAvailable() == 0)
+ QVERIFY(process.waitForReadyRead(2000));
+ QCOMPARE(process.readAll(), line);
+ }
+
+ process.closeWriteChannel();
+ QVERIFY(process.waitForFinished(5000));
+ }
+#endif
+}
+
+void tst_QFile::text()
+{
+ // dosfile.txt is a binary CRLF file
+ QFile file(SRCDIR "dosfile.txt");
+ QVERIFY(file.open(QFile::Text | QFile::ReadOnly));
+ QCOMPARE(file.readLine(),
+ QByteArray("/dev/system/root / reiserfs acl,user_xattr 1 1\n"));
+ QCOMPARE(file.readLine(),
+ QByteArray("/dev/sda1 /boot ext3 acl,user_xattr 1 2\n"));
+ file.ungetChar('\n');
+ file.ungetChar('2');
+ QCOMPARE(file.readLine().constData(), QByteArray("2\n").constData());
+}
+
+void tst_QFile::missingEndOfLine()
+{
+ QFile file(SRCDIR "noendofline.txt");
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ int nlines = 0;
+ while (!file.atEnd()) {
+ ++nlines;
+ file.readLine();
+ }
+
+ QCOMPARE(nlines, 3);
+}
+
+void tst_QFile::readBlock()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ f.open( QIODevice::ReadOnly );
+
+ int length = 0;
+ char p[256];
+ length = f.read( p, 256 );
+ f.close();
+ QCOMPARE( length, 245 );
+ QCOMPARE( p[59], 'D' );
+ QCOMPARE( p[178], 'T' );
+ QCOMPARE( p[199], 'l' );
+}
+
+void tst_QFile::getch()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ f.open( QIODevice::ReadOnly );
+
+ char c;
+ int i = 0;
+ while (f.getChar(&c)) {
+ QCOMPARE(f.pos(), qint64(i + 1));
+ if ( i == 59 )
+ QCOMPARE( c, 'D' );
+ ++i;
+ }
+ f.close();
+ QCOMPARE( i, 245 );
+}
+
+void tst_QFile::ungetChar()
+{
+ QFile f(SRCDIR "testfile.txt");
+ QVERIFY(f.open(QIODevice::ReadOnly));
+
+ QByteArray array = f.readLine();
+ QCOMPARE(array.constData(), "----------------------------------------------------------\n");
+ f.ungetChar('\n');
+
+ array = f.readLine();
+ QCOMPARE(array.constData(), "\n");
+
+ f.ungetChar('\n');
+ f.ungetChar('-');
+ f.ungetChar('-');
+
+ array = f.readLine();
+ QCOMPARE(array.constData(), "--\n");
+
+ QFile::remove("genfile.txt");
+ QFile out("genfile.txt");
+ QVERIFY(out.open(QIODevice::ReadWrite));
+ out.write("123");
+ out.seek(0);
+ QCOMPARE(out.readAll().constData(), "123");
+ out.ungetChar('3');
+ out.write("4");
+ out.seek(0);
+ QCOMPARE(out.readAll().constData(), "124");
+ out.ungetChar('4');
+ out.ungetChar('2');
+ out.ungetChar('1');
+ char buf[3];
+ QCOMPARE(out.read(buf, sizeof(buf)), qint64(3));
+ QCOMPARE(buf[0], '1');
+ QCOMPARE(buf[1], '2');
+ QCOMPARE(buf[2], '4');
+}
+
+void tst_QFile::invalidFile_data()
+{
+ QTest::addColumn<QString>("fileName");
+#if !defined(Q_WS_WIN) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow( "x11" ) << QString( "qwe//" );
+#else
+ QTest::newRow( "colon1" ) << QString( "fail:invalid" );
+ QTest::newRow( "colon2" ) << QString( "f:ail:invalid" );
+ QTest::newRow( "colon3" ) << QString( ":failinvalid" );
+ QTest::newRow( "forwardslash" ) << QString( "fail/invalid" );
+ QTest::newRow( "asterisk" ) << QString( "fail*invalid" );
+ QTest::newRow( "questionmark" ) << QString( "fail?invalid" );
+ QTest::newRow( "quote" ) << QString( "fail\"invalid" );
+ QTest::newRow( "lt" ) << QString( "fail<invalid" );
+ QTest::newRow( "gt" ) << QString( "fail>invalid" );
+ QTest::newRow( "pipe" ) << QString( "fail|invalid" );
+#endif
+}
+
+void tst_QFile::invalidFile()
+{
+ QFETCH( QString, fileName );
+ QFile f( fileName );
+ QVERIFY( !f.open( QIODevice::ReadWrite ) );
+}
+
+void tst_QFile::createFile()
+{
+ if ( QFile::exists( "createme.txt" ) )
+ QFile::remove( "createme.txt" );
+ QVERIFY( !QFile::exists( "createme.txt" ) );
+
+ QFile f( "createme.txt" );
+ QVERIFY( f.open( QIODevice::WriteOnly ) );
+ f.close();
+ QVERIFY( QFile::exists( "createme.txt" ) );
+}
+
+void tst_QFile::append()
+{
+ const QString name("appendme.txt");
+ if (QFile::exists(name))
+ QFile::remove(name);
+ QVERIFY(!QFile::exists(name));
+
+ QFile f(name);
+ QVERIFY(f.open(QIODevice::WriteOnly | QIODevice::Truncate));
+ f.putChar('a');
+ f.close();
+
+ QVERIFY(f.open(QIODevice::Append));
+ QVERIFY(f.pos() == 1);
+ f.putChar('a');
+ f.close();
+ QCOMPARE(int(f.size()), 2);
+}
+
+void tst_QFile::permissions_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<uint>("perms");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QCoreApplication::instance()->applicationFilePath() << uint(QFile::ExeUser) << true;
+ QTest::newRow("data1") << SRCDIR "tst_qfile.cpp" << uint(QFile::ReadUser) << true;
+// QTest::newRow("data2") << "tst_qfile.cpp" << int(QFile::WriteUser) << false;
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << uint(QFile::ReadUser) << true;
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1" << uint(QFile::WriteUser) << false;
+ QTest::newRow("resource3") << ":/tst_qfileinfo/resources/file1.ext1" << uint(QFile::ExeUser) << false;
+}
+
+void tst_QFile::permissions()
+{
+#if defined(Q_OS_SYMBIAN)
+ if (qstrcmp(QTest::currentDataTag(), "data0") == 0)
+ QSKIP("Symbian does not have execution permissions", SkipSingle);
+#endif
+ QFETCH(QString, file);
+ QFETCH(uint, perms);
+ QFETCH(bool, expected);
+ QFile f(file);
+ QCOMPARE(((f.permissions() & perms) == QFile::Permissions(perms)), expected);
+ QCOMPARE(((QFile::permissions(file) & perms) == QFile::Permissions(perms)), expected);
+}
+
+void tst_QFile::setPermissions()
+{
+ DEPENDS_ON( "permissions" ); //if that doesn't work...
+
+ if ( QFile::exists( "createme.txt" ) )
+ QFile::remove( "createme.txt" );
+ QVERIFY( !QFile::exists( "createme.txt" ) );
+
+ QFile f("createme.txt");
+ QVERIFY(f.open(QIODevice::WriteOnly | QIODevice::Truncate));
+ f.putChar('a');
+ f.close();
+
+ QFile::Permissions perms(QFile::WriteUser | QFile::ReadUser);
+ QVERIFY(f.setPermissions(perms));
+ QVERIFY((f.permissions() & perms) == perms);
+
+}
+
+void tst_QFile::copy()
+{
+ QFile::setPermissions("tst_qfile_copy.cpp", QFile::WriteUser);
+ QFile::remove("tst_qfile_copy.cpp");
+ QFile::remove("test2");
+ QVERIFY(QFile::copy(SRCDIR "tst_qfile.cpp", "tst_qfile_copy.cpp"));
+ QFile in1(SRCDIR "tst_qfile.cpp"), in2("tst_qfile_copy.cpp");
+ QVERIFY(in1.open(QFile::ReadOnly));
+ QVERIFY(in2.open(QFile::ReadOnly));
+ QByteArray data1 = in1.readAll(), data2 = in2.readAll();
+ QCOMPARE(data1, data2);
+ QFile::remove( "main_copy.cpp" );
+
+ QFile::copy(QDir::currentPath(), QDir::currentPath() + QLatin1String("/test2"));
+}
+
+void tst_QFile::copyAfterFail()
+{
+ QFile file1("file-to-be-copied.txt");
+ QFile file2("existing-file.txt");
+
+ QVERIFY(file1.open(QIODevice::ReadWrite) && "(test-precondition)");
+ QVERIFY(file2.open(QIODevice::ReadWrite) && "(test-precondition)");
+ file2.close();
+ QVERIFY(!QFile::exists("copied-file-1.txt") && "(test-precondition)");
+ QVERIFY(!QFile::exists("copied-file-2.txt") && "(test-precondition)");
+
+ QVERIFY(!file1.copy("existing-file.txt"));
+ QCOMPARE(file1.error(), QFile::CopyError);
+
+ QVERIFY(file1.copy("copied-file-1.txt"));
+ QVERIFY(!file1.isOpen());
+ QCOMPARE(file1.error(), QFile::NoError);
+
+ QVERIFY(!file1.copy("existing-file.txt"));
+ QCOMPARE(file1.error(), QFile::CopyError);
+
+ QVERIFY(file1.copy("copied-file-2.txt"));
+ QVERIFY(!file1.isOpen());
+ QCOMPARE(file1.error(), QFile::NoError);
+
+ QVERIFY(QFile::exists("copied-file-1.txt"));
+ QVERIFY(QFile::exists("copied-file-2.txt"));
+
+ QVERIFY(QFile::remove("file-to-be-copied.txt") && "(test-cleanup)");
+ QVERIFY(QFile::remove("existing-file.txt") && "(test-cleanup)");
+ QVERIFY(QFile::remove("copied-file-1.txt") && "(test-cleanup)");
+ QVERIFY(QFile::remove("copied-file-2.txt") && "(test-cleanup)");
+}
+
+void tst_QFile::copyRemovesTemporaryFile() const
+{
+ const QString newName(QLatin1String("copyRemovesTemporaryFile"));
+ QVERIFY(QFile::copy(SRCDIR "forCopying.txt", newName));
+
+ QVERIFY(!QFile::exists(QLatin1String( SRCDIR "qt_temp.XXXXXX")));
+ QVERIFY(QFile::remove(newName));
+}
+
+void tst_QFile::copyShouldntOverwrite()
+{
+ // Copy should not overwrite existing files.
+ QFile::remove("tst_qfile.cpy");
+ QFile file(SRCDIR "tst_qfile.cpp");
+ QVERIFY(file.copy("tst_qfile.cpy"));
+#if defined(Q_OS_SYMBIAN)
+ bool ok = QFile::setPermissions("tst_qfile.cpy", QFile::WriteUser);
+#else
+ bool ok = QFile::setPermissions("tst_qfile.cpy", QFile::WriteOther);
+#endif
+ QVERIFY(ok);
+ QVERIFY(!file.copy("tst_qfile.cpy"));
+ QFile::remove("tst_qfile.cpy");
+}
+
+void tst_QFile::copyFallback()
+{
+ // Using a resource file to trigger QFile::copy's fallback handling
+ QFile file(":/copy-fallback.qrc");
+ QFile::remove("file-copy-destination.txt");
+
+ QVERIFY2(file.exists(), "test precondition");
+ QVERIFY2(!QFile::exists("file-copy-destination.txt"), "test precondition");
+
+ // Fallback copy of closed file.
+ QVERIFY(file.copy("file-copy-destination.txt"));
+ QVERIFY(QFile::exists("file-copy-destination.txt"));
+ QVERIFY(!file.isOpen());
+
+#ifdef Q_WS_WINCE
+ // Need to reset permissions on Windows to be able to delete
+ QVERIFY(QFile::setPermissions("file-copy-destination.txt",
+ QFile::WriteOther));
+#else
+ // Need to reset permissions on Windows to be able to delete
+ QVERIFY(QFile::setPermissions("file-copy-destination.txt",
+ QFile::ReadOwner | QFile::WriteOwner));
+#endif
+ QVERIFY(QFile::remove("file-copy-destination.txt"));
+
+ // Fallback copy of open file.
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QVERIFY(file.copy("file-copy-destination.txt"));
+ QVERIFY(QFile::exists("file-copy-destination.txt"));
+ QVERIFY(!file.isOpen());
+
+ file.close();
+ QFile::remove("file-copy-destination.txt");
+}
+
+#ifdef Q_OS_WIN
+#include <objbase.h>
+#include <shlobj.h>
+#endif
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+static QString getWorkingDirectoryForLink(const QString &linkFileName)
+{
+ bool neededCoInit = false;
+ QString ret;
+
+ IShellLink *psl;
+ HRESULT hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl);
+ if (hres == CO_E_NOTINITIALIZED) { // COM was not initialized
+ neededCoInit = true;
+ CoInitialize(NULL);
+ hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl);
+ }
+
+ if (SUCCEEDED(hres)) { // Get pointer to the IPersistFile interface.
+ IPersistFile *ppf;
+ hres = psl->QueryInterface(IID_IPersistFile, (LPVOID *)&ppf);
+ if (SUCCEEDED(hres)) {
+ hres = ppf->Load((LPOLESTR)linkFileName.utf16(), STGM_READ);
+ //The original path of the link is retrieved. If the file/folder
+ //was moved, the return value still have the old path.
+ if(SUCCEEDED(hres)) {
+ wchar_t szGotPath[MAX_PATH];
+ if (psl->GetWorkingDirectory(szGotPath, MAX_PATH) == NOERROR)
+ ret = QString::fromWCharArray(szGotPath);
+ }
+ ppf->Release();
+ }
+ psl->Release();
+ }
+
+ if (neededCoInit) {
+ CoUninitialize();
+ }
+
+ return ret;
+}
+#endif
+
+void tst_QFile::link()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Symbian does not support links", SkipAll);
+#endif
+ QFile::remove("myLink.lnk");
+
+ QFileInfo info1(SRCDIR "tst_qfile.cpp");
+ QString referenceTarget = QDir::cleanPath(info1.absoluteFilePath());
+
+ QVERIFY(QFile::link(SRCDIR "tst_qfile.cpp", "myLink.lnk"));
+
+ QFileInfo info2("myLink.lnk");
+ QVERIFY(info2.isSymLink());
+ QCOMPARE(info2.symLinkTarget(), referenceTarget);
+
+ QFile link("myLink.lnk");
+ QVERIFY(link.open(QIODevice::ReadOnly));
+ QCOMPARE(link.symLinkTarget(), referenceTarget);
+ link.close();
+
+ QCOMPARE(QFile::symLinkTarget("myLink.lnk"), referenceTarget);
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QString wd = getWorkingDirectoryForLink(info2.absoluteFilePath());
+ QCOMPARE(QDir::fromNativeSeparators(wd), QDir::cleanPath(info1.absolutePath()));
+#endif
+
+ QVERIFY(QFile::remove(info2.absoluteFilePath()));
+}
+
+void tst_QFile::linkToDir()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Symbian does not support linking to directories", SkipAll);
+#endif
+ QFile::remove("myLinkToDir.lnk");
+ QDir dir;
+ dir.mkdir("myDir");
+ QFileInfo info1("myDir");
+ QVERIFY(QFile::link("myDir", "myLinkToDir.lnk"));
+ QFileInfo info2("myLinkToDir.lnk");
+#if !(defined Q_OS_HPUX && defined(__ia64))
+ // absurd HP-UX filesystem bug on gravlaks - checking if a symlink
+ // resolves or not alters the file system to make the broken symlink
+ // later fail...
+ QVERIFY(info2.isSymLink());
+#endif
+ QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath());
+ QVERIFY(QFile::remove(info2.absoluteFilePath()));
+ QFile::remove("myLinkToDir.lnk");
+ dir.rmdir("myDir");
+}
+
+void tst_QFile::absolutePathLinkToRelativePath()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Symbian does not support links", SkipAll);
+#endif
+ QFile::remove("myDir/test.txt");
+ QFile::remove("myDir/myLink.lnk");
+ QDir dir;
+ dir.mkdir("myDir");
+ QFile("myDir/test.txt").open(QFile::WriteOnly);
+
+#ifdef Q_OS_WIN
+ QVERIFY(QFile::link("test.txt", "myDir/myLink.lnk"));
+#else
+ QVERIFY(QFile::link("myDir/test.txt", "myDir/myLink.lnk"));
+#endif
+ QEXPECT_FAIL("", "Symlinking using relative paths is currently different on Windows and Unix/Symbian", Continue);
+ QCOMPARE(QFileInfo(QFile(QFileInfo("myDir/myLink.lnk").absoluteFilePath()).symLinkTarget()).absoluteFilePath(),
+ QFileInfo("myDir/test.txt").absoluteFilePath());
+
+ QFile::remove("myDir/test.txt");
+ QFile::remove("myDir/myLink.lnk");
+ dir.rmdir("myDir");
+}
+
+void tst_QFile::readBrokenLink()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Symbian does not support links", SkipAll);
+#endif
+ QFile::remove("myLink2.lnk");
+ QFileInfo info1("file12");
+#if defined(Q_OS_SYMBIAN)
+ // In Symbian can't link to nonexisting file directly, so create the file temporarily
+ QFile tempFile("file12");
+ tempFile.open(QIODevice::WriteOnly);
+ tempFile.link("myLink2.lnk");
+ tempFile.remove();
+#else
+ QVERIFY(QFile::link("file12", "myLink2.lnk"));
+#endif
+ QFileInfo info2("myLink2.lnk");
+ QVERIFY(info2.isSymLink());
+ QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath());
+ QVERIFY(QFile::remove(info2.absoluteFilePath()));
+
+#if !defined(Q_OS_SYMBIAN)
+ QVERIFY(QFile::link("ole/..", "myLink2.lnk"));
+ QCOMPARE(QFileInfo("myLink2.lnk").symLinkTarget(), QDir::currentPath());
+#endif
+}
+
+void tst_QFile::readTextFile_data()
+{
+ QTest::addColumn<QByteArray>("in");
+ QTest::addColumn<QByteArray>("out");
+
+ QTest::newRow("empty") << QByteArray() << QByteArray();
+ QTest::newRow("a") << QByteArray("a") << QByteArray("a");
+ QTest::newRow("a\\rb") << QByteArray("a\rb") << QByteArray("ab");
+ QTest::newRow("\\n") << QByteArray("\n") << QByteArray("\n");
+ QTest::newRow("\\r\\n") << QByteArray("\r\n") << QByteArray("\n");
+ QTest::newRow("\\r") << QByteArray("\r") << QByteArray();
+ QTest::newRow("twolines") << QByteArray("Hello\r\nWorld\r\n") << QByteArray("Hello\nWorld\n");
+ QTest::newRow("twolines no endline") << QByteArray("Hello\r\nWorld") << QByteArray("Hello\nWorld");
+}
+
+void tst_QFile::readTextFile()
+{
+ QFETCH(QByteArray, in);
+ QFETCH(QByteArray, out);
+
+ QFile winfile("winfile.txt");
+ QVERIFY(winfile.open(QFile::WriteOnly | QFile::Truncate));
+ winfile.write(in);
+ winfile.close();
+
+ QVERIFY(winfile.open(QFile::ReadOnly));
+ QCOMPARE(winfile.readAll(), in);
+ winfile.close();
+
+ QVERIFY(winfile.open(QFile::ReadOnly | QFile::Text));
+ QCOMPARE(winfile.readAll(), out);
+}
+
+void tst_QFile::readTextFile2()
+{
+ {
+ QFile file(SRCDIR "testlog.txt");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ file.read(4097);
+ }
+
+ {
+ QFile file(SRCDIR "testlog.txt");
+ QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
+ file.read(4097);
+ }
+}
+
+void tst_QFile::writeTextFile_data()
+{
+ QTest::addColumn<QByteArray>("in");
+
+ QTest::newRow("empty") << QByteArray();
+ QTest::newRow("a") << QByteArray("a");
+ QTest::newRow("a\\rb") << QByteArray("a\rb");
+ QTest::newRow("\\n") << QByteArray("\n");
+ QTest::newRow("\\r\\n") << QByteArray("\r\n");
+ QTest::newRow("\\r") << QByteArray("\r");
+ QTest::newRow("twolines crlf") << QByteArray("Hello\r\nWorld\r\n");
+ QTest::newRow("twolines crlf no endline") << QByteArray("Hello\r\nWorld");
+ QTest::newRow("twolines lf") << QByteArray("Hello\nWorld\n");
+ QTest::newRow("twolines lf no endline") << QByteArray("Hello\nWorld");
+ QTest::newRow("mixed") << QByteArray("this\nis\r\na\nmixed\r\nfile\n");
+}
+
+void tst_QFile::writeTextFile()
+{
+ QFETCH(QByteArray, in);
+
+ QFile file("textfile.txt");
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Truncate | QFile::Text));
+ QByteArray out = in;
+#ifdef Q_OS_WIN
+ out.replace('\n', "\r\n");
+#endif
+ QCOMPARE(file.write(in), qlonglong(in.size()));
+ file.close();
+
+ file.open(QFile::ReadOnly);
+ QCOMPARE(file.readAll(), out);
+}
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+void tst_QFile::largeUncFileSupport()
+{
+ qint64 size = Q_INT64_C(8589934592);
+ qint64 dataOffset = Q_INT64_C(8589914592);
+ QByteArray knownData("LargeFile content at offset 8589914592");
+ QString largeFile("//" + QtNetworkSettings::winServerName() + "/testsharelargefile/file.bin");
+
+ {
+ // 1) Native file handling.
+ QFile file(largeFile);
+ QCOMPARE(file.size(), size);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QCOMPARE(file.size(), size);
+ QVERIFY(file.seek(dataOffset));
+ QCOMPARE(file.read(knownData.size()), knownData);
+ }
+ {
+ // 2) stdlib file handling.
+#if _MSC_VER <= 1310
+ QSKIP("platform SDK for MSVC 2003 does not support large files", SkipAll);
+#endif
+ QFile file;
+ FILE *fh = fopen(QFile::encodeName(largeFile).data(), "rb");
+ QVERIFY(file.open(fh, QIODevice::ReadOnly));
+ QCOMPARE(file.size(), size);
+ QVERIFY(file.seek(dataOffset));
+ QCOMPARE(file.read(knownData.size()), knownData);
+ fclose(fh);
+ }
+ {
+ // 3) stdio file handling.
+ QFile file;
+ FILE *fh = fopen(QFile::encodeName(largeFile).data(), "rb");
+ int fd = int(_fileno(fh));
+ QVERIFY(file.open(fd, QIODevice::ReadOnly));
+ QCOMPARE(file.size(), size);
+ QVERIFY(file.seek(dataOffset));
+ QCOMPARE(file.read(knownData.size()), knownData);
+ fclose(fh);
+ }
+}
+#endif
+
+void tst_QFile::tailFile()
+{
+ QSKIP("File change notifications are so far unsupported.", SkipAll);
+
+ QFile file("tail.txt");
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Append));
+
+ QFile tailFile("tail.txt");
+ QVERIFY(tailFile.open(QFile::ReadOnly));
+ tailFile.seek(file.size());
+
+ QSignalSpy readSignal(&tailFile, SIGNAL(readyRead()));
+
+ file.write("", 1);
+
+ QTestEventLoop::instance().enterLoop(5);
+
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(readSignal.count(), 1);
+}
+
+void tst_QFile::flush()
+{
+ QString fileName("stdfile.txt");
+
+ QFile::remove(fileName);
+
+ {
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::WriteOnly));
+ QCOMPARE(file.write("abc", 3),qint64(3));
+ }
+
+ {
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Append));
+ QCOMPARE(file.pos(), qlonglong(3));
+ QCOMPARE(file.write("def", 3), qlonglong(3));
+ QCOMPARE(file.pos(), qlonglong(6));
+ }
+
+ {
+ QFile file("stdfile.txt");
+ QVERIFY(file.open(QFile::ReadOnly));
+ QCOMPARE(file.readAll(), QByteArray("abcdef"));
+ }
+
+ QFile::remove(fileName);
+}
+
+void tst_QFile::bufferedRead()
+{
+ QFile::remove("stdfile.txt");
+
+ QFile file("stdfile.txt");
+ QVERIFY(file.open(QFile::WriteOnly));
+ file.write("abcdef");
+ file.close();
+
+#if defined(Q_OS_WINCE)
+ FILE *stdFile = fopen((QCoreApplication::applicationDirPath() + "/stdfile.txt").toAscii() , "r");
+#else
+ FILE *stdFile = fopen("stdfile.txt", "r");
+#endif
+ QVERIFY(stdFile);
+ char c;
+ QCOMPARE(int(fread(&c, 1, 1, stdFile)), 1);
+ QCOMPARE(c, 'a');
+ QCOMPARE(int(ftell(stdFile)), 1);
+
+ {
+ QFile file;
+ QVERIFY(file.open(stdFile, QFile::ReadOnly));
+ QCOMPARE(file.pos(), qlonglong(1));
+ QCOMPARE(file.read(&c, 1), qlonglong(1));
+ QCOMPARE(c, 'b');
+ QCOMPARE(file.pos(), qlonglong(2));
+ }
+
+ fclose(stdFile);
+}
+
+void tst_QFile::isSequential()
+{
+#if defined (Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QSKIP("Unix only test.", SkipAll);
+#endif
+
+ QFile zero("/dev/null");
+ QVERIFY(zero.open(QFile::ReadOnly));
+ QVERIFY(zero.isSequential());
+}
+
+void tst_QFile::encodeName()
+{
+ QCOMPARE(QFile::encodeName(QString::null), QByteArray());
+}
+
+void tst_QFile::truncate()
+{
+ for (int i = 0; i < 2; ++i) {
+ QFile file("truncate.txt");
+ QVERIFY(file.open(QFile::WriteOnly));
+ file.write(QByteArray(200, '@'));
+ file.close();
+
+ QVERIFY(file.open((i ? QFile::WriteOnly : QFile::ReadWrite) | QFile::Truncate));
+ file.write(QByteArray(100, '$'));
+ file.close();
+
+ QVERIFY(file.open(QFile::ReadOnly));
+ QCOMPARE(file.readAll(), QByteArray(100, '$'));
+ }
+}
+
+void tst_QFile::seekToPos()
+{
+ {
+ QFile file("seekToPos.txt");
+ QVERIFY(file.open(QFile::WriteOnly));
+ file.write("a\r\nb\r\nc\r\n");
+ file.flush();
+ }
+
+ QFile file("seekToPos.txt");
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ file.seek(1);
+ char c;
+ QVERIFY(file.getChar(&c));
+ QCOMPARE(c, '\n');
+
+ QCOMPARE(file.pos(), qint64(3));
+ file.seek(file.pos());
+ QCOMPARE(file.pos(), qint64(3));
+
+ file.seek(1);
+ file.seek(file.pos());
+ QCOMPARE(file.pos(), qint64(1));
+
+}
+
+void tst_QFile::seekAfterEndOfFile()
+{
+ QLatin1String filename("seekAfterEof.dat");
+ QFile::remove(filename);
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QFile::WriteOnly));
+ file.write("abcd");
+ QCOMPARE(file.size(), qint64(4));
+ file.seek(8);
+ file.write("ijkl");
+ QCOMPARE(file.size(), qint64(12));
+ file.seek(4);
+ file.write("efgh");
+ QCOMPARE(file.size(), qint64(12));
+ file.seek(16);
+ file.write("----");
+ QCOMPARE(file.size(), qint64(20));
+ file.flush();
+ }
+
+ QFile file(filename);
+ QVERIFY(file.open(QFile::ReadOnly));
+ QByteArray contents = file.readAll();
+ QCOMPARE(contents.left(12), QByteArray("abcdefghijkl", 12));
+ //bytes 12-15 are uninitialised so we don't care what they read as.
+ QCOMPARE(contents.mid(16), QByteArray("----", 4));
+ file.close();
+ QFile::remove(filename);
+}
+
+void tst_QFile::FILEReadWrite()
+{
+ // Tests modifying a file. First creates it then reads in 4 bytes and then overwrites these
+ // 4 bytes with new values. At the end check to see the file contains the new values.
+
+ QFile::remove("FILEReadWrite.txt");
+
+ // create test file
+ {
+ QFile f("FILEReadWrite.txt");
+ QVERIFY(f.open(QFile::WriteOnly));
+ QDataStream ds(&f);
+ qint8 c = 0;
+ ds << c;
+ c = 1;
+ ds << c;
+ c = 2;
+ ds << c;
+ c = 3;
+ ds << c;
+ c = 4;
+ ds << c;
+ c = 5;
+ ds << c;
+ c = 6;
+ ds << c;
+ c = 7;
+ ds << c;
+ c = 8;
+ ds << c;
+ c = 9;
+ ds << c;
+ c = 10;
+ ds << c;
+ c = 11;
+ ds << c;
+ f.close();
+ }
+
+#ifdef Q_OS_WINCE
+ FILE *fp = fopen(qPrintable(QCoreApplication::applicationDirPath() + "\\FILEReadWrite.txt"), "r+b");
+#else
+ FILE *fp = fopen("FILEReadWrite.txt", "r+b");
+#endif
+ QVERIFY(fp);
+ QFile file;
+ QVERIFY(file.open(fp, QFile::ReadWrite));
+ QDataStream sfile(&file) ;
+
+ qint8 var1,var2,var3,var4;
+ while (!sfile.atEnd())
+ {
+ qint64 base = file.pos();
+
+ QCOMPARE(file.pos(), base + 0);
+ sfile >> var1;
+ QCOMPARE(file.pos(), base + 1);
+ file.flush(); // flushing should not change the base
+ QCOMPARE(file.pos(), base + 1);
+ sfile >> var2;
+ QCOMPARE(file.pos(), base + 2);
+ sfile >> var3;
+ QCOMPARE(file.pos(), base + 3);
+ sfile >> var4;
+ QCOMPARE(file.pos(), base + 4);
+ file.seek(file.pos() - 4) ; // Move it back 4, for we are going to write new values based on old ones
+ QCOMPARE(file.pos(), base + 0);
+ sfile << qint8(var1 + 5);
+ QCOMPARE(file.pos(), base + 1);
+ sfile << qint8(var2 + 5);
+ QCOMPARE(file.pos(), base + 2);
+ sfile << qint8(var3 + 5);
+ QCOMPARE(file.pos(), base + 3);
+ sfile << qint8(var4 + 5);
+ QCOMPARE(file.pos(), base + 4);
+
+ }
+ file.close();
+ fclose(fp);
+
+ // check modified file
+ {
+ QFile f("FILEReadWrite.txt");
+ QVERIFY(f.open(QFile::ReadOnly));
+ QDataStream ds(&f);
+ qint8 c = 0;
+ ds >> c;
+ QCOMPARE(c, (qint8)5);
+ ds >> c;
+ QCOMPARE(c, (qint8)6);
+ ds >> c;
+ QCOMPARE(c, (qint8)7);
+ ds >> c;
+ QCOMPARE(c, (qint8)8);
+ ds >> c;
+ QCOMPARE(c, (qint8)9);
+ ds >> c;
+ QCOMPARE(c, (qint8)10);
+ ds >> c;
+ QCOMPARE(c, (qint8)11);
+ ds >> c;
+ QCOMPARE(c, (qint8)12);
+ ds >> c;
+ QCOMPARE(c, (qint8)13);
+ ds >> c;
+ QCOMPARE(c, (qint8)14);
+ ds >> c;
+ QCOMPARE(c, (qint8)15);
+ ds >> c;
+ QCOMPARE(c, (qint8)16);
+ f.close();
+ }
+
+ QFile::remove("FILEReadWrite.txt");
+}
+
+
+/*
+#include <qglobal.h>
+#define BUFFSIZE 1
+#define FILESIZE 0x10000000f
+void tst_QFile::largeFileSupport()
+{
+#ifdef Q_OS_SOLARIS
+ QSKIP("Solaris does not support statfs", SkipAll);
+#else
+ qlonglong sizeNeeded = 2147483647;
+ sizeNeeded *= 2;
+ sizeNeeded += 1024;
+ qlonglong freespace = qlonglong(0);
+#ifdef Q_WS_WIN
+ _ULARGE_INTEGER free;
+ if (::GetDiskFreeSpaceEx((wchar_t*)QDir::currentPath().utf16(), &free, 0, 0))
+ freespace = free.QuadPart;
+ if (freespace != 0) {
+#elif defined(Q_OS_IRIX)
+ struct statfs info;
+ if (statfs(QDir::currentPath().local8Bit(), &info, sizeof(struct statfs), 0) == 0) {
+ freespace = qlonglong(info.f_bfree * info.f_bsize);
+#else
+ struct statfs info;
+ if (statfs(const_cast<char *>(QDir::currentPath().toLocal8Bit().constData()), &info) == 0) {
+ freespace = qlonglong(info.f_bavail * info.f_bsize);
+#endif
+ if (freespace > sizeNeeded) {
+ QFile bigFile("bigfile");
+ if (bigFile.open(QFile::ReadWrite)) {
+ char c[BUFFSIZE] = {'a'};
+ QVERIFY(bigFile.write(c, BUFFSIZE) == BUFFSIZE);
+ qlonglong oldPos = bigFile.pos();
+ QVERIFY(bigFile.resize(sizeNeeded));
+ QCOMPARE(oldPos, bigFile.pos());
+ QVERIFY(bigFile.seek(sizeNeeded - BUFFSIZE));
+ QVERIFY(bigFile.write(c, BUFFSIZE) == BUFFSIZE);
+
+ bigFile.close();
+ if (bigFile.open(QFile::ReadOnly)) {
+ QVERIFY(bigFile.read(c, BUFFSIZE) == BUFFSIZE);
+ int i = 0;
+ for (i=0; i<BUFFSIZE; i++)
+ QCOMPARE(c[i], 'a');
+ QVERIFY(bigFile.seek(sizeNeeded - BUFFSIZE));
+ QVERIFY(bigFile.read(c, BUFFSIZE) == BUFFSIZE);
+ for (i=0; i<BUFFSIZE; i++)
+ QCOMPARE(c[i], 'a');
+ bigFile.close();
+ QVERIFY(bigFile.remove());
+ } else {
+ QVERIFY(bigFile.remove());
+ QFAIL("Could not reopen file");
+ }
+ } else {
+ QFAIL("Could not open file");
+ }
+ } else {
+ QSKIP("Not enough space to run test", SkipSingle);
+ }
+ } else {
+ QFAIL("Could not determin disk space");
+ }
+#endif
+}
+*/
+
+void tst_QFile::i18nFileName_data()
+{
+ QTest::addColumn<QString>("fileName");
+
+ QTest::newRow( "01" ) << QString::fromUtf8("xxxxxxx.txt");
+}
+
+void tst_QFile::i18nFileName()
+{
+ QFETCH(QString, fileName);
+ if (QFile::exists(fileName)) {
+ QVERIFY(QFile::remove(fileName));
+ }
+ {
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
+ QTextStream ts(&file);
+ ts.setCodec("UTF-8");
+ ts << fileName << endl;
+ }
+ {
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ QTextStream ts(&file);
+ ts.setCodec("UTF-8");
+ QString line = ts.readLine();
+ QCOMPARE(line, fileName);
+ }
+ QVERIFY(QFile::remove(fileName));
+}
+
+
+void tst_QFile::longFileName_data()
+{
+ QTest::addColumn<QString>("fileName");
+
+ QTest::newRow( "16 chars" ) << QString::fromLatin1("longFileName.txt");
+ QTest::newRow( "52 chars" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName.txt");
+ QTest::newRow( "148 chars" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt");
+ QTest::newRow( "244 chars" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt");
+ QTest::newRow( "244 chars to absolutepath" ) << QFileInfo(QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt")).absoluteFilePath();
+ /* needs to be put on a windows 2000 > test machine
+ QTest::newRow( "244 chars on UNC" ) << QString::fromLatin1("//arsia/D/troll/tmp/longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt");*/
+}
+
+void tst_QFile::longFileName()
+{
+ QFETCH(QString, fileName);
+ if (QFile::exists(fileName)) {
+ QVERIFY(QFile::remove(fileName));
+ }
+ {
+ QFile file(fileName);
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QEXPECT_FAIL("244 chars", "Full pathname must be less than 260 chars", Abort);
+ QEXPECT_FAIL("244 chars to absolutepath", "Full pathname must be less than 260 chars", Abort);
+#endif
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
+ QTextStream ts(&file);
+ ts << fileName << endl;
+ }
+ {
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ QTextStream ts(&file);
+ QString line = ts.readLine();
+ QCOMPARE(line, fileName);
+ }
+ QString newName = fileName + QLatin1String("1");
+ {
+ QVERIFY(QFile::copy(fileName, newName));
+ QFile file(newName);
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ QTextStream ts(&file);
+ QString line = ts.readLine();
+ QCOMPARE(line, fileName);
+
+ }
+ QVERIFY(QFile::remove(newName));
+ {
+ QVERIFY(QFile::rename(fileName, newName));
+ QFile file(newName);
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ QTextStream ts(&file);
+ QString line = ts.readLine();
+ QCOMPARE(line, fileName);
+ }
+ QVERIFY(QFile::exists(newName));
+ QVERIFY(QFile::remove(newName));
+}
+
+class MyEngine : public QAbstractFileEngine
+{
+public:
+ MyEngine(int n) { number = n; }
+ virtual ~MyEngine() {}
+
+ void setFileName(const QString &) {}
+ bool open(int ) { return false; }
+ bool close() { return false; }
+ bool flush() { return false; }
+ qint64 size() const { return 123 + number; }
+ qint64 at() const { return -1; }
+ bool seek(qint64) { return false; }
+ bool isSequential() const { return false; }
+ qint64 read(char *, qint64) { return -1; }
+ qint64 write(const char *, qint64) { return -1; }
+ bool remove() { return false; }
+ bool copy(const QString &) { return false; }
+ bool rename(const QString &) { return false; }
+ bool link(const QString &) { return false; }
+ bool mkdir(const QString &, bool) const { return false; }
+ bool rmdir(const QString &, bool) const { return false; }
+ bool setSize(qint64) { return false; }
+ QStringList entryList(QDir::Filters, const QStringList &) const { return QStringList(); }
+ bool caseSensitive() const { return false; }
+ bool isRelativePath() const { return false; }
+ FileFlags fileFlags(FileFlags) const { return 0; }
+ bool chmod(uint) { return false; }
+ QString fileName(FileName) const { return name; }
+ uint ownerId(FileOwner) const { return 0; }
+ QString owner(FileOwner) const { return QString(); }
+ QDateTime fileTime(FileTime) const { return QDateTime(); }
+
+private:
+ int number;
+ QString name;
+};
+
+class MyHandler : public QAbstractFileEngineHandler
+{
+public:
+ inline QAbstractFileEngine *create(const QString &) const
+ {
+ return new MyEngine(1);
+ }
+};
+
+class MyHandler2 : public QAbstractFileEngineHandler
+{
+public:
+ inline QAbstractFileEngine *create(const QString &) const
+ {
+ return new MyEngine(2);
+ }
+};
+
+void tst_QFile::fileEngineHandler()
+{
+ // A file that does not exist has a size of 0.
+ QFile::remove("ole.bull");
+ QFile file("ole.bull");
+ QCOMPARE(file.size(), qint64(0));
+
+ // Instantiating our handler will enable the new engine.
+ MyHandler handler;
+ file.setFileName("ole.bull");
+ QCOMPARE(file.size(), qint64(124));
+
+ // A new, identical handler should take preference over the last one.
+ MyHandler2 handler2;
+ file.setFileName("ole.bull");
+ QCOMPARE(file.size(), qint64(125));
+
+}
+
+class MyRecursiveHandler : public QAbstractFileEngineHandler
+{
+public:
+ inline QAbstractFileEngine *create(const QString &fileName) const
+ {
+ if (fileName.startsWith(":!")) {
+ QDir dir;
+ QString realFile = SRCDIR + fileName.mid(2);
+ if (dir.exists(realFile))
+ return new QFSFileEngine(realFile);
+ }
+ return 0;
+ }
+};
+
+void tst_QFile::useQFileInAFileHandler()
+{
+ // This test should not dead-lock
+ MyRecursiveHandler handler;
+ QFile file(":!tst_qfile.cpp");
+ QVERIFY(file.exists());
+}
+
+void tst_QFile::getCharFF()
+{
+ QFile file("file.txt");
+ file.open(QFile::ReadWrite);
+ file.write("\xff\xff\xff");
+ file.flush();
+ file.seek(0);
+
+ char c;
+ QVERIFY(file.getChar(&c));
+ QVERIFY(file.getChar(&c));
+ QVERIFY(file.getChar(&c));
+}
+
+void tst_QFile::remove_and_exists()
+{
+ QFile::remove("tull_i_grunn.txt");
+ QFile f("tull_i_grunn.txt");
+
+ QVERIFY(!f.exists());
+
+ bool opened = f.open(QIODevice::WriteOnly);
+ QVERIFY(opened);
+
+ f.write(QString("testing that remove/exists work...").toLatin1());
+ f.close();
+
+ QVERIFY(f.exists());
+
+ f.remove();
+ QVERIFY(!f.exists());
+}
+
+void tst_QFile::removeOpenFile()
+{
+ {
+ // remove an opened, write-only file
+ QFile::remove("remove_unclosed.txt");
+ QFile f("remove_unclosed.txt");
+
+ QVERIFY(!f.exists());
+ bool opened = f.open(QIODevice::WriteOnly);
+ QVERIFY(opened);
+ f.write(QString("testing that remove closes the file first...").toLatin1());
+
+ bool removed = f.remove(); // remove should both close and remove the file
+ QVERIFY(removed);
+ QVERIFY(!f.isOpen());
+ QVERIFY(!f.exists());
+ QVERIFY(f.error() == QFile::NoError);
+ }
+
+ {
+ // remove an opened, read-only file
+ QFile::remove("remove_unclosed.txt");
+
+ // first, write a file that we can remove
+ {
+ QFile f("remove_unclosed.txt");
+ QVERIFY(!f.exists());
+ bool opened = f.open(QIODevice::WriteOnly);
+ QVERIFY(opened);
+ f.write(QString("testing that remove closes the file first...").toLatin1());
+ f.close();
+ }
+
+ QFile f("remove_unclosed.txt");
+ bool opened = f.open(QIODevice::ReadOnly);
+ QVERIFY(opened);
+ f.readAll();
+ // this used to only fail on FreeBSD (and Mac OS X)
+ QVERIFY(f.flush());
+ bool removed = f.remove(); // remove should both close and remove the file
+ QVERIFY(removed);
+ QVERIFY(!f.isOpen());
+ QVERIFY(!f.exists());
+ QVERIFY(f.error() == QFile::NoError);
+ }
+}
+
+void tst_QFile::fullDisk()
+{
+ QFile file("/dev/full");
+ if (!file.exists())
+ QSKIP("/dev/full doesn't exist on this system", SkipAll);
+
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ file.write("foobar", 6);
+
+ QVERIFY(!file.flush());
+ QCOMPARE(file.error(), QFile::ResourceError);
+ QVERIFY(!file.flush());
+ QCOMPARE(file.error(), QFile::ResourceError);
+
+ char c = 0;
+ file.write(&c, 0);
+ QVERIFY(!file.flush());
+ QCOMPARE(file.error(), QFile::ResourceError);
+ QCOMPARE(file.write(&c, 1), qint64(1));
+ QVERIFY(!file.flush());
+ QCOMPARE(file.error(), QFile::ResourceError);
+
+ file.close();
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.error(), QFile::ResourceError);
+
+ file.open(QIODevice::WriteOnly);
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(file.flush()); // Shouldn't inherit write buffer
+ file.close();
+ QCOMPARE(file.error(), QFile::NoError);
+
+ // try again without flush:
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ file.write("foobar", 6);
+ file.close();
+ QVERIFY(file.error() != QFile::NoError);
+}
+
+void tst_QFile::writeLargeDataBlock_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<int>("type");
+
+ QTest::newRow("localfile-QFile") << "./largeblockfile.txt" << (int)OpenQFile;
+ QTest::newRow("localfile-Fd") << "./largeblockfile.txt" << (int)OpenFd;
+ QTest::newRow("localfile-Stream") << "./largeblockfile.txt" << (int)OpenStream;
+#ifdef Q_OS_SYMBIAN
+ QTest::newRow("localfile-RFile") << "./largeblockfile.txt" << (int)OpenRFile;
+#endif
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ // Some semi-randomness to avoid collisions.
+ QTest::newRow("unc file")
+ << QString("//" + QtNetworkSettings::winServerName() + "/TESTSHAREWRITABLE/largefile-%1-%2.txt")
+ .arg(QHostInfo::localHostName())
+ .arg(QTime::currentTime().msec()) << (int)OpenQFile;
+#endif
+}
+
+static QByteArray getLargeDataBlock()
+{
+ static QByteArray array;
+
+ if (array.isNull())
+ {
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ int resizeSize = 1024 * 1024; // WinCE and Symbian do not have much space
+#else
+ int resizeSize = 64 * 1024 * 1024;
+#endif
+ array.resize(resizeSize);
+ for (int i = 0; i < array.size(); ++i)
+ array[i] = uchar(i);
+ }
+
+ return array;
+}
+
+void tst_QFile::writeLargeDataBlock()
+{
+ QFETCH(QString, fileName);
+ QFETCH( int, type );
+
+ QByteArray const originalData = getLargeDataBlock();
+
+ {
+ QFile file(fileName);
+
+ QVERIFY2( openFile(file, QIODevice::WriteOnly, (FileType)type),
+ qPrintable(QString("Couldn't open file for writing: [%1]").arg(fileName)) );
+ QCOMPARE( file.write(originalData), (qint64)originalData.size() );
+ QVERIFY( file.flush() );
+
+ closeFile(file);
+ }
+
+ QByteArray readData;
+
+ {
+ QFile file(fileName);
+
+ QVERIFY2( openFile(file, QIODevice::ReadOnly, (FileType)type),
+ qPrintable(QString("Couldn't open file for reading: [%1]").arg(fileName)) );
+ readData = file.readAll();
+ closeFile(file);
+ }
+
+ QCOMPARE( readData, originalData );
+ QVERIFY( QFile::remove(fileName) );
+}
+
+void tst_QFile::readFromWriteOnlyFile()
+{
+ QFile file("writeonlyfile");
+ QVERIFY(file.open(QFile::WriteOnly));
+ char c;
+ QTest::ignoreMessage(QtWarningMsg, "QIODevice::read: WriteOnly device");
+ QCOMPARE(file.read(&c, 1), qint64(-1));
+}
+
+void tst_QFile::writeToReadOnlyFile()
+{
+ QFile file("readonlyfile");
+ QVERIFY(file.open(QFile::ReadOnly));
+ char c = 0;
+ QTest::ignoreMessage(QtWarningMsg, "QIODevice::write: ReadOnly device");
+ QCOMPARE(file.write(&c, 1), qint64(-1));
+}
+
+void tst_QFile::virtualFile()
+{
+ // test if QFile works with virtual files
+ QString fname;
+#if defined(Q_OS_LINUX)
+ fname = "/proc/self/maps";
+#elif defined(Q_OS_AIX)
+ fname = QString("/proc/%1/map").arg(getpid());
+#elif defined(Q_OS_FREEBSD) || defined(Q_OS_NETBSD)
+ fname = "/proc/curproc/map";
+#else
+ QSKIP("This platform does not have 0-sized virtual files", SkipAll);
+#endif
+
+ // consistency check
+ QFileInfo fi(fname);
+ QVERIFY(fi.exists());
+ QVERIFY(fi.isFile());
+ QCOMPARE(fi.size(), Q_INT64_C(0));
+
+ // open the file
+ QFile f(fname);
+ QVERIFY(f.open(QIODevice::ReadOnly));
+ QCOMPARE(f.size(), Q_INT64_C(0));
+ QVERIFY(f.atEnd());
+
+ // read data
+ QByteArray data = f.read(16);
+ QCOMPARE(data.size(), 16);
+ QCOMPARE(f.pos(), Q_INT64_C(16));
+
+ // line-reading
+ data = f.readLine();
+ QVERIFY(!data.isEmpty());
+
+ // read all:
+ data = f.readAll();
+ QVERIFY(f.pos() != 0);
+ QVERIFY(!data.isEmpty());
+
+ // seeking
+ QVERIFY(f.seek(1));
+ QCOMPARE(f.pos(), Q_INT64_C(1));
+}
+
+void tst_QFile::textFile()
+{
+#if defined(Q_OS_WINCE)
+ FILE *fs = ::fopen((QCoreApplication::applicationDirPath() + "/writeabletextfile").toAscii() , "wt");
+#elif defined(Q_OS_WIN)
+ FILE *fs = ::fopen("writeabletextfile", "wt");
+#else
+ FILE *fs = ::fopen("writeabletextfile", "w");
+#endif
+ QFile f;
+ QByteArray part1("This\nis\na\nfile\nwith\nnewlines\n");
+ QByteArray part2("Add\nsome\nmore\nnewlines\n");
+
+ QVERIFY(f.open(fs, QIODevice::WriteOnly));
+ f.write(part1);
+ f.write(part2);
+ f.close();
+ ::fclose(fs);
+
+ QFile file("writeabletextfile");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+
+ QByteArray data = file.readAll();
+
+ QByteArray expected = part1 + part2;
+#ifdef Q_OS_WIN
+ expected.replace("\n", "\015\012");
+#endif
+ QCOMPARE(data, expected);
+ file.close();
+ file.remove();
+}
+
+void tst_QFile::rename_data()
+{
+ QTest::addColumn<QString>("source");
+ QTest::addColumn<QString>("destination");
+ QTest::addColumn<bool>("result");
+
+ QTest::newRow("a -> b") << QString("a") << QString("b") << false;
+ QTest::newRow("a -> .") << QString("a") << QString(".") << false;
+ QTest::newRow("renamefile -> renamefile") << QString("renamefile") << QString("renamefile") << false;
+ QTest::newRow("renamefile -> noreadfile") << QString("renamefile") << QString("noreadfile") << false;
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow("renamefile -> /etc/renamefile") << QString("renamefile") << QString("/etc/renamefile") << false;
+#endif
+ QTest::newRow("renamefile -> renamedfile") << QString("renamefile") << QString("renamedfile") << true;
+ QTest::newRow("renamefile -> ..") << QString("renamefile") << QString("..") << false;
+}
+
+void tst_QFile::rename()
+{
+ QFETCH(QString, source);
+ QFETCH(QString, destination);
+ QFETCH(bool, result);
+
+ QFile::remove("renamedfile");
+ QFile f("renamefile");
+ f.open(QFile::WriteOnly);
+ f.close();
+
+ QFile file(source);
+ QCOMPARE(file.rename(destination), result);
+
+ if (result)
+ QCOMPARE(file.error(), QFile::NoError);
+ else
+ QCOMPARE(file.error(), QFile::RenameError);
+
+ QFile::remove("renamefile");
+}
+
+/*!
+ \since 4.5
+
+ Some special files have QFile::atEnd() returning true, even though there is
+ more data available. True for corner cases, as well as some mounts on OS X.
+
+ Here, we reproduce that condition by having a QFile sub-class with this
+ peculiar atEnd() behavior.
+
+ See task 231583.
+ */
+void tst_QFile::renameWithAtEndSpecialFile() const
+{
+ class PeculiarAtEnd : public QFile
+ {
+ public:
+ virtual bool atEnd() const
+ {
+ return true;
+ }
+ };
+
+ const QString newName(QLatin1String("newName.txt"));
+ /* Cleanup, so we're a bit more robust. */
+ QFile::remove(newName);
+
+ const QString originalName(QString(SRCDIR "forRenaming.txt"));
+
+ PeculiarAtEnd file;
+ file.setFileName(originalName);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+
+ QVERIFY(file.rename(newName));
+
+ file.close();
+ /* Guess what, we have to rename it back, otherwise we'll fail on second
+ * invocation. */
+ QVERIFY(QFile::rename(newName, originalName));
+}
+
+void tst_QFile::renameFallback()
+{
+ // Using a resource file both to trigger QFile::rename's fallback handling
+ // and as a *read-only* source whose move should fail.
+ QFile file(":/rename-fallback.qrc");
+ QVERIFY(file.exists() && "(test-precondition)");
+ QFile::remove("file-rename-destination.txt");
+
+ QVERIFY(!file.rename("file-rename-destination.txt"));
+ QVERIFY(!QFile::exists("file-rename-destination.txt"));
+ QVERIFY(!file.isOpen());
+}
+
+void tst_QFile::renameMultiple()
+{
+ // create the file if it doesn't exist
+ QFile file("file-to-be-renamed.txt");
+ QFile file2("existing-file.txt");
+ QVERIFY(file.open(QIODevice::ReadWrite) && "(test-precondition)");
+ QVERIFY(file2.open(QIODevice::ReadWrite) && "(test-precondition)");
+
+ // any stale files from previous test failures?
+ QFile::remove("file-renamed-once.txt");
+ QFile::remove("file-renamed-twice.txt");
+
+ // begin testing
+ QVERIFY(QFile::exists("existing-file.txt"));
+ QVERIFY(!file.rename("existing-file.txt"));
+ QCOMPARE(file.error(), QFile::RenameError);
+ QCOMPARE(file.fileName(), QString("file-to-be-renamed.txt"));
+
+ QVERIFY(file.rename("file-renamed-once.txt"));
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.fileName(), QString("file-renamed-once.txt"));
+
+ QVERIFY(QFile::exists("existing-file.txt"));
+ QVERIFY(!file.rename("existing-file.txt"));
+ QCOMPARE(file.error(), QFile::RenameError);
+ QCOMPARE(file.fileName(), QString("file-renamed-once.txt"));
+
+ QVERIFY(file.rename("file-renamed-twice.txt"));
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.fileName(), QString("file-renamed-twice.txt"));
+
+ QVERIFY(QFile::exists("existing-file.txt"));
+ QVERIFY(!QFile::exists("file-to-be-renamed.txt"));
+ QVERIFY(!QFile::exists("file-renamed-once.txt"));
+ QVERIFY(QFile::exists("file-renamed-twice.txt"));
+
+ file.remove();
+ file2.remove();
+ QVERIFY(!QFile::exists("file-renamed-twice.txt"));
+ QVERIFY(!QFile::exists("existing-file.txt"));
+}
+
+void tst_QFile::appendAndRead()
+{
+ QFile writeFile(QLatin1String("appendfile.txt"));
+ QVERIFY(writeFile.open(QIODevice::WriteOnly | QIODevice::Truncate));
+
+ QFile readFile(QLatin1String("appendfile.txt"));
+ QVERIFY(readFile.open(QIODevice::ReadOnly));
+
+ // Write to the end of the file, then read that character back, and so on.
+ for (int i = 0; i < 100; ++i) {
+ char c = '\0';
+ writeFile.putChar(char(i % 256));
+ writeFile.flush();
+ QVERIFY(readFile.getChar(&c));
+ QCOMPARE(c, char(i % 256));
+ QCOMPARE(readFile.pos(), writeFile.pos());
+ }
+
+ // Write blocks and read them back
+ for (int j = 0; j < 18; ++j) {
+ writeFile.write(QByteArray(1 << j, '@'));
+ writeFile.flush();
+ QCOMPARE(readFile.read(1 << j).size(), 1 << j);
+ }
+
+ readFile.close();
+ QFile::remove(QLatin1String("appendfile.txt"));
+}
+
+void tst_QFile::miscWithUncPathAsCurrentDir()
+{
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QString current = QDir::currentPath();
+ QVERIFY(QDir::setCurrent("//" + QtNetworkSettings::winServerName() + "/testshare"));
+ QFile file("test.pri");
+ QVERIFY(file.exists());
+ QCOMPARE(int(file.size()), 34);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QVERIFY(QDir::setCurrent(current));
+#endif
+}
+
+void tst_QFile::standarderror()
+{
+ QFile f;
+ bool ok = f.open(stderr, QFile::WriteOnly);
+ QVERIFY(ok);
+ f.close();
+}
+
+void tst_QFile::handle()
+{
+ int fd;
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QFile file(SRCDIR "tst_qfile.cpp");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ fd = int(file.handle());
+ QVERIFY(fd > 2);
+ QCOMPARE(int(file.handle()), fd);
+ char c = '\0';
+ QT_READ(int(file.handle()), &c, 1);
+ QCOMPARE(c, '/');
+
+ // test if the QFile and the handle remain in sync
+ QVERIFY(file.getChar(&c));
+ QCOMPARE(c, '*');
+
+ // same, but read from QFile first now
+ file.close();
+ QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Unbuffered));
+ fd = int(file.handle());
+ QVERIFY(fd > 2);
+ QVERIFY(file.getChar(&c));
+ QCOMPARE(c, '/');
+#ifdef Q_OS_UNIX
+ QCOMPARE(QT_READ(fd, &c, 1), ssize_t(1));
+#else
+ QCOMPARE(QT_READ(fd, &c, 1), 1);
+#endif
+
+ QCOMPARE(c, '*');
+#endif
+
+ //test round trip of adopted stdio file handle
+ QFile file2;
+ FILE *fp = fopen(SRCDIR "tst_qfile.cpp", "r");
+ file2.open(fp, QIODevice::ReadOnly);
+ QCOMPARE(int(file2.handle()), int(fileno(fp)));
+ QCOMPARE(int(file2.handle()), int(fileno(fp)));
+ fclose(fp);
+
+ //test round trip of adopted posix file handle
+#ifdef Q_OS_UNIX
+ QFile file3;
+ fd = QT_OPEN(SRCDIR "tst_qfile.cpp", QT_OPEN_RDONLY);
+ file3.open(fd, QIODevice::ReadOnly);
+ QCOMPARE(int(file3.handle()), fd);
+ QT_CLOSE(fd);
+#endif
+}
+
+void tst_QFile::nativeHandleLeaks()
+{
+#ifdef Q_OS_SYMBIAN
+ QSKIP("test assumptions invalid for symbian", SkipAll);
+#else
+ int fd1, fd2;
+
+#ifdef Q_OS_WIN
+ HANDLE handle1, handle2;
+#endif
+
+ {
+ QFile file("qt_file.tmp");
+ QVERIFY( file.open(QIODevice::ReadWrite) );
+
+ fd1 = file.handle();
+ QVERIFY( -1 != fd1 );
+ }
+
+#ifdef Q_OS_WIN
+ handle1 = ::CreateFileA("qt_file.tmp", GENERIC_READ, 0, NULL,
+ OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ QVERIFY( INVALID_HANDLE_VALUE != handle1 );
+ QVERIFY( ::CloseHandle(handle1) );
+#endif
+
+ {
+ QFile file("qt_file.tmp");
+ QVERIFY( file.open(QIODevice::ReadOnly) );
+
+ fd2 = file.handle();
+ QVERIFY( -1 != fd2 );
+ }
+
+#ifdef Q_OS_WIN
+ handle2 = ::CreateFileA("qt_file.tmp", GENERIC_READ, 0, NULL,
+ OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ QVERIFY( INVALID_HANDLE_VALUE != handle2 );
+ QVERIFY( ::CloseHandle(handle2) );
+#endif
+
+ QCOMPARE( fd2, fd1 );
+
+#ifdef Q_OS_WIN
+ QCOMPARE( handle2, handle1 );
+#endif
+#endif
+}
+
+void tst_QFile::readEof_data()
+{
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<int>("imode");
+
+ QTest::newRow("buffered") << SRCDIR "testfile.txt" << 0;
+ QTest::newRow("unbuffered") << SRCDIR "testfile.txt" << int(QIODevice::Unbuffered);
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow("sequential,buffered") << "/dev/null" << 0;
+ QTest::newRow("sequential,unbuffered") << "/dev/null" << int(QIODevice::Unbuffered);
+#endif
+}
+
+void tst_QFile::readEof()
+{
+ QFETCH(QString, filename);
+ QFETCH(int, imode);
+ QIODevice::OpenMode mode = QIODevice::OpenMode(imode);
+
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QIODevice::ReadOnly | mode));
+ bool isSequential = file.isSequential();
+ if (!isSequential) {
+ QVERIFY(file.seek(245));
+ QVERIFY(file.atEnd());
+ }
+
+ char buf[10];
+ int ret = file.read(buf, sizeof buf);
+ QCOMPARE(ret, 0);
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+
+ // Do it again to ensure that we get the same result
+ ret = file.read(buf, sizeof buf);
+ QCOMPARE(ret, 0);
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+ }
+
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QIODevice::ReadOnly | mode));
+ bool isSequential = file.isSequential();
+ if (!isSequential) {
+ QVERIFY(file.seek(245));
+ QVERIFY(file.atEnd());
+ }
+
+ QByteArray ret = file.read(10);
+ QVERIFY(ret.isEmpty());
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+
+ // Do it again to ensure that we get the same result
+ ret = file.read(10);
+ QVERIFY(ret.isEmpty());
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+ }
+
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QIODevice::ReadOnly | mode));
+ bool isSequential = file.isSequential();
+ if (!isSequential) {
+ QVERIFY(file.seek(245));
+ QVERIFY(file.atEnd());
+ }
+
+ char buf[10];
+ int ret = file.readLine(buf, sizeof buf);
+ QCOMPARE(ret, -1);
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+
+ // Do it again to ensure that we get the same result
+ ret = file.readLine(buf, sizeof buf);
+ QCOMPARE(ret, -1);
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+ }
+
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QIODevice::ReadOnly | mode));
+ bool isSequential = file.isSequential();
+ if (!isSequential) {
+ QVERIFY(file.seek(245));
+ QVERIFY(file.atEnd());
+ }
+
+ QByteArray ret = file.readLine();
+ QVERIFY(ret.isNull());
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+
+ // Do it again to ensure that we get the same result
+ ret = file.readLine();
+ QVERIFY(ret.isNull());
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+ }
+
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QIODevice::ReadOnly | mode));
+ bool isSequential = file.isSequential();
+ if (!isSequential) {
+ QVERIFY(file.seek(245));
+ QVERIFY(file.atEnd());
+ }
+
+ char c;
+ QVERIFY(!file.getChar(&c));
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+
+ // Do it again to ensure that we get the same result
+ QVERIFY(!file.getChar(&c));
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+ }
+}
+
+void tst_QFile::task167217()
+{
+ // Regression introduced in 4.3.0; after a failed stat, pos() could no
+ // longer be calculated correctly.
+ QFile::remove("tmp.txt");
+ QFile file("tmp.txt");
+ QVERIFY(!file.exists());
+ QVERIFY(file.open(QIODevice::Append));
+ QVERIFY(file.exists());
+ file.write("qt430", 5);
+ QVERIFY(!file.isSequential());
+ QCOMPARE(file.pos(), qint64(5));
+ file.remove();
+}
+
+#define FILESIZE 65536 * 3
+
+void tst_QFile::map_data()
+{
+ QTest::addColumn<int>("fileSize");
+ QTest::addColumn<int>("offset");
+ QTest::addColumn<int>("size");
+ QTest::addColumn<QFile::FileError>("error");
+
+ QTest::newRow("zero") << FILESIZE << 0 << FILESIZE << QFile::NoError;
+ QTest::newRow("small, but 0") << FILESIZE << 30 << FILESIZE - 30 << QFile::NoError;
+ QTest::newRow("a page") << FILESIZE << 4096 << FILESIZE - 4096 << QFile::NoError;
+ QTest::newRow("+page") << FILESIZE << 5000 << FILESIZE - 5000 << QFile::NoError;
+ QTest::newRow("++page") << FILESIZE << 65576 << FILESIZE - 65576 << QFile::NoError;
+ QTest::newRow("bad size") << FILESIZE << 0 << -1 << QFile::ResourceError;
+ QTest::newRow("bad offset") << FILESIZE << -1 << 1 << QFile::UnspecifiedError;
+ QTest::newRow("zerozero") << FILESIZE << 0 << 0 << QFile::UnspecifiedError;
+}
+
+void tst_QFile::map()
+{
+ QFETCH(int, fileSize);
+ QFETCH(int, offset);
+ QFETCH(int, size);
+ QFETCH(QFile::FileError, error);
+
+ QString fileName = QDir::currentPath() + '/' + "qfile_map_testfile";
+
+#ifdef Q_WS_WINCE
+ fileName = QFileInfo(fileName).absoluteFilePath();
+#endif
+
+ if (QFile::exists(fileName)) {
+ QVERIFY(QFile::setPermissions(fileName,
+ QFile::WriteOwner | QFile::ReadOwner | QFile::WriteUser | QFile::ReadUser));
+ QFile::remove(fileName);
+ }
+ QFile file(fileName);
+
+ // invalid, not open
+ uchar *memory = file.map(0, size);
+ QVERIFY(!memory);
+ QCOMPARE(file.error(), QFile::PermissionsError);
+ QVERIFY(!file.unmap(memory));
+ QCOMPARE(file.error(), QFile::PermissionsError);
+
+ // make a file
+ QVERIFY(file.open(QFile::ReadWrite));
+ QVERIFY(file.resize(fileSize));
+ QVERIFY(file.flush());
+ file.close();
+ QVERIFY(file.open(QFile::ReadWrite));
+ memory = file.map(offset, size);
+ if (error != QFile::NoError) {
+
+ QVERIFY(file.error() != QFile::NoError);
+ return;
+ }
+
+ QCOMPARE(file.error(), error);
+ QVERIFY(memory);
+ memory[0] = 'Q';
+ QVERIFY(file.unmap(memory));
+ QCOMPARE(file.error(), QFile::NoError);
+
+ // Verify changes were saved
+ memory = file.map(offset, size);
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(memory);
+ QVERIFY(memory[0] == 'Q');
+ QVERIFY(file.unmap(memory));
+ QCOMPARE(file.error(), QFile::NoError);
+
+ // hpux wont let you map multiple times.
+#if !defined(Q_OS_HPUX) && !defined(Q_USE_DEPRECATED_MAP_API) && !defined(Q_OS_WINCE)
+ // exotic test to make sure that multiple maps work
+
+ // note: windows ce does not reference count mutliple maps
+ // it's essentially just the same reference but it
+ // cause a resource lock on the file which prevents it
+ // from being removed uchar *memory1 = file.map(0, file.size());
+ uchar *memory1 = file.map(0, file.size());
+ QCOMPARE(file.error(), QFile::NoError);
+ uchar *memory2 = file.map(0, file.size());
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(memory1);
+ QVERIFY(memory2);
+ QVERIFY(file.unmap(memory1));
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(file.unmap(memory2));
+ QCOMPARE(file.error(), QFile::NoError);
+ memory1 = file.map(0, file.size());
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(memory1);
+ QVERIFY(file.unmap(memory1));
+ QCOMPARE(file.error(), QFile::NoError);
+#endif
+
+ file.close();
+
+#if defined(Q_OS_SYMBIAN)
+ if (false) // No permissions for user makes no sense in Symbian
+#elif defined(Q_OS_UNIX)
+ if (::getuid() != 0)
+ // root always has permissions
+#endif
+ {
+ // Change permissions on a file, just to confirm it would fail
+ QFile::Permissions originalPermissions = file.permissions();
+ QVERIFY(file.setPermissions(QFile::ReadOther));
+ QVERIFY(!file.open(QFile::ReadWrite));
+ memory = file.map(offset, size);
+ QCOMPARE(file.error(), QFile::PermissionsError);
+ QVERIFY(!memory);
+ QVERIFY(file.setPermissions(originalPermissions));
+ }
+ QVERIFY(file.remove());
+}
+
+void tst_QFile::mapResource_data()
+{
+ QTest::addColumn<int>("offset");
+ QTest::addColumn<int>("size");
+ QTest::addColumn<QFile::FileError>("error");
+ QTest::addColumn<QString>("fileName");
+
+ QString validFile = ":/tst_qfileinfo/resources/file1.ext1";
+ QString invalidFile = ":/tst_qfileinfo/resources/filefoo.ext1";
+
+ for (int i = 0; i < 2; ++i) {
+ QString file = (i == 0) ? validFile : invalidFile;
+ QTest::newRow("0, 0") << 0 << 0 << QFile::UnspecifiedError << file;
+ QTest::newRow("0, BIG") << 0 << 4096 << QFile::UnspecifiedError << file;
+ QTest::newRow("-1, 0") << -1 << 0 << QFile::UnspecifiedError << file;
+ QTest::newRow("0, -1") << 0 << -1 << QFile::UnspecifiedError << file;
+ }
+
+ QTest::newRow("0, 1") << 0 << 1 << QFile::NoError << validFile;
+}
+
+void tst_QFile::mapResource()
+{
+ QFETCH(QString, fileName);
+ QFETCH(int, offset);
+ QFETCH(int, size);
+ QFETCH(QFile::FileError, error);
+
+ QFile file(fileName);
+ uchar *memory = file.map(offset, size);
+ QCOMPARE(file.error(), error);
+ QVERIFY((error == QFile::NoError) ? (memory != 0) : (memory == 0));
+ if (error == QFile::NoError)
+ QCOMPARE(QString(memory[0]), QString::number(offset + 1));
+ QVERIFY(file.unmap(memory));
+}
+
+void tst_QFile::mapOpenMode_data()
+{
+ QTest::addColumn<int>("openMode");
+
+ QTest::newRow("ReadOnly") << int(QIODevice::ReadOnly);
+ //QTest::newRow("WriteOnly") << int(QIODevice::WriteOnly); // this doesn't make sense
+ QTest::newRow("ReadWrite") << int(QIODevice::ReadWrite);
+ QTest::newRow("ReadOnly,Unbuffered") << int(QIODevice::ReadOnly | QIODevice::Unbuffered);
+ QTest::newRow("ReadWrite,Unbuffered") << int(QIODevice::ReadWrite | QIODevice::Unbuffered);
+}
+
+void tst_QFile::mapOpenMode()
+{
+ QFETCH(int, openMode);
+ static const qint64 fileSize = 4096;
+
+ QByteArray pattern(fileSize, 'A');
+
+ QString fileName = QDir::currentPath() + '/' + "qfile_map_testfile";
+ if (QFile::exists(fileName)) {
+ QVERIFY(QFile::setPermissions(fileName,
+ QFile::WriteOwner | QFile::ReadOwner | QFile::WriteUser | QFile::ReadUser));
+ QFile::remove(fileName);
+ }
+ QFile file(fileName);
+
+ // make a file
+ QVERIFY(file.open(QFile::ReadWrite));
+ QVERIFY(file.write(pattern));
+ QVERIFY(file.flush());
+ file.close();
+
+ // open according to our mode
+ QVERIFY(file.open(QIODevice::OpenMode(openMode)));
+
+ uchar *memory = file.map(0, fileSize);
+ QVERIFY(memory);
+ QVERIFY(memcmp(memory, pattern, fileSize) == 0);
+
+ if (openMode & QIODevice::WriteOnly) {
+ // try to write to the file
+ *memory = 'a';
+ file.unmap(memory);
+ file.close();
+ file.open(QIODevice::OpenMode(openMode));
+ file.seek(0);
+ char c;
+ QVERIFY(file.getChar(&c));
+ QCOMPARE(c, 'a');
+ }
+
+ file.close();
+}
+
+void tst_QFile::openDirectory()
+{
+ QFile f1(SRCDIR "resources");
+ // it's a directory, it must exist
+ QVERIFY(f1.exists());
+
+ // ...but not be openable
+ QVERIFY(!f1.open(QIODevice::ReadOnly));
+ f1.close();
+ QVERIFY(!f1.open(QIODevice::ReadOnly|QIODevice::Unbuffered));
+ f1.close();
+ QVERIFY(!f1.open(QIODevice::ReadWrite));
+ f1.close();
+ QVERIFY(!f1.open(QIODevice::WriteOnly));
+ f1.close();
+ QVERIFY(!f1.open(QIODevice::WriteOnly|QIODevice::Unbuffered));
+ f1.close();
+}
+
+void tst_QFile::openStandardStreamsFileDescriptors()
+{
+#ifdef Q_WS_WINCE
+ //allthough Windows CE (not mobile!) has functions that allow redirecting
+ //the standard file descriptors to a file (see SetStdioPathW/GetStdioPathW)
+ //it does not have functions to simply open them like below .
+ QSKIP("Opening standard streams on Windows CE via descriptor not implemented", SkipAll);
+#endif
+ // Using file descriptors
+ {
+ QFile in;
+ in.open(STDIN_FILENO, QIODevice::ReadOnly);
+ QCOMPARE( in.pos(), (qint64)0 );
+ QCOMPARE( in.size(), (qint64)0 );
+ QVERIFY( in.isSequential() );
+ }
+
+ {
+ QFile out;
+ out.open(STDOUT_FILENO, QIODevice::WriteOnly);
+ QCOMPARE( out.pos(), (qint64)0 );
+ QCOMPARE( out.size(), (qint64)0 );
+ QVERIFY( out.isSequential() );
+ }
+
+ {
+ QFile err;
+ err.open(STDERR_FILENO, QIODevice::WriteOnly);
+ QCOMPARE( err.pos(), (qint64)0 );
+ QCOMPARE( err.size(), (qint64)0 );
+ QVERIFY( err.isSequential() );
+ }
+}
+
+void tst_QFile::openStandardStreamsBufferedStreams()
+{
+#if defined (Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QSKIP("Unix only test.", SkipAll);
+#endif
+ // Using streams
+ {
+ QFile in;
+ in.open(stdin, QIODevice::ReadOnly);
+ QCOMPARE( in.pos(), (qint64)0 );
+ QCOMPARE( in.size(), (qint64)0 );
+ QVERIFY( in.isSequential() );
+ }
+
+ {
+ QFile out;
+ out.open(stdout, QIODevice::WriteOnly);
+ QCOMPARE( out.pos(), (qint64)0 );
+ QCOMPARE( out.size(), (qint64)0 );
+ QVERIFY( out.isSequential() );
+ }
+
+ {
+ QFile err;
+ err.open(stderr, QIODevice::WriteOnly);
+ QCOMPARE( err.pos(), (qint64)0 );
+ QCOMPARE( err.size(), (qint64)0 );
+ QVERIFY( err.isSequential() );
+ }
+}
+
+void tst_QFile::openStandardStreams()
+{
+ openStandardStreamsFileDescriptors();
+ openStandardStreamsBufferedStreams();
+}
+
+void tst_QFile::writeNothing()
+{
+ for (int i = 0; i < NumberOfFileTypes; ++i) {
+ QFile file("file.txt");
+ QVERIFY( openFile(file, QIODevice::WriteOnly | QIODevice::Unbuffered, FileType(i)) );
+ QVERIFY( 0 == file.write((char *)0, 0) );
+ QCOMPARE( file.error(), QFile::NoError );
+ closeFile(file);
+ }
+}
+
+void tst_QFile::resize_data()
+{
+ QTest::addColumn<int>("filetype");
+
+ QTest::newRow("native") << int(OpenQFile);
+ QTest::newRow("fileno") << int(OpenFd);
+ QTest::newRow("stream") << int(OpenStream);
+#ifdef Q_OS_SYMBIAN
+ QTest::newRow("rfile") << int(OpenRFile);
+#endif
+}
+
+void tst_QFile::resize()
+{
+ QFETCH(int, filetype);
+ QString filename(QLatin1String("file.txt"));
+ QFile file(filename);
+ QVERIFY(openFile(file, QIODevice::ReadWrite, FileType(filetype)));
+ QVERIFY(file.resize(8));
+ QCOMPARE(file.size(), qint64(8));
+ closeFile(file);
+ QFile::resize(filename, 4);
+ QCOMPARE(QFileInfo(filename).size(), qint64(4));
+ QVERIFY(QFile::remove(filename));
+}
+
+void tst_QFile::objectConstructors()
+{
+ QObject ob;
+ QFile* file1 = new QFile(SRCDIR "testfile.txt", &ob);
+ QFile* file2 = new QFile(&ob);
+ QVERIFY(file1->exists());
+ QVERIFY(!file2->exists());
+}
+
+#ifdef Q_OS_SYMBIAN
+void tst_QFile::platformSecurity_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<bool>("readable");
+ QTest::addColumn<bool>("writable");
+
+ QString selfname = QCoreApplication::applicationFilePath();
+ QString ownprivate = QCoreApplication::applicationDirPath();
+ QString owndrive = selfname.left(2);
+ bool amiprivileged = RProcess().HasCapability(ECapabilityAllFiles);
+ QTest::newRow("resource") << owndrive + "/resource/apps/tst_qfile.rsc" << true << amiprivileged;
+ QTest::newRow("sys") << selfname << amiprivileged << false;
+ QTest::newRow("own private") << ownprivate + "/testfile.txt" << true << true;
+ QTest::newRow("other private") << owndrive + "/private/10003a3f/import/apps/tst_qfile_reg.rsc" << amiprivileged << amiprivileged;
+}
+
+void tst_QFile::platformSecurity()
+{
+ QFETCH(QString,file);
+ QFETCH(bool,readable);
+ QFETCH(bool,writable);
+
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::ReadOnly), readable);
+ }
+
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::ReadOnly | QIODevice::Unbuffered), readable);
+ }
+
+ //append mode used to avoid truncating the files.
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::WriteOnly | QIODevice::Append), writable);
+ }
+
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Unbuffered), writable);
+ }
+
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::ReadWrite), writable);
+ }
+
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::ReadWrite | QIODevice::Unbuffered), writable);
+ }
+}
+#endif
+
+void tst_QFile::caseSensitivity()
+{
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_OS_MAC)
+ const bool caseSensitive = false;
+#else
+ const bool caseSensitive = true;
+#endif
+ QByteArray testData("a little test");
+ QString filename("File.txt");
+ {
+ QFile f(filename);
+ QVERIFY(f.open(QIODevice::WriteOnly));
+ QVERIFY(f.write(testData));
+ f.close();
+ }
+ QStringList alternates;
+ QFileInfo fi(filename);
+ QVERIFY(fi.exists());
+ alternates << "file.txt" << "File.TXT" << "fIlE.TxT" << fi.absoluteFilePath().toUpper() << fi.absoluteFilePath().toLower();
+ foreach (QString alt, alternates) {
+ QFileInfo fi2(alt);
+ QCOMPARE(fi2.exists(), !caseSensitive);
+ QCOMPARE(fi.size() == fi2.size(), !caseSensitive);
+ QFile f2(alt);
+ QCOMPARE(f2.open(QIODevice::ReadOnly), !caseSensitive);
+ if (!caseSensitive)
+ QCOMPARE(f2.readAll(), testData);
+ }
+}
+
+//MSVCRT asserts when any function is called with a closed file handle.
+//This replaces the default crashing error handler with one that ignores the error (allowing EBADF to be returned)
+class AutoIgnoreInvalidParameter
+{
+public:
+#if defined(Q_OS_WIN) && defined (Q_CC_MSVC)
+ static void ignore_invalid_parameter(const wchar_t*, const wchar_t*, const wchar_t*, unsigned int, uintptr_t) {}
+ AutoIgnoreInvalidParameter()
+ {
+ oldHandler = _set_invalid_parameter_handler(ignore_invalid_parameter);
+ //also disable the abort/retry/ignore popup
+ oldReportMode = _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG);
+ }
+ ~AutoIgnoreInvalidParameter()
+ {
+ //restore previous settings
+ _set_invalid_parameter_handler(oldHandler);
+ _CrtSetReportMode(_CRT_ASSERT, oldReportMode);
+ }
+ _invalid_parameter_handler oldHandler;
+ int oldReportMode;
+#endif
+};
+
+void tst_QFile::autocloseHandle()
+{
+#ifdef Q_OS_SYMBIAN
+ // these tests are a bit different, because using a closed file handle results in a panic rather than error
+ {
+ QFile file("readonlyfile");
+ QFile file2("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenRFile, QFile::AutoCloseHandle));
+ // file is opened with mandatory lock, so opening again should fail
+ QVERIFY(!file2.open(QIODevice::ReadOnly));
+
+ file.close();
+ // opening again should now succeed (because handle is closed)
+ QVERIFY(file2.open(QIODevice::ReadOnly));
+ }
+
+ {
+ QFile file("readonlyfile");
+ QFile file2("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenRFile, QFile::DontCloseHandle));
+ // file is opened with mandatory lock, so opening again should fail
+ QVERIFY(!file2.open(QIODevice::ReadOnly));
+
+ file.close();
+ // opening again should still fail (because handle is not auto closed)
+ QVERIFY(!file2.open(QIODevice::ReadOnly));
+
+ rfile_.Close();
+ // now it should succeed
+ QVERIFY(file2.open(QIODevice::ReadOnly));
+ }
+#endif
+
+ {
+ QFile file("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenFd, QFile::AutoCloseHandle));
+ int fd = fd_;
+ QCOMPARE(file.handle(), fd);
+ file.close();
+ fd_ = -1;
+ QCOMPARE(file.handle(), -1);
+ AutoIgnoreInvalidParameter a;
+ Q_UNUSED(a);
+ //file is closed, read should fail
+ char buf;
+ QCOMPARE((int)QT_READ(fd, &buf, 1), -1);
+ QVERIFY(errno = EBADF);
+ }
+
+ {
+ QFile file("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenFd, QFile::DontCloseHandle));
+ QCOMPARE(file.handle(), fd_);
+ file.close();
+ QCOMPARE(file.handle(), -1);
+ //file is not closed, read should succeed
+ char buf;
+ QCOMPARE((int)QT_READ(fd_, &buf, 1), 1);
+ ::close(fd_);
+ fd_ = -1;
+ }
+
+ {
+ QFile file("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenStream, QFile::AutoCloseHandle));
+ int fd = fileno(stream_);
+ QCOMPARE(file.handle(), fd);
+ file.close();
+ stream_ = 0;
+ QCOMPARE(file.handle(), -1);
+ AutoIgnoreInvalidParameter a;
+ Q_UNUSED(a);
+ //file is closed, read should fail
+ char buf;
+ QCOMPARE((int)QT_READ(fd, &buf, 1), -1); //not using fread because the FILE* was freed by fclose
+ }
+
+ {
+ QFile file("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenStream, QFile::DontCloseHandle));
+ QCOMPARE(file.handle(), fileno(stream_));
+ file.close();
+ QCOMPARE(file.handle(), -1);
+ //file is not closed, read should succeed
+ char buf;
+ QCOMPARE(int(::fread(&buf, 1, 1, stream_)), 1);
+ ::fclose(stream_);
+ stream_ = 0;
+ }
+}
+
+QTEST_MAIN(tst_QFile)
+#include "tst_qfile.moc"
diff --git a/tests/auto/qfile/two.dots.file b/tests/auto/corelib/io/qfile/two.dots.file
index 1910281566..1910281566 100644
--- a/tests/auto/qfile/two.dots.file
+++ b/tests/auto/corelib/io/qfile/two.dots.file
diff --git a/tests/auto/qfileinfo/.gitignore b/tests/auto/corelib/io/qfileinfo/.gitignore
index fc1a8906af..fc1a8906af 100644
--- a/tests/auto/qfileinfo/.gitignore
+++ b/tests/auto/corelib/io/qfileinfo/.gitignore
diff --git a/tests/auto/qfileinfo/qfileinfo.pro b/tests/auto/corelib/io/qfileinfo/qfileinfo.pro
index 2fd626a57e..2fd626a57e 100644
--- a/tests/auto/qfileinfo/qfileinfo.pro
+++ b/tests/auto/corelib/io/qfileinfo/qfileinfo.pro
diff --git a/tests/auto/qfileinfo/qfileinfo.qrc b/tests/auto/corelib/io/qfileinfo/qfileinfo.qrc
index 2c63d8afeb..2c63d8afeb 100644
--- a/tests/auto/qfileinfo/qfileinfo.qrc
+++ b/tests/auto/corelib/io/qfileinfo/qfileinfo.qrc
diff --git a/tests/auto/qfileinfo/resources/file1 b/tests/auto/corelib/io/qfileinfo/resources/file1
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qfileinfo/resources/file1
+++ b/tests/auto/corelib/io/qfileinfo/resources/file1
diff --git a/tests/auto/qfileinfo/resources/file1.ext1 b/tests/auto/corelib/io/qfileinfo/resources/file1.ext1
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qfileinfo/resources/file1.ext1
+++ b/tests/auto/corelib/io/qfileinfo/resources/file1.ext1
diff --git a/tests/auto/qfileinfo/resources/file1.ext1.ext2 b/tests/auto/corelib/io/qfileinfo/resources/file1.ext1.ext2
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qfileinfo/resources/file1.ext1.ext2
+++ b/tests/auto/corelib/io/qfileinfo/resources/file1.ext1.ext2
diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
new file mode 100644
index 0000000000..1eb59ac96a
--- /dev/null
+++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
@@ -0,0 +1,1811 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qfile.h>
+#include <qdir.h>
+#include <qcoreapplication.h>
+#include <qlibrary.h>
+#include <qtemporaryfile.h>
+#include <qdir.h>
+#include <qfileinfo.h>
+#ifdef Q_OS_UNIX
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <pwd.h>
+#endif
+#ifdef Q_OS_WIN
+#define _WIN32_WINNT 0x500
+#include <qt_windows.h>
+#include <qlibrary.h>
+#include <lm.h>
+#endif
+#include <qplatformdefs.h>
+#include <qdebug.h>
+#ifdef Q_OS_SYMBIAN
+#include <f32file.h>
+#include <private/qcore_symbian_p.h>
+#endif
+#include "../../../network-settings.h"
+#include <private/qfileinfo_p.h>
+#include "../../../../shared/filesystem.h"
+
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR ""
+# define NO_SYMLINKS
+#endif
+
+QT_BEGIN_NAMESPACE
+extern Q_AUTOTEST_EXPORT bool qIsLikelyToBeNfs(int /* handle */);
+QT_END_NAMESPACE
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QFileInfo : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QFileInfo();
+ ~tst_QFileInfo();
+
+private slots:
+ void getSetCheck();
+
+ void copy();
+
+ void isFile_data();
+ void isFile();
+
+ void isDir_data();
+ void isDir();
+
+ void isRoot_data();
+ void isRoot();
+
+ void exists_data();
+ void exists();
+
+ void absolutePath_data();
+ void absolutePath();
+
+ void absFilePath_data();
+ void absFilePath();
+
+ void canonicalPath();
+ void canonicalFilePath();
+
+ void fileName_data();
+ void fileName();
+
+ void bundleName_data();
+ void bundleName();
+
+ void dir_data();
+ void dir();
+
+ void suffix_data();
+ void suffix();
+
+ void completeSuffix_data();
+ void completeSuffix();
+
+ void baseName_data();
+ void baseName();
+
+ void completeBaseName_data();
+ void completeBaseName();
+
+ void permission_data();
+ void permission();
+
+ void size_data();
+ void size();
+
+ void systemFiles();
+
+ void compare_data();
+ void compare();
+
+ void consistent_data();
+ void consistent();
+
+ void fileTimes_data();
+ void fileTimes();
+ void fileTimes_oldFile();
+
+ void isSymLink_data();
+ void isSymLink();
+
+ void isHidden_data();
+ void isHidden();
+#if defined(Q_OS_MAC)
+ void isHiddenFromFinder();
+#endif
+
+ void isBundle_data();
+ void isBundle();
+
+ void isLocalFs_data();
+ void isLocalFs();
+
+ void refresh();
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ void ntfsJunctionPointsAndSymlinks_data();
+ void ntfsJunctionPointsAndSymlinks();
+ void brokenShortcut();
+#endif
+
+ void isWritable();
+ void isExecutable();
+ void testDecomposedUnicodeNames_data();
+ void testDecomposedUnicodeNames();
+
+ void equalOperator() const;
+ void equalOperatorWithDifferentSlashes() const;
+ void notEqualOperator() const;
+
+ void detachingOperations();
+
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ void owner();
+#endif
+ void group();
+
+ void invalidState();
+};
+
+tst_QFileInfo::tst_QFileInfo()
+{
+}
+
+tst_QFileInfo::~tst_QFileInfo()
+{
+ QFile::remove("brokenlink.lnk");
+ QFile::remove("link.lnk");
+ QFile::remove("file1");
+ QFile::remove("dummyfile");
+ QFile::remove("simplefile.txt");
+ QFile::remove("longFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileName.txt");
+#ifdef Q_OS_SYMBIAN
+ QFile::remove("hidden.txt");
+ QFile::remove("nothidden.txt");
+#else
+ QFile::remove("tempfile.txt");
+#endif
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ QDir().rmdir("./.hidden-directory");
+ QFile::remove("link_to_tst_qfileinfo");
+#endif
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QDir().rmdir("./hidden-directory");
+ QDir().rmdir("abs_symlink");
+ QDir().rmdir("rel_symlink");
+ QDir().rmdir("junction_pwd");
+ QDir().rmdir("junction_root");
+ QDir().rmdir("mountpoint");
+ QFile::remove("abs_symlink.cpp");
+ QFile::remove("rel_symlink.cpp");
+#endif
+}
+
+// Testing get/set functions
+void tst_QFileInfo::getSetCheck()
+{
+ QFileInfo obj1;
+ // bool QFileInfo::caching()
+ // void QFileInfo::setCaching(bool)
+ obj1.setCaching(false);
+ QCOMPARE(false, obj1.caching());
+ obj1.setCaching(true);
+ QCOMPARE(true, obj1.caching());
+}
+
+static QFileInfoPrivate* getPrivate(QFileInfo &info)
+{
+ return (*reinterpret_cast<QFileInfoPrivate**>(&info));
+}
+
+void tst_QFileInfo::copy()
+{
+ QTemporaryFile *t;
+ t = new QTemporaryFile;
+ t->open();
+ QFileInfo info(t->fileName());
+ QVERIFY(info.exists());
+
+ //copy constructor
+ QFileInfo info2(info);
+ QFileInfoPrivate *privateInfo = getPrivate(info);
+ QFileInfoPrivate *privateInfo2 = getPrivate(info2);
+ QCOMPARE(privateInfo, privateInfo2);
+
+ //operator =
+ QFileInfo info3 = info;
+ QFileInfoPrivate *privateInfo3 = getPrivate(info3);
+ QCOMPARE(privateInfo, privateInfo3);
+ QCOMPARE(privateInfo2, privateInfo3);
+
+ //refreshing info3 will detach it
+ QFile file(info.absoluteFilePath());
+ QVERIFY(file.open(QFile::WriteOnly));
+ QCOMPARE(file.write("JAJAJAA"), qint64(7));
+ file.flush();
+
+ QTest::qWait(250);
+#if defined(Q_OS_WIN) || defined(Q_OS_WINCE)
+ if (QSysInfo::windowsVersion() & QSysInfo::WV_VISTA ||
+ QSysInfo::windowsVersion() & QSysInfo::WV_CE_based)
+ file.close();
+#endif
+#if defined(Q_OS_WINCE)
+ // On Windows CE we need to close the file.
+ // Otherwise the content will be cached and not
+ // flushed to the storage, although we flushed it
+ // manually!!! CE has interim cache, we cannot influence.
+ QTest::qWait(5000);
+#endif
+ info3.refresh();
+ privateInfo3 = getPrivate(info3);
+ QVERIFY(privateInfo != privateInfo3);
+ QVERIFY(privateInfo2 != privateInfo3);
+ QCOMPARE(privateInfo, privateInfo2);
+}
+
+void tst_QFileInfo::isFile_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QDir::currentPath() << false;
+ QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << true;
+ QTest::newRow("data2") << ":/tst_qfileinfo/resources/" << false;
+ QTest::newRow("data3") << ":/tst_qfileinfo/resources/file1" << true;
+ QTest::newRow("data4") << ":/tst_qfileinfo/resources/afilethatshouldnotexist" << false;
+}
+
+void tst_QFileInfo::isFile()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, expected);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.isFile(), expected);
+}
+
+
+void tst_QFileInfo::isDir_data()
+{
+ // create a broken symlink
+ QFile::remove("brokenlink.lnk");
+ QFile::remove("dummyfile");
+ QFile file3("dummyfile");
+ file3.open(QIODevice::WriteOnly);
+ if (file3.link("brokenlink.lnk")) {
+ file3.remove();
+ QFileInfo info3("brokenlink.lnk");
+ QVERIFY( info3.isSymLink() );
+ }
+
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QDir::currentPath() << true;
+ QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << false;
+ QTest::newRow("data2") << ":/tst_qfileinfo/resources/" << true;
+ QTest::newRow("data3") << ":/tst_qfileinfo/resources/file1" << false;
+ QTest::newRow("data4") << ":/tst_qfileinfo/resources/afilethatshouldnotexist" << false;
+
+ QTest::newRow("simple dir") << SRCDIR "resources" << true;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << true;
+
+ QTest::newRow("broken link") << "brokenlink.lnk" << false;
+
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("drive 1") << "c:" << true;
+ QTest::newRow("drive 2") << "c:/" << true;
+ //QTest::newRow("drive 2") << "t:s" << false;
+#endif
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
+ QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
+ QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << true;
+ QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << true;
+ QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << true;
+ QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << true;
+ QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << false;
+#endif
+}
+
+void tst_QFileInfo::isDir()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, expected);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.isDir(), expected);
+}
+
+void tst_QFileInfo::isRoot_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("expected");
+ QTest::newRow("data0") << QDir::currentPath() << false;
+ QTest::newRow("data1") << "/" << true;
+ QTest::newRow("data2") << "*" << false;
+ QTest::newRow("data3") << "/*" << false;
+ QTest::newRow("data4") << ":/tst_qfileinfo/resources/" << false;
+ QTest::newRow("data5") << ":/" << true;
+
+ QTest::newRow("simple dir") << SRCDIR "resources" << false;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << false;
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("drive 1") << "c:" << false;
+ QTest::newRow("drive 2") << "c:/" << true;
+ QTest::newRow("drive 3") << "p:/" << false;
+#endif
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
+ QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
+ QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << false;
+ QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << false;
+ QTest::newRow("unc 7") << "//ahostthatshouldnotexist" << false;
+#endif
+}
+
+void tst_QFileInfo::isRoot()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, expected);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.isRoot(), expected);
+}
+
+void tst_QFileInfo::exists_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QDir::currentPath() << true;
+ QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << true;
+ QTest::newRow("data2") << "/I/do_not_expect_this_path_to_exist/" << false;
+ QTest::newRow("data3") << ":/tst_qfileinfo/resources/" << true;
+ QTest::newRow("data4") << ":/tst_qfileinfo/resources/file1" << true;
+ QTest::newRow("data5") << ":/I/do_not_expect_this_path_to_exist/" << false;
+ QTest::newRow("data6") << SRCDIR "resources/*" << false;
+ QTest::newRow("data7") << SRCDIR "resources/*.foo" << false;
+ QTest::newRow("data8") << SRCDIR "resources/*.ext1" << false;
+ QTest::newRow("data9") << SRCDIR "resources/file?.ext1" << false;
+ QTest::newRow("data10") << "." << true;
+ QTest::newRow("data11") << ". " << false;
+ QTest::newRow("empty") << "" << false;
+
+ QTest::newRow("simple dir") << SRCDIR "resources" << true;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << true;
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
+ QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
+ QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << true;
+ QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << true;
+ QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << true;
+ QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << true;
+ QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << false;
+ QTest::newRow("unc 8") << "//" + QtNetworkSettings::winServerName() + "/asharethatshouldnotexist" << false;
+ QTest::newRow("unc 9") << "//ahostthatshouldnotexist" << false;
+#endif
+}
+
+void tst_QFileInfo::exists()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, expected);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.exists(), expected);
+}
+
+void tst_QFileInfo::absolutePath_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("filename");
+
+ QString drivePrefix;
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ drivePrefix = QDir::currentPath().left(2);
+ QString nonCurrentDrivePrefix =
+ drivePrefix.left(1).compare("X", Qt::CaseInsensitive) == 0 ? QString("Y:") : QString("X:");
+
+ // Make sure drive-relative paths return correct absolute paths (task 255326)
+ QTest::newRow("<current drive>:my.dll") << drivePrefix + "my.dll" << QDir::currentPath() << "my.dll";
+ QTest::newRow("<not current drive>:my.dll") << nonCurrentDrivePrefix + "my.dll"
+ << nonCurrentDrivePrefix + "/"
+ << "my.dll";
+#endif
+ QTest::newRow("0") << "/machine/share/dir1/" << drivePrefix + "/machine/share/dir1" << "";
+ QTest::newRow("1") << "/machine/share/dir1" << drivePrefix + "/machine/share" << "dir1";
+ QTest::newRow("2") << "/usr/local/bin" << drivePrefix + "/usr/local" << "bin";
+ QTest::newRow("3") << "/usr/local/bin/" << drivePrefix + "/usr/local/bin" << "";
+ QTest::newRow("/test") << "/test" << drivePrefix + "/" << "test";
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ // see task 102898
+ QTest::newRow("c:\\autoexec.bat") << "c:\\autoexec.bat" << "C:/"
+ << "autoexec.bat";
+#endif
+ QTest::newRow("QTBUG-19995.1") << drivePrefix + "/System/Library/StartupItems/../Frameworks"
+ << drivePrefix + "/System/Library"
+ << "Frameworks";
+ QTest::newRow("QTBUG-19995.2") << drivePrefix + "/System/Library/StartupItems/../Frameworks/"
+ << drivePrefix + "/System/Library/Frameworks" << "";
+}
+
+void tst_QFileInfo::absolutePath()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, path);
+ QFETCH(QString, filename);
+
+ QFileInfo fi(file);
+
+ QCOMPARE(fi.absolutePath(), path);
+ QCOMPARE(fi.fileName(), filename);
+}
+
+void tst_QFileInfo::absFilePath_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("relativeFile") << "tmp.txt" << QDir::currentPath() + "/tmp.txt";
+ QTest::newRow("relativeFileInSubDir") << "temp/tmp.txt" << QDir::currentPath() + "/" + "temp/tmp.txt";
+ QString drivePrefix;
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QString curr = QDir::currentPath();
+
+ curr.remove(0, 2); // Make it a absolute path with no drive specifier: \depot\qt-4.2\tests\auto\qfileinfo
+ QTest::newRow(".") << curr << QDir::currentPath();
+ QTest::newRow("absFilePath") << "c:\\home\\andy\\tmp.txt" << "C:/home/andy/tmp.txt";
+
+ // Make sure drive-relative paths return correct absolute paths (task 255326)
+ drivePrefix = QDir::currentPath().left(2);
+ QString nonCurrentDrivePrefix =
+ drivePrefix.left(1).compare("X", Qt::CaseInsensitive) == 0 ? QString("Y:") : QString("X:");
+
+ QTest::newRow("<current drive>:my.dll") << drivePrefix + "temp/my.dll" << QDir::currentPath() + "/temp/my.dll";
+ QTest::newRow("<not current drive>:my.dll") << nonCurrentDrivePrefix + "temp/my.dll"
+ << nonCurrentDrivePrefix + "/temp/my.dll";
+#else
+ QTest::newRow("absFilePath") << "/home/andy/tmp.txt" << "/home/andy/tmp.txt";
+#endif
+ QTest::newRow("QTBUG-19995") << drivePrefix + "/System/Library/StartupItems/../Frameworks"
+ << drivePrefix + "/System/Library/Frameworks";
+}
+
+void tst_QFileInfo::absFilePath()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QVERIFY(QString::compare(fi.absoluteFilePath(), expected, Qt::CaseInsensitive) == 0);
+#else
+ QCOMPARE(fi.absoluteFilePath(), expected);
+#endif
+}
+
+void tst_QFileInfo::canonicalPath()
+{
+ QTemporaryFile tempFile;
+ tempFile.setAutoRemove(true);
+ tempFile.open();
+ QFileInfo fi(tempFile.fileName());
+ QCOMPARE(fi.canonicalPath(), QFileInfo(QDir::tempPath()).canonicalFilePath());
+}
+
+void tst_QFileInfo::canonicalFilePath()
+{
+ const QString fileName("tmp.canon");
+ QFile tempFile(fileName);
+ QVERIFY(tempFile.open(QFile::WriteOnly));
+ QFileInfo fi(tempFile.fileName());
+ QCOMPARE(fi.canonicalFilePath(), QDir::currentPath() + "/" + fileName);
+ tempFile.remove();
+
+ // This used to crash on Mac, verify that it doesn't anymore.
+ QFileInfo info("/tmp/../../../../../../../../../../../../../../../../../");
+ info.canonicalFilePath();
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ // This used to crash on Mac
+ QFileInfo dontCrash(QLatin1String("/"));
+ QCOMPARE(dontCrash.canonicalFilePath(), QLatin1String("/"));
+#endif
+
+#ifndef Q_OS_WIN
+ // test symlinks
+ QFile::remove("link.lnk");
+ {
+ QFile file(SRCDIR "tst_qfileinfo.cpp");
+ if (file.link("link.lnk")) {
+ QFileInfo info1(file);
+ QFileInfo info2("link.lnk");
+ QCOMPARE(info1.canonicalFilePath(), info2.canonicalFilePath());
+ }
+ }
+# if !defined(Q_OS_SYMBIAN)
+ // Symbian doesn't support links to directories
+ {
+ const QString link(QDir::tempPath() + QDir::separator() + "tst_qfileinfo");
+ QFile::remove(link);
+ QFile file(QDir::currentPath());
+ if (file.link(link)) {
+ QFile tempfile("tempfile.txt");
+ tempfile.open(QIODevice::ReadWrite);
+ tempfile.write("This file is generated by the QFileInfo autotest.");
+ QVERIFY(tempfile.flush());
+ tempfile.close();
+
+ QFileInfo info1("tempfile.txt");
+ QFileInfo info2(link + QDir::separator() + "tempfile.txt");
+
+ QVERIFY(info1.exists());
+ QVERIFY(info2.exists());
+ QCOMPARE(info1.canonicalFilePath(), info2.canonicalFilePath());
+
+ QFileInfo info3(link + QDir::separator() + "link.lnk");
+ QFileInfo info4(SRCDIR "tst_qfileinfo.cpp");
+ QVERIFY(!info3.canonicalFilePath().isEmpty());
+ QCOMPARE(info4.canonicalFilePath(), info3.canonicalFilePath());
+
+ tempfile.remove();
+ }
+ }
+ {
+ QString link(QDir::tempPath() + QDir::separator() + "tst_qfileinfo"
+ + QDir::separator() + "link_to_tst_qfileinfo");
+ QFile::remove(link);
+
+ QFile file(QDir::tempPath() + QDir::separator() + "tst_qfileinfo"
+ + QDir::separator() + "tst_qfileinfo.cpp");
+ if (file.link(link))
+ {
+ QFileInfo info1("tst_qfileinfo.cpp");
+ QFileInfo info2(link);
+ QCOMPARE(info1.canonicalFilePath(), info2.canonicalFilePath());
+ }
+ }
+# endif
+#endif
+
+#ifdef Q_OS_WIN
+ typedef BOOL (WINAPI *PtrCreateSymbolicLink)(LPTSTR, LPTSTR, DWORD);
+ PtrCreateSymbolicLink ptrCreateSymbolicLink =
+ (PtrCreateSymbolicLink)QLibrary::resolve(QLatin1String("kernel32"), "CreateSymbolicLinkW");
+
+ if (!ptrCreateSymbolicLink) {
+ QSKIP("Symbolic links aren't supported by FS", SkipAll);
+ } else {
+ // CreateSymbolicLink can return TRUE & still fail to create the link,
+ // the error code in that case is ERROR_PRIVILEGE_NOT_HELD (1314)
+ SetLastError(0);
+ BOOL ret = ptrCreateSymbolicLink((wchar_t*)QString("res").utf16(), (wchar_t*)QString("resources").utf16(), 1);
+ DWORD dwErr = GetLastError();
+ if (!ret)
+ QSKIP("Symbolic links aren't supported by FS", SkipAll);
+ QString currentPath = QDir::currentPath();
+ bool is_res_Current = QDir::setCurrent("res");
+ if (!is_res_Current && dwErr == 1314)
+ QSKIP("Not enough privilages to create Symbolic links", SkipAll);
+ QCOMPARE(is_res_Current, true);
+
+ QCOMPARE(QFileInfo("file1").canonicalFilePath(), currentPath + "/resources/file1");
+
+ QCOMPARE(QDir::setCurrent(currentPath), true);
+ QDir::current().rmdir("res");
+ }
+#endif
+}
+
+void tst_QFileInfo::fileName_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("relativeFile") << "tmp.txt" << "tmp.txt";
+ QTest::newRow("relativeFileInSubDir") << "temp/tmp.txt" << "tmp.txt";
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("absFilePath") << "c:\\home\\andy\\tmp.txt" << "tmp.txt";
+#else
+ QTest::newRow("absFilePath") << "/home/andy/tmp.txt" << "tmp.txt";
+#endif
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "file1.ext1";
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "file1.ext1.ext2";
+
+ QTest::newRow("ending slash [small]") << QString::fromLatin1("/a/") << QString::fromLatin1("");
+ QTest::newRow("no ending slash [small]") << QString::fromLatin1("/a") << QString::fromLatin1("a");
+
+ QTest::newRow("ending slash") << QString::fromLatin1("/somedir/") << QString::fromLatin1("");
+ QTest::newRow("no ending slash") << QString::fromLatin1("/somedir") << QString::fromLatin1("somedir");
+}
+
+void tst_QFileInfo::fileName()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.fileName(), expected);
+}
+
+void tst_QFileInfo::bundleName_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("root") << "/" << "";
+ QTest::newRow("etc") << "/etc" << "";
+#ifdef Q_OS_MAC
+ QTest::newRow("safari") << "/Applications/Safari.app" << "Safari";
+#endif
+}
+
+void tst_QFileInfo::bundleName()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.bundleName(), expected);
+}
+
+void tst_QFileInfo::dir_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<bool>("absPath");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("relativeFile") << "tmp.txt" << false << ".";
+ QTest::newRow("relativeFileAbsPath") << "tmp.txt" << true << QDir::currentPath();
+ QTest::newRow("relativeFileInSubDir") << "temp/tmp.txt" << false << "temp";
+ QTest::newRow("relativeFileInSubDirAbsPath") << "temp/tmp.txt" << true << QDir::currentPath() + "/temp";
+ QTest::newRow("absFilePath") << QDir::currentPath() + "/tmp.txt" << false << QDir::currentPath();
+ QTest::newRow("absFilePathAbsPath") << QDir::currentPath() + "/tmp.txt" << true << QDir::currentPath();
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << true << ":/tst_qfileinfo/resources";
+}
+
+void tst_QFileInfo::dir()
+{
+ QFETCH(QString, file);
+ QFETCH(bool, absPath);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ if (absPath) {
+ QCOMPARE(fi.absolutePath(), expected);
+ QCOMPARE(fi.absoluteDir().path(), expected);
+ } else {
+ QCOMPARE(fi.path(), expected);
+ QCOMPARE(fi.dir().path(), expected);
+ }
+}
+
+
+void tst_QFileInfo::suffix_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("noextension0") << "file" << "";
+ QTest::newRow("noextension1") << "/path/to/file" << "";
+ QTest::newRow("data0") << "file.tar" << "tar";
+ QTest::newRow("data1") << "file.tar.gz" << "gz";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "gz";
+ QTest::newRow("data3") << "/path/file.tar" << "tar";
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "ext1";
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "ext2";
+ QTest::newRow("hidden1") << ".ext1" << "ext1";
+ QTest::newRow("hidden1") << ".ext" << "ext";
+ QTest::newRow("hidden1") << ".ex" << "ex";
+ QTest::newRow("hidden1") << ".e" << "e";
+ QTest::newRow("hidden2") << ".ext1.ext2" << "ext2";
+ QTest::newRow("hidden2") << ".ext.ext2" << "ext2";
+ QTest::newRow("hidden2") << ".ex.ext2" << "ext2";
+ QTest::newRow("hidden2") << ".e.ext2" << "ext2";
+ QTest::newRow("hidden2") << "..ext2" << "ext2";
+}
+
+void tst_QFileInfo::suffix()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.suffix(), expected);
+}
+
+
+void tst_QFileInfo::completeSuffix_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("noextension0") << "file" << "";
+ QTest::newRow("noextension1") << "/path/to/file" << "";
+ QTest::newRow("data0") << "file.tar" << "tar";
+ QTest::newRow("data1") << "file.tar.gz" << "tar.gz";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "tar.gz";
+ QTest::newRow("data3") << "/path/file.tar" << "tar";
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "ext1";
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "ext1.ext2";
+}
+
+void tst_QFileInfo::completeSuffix()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.completeSuffix(), expected);
+}
+
+void tst_QFileInfo::baseName_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("data0") << "file.tar" << "file";
+ QTest::newRow("data1") << "file.tar.gz" << "file";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "file";
+ QTest::newRow("data3") << "/path/file.tar" << "file";
+ QTest::newRow("data4") << "/path/file" << "file";
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "file1";
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "file1";
+}
+
+void tst_QFileInfo::baseName()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.baseName(), expected);
+}
+
+void tst_QFileInfo::completeBaseName_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("data0") << "file.tar" << "file";
+ QTest::newRow("data1") << "file.tar.gz" << "file.tar";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "file.tar";
+ QTest::newRow("data3") << "/path/file.tar" << "file";
+ QTest::newRow("data4") << "/path/file" << "file";
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "file1";
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "file1.ext1";
+}
+
+void tst_QFileInfo::completeBaseName()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.completeBaseName(), expected);
+}
+
+void tst_QFileInfo::permission_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<int>("perms");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QCoreApplication::instance()->applicationFilePath() << int(QFile::ExeUser) << true;
+ QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << int(QFile::ReadUser) << true;
+// QTest::newRow("data2") << "tst_qfileinfo.cpp" << int(QFile::WriteUser) << false;
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::ReadUser) << true;
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::WriteUser) << false;
+ QTest::newRow("resource3") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::ExeUser) << false;
+}
+
+void tst_QFileInfo::permission()
+{
+ QFETCH(QString, file);
+ QFETCH(int, perms);
+ QFETCH(bool, expected);
+#ifdef Q_OS_SYMBIAN
+ QSKIP("No user based rights in Symbian OS - SOS needs platform security tests instead", SkipAll);
+#endif
+ QFileInfo fi(file);
+ QCOMPARE(fi.permission(QFile::Permissions(perms)), expected);
+}
+
+void tst_QFileInfo::size_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<int>("size");
+
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << 0;
+ QFile::remove("file1");
+ QFile file("file1");
+ QVERIFY(file.open(QFile::WriteOnly));
+ QCOMPARE(file.write("JAJAJAA"), qint64(7));
+ QTest::newRow("created-file") << "file1" << 7;
+
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << 0;
+}
+
+void tst_QFileInfo::size()
+{
+ QFETCH(QString, file);
+
+ QFileInfo fi(file);
+ (void)fi.permissions(); // see task 104198
+ QTEST(int(fi.size()), "size");
+}
+
+void tst_QFileInfo::systemFiles()
+{
+#if !defined(Q_OS_WIN) || defined(Q_OS_WINCE)
+ QSKIP("This is a Windows only test", SkipAll);
+#endif
+ QFileInfo fi("c:\\pagefile.sys");
+ QVERIFY(fi.exists()); // task 167099
+ QVERIFY(fi.size() > 0); // task 189202
+ QVERIFY(fi.lastModified().isValid());
+}
+
+void tst_QFileInfo::compare_data()
+{
+ QTest::addColumn<QString>("file1");
+ QTest::addColumn<QString>("file2");
+ QTest::addColumn<bool>("same");
+
+#if defined(Q_OS_MAC)
+ // Since 10.6 we use realpath() in qfsfileengine, and it properly handles
+ // file system case sensitivity. However here in the autotest we don't
+ // check if the file system is case sensitive, so to make it pass in the
+ // default OS X installation we assume we are running on a case insensitive
+ // file system if on 10.6 and on a case sensitive file system if on 10.5
+ bool caseSensitiveOnMac = true;
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6)
+ caseSensitiveOnMac = false;
+#endif
+
+ QTest::newRow("data0")
+ << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
+ << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
+ << true;
+ QTest::newRow("data1")
+ << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
+ << QString::fromLatin1("/tst_qfileinfo.cpp")
+ << false;
+ QTest::newRow("data2")
+ << QString::fromLatin1("tst_qfileinfo.cpp")
+ << QDir::currentPath() + QString::fromLatin1("/tst_qfileinfo.cpp")
+ << true;
+ QTest::newRow("casesense1")
+ << QString::fromLatin1(SRCDIR "tst_qfileInfo.cpp")
+ << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ << true;
+#elif defined(Q_OS_MAC)
+ << !caseSensitiveOnMac;
+#else
+ << false;
+#endif
+}
+
+void tst_QFileInfo::compare()
+{
+ QFETCH(QString, file1);
+ QFETCH(QString, file2);
+ QFETCH(bool, same);
+ QFileInfo fi1(file1), fi2(file2);
+ QCOMPARE(fi1 == fi2, same);
+}
+
+void tst_QFileInfo::consistent_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("slashes") << QString::fromLatin1("\\a\\a\\a\\a") << QString::fromLatin1("/a/a/a/a");
+#endif
+ QTest::newRow("ending slash") << QString::fromLatin1("/a/somedir/") << QString::fromLatin1("/a/somedir/");
+ QTest::newRow("no ending slash") << QString::fromLatin1("/a/somedir") << QString::fromLatin1("/a/somedir");
+}
+
+void tst_QFileInfo::consistent()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.filePath(), expected);
+ QCOMPARE(fi.dir().path() + "/" + fi.fileName(), expected);
+}
+
+
+void tst_QFileInfo::fileTimes_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::newRow("simple") << QString::fromLatin1("simplefile.txt");
+ QTest::newRow( "longfile" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt");
+ QTest::newRow( "longfile absolutepath" ) << QFileInfo(QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt")).absoluteFilePath();
+}
+
+void tst_QFileInfo::fileTimes()
+{
+#if defined(Q_OS_WINCE)
+ int sleepTime = 3000;
+#else
+ int sleepTime = 2000;
+#endif
+ QFETCH(QString, fileName);
+ if (QFile::exists(fileName)) {
+ QVERIFY(QFile::remove(fileName));
+ }
+ QTest::qSleep(sleepTime);
+ {
+ QFile file(fileName);
+#if defined(Q_OS_WINCE)
+ QEXPECT_FAIL("longfile", "No long filenames on WinCE", Abort);
+ QEXPECT_FAIL("longfile absolutepath", "No long filenames on WinCE", Abort);
+#elif defined(Q_OS_SYMBIAN)
+ QEXPECT_FAIL("longfile", "Maximum total filepath cannot exceed 256 characters in Symbian", Abort);
+ QEXPECT_FAIL("longfile absolutepath", "Maximum total filepath cannot exceed 256 characters in Symbian", Abort);
+#endif
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
+#ifdef Q_OS_UNIX
+ if (qIsLikelyToBeNfs(file.handle()))
+ QSKIP("This Test doesn't work on NFS", SkipAll);
+#endif
+ QTextStream ts(&file);
+ ts << fileName << endl;
+ }
+ QTest::qSleep(sleepTime);
+ QDateTime beforeWrite = QDateTime::currentDateTime();
+ QTest::qSleep(sleepTime);
+ {
+ QFileInfo fileInfo(fileName);
+ QVERIFY(fileInfo.created() < beforeWrite);
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::ReadWrite | QFile::Text));
+ QTextStream ts(&file);
+ ts << fileName << endl;
+ }
+ QTest::qSleep(sleepTime);
+ QDateTime beforeRead = QDateTime::currentDateTime();
+ QTest::qSleep(sleepTime);
+ {
+ QFileInfo fileInfo(fileName);
+// On unix created() returns the same as lastModified().
+#if !defined(Q_OS_UNIX) && !defined(Q_OS_WINCE)
+ QVERIFY(fileInfo.created() < beforeWrite);
+#endif
+ QVERIFY(fileInfo.lastModified() > beforeWrite);
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ QTextStream ts(&file);
+ QString line = ts.readLine();
+ QCOMPARE(line, fileName);
+ }
+
+ QFileInfo fileInfo(fileName);
+#if !defined(Q_OS_UNIX) && !defined(Q_OS_WINCE)
+ QVERIFY(fileInfo.created() < beforeWrite);
+#endif
+ //In Vista the last-access timestamp is not updated when the file is accessed/touched (by default).
+ //To enable this the HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate
+ //is set to 0, in the test machine.
+#ifdef Q_OS_WINCE
+ QEXPECT_FAIL("simple", "WinCE only stores date of access data, not the time", Continue);
+#endif
+#ifdef Q_OS_SYMBIAN
+ QEXPECT_FAIL("simple", "Symbian implementation of stat doesn't return read time right", Abort);
+#endif
+ QVERIFY(fileInfo.lastRead() > beforeRead);
+ QVERIFY(fileInfo.lastModified() > beforeWrite);
+ QVERIFY(fileInfo.lastModified() < beforeRead);
+}
+
+void tst_QFileInfo::fileTimes_oldFile()
+{
+ // This is not supported on WinCE
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ // All files are opened in share mode (both read and write).
+ DWORD shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
+
+ // All files on Windows can be read; there's no such thing as an
+ // unreadable file. Add GENERIC_WRITE if WriteOnly is passed.
+ int accessRights = GENERIC_READ | GENERIC_WRITE;
+
+ SECURITY_ATTRIBUTES securityAtts = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };
+
+ // Regular file mode. In Unbuffered mode, pass the no-buffering flag.
+ DWORD flagsAndAtts = FILE_ATTRIBUTE_NORMAL;
+
+ // WriteOnly can create files, ReadOnly cannot.
+ DWORD creationDisp = OPEN_ALWAYS;
+
+ // Create the file handle.
+ HANDLE fileHandle = CreateFile(L"oldfile.txt",
+ accessRights,
+ shareMode,
+ &securityAtts,
+ creationDisp,
+ flagsAndAtts,
+ NULL);
+
+ // Set file times back to 1601.
+ SYSTEMTIME stime;
+ stime.wYear = 1601;
+ stime.wMonth = 1;
+ stime.wDayOfWeek = 1;
+ stime.wDay = 1;
+ stime.wHour = 1;
+ stime.wMinute = 0;
+ stime.wSecond = 0;
+ stime.wMilliseconds = 0;
+
+ FILETIME ctime;
+ QVERIFY(SystemTimeToFileTime(&stime, &ctime));
+ FILETIME atime = ctime;
+ FILETIME mtime = atime;
+ QVERIFY(fileHandle);
+ QVERIFY(SetFileTime(fileHandle, &ctime, &atime, &mtime) != 0);
+
+ CloseHandle(fileHandle);
+
+ QFileInfo info("oldfile.txt");
+ QCOMPARE(info.lastModified(), QDateTime(QDate(1601, 1, 1), QTime(1, 0), Qt::UTC).toLocalTime());
+#endif
+}
+
+void tst_QFileInfo::isSymLink_data()
+{
+#ifndef NO_SYMLINKS
+ QFile::remove("link.lnk");
+ QFile::remove("brokenlink.lnk");
+ QFile::remove("dummyfile");
+
+ QFile file1(SRCDIR "tst_qfileinfo.cpp");
+ QVERIFY(file1.link("link.lnk"));
+
+ QFile file2("dummyfile");
+ file2.open(QIODevice::WriteOnly);
+ QVERIFY(file2.link("brokenlink.lnk"));
+ file2.remove();
+
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isSymLink");
+ QTest::addColumn<QString>("linkTarget");
+
+ QTest::newRow("existent file") << SRCDIR "tst_qfileinfo.cpp" << false << "";
+ QTest::newRow("link") << "link.lnk" << true << QFileInfo(SRCDIR "tst_qfileinfo.cpp").absoluteFilePath();
+ QTest::newRow("broken link") << "brokenlink.lnk" << true << QFileInfo("dummyfile").absoluteFilePath();
+#endif
+}
+
+void tst_QFileInfo::isSymLink()
+{
+#ifndef NO_SYMLINKS
+ QFETCH(QString, path);
+ QFETCH(bool, isSymLink);
+ QFETCH(QString, linkTarget);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.isSymLink(), isSymLink);
+ QCOMPARE(fi.symLinkTarget(), linkTarget);
+#else
+ QSKIP("no symbolic link support on this platform", SkipAll);
+#endif
+}
+
+void tst_QFileInfo::isHidden_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isHidden");
+ foreach (const QFileInfo& info, QDir::drives()) {
+ QTest::newRow(qPrintable("drive." + info.path())) << info.path() << false;
+ }
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QVERIFY(QDir("./hidden-directory").exists() || QDir().mkdir("./hidden-directory"));
+ QVERIFY(SetFileAttributesW(reinterpret_cast<LPCWSTR>(QString("./hidden-directory").utf16()),FILE_ATTRIBUTE_HIDDEN));
+ QTest::newRow("C:/path/to/hidden-directory") << QDir::currentPath() + QString::fromLatin1("/hidden-directory") << true;
+ QTest::newRow("C:/path/to/hidden-directory/.") << QDir::currentPath() + QString::fromLatin1("/hidden-directory/.") << true;
+#endif
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ QVERIFY(QDir("./.hidden-directory").exists() || QDir().mkdir("./.hidden-directory"));
+ QTest::newRow("/path/to/.hidden-directory") << QDir::currentPath() + QString("/.hidden-directory") << true;
+ QTest::newRow("/path/to/.hidden-directory/.") << QDir::currentPath() + QString("/.hidden-directory/.") << true;
+ QTest::newRow("/path/to/.hidden-directory/..") << QDir::currentPath() + QString("/.hidden-directory/..") << true;
+#endif
+
+#if defined(Q_OS_MAC)
+ // /bin has the hidden attribute on Mac OS X
+ QTest::newRow("/bin/") << QString::fromLatin1("/bin/") << true;
+#elif !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow("/bin/") << QString::fromLatin1("/bin/") << false;
+#endif
+
+#ifdef Q_OS_MAC
+ QTest::newRow("mac_etc") << QString::fromLatin1("/etc") << true;
+ QTest::newRow("mac_private_etc") << QString::fromLatin1("/private/etc") << false;
+ QTest::newRow("mac_Applications") << QString::fromLatin1("/Applications") << false;
+#endif
+
+#ifdef Q_OS_SYMBIAN
+ // No guaranteed hidden file knows to exist in Symbian filesystem, so make one.
+ QString hiddenFileName("hidden.txt");
+ QString notHiddenFileName("nothidden.txt");
+ QTest::newRow("hidden file") << hiddenFileName << true;
+ QTest::newRow("non-hidden file") << notHiddenFileName << false;
+
+ {
+ QFile file(hiddenFileName);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ QTextStream t(&file);
+ t << "foobar";
+
+ QFile file2(notHiddenFileName);
+ QVERIFY(file2.open(QIODevice::WriteOnly));
+ QTextStream t2(&file2);
+ t2 << "foobar";
+ }
+
+ RFs rfs;
+ TInt err = rfs.Connect();
+ QCOMPARE(err, KErrNone);
+ HBufC* symFile = qt_QString2HBufC(hiddenFileName);
+ err = rfs.SetAtt(*symFile, KEntryAttHidden, 0);
+ rfs.Close();
+ delete symFile;
+ QCOMPARE(err, KErrNone);
+#endif
+}
+
+void tst_QFileInfo::isHidden()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isHidden);
+ QFileInfo fi(path);
+
+ QCOMPARE(fi.isHidden(), isHidden);
+}
+
+#if defined(Q_OS_MAC)
+void tst_QFileInfo::isHiddenFromFinder()
+{
+ const char *filename = "test_foobar.txt";
+
+ QFile testFile(filename);
+ testFile.open(QIODevice::WriteOnly | QIODevice::Append);
+ testFile.write(QByteArray("world"));
+ testFile.close();
+
+ struct stat buf;
+ stat(filename, &buf);
+ chflags(filename, buf.st_flags | UF_HIDDEN);
+
+ QFileInfo fi(filename);
+ QCOMPARE(fi.isHidden(), true);
+
+ testFile.remove();
+}
+#endif
+
+void tst_QFileInfo::isBundle_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isBundle");
+ QTest::newRow("root") << QString::fromLatin1("/") << false;
+#ifdef Q_OS_MAC
+ QTest::newRow("mac_Applications") << QString::fromLatin1("/Applications") << false;
+ QTest::newRow("mac_Applications") << QString::fromLatin1("/Applications/Safari.app") << true;
+#endif
+}
+
+void tst_QFileInfo::isBundle()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isBundle);
+ QFileInfo fi(path);
+ QCOMPARE(fi.isBundle(), isBundle);
+}
+
+void tst_QFileInfo::isLocalFs_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isLocalFs");
+
+ QTest::newRow("local root") << QString::fromLatin1("/") << true;
+ QTest::newRow("local non-existent file") << QString::fromLatin1("/abrakadabra.boo") << true;
+
+ QTest::newRow("qresource root") << QString::fromLatin1(":/") << false;
+}
+
+void tst_QFileInfo::isLocalFs()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isLocalFs);
+
+ QFileInfo info(path);
+ QFileInfoPrivate *privateInfo = getPrivate(info);
+ QCOMPARE((privateInfo->fileEngine == 0), isLocalFs);
+ if (privateInfo->fileEngine)
+ QCOMPARE(bool(privateInfo->fileEngine->fileFlags(QAbstractFileEngine::LocalDiskFlag)
+ & QAbstractFileEngine::LocalDiskFlag), isLocalFs);
+}
+
+void tst_QFileInfo::refresh()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_WIN)
+ int sleepTime = 3000;
+#else
+ int sleepTime = 2000;
+#endif
+
+ QFile::remove("file1");
+ QFile file("file1");
+ QVERIFY(file.open(QFile::WriteOnly));
+ QCOMPARE(file.write("JAJAJAA"), qint64(7));
+ file.flush();
+
+ QFileInfo info(file);
+ QDateTime lastModified = info.lastModified();
+ QCOMPARE(info.size(), qint64(7));
+
+ QTest::qSleep(sleepTime);
+
+ QCOMPARE(file.write("JOJOJO"), qint64(6));
+ file.flush();
+ QVERIFY(info.lastModified() == lastModified);
+
+ QCOMPARE(info.size(), qint64(7));
+#if defined(Q_OS_WIN) || defined(Q_OS_WINCE)
+ if (QSysInfo::windowsVersion() & QSysInfo::WV_VISTA ||
+ QSysInfo::windowsVersion() & QSysInfo::WV_CE_based)
+ file.close();
+#endif
+#if defined(Q_OS_WINCE)
+ // On Windows CE we need to close the file.
+ // Otherwise the content will be cached and not
+ // flushed to the storage, although we flushed it
+ // manually!!! CE has interim cache, we cannot influence.
+ QTest::qWait(5000);
+#endif
+ info.refresh();
+ QCOMPARE(info.size(), qint64(13));
+ QVERIFY(info.lastModified() > lastModified);
+
+ QFileInfo info2 = info;
+ QCOMPARE(info2.size(), info.size());
+
+ info2.refresh();
+ QCOMPARE(info2.size(), info.size());
+}
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+void tst_QFileInfo::ntfsJunctionPointsAndSymlinks_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isSymLink");
+ QTest::addColumn<QString>("linkTarget");
+ QTest::addColumn<QString>("canonicalFilePath");
+
+ QDir pwd;
+ pwd.mkdir("target");
+
+ QLibrary kernel32("kernel32");
+ typedef BOOLEAN (WINAPI *PtrCreateSymbolicLink)(LPCWSTR, LPCWSTR, DWORD);
+ PtrCreateSymbolicLink createSymbolicLinkW = 0;
+ createSymbolicLinkW = (PtrCreateSymbolicLink) kernel32.resolve("CreateSymbolicLinkW");
+ if (!createSymbolicLinkW) {
+ //we need at least one data set for the test not to fail when skipping _data function
+ QDir target("target");
+ QTest::newRow("dummy") << target.path() << false << "" << target.canonicalPath();
+ QSKIP("symbolic links not supported by operating system",SkipSingle);
+ }
+ {
+ //Directory symlinks
+ QDir target("target");
+ QVERIFY(target.exists());
+
+ QString absTarget = QDir::toNativeSeparators(target.absolutePath());
+ QString absSymlink = QDir::toNativeSeparators(pwd.absolutePath()).append("\\abs_symlink");
+ QString relTarget = "target";
+ QString relSymlink = "rel_symlink";
+ QString fileInTarget(absTarget);
+ fileInTarget.append("\\file");
+ QString fileInSymlink(absSymlink);
+ fileInSymlink.append("\\file");
+ QFile file(fileInTarget);
+ file.open(QIODevice::ReadWrite);
+ file.close();
+
+ DWORD err = ERROR_SUCCESS ;
+ if (!pwd.exists("abs_symlink"))
+ if (!createSymbolicLinkW((wchar_t*)absSymlink.utf16(),(wchar_t*)absTarget.utf16(),0x1))
+ err = GetLastError();
+ if (err == ERROR_SUCCESS && !pwd.exists(relSymlink))
+ if (!createSymbolicLinkW((wchar_t*)relSymlink.utf16(),(wchar_t*)relTarget.utf16(),0x1))
+ err = GetLastError();
+ if (err != ERROR_SUCCESS) {
+ wchar_t errstr[0x100];
+ DWORD count = FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM,
+ 0, err, 0, errstr, 0x100, 0);
+ QString error(QString::fromWCharArray(errstr, count));
+ qWarning() << error;
+ //we need at least one data set for the test not to assert fail when skipping _data function
+ QDir target("target");
+ QTest::newRow("dummy") << target.path() << false << "" << target.canonicalPath();
+ QSKIP("link not supported by FS or insufficient privilege", SkipSingle);
+ }
+ QVERIFY(file.exists());
+
+ QTest::newRow("absolute dir symlink") << absSymlink << true << QDir::fromNativeSeparators(absTarget) << target.canonicalPath();
+ QTest::newRow("relative dir symlink") << relSymlink << true << QDir::fromNativeSeparators(relTarget) << target.canonicalPath();
+ QTest::newRow("file in symlink dir") << fileInSymlink << false << "" << target.canonicalPath().append("/file");
+ }
+ {
+ //File symlinks
+ QFileInfo target(SRCDIR "tst_qfileinfo.cpp");
+ QString absTarget = QDir::toNativeSeparators(target.absoluteFilePath());
+ QString absSymlink = QDir::toNativeSeparators(pwd.absolutePath()).append("\\abs_symlink.cpp");
+ QString relTarget = QDir::toNativeSeparators(pwd.relativeFilePath(target.absoluteFilePath()));
+ QString relSymlink = "rel_symlink.cpp";
+ QVERIFY(pwd.exists("abs_symlink.cpp") || createSymbolicLinkW((wchar_t*)absSymlink.utf16(),(wchar_t*)absTarget.utf16(),0x0));
+ QVERIFY(pwd.exists(relSymlink) || createSymbolicLinkW((wchar_t*)relSymlink.utf16(),(wchar_t*)relTarget.utf16(),0x0));
+
+ QTest::newRow("absolute file symlink") << absSymlink << true << QDir::fromNativeSeparators(absTarget) << target.canonicalFilePath();
+ QTest::newRow("relative file symlink") << relSymlink << true << QDir::fromNativeSeparators(relTarget) << target.canonicalFilePath();
+ }
+
+ //Junctions
+ QString target = "target";
+ QString junction = "junction_pwd";
+ FileSystem::createNtfsJunction(target, junction);
+ QFileInfo targetInfo(target);
+ QTest::newRow("junction_pwd") << junction << true << targetInfo.absoluteFilePath() << targetInfo.canonicalFilePath();
+
+ QFileInfo fileInJunction(targetInfo.absoluteFilePath().append("/file"));
+ QFile file(fileInJunction.absoluteFilePath());
+ file.open(QIODevice::ReadWrite);
+ file.close();
+ QVERIFY(file.exists());
+ QTest::newRow("file in junction") << fileInJunction.absoluteFilePath() << false << "" << fileInJunction.canonicalFilePath();
+
+ target = QDir::rootPath();
+ junction = "junction_root";
+ FileSystem::createNtfsJunction(target, junction);
+ targetInfo.setFile(target);
+ QTest::newRow("junction_root") << junction << true << targetInfo.absoluteFilePath() << targetInfo.canonicalFilePath();
+
+ //Mountpoint
+ typedef BOOLEAN (WINAPI *PtrGetVolumeNameForVolumeMountPointW)(LPCWSTR, LPWSTR, DWORD);
+ PtrGetVolumeNameForVolumeMountPointW getVolumeNameForVolumeMountPointW = 0;
+ getVolumeNameForVolumeMountPointW = (PtrGetVolumeNameForVolumeMountPointW) kernel32.resolve("GetVolumeNameForVolumeMountPointW");
+ if(getVolumeNameForVolumeMountPointW)
+ {
+ wchar_t buffer[MAX_PATH];
+ QString rootPath = QDir::toNativeSeparators(QDir::rootPath());
+ QVERIFY(getVolumeNameForVolumeMountPointW((wchar_t*)rootPath.utf16(), buffer, MAX_PATH));
+ QString rootVolume = QString::fromWCharArray(buffer);
+ junction = "mountpoint";
+ rootVolume.replace("\\\\?\\","\\??\\");
+ FileSystem::createNtfsJunction(rootVolume, junction);
+ QTest::newRow("mountpoint") << junction << true << QDir::fromNativeSeparators(rootPath) << QDir::rootPath();
+ }
+}
+
+void tst_QFileInfo::ntfsJunctionPointsAndSymlinks()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isSymLink);
+ QFETCH(QString, linkTarget);
+ QFETCH(QString, canonicalFilePath);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.isSymLink(), isSymLink);
+ QCOMPARE(fi.symLinkTarget(), linkTarget);
+ QCOMPARE(fi.canonicalFilePath(), canonicalFilePath);
+}
+
+void tst_QFileInfo::brokenShortcut()
+{
+ QString linkName("borkenlink.lnk");
+ QFile::remove(linkName);
+ QFile file(linkName);
+ file.open(QFile::WriteOnly);
+ file.write("b0rk");
+ file.close();
+
+ QFileInfo info(linkName);
+ QVERIFY(info.isSymLink());
+ QVERIFY(!info.exists());
+ QFile::remove(linkName);
+}
+#endif
+
+void tst_QFileInfo::isWritable()
+{
+ QFile tempfile("tempfile.txt");
+ tempfile.open(QIODevice::WriteOnly);
+ tempfile.write("This file is generated by the QFileInfo autotest.");
+ tempfile.close();
+
+ QVERIFY(QFileInfo("tempfile.txt").isWritable());
+ tempfile.remove();
+
+#ifdef Q_OS_WIN
+#ifdef Q_OS_WINCE
+ QFileInfo fi("\\Windows\\wince.nls");
+#else
+ QFileInfo fi("c:\\pagefile.sys");
+#endif
+ QVERIFY(fi.exists());
+ QVERIFY(!fi.isWritable());
+#endif
+#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
+ if (::getuid() == 0)
+ QVERIFY(QFileInfo("/etc/passwd").isWritable());
+ else
+ QVERIFY(!QFileInfo("/etc/passwd").isWritable());
+#endif
+}
+
+void tst_QFileInfo::isExecutable()
+{
+#ifdef Q_OS_SYMBIAN
+ QString appPath = "c:/sys/bin/tst_qfileinfo.exe";
+#else
+ QString appPath = QCoreApplication::applicationDirPath();
+ appPath += "/tst_qfileinfo";
+# if defined(Q_OS_WIN)
+ appPath += ".exe";
+# endif
+#endif
+ QFileInfo fi(appPath);
+ QCOMPARE(fi.isExecutable(), true);
+
+ QCOMPARE(QFileInfo("qfileinfo.pro").isExecutable(), false);
+}
+
+
+void tst_QFileInfo::testDecomposedUnicodeNames_data()
+{
+ QTest::addColumn<QString>("filePath");
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<bool>("exists");
+ QString currPath = QDir::currentPath();
+ QTest::newRow("latin-only") << currPath + "/4.pdf" << "4.pdf" << true;
+ QTest::newRow("one-decomposed uni") << currPath + QString::fromUtf8("/4 ä.pdf") << QString::fromUtf8("4 ä.pdf") << true;
+ QTest::newRow("many-decomposed uni") << currPath + QString::fromUtf8("/4 äääcopy.pdf") << QString::fromUtf8("4 äääcopy.pdf") << true;
+ QTest::newRow("no decomposed") << currPath + QString::fromUtf8("/4 øøøcopy.pdf") << QString::fromUtf8("4 øøøcopy.pdf") << true;
+}
+
+static void createFileNative(const QString &filePath)
+{
+#ifdef Q_OS_UNIX
+ int fd = open(filePath.normalized(QString::NormalizationForm_D).toUtf8().constData(), O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
+ if (fd < 0) {
+ QFAIL("couldn't create file");
+ } else {
+ close(fd);
+ }
+#else
+ Q_UNUSED(filePath);
+#endif
+}
+
+static void removeFileNative(const QString &filePath)
+{
+#ifdef Q_OS_UNIX
+ unlink(filePath.normalized(QString::NormalizationForm_D).toUtf8().constData());
+#else
+ Q_UNUSED(filePath);
+#endif
+}
+
+void tst_QFileInfo::testDecomposedUnicodeNames()
+{
+#ifndef Q_OS_MAC
+ QSKIP("This is a OS X only test (unless you know more about filesystems, then maybe you should try it ;)", SkipAll);
+#endif
+ QFETCH(QString, filePath);
+ createFileNative(filePath);
+
+ QFileInfo file(filePath);
+ QTEST(file.fileName(), "fileName");
+ QTEST(file.exists(), "exists");
+ removeFileNative(filePath);
+}
+
+void tst_QFileInfo::equalOperator() const
+{
+ /* Compare two default constructed values. Yes, to me it seems it should be the opposite too, but
+ * this is how the code was written. */
+ QVERIFY(!(QFileInfo() == QFileInfo()));
+}
+
+
+void tst_QFileInfo::equalOperatorWithDifferentSlashes() const
+{
+ const QFileInfo fi1("/usr");
+ const QFileInfo fi2("/usr/");
+
+ QCOMPARE(fi1, fi2);
+}
+
+void tst_QFileInfo::notEqualOperator() const
+{
+ /* Compare two default constructed values. Yes, to me it seems it should be the opposite too, but
+ * this is how the code was written. */
+ QVERIFY(QFileInfo() != QFileInfo());
+}
+
+void tst_QFileInfo::detachingOperations()
+{
+ QFileInfo info1;
+ QVERIFY(info1.caching());
+ info1.setCaching(false);
+
+ {
+ QFileInfo info2 = info1;
+
+ QVERIFY(!info1.caching());
+ QVERIFY(!info2.caching());
+
+ info2.setCaching(true);
+ QVERIFY(info2.caching());
+
+ info1.setFile("foo");
+ QVERIFY(!info1.caching());
+ }
+
+ {
+ QFile file("foo");
+ info1.setFile(file);
+ QVERIFY(!info1.caching());
+ }
+
+ info1.setFile(QDir(), "foo");
+ QVERIFY(!info1.caching());
+
+ {
+ QFileInfo info3;
+ QVERIFY(info3.caching());
+
+ info3 = info1;
+ QVERIFY(!info3.caching());
+ }
+
+ info1.refresh();
+ QVERIFY(!info1.caching());
+
+ QVERIFY(info1.makeAbsolute());
+ QVERIFY(!info1.caching());
+
+ info1.detach();
+ QVERIFY(!info1.caching());
+}
+
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+#if defined (Q_OS_WIN)
+BOOL IsUserAdmin()
+{
+ BOOL b;
+ SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
+ PSID AdministratorsGroup;
+ b = AllocateAndInitializeSid(
+ &NtAuthority,
+ 2,
+ SECURITY_BUILTIN_DOMAIN_RID,
+ DOMAIN_ALIAS_RID_ADMINS,
+ 0, 0, 0, 0, 0, 0,
+ &AdministratorsGroup);
+ if (b) {
+ if (!CheckTokenMembership( NULL, AdministratorsGroup, &b))
+ b = FALSE;
+ FreeSid(AdministratorsGroup);
+ }
+
+ return(b);
+}
+#endif
+
+void tst_QFileInfo::owner()
+{
+ QString userName;
+#if defined(Q_OS_UNIX)
+ {
+ passwd *user = getpwuid(geteuid());
+ QVERIFY(user);
+ char *usernameBuf = user->pw_name;
+ userName = QString::fromLocal8Bit(usernameBuf);
+ }
+#endif
+#if defined(Q_OS_WIN)
+ wchar_t usernameBuf[1024];
+ DWORD bufSize = 1024;
+ if (GetUserNameW(usernameBuf, &bufSize)) {
+ userName = QString::fromWCharArray(usernameBuf);
+ if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && IsUserAdmin()) {
+ // Special case : If the user is a member of Administrators group, all files
+ // created by the current user are owned by the Administrators group.
+ LPLOCALGROUP_USERS_INFO_0 pBuf = NULL;
+ DWORD dwLevel = 0;
+ DWORD dwFlags = LG_INCLUDE_INDIRECT ;
+ DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
+ DWORD dwEntriesRead = 0;
+ DWORD dwTotalEntries = 0;
+ NET_API_STATUS nStatus;
+ nStatus = NetUserGetLocalGroups(0, usernameBuf, dwLevel, dwFlags, (LPBYTE *) &pBuf,
+ dwPrefMaxLen, &dwEntriesRead, &dwTotalEntries);
+ // Check if the current user is a member of Administrators group
+ if (nStatus == NERR_Success && pBuf){
+ for (int i = 0; i < dwEntriesRead; i++) {
+ QString groupName = QString::fromWCharArray(pBuf[i].lgrui0_name);
+ if (!groupName.compare(QLatin1String("Administrators")))
+ userName = groupName;
+ }
+ }
+ if (pBuf != NULL)
+ NetApiBufferFree(pBuf);
+ }
+ }
+ extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
+ qt_ntfs_permission_lookup = 1;
+#endif
+ if (userName.isEmpty())
+ QSKIP("Can't retrieve the user name", SkipAll);
+ QString fileName("ownertest.txt");
+ QVERIFY(!QFile::exists(fileName) || QFile::remove(fileName));
+ {
+ QFile testFile(fileName);
+ QVERIFY(testFile.open(QIODevice::WriteOnly | QIODevice::Text));
+ QByteArray testData("testfile");
+ QVERIFY(testFile.write(testData) != -1);
+ }
+ QFileInfo fi(fileName);
+ QVERIFY(fi.exists());
+ QCOMPARE(fi.owner(), userName);
+
+ QFile::remove(fileName);
+#if defined(Q_OS_WIN)
+ qt_ntfs_permission_lookup = 0;
+#endif
+}
+#endif
+
+void tst_QFileInfo::group()
+{
+ QString expected;
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ struct group *gr;
+ gid_t gid = getegid();
+ gr = getgrgid(gid);
+ expected = QString::fromLocal8Bit(gr->gr_name);
+#endif
+
+ QString fileName("ownertest.txt");
+ if (QFile::exists(fileName))
+ QFile::remove(fileName);
+ QFile testFile(fileName);
+ QVERIFY(testFile.open(QIODevice::WriteOnly | QIODevice::Text));
+ QByteArray testData("testfile");
+ QVERIFY(testFile.write(testData) != -1);
+ testFile.close();
+ QFileInfo fi(fileName);
+ QVERIFY(fi.exists());
+
+ QCOMPARE(fi.group(), expected);
+}
+
+void tst_QFileInfo::invalidState()
+{
+ // Shouldn't crash;
+
+ {
+ QFileInfo info;
+ QCOMPARE(info.size(), qint64(0));
+ QVERIFY(!info.exists());
+
+ info.setCaching(false);
+
+ info.created();
+ info.lastRead();
+ info.lastModified();
+ }
+
+ {
+ QFileInfo info("");
+ QCOMPARE(info.size(), qint64(0));
+ QVERIFY(!info.exists());
+
+ info.setCaching(false);
+
+ info.created();
+ info.lastRead();
+ info.lastModified();
+ }
+
+ {
+ QFileInfo info("file-doesn't-really-exist.txt");
+ QCOMPARE(info.size(), qint64(0));
+ QVERIFY(!info.exists());
+
+ info.setCaching(false);
+
+ info.created();
+ info.lastRead();
+ info.lastModified();
+ }
+
+ QVERIFY(true);
+}
+
+QTEST_MAIN(tst_QFileInfo)
+#include "tst_qfileinfo.moc"
diff --git a/tests/auto/corelib/io/qfilesystementry/qfilesystementry.pro b/tests/auto/corelib/io/qfilesystementry/qfilesystementry.pro
new file mode 100644
index 0000000000..992c90cfcc
--- /dev/null
+++ b/tests/auto/corelib/io/qfilesystementry/qfilesystementry.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+
+SOURCES += tst_qfilesystementry.cpp \
+ $${QT.core.sources}/io/qfilesystementry.cpp
+HEADERS += $${QT.core.sources}/io/qfilesystementry_p.h
+QT = core core-private
+
+CONFIG += parallel_test
diff --git a/tests/auto/qfilesystementry/tst_qfilesystementry.cpp b/tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp
index 2daabee48f..2daabee48f 100644
--- a/tests/auto/qfilesystementry/tst_qfilesystementry.cpp
+++ b/tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp
diff --git a/tests/auto/qfilesystemwatcher/.gitignore b/tests/auto/corelib/io/qfilesystemwatcher/.gitignore
index 19c6c08e03..19c6c08e03 100644
--- a/tests/auto/qfilesystemwatcher/.gitignore
+++ b/tests/auto/corelib/io/qfilesystemwatcher/.gitignore
diff --git a/tests/auto/qfilesystemwatcher/qfilesystemwatcher.pro b/tests/auto/corelib/io/qfilesystemwatcher/qfilesystemwatcher.pro
index d3549b2f05..d3549b2f05 100644
--- a/tests/auto/qfilesystemwatcher/qfilesystemwatcher.pro
+++ b/tests/auto/corelib/io/qfilesystemwatcher/qfilesystemwatcher.pro
diff --git a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
index 9d46a8d863..9d46a8d863 100644
--- a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
+++ b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
diff --git a/tests/auto/qiodevice/.gitignore b/tests/auto/corelib/io/qiodevice/.gitignore
index e503843519..e503843519 100644
--- a/tests/auto/qiodevice/.gitignore
+++ b/tests/auto/corelib/io/qiodevice/.gitignore
diff --git a/tests/auto/qiodevice/qiodevice.pro b/tests/auto/corelib/io/qiodevice/qiodevice.pro
index 08996e8cd4..08996e8cd4 100644
--- a/tests/auto/qiodevice/qiodevice.pro
+++ b/tests/auto/corelib/io/qiodevice/qiodevice.pro
diff --git a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
new file mode 100644
index 0000000000..425b3b6bd1
--- /dev/null
+++ b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
@@ -0,0 +1,611 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/QtCore>
+#include <QtNetwork/QtNetwork>
+#include <QtTest/QtTest>
+
+#include "../../../network-settings.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR ""
+#endif
+
+class tst_QIODevice : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QIODevice();
+ virtual ~tst_QIODevice();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void getSetCheck();
+ void constructing_QTcpSocket();
+ void constructing_QFile();
+ void read_QByteArray();
+ void unget();
+ void peek();
+ void peekAndRead();
+
+ void readLine_data();
+ void readLine();
+
+ void readLine2_data();
+ void readLine2();
+
+ void peekBug();
+};
+
+// Testing get/set functions
+void tst_QIODevice::getSetCheck()
+{
+ // OpenMode QIODevice::openMode()
+ // void QIODevice::setOpenMode(OpenMode)
+ class MyIODevice : public QIODevice {
+ public:
+ void setOpenMode(OpenMode openMode) { QIODevice::setOpenMode(openMode); }
+ };
+ QTcpSocket var1;
+ MyIODevice *obj1 = reinterpret_cast<MyIODevice*>(&var1);
+ obj1->setOpenMode(QIODevice::OpenMode(QIODevice::NotOpen));
+ QCOMPARE(QIODevice::OpenMode(QIODevice::NotOpen), obj1->openMode());
+ obj1->setOpenMode(QIODevice::OpenMode(QIODevice::ReadWrite));
+ QCOMPARE(QIODevice::OpenMode(QIODevice::ReadWrite), obj1->openMode());
+}
+
+tst_QIODevice::tst_QIODevice()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+tst_QIODevice::~tst_QIODevice()
+{
+}
+
+void tst_QIODevice::init()
+{
+}
+
+void tst_QIODevice::cleanup()
+{
+}
+
+//----------------------------------------------------------------------------------
+void tst_QIODevice::constructing_QTcpSocket()
+{
+#if defined(Q_OS_WINCE) && defined(WINCE_EMULATOR_TEST)
+ QSKIP("Networking tests in a WinCE emulator are unstable", SkipAll);
+#endif
+ QTcpSocket socket;
+ QIODevice *device = &socket;
+
+ QVERIFY(!device->isOpen());
+
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket.waitForConnected(30000));
+ QVERIFY(device->isOpen());
+
+ while (!device->canReadLine())
+ QVERIFY(device->waitForReadyRead(30000));
+
+ char buf[1024];
+ memset(buf, 0, sizeof(buf));
+ qlonglong lineLength = device->readLine(buf, sizeof(buf));
+ QVERIFY(lineLength > 0);
+ QCOMPARE(socket.pos(), qlonglong(0));
+
+ socket.close();
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket.waitForConnected(30000));
+ QVERIFY(device->isOpen());
+
+ while (!device->canReadLine())
+ QVERIFY(device->waitForReadyRead(30000));
+
+ char buf2[1024];
+ memset(buf2, 0, sizeof(buf2));
+ QCOMPARE(socket.readLine(buf2, sizeof(buf2)), lineLength);
+
+ char *c1 = buf;
+ char *c2 = buf2;
+ while (*c1 && *c2) {
+ QCOMPARE(*c1, *c2);
+ ++c1;
+ ++c2;
+ }
+ QCOMPARE(*c1, *c2);
+}
+
+//----------------------------------------------------------------------------------
+void tst_QIODevice::constructing_QFile()
+{
+ QFile file;
+ QIODevice *device = &file;
+
+ QVERIFY(!device->isOpen());
+
+ file.setFileName(SRCDIR "tst_qiodevice.cpp");
+ QVERIFY(file.open(QFile::ReadOnly));
+ QVERIFY(device->isOpen());
+ QCOMPARE((int) device->openMode(), (int) QFile::ReadOnly);
+
+ char buf[1024];
+ memset(buf, 0, sizeof(buf));
+ qlonglong lineLength = device->readLine(buf, sizeof(buf));
+ QVERIFY(lineLength > 0);
+ QCOMPARE(file.pos(), lineLength);
+
+ file.seek(0);
+ char buf2[1024];
+ memset(buf2, 0, sizeof(buf2));
+ QCOMPARE(file.readLine(buf2, sizeof(buf2)), lineLength);
+
+ char *c1 = buf;
+ char *c2 = buf2;
+ while (*c1 && *c2) {
+ QCOMPARE(*c1, *c2);
+ ++c1;
+ ++c2;
+ }
+ QCOMPARE(*c1, *c2);
+}
+
+
+void tst_QIODevice::read_QByteArray()
+{
+ QFile f(SRCDIR "tst_qiodevice.cpp");
+ f.open(QIODevice::ReadOnly);
+
+ QByteArray b = f.read(10);
+ QCOMPARE(b.length(), 10);
+
+ b = f.read(256);
+ QCOMPARE(b.length(), 256);
+
+ b = f.read(0);
+ QCOMPARE(b.length(), 0);
+}
+
+//--------------------------------------------------------------------
+void tst_QIODevice::unget()
+{
+#if defined(Q_OS_WINCE) && defined(WINCE_EMULATOR_TEST)
+ QSKIP("Networking tests in a WinCE emulator are unstable", SkipAll);
+#endif
+ QBuffer buffer;
+ buffer.open(QBuffer::ReadWrite);
+ buffer.write("ZXCV");
+ buffer.seek(0);
+ QCOMPARE(buffer.read(4), QByteArray("ZXCV"));
+ QCOMPARE(buffer.pos(), qint64(4));
+
+ buffer.ungetChar('a');
+ buffer.ungetChar('b');
+ buffer.ungetChar('c');
+ buffer.ungetChar('d');
+
+ QCOMPARE(buffer.pos(), qint64(0));
+
+ char buf[6];
+ QCOMPARE(buffer.readLine(buf, 5), qint64(4));
+ QCOMPARE(buffer.pos(), qint64(4));
+ QCOMPARE(static_cast<const char*>(buf), "dcba");
+
+ buffer.ungetChar('a');
+ buffer.ungetChar('b');
+ buffer.ungetChar('c');
+ buffer.ungetChar('d');
+
+ QCOMPARE(buffer.pos(), qint64(0));
+
+ for (int i = 0; i < 5; ++i) {
+ buf[0] = '@';
+ buf[1] = '@';
+ QTest::ignoreMessage(QtWarningMsg,
+ "QIODevice::readLine: Called with maxSize < 2");
+ QCOMPARE(buffer.readLine(buf, 1), qint64(-1));
+ QCOMPARE(buffer.readLine(buf, 2), qint64(i < 4 ? 1 : -1));
+ switch (i) {
+ case 0: QCOMPARE(buf[0], 'd'); break;
+ case 1: QCOMPARE(buf[0], 'c'); break;
+ case 2: QCOMPARE(buf[0], 'b'); break;
+ case 3: QCOMPARE(buf[0], 'a'); break;
+ case 4: QCOMPARE(buf[0], '\0'); break;
+ }
+ QCOMPARE(buf[1], i < 4 ? '\0' : '@');
+ }
+
+ buffer.ungetChar('\n');
+ QCOMPARE(buffer.readLine(), QByteArray("\n"));
+
+ buffer.seek(1);
+ buffer.readLine(buf, 3);
+ QCOMPARE(static_cast<const char*>(buf), "XC");
+
+ buffer.seek(4);
+ buffer.ungetChar('Q');
+ QCOMPARE(buffer.readLine(buf, 3), qint64(1));
+
+ for (int i = 0; i < 2; ++i) {
+ QTcpSocket socket;
+ QIODevice *dev;
+ QByteArray result;
+ const char *lineResult;
+ if (i == 0) {
+ dev = &buffer;
+ result = QByteArray("ZXCV");
+ lineResult = "ZXCV";
+ } else {
+ socket.connectToHost(QtNetworkSettings::serverName(), 80);
+ socket.write("GET / HTTP/1.0\r\n\r\n");
+ QVERIFY(socket.waitForReadyRead());
+ dev = &socket;
+ result = QByteArray("HTTP");
+ lineResult = "Date";
+ }
+ char ch, ch2;
+ dev->seek(0);
+ dev->getChar(&ch);
+ dev->ungetChar(ch);
+ QCOMPARE(dev->peek(4), result);
+ dev->getChar(&ch);
+ dev->getChar(&ch2);
+ dev->ungetChar(ch2);
+ dev->ungetChar(ch);
+ QCOMPARE(dev->read(1), result.left(1));
+ QCOMPARE(dev->read(3), result.right(3));
+
+ if (i == 0)
+ dev->seek(0);
+ else
+ dev->readLine();
+ dev->getChar(&ch);
+ dev->ungetChar(ch);
+ dev->readLine(buf, 5);
+ QCOMPARE(static_cast<const char*>(buf), lineResult);
+
+ if (i == 1)
+ socket.close();
+ }
+}
+
+//--------------------------------------------------------------------
+void tst_QIODevice::peek()
+{
+ QBuffer buffer;
+ QFile::remove("peektestfile");
+ QFile file("peektestfile");
+
+ for (int i = 0; i < 2; ++i) {
+ QIODevice *device = i ? (QIODevice *)&file : (QIODevice *)&buffer;
+
+ device->open(QBuffer::ReadWrite);
+ device->write("ZXCV");
+
+ device->seek(0);
+ QCOMPARE(device->peek(4), QByteArray("ZXCV"));
+ QCOMPARE(device->pos(), qint64(0));
+ device->write("ABCDE");
+ device->seek(3);
+ QCOMPARE(device->peek(1), QByteArray("D"));
+ QCOMPARE(device->peek(5), QByteArray("DE"));
+ device->seek(0);
+ QCOMPARE(device->read(4), QByteArray("ABCD"));
+ QCOMPARE(device->pos(), qint64(4));
+
+ device->seek(0);
+ device->write("ZXCV");
+ device->seek(0);
+ char buf[5];
+ buf[4] = 0;
+ device->peek(buf, 4);
+ QCOMPARE(static_cast<const char *>(buf), "ZXCV");
+ QCOMPARE(device->pos(), qint64(0));
+ device->read(buf, 4);
+ QCOMPARE(static_cast<const char *>(buf), "ZXCV");
+ QCOMPARE(device->pos(), qint64(4));
+ }
+ QFile::remove("peektestfile");
+}
+
+void tst_QIODevice::peekAndRead()
+{
+ QByteArray originalData;
+ for (int i=0;i<1000;i++)
+ originalData += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ QBuffer buffer;
+ QFile::remove("peektestfile");
+ QFile file("peektestfile");
+
+ for (int i = 0; i < 2; ++i) {
+ QByteArray readData;
+ QIODevice *device = i ? (QIODevice *)&file : (QIODevice *)&buffer;
+ device->open(QBuffer::ReadWrite);
+ device->write(originalData);
+ device->seek(0);
+ while (!device->atEnd()) {
+ char peekIn[26];
+ device->peek(peekIn, 26);
+ readData += device->read(26);
+ }
+ QCOMPARE(readData, originalData);
+ }
+ QFile::remove("peektestfile");
+}
+
+void tst_QIODevice::readLine_data()
+{
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << QByteArray("\nAA");
+ QTest::newRow("1") << QByteArray("A\nAA");
+
+ QByteArray data(9000, 'A');
+ data[8193] = '\n';
+ QTest::newRow("8194") << data;
+ data[8193] = 'A';
+ data[8192] = '\n';
+ QTest::newRow("8193") << data;
+ data[8192] = 'A';
+ data[8191] = '\n';
+ QTest::newRow("8192") << data;
+ data[8191] = 'A';
+ data[8190] = '\n';
+ QTest::newRow("8191") << data;
+
+ data[5999] = '\n';
+ QTest::newRow("6000") << data;
+
+ data[4095] = '\n';
+ QTest::newRow("4096") << data;
+
+ data[4094] = '\n';
+ data[4095] = 'A';
+ QTest::newRow("4095") << data;
+}
+
+void tst_QIODevice::readLine()
+{
+ QFETCH(QByteArray, data);
+ QBuffer buffer(&data);
+ QVERIFY(buffer.open(QIODevice::ReadWrite));
+ QVERIFY(buffer.canReadLine());
+
+ int linelen = data.indexOf('\n') + 1;
+ QByteArray line;
+ line.reserve(linelen + 100);
+
+ int result = buffer.readLine(line.data(), linelen + 100);
+ QCOMPARE(result, linelen);
+
+ // try the exact length of the line (plus terminating \0)
+ QVERIFY(buffer.seek(0));
+ result = buffer.readLine(line.data(), linelen + 1);
+ QCOMPARE(result, linelen);
+
+ // try with a line length limit
+ QVERIFY(buffer.seek(0));
+ line = buffer.readLine(linelen + 100);
+ QCOMPARE(line.size(), linelen);
+
+ // try without a length limit
+ QVERIFY(buffer.seek(0));
+ line = buffer.readLine();
+ QCOMPARE(line.size(), linelen);
+}
+
+void tst_QIODevice::readLine2_data()
+{
+ QTest::addColumn<QByteArray>("line");
+
+ QTest::newRow("1024 - 4") << QByteArray(1024 - 4, 'x');
+ QTest::newRow("1024 - 3") << QByteArray(1024 - 3, 'x');
+ QTest::newRow("1024 - 2") << QByteArray(1024 - 2, 'x');
+ QTest::newRow("1024 - 1") << QByteArray(1024 - 1, 'x');
+ QTest::newRow("1024" ) << QByteArray(1024 , 'x');
+ QTest::newRow("1024 + 1") << QByteArray(1024 + 1, 'x');
+ QTest::newRow("1024 + 2") << QByteArray(1024 + 2, 'x');
+
+ QTest::newRow("4096 - 4") << QByteArray(4096 - 4, 'x');
+ QTest::newRow("4096 - 3") << QByteArray(4096 - 3, 'x');
+ QTest::newRow("4096 - 2") << QByteArray(4096 - 2, 'x');
+ QTest::newRow("4096 - 1") << QByteArray(4096 - 1, 'x');
+ QTest::newRow("4096" ) << QByteArray(4096 , 'x');
+ QTest::newRow("4096 + 1") << QByteArray(4096 + 1, 'x');
+ QTest::newRow("4096 + 2") << QByteArray(4096 + 2, 'x');
+
+ QTest::newRow("8192 - 4") << QByteArray(8192 - 4, 'x');
+ QTest::newRow("8192 - 3") << QByteArray(8192 - 3, 'x');
+ QTest::newRow("8192 - 2") << QByteArray(8192 - 2, 'x');
+ QTest::newRow("8192 - 1") << QByteArray(8192 - 1, 'x');
+ QTest::newRow("8192" ) << QByteArray(8192 , 'x');
+ QTest::newRow("8192 + 1") << QByteArray(8192 + 1, 'x');
+ QTest::newRow("8192 + 2") << QByteArray(8192 + 2, 'x');
+
+ QTest::newRow("16384 - 4") << QByteArray(16384 - 4, 'x');
+ QTest::newRow("16384 - 3") << QByteArray(16384 - 3, 'x');
+ QTest::newRow("16384 - 2") << QByteArray(16384 - 2, 'x');
+ QTest::newRow("16384 - 1") << QByteArray(16384 - 1, 'x');
+ QTest::newRow("16384" ) << QByteArray(16384 , 'x');
+ QTest::newRow("16384 + 1") << QByteArray(16384 + 1, 'x');
+ QTest::newRow("16384 + 2") << QByteArray(16384 + 2, 'x');
+
+ QTest::newRow("20000") << QByteArray(20000, 'x');
+
+ QTest::newRow("32768 - 4") << QByteArray(32768 - 4, 'x');
+ QTest::newRow("32768 - 3") << QByteArray(32768 - 3, 'x');
+ QTest::newRow("32768 - 2") << QByteArray(32768 - 2, 'x');
+ QTest::newRow("32768 - 1") << QByteArray(32768 - 1, 'x');
+ QTest::newRow("32768" ) << QByteArray(32768 , 'x');
+ QTest::newRow("32768 + 1") << QByteArray(32768 + 1, 'x');
+ QTest::newRow("32768 + 2") << QByteArray(32768 + 2, 'x');
+
+ QTest::newRow("40000") << QByteArray(40000, 'x');
+}
+
+void tst_QIODevice::readLine2()
+{
+ QFETCH(QByteArray, line);
+
+ int length = line.size();
+
+ QByteArray data("First line.\r\n");
+ data.append(line);
+ data.append("\r\n");
+ data.append(line);
+ data.append("\r\n");
+ data.append("\r\n0123456789");
+
+ {
+ QBuffer buffer(&data);
+ buffer.open(QIODevice::ReadOnly);
+
+ buffer.seek(0);
+ QByteArray temp;
+ temp.resize(64536);
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(13));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 2));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 2));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(2));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(10));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(-1));
+
+ buffer.seek(0);
+ QCOMPARE(buffer.readLine().size(), 13);
+ QCOMPARE(buffer.readLine().size(), length + 2);
+ QCOMPARE(buffer.readLine().size(), length + 2);
+ QCOMPARE(buffer.readLine().size(), 2);
+ QCOMPARE(buffer.readLine().size(), 10);
+ QVERIFY(buffer.readLine().isNull());
+ }
+
+ {
+ QBuffer buffer(&data);
+ buffer.open(QIODevice::ReadOnly | QIODevice::Text);
+
+ buffer.seek(0);
+ QByteArray temp;
+ temp.resize(64536);
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(12));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 1));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 1));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(1));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(10));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(-1));
+
+ buffer.seek(0);
+ QCOMPARE(buffer.readLine().size(), 12);
+ QCOMPARE(buffer.readLine().size(), length + 1);
+ QCOMPARE(buffer.readLine().size(), length + 1);
+ QCOMPARE(buffer.readLine().size(), 1);
+ QCOMPARE(buffer.readLine().size(), 10);
+ QVERIFY(buffer.readLine().isNull());
+ }
+}
+
+
+class PeekBug : public QIODevice {
+ Q_OBJECT
+public:
+ char alphabet[27];
+ qint64 counter;
+ PeekBug() : QIODevice(), counter(0) {
+ memcpy(alphabet,"abcdefghijklmnopqrstuvqxyz",27);
+ };
+ qint64 readData(char *data, qint64 maxlen) {
+ qint64 pos = 0;
+ while (pos < maxlen) {
+ *(data + pos) = alphabet[counter];
+ pos++;
+ counter++;
+ if (counter == 26)
+ counter = 0;
+ }
+ return maxlen;
+ }
+ qint64 writeData(const char * /* data */, qint64 /* maxlen */) {
+ return -1;
+ }
+
+};
+
+// This is a testcase for the bug fixed with bd287865
+void tst_QIODevice::peekBug()
+{
+ PeekBug peekBug;
+ peekBug.open(QIODevice::ReadOnly | QIODevice::Unbuffered);
+
+ char onetwo[2];
+ peekBug.peek(onetwo, 2);
+ QCOMPARE(onetwo[0], 'a');
+ QCOMPARE(onetwo[1], 'b');
+
+ peekBug.read(onetwo, 1);
+ QCOMPARE(onetwo[0], 'a');
+
+ peekBug.peek(onetwo, 2);
+ QCOMPARE(onetwo[0], 'b');
+ QCOMPARE(onetwo[1], 'c');
+
+ peekBug.read(onetwo, 1);
+ QCOMPARE(onetwo[0], 'b');
+ peekBug.read(onetwo, 1);
+ QCOMPARE(onetwo[0], 'c');
+ peekBug.read(onetwo, 1);
+ QCOMPARE(onetwo[0], 'd');
+
+ peekBug.peek(onetwo, 2);
+ QCOMPARE(onetwo[0], 'e');
+ QCOMPARE(onetwo[1], 'f');
+
+}
+
+QTEST_MAIN(tst_QIODevice)
+#include "tst_qiodevice.moc"
diff --git a/tests/auto/qprocess/.gitignore b/tests/auto/corelib/io/qprocess/.gitignore
index a273810042..a273810042 100644
--- a/tests/auto/qprocess/.gitignore
+++ b/tests/auto/corelib/io/qprocess/.gitignore
diff --git a/tests/auto/qprocess/fileWriterProcess/fileWriterProcess.pro b/tests/auto/corelib/io/qprocess/fileWriterProcess/fileWriterProcess.pro
index c9f87ba361..c9f87ba361 100644
--- a/tests/auto/qprocess/fileWriterProcess/fileWriterProcess.pro
+++ b/tests/auto/corelib/io/qprocess/fileWriterProcess/fileWriterProcess.pro
diff --git a/tests/auto/qprocess/fileWriterProcess/main.cpp b/tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp
index 40e92c69be..40e92c69be 100644
--- a/tests/auto/qprocess/fileWriterProcess/main.cpp
+++ b/tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp
diff --git a/tests/auto/qprocess/qprocess.pro b/tests/auto/corelib/io/qprocess/qprocess.pro
index 77cfc8252e..77cfc8252e 100644
--- a/tests/auto/qprocess/qprocess.pro
+++ b/tests/auto/corelib/io/qprocess/qprocess.pro
diff --git a/tests/auto/qprocess/test/test.pro b/tests/auto/corelib/io/qprocess/test/test.pro
index a91caddd2f..a91caddd2f 100644
--- a/tests/auto/qprocess/test/test.pro
+++ b/tests/auto/corelib/io/qprocess/test/test.pro
diff --git a/tests/auto/qprocess/testBatFiles/simple.bat b/tests/auto/corelib/io/qprocess/testBatFiles/simple.bat
index 900f7ae356..900f7ae356 100755
--- a/tests/auto/qprocess/testBatFiles/simple.bat
+++ b/tests/auto/corelib/io/qprocess/testBatFiles/simple.bat
diff --git a/tests/auto/qprocess/testBatFiles/with space.bat b/tests/auto/corelib/io/qprocess/testBatFiles/with space.bat
index 900f7ae356..900f7ae356 100755
--- a/tests/auto/qprocess/testBatFiles/with space.bat
+++ b/tests/auto/corelib/io/qprocess/testBatFiles/with space.bat
diff --git a/tests/auto/qprocess/testDetached/main.cpp b/tests/auto/corelib/io/qprocess/testDetached/main.cpp
index 5b4ee790b9..5b4ee790b9 100644
--- a/tests/auto/qprocess/testDetached/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testDetached/main.cpp
diff --git a/tests/auto/qprocess/testDetached/testDetached.pro b/tests/auto/corelib/io/qprocess/testDetached/testDetached.pro
index 80a616b3e9..80a616b3e9 100644
--- a/tests/auto/qprocess/testDetached/testDetached.pro
+++ b/tests/auto/corelib/io/qprocess/testDetached/testDetached.pro
diff --git a/tests/auto/qprocess/testExitCodes/main.cpp b/tests/auto/corelib/io/qprocess/testExitCodes/main.cpp
index 4d6a49e8f5..4d6a49e8f5 100644
--- a/tests/auto/qprocess/testExitCodes/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testExitCodes/main.cpp
diff --git a/tests/auto/qprocess/testExitCodes/testExitCodes.pro b/tests/auto/corelib/io/qprocess/testExitCodes/testExitCodes.pro
index b08371804f..b08371804f 100644
--- a/tests/auto/qprocess/testExitCodes/testExitCodes.pro
+++ b/tests/auto/corelib/io/qprocess/testExitCodes/testExitCodes.pro
diff --git a/tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp b/tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp
new file mode 100644
index 0000000000..90d4d4a962
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QLabel>
+#include <stdio.h>
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+ QLabel label("This process is just waiting to die");
+ label.show();
+
+ int c;
+ Q_UNUSED(c);
+ fgetc(stdin); // block until fed
+
+ qDebug("Process is running");
+
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testGuiProcess/testGuiProcess.pro b/tests/auto/corelib/io/qprocess/testGuiProcess/testGuiProcess.pro
new file mode 100644
index 0000000000..b26a583dee
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testGuiProcess/testGuiProcess.pro
@@ -0,0 +1,5 @@
+SOURCES += main.cpp
+QT += widgets
+CONFIG += console
+DESTDIR = ./
+
diff --git a/tests/auto/qprocess/testProcessCrash/main.cpp b/tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp
index e2ec87b3aa..e2ec87b3aa 100644
--- a/tests/auto/qprocess/testProcessCrash/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp
diff --git a/tests/auto/qprocess/testProcessCrash/testProcessCrash.pro b/tests/auto/corelib/io/qprocess/testProcessCrash/testProcessCrash.pro
index abd8167313..abd8167313 100644
--- a/tests/auto/qprocess/testProcessCrash/testProcessCrash.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessCrash/testProcessCrash.pro
diff --git a/tests/auto/qprocess/testProcessDeadWhileReading/main.cpp b/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp
index 9e285b5012..9e285b5012 100644
--- a/tests/auto/qprocess/testProcessDeadWhileReading/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp
diff --git a/tests/auto/qprocess/testProcessDeadWhileReading/testProcessDeadWhileReading.pro b/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/testProcessDeadWhileReading.pro
index 2168ba5672..2168ba5672 100644
--- a/tests/auto/qprocess/testProcessDeadWhileReading/testProcessDeadWhileReading.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/testProcessDeadWhileReading.pro
diff --git a/tests/auto/qprocess/testProcessEOF/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp
index 28de5c2f3a..28de5c2f3a 100644
--- a/tests/auto/qprocess/testProcessEOF/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp
diff --git a/tests/auto/qprocess/testProcessEOF/testProcessEOF.pro b/tests/auto/corelib/io/qprocess/testProcessEOF/testProcessEOF.pro
index 756bd23bb0..756bd23bb0 100644
--- a/tests/auto/qprocess/testProcessEOF/testProcessEOF.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessEOF/testProcessEOF.pro
diff --git a/tests/auto/qprocess/testProcessEcho/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp
index a7eedff56d..a7eedff56d 100644
--- a/tests/auto/qprocess/testProcessEcho/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp
diff --git a/tests/auto/qprocess/testProcessEcho/testProcessEcho.pro b/tests/auto/corelib/io/qprocess/testProcessEcho/testProcessEcho.pro
index a14c1fe163..a14c1fe163 100644
--- a/tests/auto/qprocess/testProcessEcho/testProcessEcho.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho/testProcessEcho.pro
diff --git a/tests/auto/qprocess/testProcessEcho2/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp
index 1c18319bca..1c18319bca 100644
--- a/tests/auto/qprocess/testProcessEcho2/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp
diff --git a/tests/auto/qprocess/testProcessEcho2/testProcessEcho2.pro b/tests/auto/corelib/io/qprocess/testProcessEcho2/testProcessEcho2.pro
index d8a303a22b..d8a303a22b 100644
--- a/tests/auto/qprocess/testProcessEcho2/testProcessEcho2.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho2/testProcessEcho2.pro
diff --git a/tests/auto/qprocess/testProcessEcho3/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp
index 62901a7789..62901a7789 100644
--- a/tests/auto/qprocess/testProcessEcho3/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp
diff --git a/tests/auto/qprocess/testProcessEcho3/testProcessEcho3.pro b/tests/auto/corelib/io/qprocess/testProcessEcho3/testProcessEcho3.pro
index 3b8f2fb0d7..3b8f2fb0d7 100644
--- a/tests/auto/qprocess/testProcessEcho3/testProcessEcho3.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho3/testProcessEcho3.pro
diff --git a/tests/auto/qprocess/testProcessEchoGui/main_win.cpp b/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
index b8c2bd6abd..b8c2bd6abd 100644
--- a/tests/auto/qprocess/testProcessEchoGui/main_win.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
diff --git a/tests/auto/qprocess/testProcessEchoGui/testProcessEchoGui.pro b/tests/auto/corelib/io/qprocess/testProcessEchoGui/testProcessEchoGui.pro
index b3be74cbd1..b3be74cbd1 100644
--- a/tests/auto/qprocess/testProcessEchoGui/testProcessEchoGui.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessEchoGui/testProcessEchoGui.pro
diff --git a/tests/auto/qprocess/testProcessEnvironment/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp
index 17ed5c61dc..17ed5c61dc 100644
--- a/tests/auto/qprocess/testProcessEnvironment/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp
diff --git a/tests/auto/qprocess/testProcessEnvironment/testProcessEnvironment.pro b/tests/auto/corelib/io/qprocess/testProcessEnvironment/testProcessEnvironment.pro
index 14ddae50f3..14ddae50f3 100644
--- a/tests/auto/qprocess/testProcessEnvironment/testProcessEnvironment.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessEnvironment/testProcessEnvironment.pro
diff --git a/tests/auto/qprocess/testProcessLoopback/main.cpp b/tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp
index 6803518400..6803518400 100644
--- a/tests/auto/qprocess/testProcessLoopback/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp
diff --git a/tests/auto/qprocess/testProcessLoopback/testProcessLoopback.pro b/tests/auto/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro
index a14c1fe163..a14c1fe163 100644
--- a/tests/auto/qprocess/testProcessLoopback/testProcessLoopback.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro
diff --git a/tests/auto/qprocess/testProcessNormal/main.cpp b/tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp
index 008a0a2430..008a0a2430 100644
--- a/tests/auto/qprocess/testProcessNormal/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp
diff --git a/tests/auto/qprocess/testProcessNormal/testProcessNormal.pro b/tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro
index 3c6a595d85..3c6a595d85 100644
--- a/tests/auto/qprocess/testProcessNormal/testProcessNormal.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro
diff --git a/tests/auto/qprocess/testProcessOutput/main.cpp b/tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp
index b648d1bec3..b648d1bec3 100644
--- a/tests/auto/qprocess/testProcessOutput/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp
diff --git a/tests/auto/qprocess/testProcessOutput/testProcessOutput.pro b/tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro
index 3b8f2fb0d7..3b8f2fb0d7 100644
--- a/tests/auto/qprocess/testProcessOutput/testProcessOutput.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro
diff --git a/tests/auto/qprocess/testProcessSpacesArgs/main.cpp b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp
index 39a0b3bac1..39a0b3bac1 100644
--- a/tests/auto/qprocess/testProcessSpacesArgs/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp
diff --git a/tests/auto/qprocess/testProcessSpacesArgs/nospace.pro b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/nospace.pro
index f55f02e425..f55f02e425 100644
--- a/tests/auto/qprocess/testProcessSpacesArgs/nospace.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/nospace.pro
diff --git a/tests/auto/qprocess/testProcessSpacesArgs/onespace.pro b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/onespace.pro
index 2a56a95606..2a56a95606 100644
--- a/tests/auto/qprocess/testProcessSpacesArgs/onespace.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/onespace.pro
diff --git a/tests/auto/qprocess/testProcessSpacesArgs/twospaces.pro b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro
index d7c74a64c9..d7c74a64c9 100644
--- a/tests/auto/qprocess/testProcessSpacesArgs/twospaces.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro
diff --git a/tests/auto/qprocess/testSetWorkingDirectory/main.cpp b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp
index 0035c6253a..0035c6253a 100644
--- a/tests/auto/qprocess/testSetWorkingDirectory/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp
diff --git a/tests/auto/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro
index b723604171..b723604171 100644
--- a/tests/auto/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro
+++ b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro
diff --git a/tests/auto/qprocess/testSoftExit/main_unix.cpp b/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp
index b17ab4d9a6..b17ab4d9a6 100644
--- a/tests/auto/qprocess/testSoftExit/main_unix.cpp
+++ b/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp
diff --git a/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp b/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp
new file mode 100644
index 0000000000..7bdf796926
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <windows.h>
+#include <stdio.h>
+
+int main()
+{
+ printf("Ready\n");
+ fflush(stdout);
+
+ MSG msg;
+ while (GetMessage(&msg, NULL, 0, 0)) {
+ if (msg.message == WM_CLOSE)
+ PostQuitMessage(0);
+ }
+
+ return int(msg.wParam);
+}
diff --git a/tests/auto/qprocess/testSoftExit/testSoftExit.pro b/tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro
index 922035907a..922035907a 100644
--- a/tests/auto/qprocess/testSoftExit/testSoftExit.pro
+++ b/tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro
diff --git a/tests/auto/qprocess/testSpaceInName/main.cpp b/tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp
index 3fadc68095..3fadc68095 100644
--- a/tests/auto/qprocess/testSpaceInName/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp
diff --git a/tests/auto/qprocess/testSpaceInName/testSpaceInName.pro b/tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro
index 913e868d03..913e868d03 100644
--- a/tests/auto/qprocess/testSpaceInName/testSpaceInName.pro
+++ b/tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro
diff --git a/tests/auto/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
index 9873c3e357..9873c3e357 100644
--- a/tests/auto/qprocess/tst_qprocess.cpp
+++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
diff --git a/tests/auto/qprocessenvironment/qprocessenvironment.pro b/tests/auto/corelib/io/qprocessenvironment/qprocessenvironment.pro
index 60dba50813..60dba50813 100644
--- a/tests/auto/qprocessenvironment/qprocessenvironment.pro
+++ b/tests/auto/corelib/io/qprocessenvironment/qprocessenvironment.pro
diff --git a/tests/auto/qprocessenvironment/tst_qprocessenvironment.cpp b/tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp
index d88ffdedb7..d88ffdedb7 100644
--- a/tests/auto/qprocessenvironment/tst_qprocessenvironment.cpp
+++ b/tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp
diff --git a/tests/auto/qresourceengine/.gitattributes b/tests/auto/corelib/io/qresourceengine/.gitattributes
index add3716d81..add3716d81 100644
--- a/tests/auto/qresourceengine/.gitattributes
+++ b/tests/auto/corelib/io/qresourceengine/.gitattributes
diff --git a/tests/auto/qresourceengine/.gitignore b/tests/auto/corelib/io/qresourceengine/.gitignore
index eb48d60239..eb48d60239 100644
--- a/tests/auto/qresourceengine/.gitignore
+++ b/tests/auto/corelib/io/qresourceengine/.gitignore
diff --git a/tests/auto/qresourceengine/parentdir.txt b/tests/auto/corelib/io/qresourceengine/parentdir.txt
index a94edee379..a94edee379 100644
--- a/tests/auto/qresourceengine/parentdir.txt
+++ b/tests/auto/corelib/io/qresourceengine/parentdir.txt
diff --git a/tests/auto/corelib/io/qresourceengine/qresourceengine.pro b/tests/auto/corelib/io/qresourceengine/qresourceengine.pro
new file mode 100644
index 0000000000..abbf39bd83
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/qresourceengine.pro
@@ -0,0 +1,47 @@
+######################################################################
+# Automatically generated by qmake (2.00a) ma 2. mai 16:14:33 2005
+######################################################################
+
+load(qttest_p4)
+load(resources)
+
+# Input
+SOURCES += tst_qresourceengine.cpp
+RESOURCES += testqrc/test.qrc
+
+symbian-sbsv2 {
+ runtime_resource.target = $$PWD/runtime_resource.rcc
+} else {
+ runtime_resource.target = runtime_resource.rcc
+}
+runtime_resource.depends = $$PWD/testqrc/test.qrc
+runtime_resource.commands = $$QMAKE_RCC -root /runtime_resource/ -binary $${runtime_resource.depends} -o $${runtime_resource.target}
+QMAKE_EXTRA_TARGETS = runtime_resource
+PRE_TARGETDEPS += $${runtime_resource.target}
+
+QT = core
+wince*|symbian:{
+ deploy.files += runtime_resource.rcc parentdir.txt
+ test.files = testqrc/*
+ test.path = testqrc
+ alias.files = testqrc/aliasdir/*
+ alias.path = testqrc/aliasdir
+ other.files = testqrc/otherdir/*
+ other.path = testqrc/otherdir
+ search1.files = testqrc/searchpath1/*
+ search1.path = testqrc/searchpath1
+ search2.files = testqrc/searchpath2/*
+ search2.path = testqrc/searchpath2
+ sub.files = testqrc/subdir/*
+ sub.path = testqrc/subdir
+ testsub.files = testqrc/test/*
+ testsub.path = testqrc/test
+ testsub2.files = testqrc/test/test/*
+ testsub2.path = testqrc/test/test
+ DEPLOYMENT += deploy test alias other search1 search2 sub testsub testsub2
+ !symbian:DEFINES += SRCDIR=\\\"\\\"
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+CONFIG += parallel_test
+CONFIG += insignificant_test # QTBUG-21159
diff --git a/tests/auto/qresourceengine/testqrc/aliasdir/aliasdir.txt b/tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/aliasdir.txt
index 21a3dfa0b8..21a3dfa0b8 100644
--- a/tests/auto/qresourceengine/testqrc/aliasdir/aliasdir.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/aliasdir.txt
diff --git a/tests/auto/qresourceengine/testqrc/aliasdir/compressme.txt b/tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/compressme.txt
index bd596cdacd..bd596cdacd 100644
--- a/tests/auto/qresourceengine/testqrc/aliasdir/compressme.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/compressme.txt
diff --git a/tests/auto/qresourceengine/testqrc/blahblah.txt b/tests/auto/corelib/io/qresourceengine/testqrc/blahblah.txt
index 436c4d11c3..436c4d11c3 100644
--- a/tests/auto/qresourceengine/testqrc/blahblah.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/blahblah.txt
diff --git a/tests/auto/qresourceengine/testqrc/currentdir.txt b/tests/auto/corelib/io/qresourceengine/testqrc/currentdir.txt
index 38e389979a..38e389979a 100644
--- a/tests/auto/qresourceengine/testqrc/currentdir.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/currentdir.txt
diff --git a/tests/auto/qresourceengine/testqrc/currentdir2.txt b/tests/auto/corelib/io/qresourceengine/testqrc/currentdir2.txt
index 6ac16a3306..6ac16a3306 100644
--- a/tests/auto/qresourceengine/testqrc/currentdir2.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/currentdir2.txt
diff --git a/tests/auto/qresourceengine/testqrc/otherdir/otherdir.txt b/tests/auto/corelib/io/qresourceengine/testqrc/otherdir/otherdir.txt
index b0e4a124ee..b0e4a124ee 100644
--- a/tests/auto/qresourceengine/testqrc/otherdir/otherdir.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/otherdir/otherdir.txt
diff --git a/tests/auto/qresourceengine/testqrc/search_file.txt b/tests/auto/corelib/io/qresourceengine/testqrc/search_file.txt
index d8649da39d..d8649da39d 100644
--- a/tests/auto/qresourceengine/testqrc/search_file.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/search_file.txt
diff --git a/tests/auto/qresourceengine/testqrc/searchpath1/search_file.txt b/tests/auto/corelib/io/qresourceengine/testqrc/searchpath1/search_file.txt
index 3f31b59496..3f31b59496 100644
--- a/tests/auto/qresourceengine/testqrc/searchpath1/search_file.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/searchpath1/search_file.txt
diff --git a/tests/auto/qresourceengine/testqrc/searchpath2/search_file.txt b/tests/auto/corelib/io/qresourceengine/testqrc/searchpath2/search_file.txt
index 8e3be1fa2e..8e3be1fa2e 100644
--- a/tests/auto/qresourceengine/testqrc/searchpath2/search_file.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/searchpath2/search_file.txt
diff --git a/tests/auto/qresourceengine/testqrc/subdir/subdir.txt b/tests/auto/corelib/io/qresourceengine/testqrc/subdir/subdir.txt
index b6115207a2..b6115207a2 100644
--- a/tests/auto/qresourceengine/testqrc/subdir/subdir.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/subdir/subdir.txt
diff --git a/tests/auto/qresourceengine/testqrc/test.qrc b/tests/auto/corelib/io/qresourceengine/testqrc/test.qrc
index f5e8c849a6..f5e8c849a6 100644
--- a/tests/auto/qresourceengine/testqrc/test.qrc
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test.qrc
diff --git a/tests/auto/qresourceengine/testqrc/test/german.txt b/tests/auto/corelib/io/qresourceengine/testqrc/test/german.txt
index 12b1cb7320..12b1cb7320 100644
--- a/tests/auto/qresourceengine/testqrc/test/german.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test/german.txt
diff --git a/tests/auto/qresourceengine/testqrc/test/test/test1.txt b/tests/auto/corelib/io/qresourceengine/testqrc/test/test/test1.txt
index adc01d1354..adc01d1354 100644
--- a/tests/auto/qresourceengine/testqrc/test/test/test1.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test/test/test1.txt
diff --git a/tests/auto/qresourceengine/testqrc/test/test/test2.txt b/tests/auto/corelib/io/qresourceengine/testqrc/test/test/test2.txt
index 3f48e3cdc3..3f48e3cdc3 100644
--- a/tests/auto/qresourceengine/testqrc/test/test/test2.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test/test/test2.txt
diff --git a/tests/auto/qresourceengine/testqrc/test/testdir.txt b/tests/auto/corelib/io/qresourceengine/testqrc/test/testdir.txt
index 40ee68dccb..40ee68dccb 100644
--- a/tests/auto/qresourceengine/testqrc/test/testdir.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test/testdir.txt
diff --git a/tests/auto/qresourceengine/testqrc/test/testdir2.txt b/tests/auto/corelib/io/qresourceengine/testqrc/test/testdir2.txt
index 051430298a..051430298a 100644
--- a/tests/auto/qresourceengine/testqrc/test/testdir2.txt
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test/testdir2.txt
diff --git a/tests/auto/qresourceengine/tst_qresourceengine.cpp b/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp
index 7914fc8bfc..7914fc8bfc 100644
--- a/tests/auto/qresourceengine/tst_qresourceengine.cpp
+++ b/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp
diff --git a/tests/auto/qsettings/.gitattributes b/tests/auto/corelib/io/qsettings/.gitattributes
index a4ad8d7644..a4ad8d7644 100644
--- a/tests/auto/qsettings/.gitattributes
+++ b/tests/auto/corelib/io/qsettings/.gitattributes
diff --git a/tests/auto/qsettings/.gitignore b/tests/auto/corelib/io/qsettings/.gitignore
index 090588b922..090588b922 100644
--- a/tests/auto/qsettings/.gitignore
+++ b/tests/auto/corelib/io/qsettings/.gitignore
diff --git a/tests/auto/qsettings/qsettings.pro b/tests/auto/corelib/io/qsettings/qsettings.pro
index f15e40b267..f15e40b267 100644
--- a/tests/auto/qsettings/qsettings.pro
+++ b/tests/auto/corelib/io/qsettings/qsettings.pro
diff --git a/tests/auto/qsettings/qsettings.qrc b/tests/auto/corelib/io/qsettings/qsettings.qrc
index 587c22ebe3..587c22ebe3 100644
--- a/tests/auto/qsettings/qsettings.qrc
+++ b/tests/auto/corelib/io/qsettings/qsettings.qrc
diff --git a/tests/auto/qsettings/resourcefile.ini b/tests/auto/corelib/io/qsettings/resourcefile.ini
index 608d1b7885..608d1b7885 100644
--- a/tests/auto/qsettings/resourcefile.ini
+++ b/tests/auto/corelib/io/qsettings/resourcefile.ini
diff --git a/tests/auto/qsettings/resourcefile2.ini b/tests/auto/corelib/io/qsettings/resourcefile2.ini
index cd06b3b4de..cd06b3b4de 100644
--- a/tests/auto/qsettings/resourcefile2.ini
+++ b/tests/auto/corelib/io/qsettings/resourcefile2.ini
diff --git a/tests/auto/qsettings/resourcefile3.ini b/tests/auto/corelib/io/qsettings/resourcefile3.ini
index ee54cfbbaf..ee54cfbbaf 100644
--- a/tests/auto/qsettings/resourcefile3.ini
+++ b/tests/auto/corelib/io/qsettings/resourcefile3.ini
diff --git a/tests/auto/qsettings/resourcefile4.ini b/tests/auto/corelib/io/qsettings/resourcefile4.ini
index 09c21b1591..09c21b1591 100644
--- a/tests/auto/qsettings/resourcefile4.ini
+++ b/tests/auto/corelib/io/qsettings/resourcefile4.ini
diff --git a/tests/auto/qsettings/resourcefile5.ini b/tests/auto/corelib/io/qsettings/resourcefile5.ini
index d2d2103560..d2d2103560 100644
--- a/tests/auto/qsettings/resourcefile5.ini
+++ b/tests/auto/corelib/io/qsettings/resourcefile5.ini
diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
new file mode 100644
index 0000000000..7436edcd8c
--- /dev/null
+++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
@@ -0,0 +1,3179 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <qdebug.h>
+#include <QtTest/QtTest>
+
+#include <QtCore/QSettings>
+#include <private/qsettings_p.h>
+//#include <QtGui/QApplication>
+#include <QtCore/QCoreApplication>
+#include <QtCore/QtGlobal>
+#include <QtCore/QMetaType>
+#include <QtCore/QtDebug>
+#include <QtCore/QString>
+#include "../../../../shared/util.h"
+
+#if !defined(Q_OS_SYMBIAN)
+# include <cctype>
+#endif
+#if defined(Q_OS_WIN) && defined(Q_CC_GNU)
+// need for unlink on mingw
+#include <io.h>
+#endif
+
+#if defined(Q_OS_WIN)
+#include <QtCore/qt_windows.h>
+#endif
+
+#ifndef QSETTINGS_P_H_VERSION
+#define QSETTINGS_P_H_VERSION 1
+#endif
+
+//TESTED_FILES=
+
+QT_FORWARD_DECLARE_CLASS(QSettings)
+QT_FORWARD_DECLARE_CLASS(QSettings)
+
+class tst_QSettings : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QSettings();
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void getSetCheck();
+ void ctor_data();
+ void ctor();
+ void beginGroup();
+ void setValue();
+ void remove();
+ void contains();
+ void sync();
+ void setFallbacksEnabled();
+ void setFallbacksEnabled_data();
+ void fromFile_data();
+ void fromFile();
+ void setIniCodec();
+ void testArrays_data();
+ void testArrays();
+ void testEscapes();
+ void testCaseSensitivity_data();
+ void testCaseSensitivity();
+ void testErrorHandling_data();
+ void testErrorHandling();
+ void testIniParsing_data();
+ void testIniParsing();
+ void testChildKeysAndGroups_data();
+ void testChildKeysAndGroups();
+ void testUpdateRequestEvent();
+ void testThreadSafety();
+ void testNormalizedKey_data();
+ void testNormalizedKey();
+ void testEmptyData();
+ void testResourceFiles();
+ void fileName();
+ void isWritable_data();
+ void isWritable();
+ void childGroups_data();
+ void childGroups();
+ void childKeys_data();
+ void childKeys();
+ void allKeys_data();
+ void allKeys();
+ void registerFormat();
+ void setPath();
+ void setDefaultFormat();
+ void dontCreateNeedlessPaths();
+#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+ void dontReorderIniKeysNeedlessly();
+#endif
+#if defined(Q_OS_WIN)
+ void qtbug_13249();
+#endif
+
+ void testVariantTypes_data();
+ void testVariantTypes();
+ void rainersSyncBugOnMac_data();
+ void rainersSyncBugOnMac();
+ void recursionBug();
+
+ void testByteArray_data();
+ void testByteArray();
+
+private:
+ void oldWriteEntry_data();
+ void oldReadEntry_data();
+ void oldWriteEntryHelper(QSettings &settings);
+ void oldReadEntryHelper(QSettings &settings);
+};
+
+// Testing get/set functions
+void tst_QSettings::getSetCheck()
+{
+ QSettings obj1;
+ // bool QSettings::fallbacksEnabled()
+ // void QSettings::setFallbacksEnabled(bool)
+ obj1.setFallbacksEnabled(false);
+ QCOMPARE(false, obj1.fallbacksEnabled());
+ obj1.setFallbacksEnabled(true);
+ QCOMPARE(true, obj1.fallbacksEnabled());
+}
+
+//using namespace std;
+
+//#include <qapplication.h>
+#include <qcoreapplication.h>
+#include <qdir.h>
+#include <qregexp.h>
+#include <qthread.h>
+#include <stdlib.h>
+#ifndef Q_OS_WIN
+#include <unistd.h>
+#endif
+
+Q_DECLARE_METATYPE(QSettings::Format)
+
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+static void removePath(const QString& _path)
+{
+ QString path = _path;
+ QDir dir(path);
+ if (!dir.exists())
+ return;
+ QStringList entries = dir.entryList();
+ foreach(QString name, entries) {
+ QString absolute = path + name;
+ if (QFileInfo(absolute).isDir())
+ removePath(absolute+"\\");
+ else
+ QFile::remove(absolute);
+ }
+ dir.cdUp();
+ if (path[path.size()-1] == '\\')
+ path = path.left(path.size()-1);
+ dir.rmdir(path.mid(path.lastIndexOf('\\')+1));
+}
+#endif
+
+static QString settingsPath(const char *path = "")
+{
+ // Temporary path for files that are specified explictly in the constructor.
+ QString tempPath = QDir::tempPath();
+ if (tempPath.endsWith("/"))
+ tempPath.truncate(tempPath.size() - 1);
+ return QDir::toNativeSeparators(tempPath + "/tst_QSettings/" + QLatin1String(path));
+}
+
+static bool readCustom1File(QIODevice &device, QSettings::SettingsMap &map)
+{
+ QDataStream in(&device);
+ quint32 magic;
+ in >> magic;
+ in >> map;
+ return (magic == 0x01010101 && in.status() == QDataStream::Ok);
+}
+
+static bool writeCustom1File(QIODevice &device, const QSettings::SettingsMap &map)
+{
+ QDataStream out(&device);
+ out << quint32(0x01010101);
+ out << map;
+ return out.status() == QDataStream::Ok;
+}
+
+static bool readCustom2File(QIODevice &device, QSettings::SettingsMap &map)
+{
+ QDataStream in(&device);
+ quint64 magic;
+ in >> magic;
+ in >> map;
+ return (magic == Q_UINT64_C(0x0202020202020202) && in.status() == QDataStream::Ok);
+}
+
+static bool writeCustom2File(QIODevice &device, const QSettings::SettingsMap &map)
+{
+ QDataStream out(&device);
+ out << Q_UINT64_C(0x0202020202020202);
+ out << map;
+ return out.status() == QDataStream::Ok;
+}
+
+static bool readCustom3File(QIODevice &device, QSettings::SettingsMap &map)
+{
+ QTextStream in(&device);
+ QString tag;
+ in >> tag;
+ if (tag == "OK") {
+ map.insert("retval", "OK");
+ return true;
+ } else {
+ return false;
+ }
+}
+
+static bool writeCustom3File(QIODevice &device, const QSettings::SettingsMap &map)
+{
+ QTextStream out(&device);
+ if (map.value("retval") != "OK")
+ return false;
+
+ out << "OK";
+ return true;
+}
+
+static void populateWithFormats()
+{
+ QTest::addColumn<QSettings::Format>("format");
+
+ QTest::newRow("native") << QSettings::NativeFormat;
+ QTest::newRow("ini") << QSettings::IniFormat;
+ QTest::newRow("custom1") << QSettings::CustomFormat1;
+ QTest::newRow("custom2") << QSettings::CustomFormat2;
+}
+
+tst_QSettings::tst_QSettings()
+{
+ QSettings::Format custom1 = QSettings::registerFormat("custom1", readCustom1File, writeCustom1File);
+ QSettings::Format custom2 = QSettings::registerFormat("custom2", readCustom2File, writeCustom2File
+#ifndef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
+ , Qt::CaseInsensitive
+#endif
+ );
+ QVERIFY(custom1 == QSettings::CustomFormat1);
+ QVERIFY(custom2 == QSettings::CustomFormat2);
+}
+
+void tst_QSettings::init()
+{
+ QSettings::setSystemIniPath(settingsPath("__system__"));
+ QSettings::setUserIniPath(settingsPath("__user__"));
+
+#if defined(Q_OS_WIN)
+ QSettings("HKEY_CURRENT_USER\\Software\\software.org", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\software.org", QSettings::NativeFormat).clear();
+ QSettings("HKEY_CURRENT_USER\\Software\\other.software.org", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\other.software.org", QSettings::NativeFormat).clear();
+ QSettings("HKEY_CURRENT_USER\\Software\\foo", QSettings::NativeFormat).clear();
+ QSettings("HKEY_CURRENT_USER\\Software\\bar", QSettings::NativeFormat).clear();
+ QSettings("HKEY_CURRENT_USER\\Software\\bat", QSettings::NativeFormat).clear();
+ QSettings("HKEY_CURRENT_USER\\Software\\baz", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\foo", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\bar", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\bat", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\baz", QSettings::NativeFormat).clear();
+ if (QDir(settingsPath()).exists()) {
+#if defined(Q_OS_WINCE)
+ removePath(settingsPath());
+#else
+ if (QSysInfo::windowsVersion() & QSysInfo::WV_NT_based)
+ system(QString("rmdir /Q /S %1").arg(settingsPath()).toLatin1());
+ else
+ system(QString("deltree /Y %1").arg(settingsPath()).toLatin1());
+#endif
+ }
+#elif defined(Q_OS_DARWIN)
+ QSettings(QSettings::UserScope, "software.org", "KillerAPP").clear();
+ QSettings(QSettings::SystemScope, "software.org", "KillerAPP").clear();
+ QSettings(QSettings::UserScope, "other.software.org", "KillerAPP").clear();
+ QSettings(QSettings::SystemScope, "other.software.org", "KillerAPP").clear();
+ QSettings(QSettings::UserScope, "software.org").clear();
+ QSettings(QSettings::SystemScope, "software.org").clear();
+ QSettings(QSettings::UserScope, "other.software.org").clear();
+ QSettings(QSettings::SystemScope, "other.software.org").clear();
+#elif defined(Q_OS_SYMBIAN)
+ removePath(settingsPath());
+#endif
+
+#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+ system(QString("chmod -R u+rw %1 2> /dev/null").arg(settingsPath()).toLatin1());
+ system(QString("rm -fr %1 2> /dev/null").arg(settingsPath()).toLatin1());
+#endif
+
+ QFile::remove("foo");
+}
+
+void tst_QSettings::cleanup()
+{
+ init();
+}
+
+/*
+ Test the constructors and the assignment operator.
+*/
+
+void tst_QSettings::ctor_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::ctor()
+{
+ QFETCH(QSettings::Format, format);
+
+ {
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(format, QSettings::UserScope, "software.org");
+ QSettings settings3(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings settings4(format, QSettings::SystemScope, "software.org");
+
+ QSettings settings5(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings6(format, QSettings::UserScope, "software.org");
+ QSettings settings7(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings settings8(format, QSettings::SystemScope, "software.org");
+
+ // test QSettings::format() while we're at it
+ QVERIFY(settings1.format() == format);
+ QVERIFY(settings2.format() == format);
+ QVERIFY(settings3.format() == format);
+ QVERIFY(settings4.format() == format);
+
+ // test QSettings::scope() while we're at it
+ QVERIFY(settings1.scope() == QSettings::UserScope);
+ QVERIFY(settings2.scope() == QSettings::UserScope);
+ QVERIFY(settings3.scope() == QSettings::SystemScope);
+ QVERIFY(settings4.scope() == QSettings::SystemScope);
+
+ // test QSettings::organizationName() while we're at it
+ QVERIFY(settings1.organizationName() == "software.org");
+ QVERIFY(settings2.organizationName() == "software.org");
+ QVERIFY(settings3.organizationName() == "software.org");
+ QVERIFY(settings4.organizationName() == "software.org");
+
+ // test QSettings::applicationName() while we're at it
+ QCOMPARE(settings1.applicationName(), QString("KillerAPP"));
+ QVERIFY(settings2.applicationName().isEmpty());
+ QVERIFY(settings3.applicationName() == "KillerAPP");
+ QVERIFY(settings4.applicationName().isEmpty());
+
+ /*
+ Go forwards.
+ */
+ settings4.setValue("key 1", QString("doodah"));
+
+ QCOMPARE(settings1.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings3.setValue("key 1", QString("blah"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings2.setValue("key 1", QString("whoa"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings1.setValue("key 1", QString("gurgle"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ /*
+ Test the copies.
+ */
+ QCOMPARE(settings5.value("key 1").toString(), settings1.value("key 1").toString());
+ QCOMPARE(settings6.value("key 1").toString(), settings2.value("key 1").toString());
+ QCOMPARE(settings7.value("key 1").toString(), settings3.value("key 1").toString());
+ QCOMPARE(settings8.value("key 1").toString(), settings4.value("key 1").toString());
+
+ /*
+ Go backwards.
+ */
+
+ settings2.setValue("key 1", QString("bilboh"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings3.setValue("key 1", QString("catha"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("catha"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings4.setValue("key 1", QString("quirko"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("catha"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("quirko"));
+
+ /*
+ Test the copies again.
+ */
+ QCOMPARE(settings5.value("key 1").toString(), settings1.value("key 1").toString());
+ QCOMPARE(settings6.value("key 1").toString(), settings2.value("key 1").toString());
+ QCOMPARE(settings7.value("key 1").toString(), settings3.value("key 1").toString());
+ QCOMPARE(settings8.value("key 1").toString(), settings4.value("key 1").toString());
+
+ /*
+ "General" is a problem key for .ini files.
+ */
+ settings1.setValue("General", 1);
+ settings1.setValue("%General", 2);
+ settings1.setValue("alpha", 3);
+ settings1.setValue("General/alpha", 4);
+ settings1.setValue("%General/alpha", 5);
+ settings1.setValue("alpha/General", 6);
+ settings1.setValue("alpha/%General", 7);
+ settings1.setValue("General/General", 8);
+ settings1.setValue("General/%General", 9);
+ settings1.setValue("%General/General", 10);
+ settings1.setValue("%General/%General", 11);
+ }
+
+ {
+ /*
+ Test that the data was stored on disk after all instances
+ of QSettings are destroyed.
+ */
+
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(format, QSettings::UserScope, "software.org");
+ QSettings settings3(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings settings4(format, QSettings::SystemScope, "software.org");
+
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("catha"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("quirko"));
+
+ /*
+ Test problem keys.
+ */
+
+ QCOMPARE(settings1.value("General").toInt(), 1);
+ QCOMPARE(settings1.value("%General").toInt(), 2);
+ QCOMPARE(settings1.value("alpha").toInt(), 3);
+ QCOMPARE(settings1.value("General/alpha").toInt(), 4);
+ QCOMPARE(settings1.value("%General/alpha").toInt(), 5);
+ QCOMPARE(settings1.value("alpha/General").toInt(), 6);
+ QCOMPARE(settings1.value("alpha/%General").toInt(), 7);
+ QCOMPARE(settings1.value("General/General").toInt(), 8);
+ QCOMPARE(settings1.value("General/%General").toInt(), 9);
+ QCOMPARE(settings1.value("%General/General").toInt(), 10);
+ QCOMPARE(settings1.value("%General/%General").toInt(), 11);
+
+ /*
+ Test that the organization and product parameters is
+ case-insensitive on Windows and Mac, case-sensitive on
+ Unix.
+ */
+ QSettings settings5(format, QSettings::UserScope, "SoftWare.ORG", "killerApp");
+ if (format == QSettings::NativeFormat) {
+#if defined(Q_OS_WIN) || defined(Q_OS_DARWIN) || defined(Q_OS_SYMBIAN)
+ QCOMPARE(settings5.value("key 1").toString(), QString("gurgle"));
+#else
+ QVERIFY(!settings5.contains("key 1"));
+#endif
+ } else {
+#if defined(Q_OS_WIN) || defined(Q_OS_DARWIN) || defined(Q_OS_SYMBIAN)
+ QCOMPARE(settings5.value("key 1").toString(), QString("gurgle"));
+#else
+ QVERIFY(!settings5.contains("key 1"));
+#endif
+ }
+ }
+
+ {
+ QSettings settings1(settingsPath("custom/custom.conf"), QSettings::IniFormat);
+ settings1.beginGroup("alpha/beta");
+ settings1.setValue("geometry", -7);
+ settings1.setValue("geometry/x", 1);
+ settings1.setValue("geometry/y", 2);
+ QSettings settings2(settingsPath("custom/custom.conf"), QSettings::IniFormat);
+ settings1.setValue("geometry/width", 3);
+ settings2.setValue("alpha/beta/geometry/height", 4);
+ settings2.setValue("alpha/gamma/splitter", 5);
+ settings1.endGroup();
+
+ // test QSettings::scope() while we're at it
+ QVERIFY(settings1.scope() == QSettings::UserScope);
+
+ // test QSettings::organizationName() while we're at it
+ QVERIFY(settings1.organizationName().isEmpty());
+
+ // test QSettings::applicationName() while we're at it
+ QVERIFY(settings1.organizationName().isEmpty());
+
+ QSettings settings3(settingsPath("custom/custom2.conf"), QSettings::IniFormat);
+ settings3.beginGroup("doodley/beta");
+ settings3.setValue("geometry", -7);
+ settings3.setValue("geometry/x", 1);
+ settings3.setValue("geometry/y", 2);
+ settings3.setValue("geometry/width", 3);
+ settings3.setValue("geometry/height", 4);
+ settings3.endGroup();
+ settings3.setValue("alpha/gamma/splitter", 5);
+
+ QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings1.value("alpha/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings1.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings1.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings1.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings1.value("alpha/gamma/splitter").toInt(), 5);
+ QCOMPARE(settings1.allKeys().count(), 6);
+
+ QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings2.value("alpha/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings2.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings2.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings2.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings2.value("alpha/gamma/splitter").toInt(), 5);
+ QCOMPARE(settings2.allKeys().count(), 6);
+ }
+
+ {
+ QSettings settings1(settingsPath("custom/custom.conf"), QSettings::IniFormat);
+ QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings1.value("alpha/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings1.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings1.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings1.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings1.value("alpha/gamma/splitter").toInt(), 5);
+ QCOMPARE(settings1.allKeys().count(), 6);
+ }
+
+ {
+ // QSettings's default constructor is native by default
+ if (format == QSettings::NativeFormat) {
+ QCoreApplication::instance()->setOrganizationName("");
+ QCoreApplication::instance()->setApplicationName("");
+ QSettings settings;
+ QCOMPARE(settings.status(), QSettings::AccessError);
+ QCoreApplication::instance()->setOrganizationName("software.org");
+ QCoreApplication::instance()->setApplicationName("KillerAPP");
+ QSettings settings2;
+ QCOMPARE(settings2.status(), QSettings::NoError);
+ QSettings settings3("software.org", "KillerAPP");
+ QCOMPARE(settings2.fileName(), settings3.fileName());
+ QCoreApplication::instance()->setOrganizationName("");
+ QCoreApplication::instance()->setApplicationName("");
+ }
+
+ QSettings settings(format, QSettings::UserScope, "", "");
+ QCOMPARE(settings.status(), QSettings::AccessError);
+ QSettings settings2(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QCOMPARE(settings2.status(), QSettings::NoError);
+
+ // test QSettings::format() while we're at it
+ QVERIFY(settings.format() == format);
+ QVERIFY(settings2.format() == format);
+
+ // test QSettings::scope() while we're at it
+ QVERIFY(settings.scope() == QSettings::UserScope);
+ QVERIFY(settings2.scope() == QSettings::UserScope);
+
+ // test QSettings::organizationName() while we're at it
+ QVERIFY(settings.organizationName().isEmpty());
+ QVERIFY(settings2.organizationName() == "software.org");
+
+ // test QSettings::applicationName() while we're at it
+ QVERIFY(settings.applicationName().isEmpty());
+ QVERIFY(settings2.applicationName() == "KillerAPP");
+ }
+}
+
+void tst_QSettings::testByteArray_data()
+{
+ QTest::addColumn<QByteArray>("data");
+
+ QByteArray bytes("Hello world!");
+
+ QTest::newRow("latin1") << bytes;
+#ifndef QT_NO_COMPRESS
+ QTest::newRow("compressed") << qCompress(bytes);
+#endif
+ QTest::newRow("with \\0") << bytes + '\0' + bytes;
+}
+
+void tst_QSettings::testByteArray()
+{
+ QFETCH(QByteArray, data);
+
+ // write
+ {
+ QSettings settings("Trolltech", "tst_qsettings");
+ settings.setValue("byteArray", data);
+ }
+ // read
+ {
+ QSettings settings("Trolltech", "tst_qsettings");
+ QByteArray ret = settings.value("byteArray", data).toByteArray();
+ QCOMPARE(ret, data);
+ }
+}
+
+void tst_QSettings::testErrorHandling_data()
+{
+ QTest::addColumn<int>("filePerms"); // -1 means file should not exist
+ QTest::addColumn<int>("dirPerms");
+ QTest::addColumn<int>("statusAfterCtor");
+ QTest::addColumn<bool>("shouldBeEmpty");
+ QTest::addColumn<int>("statusAfterGet");
+ QTest::addColumn<int>("statusAfterSetAndSync");
+
+ // file dir afterCtor empty afterGet afterSetAndSync
+ QTest::newRow("0600 0700") << 0600 << 0700 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
+
+ QTest::newRow("0400 0700") << 0400 << 0700 << (int)QSettings::NoError
+ << false << (int)QSettings::NoError << (int)QSettings::AccessError;
+ QTest::newRow("0200 0700") << 0200 << 0700 << (int)QSettings::AccessError
+ << true << (int)QSettings::AccessError << (int)QSettings::AccessError;
+
+ QTest::newRow(" -1 0700") << -1 << 0700 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::NoError;
+
+ QTest::newRow(" -1 0000") << -1 << 0000 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::AccessError;
+ QTest::newRow(" -1 0100") << -1 << 0100 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::AccessError;
+ QTest::newRow("0600 0100") << 0600 << 0100 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
+ QTest::newRow(" -1 0300") << -1 << 0300 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::NoError;
+ QTest::newRow("0600 0300") << 0600 << 0300 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
+ QTest::newRow(" -1 0500") << -1 << 0500 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::AccessError;
+ QTest::newRow("0600 0500") << 0600 << 0500 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
+}
+
+void tst_QSettings::testErrorHandling()
+{
+#ifdef QT_BUILD_INTERNAL
+#ifdef Q_OS_WIN
+ QSKIP("Windows doesn't support most file modes, including read-only directories, so this test is moot.", SkipAll);
+#elif defined(Q_OS_SYMBIAN)
+ QSKIP("Symbian/Open C doesn't support execute or write only file modes, or directory permissions, so this test is mostly moot.", SkipAll);
+#elif defined(Q_OS_UNIX)
+ if (::getuid() == 0)
+ QSKIP("Running this test as root doesn't work, since file perms do not bother him", SkipAll);
+#else
+ QFETCH(int, filePerms);
+ QFETCH(int, dirPerms);
+ QFETCH(int, statusAfterCtor);
+ QFETCH(bool, shouldBeEmpty);
+ QFETCH(int, statusAfterGet);
+ QFETCH(int, statusAfterSetAndSync);
+
+ system(QString("chmod 700 %1 2>/dev/null").arg(settingsPath("someDir")).toLatin1());
+ system(QString("chmod -R u+rwx %1 2>/dev/null").arg(settingsPath("someDir")).toLatin1());
+ system(QString("rm -fr %1").arg(settingsPath("someDir")).toLatin1());
+
+ // prepare a file with some settings
+ if (filePerms != -1) {
+ QSettings settings(settingsPath("someDir/someSettings.ini"), QSettings::IniFormat);
+ QCOMPARE((int) settings.status(), (int) QSettings::NoError);
+
+ settings.beginGroup("alpha/beta");
+ settings.setValue("geometry", -7);
+ settings.setValue("geometry/x", 1);
+ settings.setValue("geometry/y", 2);
+ settings.setValue("geometry/width", 3);
+ settings.setValue("geometry/height", 4);
+ settings.endGroup();
+ settings.setValue("alpha/gamma/splitter", 5);
+ } else {
+ system(QString("mkdir -p %1").arg(settingsPath("someDir")).toLatin1());
+ }
+
+ if (filePerms != -1) {
+ system(QString("chmod %1 %2")
+ .arg(QString::number(filePerms, 8))
+ .arg(settingsPath("someDir/someSettings.ini"))
+ .toLatin1());
+ }
+ system(QString("chmod %1 %2")
+ .arg(QString::number(dirPerms, 8))
+ .arg(settingsPath("someDir"))
+ .toLatin1());
+
+ // the test
+ {
+ QConfFile::clearCache();
+ QSettings settings(settingsPath("someDir/someSettings.ini"), QSettings::IniFormat);
+ QCOMPARE((int)settings.status(), statusAfterCtor);
+ if (shouldBeEmpty) {
+ QCOMPARE(settings.allKeys().count(), 0);
+ } else {
+ QVERIFY(settings.allKeys().count() > 0);
+ }
+ settings.value("alpha/beta/geometry");
+ QCOMPARE((int)settings.status(), statusAfterGet);
+ settings.setValue("alpha/beta/geometry", 100);
+ QCOMPARE((int)settings.status(), statusAfterGet);
+ QCOMPARE(settings.value("alpha/beta/geometry").toInt(), 100);
+ settings.sync();
+ QCOMPARE(settings.value("alpha/beta/geometry").toInt(), 100);
+ QCOMPARE((int)settings.status(), statusAfterSetAndSync);
+ }
+#endif // !Q_OS_WIN
+#endif
+}
+
+Q_DECLARE_METATYPE(QVariant)
+Q_DECLARE_METATYPE(QSettings::Status)
+
+void tst_QSettings::testIniParsing_data()
+{
+ QTest::addColumn<QByteArray>("inicontent");
+ QTest::addColumn<QString>("key");
+ QTest::addColumn<QVariant>("expect");
+ QTest::addColumn<QSettings::Status>("status");
+
+ // Test "forgiving" parsing of entries not terminated with newline or unterminated strings
+ QTest::newRow("good1") << QByteArray("v=1\n") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("good2") << QByteArray("v=1\\\n2") << "v" << QVariant(12) << QSettings::NoError;
+ QTest::newRow("good3") << QByteArray("v=1\\\r2") << "v" << QVariant(12) << QSettings::NoError;
+ QTest::newRow("good4") << QByteArray("v=1\\\n\r2") << "v" << QVariant(12) << QSettings::NoError;
+ QTest::newRow("good5") << QByteArray("v=1\\\r\n2") << "v" << QVariant(12) << QSettings::NoError;
+ QTest::newRow("good6") << QByteArray("v \t = \t 1\\\r\n2") << "v" << QVariant(12) << QSettings::NoError;
+ QTest::newRow("garbage1") << QByteArray("v") << "v" << QVariant() << QSettings::FormatError;
+ QTest::newRow("nonterm1") << QByteArray("v=str") << "v" << QVariant("str") << QSettings::NoError;
+ QTest::newRow("nonterm2") << QByteArray("v=\"str\"") << "v" << QVariant("str") << QSettings::NoError;
+ QTest::newRow("nonterm3") << QByteArray("v=\"str") << "v" << QVariant("str") << QSettings::NoError;
+ QTest::newRow("nonterm4") << QByteArray("v=\\") << "v" << QVariant("") << QSettings::NoError;
+ QTest::newRow("nonterm5") << QByteArray("u=s\nv=\"str") << "v" << QVariant("str") << QSettings::NoError;
+ QTest::newRow("nonterm6") << QByteArray("v=\"str\nw=ok") << "v" << QVariant("str\nw=ok") << QSettings::NoError;
+ QTest::newRow("nonterm7") << QByteArray("v=") << "v" << QVariant("") << QSettings::NoError;
+ QTest::newRow("nonterm8") << QByteArray("v=\"str\njnk") << "v" << QVariant("str\njnk") << QSettings::NoError;
+ QTest::newRow("nonterm9") << QByteArray("v=1\\") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm10") << QByteArray("v=1\\\n") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm11") << QByteArray("v=1\\\r") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm12") << QByteArray("v=1\\\n\r") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm13") << QByteArray("v=1\\\r\n") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm14") << QByteArray("v=1\\\n\nx=2") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm15") << QByteArray("v=1\\\r\rx=2") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm16") << QByteArray("v=1\\\n\n\nx=2") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm17") << QByteArray("; foo\nv=1") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm18") << QByteArray("; foo\n\nv=1") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm19") << QByteArray("\nv=1;foo") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm20") << QByteArray("v=x ") << "v" << QVariant("x") << QSettings::NoError;
+ QTest::newRow("nonterm21") << QByteArray("v=x ;") << "v" << QVariant("x") << QSettings::NoError;
+}
+
+void tst_QSettings::testIniParsing()
+{
+#ifdef QT_BUILD_INTERNAL
+ qRegisterMetaType<QVariant>("QVariant");
+ qRegisterMetaType<QSettings::Status>("QSettings::Status");
+
+ QDir dir(settingsPath());
+ QVERIFY(dir.mkpath("someDir"));
+ QFile f(dir.path()+"/someDir/someSettings.ini");
+
+ QFETCH(QByteArray, inicontent);
+ QFETCH(QString, key);
+ QFETCH(QVariant, expect);
+ QFETCH(QSettings::Status, status);
+
+ QVERIFY(f.open(QFile::WriteOnly));
+ f.write(inicontent);
+ f.close();
+
+ QConfFile::clearCache();
+ QSettings settings(settingsPath("someDir/someSettings.ini"), QSettings::IniFormat);
+
+ if ( settings.status() == QSettings::NoError ) { // else no point proceeding
+ QVariant v = settings.value(key);
+ QVERIFY(v.canConvert(expect.type()));
+ // check some types so as to give prettier error messages
+ if ( v.type() == QVariant::String ) {
+ QCOMPARE(v.toString(), expect.toString());
+ } else if ( v.type() == QVariant::Int ) {
+ QCOMPARE(v.toInt(), expect.toInt());
+ } else {
+ QCOMPARE(v, expect);
+ }
+ }
+
+ QCOMPARE(settings.status(), status);
+#endif
+}
+
+/*
+ Tests beginGroup(), endGroup(), and group().
+*/
+void tst_QSettings::beginGroup()
+{
+ QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(QSettings::UserScope, "software.org", "KillerAPP");
+
+ /*
+ Let's start with some back and forthing.
+ */
+
+ settings1.beginGroup("alpha");
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+ settings1.beginGroup("/beta");
+ QCOMPARE(settings1.group(), QString("beta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+
+ settings1.beginGroup("///gamma//");
+ QCOMPARE(settings1.group(), QString("gamma"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+
+ settings1.setValue("geometry", 5);
+ QCOMPARE(settings1.value("geometry").toInt(), 5);
+ QCOMPARE(settings1.value("/geometry///").toInt(), 5);
+ QCOMPARE(settings2.value("geometry").toInt(), 5);
+ QCOMPARE(settings2.value("/geometry///").toInt(), 5);
+
+ /*
+ OK, now start for real.
+ */
+
+ settings1.beginGroup("alpha");
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.setValue("geometry", 66);
+ QCOMPARE(settings1.value("geometry").toInt(), 66);
+ QCOMPARE(settings2.value("geometry").toInt(), 5);
+ QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
+
+ QSettings settings3(QSettings::UserScope, "software.org", "KillerAPP");
+ settings3.beginGroup("alpha");
+ QCOMPARE(settings3.value("geometry").toInt(), 66);
+
+ settings1.beginGroup("/beta///");
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.setValue("geometry", 777);
+ QCOMPARE(settings1.value("geometry").toInt(), 777);
+ QCOMPARE(settings2.value("geometry").toInt(), 5);
+ QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
+ QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), 777);
+ QCOMPARE(settings3.value("geometry").toInt(), 66);
+ QCOMPARE(settings3.value("beta/geometry").toInt(), 777);
+
+ settings3.beginGroup("gamma");
+ settings3.setValue("geometry", 8888);
+ QCOMPARE(settings3.value("geometry").toInt(), 8888);
+ QCOMPARE(settings2.value("geometry").toInt(), 5);
+ QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
+ QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), 777);
+ QCOMPARE(settings2.value("alpha/gamma/geometry").toInt(), 8888);
+ QCOMPARE(settings1.value("geometry").toInt(), 777);
+
+ // endGroup() should do nothing if group() is empty
+ for (int i = 0; i < 10; ++i)
+ settings2.endGroup();
+ QCOMPARE(settings2.value("geometry").toInt(), 5);
+ QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
+ QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), 777);
+ QCOMPARE(settings2.value("alpha/gamma/geometry").toInt(), 8888);
+
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+ QCOMPARE(settings1.value("geometry").toInt(), 5);
+ QCOMPARE(settings1.value("alpha/geometry").toInt(), 66);
+ QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), 777);
+ QCOMPARE(settings1.value("alpha/gamma/geometry").toInt(), 8888);
+
+ settings1.beginGroup("delta");
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.beginGroup("");
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.beginGroup("/");
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.beginGroup("////");
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.beginGroup("////omega///epsilon zeta eta theta/ / /");
+ QCOMPARE(settings1.group(), QString("delta/omega/epsilon zeta eta theta/ / "));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+}
+
+/*
+ Tests setValue() and getXxx().
+*/
+void tst_QSettings::setValue()
+{
+ QSettings settings(QSettings::UserScope, "software.org", "KillerAPP");
+
+ settings.setValue("key 2", (int)0x7fffffff);
+ QCOMPARE(settings.value("key 2").toInt(), (int)0x7fffffff);
+ QCOMPARE(settings.value("key 2").toString(), QString::number((int)0x7fffffff));
+ settings.setValue("key 2", -1);
+ QCOMPARE(settings.value("key 2").toInt(), -1);
+ QCOMPARE(settings.value("key 2").toString(), QString("-1"));
+ settings.setValue("key 2", (int)0x80000000);
+ QCOMPARE(settings.value("key 2").toInt(), (int)0x80000000);
+ settings.setValue("key 2", (int)0);
+ QCOMPARE(settings.value("key 2", 123).toInt(), (int)0);
+ settings.setValue("key 2", (int)12345);
+ QCOMPARE(settings.value("key 2").toInt(), (int)12345);
+ QCOMPARE(settings.value("no such key", 1234).toInt(), (int)1234);
+ QCOMPARE(settings.value("no such key").toInt(), (int)0);
+
+ settings.setValue("key 2", true);
+ QCOMPARE(settings.value("key 2").toBool(), true);
+ settings.setValue("key 2", false);
+ QCOMPARE(settings.value("key 2", true).toBool(), false);
+ settings.setValue("key 2", (int)1);
+ QCOMPARE(settings.value("key 2").toBool(), true);
+ settings.setValue("key 2", (int)-1);
+ QCOMPARE(settings.value("key 2").toBool(), true);
+ settings.setValue("key 2", (int)0);
+ QCOMPARE(settings.value("key 2", true).toBool(), false);
+ settings.setValue("key 2", QString("true"));
+ QCOMPARE(settings.value("key 2").toBool(), true);
+ settings.setValue("key 2", QString("false"));
+ QCOMPARE(settings.value("key 2", true).toBool(), false);
+/*
+ settings.setValue("key 2", "true");
+ QCOMPARE(settings.value("key 2").toBool(), true);
+ settings.setValue("key 2", "false");
+ QCOMPARE(settings.value("key 2", true).toBool(), false);
+ settings.setValue("key 2", "");
+ QCOMPARE(settings.value("key 2", true).toBool(), true);
+ settings.setValue("key 2", "");
+ QCOMPARE(settings.value("key 2", false).toBool(), false);
+ settings.setValue("key 2", "0.000e-00"); // cannot convert double to a bool
+ QCOMPARE(settings.value("key 2", true).toBool(), true);
+ settings.setValue("key 2", "0.000e-00");
+ QCOMPARE(settings.value("key 2", false).toBool(), false);
+
+*/
+ settings.setValue("key 2", QStringList());
+ QCOMPARE(settings.value("key 2").toStringList(), QStringList());
+ settings.setValue("key 2", QStringList(""));
+ QCOMPARE(settings.value("key 2").toStringList(), QStringList(""));
+ settings.setValue("key 2", QStringList() << "" << "");
+ QCOMPARE(settings.value("key 2").toStringList(), QStringList() << "" << "");
+ settings.setValue("key 2", QStringList() << "" << "a" << "" << "bc" << "");
+ QCOMPARE(settings.value("key 2").toStringList(), QStringList() << "" << "a" << "" << "bc" << "");
+
+ settings.setValue("key 3", QList<QVariant>());
+ QCOMPARE(settings.value("key 3").toList(), QList<QVariant>());
+ settings.setValue("key 3", QList<QVariant>() << 1 << QString("a"));
+ QCOMPARE(settings.value("key 3").toList(), QList<QVariant>() << 1 << QString("a"));
+
+ QList<QVariant> outerList;
+ outerList << 1 << QString("b");
+ QList<QVariant> innerList = outerList;
+ outerList.append(QVariant(innerList));
+ outerList.append(QVariant(innerList));
+ outerList << 2 << QString("c");
+ innerList = outerList;
+ outerList.append(QVariant(innerList));
+ // outerList: [1, "b", [1, "b"], [1, "b"], 2, "c", [1, "b", [1, "b"], [1, "b"], 2, "c"]]
+
+ settings.setValue("key 3", outerList);
+ QCOMPARE(settings.value("key 3").toList(), outerList);
+ QCOMPARE(settings.value("key 3").toList().size(), 7);
+
+ QMap<QString, QVariant> map;
+ map.insert("1", "one");
+ map.insert("2", "two");
+ map.insert("3", outerList);
+ map.insert("5", "cinco");
+ map.insert("10", "zehn");
+ settings.setValue("key 4", map);
+ QCOMPARE(settings.value("key 4").toMap(), map);
+}
+
+void tst_QSettings::testVariantTypes_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::testVariantTypes()
+{
+#ifdef QT_BUILD_INTERNAL
+#define testVal(key, val, tp, rtype) \
+ { \
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP"); \
+ settings1.setValue(key, qVariantFromValue(val)); \
+ } \
+ QConfFile::clearCache(); \
+ { \
+ QSettings settings2(format, QSettings::UserScope, "software.org", "KillerAPP"); \
+ QVariant v = settings2.value(key); \
+ QVERIFY(qvariant_cast<tp >(v) == val); \
+ QVERIFY(v.type() == QVariant::rtype); \
+ }
+
+ typedef QMap<QString, QVariant> TestVariantMap;
+
+ QFETCH(QSettings::Format, format);
+
+ TestVariantMap m2;
+ m2.insert("ene", "due");
+ m2.insert("rike", "fake");
+ m2.insert("borba", "dorba");
+ testVal("key2", m2, TestVariantMap, Map);
+
+ QStringList l2;
+
+ l2 << "ene" << "due" << "@Point(1 2)" << "@fake";
+ testVal("key3", l2, QStringList, StringList);
+
+ l2.clear();
+ l2 << "ene" << "due" << "rike" << "fake";
+ testVal("key3", l2, QStringList, StringList);
+
+ QList<QVariant> l3;
+ QDate date = QDate::currentDate();
+ QTime time = QTime::currentTime();
+ l3 << QString("ene") << 10 << qVariantFromValue(QColor(1, 2, 3)) << QVariant(QRect(1, 2, 3, 4))
+ << QVariant(QSize(4, 56)) << QVariant(QPoint(4, 2)) << true << false << date << time;
+ testVal("key3", l3, QVariantList, List);
+
+ testVal("key4", QString("hello"), QString, String);
+ testVal("key5", QColor(1, 2, 3), QColor, Color);
+ testVal("key6", QRect(1, 2, 3, 4), QRect, Rect);
+ testVal("key7", QSize(4, 56), QSize, Size);
+ testVal("key8", QPoint(4, 2), QPoint, Point);
+ testVal("key10", date, QDate, Date);
+ testVal("key11", time, QTime, Time);
+ testVal("key12", QByteArray("foo bar"), QByteArray, ByteArray);
+
+ {
+ QSettings settings(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QVERIFY(!settings.contains("key99"));
+ QCOMPARE(settings.value("key99"), QVariant());
+
+ settings.setValue("key99", QVariant());
+ QVERIFY(settings.contains("key99"));
+ QCOMPARE(settings.value("key99"), QVariant());
+
+ settings.setValue("key99", QVariant(1));
+ QVERIFY(settings.contains("key99"));
+ QCOMPARE(settings.value("key99"), QVariant(1));
+
+ settings.setValue("key99", QVariant());
+ QVERIFY(settings.contains("key99"));
+ QCOMPARE(settings.value("key99"), QVariant());
+
+ settings.remove("key99");
+ QVERIFY(!settings.contains("key99"));
+ QCOMPARE(settings.value("key99"), QVariant());
+ }
+
+ QList<QVariant> l4;
+ l4 << QVariant(m2) << QVariant(l2) << QVariant(l3);
+ testVal("key13", l4, QVariantList, List);
+
+ // We store key sequences as strings instead of binary variant blob, for improved
+ // readability in the resulting format.
+ if (format >= QSettings::InvalidFormat) {
+ testVal("keysequence", QKeySequence(Qt::ControlModifier + Qt::Key_F1), QKeySequence, KeySequence);
+ } else {
+ testVal("keysequence", QKeySequence(Qt::ControlModifier + Qt::Key_F1), QString, String);
+ }
+
+#undef testVal
+#endif
+}
+
+void tst_QSettings::remove()
+{
+ QSettings settings0(QSettings::UserScope, "software.org", "KillerAPP");
+ int initialNumKeys = settings0.allKeys().size();
+ QCOMPARE(settings0.value("key 1", "123").toString(), QString("123"));
+ settings0.remove("key 1");
+ QCOMPARE(settings0.value("key 1", "456").toString(), QString("456"));
+
+ settings0.setValue("key 1", "bubloo");
+ QCOMPARE(settings0.value("key 1").toString(), QString("bubloo"));
+ settings0.remove("key 2");
+ QCOMPARE(settings0.value("key 1").toString(), QString("bubloo"));
+ settings0.remove("key 1");
+ QCOMPARE(settings0.value("key 1", "789").toString(), QString("789"));
+
+ /*
+ Make sure that removing a key removes all the subkeys.
+ */
+ settings0.setValue("alpha/beta/geometry", -7);
+ settings0.setValue("alpha/beta/geometry/x", 1);
+ settings0.setValue("alpha/beta/geometry/y", 2);
+ settings0.setValue("alpha/beta/geometry/width", 3);
+ settings0.setValue("alpha/beta/geometry/height", 4);
+ settings0.setValue("alpha/gamma/splitter", 5);
+
+ settings0.remove("alpha/beta/geometry/x");
+ QCOMPARE(settings0.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings0.value("alpha/beta/geometry/x", 999).toInt(), 999);
+ QCOMPARE(settings0.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings0.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings0.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
+
+ settings0.remove("alpha/beta/geometry");
+ QCOMPARE(settings0.value("alpha/beta/geometry", 777).toInt(), 777);
+ QCOMPARE(settings0.value("alpha/beta/geometry/x", 111).toInt(), 111);
+ QCOMPARE(settings0.value("alpha/beta/geometry/y", 222).toInt(), 222);
+ QCOMPARE(settings0.value("alpha/beta/geometry/width", 333).toInt(), 333);
+ QCOMPARE(settings0.value("alpha/beta/geometry/height", 444).toInt(), 444);
+ QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
+
+ settings0.setValue("alpha/beta/geometry", -7);
+ settings0.setValue("alpha/beta/geometry/x", 1);
+ settings0.setValue("alpha/beta/geometry/y", 2);
+ settings0.setValue("alpha/beta/geometry/width", 3);
+ settings0.setValue("alpha/beta/geometry/height", 4);
+ settings0.setValue("alpha/gamma/splitter", 5);
+ QCOMPARE(settings0.allKeys().size(), initialNumKeys + 6);
+
+ settings0.beginGroup("alpha/beta/geometry");
+ settings0.remove("");
+ settings0.endGroup();
+ QVERIFY(!settings0.contains("alpha/beta/geometry"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/y"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/width"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/height"));
+ QVERIFY(settings0.contains("alpha/gamma/splitter"));
+ QCOMPARE(settings0.allKeys().size(), initialNumKeys + 1);
+
+ settings0.beginGroup("alpha/beta");
+ settings0.remove("");
+ settings0.endGroup();
+ QVERIFY(!settings0.contains("alpha/beta/geometry"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/y"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/width"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/height"));
+ QVERIFY(settings0.contains("alpha/gamma/splitter"));
+ QCOMPARE(settings0.allKeys().size(), initialNumKeys + 1);
+
+ settings0.remove("");
+ QVERIFY(!settings0.contains("alpha/gamma/splitter"));
+ QCOMPARE(settings0.allKeys().size(), initialNumKeys);
+
+ /*
+ Do it again, but this time let's use setGroup().
+ */
+
+ settings0.setValue("alpha/beta/geometry", -7);
+ settings0.setValue("alpha/beta/geometry/x", 1);
+ settings0.setValue("alpha/beta/geometry/y", 2);
+ settings0.setValue("alpha/beta/geometry/width", 3);
+ settings0.setValue("alpha/beta/geometry/height", 4);
+ settings0.setValue("alpha/gamma/splitter", 5);
+
+ settings0.beginGroup("foo/bar/baz/doesn't");
+ settings0.remove("exist");
+ settings0.endGroup();
+ QCOMPARE(settings0.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings0.value("alpha/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings0.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings0.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings0.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
+
+ settings0.beginGroup("alpha/beta/geometry");
+ settings0.remove("x");
+ settings0.endGroup();
+ QCOMPARE(settings0.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings0.value("alpha/beta/geometry/x", 999).toInt(), 999);
+ QCOMPARE(settings0.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings0.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings0.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
+
+ settings0.remove("alpha/beta");
+ QCOMPARE(settings0.value("alpha/beta/geometry", 777).toInt(), 777);
+ QCOMPARE(settings0.value("alpha/beta/geometry/x", 111).toInt(), 111);
+ QCOMPARE(settings0.value("alpha/beta/geometry/y", 222).toInt(), 222);
+ QCOMPARE(settings0.value("alpha/beta/geometry/width", 333).toInt(), 333);
+ QCOMPARE(settings0.value("alpha/beta/geometry/height", 444).toInt(), 444);
+ QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
+
+ settings0.clear();
+ QCOMPARE(settings0.value("alpha/gamma/splitter", 888).toInt(), 888);
+
+ /*
+ OK, now let's check what happens if settings are spread across
+ multiple files (user vs. global, product-specific vs.
+ company-wide).
+ */
+
+ QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(QSettings::UserScope, "software.org");
+ QSettings settings3(QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings settings4(QSettings::SystemScope, "software.org");
+
+ settings4.setValue("key 1", "doodah");
+ settings3.setValue("key 1", "blah");
+ settings2.setValue("key 1", "whoa");
+ settings1.setValue("key 1", "gurgle");
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings1.remove("key 1");
+ QCOMPARE(settings1.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings2.remove("key 1");
+ QCOMPARE(settings1.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings3.remove("key 1");
+ QCOMPARE(settings1.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings4.remove("key 1");
+ QVERIFY(!settings1.contains("key 1"));
+ QVERIFY(!settings2.contains("key 1"));
+ QVERIFY(!settings3.contains("key 1"));
+ QVERIFY(!settings4.contains("key 1"));
+
+ /*
+ Get ready for the next part of the test.
+ */
+
+ settings1.clear();
+ settings2.clear();
+ settings3.clear();
+ settings4.clear();
+
+ settings1.sync();
+ settings2.sync();
+ settings3.sync();
+ settings4.sync();
+
+ /*
+ Check that recursive removes work correctly when some of the
+ keys are loaded from the file and others have been modified in
+ memory (corresponds to originalKeys vs. addedKeys in the
+ QSettingsFile code).
+ */
+
+ settings1.setValue("alpha/beta/geometry", -7);
+ settings1.setValue("alpha/beta/geometry/x", 1);
+ settings1.setValue("alpha/beta/geometry/y", 2);
+ settings1.setValue("alpha/gamma/splitter", 5);
+ settings1.sync();
+
+ settings1.setValue("alpha/beta/geometry/width", 3);
+ settings1.setValue("alpha/beta/geometry/height", 4);
+
+ settings1.remove("alpha/beta/geometry/y");
+ QVERIFY(settings1.contains("alpha/beta/geometry"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/width"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/height"));
+ QCOMPARE(settings1.allKeys().size(), initialNumKeys + 5);
+
+ settings1.remove("alpha/beta/geometry/y");
+ QCOMPARE(settings1.allKeys().size(), initialNumKeys + 5);
+
+ settings1.remove("alpha/beta/geometry/height");
+ QVERIFY(settings1.contains("alpha/beta/geometry"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/width"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/height"));
+ QCOMPARE(settings1.allKeys().size(), initialNumKeys + 4);
+
+ settings1.remove("alpha/beta/geometry");
+ QVERIFY(!settings1.contains("alpha/beta/geometry"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/width"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/height"));
+ QVERIFY(settings1.contains("alpha/gamma/splitter"));
+ QCOMPARE(settings1.allKeys().size(), initialNumKeys + 1);
+
+ settings1.sync();
+ QVERIFY(!settings1.contains("alpha/beta/geometry"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/width"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/height"));
+ QVERIFY(settings1.contains("alpha/gamma/splitter"));
+ QCOMPARE(settings1.allKeys().size(), initialNumKeys + 1);
+}
+
+/*
+ Tests contains() and keys().
+*/
+void tst_QSettings::contains()
+{
+ QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
+ int initialNumKeys = settings1.allKeys().size(); // 0 on all platforms but Mac OS X.
+ settings1.setValue("alpha/beta/geometry", -7);
+ settings1.setValue("alpha/beta/geometry/x", 1);
+ settings1.setValue("alpha/beta/geometry/y", 2);
+ settings1.setValue("alpha/beta/geometry/width", 3);
+ settings1.setValue("alpha/beta/geometry/height", 4);
+ settings1.setValue("alpha/gamma/splitter", 5);
+ settings1.setValue("alpha/gamma/splitter/ /", 5);
+
+ QVERIFY(!settings1.contains("alpha"));
+ QVERIFY(!settings1.contains("alpha/beta"));
+ QVERIFY(!settings1.contains("///alpha///beta///"));
+ QVERIFY(settings1.contains("alpha/beta/geometry"));
+ QVERIFY(settings1.contains("///alpha///beta//geometry//"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/x"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/y"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/width"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/height"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/height/foo/bar/doesn't/exist"));
+ QVERIFY(!settings1.contains("alpha/gamma"));
+ QVERIFY(settings1.contains("alpha/gamma/splitter"));
+ QVERIFY(settings1.contains("alpha/gamma/splitter/ "));
+ QVERIFY(settings1.contains("////alpha/gamma/splitter// ////"));
+
+ settings1.beginGroup("alpha");
+ QVERIFY(!settings1.contains("beta"));
+ QVERIFY(!settings1.contains("/////beta///"));
+ QVERIFY(settings1.contains("beta/geometry"));
+ QVERIFY(settings1.contains("/////beta//geometry//"));
+ QVERIFY(settings1.contains("beta/geometry/x"));
+ QVERIFY(settings1.contains("beta/geometry/y"));
+ QVERIFY(settings1.contains("beta/geometry/width"));
+ QVERIFY(settings1.contains("beta/geometry/height"));
+ QVERIFY(!settings1.contains("beta/geometry/height/foo/bar/doesn't/exist"));
+ QVERIFY(!settings1.contains("gamma"));
+ QVERIFY(settings1.contains("gamma/splitter"));
+ QVERIFY(settings1.contains("gamma/splitter/ "));
+ QVERIFY(settings1.contains("////gamma/splitter// ////"));
+
+ settings1.beginGroup("beta/geometry");
+ QVERIFY(settings1.contains("x"));
+ QVERIFY(settings1.contains("y"));
+ QVERIFY(settings1.contains("width"));
+ QVERIFY(settings1.contains("height"));
+ QVERIFY(!settings1.contains("height/foo/bar/doesn't/exist"));
+
+ QStringList keys = settings1.allKeys();
+ QStringList expectedResult = QStringList() << "x" << "y" << "width" << "height";
+ keys.sort();
+ expectedResult.sort();
+ int i;
+ QCOMPARE(keys, expectedResult);
+ for (i = 0; i < keys.size(); ++i) {
+ QVERIFY(settings1.contains(keys.at(i)));
+ }
+
+ settings1.endGroup();
+ QVERIFY(settings1.group() == "alpha");
+ keys = settings1.allKeys();
+ QCOMPARE(keys.size(), expectedResult.size() + 3);
+ for (i = 0; i < keys.size(); ++i) {
+ QVERIFY(settings1.contains(keys.at(i)));
+ }
+
+ settings1.endGroup();
+ QVERIFY(settings1.group().isEmpty());
+ keys = settings1.allKeys();
+
+ QCOMPARE(keys.size(), initialNumKeys + 7);
+ for (i = 0; i < keys.size(); ++i) {
+ QVERIFY(settings1.contains(keys.at(i)));
+ }
+}
+
+void tst_QSettings::sync()
+{
+ /*
+ What we're trying to test here is the case where two
+ instances of the same application access the same preference
+ files. We want to make sure that the results are 'merged',
+ rather than having the last application overwrite settings
+ set by the first application (like in Qt 3).
+
+ This is only applicable to the INI format. The Windows
+ registry and Mac's CFPreferences API should take care of this
+ by themselves.
+ */
+
+ QSettings settings1(QSettings::IniFormat, QSettings::UserScope, "software.org");
+ settings1.setValue("alpha/beta/geometry", -7);
+ settings1.setValue("alpha/beta/geometry/x", 1);
+ settings1.setValue("alpha/beta/geometry/y", 2);
+ settings1.setValue("alpha/beta/geometry/width", 3);
+ settings1.setValue("alpha/beta/geometry/height", 4);
+ settings1.setValue("alpha/gamma/splitter", 5);
+ settings1.sync(); // and it all goes into the file
+
+ QSettings settings2(QSettings::IniFormat, QSettings::UserScope, "other.software.org");
+ settings2.setValue("alpha/beta/geometry/x", 8);
+ settings2.sync();
+
+ settings2.setValue("moo/beta/geometry", -7);
+ settings2.setValue("moo/beta/geometry/x", 1);
+ settings2.setValue("moo/beta/geometry/y", 2);
+ settings2.setValue("moo/beta/geometry/width", 3);
+ settings2.setValue("moo/beta/geometry/height", 4);
+ settings2.setValue("moo/gamma/splitter", 5);
+ settings2.setValue("alpha/gamma/splitter", 15);
+ settings2.remove("alpha/beta/geometry/x");
+ settings2.remove("alpha/beta/geometry/y"); // should do nothing
+
+ // Now "some other app" will change other.software.org.ini
+ QString userConfDir = settingsPath("__user__") + QDir::separator();
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ unlink((userConfDir + "other.software.org.ini").toLatin1());
+ rename((userConfDir + "software.org.ini").toLatin1(),
+ (userConfDir + "other.software.org.ini").toLatin1());
+#else
+ QFile::remove(userConfDir + "other.software.org.ini");
+ QFile::rename(userConfDir + "software.org.ini" , userConfDir + "other.software.org.ini");
+#endif
+
+ settings2.sync();
+
+ // And voila, we should be merged
+
+ QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), -7);
+ QVERIFY(!settings2.contains("alpha/beta/geometry/x")); // <----- removed by settings2
+ QCOMPARE(settings2.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings2.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings2.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings2.value("alpha/gamma/splitter").toInt(), 15); // <---- set by settings2
+ QCOMPARE(settings2.value("moo/beta/geometry").toInt(), -7);
+ QCOMPARE(settings2.value("moo/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings2.value("moo/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings2.value("moo/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings2.value("moo/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings2.value("moo/gamma/splitter").toInt(), 5);
+ QCOMPARE(settings2.allKeys().count(), 11);
+
+ // Now, software.org.ini no longer exists, this is same as another app
+ // clearing all settings.
+ settings1.sync();
+ QCOMPARE(settings1.allKeys().count(), 0);
+
+/*
+ // Now "some other app" will change software.org.conf
+ unlink((userConfDir + "software.org.ini").toLatin1());
+ rename((userConfDir + "other.software.org.ini").toLatin1(),
+ (userConfDir + "software.org.ini").toLatin1());
+
+ settings1.sync();
+ QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings1.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings1.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings1.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings1.value("alpha/gamma/splitter").toInt(), 15);
+ QCOMPARE(settings1.value("moo/beta/geometry").toInt(), -7);
+ QCOMPARE(settings1.value("moo/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings1.value("moo/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings1.value("moo/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings1.value("moo/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings1.value("moo/gamma/splitter").toInt(), 5);
+ QCOMPARE(settings1.allKeys().count(), 11);
+*/
+}
+
+void tst_QSettings::setFallbacksEnabled_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::setFallbacksEnabled()
+{
+ QFETCH(QSettings::Format, format);
+
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(format, QSettings::UserScope, "software.org");
+ QSettings settings3(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings settings4(format, QSettings::SystemScope, "software.org");
+
+ settings1.setValue("key 1", "alpha");
+ settings2.setValue("key 1", "beta");
+ settings3.setValue("key 1", "gamma");
+ settings4.setValue("key 1", "delta");
+
+ settings1.setValue("key 2", "alpha");
+ settings2.setValue("key 2", "beta");
+ settings3.setValue("key 2", "gamma");
+
+ settings1.setValue("key 3", "alpha");
+ settings3.setValue("key 3", "gamma");
+ settings4.setValue("key 3", "delta");
+
+ settings1.setValue("key 4", "alpha");
+ settings2.setValue("key 4", "beta");
+ settings4.setValue("key 4", "delta");
+
+ settings2.setValue("key 5", "beta");
+ settings3.setValue("key 5", "gamma");
+ settings4.setValue("key 5", "delta");
+
+ QVERIFY(settings1.fallbacksEnabled());
+ QVERIFY(settings2.fallbacksEnabled());
+ QVERIFY(settings3.fallbacksEnabled());
+ QVERIFY(settings4.fallbacksEnabled());
+
+ settings1.setFallbacksEnabled(false);
+ settings2.setFallbacksEnabled(false);
+ settings3.setFallbacksEnabled(false);
+ settings4.setFallbacksEnabled(false);
+
+ QVERIFY(!settings1.fallbacksEnabled());
+ QVERIFY(!settings2.fallbacksEnabled());
+ QVERIFY(!settings3.fallbacksEnabled());
+ QVERIFY(!settings4.fallbacksEnabled());
+
+ /*
+ Make sure that the QSettings objects can still access their
+ main associated file when fallbacks are turned off.
+ */
+
+ QCOMPARE(settings1.value("key 1").toString(), QString("alpha"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("beta"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("gamma"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("delta"));
+
+ QCOMPARE(settings1.value("key 2").toString(), QString("alpha"));
+ QCOMPARE(settings2.value("key 2").toString(), QString("beta"));
+ QCOMPARE(settings3.value("key 2").toString(), QString("gamma"));
+ QVERIFY(!settings4.contains("key 2"));
+
+ QCOMPARE(settings1.value("key 3").toString(), QString("alpha"));
+ QCOMPARE(settings3.value("key 3").toString(), QString("gamma"));
+ QCOMPARE(settings4.value("key 3").toString(), QString("delta"));
+ QVERIFY(!settings2.contains("key 3"));
+
+ QCOMPARE(settings1.value("key 4").toString(), QString("alpha"));
+ QCOMPARE(settings2.value("key 4").toString(), QString("beta"));
+ QCOMPARE(settings4.value("key 4").toString(), QString("delta"));
+ QVERIFY(!settings3.contains("key 4"));
+
+ QCOMPARE(settings2.value("key 5").toString(), QString("beta"));
+ QCOMPARE(settings3.value("key 5").toString(), QString("gamma"));
+ QCOMPARE(settings4.value("key 5").toString(), QString("delta"));
+ QVERIFY(!settings1.contains("key 5"));
+
+ QCOMPARE(settings1.value("key 1").toString(), QString("alpha"));
+ QCOMPARE(settings1.value("key 5").toString(), QString(""));
+ QVERIFY(settings1.contains("key 1"));
+ QVERIFY(!settings1.contains("key 5"));
+}
+
+void tst_QSettings::testChildKeysAndGroups_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::testChildKeysAndGroups()
+{
+ QFETCH(QSettings::Format, format);
+
+ QSettings settings1(format, QSettings::UserScope, "software.org");
+ settings1.setFallbacksEnabled(false);
+ settings1.setValue("alpha/beta/geometry", -7);
+ settings1.setValue("alpha/beta/geometry/x", 1);
+ settings1.setValue("alpha/beta/geometry/y", 2);
+ settings1.setValue("alpha/beta/geometry/width", 3);
+ settings1.setValue("alpha/beta/geometry/height", 4);
+ settings1.setValue("alpha/gamma/splitter", 5);
+
+ QCOMPARE(settings1.childKeys(), QStringList());
+ QCOMPARE(settings1.childGroups(), QStringList() << "alpha");
+
+ settings1.beginGroup("/alpha");
+ QCOMPARE(settings1.childKeys(), QStringList());
+ QCOMPARE(settings1.childGroups(), QStringList() << "beta" << "gamma");
+
+ settings1.beginGroup("/beta");
+ QCOMPARE(settings1.childKeys(), QStringList() << "geometry");
+ QCOMPARE(settings1.childGroups(), QStringList() << "geometry");
+
+ settings1.beginGroup("/geometry");
+ QCOMPARE(settings1.childKeys(), QStringList() << "height" << "width" << "x" << "y");
+ QCOMPARE(settings1.childGroups(), QStringList());
+
+ settings1.beginGroup("/width");
+ QCOMPARE(settings1.childKeys(), QStringList());
+ QCOMPARE(settings1.childGroups(), QStringList());
+
+ settings1.endGroup();
+ settings1.endGroup();
+ settings1.endGroup();
+ settings1.endGroup();
+
+ { // task 53792
+ QSettings settings2("other.software.org");
+ settings2.setValue("viewbar/foo/test1", "1");
+ settings2.setValue("viewbar/foo/test2", "2");
+ settings2.setValue("viewbar/foo/test3", "3");
+ settings2.setValue("viewbar/foo/test4", "4");
+ settings2.setValue("viewbar/foo/test5", "5");
+ settings2.setValue("viewbar/bar/test1", "1");
+ settings2.setValue("viewbar/bar/test2", "2");
+ settings2.setValue("viewbar/bar/test3", "3");
+ settings2.setValue("viewbar/bar/test4", "4");
+ settings2.setValue("viewbar/bar/test5", "5");
+
+ settings2.beginGroup("viewbar");
+ QStringList l = settings2.childGroups();
+ settings2.endGroup();
+ l.sort();
+ QCOMPARE(l, QStringList() << "bar" << "foo");
+ }
+}
+
+void tst_QSettings::testUpdateRequestEvent()
+{
+ QFile::remove("foo");
+ QVERIFY(!QFile::exists("foo"));
+
+ QSettings settings1("foo", QSettings::IniFormat);
+ QVERIFY(!QFile::exists("foo"));
+ QVERIFY(QFileInfo("foo").size() == 0);
+ settings1.setValue("key1", 1);
+ QVERIFY(QFileInfo("foo").size() == 0);
+
+ QTRY_VERIFY(QFileInfo("foo").size() > 0);
+
+ settings1.remove("key1");
+ QVERIFY(QFileInfo("foo").size() > 0);
+
+ QTRY_VERIFY(QFileInfo("foo").size() == 0);
+
+ settings1.setValue("key2", 2);
+ QVERIFY(QFileInfo("foo").size() == 0);
+
+ QTRY_VERIFY(QFileInfo("foo").size() > 0);
+
+ settings1.clear();
+ QVERIFY(QFileInfo("foo").size() > 0);
+
+ QTRY_VERIFY(QFileInfo("foo").size() == 0);
+}
+
+const int NumIterations = 5;
+const int NumThreads = 4;
+
+class SettingsThread : public QThread
+{
+public:
+ void run();
+ void start(int n) { param = n; QThread::start(); }
+
+private:
+ int param;
+};
+
+void SettingsThread::run()
+{
+ for (int i = 0; i < NumIterations; ++i) {
+ QSettings settings("software.org", "KillerAPP");
+ settings.setValue(QString::number((param * NumIterations) + i), param);
+ settings.sync();
+ QCOMPARE((int)settings.status(), (int)QSettings::NoError);
+ }
+}
+
+void tst_QSettings::testThreadSafety()
+{
+ SettingsThread threads[NumThreads];
+ int i, j;
+
+ for (i = 0; i < NumThreads; ++i)
+ threads[i].start(i + 1);
+ for (i = 0; i < NumThreads; ++i)
+ threads[i].wait();
+
+ QSettings settings("software.org", "KillerAPP");
+ for (i = 0; i < NumThreads; ++i) {
+ int param = i + 1;
+ for (j = 0; j < NumIterations; ++j) {
+ QCOMPARE(settings.value(QString::number((param * NumIterations) + j)).toInt(), param);
+ }
+ }
+}
+
+void tst_QSettings::testNormalizedKey_data()
+{
+ QTest::addColumn<QString>("inKey");
+ QTest::addColumn<QString>("outKey");
+
+ QTest::newRow("empty1") << "" << "";
+ QTest::newRow("empty2") << "/" << "";
+ QTest::newRow("empty3") << "//" << "";
+ QTest::newRow("empty4") << "///" << "";
+
+ QTest::newRow("a1") << "a" << "a";
+ QTest::newRow("a2") << "/a" << "a";
+ QTest::newRow("a3") << "a/" << "a";
+ QTest::newRow("a4") << "//a" << "a";
+ QTest::newRow("a5") << "a//" << "a";
+ QTest::newRow("a6") << "///a" << "a";
+ QTest::newRow("a7") << "a///" << "a";
+ QTest::newRow("a8") << "///a/" << "a";
+ QTest::newRow("a9") << "/a///" << "a";
+
+ QTest::newRow("ab1") << "aaa/bbb" << "aaa/bbb";
+ QTest::newRow("ab2") << "/aaa/bbb" << "aaa/bbb";
+ QTest::newRow("ab3") << "aaa/bbb/" << "aaa/bbb";
+ QTest::newRow("ab4") << "/aaa/bbb/" << "aaa/bbb";
+ QTest::newRow("ab5") << "aaa///bbb" << "aaa/bbb";
+ QTest::newRow("ab6") << "aaa///bbb/" << "aaa/bbb";
+ QTest::newRow("ab7") << "/aaa///bbb/" << "aaa/bbb";
+ QTest::newRow("ab8") << "////aaa///bbb////" << "aaa/bbb";
+}
+
+void tst_QSettings::testNormalizedKey()
+{
+#ifdef QT_BUILD_INTERNAL
+ QFETCH(QString, inKey);
+ QFETCH(QString, outKey);
+
+ inKey.detach();
+
+ QString result = QSettingsPrivate::normalizedKey(inKey);
+ QCOMPARE(result, outKey);
+
+ /*
+ If the key is already normalized, we verify that outKey is
+ just a shallow copy of the input string. This is an important
+ optimization that shouldn't be removed accidentally.
+ */
+ if (inKey == outKey) {
+ QVERIFY(!result.isDetached());
+ } else {
+ if (!result.isEmpty()) {
+ QVERIFY(result.isDetached());
+ }
+ }
+#endif
+}
+
+void tst_QSettings::testEmptyData()
+{
+ QString filename(QDir::tempPath() + "/empty.ini");
+ QFile::remove(filename);
+ QVERIFY(!QFile::exists(filename));
+
+ QString nullString;
+ QString emptyString("");
+ QStringList emptyList;
+ QStringList list;
+ QStringList list2;
+
+ QVariantList emptyVList;
+ QVariantList vList, vList2, vList3;
+
+ list << emptyString << nullString;
+ list2 << emptyString;
+ vList << emptyString;
+ vList2 << emptyString << nullString;
+ vList3 << QString("foo");
+
+ {
+ QSettings settings(filename, QSettings::IniFormat);
+ settings.setValue("nullString", nullString);
+ settings.setValue("emptyString", emptyString);
+ settings.setValue("emptyList", emptyList);
+ settings.setValue("list", list);
+ settings.setValue("list2", list2);
+ settings.setValue("emptyVList", emptyVList);
+ settings.setValue("vList", vList);
+ settings.setValue("vList2", vList2);
+ settings.setValue("vList3", vList3);
+ QVERIFY(settings.status() == QSettings::NoError);
+ }
+ {
+ QSettings settings(filename, QSettings::IniFormat);
+ QCOMPARE(settings.value("nullString").toString(), nullString);
+ QCOMPARE(settings.value("emptyString").toString(), emptyString);
+ QCOMPARE(settings.value("emptyList").toStringList(), emptyList);
+ QCOMPARE(settings.value("list").toStringList(), list);
+ QCOMPARE(settings.value("list2").toStringList(), list2);
+ QCOMPARE(settings.value("emptyVList").toList(), emptyVList);
+ QCOMPARE(settings.value("vList").toList(), vList);
+ QCOMPARE(settings.value("vList2").toList(), vList2);
+ QCOMPARE(settings.value("vList3").toList(), vList3);
+ QVERIFY(settings.status() == QSettings::NoError);
+ }
+
+ {
+ QSettings settings("Trolltech", "tst_qsettings");
+ settings.setValue("nullString", nullString);
+ settings.setValue("emptyString", emptyString);
+ settings.setValue("emptyList", emptyList);
+ settings.setValue("list", list);
+ settings.setValue("list2", list2);
+ settings.setValue("emptyVList", emptyVList);
+ settings.setValue("vList", vList);
+ settings.setValue("vList2", vList2);
+ settings.setValue("vList3", vList3);
+ QVERIFY(settings.status() == QSettings::NoError);
+ }
+ {
+ QSettings settings("Trolltech", "tst_qsettings");
+ QCOMPARE(settings.value("nullString").toString(), nullString);
+ QCOMPARE(settings.value("emptyString").toString(), emptyString);
+ QCOMPARE(settings.value("emptyList").toStringList(), emptyList);
+ QCOMPARE(settings.value("list").toStringList(), list);
+ QCOMPARE(settings.value("list2").toStringList(), list2);
+ QCOMPARE(settings.value("emptyVList").toList(), emptyVList);
+ QCOMPARE(settings.value("vList").toList(), vList);
+ QCOMPARE(settings.value("vList2").toList(), vList2);
+ QCOMPARE(settings.value("vList3").toList(), vList3);
+ QVERIFY(settings.status() == QSettings::NoError);
+ }
+ QFile::remove(filename);
+}
+
+void tst_QSettings::testResourceFiles()
+{
+ QSettings settings(":/resourcefile.ini", QSettings::IniFormat);
+ QVERIFY(settings.status() == QSettings::NoError);
+ QVERIFY(!settings.isWritable());
+ QCOMPARE(settings.value("Field 1/Bottom").toInt(), 89);
+ settings.setValue("Field 1/Bottom", 90);
+
+ // the next two lines check the statu quo; another behavior would be possible
+ QVERIFY(settings.status() == QSettings::NoError);
+ QCOMPARE(settings.value("Field 1/Bottom").toInt(), 90);
+
+ settings.sync();
+ QVERIFY(settings.status() == QSettings::AccessError);
+ QCOMPARE(settings.value("Field 1/Bottom").toInt(), 90);
+}
+
+void tst_QSettings::fromFile_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::fromFile()
+{
+ QFETCH(QSettings::Format, format);
+
+ QFile::remove("foo");
+ QVERIFY(!QFile::exists("foo"));
+
+ QString path = "foo";
+
+#ifdef Q_OS_WIN
+ if (format == QSettings::NativeFormat)
+ path = "\\HKEY_CURRENT_USER\\Software\\foo";
+#endif
+
+ QStringList strList = QStringList() << "hope" << "destiny" << "chastity";
+
+ {
+ QSettings settings1(path, format);
+ QVERIFY(settings1.allKeys().isEmpty());
+
+ settings1.setValue("alpha", 1);
+ settings1.setValue("alpha", 2);
+ settings1.setValue("beta", strList);
+
+ QSettings settings2(path, format);
+ QCOMPARE(settings2.value("alpha").toInt(), 2);
+
+ settings1.sync();
+#ifndef Q_OS_WIN
+ QVERIFY(QFile::exists("foo"));
+#endif
+ QCOMPARE(settings1.value("alpha").toInt(), 2);
+ QCOMPARE(settings2.value("alpha").toInt(), 2);
+
+ settings2.setValue("alpha", 3);
+ settings2.setValue("gamma/foo.bar", 4);
+ QCOMPARE(settings1.value("alpha").toInt(), 3);
+ QCOMPARE(settings2.value("alpha").toInt(), 3);
+ QCOMPARE(settings1.value("beta").toStringList(), strList);
+ QCOMPARE(settings2.value("beta").toStringList(), strList);
+ QCOMPARE(settings1.value("gamma/foo.bar").toInt(), 4);
+ QCOMPARE(settings2.value("gamma/foo.bar").toInt(), 4);
+ }
+
+ {
+ QSettings settings1(path, format);
+ QCOMPARE(settings1.value("alpha").toInt(), 3);
+ QCOMPARE(settings1.value("beta").toStringList(), strList);
+ QCOMPARE(settings1.value("gamma/foo.bar").toInt(), 4);
+ QCOMPARE(settings1.allKeys().size(), 3);
+ }
+}
+
+void tst_QSettings::setIniCodec()
+{
+#ifdef QT_BUILD_INTERNAL
+ QByteArray expeContents4, expeContents5;
+ QByteArray actualContents4, actualContents5;
+
+ {
+ QFile inFile(":/resourcefile4.ini");
+ inFile.open(QIODevice::ReadOnly);
+ expeContents4 = inFile.readAll();
+ inFile.close();
+ }
+
+ {
+ QFile inFile(":/resourcefile5.ini");
+ inFile.open(QIODevice::ReadOnly);
+ expeContents5 = inFile.readAll();
+ inFile.close();
+ }
+
+ {
+ QSettings settings4(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP");
+ settings4.setIniCodec("UTF-8");
+ settings4.setValue(QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"), QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"));
+ settings4.sync();
+
+ QSettings settings5(QSettings::IniFormat, QSettings::UserScope, "other.software.org", "KillerAPP");
+ settings5.setIniCodec("ISO 8859-1");
+ settings5.setValue(QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"), QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"));
+ settings5.sync();
+
+ {
+ QFile inFile(settings4.fileName());
+ inFile.open(QIODevice::ReadOnly);
+ actualContents4 = inFile.readAll();
+ inFile.close();
+ }
+
+ {
+ QFile inFile(settings5.fileName());
+ inFile.open(QIODevice::ReadOnly);
+ actualContents5 = inFile.readAll();
+ inFile.close();
+ }
+ }
+
+ QConfFile::clearCache();
+
+ QCOMPARE(actualContents4, expeContents4);
+ QCOMPARE(actualContents5, expeContents5);
+
+ QSettings settings4(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP");
+ settings4.setIniCodec("UTF-8");
+ QSettings settings5(QSettings::IniFormat, QSettings::UserScope, "other.software.org", "KillerAPP");
+ settings5.setIniCodec("Latin-1");
+
+ QCOMPARE(settings4.allKeys().count(), 1);
+ QCOMPARE(settings5.allKeys().count(), 1);
+
+ QCOMPARE(settings4.allKeys().first(), settings5.allKeys().first());
+ QCOMPARE(settings4.value(settings4.allKeys().first()).toString(),
+ settings5.value(settings5.allKeys().first()).toString());
+#endif
+}
+
+static bool containsSubList(QStringList mom, QStringList son)
+{
+ for (int i = 0; i < son.size(); ++i) {
+ if (!mom.contains(son.at(i)))
+ return false;
+ }
+ return true;
+}
+
+void tst_QSettings::testArrays_data()
+{
+ populateWithFormats();
+}
+
+/*
+ Tests beginReadArray(), beginWriteArray(), endArray(), and
+ setArrayIndex().
+*/
+void tst_QSettings::testArrays()
+{
+ QFETCH(QSettings::Format, format);
+
+ {
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+
+ settings1.beginWriteArray("foo/bar", 3);
+ settings1.setValue("bip", 1);
+ settings1.setArrayIndex(0);
+ settings1.setValue("ene", 2);
+ settings1.setValue("due", 3);
+ settings1.setValue("rike", 4);
+ settings1.setArrayIndex(1);
+ settings1.setValue("ene", 5);
+ settings1.setValue("due", 6);
+ settings1.setValue("rike", 7);
+ settings1.setArrayIndex(2);
+ settings1.setValue("ene", 8);
+ settings1.setValue("due", 9);
+ settings1.setValue("rike", 10);
+ settings1.endArray();
+
+ QStringList expectedList;
+ expectedList
+ << "foo/bar/bip"
+ << "foo/bar/size"
+ << "foo/bar/1/ene"
+ << "foo/bar/1/due"
+ << "foo/bar/1/rike"
+ << "foo/bar/2/ene"
+ << "foo/bar/2/due"
+ << "foo/bar/2/rike"
+ << "foo/bar/3/ene"
+ << "foo/bar/3/due"
+ << "foo/bar/3/rike";
+ expectedList.sort();
+
+ QStringList actualList = settings1.allKeys();
+ actualList.sort();
+ QVERIFY(containsSubList(actualList, expectedList));
+
+ QCOMPARE(settings1.value("/foo/bar/bip").toInt(), 1);
+ QCOMPARE(settings1.value("/foo/bar/1/ene").toInt(), 2);
+ QCOMPARE(settings1.value("/foo/bar/1/due").toInt(), 3);
+ QCOMPARE(settings1.value("/foo/bar/1/rike").toInt(), 4);
+ QCOMPARE(settings1.value("/foo/bar/2/ene").toInt(), 5);
+ QCOMPARE(settings1.value("/foo/bar/2/due").toInt(), 6);
+ QCOMPARE(settings1.value("/foo/bar/2/rike").toInt(), 7);
+ QCOMPARE(settings1.value("/foo/bar/3/ene").toInt(), 8);
+ QCOMPARE(settings1.value("/foo/bar/3/due").toInt(), 9);
+ QCOMPARE(settings1.value("/foo/bar/3/rike").toInt(), 10);
+
+ settings1.beginGroup("/foo");
+ int count = settings1.beginReadArray("bar");
+ QCOMPARE(count, 3);
+ QCOMPARE(settings1.value("bip").toInt(), 1);
+ settings1.setArrayIndex(0);
+ QCOMPARE(settings1.value("ene").toInt(), 2);
+ QCOMPARE(settings1.value("due").toInt(), 3);
+ QCOMPARE(settings1.value("rike").toInt(), 4);
+ QCOMPARE(settings1.allKeys().count(), 3);
+ settings1.setArrayIndex(1);
+ QCOMPARE(settings1.value("ene").toInt(), 5);
+ QCOMPARE(settings1.value("due").toInt(), 6);
+ QCOMPARE(settings1.value("rike").toInt(), 7);
+ QCOMPARE(settings1.allKeys().count(), 3);
+ settings1.setArrayIndex(2);
+ QCOMPARE(settings1.value("ene").toInt(), 8);
+ QCOMPARE(settings1.value("due").toInt(), 9);
+ QCOMPARE(settings1.value("rike").toInt(), 10);
+ QCOMPARE(settings1.allKeys().count(), 3);
+
+ settings1.endArray();
+ settings1.endGroup();
+ }
+ /*
+ Check that we get the arrays right when we load them again
+ */
+
+ {
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+
+ QStringList expectedList;
+ expectedList
+ << "foo/bar/bip"
+ << "foo/bar/size"
+ << "foo/bar/1/ene"
+ << "foo/bar/1/due"
+ << "foo/bar/1/rike"
+ << "foo/bar/2/ene"
+ << "foo/bar/2/due"
+ << "foo/bar/2/rike"
+ << "foo/bar/3/ene"
+ << "foo/bar/3/due"
+ << "foo/bar/3/rike";
+ expectedList.sort();
+
+ QStringList actualList = settings1.allKeys();
+ actualList.sort();
+ QVERIFY(containsSubList(actualList, expectedList));
+
+ QCOMPARE(settings1.value("/foo/bar/bip").toInt(), 1);
+ QCOMPARE(settings1.value("/foo/bar/1/ene").toInt(), 2);
+ QCOMPARE(settings1.value("/foo/bar/1/due").toInt(), 3);
+ QCOMPARE(settings1.value("/foo/bar/1/rike").toInt(), 4);
+ QCOMPARE(settings1.value("/foo/bar/2/ene").toInt(), 5);
+ QCOMPARE(settings1.value("/foo/bar/2/due").toInt(), 6);
+ QCOMPARE(settings1.value("/foo/bar/2/rike").toInt(), 7);
+ QCOMPARE(settings1.value("/foo/bar/3/ene").toInt(), 8);
+ QCOMPARE(settings1.value("/foo/bar/3/due").toInt(), 9);
+ QCOMPARE(settings1.value("/foo/bar/3/rike").toInt(), 10);
+
+ settings1.beginGroup("/foo");
+ int count = settings1.beginReadArray("bar");
+ QCOMPARE(count, 3);
+ QCOMPARE(settings1.value("bip").toInt(), 1);
+ settings1.setArrayIndex(0);
+ QCOMPARE(settings1.value("ene").toInt(), 2);
+ QCOMPARE(settings1.value("due").toInt(), 3);
+ QCOMPARE(settings1.value("rike").toInt(), 4);
+ QCOMPARE(settings1.allKeys().count(), 3);
+ settings1.setArrayIndex(1);
+ QCOMPARE(settings1.value("ene").toInt(), 5);
+ QCOMPARE(settings1.value("due").toInt(), 6);
+ QCOMPARE(settings1.value("rike").toInt(), 7);
+ QCOMPARE(settings1.allKeys().count(), 3);
+ settings1.setArrayIndex(2);
+ QCOMPARE(settings1.value("ene").toInt(), 8);
+ QCOMPARE(settings1.value("due").toInt(), 9);
+ QCOMPARE(settings1.value("rike").toInt(), 10);
+ QCOMPARE(settings1.allKeys().count(), 3);
+
+ settings1.endArray();
+ settings1.endGroup();
+ }
+ /*
+ This code generates lots of warnings, but that's on purpose.
+ Basically, we check that endGroup() can be used instead of
+ endArray() and vice versa. This is not documented, but this
+ is the behavior that we have chosen.
+ */
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ settings1.clear();
+ settings1.beginGroup("/alpha");
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.setArrayIndex(0);
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.setArrayIndex(1);
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.setArrayIndex(2);
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.beginGroup("/beta");
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.beginGroup("");
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.beginWriteArray("DO", 4);
+ QCOMPARE(settings1.value("size").toInt(), 4);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO"));
+ settings1.setArrayIndex(0);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/1"));
+ settings1.setArrayIndex(1);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2"));
+ settings1.beginGroup("1");
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
+ settings1.setArrayIndex(3);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
+ settings1.setArrayIndex(4);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
+ settings1.beginWriteArray("RE");
+ QVERIFY(!settings1.contains("size"));
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1/RE"));
+ settings1.setArrayIndex(0);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1/RE/1"));
+ settings1.setArrayIndex(1);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1/RE/2"));
+ settings1.endArray();
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
+ settings1.endArray();
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2"));
+ settings1.setArrayIndex(2);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/3"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.endArray();
+ QCOMPARE(settings1.group(), QString());
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+
+ /*
+ Now, let's make sure that things work well if an array
+ is spread across multiple files.
+ */
+ int i;
+
+ settings1.clear();
+ QSettings settings2(format, QSettings::UserScope, "software.org");
+
+ QStringList threeStrings;
+ threeStrings << "Uno" << "Dos" << "Tres";
+
+ QStringList fiveStrings;
+ fiveStrings << "alpha" << "beta" << "gamma" << "delta" << "epsilon";
+
+ settings1.beginWriteArray("strings");
+ for (i = threeStrings.size() - 1; i >= 0; --i) {
+ settings1.setArrayIndex(i);
+ settings1.setValue("fileName", threeStrings.at(i));
+ }
+ settings1.endArray();
+
+ settings2.beginWriteArray("strings");
+ for (i = fiveStrings.size() - 1; i >= 0; --i) {
+ settings2.setArrayIndex(i);
+ settings2.setValue("fileName", fiveStrings.at(i));
+ }
+ settings2.endArray();
+
+ int size1 = settings1.beginReadArray("strings");
+ QCOMPARE(size1, 3);
+ QCOMPARE(settings1.value("size").toInt(), 3);
+
+ for (i = 0; i < size1; ++i) {
+ settings1.setArrayIndex(i);
+ QString str = settings1.value("fileName").toString();
+ QCOMPARE(str, threeStrings.at(i));
+ }
+ settings1.endArray();
+
+ int size2 = settings2.beginReadArray("strings");
+ QCOMPARE(size2, 5);
+ QCOMPARE(settings2.value("size").toInt(), 5);
+
+ for (i = 0; i < size2; ++i) {
+ settings2.setArrayIndex(i);
+ QString str = settings2.value("fileName").toString();
+ QCOMPARE(str, fiveStrings.at(i));
+ }
+ settings2.endArray();
+
+ size1 = settings1.beginReadArray("strings");
+ QCOMPARE(size1, 3);
+
+ // accessing entries beyond the end of settings1 goes to settings2
+ for (i = size1; i < size2; ++i) {
+ settings1.setArrayIndex(i);
+ QString str = settings1.value("fileName").toString();
+ QCOMPARE(str, fiveStrings.at(i));
+ }
+ settings1.endArray();
+}
+
+#ifdef QT_BUILD_INTERNAL
+static QByteArray iniEscapedKey(const QString &str)
+{
+ QByteArray result;
+ QSettingsPrivate::iniEscapedKey(str, result);
+ return result;
+}
+
+static QString iniUnescapedKey(const QByteArray &ba)
+{
+ QString result;
+ QSettingsPrivate::iniUnescapedKey(ba, 0, ba.size(), result);
+ return result;
+}
+
+static QByteArray iniEscapedStringList(const QStringList &strList)
+{
+ QByteArray result;
+ QSettingsPrivate::iniEscapedStringList(strList, result, 0);
+ return result;
+}
+
+static QStringList iniUnescapedStringList(const QByteArray &ba)
+{
+ QStringList result;
+ QString str;
+#if QSETTINGS_P_H_VERSION >= 2
+ bool isStringList = QSettingsPrivate::iniUnescapedStringList(ba, 0, ba.size(), str, result
+#if QSETTINGS_P_H_VERSION >= 3
+ , 0
+#endif
+ );
+ if (!isStringList)
+ result = QStringList(str);
+#else
+ QStringList *strList = QSettingsPrivate::iniUnescapedStringList(ba, 0, ba.size(), str);
+ if (strList) {
+ result = *strList;
+ delete strList;
+ } else {
+ result = QStringList(str);
+ }
+#endif
+ return result;
+}
+#endif
+
+QString escapeWeirdChars(const QString &s)
+{
+ QString result;
+ bool escapeNextDigit = false;
+
+ for (int i = 0; i < s.length(); ++i) {
+ QChar c = s.at(i);
+ if (c.unicode() < ' ' || c.unicode() > '~'
+ || (escapeNextDigit && c.unicode() >= '0' && c.unicode() <= 'f')) {
+ result += QString("\\x%1").arg(c.unicode(), 0, 16);
+ escapeNextDigit = true;
+ } else {
+ result += c;
+ escapeNextDigit = false;
+ }
+ }
+
+ return result;
+}
+
+void tst_QSettings::testEscapes()
+{
+#ifdef QT_BUILD_INTERNAL
+ QSettings settings(QSettings::UserScope, "software.org", "KillerAPP");
+
+#define testEscapedKey(plainKey, escKey) \
+ QCOMPARE(iniEscapedKey(plainKey), QByteArray(escKey)); \
+ QCOMPARE(iniUnescapedKey(escKey), QString(plainKey));
+
+#define testUnescapedKey(escKey, plainKey, reescKey) \
+ QCOMPARE(iniUnescapedKey(escKey), QString(plainKey)); \
+ QCOMPARE(iniEscapedKey(plainKey), QByteArray(reescKey)); \
+ QCOMPARE(iniUnescapedKey(reescKey), QString(plainKey));
+
+#define testEscapedStringList(plainStrList, escStrList) \
+ { \
+ QStringList plainList(plainStrList); \
+ QByteArray escList(escStrList); \
+ QCOMPARE(iniEscapedStringList(plainList), escList); \
+ QCOMPARE(iniUnescapedStringList(escList), plainList); \
+ } \
+
+
+#define testUnescapedStringList(escStrList, plainStrList, reescStrList) \
+ { \
+ QStringList plainList(plainStrList); \
+ QByteArray escList(escStrList); \
+ QByteArray reescList(reescStrList); \
+ QCOMPARE(iniUnescapedStringList(escList), plainList); \
+ QCOMPARE(iniEscapedStringList(plainList), reescList); \
+ QCOMPARE(iniUnescapedStringList(reescList), plainList); \
+ } \
+
+
+#define testVariant(val, escStr, func) \
+ { \
+ QVariant v(val); \
+ QString s = QSettingsPrivate::variantToString(v); \
+ /*qDebug() << QString("testVariant(): reference=\"%1\" result=\"%2\"").arg(escStr).arg(s); */\
+ QCOMPARE(s, escStr); \
+ QCOMPARE(QVariant(QSettingsPrivate::stringToVariant(escStr)), v); \
+ QVERIFY(val == v.func()); \
+ }
+
+#define testBadEscape(escStr, vStr) \
+ { \
+ QVariant v = QSettingsPrivate::stringToVariant(QString(escStr)); \
+ QCOMPARE(v.toString(), QString(vStr)); \
+ }
+
+ testEscapedKey("", "");
+ testEscapedKey(" ", "%20");
+ testEscapedKey(" 0123 abcd ", "%200123%20abcd%20");
+ testEscapedKey("~!@#$%^&*()_+.-/\\=", "%7E%21%40%23%24%25%5E%26%2A%28%29_%2B.-\\%5C%3D");
+ testEscapedKey(QString() + QChar(0xabcd) + QChar(0x1234) + QChar(0x0081), "%UABCD%U1234%81");
+ testEscapedKey(QString() + QChar(0xFE) + QChar(0xFF) + QChar(0x100) + QChar(0x101), "%FE%FF%U0100%U0101");
+
+ testUnescapedKey("", "", "");
+ testUnescapedKey("%20", " ", "%20");
+ testUnescapedKey("/alpha/beta", "/alpha/beta", "\\alpha\\beta");
+ testUnescapedKey("\\alpha\\beta", "/alpha/beta", "\\alpha\\beta");
+ testUnescapedKey("%5Calpha%5Cbeta", "\\alpha\\beta", "%5Calpha%5Cbeta");
+ testUnescapedKey("%", "%", "%25");
+ testUnescapedKey("%f%!%%%%1x%x1%U%Uz%U123%U1234%1234%", QString("%f%!%%%%1x%x1%U%Uz%U123") + QChar(0x1234) + "\x12" + "34%",
+ "%25f%25%21%25%25%25%251x%25x1%25U%25Uz%25U123%U1234%1234%25");
+
+ testEscapedStringList("", "");
+ testEscapedStringList(" ", "\" \"");
+ testEscapedStringList(";", "\";\"");
+ testEscapedStringList(",", "\",\"");
+ testEscapedStringList("=", "\"=\"");
+ testEscapedStringList("abc-def", "abc-def");
+ testEscapedStringList(QChar(0) + QString("0"), "\\0\\x30");
+ testEscapedStringList("~!@#$%^&*()_+.-/\\=", "\"~!@#$%^&*()_+.-/\\\\=\"");
+ testEscapedStringList("~!@#$%^&*()_+.-/\\", "~!@#$%^&*()_+.-/\\\\");
+ testEscapedStringList(QString("\x7F") + "12aFz", "\\x7f\\x31\\x32\\x61\\x46z");
+ testEscapedStringList(QString(" \t\n\\n") + QChar(0x123) + QChar(0x4567), "\" \\t\\n\\\\n\\x123\\x4567\"");
+ testEscapedStringList(QString("\a\b\f\n\r\t\v'\"?\001\002\x03\x04"), "\\a\\b\\f\\n\\r\\t\\v'\\\"?\\x1\\x2\\x3\\x4");
+ testEscapedStringList(QStringList() << "," << ";" << "a" << "ab, \tc, d ", "\",\", \";\", a, \"ab, \\tc, d \"");
+
+ /*
+ Test .ini syntax that cannot be generated by QSettings (but can be entered by users).
+ */
+ testUnescapedStringList("", "", "");
+ testUnescapedStringList("\"\"", "", "");
+ testUnescapedStringList("\"abcdef\"", "abcdef", "abcdef");
+ testUnescapedStringList("\"\\?\\'\\\"\"", "?'\"", "?'\\\"");
+ testUnescapedStringList("\\0\\00\\000\\0000000\\1\\111\\11111\\x\\x0\\xABCDEFGH\\x0123456\\",
+ QString() + QChar(0) + QChar(0) + QChar(0) + QChar(0) + QChar(1)
+ + QChar(0111) + QChar(011111) + QChar(0) + QChar(0xCDEF) + "GH"
+ + QChar(0x3456),
+ "\\0\\0\\0\\0\\x1I\\x1249\\0\\xcdefGH\\x3456");
+ testUnescapedStringList(QByteArray("\\c\\d\\e\\f\\g\\$\\*\\\0", 16), "\f", "\\f");
+ testUnescapedStringList("\"a\", \t\"bc \", \" d\" , \"ef \" ,,g, hi i,,, ,",
+ QStringList() << "a" << "bc " << " d" << "ef " << "" << "g" << "hi i"
+ << "" << "" << "" << "",
+ "a, \"bc \", \" d\", \"ef \", , g, hi i, , , , ");
+ testUnescapedStringList("a , b , c d , efg ",
+ QStringList() << "a" << "b" << "c d" << "efg",
+ "a, b, c d, efg");
+
+ // streaming qvariant into a string
+ testVariant(QString("Hello World!"), QString("Hello World!"), toString);
+ testVariant(QString("Hello, World!"), QString("Hello, World!"), toString);
+ testVariant(QString("@Hello World!"), QString("@@Hello World!"), toString);
+ testVariant(QString("@@Hello World!"), QString("@@@Hello World!"), toString);
+ testVariant(QByteArray("Hello World!"), QString("@ByteArray(Hello World!)"), toString);
+ testVariant(QByteArray("@Hello World!"), QString("@ByteArray(@Hello World!)"), toString);
+ testVariant(QVariant(100), QString("100"), toString);
+ testVariant(QStringList() << "ene" << "due" << "rike", QString::fromLatin1("@Variant(\x0\x0\x0\xb\x0\x0\x0\x3\x0\x0\x0\x6\x0\x65\x0n\x0\x65\x0\x0\x0\x6\x0\x64\x0u\x0\x65\x0\x0\x0\x8\x0r\x0i\x0k\x0\x65)", 50), toStringList);
+ testVariant(QRect(1, 2, 3, 4), QString("@Rect(1 2 3 4)"), toRect);
+ testVariant(QSize(5, 6), QString("@Size(5 6)"), toSize);
+ testVariant(QPoint(7, 8), QString("@Point(7 8)"), toPoint);
+
+ testBadEscape("", "");
+ testBadEscape("@", "@");
+ testBadEscape("@@", "@");
+ testBadEscape("@@@", "@@");
+ testBadEscape(" ", " ");
+ testBadEscape("@Rect", "@Rect");
+ testBadEscape("@Rect(", "@Rect(");
+ testBadEscape("@Rect()", "@Rect()");
+ testBadEscape("@Rect)", "@Rect)");
+ testBadEscape("@Rect(1 2 3)", "@Rect(1 2 3)");
+ testBadEscape("@@Rect(1 2 3)", "@Rect(1 2 3)");
+#endif
+}
+
+void tst_QSettings::testCaseSensitivity_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::testCaseSensitivity()
+{
+ QFETCH(QSettings::Format, format);
+
+ for (int pass = 0; pass < 2; ++pass) {
+ QSettings settings(format, QSettings::UserScope, "software.org", "KillerAPP");
+ settings.beginGroup("caseSensitivity");
+
+ bool cs = true;
+#ifndef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
+ switch (format) {
+ case QSettings::NativeFormat:
+#ifdef Q_OS_DARWIN
+ cs = true;
+#else
+ cs = false;
+#endif
+ break;
+ case QSettings::IniFormat:
+ cs = false;
+ break;
+ case QSettings::CustomFormat1:
+ cs = true;
+ break;
+ case QSettings::CustomFormat2:
+ cs = false;
+ break;
+ default:
+ ;
+ }
+#endif
+
+ if (pass == 0) {
+ settings.setValue("key 1", 1);
+ settings.setValue("KEY 1", 2);
+ settings.setValue("key 2", 3);
+ }
+
+ for (int i = 0; i < 2; ++i) {
+ QVERIFY(settings.contains("key 1"));
+ QVERIFY(settings.contains("KEY 1"));
+ QCOMPARE(settings.value("KEY 1").toInt(), 2);
+/* QVERIFY(settings.allKeys().contains("/KEY 1"));
+ QVERIFY(settings.allKeys().contains("/key 2")); */
+
+ if (cs) {
+ QVERIFY(!settings.contains("kEy 1"));
+ QCOMPARE(settings.value("key 1").toInt(), 1);
+ QCOMPARE(settings.allKeys().size(), 3);
+ QVERIFY(settings.allKeys().contains("key 1"));
+ } else {
+ QVERIFY(settings.contains("kEy 1"));
+ QCOMPARE(settings.value("kEy 1").toInt(), 2);
+ QCOMPARE(settings.value("key 1").toInt(), 2);
+ QCOMPARE(settings.allKeys().size(), 2);
+ }
+
+ settings.sync();
+ }
+
+ settings.remove("KeY 1");
+
+ if (cs) {
+ QVERIFY(!settings.contains("KeY 1"));
+ QVERIFY(settings.contains("key 1"));
+ QVERIFY(settings.contains("KEY 1"));
+ QCOMPARE(settings.value("key 1").toInt(), 1);
+ QCOMPARE(settings.value("KEY 1").toInt(), 2);
+ QCOMPARE(settings.allKeys().size(), 3);
+ } else {
+ QVERIFY(!settings.contains("KeY 1"));
+ QVERIFY(!settings.contains("key 1"));
+ QVERIFY(!settings.contains("KEY 1"));
+ QCOMPARE(settings.allKeys().size(), 1);
+ }
+ settings.setValue("KEY 1", 2);
+ }
+}
+
+void tst_QSettings::fileName()
+{
+#ifdef Q_OS_MAC
+ QSettings s1(QSettings::UserScope, "Apple", "Console");
+ QSettings s2(QSettings::UserScope, "Apple");
+ QSettings s3(QSettings::SystemScope, "Apple", "Console");
+ QSettings s4(QSettings::SystemScope, "Apple");
+
+ QCOMPARE(s1.fileName(), QDir::homePath() + "/Library/Preferences/com.apple.Console.plist");
+ QCOMPARE(s2.fileName(), QDir::homePath() + "/Library/Preferences/com.apple.plist");
+ QCOMPARE(s3.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
+ QCOMPARE(s4.fileName(), QString("/Library/Preferences/com.apple.plist"));
+
+ QSettings s5(QSettings::SystemScope, "Apple.com", "Console");
+ QCOMPARE(s5.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
+
+ QSettings s6(QSettings::SystemScope, "apple.com", "Console");
+ QCOMPARE(s6.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
+
+ QSettings s7(QSettings::SystemScope, "apple.Com", "Console");
+ QCOMPARE(s7.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
+
+ QSettings s8(QSettings::SystemScope, "apple.fr", "Console");
+ QCOMPARE(s8.fileName(), QString("/Library/Preferences/fr.apple.Console.plist"));
+
+ QSettings s9(QSettings::SystemScope, "apple.co.jp", "Console");
+ QCOMPARE(s9.fileName(), QString("/Library/Preferences/jp.co.apple.Console.plist"));
+
+ QSettings s10(QSettings::SystemScope, "apple.org", "Console");
+ QCOMPARE(s10.fileName(), QString("/Library/Preferences/org.apple.Console.plist"));
+
+ QSettings s11(QSettings::SystemScope, "apple.net", "Console");
+ QCOMPARE(s11.fileName(), QString("/Library/Preferences/net.apple.Console.plist"));
+
+ QSettings s12(QSettings::SystemScope, "apple.museum", "Console");
+ QCOMPARE(s12.fileName(), QString("/Library/Preferences/museum.apple.Console.plist"));
+
+ QSettings s13(QSettings::SystemScope, "apple.FR", "Console");
+ QCOMPARE(s13.fileName(), QString("/Library/Preferences/fr.apple.Console.plist"));
+
+ QSettings s14(QSettings::SystemScope, "apple.mUseum", "Console");
+ QCOMPARE(s14.fileName(), QString("/Library/Preferences/museum.apple.Console.plist"));
+
+ QSettings s15(QSettings::SystemScope, "apple.zz", "Console");
+ QCOMPARE(s15.fileName(), QString("/Library/Preferences/zz.apple.Console.plist"));
+
+ QSettings s15_prime(QSettings::SystemScope, "apple.foo", "Console");
+ QCOMPARE(s15_prime.fileName(), QString("/Library/Preferences/com.apple-foo.Console.plist"));
+
+ QSettings s16(QSettings::SystemScope, "apple.f", "Console");
+ QCOMPARE(s16.fileName(), QString("/Library/Preferences/com.apple-f.Console.plist"));
+
+ QSettings s17(QSettings::SystemScope, "apple.", "Console");
+ QCOMPARE(s17.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
+
+ QSettings s18(QSettings::SystemScope, "Foo, Inc.", "Console");
+ QCOMPARE(s18.fileName(), QString("/Library/Preferences/com.foo-inc.Console.plist"));
+
+ QSettings s19(QSettings::SystemScope, "Foo, Inc.com", "Console");
+ QCOMPARE(s19.fileName(), QString("/Library/Preferences/com.foo, inc.Console.plist"));
+
+ QSettings s20(QSettings::SystemScope, QLatin1String(" ") + QChar(0xbd) + QLatin1String("Foo//:/Barxxx Baz!()#@.com"), "Console");
+ QCOMPARE(s20.fileName(), QLatin1String("/Library/Preferences/com. ") + QChar(0xbd) + QLatin1String("foo : barxxx baz!()#@.Console.plist"));
+
+ QSettings s21(QSettings::SystemScope, QLatin1String(" ") + QChar(0xbd) + QLatin1String("Foo//:/Bar,,, Baz!()#"), "Console");
+ QCOMPARE(s21.fileName(), QString("/Library/Preferences/com.foo-bar-baz.Console.plist"));
+#else
+ QSKIP("Please write a fileName() test for the other platforms", SkipAll);
+#endif
+}
+
+void tst_QSettings::isWritable_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::isWritable()
+{
+ QFETCH(QSettings::Format, format);
+
+ {
+ QSettings s1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ s1.setValue("foo", 1);
+ s1.sync();
+ // that should create the file
+ }
+
+ {
+ QSettings s1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QVERIFY(s1.isWritable());
+ }
+
+ {
+ QSettings s1(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ s1.setValue("foo", 1);
+ s1.sync();
+ // that should create the file, *if* we have the permissions
+ }
+
+ {
+ QSettings s1(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings s2(format, QSettings::SystemScope, "software.org", "Something Different");
+ QSettings s3(format, QSettings::SystemScope, "foo.org", "Something Different");
+ if (s1.contains("foo")) {
+ QVERIFY(s1.isWritable());
+ QVERIFY(s2.isWritable());
+ QVERIFY(s3.isWritable());
+ } else {
+ QVERIFY(!s1.isWritable());
+ QVERIFY(!s2.isWritable());
+ QVERIFY(!s3.isWritable());
+ }
+ }
+}
+
+void tst_QSettings::childGroups_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::childGroups()
+{
+#ifdef QT_BUILD_INTERNAL
+ QFETCH(QSettings::Format, format);
+
+ {
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ settings.setValue("alpha", "1");
+ settings.setValue("alpha/a", "2");
+ settings.setValue("alpha/b", "3");
+ settings.setValue("alpha/c", "4");
+ settings.setValue("beta", "5");
+ settings.setValue("gamma", "6");
+ settings.setValue("gamma/d", "7");
+ settings.setValue("gamma/d/e", "8");
+ settings.setValue("gamma/f/g", "9");
+ settings.setValue("omicron/h/i/j/x", "10");
+ settings.setValue("omicron/h/i/k/y", "11");
+ settings.setValue("zeta/z", "12");
+ }
+
+ for (int pass = 0; pass < 3; ++pass) {
+ QConfFile::clearCache();
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ settings.setFallbacksEnabled(false);
+ if (pass == 1) {
+ settings.value("gamma/d");
+ } else if (pass == 2) {
+ settings.value("gamma");
+ }
+
+ settings.beginGroup("gamma");
+ QCOMPARE(settings.childGroups(), QStringList() << "d" << "f");
+ settings.beginGroup("d");
+ QCOMPARE(settings.childGroups(), QStringList());
+ settings.endGroup();
+ settings.endGroup();
+
+ settings.beginGroup("alpha");
+ QCOMPARE(settings.childGroups(), QStringList());
+ settings.endGroup();
+
+ settings.beginGroup("d");
+ QCOMPARE(settings.childGroups(), QStringList());
+ settings.endGroup();
+
+ settings.beginGroup("/omicron///h/i///");
+ QCOMPARE(settings.childGroups(), QStringList() << "j" << "k");
+ settings.endGroup();
+
+ settings.beginGroup("////");
+ QCOMPARE(settings.childGroups(), QStringList() << "alpha" << "gamma" << "omicron" << "zeta");
+ settings.endGroup();
+
+ QCOMPARE(settings.childGroups(), QStringList() << "alpha" << "gamma" << "omicron" << "zeta");
+ }
+#endif
+}
+
+void tst_QSettings::childKeys_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::childKeys()
+{
+#ifdef QT_BUILD_INTERNAL
+ QFETCH(QSettings::Format, format);
+
+ {
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ settings.setValue("alpha", "1");
+ settings.setValue("alpha/a", "2");
+ settings.setValue("alpha/b", "3");
+ settings.setValue("alpha/c", "4");
+ settings.setValue("beta", "5");
+ settings.setValue("gamma", "6");
+ settings.setValue("gamma/d", "7");
+ settings.setValue("gamma/d/e", "8");
+ settings.setValue("gamma/f/g", "9");
+ settings.setValue("omicron/h/i/j/x", "10");
+ settings.setValue("omicron/h/i/k/y", "11");
+ settings.setValue("zeta/z", "12");
+ }
+
+ for (int pass = 0; pass < 3; ++pass) {
+ QConfFile::clearCache();
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ settings.setFallbacksEnabled(false);
+ if (pass == 1) {
+ settings.value("gamma/d");
+ } else if (pass == 2) {
+ settings.value("gamma");
+ }
+
+ settings.beginGroup("gamma");
+ QCOMPARE(settings.childKeys(), QStringList() << "d");
+ settings.beginGroup("d");
+ QCOMPARE(settings.childKeys(), QStringList() << "e");
+ settings.endGroup();
+ settings.endGroup();
+
+ settings.beginGroup("alpha");
+ QCOMPARE(settings.childKeys(), QStringList() << "a" << "b" << "c");
+ settings.endGroup();
+
+ settings.beginGroup("d");
+ QCOMPARE(settings.childKeys(), QStringList());
+ settings.endGroup();
+
+ settings.beginGroup("/omicron///h/i///");
+ QCOMPARE(settings.childKeys(), QStringList());
+ settings.endGroup();
+
+ settings.beginGroup("////");
+ QCOMPARE(settings.childKeys(), QStringList() << "alpha" << "beta" << "gamma");
+ settings.endGroup();
+
+ QCOMPARE(settings.childKeys(), QStringList() << "alpha" << "beta" << "gamma");
+ }
+#endif
+}
+
+void tst_QSettings::allKeys_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::allKeys()
+{
+#ifdef QT_BUILD_INTERNAL
+ QFETCH(QSettings::Format, format);
+
+ QStringList allKeys;
+ allKeys << "alpha" << "alpha/a" << "alpha/b" << "alpha/c" << "beta" << "gamma" << "gamma/d"
+ << "gamma/d/e" << "gamma/f/g" << "omicron/h/i/j/x" << "omicron/h/i/k/y" << "zeta/z";
+
+ {
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ for (int i = 0; i < allKeys.size(); ++i)
+ settings.setValue(allKeys.at(i), QString::number(i + 1));
+ }
+
+ for (int pass = 0; pass < 3; ++pass) {
+ QConfFile::clearCache();
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ settings.setFallbacksEnabled(false);
+
+ if (pass == 1) {
+ settings.value("gamma/d");
+ } else if (pass == 2) {
+ settings.value("gamma");
+ }
+
+ settings.beginGroup("gamma");
+ QCOMPARE(settings.allKeys(), QStringList() << "d" << "d/e" << "f/g");
+ settings.beginGroup("d");
+ QCOMPARE(settings.allKeys(), QStringList() << "e");
+ settings.endGroup();
+ settings.endGroup();
+
+ settings.beginGroup("alpha");
+ QCOMPARE(settings.allKeys(), QStringList() << "a" << "b" << "c");
+ settings.endGroup();
+
+ settings.beginGroup("d");
+ QCOMPARE(settings.allKeys(), QStringList());
+ settings.endGroup();
+
+ settings.beginGroup("/omicron///h/i///");
+ QCOMPARE(settings.allKeys(), QStringList() << "j/x" << "k/y");
+ settings.endGroup();
+
+ settings.beginGroup("////");
+ QCOMPARE(settings.allKeys(), allKeys);
+ settings.endGroup();
+
+ QCOMPARE(settings.allKeys(), allKeys);
+ }
+#endif
+}
+
+void tst_QSettings::registerFormat()
+{
+ QSettings settings1(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(QSettings::CustomFormat1, QSettings::UserScope, "software.org", "KillerAPP");
+
+ QString fileName = settings1.fileName();
+ fileName.chop(3); // "ini";
+ fileName.append("custom1");
+ QCOMPARE(settings2.fileName(), fileName);
+
+ // OK, let's see if it can read a generated file of a custom type
+ // Beware: readCustom3File() and writeCustom3File() have unintuitive behavior
+ // so we can test error handling
+
+ QSettings::Format custom3 = QSettings::registerFormat("custom3", readCustom3File, writeCustom3File);
+ QVERIFY(custom3 == QSettings::CustomFormat3);
+
+ QDir dir(settingsPath());
+ QVERIFY(dir.mkpath("someDir"));
+ QFile f(dir.path()+"/someDir/someSettings.custom3");
+
+ QVERIFY(f.open(QFile::WriteOnly));
+ f.write("OK");
+ f.close();
+
+ {
+ QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat3);
+ QCOMPARE(settings.status(), QSettings::NoError);
+ QCOMPARE(settings.value("retval").toString(), QString("OK"));
+ QVERIFY(settings.isWritable());
+ }
+
+ QVERIFY(f.open(QFile::WriteOnly));
+ f.write("NotOK");
+ f.close();
+
+ {
+ QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat3);
+ QCOMPARE(settings.status(), QSettings::FormatError);
+ QCOMPARE(settings.value("retval").toString(), QString());
+ QVERIFY(settings.isWritable());
+ }
+
+ QVERIFY(f.open(QFile::WriteOnly));
+ f.write("OK");
+ f.close();
+
+ {
+ QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat3);
+ QCOMPARE(settings.status(), QSettings::NoError);
+ settings.setValue("zzz", "bar");
+ settings.sync();
+ QCOMPARE(settings.status(), QSettings::NoError);
+
+ settings.setValue("retval", "NotOK");
+ settings.sync();
+ QCOMPARE(settings.status(), QSettings::AccessError);
+
+ QCOMPARE(settings.value("retval").toString(), QString("NotOK"));
+ QVERIFY(settings.isWritable());
+ }
+
+ {
+ QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat4);
+ QCOMPARE(settings.status(), QSettings::AccessError);
+ QVERIFY(!settings.isWritable());
+ }
+}
+
+void tst_QSettings::setPath()
+{
+#define TEST_PATH(doSet, ext, format, scope, path) \
+ { \
+ if (doSet) \
+ QSettings::setPath(QSettings::format, QSettings::scope, settingsPath(path)); \
+ QSettings settings1(QSettings::format, QSettings::scope, "software.org", "KillerAPP"); \
+ QCOMPARE(QDir(settings1.fileName()), QDir(settingsPath(path) + QDir::separator() + "software.org" \
+ + QDir::separator() + "KillerAPP." + ext)); \
+ }
+
+ /*
+ The first pass checks that setPath() works; the second
+ path checks that it has no bad side effects.
+ */
+ for (int i = 0; i < 2; ++i) {
+#if !defined(Q_OS_WIN) && !defined(Q_OS_MAC)
+ TEST_PATH(i == 0, "conf", NativeFormat, UserScope, "alpha")
+ TEST_PATH(i == 0, "conf", NativeFormat, SystemScope, "beta")
+#endif
+ TEST_PATH(i == 0, "ini", IniFormat, UserScope, "gamma")
+ TEST_PATH(i == 0, "ini", IniFormat, SystemScope, "omicron")
+ TEST_PATH(i == 0, "custom1", CustomFormat1, UserScope, "epsilon")
+ TEST_PATH(i == 0, "custom1", CustomFormat1, SystemScope, "zeta")
+ TEST_PATH(i == 0, "custom2", CustomFormat2, UserScope, "eta")
+ TEST_PATH(i == 0, "custom2", CustomFormat2, SystemScope, "iota")
+ }
+}
+
+void tst_QSettings::setDefaultFormat()
+{
+ QVERIFY(QSettings::defaultFormat() == QSettings::NativeFormat);
+
+ QSettings::setDefaultFormat(QSettings::CustomFormat1);
+ QSettings settings1("org", "app");
+ QSettings settings2(QSettings::SystemScope, "org", "app");
+ QSettings settings3;
+
+ QVERIFY(settings1.format() == QSettings::NativeFormat);
+ QVERIFY(settings2.format() == QSettings::NativeFormat);
+ QVERIFY(settings3.format() == QSettings::CustomFormat1);
+
+ QSettings::setDefaultFormat(QSettings::NativeFormat);
+ QVERIFY(QSettings::defaultFormat() == QSettings::NativeFormat);
+
+ QVERIFY(settings1.format() == QSettings::NativeFormat);
+ QVERIFY(settings2.format() == QSettings::NativeFormat);
+ QVERIFY(settings3.format() == QSettings::CustomFormat1);
+}
+
+void tst_QSettings::dontCreateNeedlessPaths()
+{
+ QString path;
+ {
+ QSettings settings(QSettings::IniFormat, QSettings::UserScope, "Hello", "Test");
+ QVariant val = settings.value("foo", "bar");
+ path = settings.fileName();
+ }
+
+ QFileInfo fileInfo(path);
+ QVERIFY(!fileInfo.dir().exists());
+}
+
+#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+void tst_QSettings::dontReorderIniKeysNeedlessly()
+{
+#ifdef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
+ QSKIP("This Qt build does not preserve ordering, as a code size optimization.", SkipAll);
+#endif
+
+ /*
+ This is a very strong test. It asserts that modifying
+ resourcefile2.ini will lead to the exact contents of
+ resourcefile3.ini. Right now it's run only on Unix
+ systems, but that should be enough since the INI
+ code (unlike this test) is platform-agnostic.
+
+ Things that are tested:
+
+ * keys are written in the same order that they were
+ read in
+
+ * new keys are put at the end of their respective
+ sections
+ */
+
+ QFile inFile(":/resourcefile2.ini");
+ inFile.open(QIODevice::ReadOnly);
+ QByteArray contentsBefore = inFile.readAll();
+ inFile.close();
+
+ QByteArray expectedContentsAfter;
+
+ {
+ QFile inFile(":/resourcefile3.ini");
+ inFile.open(QIODevice::ReadOnly);
+ expectedContentsAfter = inFile.readAll();
+ inFile.close();
+ }
+
+ QString outFileName;
+ QString outFileName2;
+
+ QTemporaryFile outFile;
+ outFile.open();
+ outFile.write(contentsBefore);
+ outFileName = outFile.fileName();
+ outFile.close();
+
+ QSettings settings(outFileName, QSettings::IniFormat);
+ QVERIFY(settings.status() == QSettings::NoError);
+ QVERIFY(settings.isWritable());
+
+ settings.setValue("Field 1/Bottom", 90);
+ settings.setValue("Field 1/x", 1);
+ settings.setValue("Field 1/y", 1);
+ settings.setValue("Field 1/width", 1);
+ settings.setValue("Field 1/height", 1);
+ settings.sync();
+
+ QFile outFile2(outFileName);
+ QVERIFY(outFile2.open(QIODevice::ReadOnly));
+ QCOMPARE(outFile2.readAll(), expectedContentsAfter);
+ outFile2.close();
+}
+#endif
+
+void tst_QSettings::rainersSyncBugOnMac_data()
+{
+ ctor_data();
+}
+
+void tst_QSettings::rainersSyncBugOnMac()
+{
+ QFETCH(QSettings::Format, format);
+
+ QString fileName;
+
+ {
+ QSettings s1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QCOMPARE(s1.value("key1", 5).toInt(), 5);
+ fileName = s1.fileName();
+ }
+
+ {
+ QSettings s2(fileName, format);
+ s2.setValue("key1", 25);
+ }
+
+ {
+ QSettings s3(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QCOMPARE(s3.value("key1", 30).toInt(), 25);
+ }
+}
+
+void tst_QSettings::recursionBug()
+{
+ QPixmap pix(10,10);
+ pix.fill("blue");
+
+ {
+ QSettings settings(settingsPath("starrunner.ini"), QSettings::IniFormat);
+ settings.setValue("General/Pixmap", pix );
+ }
+}
+
+#if defined(Q_OS_WIN)
+
+static DWORD readKeyType(HKEY handle, const QString &rSubKey)
+{
+ DWORD dataType;
+ DWORD dataSize;
+ LONG res = RegQueryValueEx(handle, reinterpret_cast<const wchar_t *>(rSubKey.utf16()), 0, &dataType, 0, &dataSize);
+
+ if (res == ERROR_SUCCESS)
+ return dataType;
+
+ return 0;
+}
+
+void tst_QSettings::qtbug_13249()
+{
+ QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
+
+ qint32 x = 1024;
+ settings1.setValue("qtbug_13249_a", (qint32)x);
+ QCOMPARE(settings1.value("qtbug_13249_a").toInt(), (qint32)1024);
+ settings1.setValue("qtbug_13249_b", (quint32)x);
+ QCOMPARE(settings1.value("qtbug_13249_b").toUInt(), (quint32)1024);
+ settings1.setValue("qtbug_13249_c", (qint64)x);
+ QCOMPARE(settings1.value("qtbug_13249_c").toLongLong(), (qint64)1024);
+ settings1.setValue("qtbug_13249_d", (quint64)x);
+ QCOMPARE(settings1.value("qtbug_13249_d").toULongLong(), (quint64)1024);
+ settings1.sync();
+
+ HKEY handle;
+ LONG res;
+ QString keyName = "Software\\software.org\\KillerAPP";
+ res = RegOpenKeyEx(HKEY_CURRENT_USER, reinterpret_cast<const wchar_t *>(keyName.utf16()), 0, KEY_READ, &handle);
+ if (res == ERROR_SUCCESS)
+ {
+ DWORD dataType;
+ dataType = readKeyType(handle, QString("qtbug_13249_a"));
+ if (dataType != 0) {
+ QCOMPARE((int)REG_DWORD, (int)dataType);
+ }
+ dataType = readKeyType(handle, QString("qtbug_13249_b"));
+ if (dataType != 0) {
+ QCOMPARE((int)REG_DWORD, (int)dataType);
+ }
+ dataType = readKeyType(handle, QString("qtbug_13249_c"));
+ if (dataType != 0) {
+ QCOMPARE((int)REG_QWORD, (int)dataType);
+ }
+ dataType = readKeyType(handle, QString("qtbug_13249_d"));
+ if (dataType != 0) {
+ QCOMPARE((int)REG_QWORD, (int)dataType);
+ }
+ RegCloseKey(handle);
+ }
+}
+#endif
+/*
+// Not tested at the moment.
+void tst_QSettings::oldSubkeyList()
+{
+ QVERIFY( TRUE );
+}
+*/
+
+QTEST_MAIN(tst_QSettings)
+#include "tst_qsettings.moc"
+
+
+// foo
diff --git a/tests/auto/qtemporaryfile/.gitignore b/tests/auto/corelib/io/qtemporaryfile/.gitignore
index 67cb8bf69e..67cb8bf69e 100644
--- a/tests/auto/qtemporaryfile/.gitignore
+++ b/tests/auto/corelib/io/qtemporaryfile/.gitignore
diff --git a/tests/auto/qtemporaryfile/qtemporaryfile.pro b/tests/auto/corelib/io/qtemporaryfile/qtemporaryfile.pro
index 64a043b19a..64a043b19a 100644
--- a/tests/auto/qtemporaryfile/qtemporaryfile.pro
+++ b/tests/auto/corelib/io/qtemporaryfile/qtemporaryfile.pro
diff --git a/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp b/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
index 2edb93aee2..2edb93aee2 100644
--- a/tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp
+++ b/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
diff --git a/tests/auto/qtextstream/.gitattributes b/tests/auto/corelib/io/qtextstream/.gitattributes
index eb78a3cecf..eb78a3cecf 100644
--- a/tests/auto/qtextstream/.gitattributes
+++ b/tests/auto/corelib/io/qtextstream/.gitattributes
diff --git a/tests/auto/qtextstream/.gitignore b/tests/auto/corelib/io/qtextstream/.gitignore
index 01f26ae749..01f26ae749 100644
--- a/tests/auto/qtextstream/.gitignore
+++ b/tests/auto/corelib/io/qtextstream/.gitignore
diff --git a/tests/auto/qtextstream/qtextstream.pro b/tests/auto/corelib/io/qtextstream/qtextstream.pro
index a2dcc8108d..a2dcc8108d 100644
--- a/tests/auto/qtextstream/qtextstream.pro
+++ b/tests/auto/corelib/io/qtextstream/qtextstream.pro
diff --git a/tests/auto/qtextstream/qtextstream.qrc b/tests/auto/corelib/io/qtextstream/qtextstream.qrc
index a750e35d4a..a750e35d4a 100644
--- a/tests/auto/qtextstream/qtextstream.qrc
+++ b/tests/auto/corelib/io/qtextstream/qtextstream.qrc
diff --git a/tests/auto/qtextstream/readAllStdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp
index ca541d053a..ca541d053a 100644
--- a/tests/auto/qtextstream/readAllStdinProcess/main.cpp
+++ b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp
diff --git a/tests/auto/qtextstream/readAllStdinProcess/readAllStdinProcess.pro b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/readAllStdinProcess.pro
index 9cf4d19387..9cf4d19387 100644
--- a/tests/auto/qtextstream/readAllStdinProcess/readAllStdinProcess.pro
+++ b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/readAllStdinProcess.pro
diff --git a/tests/auto/qtextstream/readLineStdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp
index d8d2eed000..d8d2eed000 100644
--- a/tests/auto/qtextstream/readLineStdinProcess/main.cpp
+++ b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp
diff --git a/tests/auto/qtextstream/readLineStdinProcess/readLineStdinProcess.pro b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/readLineStdinProcess.pro
index 9cf4d19387..9cf4d19387 100644
--- a/tests/auto/qtextstream/readLineStdinProcess/readLineStdinProcess.pro
+++ b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/readLineStdinProcess.pro
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data
index 849ecb39ed..849ecb39ed 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data
index 8b9647f06f..8b9647f06f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data
index d73722e724..d73722e724 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data
index e2df5e2ee7..e2df5e2ee7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data
index e2df5e2ee7..e2df5e2ee7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data
index fcb209d377..fcb209d377 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data
index 7939963f78..7939963f78 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data
index d155ca2863..d155ca2863 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data
index 46b134b197..46b134b197 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data
index 46b134b197..46b134b197 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data
index 104e45f940..104e45f940 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data
index 3135276780..3135276780 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data
index 993d0b9e19..993d0b9e19 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data
index e2df5e2ee7..e2df5e2ee7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data
index e2df5e2ee7..e2df5e2ee7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data
index fcb209d377..fcb209d377 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data
index 7939963f78..7939963f78 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data
index d155ca2863..d155ca2863 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data
index fa7af8bf5f..fa7af8bf5f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data
index b516b2c489..b516b2c489 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data
index fa7af8bf5f..fa7af8bf5f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data
index b516b2c489..b516b2c489 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data
index 6def16c99e..6def16c99e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data
index 57302ad8e7..57302ad8e7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data
index 239c14d498..239c14d498 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data
index 8fbd3327c8..8fbd3327c8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data
index d745e1be7b..d745e1be7b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data
index db52135603..db52135603 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data
index 0a4ca93c16..0a4ca93c16 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data
index e7c7d5a76b..e7c7d5a76b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data
index 7501b59181..7501b59181 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data
index 1565aaa95f..1565aaa95f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data
index 9ac3ad9a6b..9ac3ad9a6b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data
index bb28df16b9..bb28df16b9 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data
index 8c0f57437b..8c0f57437b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data
index d494004e64..d494004e64 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data
index de421979ea..de421979ea 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data
index fa7af8bf5f..fa7af8bf5f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data
index b516b2c489..b516b2c489 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data
index db52135603..db52135603 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data
index 0a4ca93c16..0a4ca93c16 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data
index e7c7d5a76b..e7c7d5a76b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data
index 7501b59181..7501b59181 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data
index 1565aaa95f..1565aaa95f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data
index 849ecb39ed..849ecb39ed 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data
index 8b9647f06f..8b9647f06f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data
index d73722e724..d73722e724 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data
index e2df5e2ee7..e2df5e2ee7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data
index e2df5e2ee7..e2df5e2ee7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data
index fcb209d377..fcb209d377 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data
index 7939963f78..7939963f78 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data
index d155ca2863..d155ca2863 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data
index 104e45f940..104e45f940 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data
index 3135276780..3135276780 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data
index 993d0b9e19..993d0b9e19 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data
index e2df5e2ee7..e2df5e2ee7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data
index e2df5e2ee7..e2df5e2ee7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data
index fcb209d377..fcb209d377 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data
index 7939963f78..7939963f78 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data
index d155ca2863..d155ca2863 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data
index 9280c0d31d..9280c0d31d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data
index c227083464..c227083464 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data
index 9280c0d31d..9280c0d31d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data
index c227083464..c227083464 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data
index 6def16c99e..6def16c99e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data
index 57302ad8e7..57302ad8e7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data
index 239c14d498..239c14d498 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data
index 819b31d1f2..819b31d1f2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data
index a6ff072af1..a6ff072af1 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data
index db52135603..db52135603 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data
index 0a4ca93c16..0a4ca93c16 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data
index e7c7d5a76b..e7c7d5a76b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data
index bf9cec8ea7..bf9cec8ea7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data
index ec4665f7ff..ec4665f7ff 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data
index 9ac3ad9a6b..9ac3ad9a6b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data
index bb28df16b9..bb28df16b9 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data
index 8c0f57437b..8c0f57437b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data
index 878dc8a26e..878dc8a26e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data
index fd0779e0f3..fd0779e0f3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data
index 9280c0d31d..9280c0d31d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data
index c227083464..c227083464 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data
index db52135603..db52135603 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data
index 0a4ca93c16..0a4ca93c16 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data
index e7c7d5a76b..e7c7d5a76b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data
index bf9cec8ea7..bf9cec8ea7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data
index ec4665f7ff..ec4665f7ff 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data
index 80aed3622e..80aed3622e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data
index aec027753d..aec027753d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data
index 80aed3622e..80aed3622e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data
index aec027753d..aec027753d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data
index feac21f921..feac21f921 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data
index 67ce8d83c8..67ce8d83c8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data
index 9662a9aaa1..9662a9aaa1 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data
index a74511b101..a74511b101 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data
index bdc06a6ec2..bdc06a6ec2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data
index 79b15d4d8a..79b15d4d8a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data
index 2141e65843..2141e65843 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data
index 61cc689e1e..61cc689e1e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data
index cf914bc67e..cf914bc67e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data
index 5e08ff706a..5e08ff706a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data
index b6f4541bb8..b6f4541bb8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data
index f4a50d829a..f4a50d829a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data
index 2d8f67152c..2d8f67152c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data
index e6b94bbeb3..e6b94bbeb3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data
index fb0a550264..fb0a550264 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data
index 48fe53930f..48fe53930f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data
index 811e93212d..811e93212d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data
index 7041fa9b4d..7041fa9b4d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data
index 9fd21fade0..9fd21fade0 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data
index 80aed3622e..80aed3622e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data
index aec027753d..aec027753d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data
index 61cc689e1e..61cc689e1e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data
index cf914bc67e..cf914bc67e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data
index 5e08ff706a..5e08ff706a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data
index b6f4541bb8..b6f4541bb8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data
index f4a50d829a..f4a50d829a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data
index 2d8f67152c..2d8f67152c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data
index feac21f921..feac21f921 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data
index 67ce8d83c8..67ce8d83c8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data
index 9662a9aaa1..9662a9aaa1 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data
index a74511b101..a74511b101 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data
index bdc06a6ec2..bdc06a6ec2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data
index 61cc689e1e..61cc689e1e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data
index cf914bc67e..cf914bc67e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data
index 5e08ff706a..5e08ff706a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data
index b6f4541bb8..b6f4541bb8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data
index e6b94bbeb3..e6b94bbeb3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data
index fb0a550264..fb0a550264 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data
index 48fe53930f..48fe53930f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data
index 811e93212d..811e93212d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data
index 61cc689e1e..61cc689e1e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data
index cf914bc67e..cf914bc67e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data
index 5e08ff706a..5e08ff706a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data
index b6f4541bb8..b6f4541bb8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data
index f4aefab396..f4aefab396 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data
index f4aefab396..f4aefab396 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data
index feac21f921..feac21f921 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data
index 815d4fc7db..815d4fc7db 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data
index c933a04c07..c933a04c07 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data
index 69de5ef2bd..69de5ef2bd 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data
index c45139955a..c45139955a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data
index 396352f4d6..396352f4d6 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data
index ea73fac731..ea73fac731 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data
index 1f4f1a58de..1f4f1a58de 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data
index 9469ca407f..9469ca407f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data
index 9a9a22daef..9a9a22daef 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data
index c52b277d9c..c52b277d9c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data
index 18c3344c26..18c3344c26 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data
index 5193701ae3..5193701ae3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data
index fab38d24ef..fab38d24ef 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data
index f5a0d874d4..f5a0d874d4 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data
index 95742ec8f2..95742ec8f2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data
index ebb14b2fbd..ebb14b2fbd 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data
index a9e1432ca9..a9e1432ca9 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data
index b7e6743c28..b7e6743c28 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data
index f4aefab396..f4aefab396 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data
index 9a9a22daef..9a9a22daef 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data
index c52b277d9c..c52b277d9c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data
index 18c3344c26..18c3344c26 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data
index 5193701ae3..5193701ae3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data
index fab38d24ef..fab38d24ef 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data
index cab2ee4938..cab2ee4938 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data
index cab2ee4938..cab2ee4938 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data
index feac21f921..feac21f921 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data
index 815d4fc7db..815d4fc7db 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data
index c933a04c07..c933a04c07 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data
index 69de5ef2bd..69de5ef2bd 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data
index 40269f4e0c..40269f4e0c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data
index 396352f4d6..396352f4d6 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data
index ea73fac731..ea73fac731 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data
index 1f4f1a58de..1f4f1a58de 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data
index e8051f8906..e8051f8906 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data
index e50e2d02a9..e50e2d02a9 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data
index c52b277d9c..c52b277d9c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data
index 18c3344c26..18c3344c26 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data
index 5193701ae3..5193701ae3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data
index 5a9cb07f57..5a9cb07f57 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data
index e20c76a82c..e20c76a82c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data
index 95742ec8f2..95742ec8f2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data
index ebb14b2fbd..ebb14b2fbd 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data
index a9e1432ca9..a9e1432ca9 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data
index f8ec5bc443..f8ec5bc443 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data
index cab2ee4938..cab2ee4938 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data
index e50e2d02a9..e50e2d02a9 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data
index c52b277d9c..c52b277d9c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data
index 18c3344c26..18c3344c26 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data
index 5193701ae3..5193701ae3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data
index 5a9cb07f57..5a9cb07f57 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data
index 02b7f3ab7b..02b7f3ab7b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data
index 02b7f3ab7b..02b7f3ab7b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data
index feac21f921..feac21f921 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data
index 396352f4d6..396352f4d6 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data
index 815d4fc7db..815d4fc7db 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data
index 69de5ef2bd..69de5ef2bd 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data
index 0dc83d2713..0dc83d2713 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data
index c52b277d9c..c52b277d9c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data
index b951b56531..b951b56531 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data
index 95742ec8f2..95742ec8f2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data
index 80d3ca2ef1..80d3ca2ef1 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data
index 02b7f3ab7b..02b7f3ab7b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data
index c52b277d9c..c52b277d9c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data
index b951b56531..b951b56531 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data
index feac21f921..feac21f921 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data
index 815d4fc7db..815d4fc7db 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data
index c933a04c07..c933a04c07 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data
index 69de5ef2bd..69de5ef2bd 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data
index c45139955a..c45139955a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data
index 9a9a22daef..9a9a22daef 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data
index f5a0d874d4..f5a0d874d4 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data
index 9a9a22daef..9a9a22daef 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data
index feac21f921..feac21f921 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data
index 815d4fc7db..815d4fc7db 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data
index c933a04c07..c933a04c07 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data
index 69de5ef2bd..69de5ef2bd 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data
index 40269f4e0c..40269f4e0c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data
index e50e2d02a9..e50e2d02a9 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data
index e20c76a82c..e20c76a82c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data
index e50e2d02a9..e50e2d02a9 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data
index feac21f921..feac21f921 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data
index 815d4fc7db..815d4fc7db 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data
index c933a04c07..c933a04c07 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data
index 69de5ef2bd..69de5ef2bd 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data
index c45139955a..c45139955a 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data
index 9a9a22daef..9a9a22daef 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data
index f5a0d874d4..f5a0d874d4 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data
index 9a9a22daef..9a9a22daef 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource0.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource0.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource1.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource1.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource10.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource10.data
index 597f94465c..597f94465c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource10.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource10.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource11.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource11.data
index 597f94465c..597f94465c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource11.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource11.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource12.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource12.data
index 597f94465c..597f94465c 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource12.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource12.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource2.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource2.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource20.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource20.data
index b9e3a5a7c7..b9e3a5a7c7 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource20.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource20.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource21.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource21.data
index 7014dc882f..7014dc882f 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource21.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource21.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource3.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource3.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource4.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource4.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource5.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource5.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource6.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource6.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource7.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource7.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource8.data
index 4f3af7006e..4f3af7006e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource8.data
diff --git a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource9.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource9.data
index 4f3af7006e..4f3af7006e 100644
--- a/tests/auto/qtextstream/resources/big_endian/operator_shiftright_resource9.data
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource9.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data
index 4d5bdc553e..4d5bdc553e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data
index 3cf181c23c..3cf181c23c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data
index f7f74e56a0..f7f74e56a0 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data
index e2df5e2ee7..e2df5e2ee7 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data
index e2df5e2ee7..e2df5e2ee7 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data
index fcb209d377..fcb209d377 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data
index 7939963f78..7939963f78 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data
index d155ca2863..d155ca2863 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data
index 46b134b197..46b134b197 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data
index 46b134b197..46b134b197 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data
index 104e45f940..104e45f940 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data
index 3135276780..3135276780 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data
index 993d0b9e19..993d0b9e19 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data
index 46b134b197..46b134b197 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data
index 46b134b197..46b134b197 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data
index 104e45f940..104e45f940 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data
index 3135276780..3135276780 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data
index 993d0b9e19..993d0b9e19 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data
index fa7af8bf5f..fa7af8bf5f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data
index b516b2c489..b516b2c489 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data
index fa7af8bf5f..fa7af8bf5f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data
index b516b2c489..b516b2c489 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data
index e2b43e3781..e2b43e3781 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data
index 962fc922ad..962fc922ad 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data
index 839cc09ec8..839cc09ec8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data
index f71ac66a63..f71ac66a63 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data
index 88f99805e3..88f99805e3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data
index db52135603..db52135603 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data
index 0a4ca93c16..0a4ca93c16 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data
index e7c7d5a76b..e7c7d5a76b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data
index 7501b59181..7501b59181 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data
index 1565aaa95f..1565aaa95f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data
index 9ac3ad9a6b..9ac3ad9a6b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data
index bb28df16b9..bb28df16b9 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data
index 8c0f57437b..8c0f57437b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data
index d494004e64..d494004e64 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data
index de421979ea..de421979ea 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data
index fa7af8bf5f..fa7af8bf5f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data
index b516b2c489..b516b2c489 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data
index 9ac3ad9a6b..9ac3ad9a6b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data
index bb28df16b9..bb28df16b9 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data
index 8c0f57437b..8c0f57437b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data
index d494004e64..d494004e64 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data
index de421979ea..de421979ea 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data
index 4d5bdc553e..4d5bdc553e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data
index 3cf181c23c..3cf181c23c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data
index f7f74e56a0..f7f74e56a0 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data
index fcb209d377..fcb209d377 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data
index 7939963f78..7939963f78 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data
index d155ca2863..d155ca2863 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data
index 46b134b197..46b134b197 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data
index 46b134b197..46b134b197 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data
index 104e45f940..104e45f940 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data
index 3135276780..3135276780 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data
index 993d0b9e19..993d0b9e19 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data
index 1910281566..1910281566 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data
index a907ec3f43..a907ec3f43 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data
index 61cd46aacc..61cd46aacc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data
index 46b134b197..46b134b197 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data
index 46b134b197..46b134b197 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data
index 104e45f940..104e45f940 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data
index 3135276780..3135276780 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data
index 993d0b9e19..993d0b9e19 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data
index 9280c0d31d..9280c0d31d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data
index c227083464..c227083464 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data
index 9280c0d31d..9280c0d31d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data
index c227083464..c227083464 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data
index e2b43e3781..e2b43e3781 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data
index 962fc922ad..962fc922ad 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data
index 839cc09ec8..839cc09ec8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data
index c33473a370..c33473a370 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data
index def7fcb589..def7fcb589 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data
index db52135603..db52135603 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data
index 0a4ca93c16..0a4ca93c16 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data
index e7c7d5a76b..e7c7d5a76b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data
index bf9cec8ea7..bf9cec8ea7 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data
index ec4665f7ff..ec4665f7ff 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data
index 9ac3ad9a6b..9ac3ad9a6b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data
index bb28df16b9..bb28df16b9 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data
index 8c0f57437b..8c0f57437b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data
index 878dc8a26e..878dc8a26e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data
index fd0779e0f3..fd0779e0f3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data
index 8c7e5a667f..8c7e5a667f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data
index 7371f47a6f..7371f47a6f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data
index 9280c0d31d..9280c0d31d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data
index c227083464..c227083464 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data
index 9ac3ad9a6b..9ac3ad9a6b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data
index bb28df16b9..bb28df16b9 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data
index 8c0f57437b..8c0f57437b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data
index 878dc8a26e..878dc8a26e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data
index fd0779e0f3..fd0779e0f3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data
index 80aed3622e..80aed3622e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data
index aec027753d..aec027753d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data
index 80aed3622e..80aed3622e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data
index aec027753d..aec027753d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data
index 775ae0f25b..775ae0f25b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data
index fb911f7352..fb911f7352 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data
index efbc06bf26..efbc06bf26 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data
index 4d857caa13..4d857caa13 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data
index b125e2084f..b125e2084f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data
index f39fbde113..f39fbde113 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data
index 5436b427ed..5436b427ed 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data
index 61cc689e1e..61cc689e1e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data
index cf914bc67e..cf914bc67e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data
index 5e08ff706a..5e08ff706a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data
index b6f4541bb8..b6f4541bb8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data
index f4a50d829a..f4a50d829a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data
index 2d8f67152c..2d8f67152c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data
index e6b94bbeb3..e6b94bbeb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data
index fb0a550264..fb0a550264 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data
index 48fe53930f..48fe53930f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data
index 811e93212d..811e93212d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data
index 7041fa9b4d..7041fa9b4d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data
index 9fd21fade0..9fd21fade0 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data
index 80aed3622e..80aed3622e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data
index aec027753d..aec027753d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data
index e6b94bbeb3..e6b94bbeb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data
index fb0a550264..fb0a550264 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data
index 48fe53930f..48fe53930f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data
index 811e93212d..811e93212d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data
index 7041fa9b4d..7041fa9b4d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data
index 9fd21fade0..9fd21fade0 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data
index 775ae0f25b..775ae0f25b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data
index fb911f7352..fb911f7352 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data
index efbc06bf26..efbc06bf26 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data
index 4d857caa13..4d857caa13 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data
index b125e2084f..b125e2084f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data
index 61cc689e1e..61cc689e1e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data
index cf914bc67e..cf914bc67e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data
index 5e08ff706a..5e08ff706a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data
index b6f4541bb8..b6f4541bb8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data
index e6b94bbeb3..e6b94bbeb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data
index fb0a550264..fb0a550264 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data
index 48fe53930f..48fe53930f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data
index 811e93212d..811e93212d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data
index d2fa166d7d..d2fa166d7d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data
index 1d0fa9e6a6..1d0fa9e6a6 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data
index e47d45c143..e47d45c143 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data
index 47ce07d283..47ce07d283 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data
index e6b94bbeb3..e6b94bbeb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data
index fb0a550264..fb0a550264 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data
index 48fe53930f..48fe53930f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data
index 811e93212d..811e93212d 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data
index f4aefab396..f4aefab396 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data
index f4aefab396..f4aefab396 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data
index 775ae0f25b..775ae0f25b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data
index ee113d1cf3..ee113d1cf3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data
index 1e07040ef4..1e07040ef4 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data
index cc7ab7dff8..cc7ab7dff8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data
index 450072bc4e..450072bc4e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data
index 73f5f259f8..73f5f259f8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data
index 9805422dfb..9805422dfb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data
index 77f557a494..77f557a494 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data
index 8dd6a4b38e..8dd6a4b38e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data
index 9a9a22daef..9a9a22daef 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data
index c52b277d9c..c52b277d9c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data
index 18c3344c26..18c3344c26 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data
index 5193701ae3..5193701ae3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data
index fab38d24ef..fab38d24ef 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data
index f5a0d874d4..f5a0d874d4 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data
index 95742ec8f2..95742ec8f2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data
index ebb14b2fbd..ebb14b2fbd 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data
index a9e1432ca9..a9e1432ca9 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data
index b7e6743c28..b7e6743c28 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data
index f4aefab396..f4aefab396 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data
index f5a0d874d4..f5a0d874d4 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data
index 95742ec8f2..95742ec8f2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data
index ebb14b2fbd..ebb14b2fbd 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data
index a9e1432ca9..a9e1432ca9 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data
index b7e6743c28..b7e6743c28 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data
index cab2ee4938..cab2ee4938 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data
index cab2ee4938..cab2ee4938 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data
index 775ae0f25b..775ae0f25b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data
index ee113d1cf3..ee113d1cf3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data
index 1e07040ef4..1e07040ef4 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data
index cc7ab7dff8..cc7ab7dff8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data
index beea1c3663..beea1c3663 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data
index 73f5f259f8..73f5f259f8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data
index 9805422dfb..9805422dfb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data
index 77f557a494..77f557a494 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data
index be6f22a5ea..be6f22a5ea 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data
index e50e2d02a9..e50e2d02a9 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data
index c52b277d9c..c52b277d9c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data
index 18c3344c26..18c3344c26 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data
index 5193701ae3..5193701ae3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data
index 5a9cb07f57..5a9cb07f57 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data
index e20c76a82c..e20c76a82c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data
index 95742ec8f2..95742ec8f2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data
index ebb14b2fbd..ebb14b2fbd 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data
index a9e1432ca9..a9e1432ca9 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data
index f8ec5bc443..f8ec5bc443 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data
index f171cb6c0c..f171cb6c0c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data
index de18d40ee8..de18d40ee8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data
index cab2ee4938..cab2ee4938 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data
index e20c76a82c..e20c76a82c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data
index 95742ec8f2..95742ec8f2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data
index ebb14b2fbd..ebb14b2fbd 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data
index a9e1432ca9..a9e1432ca9 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data
index f8ec5bc443..f8ec5bc443 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data
index 02b7f3ab7b..02b7f3ab7b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data
index 02b7f3ab7b..02b7f3ab7b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data
index 775ae0f25b..775ae0f25b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data
index 73f5f259f8..73f5f259f8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data
index ee113d1cf3..ee113d1cf3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data
index cc7ab7dff8..cc7ab7dff8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data
index 584b17ea18..584b17ea18 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data
index c52b277d9c..c52b277d9c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data
index b951b56531..b951b56531 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data
index 95742ec8f2..95742ec8f2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data
index 80d3ca2ef1..80d3ca2ef1 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data
index ef70e7dc3a..ef70e7dc3a 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data
index 02b7f3ab7b..02b7f3ab7b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data
index 95742ec8f2..95742ec8f2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data
index 80d3ca2ef1..80d3ca2ef1 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data
index 775ae0f25b..775ae0f25b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data
index ee113d1cf3..ee113d1cf3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data
index 1e07040ef4..1e07040ef4 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data
index cc7ab7dff8..cc7ab7dff8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data
index 450072bc4e..450072bc4e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data
index 9a9a22daef..9a9a22daef 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data
index f5a0d874d4..f5a0d874d4 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data
index f5a0d874d4..f5a0d874d4 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data
index 775ae0f25b..775ae0f25b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data
index ee113d1cf3..ee113d1cf3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data
index 1e07040ef4..1e07040ef4 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data
index cc7ab7dff8..cc7ab7dff8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data
index beea1c3663..beea1c3663 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data
index e50e2d02a9..e50e2d02a9 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data
index e20c76a82c..e20c76a82c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data
index f667f77c45..f667f77c45 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data
index e20c76a82c..e20c76a82c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data
index 775ae0f25b..775ae0f25b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data
index ee113d1cf3..ee113d1cf3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data
index 1e07040ef4..1e07040ef4 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data
index cc7ab7dff8..cc7ab7dff8 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data
index 450072bc4e..450072bc4e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data
index 2262f5ecdb..2262f5ecdb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data
index d7a098948e..d7a098948e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data
index e333a695b7..e333a695b7 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data
index 18bb47b042..18bb47b042 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data
index 9a9a22daef..9a9a22daef 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data
index f5a0d874d4..f5a0d874d4 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data
index 35282318cb..35282318cb 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data
index 30c3a50213..30c3a50213 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data
index 9d64c07ef2..9d64c07ef2 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data
index 6b37eb602b..6b37eb602b 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data
index c0e22423bc..c0e22423bc 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data
index 379e87b914..379e87b914 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data
index 2785156fb3..2785156fb3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data
index 6dc818abc3..6dc818abc3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data
index d41a1f75d3..d41a1f75d3 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data
index f5a0d874d4..f5a0d874d4 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource0.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource0.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource0.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource1.data
index 0f13712411..0f13712411 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource1.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource1.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource10.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource10.data
index 597f94465c..597f94465c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource10.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource10.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource11.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource11.data
index 597f94465c..597f94465c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource11.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource11.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource12.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource12.data
index 597f94465c..597f94465c 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource12.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource12.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource2.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource2.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource2.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource20.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource20.data
index b9e3a5a7c7..b9e3a5a7c7 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource20.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource20.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource21.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource21.data
index 7014dc882f..7014dc882f 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource21.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource21.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource3.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource3.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource3.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource4.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource4.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource4.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource5.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource5.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource5.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource6.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource6.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource6.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource7.data
index bd41cba781..bd41cba781 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource7.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource7.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource8.data
index 4f3af7006e..4f3af7006e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource8.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource8.data
diff --git a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource9.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource9.data
index 4f3af7006e..4f3af7006e 100644
--- a/tests/auto/qtextstream/resources/little_endian/operator_shiftright_resource9.data
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource9.data
diff --git a/tests/auto/qtextstream/rfc3261.txt b/tests/auto/corelib/io/qtextstream/rfc3261.txt
index 4cf4df93bc..4cf4df93bc 100644
--- a/tests/auto/qtextstream/rfc3261.txt
+++ b/tests/auto/corelib/io/qtextstream/rfc3261.txt
diff --git a/tests/auto/qtextstream/shift-jis.txt b/tests/auto/corelib/io/qtextstream/shift-jis.txt
index 51f161ab1a..51f161ab1a 100644
--- a/tests/auto/qtextstream/shift-jis.txt
+++ b/tests/auto/corelib/io/qtextstream/shift-jis.txt
diff --git a/tests/auto/qtextstream/stdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp
index 6d51f84fa1..6d51f84fa1 100644
--- a/tests/auto/qtextstream/stdinProcess/main.cpp
+++ b/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp
diff --git a/tests/auto/qtextstream/stdinProcess/stdinProcess.pro b/tests/auto/corelib/io/qtextstream/stdinProcess/stdinProcess.pro
index 9cf4d19387..9cf4d19387 100644
--- a/tests/auto/qtextstream/stdinProcess/stdinProcess.pro
+++ b/tests/auto/corelib/io/qtextstream/stdinProcess/stdinProcess.pro
diff --git a/tests/auto/qtextstream/task113817.txt b/tests/auto/corelib/io/qtextstream/task113817.txt
index 281ae8c9f2..281ae8c9f2 100644
--- a/tests/auto/qtextstream/task113817.txt
+++ b/tests/auto/corelib/io/qtextstream/task113817.txt
diff --git a/tests/auto/qtextstream/test/test.pro b/tests/auto/corelib/io/qtextstream/test/test.pro
index e0eb4ef193..e0eb4ef193 100644
--- a/tests/auto/qtextstream/test/test.pro
+++ b/tests/auto/corelib/io/qtextstream/test/test.pro
diff --git a/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp b/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp
new file mode 100644
index 0000000000..848f813d1e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp
@@ -0,0 +1,2919 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+/*-*-encoding:latin1-*-*/
+//#include <iostream>
+//using namespace std;
+
+#include <QtTest/QtTest>
+
+#ifdef Q_OS_UNIX
+#include <locale.h>
+#endif
+
+#include <QBuffer>
+#include <QByteArray>
+#include <QCoreApplication>
+#include <QDebug>
+#include <QFile>
+#include <QTcpSocket>
+#include <QTextStream>
+#include <QTextCodec>
+#include <QProcess>
+
+#include "../../../network-settings.h"
+
+static const char *TestFileName = "testfile";
+
+Q_DECLARE_METATYPE(qlonglong)
+Q_DECLARE_METATYPE(qulonglong)
+Q_DECLARE_METATYPE(QList<int>)
+
+QT_BEGIN_NAMESPACE
+template<> struct QMetaTypeId<QIODevice::OpenModeFlag>
+{ enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Int; } };
+QT_END_NAMESPACE
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR ""
+#endif
+
+class tst_QTextStream : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QTextStream();
+ virtual ~tst_QTextStream();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void getSetCheck();
+ void construction();
+
+ // lines
+ void readLineFromDevice_data();
+ void readLineFromDevice();
+ void readLineFromString_data();
+ void readLineFromString();
+ void readLineFromTextDevice_data();
+ void readLineFromTextDevice();
+ void readLineUntilNull();
+ void readLineMaxlen_data();
+ void readLineMaxlen();
+ void readLinesFromBufferCRCR();
+
+ // all
+ void readAllFromDevice_data();
+ void readAllFromDevice();
+ void readAllFromString_data();
+ void readAllFromString();
+ void readLineFromStringThenChangeString();
+
+ // device tests
+ void setDevice();
+
+ // char operators
+ void QChar_operators_FromDevice_data();
+ void QChar_operators_FromDevice();
+ void char_operators_FromDevice_data();
+ void char_operators_FromDevice();
+
+ // natural number read operator
+ void signedShort_read_operator_FromDevice_data();
+ void signedShort_read_operator_FromDevice();
+ void unsignedShort_read_operator_FromDevice_data();
+ void unsignedShort_read_operator_FromDevice();
+ void signedInt_read_operator_FromDevice_data();
+ void signedInt_read_operator_FromDevice();
+ void unsignedInt_read_operator_FromDevice_data();
+ void unsignedInt_read_operator_FromDevice();
+ void qlonglong_read_operator_FromDevice_data();
+ void qlonglong_read_operator_FromDevice();
+ void qulonglong_read_operator_FromDevice_data();
+ void qulonglong_read_operator_FromDevice();
+
+ // natural number write operator
+ void signedShort_write_operator_ToDevice_data();
+ void signedShort_write_operator_ToDevice();
+ void unsignedShort_write_operator_ToDevice_data();
+ void unsignedShort_write_operator_ToDevice();
+ void signedInt_write_operator_ToDevice_data();
+ void signedInt_write_operator_ToDevice();
+ void unsignedInt_write_operator_ToDevice_data();
+ void unsignedInt_write_operator_ToDevice();
+ void qlonglong_write_operator_ToDevice_data();
+ void qlonglong_write_operator_ToDevice();
+ void qulonglong_write_operator_ToDevice_data();
+ void qulonglong_write_operator_ToDevice();
+
+ void int_read_with_locale_data();
+ void int_read_with_locale();
+
+ void int_write_with_locale_data();
+ void int_write_with_locale();
+
+ // real number read operator
+ void float_read_operator_FromDevice_data();
+ void float_read_operator_FromDevice();
+ void double_read_operator_FromDevice_data();
+ void double_read_operator_FromDevice();
+
+ // real number write operator
+ void float_write_operator_ToDevice_data();
+ void float_write_operator_ToDevice();
+ void double_write_operator_ToDevice_data();
+ void double_write_operator_ToDevice();
+
+ void double_write_with_flags_data();
+ void double_write_with_flags();
+
+ void double_write_with_precision_data();
+ void double_write_with_precision();
+
+ // text read operators
+ void charPtr_read_operator_FromDevice_data();
+ void charPtr_read_operator_FromDevice();
+ void stringRef_read_operator_FromDevice_data();
+ void stringRef_read_operator_FromDevice();
+ void byteArray_read_operator_FromDevice_data();
+ void byteArray_read_operator_FromDevice();
+
+ // text write operators
+ void string_write_operator_ToDevice_data();
+ void string_write_operator_ToDevice();
+
+ // other
+ void skipWhiteSpace_data();
+ void skipWhiteSpace();
+ void lineCount_data();
+ void lineCount();
+ void performance();
+ void hexTest_data();
+ void hexTest();
+ void binTest_data();
+ void binTest();
+ void octTest_data();
+ void octTest();
+ void zeroTermination();
+ void ws_manipulator();
+ void stillOpenWhenAtEnd();
+ void readNewlines_data();
+ void readNewlines();
+ void seek();
+ void pos();
+ void pos2();
+ void pos3LargeFile();
+ void readStdin();
+ void readAllFromStdin();
+ void readLineFromStdin();
+ void read();
+ void qbool();
+ void forcePoint();
+ void forceSign();
+ void read0d0d0a();
+ void numeralCase_data();
+ void numeralCase();
+ void nanInf();
+ void utf8IncompleteAtBufferBoundary_data();
+ void utf8IncompleteAtBufferBoundary();
+ void writeSeekWriteNoBOM();
+
+ // status
+ void status_real_read_data();
+ void status_real_read();
+ void status_integer_read();
+ void status_word_read();
+ void status_write_error();
+
+ // use case tests
+ void useCase1();
+ void useCase2();
+
+ // manipulators
+ void manipulators_data();
+ void manipulators();
+
+ // UTF-16 BOM (Byte Order Mark)
+ void generateBOM();
+ void readBomSeekBackReadBomAgain();
+
+ // task-specific tests
+ void task180679_alignAccountingStyle();
+ void task178772_setCodec();
+
+private:
+ void generateLineData(bool for_QString);
+ void generateAllData(bool for_QString);
+ void generateOperatorCharData(bool for_QString);
+ void generateNaturalNumbersData(bool for_QString);
+ void generateRealNumbersData(bool for_QString);
+ void generateStringData(bool for_QString);
+ void generateRealNumbersDataWrite();
+};
+
+// Testing get/set functions
+void tst_QTextStream::getSetCheck()
+{
+ // Initialize codecs
+ int argc = 0;
+ char **argv = 0;
+ QCoreApplication app(argc, argv);
+
+ QTextStream obj1;
+ // QTextCodec * QTextStream::codec()
+ // void QTextStream::setCodec(QTextCodec *)
+ QTextCodec *var1 = QTextCodec::codecForName("en");
+ obj1.setCodec(var1);
+ QCOMPARE(var1, obj1.codec());
+ obj1.setCodec((QTextCodec *)0);
+ QCOMPARE((QTextCodec *)0, obj1.codec());
+
+ // bool QTextStream::autoDetectUnicode()
+ // void QTextStream::setAutoDetectUnicode(bool)
+ obj1.setAutoDetectUnicode(false);
+ QCOMPARE(false, obj1.autoDetectUnicode());
+ obj1.setAutoDetectUnicode(true);
+ QCOMPARE(true, obj1.autoDetectUnicode());
+
+ // bool QTextStream::generateByteOrderMark()
+ // void QTextStream::setGenerateByteOrderMark(bool)
+ obj1.setGenerateByteOrderMark(false);
+ QCOMPARE(false, obj1.generateByteOrderMark());
+ obj1.setGenerateByteOrderMark(true);
+ QCOMPARE(true, obj1.generateByteOrderMark());
+
+ // QIODevice * QTextStream::device()
+ // void QTextStream::setDevice(QIODevice *)
+ QFile *var4 = new QFile;
+ obj1.setDevice(var4);
+ QCOMPARE(static_cast<QIODevice *>(var4), obj1.device());
+ obj1.setDevice((QIODevice *)0);
+ QCOMPARE((QIODevice *)0, obj1.device());
+ delete var4;
+
+ // Status QTextStream::status()
+ // void QTextStream::setStatus(Status)
+ obj1.setStatus(QTextStream::Status(QTextStream::Ok));
+ QCOMPARE(QTextStream::Status(QTextStream::Ok), obj1.status());
+ obj1.setStatus(QTextStream::Status(QTextStream::ReadPastEnd));
+ QCOMPARE(QTextStream::Status(QTextStream::ReadPastEnd), obj1.status());
+ obj1.resetStatus();
+ obj1.setStatus(QTextStream::Status(QTextStream::ReadCorruptData));
+ QCOMPARE(QTextStream::Status(QTextStream::ReadCorruptData), obj1.status());
+
+ // FieldAlignment QTextStream::fieldAlignment()
+ // void QTextStream::setFieldAlignment(FieldAlignment)
+ obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignLeft));
+ QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignLeft), obj1.fieldAlignment());
+ obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignRight));
+ QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignRight), obj1.fieldAlignment());
+ obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignCenter));
+ QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignCenter), obj1.fieldAlignment());
+ obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignAccountingStyle));
+ QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignAccountingStyle), obj1.fieldAlignment());
+
+ // QChar QTextStream::padChar()
+ // void QTextStream::setPadChar(QChar)
+ QChar var7 = 'Q';
+ obj1.setPadChar(var7);
+ QCOMPARE(var7, obj1.padChar());
+ obj1.setPadChar(QChar());
+ QCOMPARE(QChar(), obj1.padChar());
+
+ // int QTextStream::fieldWidth()
+ // void QTextStream::setFieldWidth(int)
+ obj1.setFieldWidth(0);
+ QCOMPARE(0, obj1.fieldWidth());
+ obj1.setFieldWidth(INT_MIN);
+ QCOMPARE(INT_MIN, obj1.fieldWidth());
+ obj1.setFieldWidth(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.fieldWidth());
+
+ // NumberFlags QTextStream::numberFlags()
+ // void QTextStream::setNumberFlags(NumberFlags)
+ obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ShowBase));
+ QCOMPARE(QTextStream::NumberFlags(QTextStream::ShowBase), obj1.numberFlags());
+ obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ForcePoint));
+ QCOMPARE(QTextStream::NumberFlags(QTextStream::ForcePoint), obj1.numberFlags());
+ obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ForceSign));
+ QCOMPARE(QTextStream::NumberFlags(QTextStream::ForceSign), obj1.numberFlags());
+ obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::UppercaseBase));
+ QCOMPARE(QTextStream::NumberFlags(QTextStream::UppercaseBase), obj1.numberFlags());
+ obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::UppercaseDigits));
+ QCOMPARE(QTextStream::NumberFlags(QTextStream::UppercaseDigits), obj1.numberFlags());
+
+ // int QTextStream::integerBase()
+ // void QTextStream::setIntegerBase(int)
+ obj1.setIntegerBase(0);
+ QCOMPARE(0, obj1.integerBase());
+ obj1.setIntegerBase(INT_MIN);
+ QCOMPARE(INT_MIN, obj1.integerBase());
+ obj1.setIntegerBase(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.integerBase());
+
+ // RealNumberNotation QTextStream::realNumberNotation()
+ // void QTextStream::setRealNumberNotation(RealNumberNotation)
+ obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::SmartNotation));
+ QCOMPARE(QTextStream::RealNumberNotation(QTextStream::SmartNotation), obj1.realNumberNotation());
+ obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::FixedNotation));
+ QCOMPARE(QTextStream::RealNumberNotation(QTextStream::FixedNotation), obj1.realNumberNotation());
+ obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::ScientificNotation));
+ QCOMPARE(QTextStream::RealNumberNotation(QTextStream::ScientificNotation), obj1.realNumberNotation());
+
+ // int QTextStream::realNumberPrecision()
+ // void QTextStream::setRealNumberPrecision(int)
+ obj1.setRealNumberPrecision(0);
+ QCOMPARE(0, obj1.realNumberPrecision());
+ obj1.setRealNumberPrecision(INT_MIN);
+ QCOMPARE(6, obj1.realNumberPrecision()); // Setting a negative precision reverts it to the default value (6).
+ obj1.setRealNumberPrecision(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.realNumberPrecision());
+}
+
+tst_QTextStream::tst_QTextStream()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+tst_QTextStream::~tst_QTextStream()
+{
+}
+
+void tst_QTextStream::init()
+{
+}
+
+void tst_QTextStream::cleanup()
+{
+ QCoreApplication::instance()->processEvents();
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::construction()
+{
+ QTextStream stream;
+ QCOMPARE(stream.codec(), QTextCodec::codecForLocale());
+ QCOMPARE(stream.device(), static_cast<QIODevice *>(0));
+ QCOMPARE(stream.string(), static_cast<QString *>(0));
+
+ QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
+ QVERIFY(stream.atEnd());
+
+ QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
+ QCOMPARE(stream.readAll(), QString());
+
+}
+
+void tst_QTextStream::generateLineData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<QStringList>("lines");
+
+ // latin-1
+ QTest::newRow("emptyer") << QByteArray() << QStringList();
+ QTest::newRow("lf") << QByteArray("\n") << (QStringList() << "");
+ QTest::newRow("crlf") << QByteArray("\r\n") << (QStringList() << "");
+ QTest::newRow("oneline/nothing") << QByteArray("ole") << (QStringList() << "ole");
+ QTest::newRow("oneline/lf") << QByteArray("ole\n") << (QStringList() << "ole");
+ QTest::newRow("oneline/crlf") << QByteArray("ole\r\n") << (QStringList() << "ole");
+ QTest::newRow("twolines/lf/lf") << QByteArray("ole\ndole\n") << (QStringList() << "ole" << "dole");
+ QTest::newRow("twolines/crlf/crlf") << QByteArray("ole\r\ndole\r\n") << (QStringList() << "ole" << "dole");
+ QTest::newRow("twolines/lf/crlf") << QByteArray("ole\ndole\r\n") << (QStringList() << "ole" << "dole");
+ QTest::newRow("twolines/lf/nothing") << QByteArray("ole\ndole") << (QStringList() << "ole" << "dole");
+ QTest::newRow("twolines/crlf/nothing") << QByteArray("ole\r\ndole") << (QStringList() << "ole" << "dole");
+ QTest::newRow("threelines/lf/lf/lf") << QByteArray("ole\ndole\ndoffen\n") << (QStringList() << "ole" << "dole" << "doffen");
+ QTest::newRow("threelines/crlf/crlf/crlf") << QByteArray("ole\r\ndole\r\ndoffen\r\n") << (QStringList() << "ole" << "dole" << "doffen");
+ QTest::newRow("threelines/crlf/crlf/nothing") << QByteArray("ole\r\ndole\r\ndoffen") << (QStringList() << "ole" << "dole" << "doffen");
+
+ if (!for_QString) {
+ // utf-8
+ QTest::newRow("utf8/twolines")
+ << QByteArray("\xef\xbb\xbf"
+ "\x66\x67\x65\x0a"
+ "\x66\x67\x65\x0a", 11)
+ << (QStringList() << "fge" << "fge");
+
+ // utf-16
+ // one line
+ QTest::newRow("utf16-BE/nothing")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65", 8) << (QStringList() << "\345ge");
+ QTest::newRow("utf16-LE/nothing")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00", 8) << (QStringList() << "\345ge");
+ QTest::newRow("utf16-BE/lf")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 10) << (QStringList() << "\345ge");
+ QTest::newRow("utf16-LE/lf")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 10) << (QStringList() << "\345ge");
+
+ // two lines
+ QTest::newRow("utf16-BE/twolines")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 18)
+ << (QStringList() << "\345ge" << "\345ge");
+ QTest::newRow("utf16-LE/twolines")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 18)
+ << (QStringList() << "\345ge" << "\345ge");
+
+ // three lines
+ QTest::newRow("utf16-BE/threelines")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 26)
+ << (QStringList() << "\345ge" << "\345ge" << "\345ge");
+ QTest::newRow("utf16-LE/threelines")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 26)
+ << (QStringList() << "\345ge" << "\345ge" << "\345ge");
+
+ // utf-32
+ QTest::newRow("utf32-BE/twolines")
+ << QByteArray("\x00\x00\xfe\xff"
+ "\x00\x00\x00\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a"
+ "\x00\x00\x00\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a", 36)
+ << (QStringList() << "\345ge" << "\345ge");
+ QTest::newRow("utf32-LE/twolines")
+ << QByteArray("\xff\xfe\x00\x00"
+ "\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a\x00\x00\x00"
+ "\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a\x00\x00\x00", 36)
+ << (QStringList() << "\345ge" << "\345ge");
+ }
+
+ // partials
+ QTest::newRow("cr") << QByteArray("\r") << (QStringList() << "");
+ QTest::newRow("oneline/cr") << QByteArray("ole\r") << (QStringList() << "ole");
+ if (!for_QString)
+ QTest::newRow("utf16-BE/cr") << QByteArray("\xfe\xff\x00\xe5\x00\x67\x00\x65\x00\x0d", 10) << (QStringList() << "\345ge");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromDevice_data()
+{
+ generateLineData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromDevice()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(QStringList, lines);
+
+ QFile::remove(TestFileName);
+ QFile file(TestFileName);
+ QVERIFY(file.open(QFile::ReadWrite));
+ QCOMPARE(file.write(data), qlonglong(data.size()));
+ QVERIFY(file.flush());
+ file.seek(0);
+
+ QTextStream stream(&file);
+ QStringList list;
+ while (!stream.atEnd())
+ list << stream.readLine();
+
+ QCOMPARE(list, lines);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineMaxlen_data()
+{
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<QStringList>("lines");
+
+ QTest::newRow("Hey")
+ << QString("Hey")
+ << (QStringList() << QString("Hey") << QString(""));
+ QTest::newRow("Hey\\n")
+ << QString("Hey\n")
+ << (QStringList() << QString("Hey") << QString(""));
+ QTest::newRow("HelloWorld")
+ << QString("HelloWorld")
+ << (QStringList() << QString("Hello") << QString("World"));
+ QTest::newRow("Helo\\nWorlds")
+ << QString("Helo\nWorlds")
+ << (QStringList() << QString("Helo") << QString("World"));
+ QTest::newRow("AAAAA etc.")
+ << QString(16385, QLatin1Char('A'))
+ << (QStringList() << QString("AAAAA") << QString("AAAAA"));
+ QTest::newRow("multibyte string")
+ << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242\341\233\232\341\232\240\n")
+ << (QStringList() << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242")
+ << QString::fromUtf8("\341\233\232\341\232\240"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineMaxlen()
+{
+ QFETCH(QString, input);
+ QFETCH(QStringList, lines);
+ for (int i = 0; i < 2; ++i) {
+ bool useDevice = (i == 1);
+ QTextStream stream;
+ QFile::remove("testfile");
+ QFile file("testfile");
+ if (useDevice) {
+ file.open(QIODevice::ReadWrite);
+ file.write(input.toUtf8());
+ file.seek(0);
+ stream.setDevice(&file);
+ stream.setCodec("utf-8");
+ } else {
+ stream.setString(&input);
+ }
+
+ QStringList list;
+ list << stream.readLine(5);
+ list << stream.readLine(5);
+
+ QCOMPARE(list, lines);
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLinesFromBufferCRCR()
+{
+ QBuffer buffer;
+ buffer.open(QIODevice::WriteOnly);
+ QByteArray data("0123456789\r\r\n");
+
+ for (int i = 0; i < 10000; ++i)
+ buffer.write(data);
+
+ buffer.close();
+ if (buffer.open(QIODevice::ReadOnly|QIODevice::Text)) {
+ QTextStream stream(&buffer);
+ while (!stream.atEnd())
+ QCOMPARE(stream.readLine(), QString("0123456789"));
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromString_data()
+{
+ generateLineData(true);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromString()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(QStringList, lines);
+
+ QString dataString = data;
+
+ QTextStream stream(&dataString, QIODevice::ReadOnly);
+ QStringList list;
+ while (!stream.atEnd())
+ list << stream.readLine();
+
+ QCOMPARE(list, lines);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromStringThenChangeString()
+{
+ QString first = "First string";
+ QString second = "Second string";
+
+ QTextStream stream(&first, QIODevice::ReadOnly);
+ QString result = stream.readLine();
+ QCOMPARE(first, result);
+
+ stream.setString(&second, QIODevice::ReadOnly);
+ result = stream.readLine();
+ QCOMPARE(second, result);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::setDevice()
+{
+ // Check that the read buffer is reset after setting a new device
+ QByteArray data1("Hello World");
+ QByteArray data2("How are you");
+
+ QBuffer bufferOld(&data1);
+ bufferOld.open(QIODevice::ReadOnly);
+
+ QBuffer bufferNew(&data2);
+ bufferNew.open(QIODevice::ReadOnly);
+
+ QString text;
+ QTextStream stream(&bufferOld);
+ stream >> text;
+ QCOMPARE(text, QString("Hello"));
+
+ stream.setDevice(&bufferNew);
+ stream >> text;
+ QCOMPARE(text, QString("How"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromTextDevice_data()
+{
+ generateLineData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromTextDevice()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(QStringList, lines);
+
+ for (int i = 0; i < 8; ++i) {
+ QBuffer buffer(&data);
+ if (i < 4)
+ QVERIFY(buffer.open(QIODevice::ReadOnly | QIODevice::Text));
+ else
+ QVERIFY(buffer.open(QIODevice::ReadOnly));
+
+ QTextStream stream(&buffer);
+ QStringList list;
+ while (!stream.atEnd()) {
+ stream.pos(); // <- triggers side effects
+ QString line;
+
+ if (i & 1) {
+ QChar c;
+ while (!stream.atEnd()) {
+ stream >> c;
+ if (stream.status() == QTextStream::Ok) {
+ if (c != QLatin1Char('\n') && c != QLatin1Char('\r'))
+ line += c;
+ if (c == QLatin1Char('\n'))
+ break;
+ }
+ }
+ } else {
+ line = stream.readLine();
+ }
+
+ if ((i & 3) == 3 && !QString(QTest::currentDataTag()).contains("utf16"))
+ stream.seek(stream.pos());
+ list << line;
+ }
+ QCOMPARE(list, lines);
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateAllData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<QString>("output");
+
+ // latin-1
+ QTest::newRow("empty") << QByteArray() << QString();
+ QTest::newRow("latin1-a") << QByteArray("a") << QString("a");
+ QTest::newRow("latin1-a\\r") << QByteArray("a\r") << QString("a\r");
+ QTest::newRow("latin1-a\\r\\n") << QByteArray("a\r\n") << QString("a\r\n");
+ QTest::newRow("latin1-a\\n") << QByteArray("a\n") << QString("a\n");
+
+ // utf-16
+ if (!for_QString) {
+ // one line
+ QTest::newRow("utf16-BE/nothing")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65", 8) << QString("\345ge");
+ QTest::newRow("utf16-LE/nothing")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00", 8) << QString("\345ge");
+ QTest::newRow("utf16-BE/lf")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 10) << QString("\345ge\n");
+ QTest::newRow("utf16-LE/lf")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 10) << QString("\345ge\n");
+ QTest::newRow("utf16-BE/crlf")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0d\x00\x0a", 12) << QString("\345ge\r\n");
+ QTest::newRow("utf16-LE/crlf")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0d\x00\x0a\x00", 12) << QString("\345ge\r\n");
+
+ // two lines
+ QTest::newRow("utf16-BE/twolines")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 18)
+ << QString("\345ge\n\345ge\n");
+ QTest::newRow("utf16-LE/twolines")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 18)
+ << QString("\345ge\n\345ge\n");
+
+ // three lines
+ QTest::newRow("utf16-BE/threelines")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 26)
+ << QString("\345ge\n\345ge\n\345ge\n");
+ QTest::newRow("utf16-LE/threelines")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 26)
+ << QString("\345ge\n\345ge\n\345ge\n");
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineUntilNull()
+{
+ QFile file(SRCDIR "rfc3261.txt");
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ QTextStream stream(&file);
+ for (int i = 0; i < 15066; ++i) {
+ QString line = stream.readLine();
+ QVERIFY(!line.isNull());
+ QVERIFY(!line.isNull());
+ }
+ QVERIFY(!stream.readLine().isNull());
+ QVERIFY(stream.readLine().isNull());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readAllFromDevice_data()
+{
+ generateAllData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readAllFromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QString, output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly);
+
+ QTextStream stream(&buffer);
+ QCOMPARE(stream.readAll(), output);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readAllFromString_data()
+{
+ generateAllData(true);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readAllFromString()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QString, output);
+
+ QString str = input;
+
+ QTextStream stream(&str);
+ QCOMPARE(stream.readAll(), output);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::skipWhiteSpace_data()
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<QChar>("output");
+
+ // latin1
+ QTest::newRow("empty") << QByteArray() << QChar('\0');
+ QTest::newRow(" one") << QByteArray(" one") << QChar('o');
+ QTest::newRow("\\none") << QByteArray("\none") << QChar('o');
+ QTest::newRow("\\n one") << QByteArray("\n one") << QChar('o');
+ QTest::newRow(" \\r\\n one") << QByteArray(" \r\n one") << QChar('o');
+
+ // utf-16
+ QTest::newRow("utf16-BE (empty)") << QByteArray("\xfe\xff", 2) << QChar('\0');
+ QTest::newRow("utf16-BE ( one)") << QByteArray("\xfe\xff\x00 \x00o\x00n\x00e", 10) << QChar('o');
+ QTest::newRow("utf16-BE (\\none)") << QByteArray("\xfe\xff\x00\n\x00o\x00n\x00e", 10) << QChar('o');
+ QTest::newRow("utf16-BE (\\n one)") << QByteArray("\xfe\xff\x00\n\x00 \x00o\x00n\x00e", 12) << QChar('o');
+ QTest::newRow("utf16-BE ( \\r\\n one)") << QByteArray("\xfe\xff\x00 \x00\r\x00\n\x00 \x00o\x00n\x00e", 20) << QChar('o');
+
+ QTest::newRow("utf16-LE (empty)") << QByteArray("\xff\xfe", 2) << QChar('\0');
+ QTest::newRow("utf16-LE ( one)") << QByteArray("\xff\xfe \x00o\x00n\x00e\x00", 10) << QChar('o');
+ QTest::newRow("utf16-LE (\\none)") << QByteArray("\xff\xfe\n\x00o\x00n\x00e\x00", 10) << QChar('o');
+ QTest::newRow("utf16-LE (\\n one)") << QByteArray("\xff\xfe\n\x00 \x00o\x00n\x00e\x00", 12) << QChar('o');
+ QTest::newRow("utf16-LE ( \\r\\n one)") << QByteArray("\xff\xfe \x00\r\x00\n\x00 \x00o\x00n\x00e\x00", 20) << QChar('o');
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::skipWhiteSpace()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QChar, output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly);
+
+ QTextStream stream(&buffer);
+ stream.skipWhiteSpace();
+
+ QChar tmp;
+ stream >> tmp;
+
+ QCOMPARE(tmp, output);
+
+ QString str = input;
+ QTextStream stream2(&input);
+ stream2.skipWhiteSpace();
+
+ stream2 >> tmp;
+
+ QCOMPARE(tmp, output);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::lineCount_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<int>("lineCount");
+
+ QTest::newRow("empty") << QByteArray() << 0;
+ QTest::newRow("oneline") << QByteArray("a\n") << 1;
+ QTest::newRow("twolines") << QByteArray("a\nb\n") << 2;
+ QTest::newRow("oneemptyline") << QByteArray("\n") << 1;
+ QTest::newRow("twoemptylines") << QByteArray("\n\n") << 2;
+ QTest::newRow("buffersize-1 line") << QByteArray(16382, '\n') << 16382;
+ QTest::newRow("buffersize line") << QByteArray(16383, '\n') << 16383;
+ QTest::newRow("buffersize+1 line") << QByteArray(16384, '\n') << 16384;
+ QTest::newRow("buffersize+2 line") << QByteArray(16385, '\n') << 16385;
+
+ QFile file(SRCDIR "rfc3261.txt"); file.open(QFile::ReadOnly);
+ QTest::newRow("rfc3261") << file.readAll() << 15067;
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::lineCount()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(int, lineCount);
+
+ QFile out("out.txt");
+ out.open(QFile::WriteOnly);
+
+ QTextStream lineReader(data);
+ int lines = 0;
+ while (!lineReader.atEnd()) {
+ QString line = lineReader.readLine();
+ out.write(line.toLatin1() + "\n");
+ ++lines;
+ }
+
+ out.close();
+ QCOMPARE(lines, lineCount);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::performance()
+{
+ // Phase #1 - test speed of reading a huge text file with QFile.
+ QTime stopWatch;
+
+ int elapsed1 = 0;
+ int elapsed2 = 0;
+
+ stopWatch.restart();
+ int nlines1 = 0;
+ QFile file(SRCDIR "rfc3261.txt");
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ while (!file.atEnd()) {
+ ++nlines1;
+ file.readLine();
+ }
+
+ elapsed1 += stopWatch.elapsed();
+ stopWatch.restart();
+
+ int nlines2 = 0;
+ QFile file2(SRCDIR "rfc3261.txt");
+ QVERIFY(file2.open(QFile::ReadOnly));
+
+ QTextStream stream(&file2);
+ while (!stream.atEnd()) {
+ ++nlines2;
+ stream.readLine();
+ }
+
+ elapsed2 += stopWatch.elapsed();
+ QCOMPARE(nlines1, nlines2);
+
+ qDebug("QFile used %.2f seconds to read the file",
+ elapsed1 / 1000.0);
+
+ qDebug("QTextStream used %.2f seconds to read the file",
+ elapsed2 / 1000.0);
+ if (elapsed2 > elapsed1) {
+ qDebug("QFile is %.2fx faster than QTextStream",
+ double(elapsed2) / double(elapsed1));
+ } else {
+ qDebug("QTextStream is %.2fx faster than QFile",
+ double(elapsed1) / double(elapsed2));
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::hexTest_data()
+{
+ QTest::addColumn<qlonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_INT64_C(0) << QByteArray("0x0");
+ QTest::newRow("1") << Q_INT64_C(1) << QByteArray("0x1");
+ QTest::newRow("2") << Q_INT64_C(2) << QByteArray("0x2");
+ QTest::newRow("3") << Q_INT64_C(3) << QByteArray("0x3");
+ QTest::newRow("4") << Q_INT64_C(4) << QByteArray("0x4");
+ QTest::newRow("5") << Q_INT64_C(5) << QByteArray("0x5");
+ QTest::newRow("6") << Q_INT64_C(6) << QByteArray("0x6");
+ QTest::newRow("7") << Q_INT64_C(7) << QByteArray("0x7");
+ QTest::newRow("8") << Q_INT64_C(8) << QByteArray("0x8");
+ QTest::newRow("9") << Q_INT64_C(9) << QByteArray("0x9");
+ QTest::newRow("a") << Q_INT64_C(0xa) << QByteArray("0xa");
+ QTest::newRow("b") << Q_INT64_C(0xb) << QByteArray("0xb");
+ QTest::newRow("c") << Q_INT64_C(0xc) << QByteArray("0xc");
+ QTest::newRow("d") << Q_INT64_C(0xd) << QByteArray("0xd");
+ QTest::newRow("e") << Q_INT64_C(0xe) << QByteArray("0xe");
+ QTest::newRow("f") << Q_INT64_C(0xf) << QByteArray("0xf");
+ QTest::newRow("-1") << Q_INT64_C(-1) << QByteArray("-0x1");
+ QTest::newRow("0xffffffff") << Q_INT64_C(0xffffffff) << QByteArray("0xffffffff");
+ QTest::newRow("0xfffffffffffffffe") << Q_INT64_C(0xfffffffffffffffe) << QByteArray("-0x2");
+ QTest::newRow("0xffffffffffffffff") << Q_INT64_C(0xffffffffffffffff) << QByteArray("-0x1");
+ QTest::newRow("0x7fffffffffffffff") << Q_INT64_C(0x7fffffffffffffff) << QByteArray("0x7fffffffffffffff");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::hexTest()
+{
+ QFETCH(qlonglong, number);
+ QFETCH(QByteArray, data);
+
+ QByteArray array;
+ QTextStream stream(&array);
+
+ stream << showbase << hex << number;
+ stream.flush();
+ QCOMPARE(array, data);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::binTest_data()
+{
+ QTest::addColumn<int>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << 0 << QByteArray("0b0");
+ QTest::newRow("1") << 1 << QByteArray("0b1");
+ QTest::newRow("2") << 2 << QByteArray("0b10");
+ QTest::newRow("5") << 5 << QByteArray("0b101");
+ QTest::newRow("-1") << -1 << QByteArray("-0b1");
+ QTest::newRow("11111111") << 0xff << QByteArray("0b11111111");
+ QTest::newRow("1111111111111111") << 0xffff << QByteArray("0b1111111111111111");
+ QTest::newRow("1111111011111110") << 0xfefe << QByteArray("0b1111111011111110");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::binTest()
+{
+ QFETCH(int, number);
+ QFETCH(QByteArray, data);
+
+ QByteArray array;
+ QTextStream stream(&array);
+
+ stream << showbase << bin << number;
+ stream.flush();
+ QCOMPARE(array.constData(), data.constData());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::octTest_data()
+{
+ QTest::addColumn<int>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << 0 << QByteArray("00");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::octTest()
+{
+ QFETCH(int, number);
+ QFETCH(QByteArray, data);
+
+ QByteArray array;
+ QTextStream stream(&array);
+
+ stream << showbase << oct << number;
+ stream.flush();
+ QCOMPARE(array, data);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::zeroTermination()
+{
+ QTextStream stream;
+ char c = '@';
+
+ QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
+ stream >> c;
+ QCOMPARE(c, '\0');
+
+ c = '@';
+
+ QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
+ stream >> &c;
+ QCOMPARE(c, '\0');
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::ws_manipulator()
+{
+ {
+ QString string = "a b c d";
+ QTextStream stream(&string);
+
+ char a, b, c, d;
+ stream >> a >> b >> c >> d;
+ QCOMPARE(a, 'a');
+ QCOMPARE(b, ' ');
+ QCOMPARE(c, 'b');
+ QCOMPARE(d, ' ');
+ }
+ {
+ QString string = "a b c d";
+ QTextStream stream(&string);
+
+ char a, b, c, d;
+ stream >> a >> ws >> b >> ws >> c >> ws >> d;
+ QCOMPARE(a, 'a');
+ QCOMPARE(b, 'b');
+ QCOMPARE(c, 'c');
+ QCOMPARE(d, 'd');
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::stillOpenWhenAtEnd()
+{
+ int argc = 0;
+ char **argv = 0;
+ QCoreApplication app(argc, argv);
+
+ QFile file(SRCDIR "tst_qtextstream.cpp");
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ QTextStream stream(&file);
+ while (!stream.readLine().isNull()) {}
+ QVERIFY(file.isOpen());
+
+#ifdef Q_OS_WINCE
+ QSKIP("Qt/CE: Cannot test network on emulator", SkipAll);
+#endif
+ QTcpSocket socket;
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
+#if defined(Q_OS_SYMBIAN)
+ // This number is determined in an arbitrary way; whatever it takes
+ // to make the test pass.
+ QVERIFY(socket.waitForReadyRead(30000));
+#else
+ QVERIFY(socket.waitForReadyRead(5000));
+#endif
+
+ QTextStream stream2(&socket);
+ while (!stream2.readLine().isNull()) {}
+ QVERIFY(socket.isOpen());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readNewlines_data()
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<QString>("output");
+
+ QTest::newRow("empty") << QByteArray() << QString();
+ QTest::newRow("\\r\\n") << QByteArray("\r\n") << QString("\n");
+ QTest::newRow("\\r\\r\\n") << QByteArray("\r\r\n") << QString("\n");
+ QTest::newRow("\\r\\n\\r\\n") << QByteArray("\r\n\r\n") << QString("\n\n");
+ QTest::newRow("\\n") << QByteArray("\n") << QString("\n");
+ QTest::newRow("\\n\\n") << QByteArray("\n\n") << QString("\n\n");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readNewlines()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QString, output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly | QBuffer::Text);
+ QTextStream stream(&buffer);
+ QCOMPARE(stream.readAll(), output);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::seek()
+{
+ QFile file(SRCDIR "rfc3261.txt");
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ QTextStream stream(&file);
+ QString tmp;
+ stream >> tmp;
+ QCOMPARE(tmp, QString::fromLatin1("Network"));
+
+ // QTextStream::seek(0) should both clear its internal read/write buffers
+ // and seek the device.
+ for (int i = 0; i < 4; ++i) {
+ stream.seek(12 + i);
+ stream >> tmp;
+ QCOMPARE(tmp, QString("Network").mid(i));
+ }
+ for (int i = 0; i < 4; ++i) {
+ stream.seek(16 - i);
+ stream >> tmp;
+ QCOMPARE(tmp, QString("Network").mid(4 - i));
+ }
+ stream.seek(139181);
+ stream >> tmp;
+ QCOMPARE(tmp, QString("information"));
+ stream.seek(388683);
+ stream >> tmp;
+ QCOMPARE(tmp, QString("telephone"));
+
+ // Also test this with a string
+ QString words = QLatin1String("thisisa");
+ QTextStream stream2(&words, QIODevice::ReadOnly);
+ stream2 >> tmp;
+ QCOMPARE(tmp, QString::fromLatin1("thisisa"));
+
+ for (int i = 0; i < 4; ++i) {
+ stream2.seek(i);
+ stream2 >> tmp;
+ QCOMPARE(tmp, QString("thisisa").mid(i));
+ }
+ for (int i = 0; i < 4; ++i) {
+ stream2.seek(4 - i);
+ stream2 >> tmp;
+ QCOMPARE(tmp, QString("thisisa").mid(4 - i));
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::pos()
+{
+ int argc = 1;
+ QCoreApplication app(argc, 0);
+ {
+ // Strings
+ QString str("this is a test");
+ QTextStream stream(&str, QIODevice::ReadWrite);
+
+ QCOMPARE(stream.pos(), qint64(0));
+ for (int i = 0; i <= str.size(); ++i) {
+ QVERIFY(stream.seek(i));
+ QCOMPARE(stream.pos(), qint64(i));
+ }
+ for (int j = str.size(); j >= 0; --j) {
+ QVERIFY(stream.seek(j));
+ QCOMPARE(stream.pos(), qint64(j));
+ }
+
+ QVERIFY(stream.seek(0));
+
+ QChar ch;
+ stream >> ch;
+ QCOMPARE(ch, QChar('t'));
+
+ QCOMPARE(stream.pos(), qint64(1));
+ QVERIFY(stream.seek(1));
+ QCOMPARE(stream.pos(), qint64(1));
+ QVERIFY(stream.seek(0));
+
+ QString strtmp;
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("this"));
+
+ QCOMPARE(stream.pos(), qint64(4));
+ stream.seek(0);
+ stream.seek(4);
+
+ stream >> ch;
+ QCOMPARE(ch, QChar(' '));
+ QCOMPARE(stream.pos(), qint64(5));
+
+ stream.seek(10);
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("test"));
+ QCOMPARE(stream.pos(), qint64(14));
+ }
+ {
+ // Latin1 device
+ QFile file(SRCDIR "rfc3261.txt");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+
+ QTextStream stream(&file);
+
+ QCOMPARE(stream.pos(), qint64(0));
+
+ for (int i = 0; i <= file.size(); i += 7) {
+ QVERIFY(stream.seek(i));
+ QCOMPARE(stream.pos(), qint64(i));
+ }
+ for (int j = file.size(); j >= 0; j -= 7) {
+ QVERIFY(stream.seek(j));
+ QCOMPARE(stream.pos(), qint64(j));
+ }
+
+ stream.seek(0);
+
+ QString strtmp;
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("Network"));
+ QCOMPARE(stream.pos(), qint64(19));
+
+ stream.seek(2598);
+ QCOMPARE(stream.pos(), qint64(2598));
+ stream >> strtmp;
+ QCOMPARE(stream.pos(), qint64(2607));
+ QCOMPARE(strtmp, QString("locations"));
+ }
+ {
+ // Shift-JIS device
+ for (int i = 0; i < 2; ++i) {
+ QFile file(SRCDIR "shift-jis.txt");
+ if (i == 0)
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ else
+ QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
+
+ QTextStream stream(&file);
+ stream.setCodec("Shift-JIS");
+ QVERIFY(stream.codec());
+
+ QCOMPARE(stream.pos(), qint64(0));
+ for (int i = 0; i <= file.size(); i += 7) {
+ QVERIFY(stream.seek(i));
+ QCOMPARE(stream.pos(), qint64(i));
+ }
+ for (int j = file.size(); j >= 0; j -= 7) {
+ QVERIFY(stream.seek(j));
+ QCOMPARE(stream.pos(), qint64(j));
+ }
+
+ stream.seek(2089);
+ QString strtmp;
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("AUnicode"));
+ QCOMPARE(stream.pos(), qint64(2097));
+
+ stream.seek(43325);
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("Shift-JIS"));
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString::fromUtf8("\343\201\247\346\233\270\343\201\213\343\202\214\343\201\237"));
+ QCOMPARE(stream.pos(), qint64(43345));
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("POD"));
+ QCOMPARE(stream.pos(), qint64(43349));
+ }
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::pos2()
+{
+ QByteArray data("abcdef\r\nghijkl\r\n");
+ QBuffer buffer(&data);
+ QVERIFY(buffer.open(QIODevice::ReadOnly | QIODevice::Text));
+
+ QTextStream stream(&buffer);
+
+ QChar ch;
+
+ QCOMPARE(stream.pos(), qint64(0));
+ stream >> ch;
+ QCOMPARE(ch, QChar('a'));
+ QCOMPARE(stream.pos(), qint64(1));
+
+ QString str;
+ stream >> str;
+ QCOMPARE(str, QString("bcdef"));
+ QCOMPARE(stream.pos(), qint64(6));
+
+ stream >> str;
+ QCOMPARE(str, QString("ghijkl"));
+ QCOMPARE(stream.pos(), qint64(14));
+
+ // Seek back and try again
+ stream.seek(1);
+ QCOMPARE(stream.pos(), qint64(1));
+ stream >> str;
+ QCOMPARE(str, QString("bcdef"));
+ QCOMPARE(stream.pos(), qint64(6));
+
+ stream.seek(6);
+ stream >> str;
+ QCOMPARE(str, QString("ghijkl"));
+ QCOMPARE(stream.pos(), qint64(14));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::pos3LargeFile()
+{
+ {
+ QFile file(TestFileName);
+ file.open(QIODevice::WriteOnly | QIODevice::Text);
+ QTextStream out( &file );
+ // NOTE: The unusual spacing is to ensure non-1-character whitespace.
+ QString lineString = " 0 1 2\t3 4\t \t5 6 7 8 9 \n";
+ // Approximate 50kb text file
+ const int NbLines = (50*1024) / lineString.length() + 1;
+ for (int line = 0; line < NbLines; ++line)
+ out << lineString;
+ // File is automatically flushed and closed on destruction.
+ }
+ QFile file(TestFileName);
+ file.open(QIODevice::ReadOnly | QIODevice::Text);
+ QTextStream in( &file );
+ const int testValues[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+ int value;
+ while (true) {
+ in.pos();
+ for ( int i = 0; i < 10; ++i ) {
+ in >> value;
+ if (in.status() != QTextStream::Ok) {
+ // End case, i == 0 && eof reached.
+ QCOMPARE(i, 0);
+ QCOMPARE(in.status(), QTextStream::ReadPastEnd);
+ return;
+ }
+ QCOMPARE(value, testValues[i]);
+ }
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readStdin()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Qt/CE and Symbian have no stdin/out support for processes", SkipAll);
+#endif
+ QProcess stdinProcess;
+ stdinProcess.start("stdinProcess/stdinProcess");
+ stdinProcess.setReadChannel(QProcess::StandardError);
+
+ QTextStream stream(&stdinProcess);
+ stream << "1" << endl;
+ stream << "2" << endl;
+ stream << "3" << endl;
+
+ stdinProcess.closeWriteChannel();
+
+ QVERIFY(stdinProcess.waitForFinished(5000));
+
+ int a, b, c;
+ stream >> a >> b >> c;
+ QCOMPARE(a, 1);
+ QCOMPARE(b, 2);
+ QCOMPARE(c, 3);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readAllFromStdin()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Qt/CE and Symbian have no stdin/out support for processes", SkipAll);
+#endif
+ QProcess stdinProcess;
+ stdinProcess.start("readAllStdinProcess/readAllStdinProcess", QIODevice::ReadWrite | QIODevice::Text);
+ stdinProcess.setReadChannel(QProcess::StandardError);
+
+ QTextStream stream(&stdinProcess);
+ stream.setCodec("ISO-8859-1");
+ stream << "hello world" << flush;
+
+ stdinProcess.closeWriteChannel();
+
+ QVERIFY(stdinProcess.waitForFinished(5000));
+ QChar quoteChar('"');
+ QCOMPARE(stream.readAll(), QString::fromLatin1("%1hello world%2 \n").arg(quoteChar).arg(quoteChar));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromStdin()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Qt/CE and Symbian have no stdin/out support for processes", SkipAll);
+#endif
+ QProcess stdinProcess;
+ stdinProcess.start("readLineStdinProcess/readLineStdinProcess", QIODevice::ReadWrite | QIODevice::Text);
+ stdinProcess.setReadChannel(QProcess::StandardError);
+
+ stdinProcess.write("abc\n");
+ QVERIFY(stdinProcess.waitForReadyRead(5000));
+ QCOMPARE(stdinProcess.readAll().data(), QByteArray("abc").data());
+
+ stdinProcess.write("def\n");
+ QVERIFY(stdinProcess.waitForReadyRead(5000));
+ QCOMPARE(stdinProcess.readAll(), QByteArray("def"));
+
+ stdinProcess.closeWriteChannel();
+
+ QVERIFY(stdinProcess.waitForFinished(5000));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::read()
+{
+ {
+ QFile::remove("testfile");
+ QFile file("testfile");
+ file.open(QFile::WriteOnly);
+ file.write("4.15 abc ole");
+ file.close();
+
+ QVERIFY(file.open(QFile::ReadOnly));
+ QTextStream stream(&file);
+ QCOMPARE(stream.read(0), QString(""));
+ QCOMPARE(stream.read(4), QString("4.15"));
+ QCOMPARE(stream.read(4), QString(" abc"));
+ stream.seek(1);
+ QCOMPARE(stream.read(4), QString(".15 "));
+ stream.seek(1);
+ QCOMPARE(stream.read(4), QString(".15 "));
+ stream.seek(2);
+ QCOMPARE(stream.read(4), QString("15 a"));
+ // ### add tests for reading \r\n etc..
+ }
+
+ {
+ // File larger than QTEXTSTREAM_BUFFERSIZE
+ QFile::remove("testfile");
+ QFile file("testfile");
+ file.open(QFile::WriteOnly);
+ for (int i = 0; i < 16384 / 8; ++i)
+ file.write("01234567");
+ file.write("0");
+ file.close();
+
+ QVERIFY(file.open(QFile::ReadOnly));
+ QTextStream stream(&file);
+ QCOMPARE(stream.read(10), QString("0123456701"));
+ QCOMPARE(stream.read(10), QString("2345670123"));
+ QCOMPARE(stream.readAll().size(), 16385-20);
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::qbool()
+{
+ QString s;
+ QTextStream stream(&s);
+ stream << s.contains(QString("hei"));
+ QCOMPARE(s, QString("0"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::forcePoint()
+{
+ QString str;
+ QTextStream stream(&str);
+ stream << fixed << forcepoint << 1.0 << " " << 1 << " " << 0 << " " << -1.0 << " " << -1;
+ QCOMPARE(str, QString("1.000000 1 0 -1.000000 -1"));
+
+ str.clear();
+ stream.seek(0);
+ stream << scientific << forcepoint << 1.0 << " " << 1 << " " << 0 << " " << -1.0 << " " << -1;
+ QCOMPARE(str, QString("1.000000e+00 1 0 -1.000000e+00 -1"));
+
+ str.clear();
+ stream.seek(0);
+ stream.setRealNumberNotation(QTextStream::SmartNotation);
+ stream << forcepoint << 1.0 << " " << 1 << " " << 0 << " " << -1.0 << " " << -1;
+ QCOMPARE(str, QString("1.00000 1 0 -1.00000 -1"));
+
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::forceSign()
+{
+ QString str;
+ QTextStream stream(&str);
+ stream << forcesign << 1.2 << " " << -1.2 << " " << 0;
+ QCOMPARE(str, QString("+1.2 -1.2 +0"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::read0d0d0a()
+{
+ QFile file("task113817.txt");
+ file.open(QIODevice::ReadOnly | QIODevice::Text);
+
+ QTextStream stream(&file);
+ while (!stream.atEnd())
+ stream.readLine();
+}
+
+// ------------------------------------------------------------------------------
+
+Q_DECLARE_METATYPE(QTextStreamFunction);
+
+QTextStream &noop(QTextStream &s) { return s; }
+
+void tst_QTextStream::numeralCase_data()
+{
+ QTextStreamFunction noop_ = noop;
+ QTextStreamFunction bin_ = bin;
+ QTextStreamFunction oct_ = oct;
+ QTextStreamFunction hex_ = hex;
+ QTextStreamFunction base = showbase;
+ QTextStreamFunction ucb = uppercasebase;
+ QTextStreamFunction lcb = lowercasebase;
+ QTextStreamFunction ucd = uppercasedigits;
+ QTextStreamFunction lcd = lowercasedigits;
+
+ QTest::addColumn<QTextStreamFunction>("func1");
+ QTest::addColumn<QTextStreamFunction>("func2");
+ QTest::addColumn<QTextStreamFunction>("func3");
+ QTest::addColumn<QTextStreamFunction>("func4");
+ QTest::addColumn<int>("value");
+ QTest::addColumn<QString>("expected");
+ QTest::newRow("dec 1") << noop_ << noop_ << noop_ << noop_ << 31 << "31";
+ QTest::newRow("dec 2") << noop_ << base << noop_ << noop_ << 31 << "31";
+
+ QTest::newRow("hex 1") << hex_ << noop_ << noop_ << noop_ << 31 << "1f";
+ QTest::newRow("hex 2") << hex_ << noop_ << noop_ << lcd << 31 << "1f";
+ QTest::newRow("hex 3") << hex_ << noop_ << ucb << noop_ << 31 << "1f";
+ QTest::newRow("hex 4") << hex_ << noop_ << noop_ << ucd << 31 << "1F";
+ QTest::newRow("hex 5") << hex_ << noop_ << lcb << ucd << 31 << "1F";
+ QTest::newRow("hex 6") << hex_ << noop_ << ucb << ucd << 31 << "1F";
+ QTest::newRow("hex 7") << hex_ << base << noop_ << noop_ << 31 << "0x1f";
+ QTest::newRow("hex 8") << hex_ << base << lcb << lcd << 31 << "0x1f";
+ QTest::newRow("hex 9") << hex_ << base << ucb << noop_ << 31 << "0X1f";
+ QTest::newRow("hex 10") << hex_ << base << ucb << lcd << 31 << "0X1f";
+ QTest::newRow("hex 11") << hex_ << base << noop_ << ucd << 31 << "0x1F";
+ QTest::newRow("hex 12") << hex_ << base << lcb << ucd << 31 << "0x1F";
+ QTest::newRow("hex 13") << hex_ << base << ucb << ucd << 31 << "0X1F";
+
+ QTest::newRow("bin 1") << bin_ << noop_ << noop_ << noop_ << 31 << "11111";
+ QTest::newRow("bin 2") << bin_ << base << noop_ << noop_ << 31 << "0b11111";
+ QTest::newRow("bin 3") << bin_ << base << lcb << noop_ << 31 << "0b11111";
+ QTest::newRow("bin 4") << bin_ << base << ucb << noop_ << 31 << "0B11111";
+ QTest::newRow("bin 5") << bin_ << base << noop_ << ucd << 31 << "0b11111";
+ QTest::newRow("bin 6") << bin_ << base << lcb << ucd << 31 << "0b11111";
+ QTest::newRow("bin 7") << bin_ << base << ucb << ucd << 31 << "0B11111";
+
+ QTest::newRow("oct 1") << oct_ << noop_ << noop_ << noop_ << 31 << "37";
+ QTest::newRow("oct 2") << oct_ << base << noop_ << noop_ << 31 << "037";
+}
+
+// From Task 125496
+void tst_QTextStream::numeralCase()
+{
+ QFETCH(QTextStreamFunction, func1);
+ QFETCH(QTextStreamFunction, func2);
+ QFETCH(QTextStreamFunction, func3);
+ QFETCH(QTextStreamFunction, func4);
+ QFETCH(int, value);
+ QFETCH(QString, expected);
+
+ QString str;
+ QTextStream stream(&str);
+ stream << func1 << func2 << func3 << func4 << value;
+ QCOMPARE(str, expected);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::nanInf()
+{
+ // Cannot use test data in this function, as comparing nans and infs isn't
+ // well defined.
+ QString str("nan NAN nAn +nan +NAN +nAn -nan -NAN -nAn"
+ " inf INF iNf +inf +INF +iNf -inf -INF -iNf");
+
+ QTextStream stream(&str);
+
+ double tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0;
+
+ stream.seek(0);
+
+ float tmpF = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0);
+
+ QString s;
+ QTextStream out(&s);
+ out << qInf() << " " << -qInf() << " " << qQNaN()
+ << uppercasedigits << " "
+ << qInf() << " " << -qInf() << " " << qQNaN()
+ << flush;
+
+ QCOMPARE(s, QString("inf -inf nan INF -INF NAN"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::utf8IncompleteAtBufferBoundary_data()
+{
+ QTest::addColumn<bool>("useLocale");
+
+ QTest::newRow("utf8") << false;
+
+ // is this locale UTF-8?
+ if (QString(QChar::ReplacementCharacter).toLocal8Bit() == "\xef\xbf\xbd")
+ QTest::newRow("locale") << true;
+}
+
+void tst_QTextStream::utf8IncompleteAtBufferBoundary()
+{
+ QFile::remove(TestFileName);
+ QFile data(TestFileName);
+
+ QTextCodec *utf8Codec = QTextCodec::codecForMib(106);
+ QString lineContents = QString::fromUtf8("\342\200\223" // U+2013 EN DASH
+ "\342\200\223"
+ "\342\200\223"
+ "\342\200\223"
+ "\342\200\223"
+ "\342\200\223");
+
+ data.open(QFile::WriteOnly | QFile::Truncate);
+ {
+ QTextStream out(&data);
+ out.setCodec(utf8Codec);
+ out.setFieldWidth(3);
+
+ for (int i = 0; i < 1000; ++i) {
+ out << i << lineContents << endl;
+ }
+ }
+ data.close();
+
+ data.open(QFile::ReadOnly);
+ QTextStream in(&data);
+
+ QFETCH(bool, useLocale);
+ if (!useLocale)
+ in.setCodec(utf8Codec); // QUtf8Codec
+ else
+ in.setCodec(QTextCodec::codecForLocale());
+
+ int i = 0;
+ do {
+ QString line = in.readLine().trimmed();
+ ++i;
+ QVERIFY2(line.endsWith(lineContents), QString("Line %1: %2").arg(i).arg(line).toLocal8Bit());
+ } while (!in.atEnd());
+}
+
+// ------------------------------------------------------------------------------
+
+// Make sure we don't write a BOM after seek()ing
+
+void tst_QTextStream::writeSeekWriteNoBOM()
+{
+
+ //First with the default codec (normally either latin-1 or UTF-8)
+
+ QBuffer out;
+ out.open(QIODevice::WriteOnly);
+ QTextStream stream(&out);
+
+ int number = 0;
+ QString sizeStr = QLatin1String("Size=")
+ + QString::number(number).rightJustified(10, QLatin1Char('0'));
+ stream << sizeStr << endl;
+ stream << "Version=" << QString::number(14) << endl;
+ stream << "blah blah blah" << endl;
+ stream.flush();
+
+ QCOMPARE(out.buffer().constData(), "Size=0000000000\nVersion=14\nblah blah blah\n");
+
+ // Now overwrite the size header item
+ number = 42;
+ stream.seek(0);
+ sizeStr = QLatin1String("Size=")
+ + QString::number(number).rightJustified(10, QLatin1Char('0'));
+ stream << sizeStr << endl;
+ stream.flush();
+
+ // Check buffer is still OK
+ QCOMPARE(out.buffer().constData(), "Size=0000000042\nVersion=14\nblah blah blah\n");
+
+
+ //Then UTF-16
+
+ QBuffer out16;
+ out16.open(QIODevice::WriteOnly);
+ QTextStream stream16(&out16);
+ stream16.setCodec("UTF-16");
+
+ stream16 << "one" << "two" << QLatin1String("three");
+ stream16.flush();
+
+ // save that output
+ QByteArray first = out16.buffer();
+
+ stream16.seek(0);
+ stream16 << "one";
+ stream16.flush();
+
+ QCOMPARE(out16.buffer(), first);
+}
+
+
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateOperatorCharData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<QChar>("qchar_output");
+ QTest::addColumn<char>("char_output");
+ QTest::addColumn<QByteArray>("write_output");
+
+ QTest::newRow("empty") << QByteArray() << QChar('\0') << '\0' << QByteArray("\0", 1);
+ QTest::newRow("a") << QByteArray("a") << QChar('a') << 'a' << QByteArray("a");
+ QTest::newRow("\\na") << QByteArray("\na") << QChar('\n') << '\n' << QByteArray("\n");
+ QTest::newRow("\\0") << QByteArray("\0") << QChar('\0') << '\0' << QByteArray("\0", 1);
+ QTest::newRow("\\xff") << QByteArray("\xff") << QChar('\xff') << '\xff' << QByteArray("\xff");
+ QTest::newRow("\\xfe") << QByteArray("\xfe") << QChar('\xfe') << '\xfe' << QByteArray("\xfe");
+
+ if (!for_QString) {
+ QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << QChar('\0') << '\0' << QByteArray("\0", 1);
+ QTest::newRow("utf16-BE (a)") << QByteArray("\xff\xfe\x61\x00", 4) << QChar('a') << 'a' << QByteArray("a");
+ QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << QChar('\0') << '\0' << QByteArray("\0", 1);
+ QTest::newRow("utf16-LE (a)") << QByteArray("\xfe\xff\x00\x61", 4) << QChar('a') << 'a' << QByteArray("a");
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::QChar_operators_FromDevice_data()
+{
+ generateOperatorCharData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::QChar_operators_FromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QChar, qchar_output);
+ QFETCH(QByteArray, write_output);
+
+ QBuffer buf(&input);
+ buf.open(QBuffer::ReadOnly);
+ QTextStream stream(&buf);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ QChar tmp;
+ stream >> tmp;
+ QCOMPARE(tmp, qchar_output);
+
+ QBuffer writeBuf;
+ writeBuf.open(QBuffer::WriteOnly);
+
+ QTextStream writeStream(&writeBuf);
+ writeStream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ writeStream << qchar_output;
+ writeStream.flush();
+
+ QCOMPARE(writeBuf.buffer().size(), write_output.size());
+ QCOMPARE(writeBuf.buffer().constData(), write_output.constData());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::char_operators_FromDevice_data()
+{
+ generateOperatorCharData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::char_operators_FromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(char, char_output);
+ QFETCH(QByteArray, write_output);
+
+ QBuffer buf(&input);
+ buf.open(QBuffer::ReadOnly);
+ QTextStream stream(&buf);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ char tmp;
+ stream >> tmp;
+ QCOMPARE(tmp, char_output);
+
+ QBuffer writeBuf;
+ writeBuf.open(QBuffer::WriteOnly);
+
+ QTextStream writeStream(&writeBuf);
+ writeStream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ writeStream << char_output;
+ writeStream.flush();
+
+ QCOMPARE(writeBuf.buffer().size(), write_output.size());
+ QCOMPARE(writeBuf.buffer().constData(), write_output.constData());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateNaturalNumbersData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<qulonglong>("output");
+
+ QTest::newRow("empty") << QByteArray() << qulonglong(0);
+ QTest::newRow("a") << QByteArray("a") << qulonglong(0);
+ QTest::newRow(" ") << QByteArray(" ") << qulonglong(0);
+ QTest::newRow("0") << QByteArray("0") << qulonglong(0);
+ QTest::newRow("1") << QByteArray("1") << qulonglong(1);
+ QTest::newRow("12") << QByteArray("12") << qulonglong(12);
+ QTest::newRow("-12") << QByteArray("-12") << qulonglong(-12);
+ QTest::newRow("-0") << QByteArray("-0") << qulonglong(0);
+ QTest::newRow(" 1") << QByteArray(" 1") << qulonglong(1);
+ QTest::newRow(" \\r\\n\\r\\n123") << QByteArray(" \r\n\r\n123") << qulonglong(123);
+
+ // bit boundary tests
+ QTest::newRow("127") << QByteArray("127") << qulonglong(127);
+ QTest::newRow("128") << QByteArray("128") << qulonglong(128);
+ QTest::newRow("129") << QByteArray("129") << qulonglong(129);
+ QTest::newRow("-127") << QByteArray("-127") << qulonglong(-127);
+ QTest::newRow("-128") << QByteArray("-128") << qulonglong(-128);
+ QTest::newRow("-129") << QByteArray("-129") << qulonglong(-129);
+ QTest::newRow("32767") << QByteArray("32767") << qulonglong(32767);
+ QTest::newRow("32768") << QByteArray("32768") << qulonglong(32768);
+ QTest::newRow("32769") << QByteArray("32769") << qulonglong(32769);
+ QTest::newRow("-32767") << QByteArray("-32767") << qulonglong(-32767);
+ QTest::newRow("-32768") << QByteArray("-32768") << qulonglong(-32768);
+ QTest::newRow("-32769") << QByteArray("-32769") << qulonglong(-32769);
+ QTest::newRow("65537") << QByteArray("65537") << qulonglong(65537);
+ QTest::newRow("65536") << QByteArray("65536") << qulonglong(65536);
+ QTest::newRow("65535") << QByteArray("65535") << qulonglong(65535);
+ QTest::newRow("-65537") << QByteArray("-65537") << qulonglong(-65537);
+ QTest::newRow("-65536") << QByteArray("-65536") << qulonglong(-65536);
+ QTest::newRow("-65535") << QByteArray("-65535") << qulonglong(-65535);
+ QTest::newRow("2147483646") << QByteArray("2147483646") << qulonglong(2147483646);
+ QTest::newRow("2147483647") << QByteArray("2147483647") << qulonglong(2147483647);
+ QTest::newRow("2147483648") << QByteArray("2147483648") << Q_UINT64_C(2147483648);
+ QTest::newRow("-2147483646") << QByteArray("-2147483646") << qulonglong(-2147483646);
+ QTest::newRow("-2147483647") << QByteArray("-2147483647") << qulonglong(-2147483647);
+ QTest::newRow("-2147483648") << QByteArray("-2147483648") << Q_UINT64_C(-2147483648);
+ QTest::newRow("4294967296") << QByteArray("4294967296") << Q_UINT64_C(4294967296);
+ QTest::newRow("4294967297") << QByteArray("4294967297") << Q_UINT64_C(4294967297);
+ QTest::newRow("4294967298") << QByteArray("4294967298") << Q_UINT64_C(4294967298);
+ QTest::newRow("-4294967296") << QByteArray("-4294967296") << Q_UINT64_C(-4294967296);
+ QTest::newRow("-4294967297") << QByteArray("-4294967297") << Q_UINT64_C(-4294967297);
+ QTest::newRow("-4294967298") << QByteArray("-4294967298") << Q_UINT64_C(-4294967298);
+ QTest::newRow("9223372036854775807") << QByteArray("9223372036854775807") << Q_UINT64_C(9223372036854775807);
+ QTest::newRow("9223372036854775808") << QByteArray("9223372036854775808") << Q_UINT64_C(9223372036854775808);
+ QTest::newRow("9223372036854775809") << QByteArray("9223372036854775809") << Q_UINT64_C(9223372036854775809);
+ QTest::newRow("18446744073709551615") << QByteArray("18446744073709551615") << Q_UINT64_C(18446744073709551615);
+ QTest::newRow("18446744073709551616") << QByteArray("18446744073709551616") << Q_UINT64_C(0);
+ QTest::newRow("18446744073709551617") << QByteArray("18446744073709551617") << Q_UINT64_C(1);
+ // 18446744073709551617 bytes should be enough for anyone.... ;-)
+
+ // hex tests
+ QTest::newRow("0x0") << QByteArray("0x0") << qulonglong(0);
+ QTest::newRow("0x") << QByteArray("0x") << qulonglong(0);
+ QTest::newRow("0x1") << QByteArray("0x1") << qulonglong(1);
+ QTest::newRow("0xf") << QByteArray("0xf") << qulonglong(15);
+ QTest::newRow("0xdeadbeef") << QByteArray("0xdeadbeef") << Q_UINT64_C(3735928559);
+ QTest::newRow("0XDEADBEEF") << QByteArray("0XDEADBEEF") << Q_UINT64_C(3735928559);
+ QTest::newRow("0xdeadbeefZzzzz") << QByteArray("0xdeadbeefZzzzz") << Q_UINT64_C(3735928559);
+ QTest::newRow(" 0xdeadbeefZzzzz") << QByteArray(" 0xdeadbeefZzzzz") << Q_UINT64_C(3735928559);
+
+ // oct tests
+ QTest::newRow("00") << QByteArray("00") << qulonglong(0);
+ QTest::newRow("0141") << QByteArray("0141") << qulonglong(97);
+ QTest::newRow("01419999") << QByteArray("01419999") << qulonglong(97);
+ QTest::newRow(" 01419999") << QByteArray(" 01419999") << qulonglong(97);
+
+ // bin tests
+ QTest::newRow("0b0") << QByteArray("0b0") << qulonglong(0);
+ QTest::newRow("0b1") << QByteArray("0b1") << qulonglong(1);
+ QTest::newRow("0b10") << QByteArray("0b10") << qulonglong(2);
+ QTest::newRow("0B10") << QByteArray("0B10") << qulonglong(2);
+ QTest::newRow("0b101010") << QByteArray("0b101010") << qulonglong(42);
+ QTest::newRow("0b1010102345") << QByteArray("0b1010102345") << qulonglong(42);
+ QTest::newRow(" 0b1010102345") << QByteArray(" 0b1010102345") << qulonglong(42);
+
+ // utf-16 tests
+ if (!for_QString) {
+ QTest::newRow("utf16-BE (empty)") << QByteArray("\xfe\xff", 2) << qulonglong(0);
+ QTest::newRow("utf16-BE (0xdeadbeef)")
+ << QByteArray("\xfe\xff"
+ "\x00\x30\x00\x78\x00\x64\x00\x65\x00\x61\x00\x64\x00\x62\x00\x65\x00\x65\x00\x66", 22)
+ << Q_UINT64_C(3735928559);
+ QTest::newRow("utf16-LE (empty)") << QByteArray("\xff\xfe", 2) << Q_UINT64_C(0);
+ QTest::newRow("utf16-LE (0xdeadbeef)")
+ << QByteArray("\xff\xfe"
+ "\x30\x00\x78\x00\x64\x00\x65\x00\x61\x00\x64\x00\x62\x00\x65\x00\x65\x00\x66\x00", 22)
+ << Q_UINT64_C(3735928559);
+ }
+}
+
+// ------------------------------------------------------------------------------
+#define IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(texttype, type) \
+ void tst_QTextStream:: texttype##_read_operator_FromDevice_data() \
+ { generateNaturalNumbersData(false); } \
+ void tst_QTextStream:: texttype##_read_operator_FromDevice() \
+ { \
+ QFETCH(QByteArray, input); \
+ QFETCH(qulonglong, output); \
+ type sh; \
+ QTextStream stream(&input); \
+ stream >> sh; \
+ QCOMPARE(sh, (type)output); \
+ }
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(signedShort, signed short)
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(unsignedShort, unsigned short)
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(signedInt, signed int)
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(unsignedInt, unsigned int)
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(qlonglong, qlonglong)
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(qulonglong, qulonglong)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateRealNumbersData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<double>("output");
+
+ QTest::newRow("empty") << QByteArray() << 0.0;
+ QTest::newRow("a") << QByteArray("a") << 0.0;
+ QTest::newRow("1.0") << QByteArray("1.0") << 1.0;
+ QTest::newRow(" 1") << QByteArray(" 1") << 1.0;
+ QTest::newRow(" \\r\\n1.2") << QByteArray(" \r\n1.2") << 1.2;
+ QTest::newRow("3.14") << QByteArray("3.14") << 3.14;
+ QTest::newRow("-3.14") << QByteArray("-3.14") << -3.14;
+ QTest::newRow(" -3.14") << QByteArray(" -3.14") << -3.14;
+ QTest::newRow("314e-02") << QByteArray("314e-02") << 3.14;
+ QTest::newRow("314E-02") << QByteArray("314E-02") << 3.14;
+ QTest::newRow("314e+02") << QByteArray("314e+02") << 31400.;
+ QTest::newRow("314E+02") << QByteArray("314E+02") << 31400.;
+
+ // ### add numbers with exponents
+
+ if (!for_QString) {
+ QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << 0.0;
+ QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << 0.0;
+ }
+}
+
+// ------------------------------------------------------------------------------
+#define IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(texttype, type) \
+ void tst_QTextStream:: texttype##_read_operator_FromDevice_data() \
+ { generateRealNumbersData(false); } \
+ void tst_QTextStream:: texttype##_read_operator_FromDevice() \
+ { \
+ QFETCH(QByteArray, input); \
+ QFETCH(double, output); \
+ type sh; \
+ QTextStream stream(&input); \
+ stream >> sh; \
+ QCOMPARE(sh, (type)output); \
+ }
+IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(float, float)
+IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(double, double)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateStringData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<QByteArray>("array_output");
+ QTest::addColumn<QString>("string_output");
+
+ QTest::newRow("empty") << QByteArray() << QByteArray() << QString();
+ QTest::newRow("a") << QByteArray("a") << QByteArray("a") << QString("a");
+ QTest::newRow("a b") << QByteArray("a b") << QByteArray("a") << QString("a");
+ QTest::newRow(" a b") << QByteArray(" a b") << QByteArray("a") << QString("a");
+ QTest::newRow("a1") << QByteArray("a1") << QByteArray("a1") << QString("a1");
+ QTest::newRow("a1 b1") << QByteArray("a1 b1") << QByteArray("a1") << QString("a1");
+ QTest::newRow(" a1 b1") << QByteArray(" a1 b1") << QByteArray("a1") << QString("a1");
+ QTest::newRow("\\n\\n\\nole i dole\\n") << QByteArray("\n\n\nole i dole\n") << QByteArray("ole") << QString("ole");
+
+ if (!for_QString) {
+ QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << QByteArray() << QString();
+ QTest::newRow("utf16-BE (corrupt)") << QByteArray("\xff", 1) << QByteArray("\xff") << QString("\xff");
+ QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << QByteArray() << QString();
+ QTest::newRow("utf16-LE (corrupt)") << QByteArray("\xfe", 1) << QByteArray("\xfe") << QString("\xfe");
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::charPtr_read_operator_FromDevice_data()
+{
+ generateStringData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::charPtr_read_operator_FromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QByteArray, array_output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly);
+ QTextStream stream(&buffer);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ char buf[1024];
+ stream >> buf;
+
+ QCOMPARE((const char *)buf, array_output.constData());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::stringRef_read_operator_FromDevice_data()
+{
+ generateStringData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::stringRef_read_operator_FromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QString, string_output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly);
+ QTextStream stream(&buffer);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ QString tmp;
+ stream >> tmp;
+
+ QCOMPARE(tmp, string_output);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::byteArray_read_operator_FromDevice_data()
+{
+ generateStringData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::byteArray_read_operator_FromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QByteArray, array_output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly);
+ QTextStream stream(&buffer);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ QByteArray array;
+ stream >> array;
+
+ QCOMPARE(array, array_output);
+}
+
+// ------------------------------------------------------------------------------
+#define IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(texttype, type) \
+ void tst_QTextStream:: texttype##_write_operator_ToDevice() \
+ { \
+ QFETCH(qulonglong, number); \
+ QFETCH(QByteArray, data); \
+ \
+ QBuffer buffer; \
+ buffer.open(QBuffer::WriteOnly); \
+ QTextStream stream(&buffer); \
+ stream << (type)number; \
+ stream.flush(); \
+ \
+ QCOMPARE(buffer.data().constData(), data.constData()); \
+ }
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::signedShort_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("-1");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("-32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("-32767");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("-1");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("0");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("1");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedShort, signed short)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::unsignedShort_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("65535");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("0");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("1");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(unsignedShort, unsigned short)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::signedInt_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("-1");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
+ QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
+ QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("-2147483648");
+ QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("-2147483647");
+ QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("-1");
+ QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("0");
+ QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("1");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedInt, signed int)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::unsignedInt_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("4294967295");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
+ QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
+ QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648");
+ QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649");
+ QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295");
+ QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("0");
+ QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("1");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(unsignedInt, unsigned int)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::qlonglong_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("-1");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
+ QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
+ QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648");
+ QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649");
+ QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295");
+ QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("4294967296");
+ QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("4294967297");
+ QTest::newRow("9223372036854775807") << Q_UINT64_C(9223372036854775807) << QByteArray("9223372036854775807");
+ QTest::newRow("9223372036854775808") << Q_UINT64_C(9223372036854775808) << QByteArray("-9223372036854775808");
+ QTest::newRow("9223372036854775809") << Q_UINT64_C(9223372036854775809) << QByteArray("-9223372036854775807");
+ QTest::newRow("18446744073709551615") << Q_UINT64_C(18446744073709551615) << QByteArray("-1");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(qlonglong, qlonglong)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::qulonglong_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("18446744073709551615");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
+ QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
+ QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648");
+ QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649");
+ QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295");
+ QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("4294967296");
+ QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("4294967297");
+ QTest::newRow("9223372036854775807") << Q_UINT64_C(9223372036854775807) << QByteArray("9223372036854775807");
+ QTest::newRow("9223372036854775808") << Q_UINT64_C(9223372036854775808) << QByteArray("9223372036854775808");
+ QTest::newRow("9223372036854775809") << Q_UINT64_C(9223372036854775809) << QByteArray("9223372036854775809");
+ QTest::newRow("18446744073709551615") << Q_UINT64_C(18446744073709551615) << QByteArray("18446744073709551615");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(qulonglong, qulonglong)
+ ;
+
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateRealNumbersDataWrite()
+{
+ QTest::addColumn<double>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << 0.0 << QByteArray("0");
+ QTest::newRow("3.14") << 3.14 << QByteArray("3.14");
+ QTest::newRow("-3.14") << -3.14 << QByteArray("-3.14");
+ QTest::newRow("1.2e+10") << 1.2e+10 << QByteArray("1.2e+10");
+ QTest::newRow("-1.2e+10") << -1.2e+10 << QByteArray("-1.2e+10");
+}
+
+// ------------------------------------------------------------------------------
+#define IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(texttype, type) \
+ void tst_QTextStream:: texttype##_write_operator_ToDevice_data() \
+ { generateRealNumbersDataWrite(); } \
+ void tst_QTextStream:: texttype##_write_operator_ToDevice() \
+ { \
+ QFETCH(double, number); \
+ QFETCH(QByteArray, data); \
+ \
+ QBuffer buffer; \
+ buffer.open(QBuffer::WriteOnly); \
+ QTextStream stream(&buffer); \
+ float f = (float)number; \
+ stream << f; \
+ stream.flush(); \
+ QCOMPARE(buffer.data().constData(), data.constData()); \
+ }
+IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(float, float)
+IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(double, float)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::string_write_operator_ToDevice_data()
+{
+ QTest::addColumn<QByteArray>("bytedata");
+ QTest::addColumn<QString>("stringdata");
+ QTest::addColumn<QByteArray>("result");
+
+ QTest::newRow("empty") << QByteArray("", 1) << QString(1, '\0') << QByteArray("", 1);
+ QTest::newRow("a") << QByteArray("a") << QString("a") << QByteArray("a");
+ QTest::newRow("a cow jumped over the moon")
+ << QByteArray("a cow jumped over the moon")
+ << QString("a cow jumped over the moon")
+ << QByteArray("a cow jumped over the moon");
+
+ // ### get the utf16-be test on its legs.
+ /*
+ QTest::newRow("utf16-BE (a cow jumped over the moon)")
+ << QByteArray("\xff\xfe\x00\x61\x00\x20\x00\x63\x00\x6f\x00\x77\x00\x20\x00\x6a\x00\x75\x00\x6d\x00\x70\x00\x65\x00\x64\x00\x20\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x20\x00\x74\x00\x68\x00\x65\x00\x20\x00\x6d\x00\x6f\x00\x6f\x00\x6e\x00\x0a", 56)
+ << QString("a cow jumped over the moon")
+ << QByteArray("a cow jumped over the moon");
+ */
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::string_write_operator_ToDevice()
+{
+ QFETCH(QByteArray, bytedata);
+ QFETCH(QString, stringdata);
+ QFETCH(QByteArray, result);
+
+ {
+ // char*
+ QBuffer buf;
+ buf.open(QBuffer::WriteOnly);
+ QTextStream stream(&buf);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream << bytedata.constData();
+ stream.flush();
+ QCOMPARE(buf.buffer().constData(), result.constData());
+ }
+ {
+ // QByteArray
+ QBuffer buf;
+ buf.open(QBuffer::WriteOnly);
+ QTextStream stream(&buf);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream << bytedata;
+ stream.flush();
+ QCOMPARE(buf.buffer().constData(), result.constData());
+ }
+ {
+ // QString
+ QBuffer buf;
+ buf.open(QBuffer::WriteOnly);
+ QTextStream stream(&buf);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream << stringdata;
+ stream.flush();
+ QCOMPARE(buf.buffer().constData(), result.constData());
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::useCase1()
+{
+ QFile::remove("testfile");
+ QFile file("testfile");
+ QVERIFY(file.open(QFile::ReadWrite));
+
+ {
+ QTextStream stream(&file);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream << 4.15 << " " << QByteArray("abc") << " " << QString("ole");
+ }
+
+ file.seek(0);
+ QCOMPARE(file.readAll(), QByteArray("4.15 abc ole"));
+ file.seek(0);
+
+ {
+ double d;
+ QByteArray a;
+ QString s;
+ QTextStream stream(&file);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream >> d;
+ stream >> a;
+ stream >> s;
+
+ QCOMPARE(d, 4.15);
+ QCOMPARE(a, QByteArray("abc"));
+ QCOMPARE(s, QString("ole"));
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::useCase2()
+{
+ QFile::remove("testfile");
+ QFile file("testfile");
+ QVERIFY(file.open(QFile::ReadWrite));
+
+ QTextStream stream(&file);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream << 4.15 << " " << QByteArray("abc") << " " << QString("ole");
+
+ file.close();
+ QVERIFY(file.open(QFile::ReadWrite));
+
+ QCOMPARE(file.readAll(), QByteArray("4.15 abc ole"));
+
+ file.close();
+ QVERIFY(file.open(QFile::ReadWrite));
+
+ double d;
+ QByteArray a;
+ QString s;
+ QTextStream stream2(&file);
+ stream2.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream2.setAutoDetectUnicode(true);
+
+ stream2 >> d;
+ stream2 >> a;
+ stream2 >> s;
+
+ QCOMPARE(d, 4.15);
+ QCOMPARE(a, QByteArray("abc"));
+ QCOMPARE(s, QString("ole"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::manipulators_data()
+{
+ QTest::addColumn<int>("flags");
+ QTest::addColumn<int>("width");
+ QTest::addColumn<double>("realNumber");
+ QTest::addColumn<int>("intNumber");
+ QTest::addColumn<QString>("textData");
+ QTest::addColumn<QByteArray>("result");
+
+ QTest::newRow("no flags") << 0 << 0 << 5.0 << 5 << QString("five") << QByteArray("55five");
+ QTest::newRow("rightadjust") << 0 << 10 << 5.0 << 5 << QString("five") << QByteArray(" 5 5 five");
+
+ // ### FIX
+// QTest::newRow("leftadjust") << int(QTextStream::left) << 10 << 5.0 << 5 << QString("five") << QByteArray("5 5 five ");
+// QTest::newRow("showpos") << int(QTextStream::showpos) << 10 << 5.0 << 5 << QString("five") << QByteArray(" +5 +5 five");
+// QTest::newRow("showpos2") << int(QTextStream::showpos) << 5 << 3.14 << -5 << QString("five") << QByteArray("+3.14 -5 five");
+// QTest::newRow("hex") << int(QTextStream::hex | QTextStream::showbase) << 5 << 3.14 << -5 << QString("five") << QByteArray(" 3.14 -0x5 five");
+// QTest::newRow("hex uppercase") << int(QTextStream::hex | QTextStream::uppercase | QTextStream::showbase) << 5 << 3.14 << -5 << QString("five") << QByteArray(" 3.14 -0X5 five");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::manipulators()
+{
+// QFETCH(int, flags);
+ QFETCH(int, width);
+ QFETCH(double, realNumber);
+ QFETCH(int, intNumber);
+ QFETCH(QString, textData);
+ QFETCH(QByteArray, result);
+
+ QBuffer buffer;
+ buffer.open(QBuffer::WriteOnly);
+
+ QTextStream stream(&buffer);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+// stream.setFlags(flags);
+ stream.setFieldWidth(width);
+ stream << realNumber;
+ stream << intNumber;
+ stream << textData;
+ stream.flush();
+
+ QCOMPARE(buffer.data().constData(), result.constData());
+}
+
+void tst_QTextStream::generateBOM()
+{
+ QFile::remove("bom.txt");
+ {
+ QFile file("bom.txt");
+ QVERIFY(file.open(QFile::ReadWrite | QFile::Truncate));
+
+ QTextStream stream(&file);
+ stream.setCodec(QTextCodec::codecForName("UTF-16LE"));
+ stream << "Hello" << endl;
+
+ file.close();
+ QVERIFY(file.open(QFile::ReadOnly));
+ QCOMPARE(file.readAll(), QByteArray("\x48\x00\x65\00\x6c\00\x6c\00\x6f\x00\x0a\x00", 12));
+ }
+
+ QFile::remove("bom.txt");
+ {
+ QFile file("bom.txt");
+ QVERIFY(file.open(QFile::ReadWrite | QFile::Truncate));
+
+ QTextStream stream(&file);
+ stream.setCodec(QTextCodec::codecForName("UTF-16LE"));
+ stream << bom << "Hello" << endl;
+
+ file.close();
+ QVERIFY(file.open(QFile::ReadOnly));
+ QCOMPARE(file.readAll(), QByteArray("\xff\xfe\x48\x00\x65\00\x6c\00\x6c\00\x6f\x00\x0a\x00", 14));
+ }
+}
+
+void tst_QTextStream::readBomSeekBackReadBomAgain()
+{
+ QFile::remove("utf8bom");
+ QFile file("utf8bom");
+ QVERIFY(file.open(QFile::ReadWrite));
+ file.write("\xef\xbb\xbf" "Andreas");
+ file.seek(0);
+ QCOMPARE(file.pos(), qint64(0));
+
+ QTextStream stream(&file);
+ stream.setCodec("UTF-8");
+ QString Andreas;
+ stream >> Andreas;
+ QCOMPARE(Andreas, QString("Andreas"));
+ stream.seek(0);
+ stream >> Andreas;
+ QCOMPARE(Andreas, QString("Andreas"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::status_real_read_data()
+{
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<double>("expected_f");
+ QTest::addColumn<QString>("expected_w");
+ QTest::addColumn<QList<int> >("results");
+
+ QTest::newRow("1.23 abc ") << QString("1.23 abc ") << 1.23 << QString("abc")
+ << (QList<int>()
+ << (int)QTextStream::Ok
+ << (int)QTextStream::ReadCorruptData
+ << (int)QTextStream::Ok
+ << (int)QTextStream::Ok
+ << (int)QTextStream::ReadPastEnd);
+}
+
+void tst_QTextStream::status_real_read()
+{
+ QFETCH(QString, input);
+ QFETCH(double, expected_f);
+ QFETCH(QString, expected_w);
+ QFETCH(QList<int>, results);
+
+ QTextStream s(&input);
+ double f = 0.0;
+ QString w;
+ s >> f;
+ QCOMPARE((int)s.status(), results.at(0));
+ QCOMPARE(f, expected_f);
+ s >> f;
+ QCOMPARE((int)s.status(), results.at(1));
+ s.resetStatus();
+ QCOMPARE((int)s.status(), results.at(2));
+ s >> w;
+ QCOMPARE((int)s.status(), results.at(3));
+ QCOMPARE(w, expected_w);
+ s >> f;
+ QCOMPARE((int)s.status(), results.at(4));
+}
+
+void tst_QTextStream::status_integer_read()
+{
+#ifdef Q_OS_WINCE
+ QString text = QLatin1String("123 abc ");
+ QTextStream s(&text);
+#else
+ QTextStream s("123 abc ");
+#endif
+ int i;
+ QString w;
+ s >> i;
+ QCOMPARE(s.status(), QTextStream::Ok);
+ s >> i;
+ QCOMPARE(s.status(), QTextStream::ReadCorruptData);
+ s.resetStatus();
+ QCOMPARE(s.status(), QTextStream::Ok);
+ s >> w;
+ QCOMPARE(s.status(), QTextStream::Ok);
+ QCOMPARE(w, QString("abc"));
+ s >> i;
+ QCOMPARE(s.status(), QTextStream::ReadPastEnd);
+}
+
+void tst_QTextStream::status_word_read()
+{
+#ifdef Q_OS_WINCE
+ QString text = QLatin1String("abc ");
+ QTextStream s(&text);
+#else
+ QTextStream s("abc ");
+#endif
+ QString w;
+ s >> w;
+ QCOMPARE(s.status(), QTextStream::Ok);
+ s >> w;
+ QCOMPARE(s.status(), QTextStream::ReadPastEnd);
+}
+
+class FakeBuffer : public QBuffer
+{
+protected:
+ qint64 writeData(const char *c, qint64 i) { return m_lock ? 0 : QBuffer::writeData(c, i); }
+public:
+ FakeBuffer(bool locked = false) : m_lock(locked) {}
+ void setLocked(bool locked) { m_lock = locked; }
+private:
+ bool m_lock;
+};
+
+void tst_QTextStream::status_write_error()
+{
+ FakeBuffer fb(false);
+ QVERIFY(fb.open(QBuffer::ReadWrite));
+ QTextStream fs(&fb);
+ fs.setCodec(QTextCodec::codecForName("latin1"));
+ /* first write some initial content */
+ fs << "hello";
+ fs.flush();
+ QCOMPARE(fs.status(), QTextStream::Ok);
+ QCOMPARE(fb.data(), QByteArray("hello"));
+ /* then test that writing can cause an error */
+ fb.setLocked(true);
+ fs << "error";
+ fs.flush();
+ QCOMPARE(fs.status(), QTextStream::WriteFailed);
+ QCOMPARE(fb.data(), QByteArray("hello"));
+ /* finally test that writing after an error doesn't change the stream any more */
+ fb.setLocked(false);
+ fs << "can't do that";
+ fs.flush();
+ QCOMPARE(fs.status(), QTextStream::WriteFailed);
+ QCOMPARE(fb.data(), QByteArray("hello"));
+}
+
+void tst_QTextStream::task180679_alignAccountingStyle()
+{
+ {
+ QString result;
+ QTextStream out(&result);
+ out.setFieldAlignment(QTextStream::AlignAccountingStyle);
+ out.setFieldWidth(4);
+ out.setPadChar('0');
+ out << -1;
+ QCOMPARE(result, QLatin1String("-001"));
+ }
+
+ {
+ QString result;
+ QTextStream out(&result);
+ out.setFieldAlignment(QTextStream::AlignAccountingStyle);
+ out.setFieldWidth(4);
+ out.setPadChar('0');
+ out << "-1";
+ QCOMPARE(result, QLatin1String("00-1"));
+ }
+
+ {
+ QString result;
+ QTextStream out(&result);
+ out.setFieldAlignment(QTextStream::AlignAccountingStyle);
+ out.setFieldWidth(6);
+ out.setPadChar('0');
+ out << -1.2;
+ QCOMPARE(result, QLatin1String("-001.2"));
+ }
+
+ {
+ QString result;
+ QTextStream out(&result);
+ out.setFieldAlignment(QTextStream::AlignAccountingStyle);
+ out.setFieldWidth(6);
+ out.setPadChar('0');
+ out << "-1.2";
+ QCOMPARE(result, QLatin1String("00-1.2"));
+ }
+}
+
+void tst_QTextStream::task178772_setCodec()
+{
+ QByteArray ba("\xe5 v\xe6r\n\xc3\xa5 v\xc3\xa6r\n");
+ QString res = QLatin1String("\xe5 v\xe6r");
+
+ QTextStream stream(ba);
+ stream.setCodec("ISO 8859-1");
+ QCOMPARE(stream.readLine(),res);
+ stream.setCodec("UTF-8");
+ QCOMPARE(stream.readLine(),res);
+}
+
+void tst_QTextStream::double_write_with_flags_data()
+{
+ QTest::addColumn<double>("number");
+ QTest::addColumn<QString>("output");
+ QTest::addColumn<int>("numberFlags");
+ QTest::addColumn<int>("realNumberNotation");
+
+ QTest::newRow("-ForceSign") << -1.23 << QString("-1.23") << (int)QTextStream::ForceSign << 0;
+ QTest::newRow("+ForceSign") << 1.23 << QString("+1.23") << (int)QTextStream::ForceSign << 0;
+ QTest::newRow("inf") << qInf() << QString("inf") << 0 << 0;
+ QTest::newRow("-inf") << -qInf() << QString("-inf") << 0 << 0;
+ QTest::newRow("inf uppercase") << qInf() << QString("INF") << (int)QTextStream::UppercaseDigits << 0;
+ QTest::newRow("-inf uppercase") << -qInf() << QString("-INF") << (int)QTextStream::UppercaseDigits << 0;
+ QTest::newRow("nan") << qQNaN() << QString("nan") << 0 << 0;
+ QTest::newRow("nan") << qQNaN() << QString("NAN") << (int)QTextStream::UppercaseDigits << 0;
+ QTest::newRow("scientific") << 1.234567e+02 << QString("1.234567e+02") << 0 << (int)QTextStream::ScientificNotation;
+ QTest::newRow("scientific2") << 1.234567e+02 << QString("1.234567e+02") << (int)QTextStream::UppercaseBase << (int)QTextStream::ScientificNotation;
+ QTest::newRow("scientific uppercase") << 1.234567e+02 << QString("1.234567E+02") << (int)QTextStream::UppercaseDigits << (int)QTextStream::ScientificNotation;
+}
+
+void tst_QTextStream::double_write_with_flags()
+{
+ QFETCH(double, number);
+ QFETCH(QString, output);
+ QFETCH(int, numberFlags);
+ QFETCH(int, realNumberNotation);
+
+ QString buf;
+ QTextStream stream(&buf);
+ if (numberFlags)
+ stream.setNumberFlags(QTextStream::NumberFlag(numberFlags));
+ if (realNumberNotation)
+ stream.setRealNumberNotation(QTextStream::RealNumberNotation(realNumberNotation));
+ stream << number;
+ QCOMPARE(buf, output);
+}
+
+void tst_QTextStream::double_write_with_precision_data()
+{
+ QTest::addColumn<int>("precision");
+ QTest::addColumn<double>("value");
+ QTest::addColumn<QString>("result");
+
+ QTest::ignoreMessage(QtWarningMsg, "QTextStream::setRealNumberPrecision: Invalid precision (-1)");
+ QTest::newRow("-1") << -1 << 3.14159 << QString("3.14159");
+ QTest::newRow("0") << 0 << 3.14159 << QString("3");
+ QTest::newRow("1") << 1 << 3.14159 << QString("3");
+ QTest::newRow("2") << 2 << 3.14159 << QString("3.1");
+ QTest::newRow("3") << 3 << 3.14159 << QString("3.14");
+ QTest::newRow("5") << 5 << 3.14159 << QString("3.1416");
+ QTest::newRow("6") << 6 << 3.14159 << QString("3.14159");
+ QTest::newRow("7") << 7 << 3.14159 << QString("3.14159");
+ QTest::newRow("10") << 10 << 3.14159 << QString("3.14159");
+}
+
+void tst_QTextStream::double_write_with_precision()
+{
+ QFETCH(int, precision);
+ QFETCH(double, value);
+ QFETCH(QString, result);
+
+ QString buf;
+ QTextStream stream(&buf);
+ stream.setRealNumberPrecision(precision);
+ stream << value;
+ QCOMPARE(buf, result);
+}
+
+void tst_QTextStream::int_read_with_locale_data()
+{
+ QTest::addColumn<QString>("locale");
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<int>("output");
+
+ QTest::newRow("C -123") << QString("C") << QString("-123") << -123;
+ QTest::newRow("C +123") << QString("C") << QString("+123") << 123;
+ QTest::newRow("C 12345") << QString("C") << QString("12345") << 12345;
+ QTest::newRow("C 12,345") << QString("C") << QString("12,345") << 12;
+ QTest::newRow("C 12.345") << QString("C") << QString("12.345") << 12;
+
+ QTest::newRow("de_DE -123") << QString("de_DE") << QString("-123") << -123;
+ QTest::newRow("de_DE +123") << QString("de_DE") << QString("+123") << 123;
+ QTest::newRow("de_DE 12345") << QString("de_DE") << QString("12345") << 12345;
+ QTest::newRow("de_DE 12.345") << QString("de_DE") << QString("12.345") << 12345;
+ QTest::newRow("de_DE .12345") << QString("de_DE") << QString(".12345") << 0;
+}
+
+void tst_QTextStream::int_read_with_locale()
+{
+ QFETCH(QString, locale);
+ QFETCH(QString, input);
+ QFETCH(int, output);
+
+ QTextStream stream(&input);
+ stream.setLocale(locale);
+ int result;
+ stream >> result;
+ QCOMPARE(result, output);
+}
+
+void tst_QTextStream::int_write_with_locale_data()
+{
+ QTest::addColumn<QString>("locale");
+ QTest::addColumn<int>("numberFlags");
+ QTest::addColumn<int>("input");
+ QTest::addColumn<QString>("output");
+
+ QTest::newRow("C -123") << QString("C") << 0 << -123 << QString("-123");
+ QTest::newRow("C +123") << QString("C") << (int)QTextStream::ForceSign << 123 << QString("+123");
+ QTest::newRow("C 12345") << QString("C") << 0 << 12345 << QString("12345");
+
+ QTest::newRow("de_DE -123") << QString("de_DE") << 0 << -123 << QString("-123");
+ QTest::newRow("de_DE +123") << QString("de_DE") << (int)QTextStream::ForceSign << 123 << QString("+123");
+ QTest::newRow("de_DE 12345") << QString("de_DE") << 0 << 12345 << QString("12.345");
+}
+
+void tst_QTextStream::int_write_with_locale()
+{
+ QFETCH(QString, locale);
+ QFETCH(int, numberFlags);
+ QFETCH(int, input);
+ QFETCH(QString, output);
+
+ QString result;
+ QTextStream stream(&result);
+ stream.setLocale(locale);
+ if (numberFlags)
+ stream.setNumberFlags(QTextStream::NumberFlags(numberFlags));
+ stream << input;
+ QCOMPARE(result, output);
+}
+
+// ------------------------------------------------------------------------------
+
+// like QTEST_APPLESS_MAIN, but initialising the locale on Unix
+#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
+QT_BEGIN_NAMESPACE
+extern bool qt_locale_initialized;
+QT_END_NAMESPACE
+#endif
+
+int main(int argc, char *argv[])
+{
+#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
+ ::setlocale(LC_ALL, "");
+ qt_locale_initialized = true;
+#endif
+ tst_QTextStream tc;
+ return QTest::qExec(&tc, argc, argv);
+}
+
+#include "tst_qtextstream.moc"
+
diff --git a/tests/auto/qurl/.gitignore b/tests/auto/corelib/io/qurl/.gitignore
index c2da731ecd..c2da731ecd 100644
--- a/tests/auto/qurl/.gitignore
+++ b/tests/auto/corelib/io/qurl/.gitignore
diff --git a/tests/auto/qurl/idna-test.c b/tests/auto/corelib/io/qurl/idna-test.c
index 7effd03168..7effd03168 100644
--- a/tests/auto/qurl/idna-test.c
+++ b/tests/auto/corelib/io/qurl/idna-test.c
diff --git a/tests/auto/qurl/qurl.pro b/tests/auto/corelib/io/qurl/qurl.pro
index a43a57e002..a43a57e002 100644
--- a/tests/auto/qurl/qurl.pro
+++ b/tests/auto/corelib/io/qurl/qurl.pro
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp
index d7f7742d46..d7f7742d46 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp
diff --git a/tests/auto/corelib/kernel/kernel.pro b/tests/auto/corelib/kernel/kernel.pro
new file mode 100644
index 0000000000..9fb8868391
--- /dev/null
+++ b/tests/auto/corelib/kernel/kernel.pro
@@ -0,0 +1,22 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qabstractitemmodel \
+ qcoreapplication \
+ qeventloop \
+ qitemmodel \
+ qmath \
+ qmetaobject \
+ qmetatype \
+ qmimedata \
+ qobject \
+ qpointer \
+ qsignalmapper \
+ qsocketnotifier \
+ qtimer \
+ # qtipc \ # needs to be moved to qtscript
+ qtranslator \
+ qvariant \
+ qwineventnotifier
+
+!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ qsocketnotifier
diff --git a/tests/auto/qabstractitemmodel/.gitignore b/tests/auto/corelib/kernel/qabstractitemmodel/.gitignore
index f6f93f4b89..f6f93f4b89 100644
--- a/tests/auto/qabstractitemmodel/.gitignore
+++ b/tests/auto/corelib/kernel/qabstractitemmodel/.gitignore
diff --git a/tests/auto/corelib/kernel/qabstractitemmodel/qabstractitemmodel.pro b/tests/auto/corelib/kernel/qabstractitemmodel/qabstractitemmodel.pro
new file mode 100644
index 0000000000..50730b371f
--- /dev/null
+++ b/tests/auto/corelib/kernel/qabstractitemmodel/qabstractitemmodel.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+
+INCLUDEPATH += $$PWD/../../../modeltest
+QT += widgets
+SOURCES += tst_qabstractitemmodel.cpp ../../../modeltest/dynamictreemodel.cpp ../../../modeltest/modeltest.cpp
+HEADERS += ../../../modeltest/dynamictreemodel.h ../../../modeltest/modeltest.h
+
+
+
diff --git a/tests/auto/corelib/kernel/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/corelib/kernel/qabstractitemmodel/tst_qabstractitemmodel.cpp
new file mode 100644
index 0000000000..6a7a16eae8
--- /dev/null
+++ b/tests/auto/corelib/kernel/qabstractitemmodel/tst_qabstractitemmodel.cpp
@@ -0,0 +1,1816 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/QtCore>
+
+#include <QtWidgets/QSortFilterProxyModel>
+
+//TESTED_CLASS=QAbstractListModel QAbstractTableModel
+//TESTED_FILES=
+
+#include "dynamictreemodel.h"
+
+Q_DECLARE_METATYPE(QModelIndex)
+
+/*!
+ Note that this doesn't test models, but any functionality that QAbstractItemModel shoudl provide
+ */
+class tst_QAbstractItemModel : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QAbstractItemModel();
+ virtual ~tst_QAbstractItemModel();
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void index();
+ void parent();
+ void hasChildren();
+ void _data();
+ void headerData();
+ void itemData();
+ void itemFlags();
+ void match();
+ void dropMimeData_data();
+ void dropMimeData();
+ void changePersistentIndex();
+ void movePersistentIndex();
+
+ void insertRows();
+ void insertColumns();
+ void removeRows();
+ void removeColumns();
+
+ void reset();
+
+ void complexChangesWithPersistent();
+
+ void testMoveSameParentUp_data();
+ void testMoveSameParentUp();
+
+ void testMoveSameParentDown_data();
+ void testMoveSameParentDown();
+
+ void testMoveToGrandParent_data();
+ void testMoveToGrandParent();
+
+ void testMoveToSibling_data();
+ void testMoveToSibling();
+
+ void testMoveToUncle_data();
+ void testMoveToUncle();
+
+ void testMoveToDescendants();
+
+ void testMoveWithinOwnRange_data();
+ void testMoveWithinOwnRange();
+
+ void testMoveThroughProxy();
+
+ void testReset();
+
+
+private:
+ DynamicTreeModel *m_model;
+
+};
+
+/*!
+ Test model that impliments the pure vitual functions and anything else that is
+ needed.
+
+ It is a table implimented as a vector of vectors of strings.
+ */
+class QtTestModel: public QAbstractItemModel
+{
+public:
+ QtTestModel(int rows, int columns, QObject *parent = 0);
+ QtTestModel(const QVector<QVector<QString> > tbl, QObject *parent = 0);
+ QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &) const;
+ int rowCount(const QModelIndex &parent) const;
+ int columnCount(const QModelIndex &parent) const;
+ bool hasChildren(const QModelIndex &) const;
+ QVariant data(const QModelIndex &idx, int) const;
+ bool setData(const QModelIndex &idx, const QVariant &value, int);
+ bool insertRows(int row, int count, const QModelIndex &parent= QModelIndex());
+ bool insertColumns(int column, int count, const QModelIndex &parent= QModelIndex());
+ void setPersistent(const QModelIndex &from, const QModelIndex &to);
+ bool removeRows ( int row, int count, const QModelIndex & parent = QModelIndex() );
+ bool removeColumns( int column, int count, const QModelIndex & parent = QModelIndex());
+ void reset();
+
+ int cCount, rCount;
+ mutable bool wrongIndex;
+ QVector<QVector<QString> > table;
+};
+
+QtTestModel::QtTestModel(int rows, int columns, QObject *parent)
+ : QAbstractItemModel(parent), cCount(columns), rCount(rows), wrongIndex(false) {
+
+ table.resize(rows);
+ for (int r = 0; r < rows; ++r) {
+ table[r].resize(columns);
+ for (int c = 0; c < columns; ++c)
+ table[r][c] = QString("%1/%2").arg(r).arg(c);
+ }
+}
+
+QtTestModel::QtTestModel(const QVector<QVector<QString> > tbl, QObject *parent)
+ : QAbstractItemModel(parent), wrongIndex(false) {
+ table = tbl;
+ rCount = tbl.count();
+ cCount = tbl.at(0).count();
+}
+
+QModelIndex QtTestModel::index(int row, int column, const QModelIndex &parent) const
+ { return hasIndex(row, column, parent) ? createIndex(row, column, 0) : QModelIndex(); }
+
+QModelIndex QtTestModel::parent(const QModelIndex &) const { return QModelIndex(); }
+int QtTestModel::rowCount(const QModelIndex &parent) const { return parent.isValid() ? 0 : rCount; }
+int QtTestModel::columnCount(const QModelIndex &parent) const { return parent.isValid() ? 0 : cCount; }
+bool QtTestModel::hasChildren(const QModelIndex &) const { return false; }
+
+QVariant QtTestModel::data(const QModelIndex &idx, int) const
+{
+ if (idx.row() < 0 || idx.column() < 0 || idx.column() > cCount || idx.row() > rCount) {
+ wrongIndex = true;
+ qWarning("got invalid modelIndex %d/%d", idx.row(), idx.column());
+ return QVariant();
+ }
+ return table.at(idx.row()).at(idx.column());
+}
+
+bool QtTestModel::setData(const QModelIndex &idx, const QVariant &value, int)
+{
+ table[idx.row()][idx.column()] = value.toString();
+ return true;
+}
+
+bool QtTestModel::insertRows(int row, int count, const QModelIndex &parent)
+{
+ QAbstractItemModel::beginInsertRows(parent, row, row + count - 1);
+ int cc = columnCount(parent);
+ table.insert(row, count, QVector<QString>(cc));
+ rCount = table.count();
+ QAbstractItemModel::endInsertRows();
+ return true;
+}
+
+bool QtTestModel::insertColumns(int column, int count, const QModelIndex &parent)
+{
+ QAbstractItemModel::beginInsertColumns(parent, column, column + count - 1);
+ int rc = rowCount(parent);
+ for (int i = 0; i < rc; ++i)
+ table[i].insert(column, 1, "");
+ cCount = table.at(0).count();
+ QAbstractItemModel::endInsertColumns();
+ return true;
+}
+
+void QtTestModel::setPersistent(const QModelIndex &from, const QModelIndex &to)
+{
+ changePersistentIndex(from, to);
+}
+
+bool QtTestModel::removeRows( int row, int count, const QModelIndex & parent)
+{
+ QAbstractItemModel::beginRemoveRows(parent, row, row + count - 1);
+
+ for (int r = row+count-1; r >= row; --r)
+ table.remove(r);
+ rCount = table.count();
+
+ QAbstractItemModel::endRemoveRows();
+ return true;
+}
+
+bool QtTestModel::removeColumns(int column, int count, const QModelIndex & parent)
+{
+ QAbstractItemModel::beginRemoveColumns(parent, column, column + count - 1);
+
+ for (int c = column+count-1; c > column; --c)
+ for (int r = 0; r < rCount; ++r)
+ table[r].remove(c);
+
+ cCount = table.at(0).count();
+
+ QAbstractItemModel::endRemoveColumns();
+ return true;
+}
+
+void QtTestModel::reset()
+{
+ QAbstractItemModel::reset();
+}
+
+tst_QAbstractItemModel::tst_QAbstractItemModel()
+{
+}
+
+tst_QAbstractItemModel::~tst_QAbstractItemModel()
+{
+}
+
+/**
+ * The source Model *must* be initialized before the _data function, since the _data function uses QModelIndexes to reference the items in the tables.
+ * Therefore, we must initialize it globally.
+ */
+
+void tst_QAbstractItemModel::initTestCase()
+{
+ qRegisterMetaType<QModelIndex>("QModelIndex");
+}
+
+void tst_QAbstractItemModel::cleanupTestCase()
+{
+
+}
+
+void tst_QAbstractItemModel::init()
+{
+ m_model = new DynamicTreeModel(this);
+
+ ModelInsertCommand *insertCommand = new ModelInsertCommand(m_model, this);
+ insertCommand->setNumCols(4);
+ insertCommand->setStartRow(0);
+ insertCommand->setEndRow(9);
+ insertCommand->doCommand();
+
+ insertCommand = new ModelInsertCommand(m_model, this);
+ insertCommand->setAncestorRowNumbers(QList<int>() << 5);
+ insertCommand->setNumCols(4);
+ insertCommand->setStartRow(0);
+ insertCommand->setEndRow(9);
+ insertCommand->doCommand();
+}
+
+void tst_QAbstractItemModel::cleanup()
+{
+
+}
+
+/*
+ tests
+*/
+
+void tst_QAbstractItemModel::index()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QVERIFY(idx.isValid());
+}
+
+void tst_QAbstractItemModel::parent()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QModelIndex par = model.parent(idx);
+ QVERIFY(!par.isValid());
+}
+
+void tst_QAbstractItemModel::hasChildren()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QVERIFY(model.hasChildren(idx) == false);
+}
+
+void tst_QAbstractItemModel::_data()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QVERIFY(idx.isValid());
+ QCOMPARE(model.data(idx, Qt::DisplayRole).toString(), QString("0/0"));
+
+ // Default does nothing
+ QCOMPARE(model.setHeaderData(0, Qt::Horizontal, QVariant(0), 0), false);
+}
+
+void tst_QAbstractItemModel::headerData()
+{
+ QtTestModel model(1, 1);
+ QCOMPARE(model.headerData(0, Qt::Horizontal, Qt::DisplayRole).toString(),
+ QString("1"));
+
+ // Default text alignment for header must be invalid
+ QVERIFY( !model.headerData(0, Qt::Horizontal, Qt::TextAlignmentRole).isValid() );
+}
+
+void tst_QAbstractItemModel::itemData()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QVERIFY(idx.isValid());
+ QMap<int, QVariant> dat = model.itemData(idx);
+ QCOMPARE(dat.count(Qt::DisplayRole), 1);
+ QCOMPARE(dat.value(Qt::DisplayRole).toString(), QString("0/0"));
+}
+
+void tst_QAbstractItemModel::itemFlags()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QVERIFY(idx.isValid());
+ Qt::ItemFlags flags = model.flags(idx);
+ QCOMPARE(Qt::ItemIsSelectable|Qt::ItemIsEnabled, flags);
+}
+
+void tst_QAbstractItemModel::match()
+{
+ QtTestModel model(4, 1);
+ QModelIndex start = model.index(0, 0, QModelIndex());
+ QVERIFY(start.isValid());
+ QModelIndexList res = model.match(start, Qt::DisplayRole, QVariant("1"), 3);
+ QCOMPARE(res.count(), 1);
+ QModelIndex idx = model.index(1, 0, QModelIndex());
+ bool areEqual = (idx == res.first());
+ QVERIFY(areEqual);
+
+ model.setData(model.index(0, 0, QModelIndex()), "bat", Qt::DisplayRole);
+ model.setData(model.index(1, 0, QModelIndex()), "cat", Qt::DisplayRole);
+ model.setData(model.index(2, 0, QModelIndex()), "dog", Qt::DisplayRole);
+ model.setData(model.index(3, 0, QModelIndex()), "boar", Qt::DisplayRole);
+
+ res = model.match(start, Qt::DisplayRole, QVariant("dog"), -1, Qt::MatchExactly);
+ QCOMPARE(res.count(), 1);
+ res = model.match(start, Qt::DisplayRole, QVariant("a"), -1, Qt::MatchContains);
+ QCOMPARE(res.count(), 3);
+ res = model.match(start, Qt::DisplayRole, QVariant("b"), -1, Qt::MatchStartsWith);
+ QCOMPARE(res.count(), 2);
+ res = model.match(start, Qt::DisplayRole, QVariant("t"), -1, Qt::MatchEndsWith);
+ QCOMPARE(res.count(), 2);
+ res = model.match(start, Qt::DisplayRole, QVariant("*a*"), -1, Qt::MatchWildcard);
+ QCOMPARE(res.count(), 3);
+ res = model.match(start, Qt::DisplayRole, QVariant(".*O.*"), -1, Qt::MatchRegExp);
+ QCOMPARE(res.count(), 2);
+ res = model.match(start, Qt::DisplayRole, QVariant(".*O.*"), -1, Qt::MatchRegExp | Qt::MatchCaseSensitive);
+ QCOMPARE(res.count(), 0);
+ res = model.match(start, Qt::DisplayRole, QVariant("BOAR"), -1, Qt::MatchFixedString);
+ QCOMPARE(res.count(), 1);
+ res = model.match(start, Qt::DisplayRole, QVariant("bat"), -1,
+ Qt::MatchFixedString | Qt::MatchCaseSensitive);
+ QCOMPARE(res.count(), 1);
+}
+
+typedef QPair<int, int> Position;
+typedef QVector<QPair<int, int> > Selection;
+typedef QVector<QVector<QString> > StringTable;
+typedef QVector<QString> StringTableRow;
+Q_DECLARE_METATYPE(Position)
+Q_DECLARE_METATYPE(Selection)
+Q_DECLARE_METATYPE(StringTable)
+
+static StringTableRow qStringTableRow(const QString &s1, const QString &s2, const QString &s3)
+{
+ StringTableRow row;
+ row << s1 << s2 << s3;
+ return row;
+}
+
+#ifdef Q_CC_MSVC
+# define STRINGTABLE (StringTable())
+#else
+# define STRINGTABLE StringTable()
+#endif
+
+void tst_QAbstractItemModel::dropMimeData_data()
+{
+ QTest::addColumn<StringTable>("src_table"); // drag source
+ QTest::addColumn<StringTable>("dst_table"); // drop target
+ QTest::addColumn<Selection>("selection"); // dragged items
+ QTest::addColumn<Position>("dst_position"); // drop position
+ QTest::addColumn<StringTable>("res_table"); // expected result
+
+ {
+ QTest::newRow("2x2 dropped at [0, 0]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(0, 0) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("A", "B", "" ))
+ << (qStringTableRow("D", "E", "" ))
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x2 dropped at [1, 0]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(1, 0) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("A", "B", "" ))
+ << (qStringTableRow("D", "E", "" ))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x2 dropped at [3, 0]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(3, 0) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5"))
+ << (qStringTableRow("A", "B", "" ))
+ << (qStringTableRow("D", "E", "" )));
+ }
+
+ {
+ QTest::newRow("2x2 dropped at [0, 1]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(0, 1) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("" , "A", "B"))
+ << (qStringTableRow("" , "D", "E"))
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x2 dropped at [0, 2] (line break)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(0, 2) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "D"))
+ << (qStringTableRow("" , "" , "B"))
+ << (qStringTableRow("" , "" , "E"))
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x2 dropped at [3, 2] (line break)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(3, 2) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5"))
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "D"))
+ << (qStringTableRow("" , "" , "B"))
+ << (qStringTableRow("" , "" , "E")));
+ }
+
+ {
+ QTest::newRow("non-square dropped at [0, 0]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0))
+ << Position(0, 0) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("A", "B", "" ))
+ << (qStringTableRow("D", "" , "" ))
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("non-square dropped at [0, 2]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0))
+ << Position(0, 2) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "D"))
+ << (qStringTableRow("" , "" , "B"))
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x 1x2 dropped at [0, 0] (duplicates)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
+ << Position(0, 0) << Position(0, 1)
+ << Position(0, 0) << Position(0, 1))
+ << Position(0, 0) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("A", "B", "" ))
+ << (qStringTableRow("A", "" , "" ))
+ << (qStringTableRow("" , "B", "" )) // ### FIXME: strange behavior, but rare case
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x 1x2 dropped at [3, 2] (duplicates)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
+ << Position(0, 0) << Position(0, 1)
+ << Position(0, 0) << Position(0, 1))
+ << Position(3, 2) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5"))
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "B"))
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "B")));
+ }
+ {
+ QTest::newRow("2x 1x2 dropped at [3, 2] (different rows)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F"))
+ << (qStringTableRow("G", "H", "I")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
+ << Position(0, 0) << Position(0, 1)
+ << Position(2, 0) << Position(2, 1))
+ << Position(2, 1) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5"))
+ << (qStringTableRow("" , "A" , "B"))
+ << (qStringTableRow("" , "G" , "H")));
+ }
+
+ {
+ QTest::newRow("2x 1x2 dropped at [3, 2] (different rows, over the edge)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F"))
+ << (qStringTableRow("G", "H", "I")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
+ << Position(0, 0) << Position(0, 1)
+ << Position(2, 0) << Position(2, 1))
+ << Position(3, 2) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5"))
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "G"))
+ << (qStringTableRow("" , "" , "B"))
+ << (qStringTableRow("" , "" , "H")));
+ }
+}
+
+void tst_QAbstractItemModel::dropMimeData()
+{
+ QFETCH(StringTable, src_table);
+ QFETCH(StringTable, dst_table);
+ QFETCH(Selection, selection);
+ QFETCH(Position, dst_position);
+ QFETCH(StringTable, res_table);
+
+ QtTestModel src(src_table);
+ QtTestModel dst(dst_table);
+ QtTestModel res(res_table);
+
+// qDebug() << "src" << src.rowCount(QModelIndex()) << src.columnCount(QModelIndex());
+// qDebug() << "dst" << dst.rowCount(QModelIndex()) << dst.columnCount(QModelIndex());
+// qDebug() << "res" << res.rowCount(QModelIndex()) << res.columnCount(QModelIndex());
+
+ // get the mimeData from the "selected" indexes
+ QModelIndexList selectedIndexes;
+ for (int i = 0; i < selection.count(); ++i)
+ selectedIndexes << src.index(selection.at(i).first, selection.at(i).second, QModelIndex());
+ QMimeData *md = src.mimeData(selectedIndexes);
+ // do the drop
+ dst.dropMimeData(md, Qt::CopyAction, dst_position.first, dst_position.second, QModelIndex());
+ delete md;
+
+ // compare to the expected results
+ QCOMPARE(dst.rowCount(QModelIndex()), res.rowCount(QModelIndex()));
+ QCOMPARE(dst.columnCount(QModelIndex()), res.columnCount(QModelIndex()));
+ for (int r = 0; r < dst.rowCount(QModelIndex()); ++r) {
+ for (int c = 0; c < dst.columnCount(QModelIndex()); ++c) {
+ QModelIndex dst_idx = dst.index(r, c, QModelIndex());
+ QModelIndex res_idx = res.index(r, c, QModelIndex());
+ QMap<int, QVariant> dst_data = dst.itemData(dst_idx);
+ QMap<int, QVariant> res_data = res.itemData(res_idx);
+ //if(dst_data != res_data)
+ // qDebug() << r << c << dst_data.value(0).toString() << res_data.value(0).toString();
+ QCOMPARE(dst_data , res_data);
+ }
+ }
+
+}
+
+
+void tst_QAbstractItemModel::changePersistentIndex()
+{
+ QtTestModel model(3, 3);
+ QModelIndex a = model.index(1, 2, QModelIndex());
+ QModelIndex b = model.index(2, 1, QModelIndex());
+ QPersistentModelIndex p(a);
+ QVERIFY(p == a);
+ model.setPersistent(a, b);
+ QVERIFY(p == b);
+}
+
+void tst_QAbstractItemModel::movePersistentIndex()
+{
+ QtTestModel model(3, 3);
+
+ QPersistentModelIndex a = model.index(1, 1);
+ QVERIFY(a.isValid());
+ QCOMPARE(a.row(), 1);
+ QCOMPARE(a.column(), 1);
+
+ model.insertRow(0);
+ QCOMPARE(a.row(), 2);
+
+ model.insertRow(1);
+ QCOMPARE(a.row(), 3);
+
+ model.insertColumn(0);
+ QCOMPARE(a.column(), 2);
+}
+
+void tst_QAbstractItemModel::removeRows()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy rowsAboutToBeRemovedSpy(&model, SIGNAL(rowsAboutToBeRemoved( const QModelIndex &, int , int )));
+ QSignalSpy rowsRemovedSpy(&model, SIGNAL(rowsRemoved( const QModelIndex &, int, int )));
+
+ QCOMPARE(model.removeRows(6, 4), true);
+ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1);
+ QCOMPARE(rowsRemovedSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::removeColumns()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy columnsAboutToBeRemovedSpy(&model, SIGNAL(columnsAboutToBeRemoved( const QModelIndex &, int , int )));
+ QSignalSpy columnsRemovedSpy(&model, SIGNAL(columnsRemoved( const QModelIndex &, int, int )));
+
+ QCOMPARE(model.removeColumns(6, 4), true);
+ QCOMPARE(columnsAboutToBeRemovedSpy.count(), 1);
+ QCOMPARE(columnsRemovedSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::insertRows()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy rowsAboutToBeInsertedSpy(&model, SIGNAL(rowsAboutToBeInserted( const QModelIndex &, int , int )));
+ QSignalSpy rowsInsertedSpy(&model, SIGNAL(rowsInserted( const QModelIndex &, int, int )));
+
+ QCOMPARE(model.insertRows(6, 4), true);
+ QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
+ QCOMPARE(rowsInsertedSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::insertColumns()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy columnsAboutToBeInsertedSpy(&model, SIGNAL(columnsAboutToBeInserted( const QModelIndex &, int , int )));
+ QSignalSpy columnsInsertedSpy(&model, SIGNAL(columnsInserted( const QModelIndex &, int, int )));
+
+ QCOMPARE(model.insertColumns(6, 4), true);
+ QCOMPARE(columnsAboutToBeInsertedSpy.count(), 1);
+ QCOMPARE(columnsInsertedSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::reset()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy resetSpy(&model, SIGNAL(modelReset()));
+ model.reset();
+ QCOMPARE(resetSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::complexChangesWithPersistent()
+{
+ QtTestModel model(10, 10);
+ QPersistentModelIndex a = model.index(1, 1, QModelIndex());
+ QPersistentModelIndex b = model.index(9, 7, QModelIndex());
+ QPersistentModelIndex c = model.index(5, 6, QModelIndex());
+ QPersistentModelIndex d = model.index(3, 9, QModelIndex());
+ QPersistentModelIndex e[10];
+ for (int i=0; i <10 ; i++) {
+ e[i] = model.index(2, i , QModelIndex());
+ }
+
+ QVERIFY(a == model.index(1, 1, QModelIndex()));
+ QVERIFY(b == model.index(9, 7, QModelIndex()));
+ QVERIFY(c == model.index(5, 6, QModelIndex()));
+ QVERIFY(d == model.index(3, 9, QModelIndex()));
+ for (int i=0; i <8 ; i++)
+ QVERIFY(e[i] == model.index(2, i , QModelIndex()));
+
+ //remove a bunch of columns
+ model.removeColumns(2, 4);
+
+ QVERIFY(a == model.index(1, 1, QModelIndex()));
+ QVERIFY(b == model.index(9, 3, QModelIndex()));
+ QVERIFY(c == model.index(5, 2, QModelIndex()));
+ QVERIFY(d == model.index(3, 5, QModelIndex()));
+ for (int i=0; i <2 ; i++)
+ QVERIFY(e[i] == model.index(2, i , QModelIndex()));
+ for (int i=2; i <6 ; i++)
+ QVERIFY(!e[i].isValid());
+ for (int i=6; i <10 ; i++)
+ QVERIFY(e[i] == model.index(2, i-4 , QModelIndex()));
+
+ //move some indexes around
+ model.setPersistent(model.index(1, 1 , QModelIndex()), model.index(9, 3 , QModelIndex()));
+ model.setPersistent(model.index(9, 3 , QModelIndex()), model.index(8, 4 , QModelIndex()));
+
+ QVERIFY(a == model.index(9, 3, QModelIndex()));
+ QVERIFY(b == model.index(8, 4, QModelIndex()));
+ QVERIFY(c == model.index(5, 2, QModelIndex()));
+ QVERIFY(d == model.index(3, 5, QModelIndex()));
+ for (int i=0; i <2 ; i++)
+ QVERIFY(e[i] == model.index(2, i , QModelIndex()));
+ for (int i=2; i <6 ; i++)
+ QVERIFY(!e[i].isValid());
+ for (int i=6; i <10 ; i++)
+ QVERIFY(e[i] == model.index(2, i-4 , QModelIndex()));
+
+ //inserting a bunch of columns
+ model.insertColumns(2, 2);
+ QVERIFY(a == model.index(9, 5, QModelIndex()));
+ QVERIFY(b == model.index(8, 6, QModelIndex()));
+ QVERIFY(c == model.index(5, 4, QModelIndex()));
+ QVERIFY(d == model.index(3, 7, QModelIndex()));
+ for (int i=0; i <2 ; i++)
+ QVERIFY(e[i] == model.index(2, i , QModelIndex()));
+ for (int i=2; i <6 ; i++)
+ QVERIFY(!e[i].isValid());
+ for (int i=6; i <10 ; i++)
+ QVERIFY(e[i] == model.index(2, i-2 , QModelIndex()));
+
+}
+
+void tst_QAbstractItemModel::testMoveSameParentDown_data()
+{
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+ // We can't put the actual parent index for the move in here because m_model is not defined until init() is run.
+ QTest::addColumn<bool>("topLevel");
+
+ // Move from the start to the middle
+ QTest::newRow("move01") << 0 << 2 << 8 << true;
+ // Move from the start to the end
+ QTest::newRow("move02") << 0 << 2 << 10 << true;
+ // Move from the middle to the middle
+ QTest::newRow("move03") << 3 << 5 << 8 << true;
+ // Move from the middle to the end
+ QTest::newRow("move04") << 3 << 5 << 10 << true;
+
+ QTest::newRow("move05") << 0 << 2 << 8 << false;
+ QTest::newRow("move06") << 0 << 2 << 10 << false;
+ QTest::newRow("move07") << 3 << 5 << 8 << false;
+ QTest::newRow("move08") << 3 << 5 << 10 << false;
+}
+
+void tst_QAbstractItemModel::testMoveSameParentDown()
+{
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+ QFETCH( bool, topLevel);
+
+ QModelIndex moveParent = topLevel ? QModelIndex() : m_model->index(5, 0);
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QModelIndex parent = m_model->index(5, 0);
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(parent); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column, parent);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ if (!topLevel)
+ moveCommand->setAncestorRowNumbers(QList<int>() << 5);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestRow(destRow);
+ if (!topLevel)
+ moveCommand->setDestAncestors(QList<int>() << 5);
+ moveCommand->doCommand();
+
+ QVariantList beforeSignal = beforeSpy.takeAt(0);
+ QVariantList afterSignal = afterSpy.takeAt(0);
+
+ QCOMPARE(beforeSignal.size(), 5);
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), moveParent);
+ QCOMPARE(beforeSignal.at(1).toInt(), startRow);
+ QCOMPARE(beforeSignal.at(2).toInt(), endRow);
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), moveParent);
+ QCOMPARE(beforeSignal.at(4).toInt(), destRow);
+
+ QCOMPARE(afterSignal.size(), 5);
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), moveParent);
+ QCOMPARE(afterSignal.at(1).toInt(), startRow);
+ QCOMPARE(afterSignal.at(2).toInt(), endRow);
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), moveParent);
+ QCOMPARE(afterSignal.at(4).toInt(), destRow);
+
+ for (int i = 0; i < indexList.size(); i++)
+ {
+ QModelIndex idx = indexList.at(i);
+ QModelIndex persistentIndex = persistentList.at(i);
+ if (idx.parent() == moveParent)
+ {
+ int row = idx.row();
+ if ( row >= startRow)
+ {
+ if (row <= endRow)
+ {
+ QCOMPARE(row + destRow - endRow - 1, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idx.parent(), persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else if ( row < destRow)
+ {
+ QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idx.parent(), persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveSameParentUp_data()
+{
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+ QTest::addColumn<bool>("topLevel");
+
+ // Move from the middle to the start
+ QTest::newRow("move01") << 5 << 7 << 0 << true;
+ // Move from the end to the start
+ QTest::newRow("move02") << 8 << 9 << 0 << true;
+ // Move from the middle to the middle
+ QTest::newRow("move03") << 5 << 7 << 2 << true;
+ // Move from the end to the middle
+ QTest::newRow("move04") << 8 << 9 << 5 << true;
+
+ QTest::newRow("move05") << 5 << 7 << 0 << false;
+ QTest::newRow("move06") << 8 << 9 << 0 << false;
+ QTest::newRow("move07") << 5 << 7 << 2 << false;
+ QTest::newRow("move08") << 8 << 9 << 5 << false;
+}
+
+void tst_QAbstractItemModel::testMoveSameParentUp()
+{
+
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+ QFETCH( bool, topLevel);
+
+ QModelIndex moveParent = topLevel ? QModelIndex() : m_model->index(5, 0);
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QModelIndex parent = m_model->index(2, 0);
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(parent); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column, parent);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ if (!topLevel)
+ moveCommand->setAncestorRowNumbers(QList<int>() << 5);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestRow(destRow);
+ if (!topLevel)
+ moveCommand->setDestAncestors(QList<int>() << 5);
+ moveCommand->doCommand();
+
+ QVariantList beforeSignal = beforeSpy.takeAt(0);
+ QVariantList afterSignal = afterSpy.takeAt(0);
+
+ QCOMPARE(beforeSignal.size(), 5);
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), moveParent);
+ QCOMPARE(beforeSignal.at(1).toInt(), startRow);
+ QCOMPARE(beforeSignal.at(2).toInt(), endRow);
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), moveParent);
+ QCOMPARE(beforeSignal.at(4).toInt(), destRow);
+
+ QCOMPARE(afterSignal.size(), 5);
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), moveParent);
+ QCOMPARE(afterSignal.at(1).toInt(), startRow);
+ QCOMPARE(afterSignal.at(2).toInt(), endRow);
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), moveParent);
+ QCOMPARE(afterSignal.at(4).toInt(), destRow);
+
+
+ for (int i = 0; i < indexList.size(); i++)
+ {
+ QModelIndex idx = indexList.at(i);
+ QModelIndex persistentIndex = persistentList.at(i);
+ if (idx.parent() == moveParent)
+ {
+ int row = idx.row();
+ if ( row >= destRow)
+ {
+ if (row < startRow)
+ {
+ QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idx.parent(), persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else if ( row <= endRow)
+ {
+ QCOMPARE(row + destRow - startRow, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idx.parent(), persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveThroughProxy()
+{
+ QSortFilterProxyModel *proxy = new QSortFilterProxyModel(this);
+ proxy->setSourceModel(m_model);
+
+ QList<QPersistentModelIndex> persistentList;
+
+ persistentList.append(proxy->index(0, 0));
+ persistentList.append(proxy->index(0, 0, proxy->mapFromSource(m_model->index(5, 0))));
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ moveCommand->setAncestorRowNumbers(QList<int>() << 5);
+ moveCommand->setStartRow(0);
+ moveCommand->setEndRow(0);
+ moveCommand->setDestRow(0);
+ moveCommand->doCommand();
+}
+
+void tst_QAbstractItemModel::testMoveToGrandParent_data()
+{
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+
+ // Move from the start to the middle
+ QTest::newRow("move01") << 0 << 2 << 8;
+ // Move from the start to the end
+ QTest::newRow("move02") << 0 << 2 << 10;
+ // Move from the middle to the middle
+ QTest::newRow("move03") << 3 << 5 << 8;
+ // Move from the middle to the end
+ QTest::newRow("move04") << 3 << 5 << 10;
+
+ // Move from the middle to the start
+ QTest::newRow("move05") << 5 << 7 << 0;
+ // Move from the end to the start
+ QTest::newRow("move06") << 8 << 9 << 0;
+ // Move from the middle to the middle
+ QTest::newRow("move07") << 5 << 7 << 2;
+ // Move from the end to the middle
+ QTest::newRow("move08") << 8 << 9 << 5;
+
+ // Moving to the same row in a different parent doesn't confuse things.
+ QTest::newRow("move09") << 8 << 8 << 8;
+
+ // Moving to the row of my parent and its neighbours doesn't confuse things
+ QTest::newRow("move09") << 8 << 8 << 4;
+ QTest::newRow("move10") << 8 << 8 << 5;
+ QTest::newRow("move11") << 8 << 8 << 6;
+
+ // Moving everything from one parent to another
+ QTest::newRow("move12") << 0 << 9 << 10;
+ QTest::newRow("move13") << 0 << 9 << 0;
+}
+
+void tst_QAbstractItemModel::testMoveToGrandParent()
+{
+
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+ QModelIndexList parentsList;
+
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QModelIndex sourceIndex = m_model->index(5, 0);
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(sourceIndex); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column, sourceIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ QPersistentModelIndex persistentSource = sourceIndex;
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setAncestorRowNumbers(QList<int>() << 5);
+ moveCommand->setNumCols(4);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestRow(destRow);
+ moveCommand->doCommand();
+
+ QVariantList beforeSignal = beforeSpy.takeAt(0);
+ QVariantList afterSignal = afterSpy.takeAt(0);
+
+ QCOMPARE(beforeSignal.size(), 5);
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), sourceIndex);
+ QCOMPARE(beforeSignal.at(1).toInt(), startRow);
+ QCOMPARE(beforeSignal.at(2).toInt(), endRow);
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(beforeSignal.at(4).toInt(), destRow);
+
+ QCOMPARE(afterSignal.size(), 5);
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), static_cast<QModelIndex>(persistentSource));
+ QCOMPARE(afterSignal.at(1).toInt(), startRow);
+ QCOMPARE(afterSignal.at(2).toInt(), endRow);
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(afterSignal.at(4).toInt(), destRow);
+
+ for (int i = 0; i < indexList.size(); i++)
+ {
+ QModelIndex idx = indexList.at(i);
+ QModelIndex idxParent = parentsList.at(i);
+ QModelIndex persistentIndex = persistentList.at(i);
+ int row = idx.row();
+ if (idxParent == QModelIndex())
+ {
+ if ( row >= destRow)
+ {
+ QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idxParent, persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ if (row < startRow)
+ {
+ QCOMPARE(idx, persistentIndex);
+ } else if (row <= endRow)
+ {
+ QCOMPARE(row + destRow - startRow, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(QModelIndex(), persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else {
+ QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+
+ if (idxParent.row() >= destRow)
+ {
+ QModelIndex adjustedParent;
+ adjustedParent = idxParent.sibling( idxParent.row() + endRow - startRow + 1, idxParent.column());
+ QCOMPARE(adjustedParent, persistentIndex.parent());
+ } else
+ {
+ QCOMPARE(idxParent, persistentIndex.parent());
+ }
+ QCOMPARE(idx.model(), persistentIndex.model());
+ }
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveToSibling_data()
+{
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+
+ // Move from the start to the middle
+ QTest::newRow("move01") << 0 << 2 << 8;
+ // Move from the start to the end
+ QTest::newRow("move02") << 0 << 2 << 10;
+ // Move from the middle to the middle
+ QTest::newRow("move03") << 2 << 4 << 8;
+ // Move from the middle to the end
+ QTest::newRow("move04") << 2 << 4 << 10;
+
+ // Move from the middle to the start
+ QTest::newRow("move05") << 8 << 8 << 0;
+ // Move from the end to the start
+ QTest::newRow("move06") << 8 << 9 << 0;
+ // Move from the middle to the middle
+ QTest::newRow("move07") << 6 << 8 << 2;
+ // Move from the end to the middle
+ QTest::newRow("move08") << 8 << 9 << 5;
+
+ // Moving to the same row in a different parent doesn't confuse things.
+ QTest::newRow("move09") << 8 << 8 << 8;
+
+ // Moving to the row of my target and its neighbours doesn't confuse things
+ QTest::newRow("move09") << 8 << 8 << 4;
+ QTest::newRow("move10") << 8 << 8 << 5;
+ QTest::newRow("move11") << 8 << 8 << 6;
+
+ // Move such that the destination parent no longer valid after the move.
+ // The destination parent is always QMI(5, 0), but after this move the
+ // row count is 5, so (5, 0) (used internally in QAIM) no longer refers to a valid index.
+ QTest::newRow("move12") << 0 << 4 << 0;
+}
+
+void tst_QAbstractItemModel::testMoveToSibling()
+{
+
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+ QModelIndexList parentsList;
+
+ const int column = 0;
+
+ for (int i= 0; i < m_model->rowCount(); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QModelIndex destIndex = m_model->index(5, 0);
+ QModelIndex sourceIndex;
+ for (int i= 0; i < m_model->rowCount(destIndex); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column, destIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ QPersistentModelIndex persistentDest = destIndex;
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestAncestors(QList<int>() << 5);
+ moveCommand->setDestRow(destRow);
+ moveCommand->doCommand();
+
+ QVariantList beforeSignal = beforeSpy.takeAt(0);
+ QVariantList afterSignal = afterSpy.takeAt(0);
+
+ QCOMPARE(beforeSignal.size(), 5);
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), sourceIndex);
+ QCOMPARE(beforeSignal.at(1).toInt(), startRow);
+ QCOMPARE(beforeSignal.at(2).toInt(), endRow);
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), destIndex);
+ QCOMPARE(beforeSignal.at(4).toInt(), destRow);
+
+ QCOMPARE(afterSignal.size(), 5);
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), sourceIndex);
+ QCOMPARE(afterSignal.at(1).toInt(), startRow);
+ QCOMPARE(afterSignal.at(2).toInt(), endRow);
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), static_cast<QModelIndex>(persistentDest));
+ QCOMPARE(afterSignal.at(4).toInt(), destRow);
+
+ for (int i = 0; i < indexList.size(); i++)
+ {
+ QModelIndex idx = indexList.at(i);
+ QModelIndex idxParent = parentsList.at(i);
+ QModelIndex persistentIndex = persistentList.at(i);
+
+ QModelIndex adjustedDestination = destIndex.sibling(destIndex.row() - (endRow - startRow + 1), destIndex.column());
+ int row = idx.row();
+ if (idxParent == destIndex)
+ {
+ if ( row >= destRow)
+ {
+ QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ if (idxParent.row() > startRow)
+ {
+ QCOMPARE(adjustedDestination, persistentIndex.parent());
+ } else {
+ QCOMPARE(destIndex, persistentIndex.parent());
+ }
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ if (row < startRow)
+ {
+ QCOMPARE(idx, persistentIndex);
+ } else if (row <= endRow)
+ {
+ QCOMPARE(row + destRow - startRow, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ if (destIndex.row() > startRow)
+ {
+ QCOMPARE(adjustedDestination, persistentIndex.parent());
+ } else {
+ QCOMPARE(destIndex, persistentIndex.parent());
+ }
+
+ QCOMPARE(idx.model(), persistentIndex.model());
+
+ } else {
+ QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idxParent, persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ }
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveToUncle_data()
+{
+
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+
+ // Move from the start to the middle
+ QTest::newRow("move01") << 0 << 2 << 8;
+ // Move from the start to the end
+ QTest::newRow("move02") << 0 << 2 << 10;
+ // Move from the middle to the middle
+ QTest::newRow("move03") << 3 << 5 << 8;
+ // Move from the middle to the end
+ QTest::newRow("move04") << 3 << 5 << 10;
+
+ // Move from the middle to the start
+ QTest::newRow("move05") << 5 << 7 << 0;
+ // Move from the end to the start
+ QTest::newRow("move06") << 8 << 9 << 0;
+ // Move from the middle to the middle
+ QTest::newRow("move07") << 5 << 7 << 2;
+ // Move from the end to the middle
+ QTest::newRow("move08") << 8 << 9 << 5;
+
+ // Moving to the same row in a different parent doesn't confuse things.
+ QTest::newRow("move09") << 8 << 8 << 8;
+
+ // Moving to the row of my parent and its neighbours doesn't confuse things
+ QTest::newRow("move09") << 8 << 8 << 4;
+ QTest::newRow("move10") << 8 << 8 << 5;
+ QTest::newRow("move11") << 8 << 8 << 6;
+
+ // Moving everything from one parent to another
+ QTest::newRow("move12") << 0 << 9 << 10;
+}
+
+void tst_QAbstractItemModel::testMoveToUncle()
+{
+ // Need to have some extra rows available.
+ ModelInsertCommand *insertCommand = new ModelInsertCommand(m_model, this);
+ insertCommand->setAncestorRowNumbers(QList<int>() << 9);
+ insertCommand->setNumCols(4);
+ insertCommand->setStartRow(0);
+ insertCommand->setEndRow(9);
+ insertCommand->doCommand();
+
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+ QModelIndexList parentsList;
+
+ const int column = 0;
+
+ QModelIndex sourceIndex = m_model->index(9, 0);
+ for (int i= 0; i < m_model->rowCount(sourceIndex); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column, sourceIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QModelIndex destIndex = m_model->index(5, 0);
+ for (int i= 0; i < m_model->rowCount(destIndex); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column, destIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setAncestorRowNumbers(QList<int>() << 9);
+ moveCommand->setNumCols(4);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestAncestors(QList<int>() << 5);
+ moveCommand->setDestRow(destRow);
+ moveCommand->doCommand();
+
+ QVariantList beforeSignal = beforeSpy.takeAt(0);
+ QVariantList afterSignal = afterSpy.takeAt(0);
+
+ QCOMPARE(beforeSignal.size(), 5);
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), sourceIndex);
+ QCOMPARE(beforeSignal.at(1).toInt(), startRow);
+ QCOMPARE(beforeSignal.at(2).toInt(), endRow);
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), destIndex);
+ QCOMPARE(beforeSignal.at(4).toInt(), destRow);
+
+ QCOMPARE(afterSignal.size(), 5);
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), sourceIndex);
+ QCOMPARE(afterSignal.at(1).toInt(), startRow);
+ QCOMPARE(afterSignal.at(2).toInt(), endRow);
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), destIndex);
+ QCOMPARE(afterSignal.at(4).toInt(), destRow);
+
+ for (int i = 0; i < indexList.size(); i++)
+ {
+ QModelIndex idx = indexList.at(i);
+ QModelIndex idxParent = parentsList.at(i);
+ QModelIndex persistentIndex = persistentList.at(i);
+
+ int row = idx.row();
+ if (idxParent == destIndex)
+ {
+ if ( row >= destRow)
+ {
+ QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(destIndex, persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ if (row < startRow)
+ {
+ QCOMPARE(idx, persistentIndex);
+ } else if (row <= endRow)
+ {
+ QCOMPARE(row + destRow - startRow, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(destIndex, persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+
+ } else {
+ QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idxParent, persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ }
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveToDescendants()
+{
+ // Attempt to move a row to its ancestors depth rows deep.
+ const int depth = 6;
+
+ // Need to have some extra rows available in a tree.
+ QList<int> rows;
+ ModelInsertCommand *insertCommand;
+ for (int i = 0; i < depth; i++)
+ {
+ insertCommand = new ModelInsertCommand(m_model, this);
+ insertCommand->setAncestorRowNumbers(rows);
+ insertCommand->setNumCols(4);
+ insertCommand->setStartRow(0);
+ insertCommand->setEndRow(9);
+ insertCommand->doCommand();
+ rows << 9;
+ }
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+ QModelIndexList parentsList;
+
+ const int column = 0;
+
+ QModelIndex sourceIndex = m_model->index(9, 0);
+ for (int i= 0; i < m_model->rowCount(sourceIndex); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column, sourceIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QModelIndex destIndex = m_model->index(5, 0);
+ for (int i= 0; i < m_model->rowCount(destIndex); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column, destIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ ModelMoveCommand *moveCommand;
+ QList<int> ancestors;
+ while (ancestors.size() < depth)
+ {
+ ancestors << 9;
+ for (int row = 0; row <= 9; row++)
+ {
+ moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ moveCommand->setStartRow(9);
+ moveCommand->setEndRow(9);
+ moveCommand->setDestAncestors(ancestors);
+ moveCommand->setDestRow(row);
+ moveCommand->doCommand();
+
+ QVERIFY(beforeSpy.size() == 0);
+ QVERIFY(afterSpy.size() == 0);
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveWithinOwnRange_data()
+{
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+
+ QTest::newRow("move01") << 0 << 0 << 0;
+ QTest::newRow("move02") << 0 << 0 << 1;
+ QTest::newRow("move03") << 0 << 5 << 0;
+ QTest::newRow("move04") << 0 << 5 << 1;
+ QTest::newRow("move05") << 0 << 5 << 2;
+ QTest::newRow("move06") << 0 << 5 << 3;
+ QTest::newRow("move07") << 0 << 5 << 4;
+ QTest::newRow("move08") << 0 << 5 << 5;
+ QTest::newRow("move09") << 0 << 5 << 6;
+ QTest::newRow("move08") << 3 << 5 << 5;
+ QTest::newRow("move08") << 3 << 5 << 6;
+ QTest::newRow("move09") << 4 << 5 << 5;
+ QTest::newRow("move10") << 4 << 5 << 6;
+ QTest::newRow("move11") << 5 << 5 << 5;
+ QTest::newRow("move12") << 5 << 5 << 6;
+ QTest::newRow("move13") << 5 << 9 << 9;
+ QTest::newRow("move14") << 5 << 9 << 10;
+ QTest::newRow("move15") << 6 << 9 << 9;
+ QTest::newRow("move16") << 6 << 9 << 10;
+ QTest::newRow("move17") << 7 << 9 << 9;
+ QTest::newRow("move18") << 7 << 9 << 10;
+ QTest::newRow("move19") << 8 << 9 << 9;
+ QTest::newRow("move20") << 8 << 9 << 10;
+ QTest::newRow("move21") << 9 << 9 << 9;
+ QTest::newRow("move22") << 0 << 9 << 10;
+
+}
+
+void tst_QAbstractItemModel::testMoveWithinOwnRange()
+{
+
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestRow(destRow);
+ moveCommand->doCommand();
+
+ QVERIFY(beforeSpy.size() == 0);
+ QVERIFY(afterSpy.size() == 0);
+
+
+}
+
+class ListenerObject : public QObject
+{
+ Q_OBJECT
+public:
+ ListenerObject(QAbstractProxyModel *parent);
+
+protected:
+ void fillIndexStores(const QModelIndex &parent);
+
+public slots:
+ void slotAboutToBeReset();
+ void slotReset();
+
+private:
+ QAbstractProxyModel *m_model;
+ QList<QPersistentModelIndex> m_persistentIndexes;
+ QModelIndexList m_nonPersistentIndexes;
+};
+
+
+ListenerObject::ListenerObject(QAbstractProxyModel *parent)
+ : QObject(parent), m_model(parent)
+{
+ connect(m_model, SIGNAL(modelAboutToBeReset()), SLOT(slotAboutToBeReset()));
+ connect(m_model, SIGNAL(modelReset()), SLOT(slotReset()));
+
+ fillIndexStores(QModelIndex());
+}
+
+void ListenerObject::fillIndexStores(const QModelIndex &parent)
+{
+ const int column = 0;
+ int row = 0;
+ QModelIndex idx = m_model->index(row, column, parent);
+ while (idx.isValid())
+ {
+ m_persistentIndexes << QPersistentModelIndex(idx);
+ m_nonPersistentIndexes << idx;
+ if (m_model->hasChildren(idx))
+ {
+ fillIndexStores(idx);
+ }
+ ++row;
+ idx = m_model->index(row, column, parent);
+ }
+}
+
+void ListenerObject::slotAboutToBeReset()
+{
+ // Nothing has been changed yet. All indexes should be the same.
+ for (int i = 0; i < m_persistentIndexes.size(); ++i)
+ {
+ QModelIndex idx = m_persistentIndexes.at(i);
+ QVERIFY(idx == m_nonPersistentIndexes.at(i));
+ QVERIFY(m_model->mapToSource(idx).isValid());
+ }
+}
+
+void ListenerObject::slotReset()
+{
+ foreach(const QModelIndex &idx, m_persistentIndexes)
+ {
+ QVERIFY(!idx.isValid());
+ }
+}
+
+
+void tst_QAbstractItemModel::testReset()
+{
+ QSignalSpy beforeResetSpy(m_model, SIGNAL(modelAboutToBeReset()));
+ QSignalSpy afterResetSpy(m_model, SIGNAL(modelReset()));
+
+
+ QSortFilterProxyModel *nullProxy = new QSortFilterProxyModel(this);
+ nullProxy->setSourceModel(m_model);
+
+ // Makes sure the model and proxy are in a consistent state. before and after reset.
+ new ListenerObject(nullProxy);
+
+ ModelResetCommandFixed *resetCommand = new ModelResetCommandFixed(m_model, this);
+
+ resetCommand->setNumCols(4);
+ resetCommand->setStartRow(0);
+ resetCommand->setEndRow(0);
+ resetCommand->setDestRow(0);
+ resetCommand->setDestAncestors(QList<int>() << 5);
+ resetCommand->doCommand();
+
+ // Verify that the correct signals were emitted
+ QVERIFY(beforeResetSpy.size() == 1);
+ QVERIFY(afterResetSpy.size() == 1);
+
+ // Verify that the move actually happened.
+ QVERIFY(m_model->rowCount() == 9);
+ QModelIndex destIndex = m_model->index(4, 0);
+ QVERIFY(m_model->rowCount(destIndex) == 11);
+
+}
+
+
+QTEST_MAIN(tst_QAbstractItemModel)
+#include "tst_qabstractitemmodel.moc"
diff --git a/tests/auto/qcoreapplication/.gitignore b/tests/auto/corelib/kernel/qcoreapplication/.gitignore
index 8cba8c359f..8cba8c359f 100644
--- a/tests/auto/qcoreapplication/.gitignore
+++ b/tests/auto/corelib/kernel/qcoreapplication/.gitignore
diff --git a/tests/auto/qcoreapplication/qcoreapplication.pro b/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro
index 031af39df7..031af39df7 100644
--- a/tests/auto/qcoreapplication/qcoreapplication.pro
+++ b/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro
diff --git a/tests/auto/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
index 99f0941ac2..99f0941ac2 100644
--- a/tests/auto/qcoreapplication/tst_qcoreapplication.cpp
+++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
diff --git a/tests/auto/qeventloop/.gitignore b/tests/auto/corelib/kernel/qeventloop/.gitignore
index be3297188a..be3297188a 100644
--- a/tests/auto/qeventloop/.gitignore
+++ b/tests/auto/corelib/kernel/qeventloop/.gitignore
diff --git a/tests/auto/qeventloop/qeventloop.pro b/tests/auto/corelib/kernel/qeventloop/qeventloop.pro
index e3c170a33b..e3c170a33b 100644
--- a/tests/auto/qeventloop/qeventloop.pro
+++ b/tests/auto/corelib/kernel/qeventloop/qeventloop.pro
diff --git a/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp b/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp
new file mode 100644
index 0000000000..6f8a75ed3d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp
@@ -0,0 +1,937 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+
+#include <qabstracteventdispatcher.h>
+#include <qcoreapplication.h>
+#include <qcoreevent.h>
+#include <qeventloop.h>
+#include <qmutex.h>
+#include <qthread.h>
+#include <qtimer.h>
+#include <qwaitcondition.h>
+#include <QTcpServer>
+#include <QTcpSocket>
+
+#ifdef Q_OS_SYMBIAN
+#include <e32base.h>
+#include <unistd.h>
+#endif
+
+#include "../../../../shared/util.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class EventLoopExiter : public QObject
+{
+ Q_OBJECT
+ QEventLoop *eventLoop;
+public:
+ inline EventLoopExiter(QEventLoop *el)
+ : eventLoop(el)
+ { }
+public slots:
+ void exit();
+ void exit1();
+ void exit2();
+};
+
+void EventLoopExiter::exit()
+{ eventLoop->exit(); }
+
+void EventLoopExiter::exit1()
+{ eventLoop->exit(1); }
+
+void EventLoopExiter::exit2()
+{ eventLoop->exit(2); }
+
+class EventLoopThread : public QThread
+{
+ Q_OBJECT
+signals:
+ void checkPoint();
+public:
+ QEventLoop *eventLoop;
+ void run();
+};
+
+void EventLoopThread::run()
+{
+ eventLoop = new QEventLoop;
+ emit checkPoint();
+ (void) eventLoop->exec();
+ delete eventLoop;
+ eventLoop = 0;
+}
+
+class MultipleExecThread : public QThread
+{
+ Q_OBJECT
+signals:
+ void checkPoint();
+public:
+ QMutex mutex;
+ QWaitCondition cond;
+ volatile int result1;
+ volatile int result2;
+ MultipleExecThread() : result1(0xdead), result2(0xbeef) {}
+
+ void run()
+ {
+ QMutexLocker locker(&mutex);
+ // this exec should work
+
+ cond.wakeOne();
+ cond.wait(&mutex);
+
+ QTimer timer;
+ connect(&timer, SIGNAL(timeout()), SLOT(quit()), Qt::DirectConnection);
+ timer.setInterval(1000);
+ timer.start();
+ result1 = exec();
+
+ // this should return immediately, since exit() has been called
+ cond.wakeOne();
+ cond.wait(&mutex);
+ QEventLoop eventLoop;
+ result2 = eventLoop.exec();
+ }
+};
+
+class StartStopEvent: public QEvent
+{
+public:
+ StartStopEvent(int type, QEventLoop *loop = 0)
+ : QEvent(Type(type)), el(loop)
+ { }
+
+ QEventLoop *el;
+};
+
+class EventLoopExecutor : public QObject
+{
+ Q_OBJECT
+ QEventLoop *eventLoop;
+public:
+ int returnCode;
+ EventLoopExecutor(QEventLoop *eventLoop)
+ : QObject(), eventLoop(eventLoop), returnCode(-42)
+ {
+ }
+public slots:
+ void exec()
+ {
+ QTimer::singleShot(100, eventLoop, SLOT(quit()));
+ // this should return immediately, and the timer event should be delivered to
+ // tst_QEventLoop::exec() test, letting the test complete
+ returnCode = eventLoop->exec();
+ }
+};
+
+#ifndef QT_NO_EXCEPTIONS
+class QEventLoopTestException { };
+
+class ExceptionThrower : public QObject
+{
+ Q_OBJECT
+public:
+ ExceptionThrower() : QObject() { }
+public slots:
+ void throwException()
+ {
+ QEventLoopTestException e;
+ throw e;
+ }
+};
+#endif
+
+class tst_QEventLoop : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QEventLoop();
+ ~tst_QEventLoop();
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ // This test *must* run first. See the definition for why.
+ void onlySymbianActiveScheduler();
+ void symbianNestedActiveSchedulerLoop_data();
+ void symbianNestedActiveSchedulerLoop();
+ void processEvents();
+ void exec();
+ void throwInExec();
+ void reexec();
+ void exit();
+ void execAfterExit();
+ void wakeUp();
+ void quit();
+ void processEventsExcludeSocket();
+ void processEventsExcludeTimers();
+ void deliverInDefinedOrder_QTBUG19637();
+
+ // keep this test last:
+ void nestedLoops();
+
+protected:
+ void customEvent(QEvent *e);
+};
+
+tst_QEventLoop::tst_QEventLoop()
+{ }
+
+tst_QEventLoop::~tst_QEventLoop()
+{ }
+
+void tst_QEventLoop::init()
+{ }
+
+void tst_QEventLoop::cleanup()
+{ }
+
+#ifdef Q_OS_SYMBIAN
+class OnlySymbianActiveScheduler_helper : public QObject
+{
+ Q_OBJECT
+
+public:
+ OnlySymbianActiveScheduler_helper(int fd, QTimer *zeroTimer)
+ : fd(fd),
+ timerCount(0),
+ zeroTimer(zeroTimer),
+ zeroTimerCount(0),
+ notifierCount(0)
+ {
+ }
+ ~OnlySymbianActiveScheduler_helper() {}
+
+public slots:
+ void timerSlot()
+ {
+ // Let all the events occur twice so we know they reactivated after
+ // each occurrence.
+ if (++timerCount >= 2) {
+ // This will hopefully run last, so stop the active scheduler.
+ CActiveScheduler::Stop();
+ }
+ }
+ void zeroTimerSlot()
+ {
+ if (++zeroTimerCount >= 2) {
+ zeroTimer->stop();
+ }
+ }
+ void notifierSlot()
+ {
+ if (++notifierCount >= 2) {
+ char dummy;
+ ::read(fd, &dummy, 1);
+ }
+ }
+
+private:
+ int fd;
+ int timerCount;
+ QTimer *zeroTimer;
+ int zeroTimerCount;
+ int notifierCount;
+};
+#endif
+
+void tst_QEventLoop::onlySymbianActiveScheduler() {
+#ifndef Q_OS_SYMBIAN
+ QSKIP("This is a Symbian-only test.", SkipAll);
+#else
+ // In here we try to use timers and sockets exclusively using the Symbian
+ // active scheduler and no processEvents().
+ // This test should therefore be run first, so that we can verify that
+ // the first occurrence of processEvents does not do any initialization that
+ // we depend on.
+
+ // Open up a pipe so we can test socket notifiers.
+ int pipeEnds[2];
+ if (::pipe(pipeEnds) != 0) {
+ QFAIL("Could not open pipe");
+ }
+ QSocketNotifier notifier(pipeEnds[0], QSocketNotifier::Read);
+ QSignalSpy notifierSpy(&notifier, SIGNAL(activated(int)));
+ char dummy = 1;
+ ::write(pipeEnds[1], &dummy, 1);
+
+ QTimer zeroTimer;
+ QSignalSpy zeroTimerSpy(&zeroTimer, SIGNAL(timeout()));
+ zeroTimer.setInterval(0);
+ zeroTimer.start();
+
+ QTimer timer;
+ QSignalSpy timerSpy(&timer, SIGNAL(timeout()));
+ timer.setInterval(2000); // Generous timeout or this test will fail if there is high load
+ timer.start();
+
+ OnlySymbianActiveScheduler_helper helper(pipeEnds[0], &zeroTimer);
+ connect(&notifier, SIGNAL(activated(int)), &helper, SLOT(notifierSlot()));
+ connect(&zeroTimer, SIGNAL(timeout()), &helper, SLOT(zeroTimerSlot()));
+ connect(&timer, SIGNAL(timeout()), &helper, SLOT(timerSlot()));
+
+ CActiveScheduler::Start();
+
+ ::close(pipeEnds[1]);
+ ::close(pipeEnds[0]);
+
+ QCOMPARE(notifierSpy.count(), 2);
+ QCOMPARE(zeroTimerSpy.count(), 2);
+ QCOMPARE(timerSpy.count(), 2);
+#endif
+}
+
+void tst_QEventLoop::processEvents()
+{
+ QSignalSpy spy1(QAbstractEventDispatcher::instance(), SIGNAL(aboutToBlock()));
+ QSignalSpy spy2(QAbstractEventDispatcher::instance(), SIGNAL(awake()));
+
+ QEventLoop eventLoop;
+
+ QCoreApplication::postEvent(&eventLoop, new QEvent(QEvent::User));
+
+ // process posted events, QEventLoop::processEvents() should return
+ // true
+ QVERIFY(eventLoop.processEvents());
+ QCOMPARE(spy1.count(), 0);
+ QCOMPARE(spy2.count(), 1);
+
+ // allow any session manager to complete its handshake, so that
+ // there are no pending events left.
+ while (eventLoop.processEvents())
+ ;
+
+ // On mac we get application started events at this point,
+ // so process events one more time just to be sure.
+ eventLoop.processEvents();
+
+ // no events to process, QEventLoop::processEvents() should return
+ // false
+ spy1.clear();
+ spy2.clear();
+ QVERIFY(!eventLoop.processEvents());
+ QCOMPARE(spy1.count(), 0);
+ QCOMPARE(spy2.count(), 1);
+
+ // make sure the test doesn't block forever
+ int timerId = startTimer(100);
+
+ // wait for more events to process, QEventLoop::processEvents()
+ // should return true
+ spy1.clear();
+ spy2.clear();
+ QVERIFY(eventLoop.processEvents(QEventLoop::WaitForMoreEvents));
+
+ // Verify that the eventloop has blocked and woken up. Some eventloops
+ // may block and wake up multiple times.
+ QVERIFY(spy1.count() > 0);
+ QVERIFY(spy2.count() > 0);
+ // We should get one awake for each aboutToBlock, plus one awake when
+ // processEvents is entered.
+ QVERIFY(spy2.count() >= spy1.count());
+
+ killTimer(timerId);
+}
+
+#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+// Symbian needs bit longer timeout for emulator, as emulator startup causes additional delay
+# define EXEC_TIMEOUT 1000
+#else
+# define EXEC_TIMEOUT 100
+#endif
+
+
+void tst_QEventLoop::exec()
+{
+ {
+ QEventLoop eventLoop;
+ EventLoopExiter exiter(&eventLoop);
+ int returnCode;
+
+ QTimer::singleShot(EXEC_TIMEOUT, &exiter, SLOT(exit()));
+ returnCode = eventLoop.exec();
+ QCOMPARE(returnCode, 0);
+
+ QTimer::singleShot(EXEC_TIMEOUT, &exiter, SLOT(exit1()));
+ returnCode = eventLoop.exec();
+ QCOMPARE(returnCode, 1);
+
+ QTimer::singleShot(EXEC_TIMEOUT, &exiter, SLOT(exit2()));
+ returnCode = eventLoop.exec();
+ QCOMPARE(returnCode, 2);
+ }
+
+ {
+ // calling QEventLoop::exec() after a thread loop has exit()ed should return immediately
+ // Note: this behaviour differs from QCoreApplication and QEventLoop
+ // see tst_QCoreApplication::eventLoopExecAfterExit, tst_QEventLoop::reexec
+ MultipleExecThread thread;
+
+ // start thread and wait for checkpoint
+ thread.mutex.lock();
+ thread.start();
+ thread.cond.wait(&thread.mutex);
+
+ // make sure the eventloop runs
+ QSignalSpy spy(QAbstractEventDispatcher::instance(&thread), SIGNAL(awake()));
+ thread.cond.wakeOne();
+ thread.cond.wait(&thread.mutex);
+ QVERIFY(spy.count() > 0);
+ int v = thread.result1;
+ QCOMPARE(v, 0);
+
+ // exec should return immediately
+ spy.clear();
+ thread.cond.wakeOne();
+ thread.mutex.unlock();
+ thread.wait();
+ QCOMPARE(spy.count(), 0);
+ v = thread.result2;
+ QCOMPARE(v, -1);
+ }
+
+ {
+ // a single instance of QEventLoop should not be allowed to recurse into exec()
+ QEventLoop eventLoop;
+ EventLoopExecutor executor(&eventLoop);
+
+ QTimer::singleShot(EXEC_TIMEOUT, &executor, SLOT(exec()));
+ int returnCode = eventLoop.exec();
+ QCOMPARE(returnCode, 0);
+ QCOMPARE(executor.returnCode, -1);
+ }
+}
+
+void tst_QEventLoop::throwInExec()
+{
+#if defined(QT_NO_EXCEPTIONS) || defined(NO_EVENTLOOP_EXCEPTIONS)
+ QSKIP("Exceptions are disabled", SkipAll);
+#elif defined(Q_OS_WINCE_WM) || defined(Q_OS_SYMBIAN)
+ // Windows Mobile cannot handle cross library exceptions
+ // qobject.cpp will try to rethrow the exception after handling
+ // which causes gwes.exe to crash
+
+ // Symbian doesn't propagate exceptions from eventloop, but converts them to
+ // CActiveScheduler errors instead -> this test will hang.
+ QSKIP("This platform doesn't support propagating exceptions through the event loop", SkipAll);
+#elif defined(Q_OS_LINUX)
+ // C++ exceptions can't be passed through glib callbacks. Skip the test if
+ // we're using the glib event loop.
+ QByteArray dispatcher = QAbstractEventDispatcher::instance()->metaObject()->className();
+ if (dispatcher.contains("Glib")) {
+ QSKIP(
+ qPrintable(QString(
+ "Throwing exceptions in exec() won't work if %1 event dispatcher is used.\n"
+ "Try running with QT_NO_GLIB=1 in environment."
+ ).arg(QString::fromLatin1(dispatcher))),
+ SkipAll
+ );
+ }
+#endif
+
+ {
+ // QEventLoop::exec() is exception safe
+ QEventLoop eventLoop;
+ int caughtExceptions = 0;
+
+ try {
+ ExceptionThrower exceptionThrower;
+ QTimer::singleShot(EXEC_TIMEOUT, &exceptionThrower, SLOT(throwException()));
+ (void) eventLoop.exec();
+ } catch (...) {
+ ++caughtExceptions;
+ }
+ try {
+ ExceptionThrower exceptionThrower;
+ QTimer::singleShot(EXEC_TIMEOUT, &exceptionThrower, SLOT(throwException()));
+ (void) eventLoop.exec();
+ } catch (...) {
+ ++caughtExceptions;
+ }
+ QCOMPARE(caughtExceptions, 2);
+ }
+}
+
+void tst_QEventLoop::reexec()
+{
+ QEventLoop loop;
+
+ // exec once
+ QMetaObject::invokeMethod(&loop, "quit", Qt::QueuedConnection);
+ QCOMPARE(loop.exec(), 0);
+
+ // and again
+ QMetaObject::invokeMethod(&loop, "quit", Qt::QueuedConnection);
+ QCOMPARE(loop.exec(), 0);
+}
+
+void tst_QEventLoop::exit()
+{ DEPENDS_ON(exec()); }
+
+void tst_QEventLoop::execAfterExit()
+{
+ QEventLoop loop;
+ EventLoopExiter obj(&loop);
+
+ QMetaObject::invokeMethod(&obj, "exit", Qt::QueuedConnection);
+ loop.exit(1);
+ QCOMPARE(loop.exec(), 0);
+}
+
+void tst_QEventLoop::wakeUp()
+{
+ EventLoopThread thread;
+ QEventLoop eventLoop;
+ connect(&thread, SIGNAL(checkPoint()), &eventLoop, SLOT(quit()));
+ connect(&thread, SIGNAL(finished()), &eventLoop, SLOT(quit()));
+
+ thread.start();
+ (void) eventLoop.exec();
+
+ QSignalSpy spy(QAbstractEventDispatcher::instance(&thread), SIGNAL(awake()));
+ thread.eventLoop->wakeUp();
+
+ // give the thread time to wake up
+ QTimer::singleShot(1000, &eventLoop, SLOT(quit()));
+ (void) eventLoop.exec();
+
+ QVERIFY(spy.count() > 0);
+
+ thread.quit();
+ (void) eventLoop.exec();
+}
+
+void tst_QEventLoop::quit()
+{
+ QEventLoop eventLoop;
+ int returnCode;
+
+ QTimer::singleShot(100, &eventLoop, SLOT(quit()));
+ returnCode = eventLoop.exec();
+ QCOMPARE(returnCode, 0);
+}
+
+
+void tst_QEventLoop::nestedLoops()
+{
+ QCoreApplication::postEvent(this, new StartStopEvent(QEvent::User));
+ QCoreApplication::postEvent(this, new StartStopEvent(QEvent::User));
+ QCoreApplication::postEvent(this, new StartStopEvent(QEvent::User));
+
+ // without the fix, this will *wedge* and never return
+ QTest::qWait(1000);
+}
+
+void tst_QEventLoop::customEvent(QEvent *e)
+{
+ if (e->type() == QEvent::User) {
+ QEventLoop loop;
+ QCoreApplication::postEvent(this, new StartStopEvent(int(QEvent::User) + 1, &loop));
+ loop.exec();
+ } else {
+ static_cast<StartStopEvent *>(e)->el->exit();
+ }
+}
+
+class SocketEventsTester: public QObject
+{
+ Q_OBJECT
+public:
+ SocketEventsTester()
+ {
+ socket = 0;
+ server = 0;
+ dataArrived = false;
+ testResult = false;
+ }
+ ~SocketEventsTester()
+ {
+ delete socket;
+ delete server;
+ }
+ bool init()
+ {
+ bool ret = false;
+ server = new QTcpServer();
+ socket = new QTcpSocket();
+ connect(server, SIGNAL(newConnection()), this, SLOT(sendHello()));
+ connect(socket, SIGNAL(readyRead()), this, SLOT(sendAck()), Qt::DirectConnection);
+ if((ret = server->listen(QHostAddress::LocalHost, 0))) {
+ socket->connectToHost(server->serverAddress(), server->serverPort());
+ socket->waitForConnected();
+ }
+ return ret;
+ }
+
+ QTcpSocket *socket;
+ QTcpServer *server;
+ bool dataArrived;
+ bool testResult;
+public slots:
+ void sendAck()
+ {
+ dataArrived = true;
+ }
+ void sendHello()
+ {
+ char data[10] ="HELLO";
+ qint64 size = sizeof(data);
+
+ QTcpSocket *serverSocket = server->nextPendingConnection();
+ serverSocket->write(data, size);
+ serverSocket->flush();
+ QTest::qSleep(200); //allow the TCP/IP stack time to loopback the data, so our socket is ready to read
+ QCoreApplication::processEvents(QEventLoop::ExcludeSocketNotifiers);
+ testResult = dataArrived;
+ QCoreApplication::processEvents(); //check the deferred event is processed
+ serverSocket->close();
+ QThread::currentThread()->exit(0);
+ }
+};
+
+class SocketTestThread : public QThread
+{
+ Q_OBJECT
+public:
+ SocketTestThread():QThread(0),testResult(false){};
+ void run()
+ {
+ SocketEventsTester *tester = new SocketEventsTester();
+ if (tester->init())
+ exec();
+ testResult = tester->testResult;
+ dataArrived = tester->dataArrived;
+ delete tester;
+ }
+ bool testResult;
+ bool dataArrived;
+};
+
+void tst_QEventLoop::processEventsExcludeSocket()
+{
+ SocketTestThread thread;
+ thread.start();
+ QVERIFY(thread.wait());
+ QVERIFY(!thread.testResult);
+ QVERIFY(thread.dataArrived);
+}
+
+class TimerReceiver : public QObject
+{
+public:
+ int gotTimerEvent;
+
+ TimerReceiver()
+ : QObject(), gotTimerEvent(-1)
+ { }
+
+ void timerEvent(QTimerEvent *event)
+ {
+ gotTimerEvent = event->timerId();
+ }
+};
+
+void tst_QEventLoop::processEventsExcludeTimers()
+{
+ TimerReceiver timerReceiver;
+ int timerId = timerReceiver.startTimer(0);
+
+ QEventLoop eventLoop;
+
+ // normal process events will send timers
+ eventLoop.processEvents();
+ QCOMPARE(timerReceiver.gotTimerEvent, timerId);
+ timerReceiver.gotTimerEvent = -1;
+
+ // normal process events will send timers
+ eventLoop.processEvents(QEventLoop::X11ExcludeTimers);
+#if !defined(Q_OS_UNIX) || defined(Q_OS_SYMBIAN)
+ QEXPECT_FAIL("", "X11ExcludeTimers only works on UN*X", Continue);
+#endif
+ QCOMPARE(timerReceiver.gotTimerEvent, -1);
+ timerReceiver.gotTimerEvent = -1;
+
+ // resume timer processing
+ eventLoop.processEvents();
+ QCOMPARE(timerReceiver.gotTimerEvent, timerId);
+ timerReceiver.gotTimerEvent = -1;
+}
+
+#ifdef Q_OS_SYMBIAN
+class DummyActiveObject : public CActive
+{
+public:
+ DummyActiveObject(int levels);
+ ~DummyActiveObject();
+
+ void Start();
+
+protected:
+ void DoCancel();
+ void RunL();
+
+public:
+ bool succeeded;
+
+private:
+ RTimer m_rTimer;
+ int remainingLevels;
+};
+
+class ActiveSchedulerLoop : public QObject
+{
+public:
+ ActiveSchedulerLoop(int levels) : succeeded(false), timerId(-1), remainingLevels(levels) {}
+ ~ActiveSchedulerLoop() {}
+
+ void timerEvent(QTimerEvent *e);
+
+public:
+ bool succeeded;
+ int timerId;
+ int remainingLevels;
+};
+
+DummyActiveObject::DummyActiveObject(int levels)
+ : CActive(CActive::EPriorityStandard),
+ succeeded(false),
+ remainingLevels(levels)
+{
+ m_rTimer.CreateLocal();
+}
+
+DummyActiveObject::~DummyActiveObject()
+{
+ Cancel();
+ m_rTimer.Close();
+}
+
+void DummyActiveObject::DoCancel()
+{
+ m_rTimer.Cancel();
+}
+
+void DummyActiveObject::RunL()
+{
+ if (remainingLevels - 1 <= 0) {
+ ActiveSchedulerLoop loop(remainingLevels - 1);
+ loop.timerId = loop.startTimer(0);
+ QCoreApplication::processEvents();
+
+ succeeded = loop.succeeded;
+ } else {
+ succeeded = true;
+ }
+ CActiveScheduler::Stop();
+}
+
+void DummyActiveObject::Start()
+{
+ m_rTimer.After(iStatus, 100000); // 100 ms
+ SetActive();
+}
+
+void ActiveSchedulerLoop::timerEvent(QTimerEvent *e)
+{
+ Q_UNUSED(e);
+ DummyActiveObject *dummy = new(ELeave) DummyActiveObject(remainingLevels);
+ CActiveScheduler::Add(dummy);
+
+ dummy->Start();
+
+ CActiveScheduler::Start();
+
+ succeeded = dummy->succeeded;
+
+ delete dummy;
+
+ killTimer(timerId);
+}
+
+// We cannot trap panics when the test case fails, so run it in a different thread instead.
+class ActiveSchedulerThread : public QThread
+{
+public:
+ ActiveSchedulerThread(QEventLoop::ProcessEventsFlag flags);
+ ~ActiveSchedulerThread();
+
+protected:
+ void run();
+
+public:
+ volatile bool succeeded;
+
+private:
+ QEventLoop::ProcessEventsFlag m_flags;
+};
+
+ActiveSchedulerThread::ActiveSchedulerThread(QEventLoop::ProcessEventsFlag flags)
+ : succeeded(false),
+ m_flags(flags)
+{
+}
+
+ActiveSchedulerThread::~ActiveSchedulerThread()
+{
+}
+
+void ActiveSchedulerThread::run()
+{
+ ActiveSchedulerLoop loop(2);
+ loop.timerId = loop.startTimer(0);
+ // It may panic in here if the active scheduler and the Qt loop don't go together.
+ QCoreApplication::processEvents(m_flags);
+
+ succeeded = loop.succeeded;
+}
+#endif // ifdef Q_OS_SYMBIAN
+
+void tst_QEventLoop::symbianNestedActiveSchedulerLoop_data()
+{
+ QTest::addColumn<int>("processEventFlags");
+
+ QTest::newRow("AllEvents") << (int)QEventLoop::AllEvents;
+ QTest::newRow("WaitForMoreEvents") << (int)QEventLoop::WaitForMoreEvents;
+}
+
+/*
+ Before you start fiddling with this test, you should have a good understanding of how
+ Symbian active objects work. What the test does is to try to screw up the semaphore count
+ in the active scheduler to cause stray signals, by running the Qt event loop and the
+ active scheduler inside each other. Naturally, its attempts to do this should be futile!
+*/
+void tst_QEventLoop::symbianNestedActiveSchedulerLoop()
+{
+#ifndef Q_OS_SYMBIAN
+ QSKIP("This is a Symbian only test.", SkipAll);
+#else
+ QFETCH(int, processEventFlags);
+
+ ActiveSchedulerThread thread((QEventLoop::ProcessEventsFlag)processEventFlags);
+ thread.start();
+ thread.wait(2000);
+
+ QVERIFY(thread.succeeded);
+#endif
+}
+
+Q_DECLARE_METATYPE(QThread*)
+
+namespace DeliverInDefinedOrder_QTBUG19637 {
+ enum { NbThread = 3, NbObject = 500, NbEventQueue = 5, NbEvent = 50 };
+
+ struct CustomEvent : public QEvent {
+ CustomEvent(int q, int v) : QEvent(Type(User + q)), value(v) {}
+ int value;
+ };
+
+ struct Object : public QObject {
+ Q_OBJECT
+ public:
+ Object() : count(0) {
+ for (int i = 0; i < NbEventQueue; i++)
+ lastReceived[i] = -1;
+ }
+ int lastReceived[NbEventQueue];
+ int count;
+ virtual void customEvent(QEvent* e) {
+ QVERIFY(e->type() >= QEvent::User);
+ QVERIFY(e->type() < QEvent::User + 5);
+ uint idx = e->type() - QEvent::User;
+ int value = static_cast<CustomEvent *>(e)->value;
+ QVERIFY(lastReceived[idx] < value);
+ lastReceived[idx] = value;
+ count++;
+ }
+
+ public slots:
+ void moveToThread(QThread *t) {
+ QObject::moveToThread(t);
+ }
+ };
+
+}
+
+void tst_QEventLoop::deliverInDefinedOrder_QTBUG19637()
+{
+ using namespace DeliverInDefinedOrder_QTBUG19637;
+ qMetaTypeId<QThread*>();
+ QThread threads[NbThread];
+ Object objects[NbObject];
+ for (int t = 0; t < NbThread; t++) {
+ threads[t].start();
+ }
+
+ int event = 0;
+
+ for (int o = 0; o < NbObject; o++) {
+ objects[o].moveToThread(&threads[o % NbThread]);
+ for (int e = 0; e < NbEvent; e++) {
+ int q = e % NbEventQueue;
+ QCoreApplication::postEvent(&objects[o], new CustomEvent(q, ++event) , q);
+ if (e % 7)
+ QMetaObject::invokeMethod(&objects[o], "moveToThread", Qt::QueuedConnection, Q_ARG(QThread*, &threads[(e+o)%NbThread]));
+ }
+ }
+
+ QTest::qWait(30);
+ for (int o = 0; o < NbObject; o++) {
+ QTRY_COMPARE(objects[o].count, int(NbEvent));
+ }
+
+ for (int t = 0; t < NbThread; t++) {
+ threads[t].quit();
+ threads[t].wait();
+ }
+
+}
+
+
+QTEST_MAIN(tst_QEventLoop)
+#include "tst_qeventloop.moc"
diff --git a/tests/auto/qitemmodel/.gitignore b/tests/auto/corelib/kernel/qitemmodel/.gitignore
index 017be17fa8..017be17fa8 100644
--- a/tests/auto/qitemmodel/.gitignore
+++ b/tests/auto/corelib/kernel/qitemmodel/.gitignore
diff --git a/tests/auto/qitemmodel/README b/tests/auto/corelib/kernel/qitemmodel/README
index bddec0cef2..bddec0cef2 100644
--- a/tests/auto/qitemmodel/README
+++ b/tests/auto/corelib/kernel/qitemmodel/README
diff --git a/tests/auto/corelib/kernel/qitemmodel/modelstotest.cpp b/tests/auto/corelib/kernel/qitemmodel/modelstotest.cpp
new file mode 100644
index 0000000000..82c28b5303
--- /dev/null
+++ b/tests/auto/corelib/kernel/qitemmodel/modelstotest.cpp
@@ -0,0 +1,424 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/QtCore>
+#include <QtSql/QtSql>
+#include <QSortFilterProxyModel>
+
+/*
+ To add a model to be tested add the header file to the includes
+ and impliment what is needed in the four functions below.
+
+ You can add more then one model, several Qt models and included as examples.
+
+ In tst_qitemmodel.cpp a new ModelsToTest object is created for each test.
+
+ When you have errors fix the first ones first. Later tests depend upon them working
+*/
+
+class ModelsToTest {
+
+public:
+ ModelsToTest();
+
+ QAbstractItemModel *createModel(const QString &modelType);
+ QModelIndex populateTestArea(QAbstractItemModel *model);
+ void cleanupTestArea(QAbstractItemModel *model);
+
+ enum Read {
+ ReadOnly, // wont perform remove(), insert(), and setData()
+ ReadWrite
+ };
+ enum Contains {
+ Empty, // Confirm that rowCount() == 0 etc throughout the test
+ HasData // Confirm that rowCount() != 0 etc throughout the test
+ };
+
+ struct test {
+ test(QString m, Read r, Contains c) : modelType(m), read(r), contains(c){};
+
+ QString modelType;
+ Read read;
+ Contains contains;
+ };
+
+ QList<test> tests;
+
+ static void setupDatabase();
+};
+
+
+/*!
+ Add new tests, they can be the same model, but in a different state.
+
+ The name of the model is passed to createModel
+ If readOnly is true the remove tests will be skipped. Example: QDirModel is disabled.
+ If createModel returns an empty model. Example: QDirModel does not
+ */
+ModelsToTest::ModelsToTest()
+{
+ setupDatabase();
+
+ tests.append(test("QDirModel", ReadOnly, HasData));
+ tests.append(test("QStringListModel", ReadWrite, HasData));
+ tests.append(test("QStringListModelEmpty", ReadWrite, Empty));
+
+ tests.append(test("QStandardItemModel", ReadWrite, HasData));
+ tests.append(test("QStandardItemModelEmpty", ReadWrite, Empty));
+
+ // QSortFilterProxyModel test uses QStandardItemModel so test it first
+ tests.append(test("QSortFilterProxyModel", ReadWrite, HasData));
+ tests.append(test("QSortFilterProxyModelEmpty", ReadWrite, Empty));
+ tests.append(test("QSortFilterProxyModelRegExp", ReadWrite, HasData));
+
+ tests.append(test("QListModel", ReadWrite, HasData));
+ tests.append(test("QListModelEmpty", ReadWrite, Empty));
+ tests.append(test("QTableModel", ReadWrite, HasData));
+ tests.append(test("QTableModelEmpty", ReadWrite, Empty));
+
+ tests.append(test("QTreeModel", ReadWrite, HasData));
+ tests.append(test("QTreeModelEmpty", ReadWrite, Empty));
+
+ tests.append(test("QSqlQueryModel", ReadOnly, HasData));
+ tests.append(test("QSqlQueryModelEmpty", ReadOnly, Empty));
+
+ // Fails on remove
+ tests.append(test("QSqlTableModel", ReadOnly, HasData));
+}
+
+/*!
+ Return a new modelType.
+ */
+QAbstractItemModel *ModelsToTest::createModel(const QString &modelType)
+{
+ if (modelType == "QStringListModelEmpty")
+ return new QStringListModel();
+
+ if (modelType == "QStringListModel") {
+ QStringListModel *model = new QStringListModel();
+ populateTestArea(model);
+ return model;
+ }
+
+ if (modelType == "QStandardItemModelEmpty") {
+ return new QStandardItemModel();
+ }
+
+ if (modelType == "QStandardItemModel") {
+ QStandardItemModel *model = new QStandardItemModel();
+ populateTestArea(model);
+ return model;
+ }
+
+ if (modelType == "QSortFilterProxyModelEmpty") {
+ QSortFilterProxyModel *model = new QSortFilterProxyModel;
+ QStandardItemModel *standardItemModel = new QStandardItemModel;
+ model->setSourceModel(standardItemModel);
+ return model;
+ }
+
+ if (modelType == "QSortFilterProxyModelRegExp") {
+ QSortFilterProxyModel *model = new QSortFilterProxyModel;
+ QStandardItemModel *standardItemModel = new QStandardItemModel;
+ model->setSourceModel(standardItemModel);
+ populateTestArea(model);
+ model->setFilterRegExp(QRegExp("(^$|0.*)"));
+ return model;
+ }
+
+ if (modelType == "QSortFilterProxyModel") {
+ QSortFilterProxyModel *model = new QSortFilterProxyModel;
+ QStandardItemModel *standardItemModel = new QStandardItemModel;
+ model->setSourceModel(standardItemModel);
+ populateTestArea(model);
+ return model;
+ }
+
+ if (modelType == "QDirModel") {
+ QDirModel *model = new QDirModel();
+ model->setReadOnly(false);
+ return model;
+ }
+
+ if (modelType == "QSqlQueryModel") {
+ QSqlQueryModel *model = new QSqlQueryModel();
+ populateTestArea(model);
+ return model;
+ }
+
+ if (modelType == "QSqlQueryModelEmpty") {
+ QSqlQueryModel *model = new QSqlQueryModel();
+ return model;
+ }
+
+ if (modelType == "QSqlTableModel") {
+ QSqlTableModel *model = new QSqlTableModel();
+ populateTestArea(model);
+ return model;
+ }
+
+ if (modelType == "QListModelEmpty")
+ return (new QListWidget)->model();
+
+ if (modelType == "QListModel") {
+ QListWidget *widget = new QListWidget;
+ populateTestArea(widget->model());
+ return widget->model();
+ }
+
+ if (modelType == "QTableModelEmpty")
+ return (new QTableWidget)->model();
+
+ if (modelType == "QTableModel") {
+ QTableWidget *widget = new QTableWidget;
+ populateTestArea(widget->model());
+ return widget->model();
+ }
+
+ if (modelType == "QTreeModelEmpty") {
+ QTreeWidget *widget = new QTreeWidget;
+ return widget->model();
+ }
+
+ if (modelType == "QTreeModel") {
+ QTreeWidget *widget = new QTreeWidget;
+ populateTestArea(widget->model());
+ return widget->model();
+ }
+
+ return 0;
+}
+
+/*!
+ Fills model with some test data at least twenty rows and if possible twenty or more columns.
+ Return the parent of a row/column that can be tested.
+
+ NOTE: If readOnly is true tests will try to remove and add rows and columns.
+ If you have a tree model returning not the root index will help catch more errors.
+ */
+QModelIndex ModelsToTest::populateTestArea(QAbstractItemModel *model)
+{
+ if (QStringListModel *stringListModel = qobject_cast<QStringListModel *>(model)) {
+ QString alphabet = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
+ stringListModel->setStringList( alphabet.split(",") );
+ return QModelIndex();
+ }
+
+ if (qobject_cast<QStandardItemModel *>(model)) {
+ // Basic tree StandardItemModel
+ QModelIndex parent;
+ QVariant blue = QVariant(QColor(Qt::blue));
+#ifndef Q_OS_WINCE
+ for (int i = 0; i < 4; ++i) {
+#else
+ for (int i = 0; i < 2; ++i) {
+#endif
+ parent = model->index(0, 0, parent);
+ model->insertRows(0, 26 + i, parent);
+#ifndef Q_OS_WINCE
+ model->insertColumns(0, 26 + i, parent);
+#else
+ model->insertColumns(0, 4 + i, parent);
+#endif
+ // Fill in some values to make it easier to debug
+ /*
+ for (int x = 0; x < 26 + i; ++x) {
+ QString xval = QString::number(x);
+ for (int y = 0; y < 26 + i; ++y) {
+ QString val = xval + QString::number(y) + QString::number(i);
+ QModelIndex index = model->index(x, y, parent);
+ model->setData(index, val);
+ model->setData(index, blue, Qt::TextColorRole);
+ }
+ }
+ */
+ }
+ return model->index(0,0);
+ }
+
+ if (qobject_cast<QSortFilterProxyModel *>(model)) {
+ QAbstractItemModel *realModel = (qobject_cast<QSortFilterProxyModel *>(model))->sourceModel();
+ // Basic tree StandardItemModel
+ QModelIndex parent;
+ QVariant blue = QVariant(QColor(Qt::blue));
+#ifndef Q_OS_WINCE
+ for (int i = 0; i < 4; ++i) {
+#else
+ for (int i = 0; i < 2; ++i) {
+#endif
+ parent = realModel->index(0, 0, parent);
+ realModel->insertRows(0, 26+i, parent);
+#ifndef Q_OS_WINCE
+ realModel->insertColumns(0, 26+i, parent);
+#else
+ realModel->insertColumns(0, 4, parent);
+#endif
+ // Fill in some values to make it easier to debug
+ /*
+ for (int x = 0; x < 26+i; ++x) {
+ QString xval = QString::number(x);
+ for (int y = 0; y < 26 + i; ++y) {
+ QString val = xval + QString::number(y) + QString::number(i);
+ QModelIndex index = realModel->index(x, y, parent);
+ realModel->setData(index, val);
+ realModel->setData(index, blue, Qt::TextColorRole);
+ }
+ }
+ */
+ }
+ QModelIndex returnIndex = model->index(0,0);
+ if (!returnIndex.isValid())
+ qFatal("%s: model index to be returned is invalid", Q_FUNC_INFO);
+ return returnIndex;
+ }
+
+ if (QDirModel *dirModel = qobject_cast<QDirModel *>(model)) {
+ if (!QDir::current().mkdir("test"))
+ qFatal("%s: cannot create directory %s",
+ Q_FUNC_INFO,
+ qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/test")));
+ for (int i = 0; i < 26; ++i) {
+ QString subdir = QString("test/foo_%1").arg(i);
+ if (!QDir::current().mkdir(subdir))
+ qFatal("%s: cannot create directory %s",
+ Q_FUNC_INFO,
+ qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/"+subdir)));
+ }
+ return dirModel->index(QDir::currentPath()+"/test");
+ }
+
+ if (QSqlQueryModel *queryModel = qobject_cast<QSqlQueryModel *>(model)) {
+ QSqlQuery q;
+ q.exec("CREATE TABLE test(id int primary key, name varchar(30))");
+ q.prepare("INSERT INTO test(id, name) values (?, ?)");
+#ifndef Q_OS_WINCE
+ for (int i = 0; i < 1024; ++i) {
+#else
+ for (int i = 0; i < 512; ++i) {
+#endif
+ q.addBindValue(i);
+ q.addBindValue("Mr. Smith" + QString::number(i));
+ q.exec();
+ }
+ if (QSqlTableModel *tableModel = qobject_cast<QSqlTableModel *>(model)) {
+ tableModel->setTable("test");
+ tableModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
+ tableModel->select();
+ } else {
+ queryModel->setQuery("select * from test");
+ }
+ return QModelIndex();
+ }
+
+ if (QListWidget *listWidget = qobject_cast<QListWidget *>(model->parent())) {
+#ifndef Q_OS_WINCE
+ int items = 100;
+#else
+ int items = 50;
+#endif
+ while (items--)
+ listWidget->addItem(QString("item %1").arg(items));
+ return QModelIndex();
+ }
+
+ if (QTableWidget *tableWidget = qobject_cast<QTableWidget *>(model->parent())) {
+ tableWidget->setColumnCount(20);
+ tableWidget->setRowCount(20);
+ return QModelIndex();
+ }
+
+ if (QTreeWidget *treeWidget = qobject_cast<QTreeWidget *>(model->parent())) {
+ int topItems = 20;
+ treeWidget->setColumnCount(1);
+ QTreeWidgetItem *parent;
+ while (topItems--){
+ parent = new QTreeWidgetItem(treeWidget, QStringList(QString("top %1").arg(topItems)));
+ for (int i = 0; i < 20; ++i)
+ new QTreeWidgetItem(parent, QStringList(QString("child %1").arg(topItems)));
+ }
+ return QModelIndex();
+ }
+
+ qFatal("%s: unknown type of model", Q_FUNC_INFO);
+ return QModelIndex();
+}
+
+/*!
+ If you need to cleanup from populateTest() do it here.
+ Note that this is called after every test even if populateTestArea isn't called.
+ */
+void ModelsToTest::cleanupTestArea(QAbstractItemModel *model)
+{
+ if (qobject_cast<QDirModel *>(model))
+ {
+ if (QDir(QDir::currentPath()+"/test").exists())
+ {
+ for (int i = 0; i < 26; ++i) {
+ QString subdir(QString("test/foo_%1").arg(i));
+ if (!QDir::current().rmdir(subdir))
+ qFatal("%s: cannot remove directory %s",
+ Q_FUNC_INFO,
+ qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/"+subdir)));
+ }
+ if (!QDir::current().rmdir("test"))
+ qFatal("%s: cannot remove directory %s",
+ Q_FUNC_INFO,
+ qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/test")));
+ }
+ } else if (qobject_cast<QSqlQueryModel *>(model)) {
+ QSqlQuery q("DROP TABLE test");
+ }
+}
+
+void ModelsToTest::setupDatabase()
+{
+ if (!QSqlDatabase::database().isValid()) {
+ QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
+ db.setDatabaseName(":memory:");
+ if (!db.open()) {
+ qWarning() << "Unable to open database" << db.lastError();
+ return;
+ }
+ }
+}
+
diff --git a/tests/auto/corelib/kernel/qitemmodel/qitemmodel.pro b/tests/auto/corelib/kernel/qitemmodel/qitemmodel.pro
new file mode 100644
index 0000000000..97d55fcd4d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qitemmodel/qitemmodel.pro
@@ -0,0 +1,26 @@
+load(qttest_p4)
+SOURCES += tst_qitemmodel.cpp
+
+QT += widgets sql
+
+# NOTE: The deployment of the sqldrivers is disabled on purpose.
+# If we deploy the plugins, they are loaded twice when running
+# the tests on the autotest system. In that case we run out of
+# memory on Windows Mobile 5.
+
+#wince*: {
+# plugFiles.files = $$QT_BUILD_TREE/plugins/sqldrivers/*.dll
+# plugFiles.path = sqldrivers
+# DEPLOYMENT += plugFiles
+#}
+
+symbian {
+ TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
+ qt_not_deployed {
+ contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
+ sqlite.path = /sys/bin
+ sqlite.files = sqlite3.dll
+ DEPLOYMENT += sqlite
+ }
+ }
+}
diff --git a/tests/auto/qitemmodel/tst_qitemmodel.cpp b/tests/auto/corelib/kernel/qitemmodel/tst_qitemmodel.cpp
index 7daa984633..7daa984633 100644
--- a/tests/auto/qitemmodel/tst_qitemmodel.cpp
+++ b/tests/auto/corelib/kernel/qitemmodel/tst_qitemmodel.cpp
diff --git a/tests/auto/qmath/qmath.pro b/tests/auto/corelib/kernel/qmath/qmath.pro
index e5784ce7aa..e5784ce7aa 100644
--- a/tests/auto/qmath/qmath.pro
+++ b/tests/auto/corelib/kernel/qmath/qmath.pro
diff --git a/tests/auto/qmath/tst_qmath.cpp b/tests/auto/corelib/kernel/qmath/tst_qmath.cpp
index f908bd6e3e..f908bd6e3e 100644
--- a/tests/auto/qmath/tst_qmath.cpp
+++ b/tests/auto/corelib/kernel/qmath/tst_qmath.cpp
diff --git a/tests/auto/qmetaobject/.gitignore b/tests/auto/corelib/kernel/qmetaobject/.gitignore
index c5b38e7816..c5b38e7816 100644
--- a/tests/auto/qmetaobject/.gitignore
+++ b/tests/auto/corelib/kernel/qmetaobject/.gitignore
diff --git a/tests/auto/corelib/kernel/qmetaobject/qmetaobject.pro b/tests/auto/corelib/kernel/qmetaobject/qmetaobject.pro
new file mode 100644
index 0000000000..7a4cf94e47
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetaobject/qmetaobject.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+
+QT = core gui widgets
+
+SOURCES += tst_qmetaobject.cpp
+
+
+
diff --git a/tests/auto/qmetaobject/tst_qmetaobject.cpp b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
index a813a917d7..a813a917d7 100644
--- a/tests/auto/qmetaobject/tst_qmetaobject.cpp
+++ b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
diff --git a/tests/auto/corelib/kernel/qmetaproperty/qmetaproperty.pro b/tests/auto/corelib/kernel/qmetaproperty/qmetaproperty.pro
new file mode 100644
index 0000000000..4369f33b4c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetaproperty/qmetaproperty.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+QT = core gui
+SOURCES += tst_qmetaproperty.cpp
+
diff --git a/tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp b/tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp
new file mode 100644
index 0000000000..7a457b05fa
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qobject.h>
+#include <qmetaobject.h>
+
+class tst_QMetaProperty : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(EnumType value WRITE setValue READ getValue)
+ Q_PROPERTY(EnumType value2 WRITE set_value READ get_value)
+ Q_PROPERTY(int value8 READ value8)
+ Q_PROPERTY(int value9 READ value9 CONSTANT)
+ Q_PROPERTY(int value10 READ value10 FINAL)
+
+private slots:
+ void hasStdCppSet();
+ void isConstant();
+ void isFinal();
+
+public:
+ enum EnumType { EnumType1 };
+
+ void setValue(EnumType) {}
+ EnumType getValue() const { return EnumType1; }
+ void set_value(EnumType) {}
+ EnumType get_value() const { return EnumType1; }
+
+ int value8() const { return 1; }
+ int value9() const { return 1; }
+ int value10() const { return 1; }
+};
+
+void tst_QMetaProperty::hasStdCppSet()
+{
+ const QMetaObject *mo = metaObject();
+
+ QMetaProperty prop = mo->property(mo->indexOfProperty("value"));
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.hasStdCppSet());
+
+ prop = mo->property(mo->indexOfProperty("value2"));
+ QVERIFY(prop.isValid());
+ QVERIFY(!prop.hasStdCppSet());
+}
+
+void tst_QMetaProperty::isConstant()
+{
+ const QMetaObject *mo = metaObject();
+
+ QMetaProperty prop = mo->property(mo->indexOfProperty("value8"));
+ QVERIFY(prop.isValid());
+ QVERIFY(!prop.isConstant());
+
+ prop = mo->property(mo->indexOfProperty("value9"));
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.isConstant());
+}
+
+void tst_QMetaProperty::isFinal()
+{
+ const QMetaObject *mo = metaObject();
+
+ QMetaProperty prop = mo->property(mo->indexOfProperty("value10"));
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.isFinal());
+
+ prop = mo->property(mo->indexOfProperty("value9"));
+ QVERIFY(prop.isValid());
+ QVERIFY(!prop.isFinal());
+}
+
+QTEST_MAIN(tst_QMetaProperty)
+#include "tst_qmetaproperty.moc"
diff --git a/tests/auto/qmetatype/.gitignore b/tests/auto/corelib/kernel/qmetatype/.gitignore
index 2d54331613..2d54331613 100644
--- a/tests/auto/qmetatype/.gitignore
+++ b/tests/auto/corelib/kernel/qmetatype/.gitignore
diff --git a/tests/auto/qmetatype/qmetatype.pro b/tests/auto/corelib/kernel/qmetatype/qmetatype.pro
index ed1de83927..ed1de83927 100644
--- a/tests/auto/qmetatype/qmetatype.pro
+++ b/tests/auto/corelib/kernel/qmetatype/qmetatype.pro
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
new file mode 100644
index 0000000000..3fb60acf57
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -0,0 +1,365 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore>
+#include <QtTest/QtTest>
+
+#ifdef Q_OS_LINUX
+# include <pthread.h>
+#endif
+
+Q_DECLARE_METATYPE(QMetaType::Type)
+
+class tst_QMetaType: public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QList<QVariant> prop READ prop WRITE setProp)
+
+public:
+ tst_QMetaType() { propList << 42 << "Hello"; }
+
+ QList<QVariant> prop() const { return propList; }
+ void setProp(const QList<QVariant> &list) { propList = list; }
+
+private:
+ QList<QVariant> propList;
+
+private slots:
+ void defined();
+ void threadSafety();
+ void namespaces();
+ void qMetaTypeId();
+ void properties();
+ void normalizedTypes();
+ void typeName_data();
+ void typeName();
+ void construct();
+ void typedefs();
+ void isRegistered_data();
+ void isRegistered();
+ void unregisterType();
+ void QTBUG11316_registerStreamBuiltin();
+
+};
+
+struct Foo { int i; };
+
+void tst_QMetaType::defined()
+{
+ QCOMPARE(int(QMetaTypeId2<QString>::Defined), 1);
+ QCOMPARE(int(QMetaTypeId2<Foo>::Defined), 0);
+ QCOMPARE(int(QMetaTypeId2<void*>::Defined), 1);
+ QCOMPARE(int(QMetaTypeId2<int*>::Defined), 0);
+}
+
+struct Bar
+{
+ Bar()
+ {
+ // check re-entrancy
+ if (!QMetaType::isRegistered(qRegisterMetaType<Foo>("Foo"))) {
+ qWarning("%s: re-entrancy test failed", Q_FUNC_INFO);
+ ++failureCount;
+ }
+ }
+
+public:
+ static int failureCount;
+};
+
+int Bar::failureCount = 0;
+
+class MetaTypeTorturer: public QThread
+{
+ Q_OBJECT
+protected:
+ void run()
+ {
+ for (int i = 0; i < 1000; ++i) {
+ const QByteArray name = QString("Bar%1_%2").arg(i).arg((size_t)QThread::currentThreadId()).toLatin1();
+ const char *nm = name.constData();
+ int tp = qRegisterMetaType<Bar>(nm);
+#ifdef Q_OS_LINUX
+ pthread_yield();
+#endif
+ if (!QMetaType::isRegistered(tp)) {
+ ++failureCount;
+ qWarning() << name << "is not a registered metatype";
+ }
+ if (QMetaType::type(nm) != tp) {
+ ++failureCount;
+ qWarning() << "Wrong metatype returned for" << name;
+ }
+ if (QMetaType::typeName(tp) != name) {
+ ++failureCount;
+ qWarning() << "Wrong typeName returned for" << tp;
+ }
+ void *buf = QMetaType::construct(tp, 0);
+ void *buf2 = QMetaType::construct(tp, buf);
+ if (!buf) {
+ ++failureCount;
+ qWarning() << "Null buffer returned by QMetaType::construct(tp, 0)";
+ }
+ if (!buf2) {
+ ++failureCount;
+ qWarning() << "Null buffer returned by QMetaType::construct(tp, buf)";
+ }
+ QMetaType::destroy(tp, buf);
+ QMetaType::destroy(tp, buf2);
+ }
+ }
+public:
+ MetaTypeTorturer() : failureCount(0) { }
+ int failureCount;
+};
+
+void tst_QMetaType::threadSafety()
+{
+ MetaTypeTorturer t1;
+ MetaTypeTorturer t2;
+ MetaTypeTorturer t3;
+
+ t1.start();
+ t2.start();
+ t3.start();
+
+ QVERIFY(t1.wait());
+ QVERIFY(t2.wait());
+ QVERIFY(t3.wait());
+
+ QCOMPARE(t1.failureCount, 0);
+ QCOMPARE(t2.failureCount, 0);
+ QCOMPARE(t3.failureCount, 0);
+ QCOMPARE(Bar::failureCount, 0);
+}
+
+namespace TestSpace
+{
+ struct Foo { double d; };
+
+}
+Q_DECLARE_METATYPE(TestSpace::Foo)
+
+void tst_QMetaType::namespaces()
+{
+ TestSpace::Foo nf = { 11.12 };
+ QVariant v = qVariantFromValue(nf);
+ QCOMPARE(qvariant_cast<TestSpace::Foo>(v).d, 11.12);
+}
+
+void tst_QMetaType::qMetaTypeId()
+{
+ QCOMPARE(::qMetaTypeId<QString>(), int(QMetaType::QString));
+ QCOMPARE(::qMetaTypeId<int>(), int(QMetaType::Int));
+ QCOMPARE(::qMetaTypeId<TestSpace::Foo>(), QMetaType::type("TestSpace::Foo"));
+
+ QCOMPARE(::qMetaTypeId<char>(), QMetaType::type("char"));
+ QCOMPARE(::qMetaTypeId<uchar>(), QMetaType::type("unsigned char"));
+ QCOMPARE(::qMetaTypeId<signed char>(), QMetaType::type("signed char"));
+ QCOMPARE(::qMetaTypeId<qint8>(), QMetaType::type("qint8"));
+}
+
+void tst_QMetaType::properties()
+{
+ qRegisterMetaType<QList<QVariant> >("QList<QVariant>");
+
+ QVariant v = property("prop");
+
+ QCOMPARE(v.typeName(), "QVariantList");
+
+ QList<QVariant> values = v.toList();
+ QCOMPARE(values.count(), 2);
+ QCOMPARE(values.at(0).toInt(), 42);
+
+ values << 43 << "world";
+
+ QVERIFY(setProperty("prop", values));
+ v = property("prop");
+ QCOMPARE(v.toList().count(), 4);
+}
+
+template <typename T>
+struct Whity { T t; };
+
+Q_DECLARE_METATYPE( Whity < int > )
+Q_DECLARE_METATYPE(Whity<double>)
+
+void tst_QMetaType::normalizedTypes()
+{
+ int WhityIntId = ::qMetaTypeId<Whity<int> >();
+ int WhityDoubleId = ::qMetaTypeId<Whity<double> >();
+
+ QCOMPARE(QMetaType::type("Whity<int>"), WhityIntId);
+ QCOMPARE(QMetaType::type(" Whity < int > "), WhityIntId);
+ QCOMPARE(QMetaType::type("Whity<int >"), WhityIntId);
+
+ QCOMPARE(QMetaType::type("Whity<double>"), WhityDoubleId);
+ QCOMPARE(QMetaType::type(" Whity< double > "), WhityDoubleId);
+ QCOMPARE(QMetaType::type("Whity<double >"), WhityDoubleId);
+
+ QCOMPARE(qRegisterMetaType<Whity<int> >(" Whity < int > "), WhityIntId);
+ QCOMPARE(qRegisterMetaType<Whity<int> >("Whity<int>"), WhityIntId);
+ QCOMPARE(qRegisterMetaType<Whity<int> >("Whity<int > "), WhityIntId);
+
+ QCOMPARE(qRegisterMetaType<Whity<double> >(" Whity < double > "), WhityDoubleId);
+ QCOMPARE(qRegisterMetaType<Whity<double> >("Whity<double>"), WhityDoubleId);
+ QCOMPARE(qRegisterMetaType<Whity<double> >("Whity<double > "), WhityDoubleId);
+}
+
+void tst_QMetaType::typeName_data()
+{
+ QTest::addColumn<QMetaType::Type>("aType");
+ QTest::addColumn<QString>("aTypeName");
+
+ QTest::newRow("void") << QMetaType::Void << "void";
+ QTest::newRow("int") << QMetaType::Int << "int";
+ QTest::newRow("double") << QMetaType::Double << "double";
+ QTest::newRow("qlonglong") << QMetaType::LongLong << "qlonglong";
+ QTest::newRow("QRegExp") << QMetaType::QRegExp << "QRegExp";
+ QTest::newRow("void*") << QMetaType::VoidStar << "void*";
+ QTest::newRow("ulong") << QMetaType::ULong << "ulong";
+ QTest::newRow("QWidget*") << QMetaType::QWidgetStar << "QWidget*";
+}
+
+void tst_QMetaType::typeName()
+{
+ QFETCH(QMetaType::Type, aType);
+ QFETCH(QString, aTypeName);
+
+ QCOMPARE(QString::fromLatin1(QMetaType::typeName(aType)), aTypeName);
+}
+
+void tst_QMetaType::construct()
+{
+ QSize x(1, 1);
+ void *size = QMetaType::construct(QMetaType::QSize, &x);
+ QVERIFY(size);
+ QCOMPARE(static_cast<QSize *>(size)->width(), 1);
+ QMetaType::destroy(QMetaType::QSize, size);
+}
+
+typedef QString CustomString;
+Q_DECLARE_METATYPE(CustomString) //this line is useless
+
+void tst_QMetaType::typedefs()
+{
+ QCOMPARE(QMetaType::type("long long"), int(QMetaType::LongLong));
+ QCOMPARE(QMetaType::type("unsigned long long"), int(QMetaType::ULongLong));
+ QCOMPARE(QMetaType::type("qint8"), int(QMetaType::Char));
+ QCOMPARE(QMetaType::type("quint8"), int(QMetaType::UChar));
+ QCOMPARE(QMetaType::type("qint16"), int(QMetaType::Short));
+ QCOMPARE(QMetaType::type("quint16"), int(QMetaType::UShort));
+ QCOMPARE(QMetaType::type("qint32"), int(QMetaType::Int));
+ QCOMPARE(QMetaType::type("quint32"), int(QMetaType::UInt));
+ QCOMPARE(QMetaType::type("qint64"), int(QMetaType::LongLong));
+ QCOMPARE(QMetaType::type("quint64"), int(QMetaType::ULongLong));
+
+ // make sure the qreal typeId is the type id of the type it's defined to
+ QCOMPARE(QMetaType::type("qreal"), ::qMetaTypeId<qreal>());
+
+ qRegisterMetaType<CustomString>("CustomString");
+ QCOMPARE(QMetaType::type("CustomString"), ::qMetaTypeId<CustomString>());
+
+ typedef Whity<double> WhityDouble;
+ qRegisterMetaType<WhityDouble>("WhityDouble");
+ QCOMPARE(QMetaType::type("WhityDouble"), ::qMetaTypeId<WhityDouble>());
+}
+
+class IsRegisteredDummyType { };
+
+void tst_QMetaType::isRegistered_data()
+{
+ QTest::addColumn<int>("typeId");
+ QTest::addColumn<bool>("registered");
+
+ // predefined/custom types
+ QTest::newRow("QMetaType::Void") << int(QMetaType::Void) << true;
+ QTest::newRow("QMetaType::Int") << int(QMetaType::Int) << true;
+
+ int dummyTypeId = qRegisterMetaType<IsRegisteredDummyType>("IsRegisteredDummyType");
+
+ QTest::newRow("IsRegisteredDummyType") << dummyTypeId << true;
+
+ // unknown types
+ QTest::newRow("-1") << -1 << false;
+ QTest::newRow("-42") << -42 << false;
+ QTest::newRow("IsRegisteredDummyType + 1") << (dummyTypeId + 1) << false;
+}
+
+void tst_QMetaType::isRegistered()
+{
+ QFETCH(int, typeId);
+ QFETCH(bool, registered);
+ QCOMPARE(QMetaType::isRegistered(typeId), registered);
+}
+
+class RegUnreg
+{
+public:
+ RegUnreg() {};
+ RegUnreg(const RegUnreg &) {};
+ ~RegUnreg() {};
+};
+
+void tst_QMetaType::unregisterType()
+{
+ // cannot unregister standard types
+ int typeId = qRegisterMetaType<QList<QVariant> >("QList<QVariant>");
+ QCOMPARE(QMetaType::isRegistered(typeId), true);
+ QMetaType::unregisterType("QList<QVariant>");
+ QCOMPARE(QMetaType::isRegistered(typeId), true);
+ // allow unregister user types
+ typeId = qRegisterMetaType<RegUnreg>("RegUnreg");
+ QCOMPARE(QMetaType::isRegistered(typeId), true);
+ QMetaType::unregisterType("RegUnreg");
+ QCOMPARE(QMetaType::isRegistered(typeId), false);
+}
+
+void tst_QMetaType::QTBUG11316_registerStreamBuiltin()
+{
+ //should not crash;
+ qRegisterMetaTypeStreamOperators<QString>("QString");
+ qRegisterMetaTypeStreamOperators<QVariant>("QVariant");
+}
+
+QTEST_MAIN(tst_QMetaType)
+#include "tst_qmetatype.moc"
diff --git a/tests/auto/qmimedata/qmimedata.pro b/tests/auto/corelib/kernel/qmimedata/qmimedata.pro
index 13fbe65edc..13fbe65edc 100644
--- a/tests/auto/qmimedata/qmimedata.pro
+++ b/tests/auto/corelib/kernel/qmimedata/qmimedata.pro
diff --git a/tests/auto/qmimedata/tst_qmimedata.cpp b/tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp
index 6876862603..6876862603 100644
--- a/tests/auto/qmimedata/tst_qmimedata.cpp
+++ b/tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp
diff --git a/tests/auto/qobject/.gitignore b/tests/auto/corelib/kernel/qobject/.gitignore
index ea4d6d7f06..ea4d6d7f06 100644
--- a/tests/auto/qobject/.gitignore
+++ b/tests/auto/corelib/kernel/qobject/.gitignore
diff --git a/tests/auto/qobject/moc_oldnormalizeobject.cpp b/tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp
index b275ff30fa..b275ff30fa 100644
--- a/tests/auto/qobject/moc_oldnormalizeobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp
diff --git a/tests/auto/qobject/oldnormalizeobject.h b/tests/auto/corelib/kernel/qobject/oldnormalizeobject.h
index 4dfb7d97d2..4dfb7d97d2 100644
--- a/tests/auto/qobject/oldnormalizeobject.h
+++ b/tests/auto/corelib/kernel/qobject/oldnormalizeobject.h
diff --git a/tests/auto/qobject/qobject.pro b/tests/auto/corelib/kernel/qobject/qobject.pro
index 113e14a61d..113e14a61d 100644
--- a/tests/auto/qobject/qobject.pro
+++ b/tests/auto/corelib/kernel/qobject/qobject.pro
diff --git a/tests/auto/qobject/signalbug.cpp b/tests/auto/corelib/kernel/qobject/signalbug.cpp
index f81de47e2d..f81de47e2d 100644
--- a/tests/auto/qobject/signalbug.cpp
+++ b/tests/auto/corelib/kernel/qobject/signalbug.cpp
diff --git a/tests/auto/qobject/signalbug.h b/tests/auto/corelib/kernel/qobject/signalbug.h
index 1d332239b3..1d332239b3 100644
--- a/tests/auto/qobject/signalbug.h
+++ b/tests/auto/corelib/kernel/qobject/signalbug.h
diff --git a/tests/auto/qobject/signalbug.pro b/tests/auto/corelib/kernel/qobject/signalbug.pro
index a835264a93..a835264a93 100644
--- a/tests/auto/qobject/signalbug.pro
+++ b/tests/auto/corelib/kernel/qobject/signalbug.pro
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
new file mode 100644
index 0000000000..faab1f5532
--- /dev/null
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -0,0 +1,4065 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+
+#include <qpointer.h>
+#include <qtimer.h>
+#include <qregexp.h>
+#include <qmetaobject.h>
+#include <qvariant.h>
+
+#include <QTcpServer>
+#include <QTcpSocket>
+#include <QThread>
+#include <QMutex>
+#include <QWaitCondition>
+#include <QProcess>
+
+#include "qobject.h"
+#ifdef QT_BUILD_INTERNAL
+#include <private/qobject_p.h>
+#endif
+
+
+#include <math.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QObject : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QObject();
+ virtual ~tst_QObject();
+
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void disconnect();
+ void connectByName();
+ void connectSignalsToSignalsWithDefaultArguments();
+ void receivers();
+ void normalize();
+ void qobject_castTemplate();
+ void findChildren();
+ void connectDisconnectNotify_data();
+ void connectDisconnectNotify();
+ void emitInDefinedOrder();
+ void customTypes();
+ void streamCustomTypes();
+ void metamethod();
+ void namespaces();
+ void threadSignalEmissionCrash();
+ void thread();
+ void thread0();
+ void moveToThread();
+ void sender();
+ void declareInterface();
+ void qpointerResetBeforeDestroyedSignal();
+ void testUserData();
+ void childDeletesItsSibling();
+ void dynamicProperties();
+ void floatProperty();
+ void qrealProperty();
+ void property();
+ void recursiveSignalEmission();
+ void blockingQueuedConnection();
+ void compatibilityChildInsertedEvents();
+ void installEventFilter();
+ void deleteSelfInSlot();
+ void disconnectSelfInSlotAndDeleteAfterEmit();
+ void dumpObjectInfo();
+ void connectToSender();
+ void qobjectConstCast();
+ void uniqConnection();
+ void interfaceIid();
+ void deleteQObjectWhenDeletingEvent();
+ void overloads();
+ void isSignalConnected();
+ void qMetaObjectConnect();
+ void qMetaObjectDisconnectOne();
+ void sameName();
+ void connectByMetaMethods();
+ void connectByMetaMethodSlotInsteadOfSignal();
+ void connectConstructorByMetaMethod();
+ void disconnectByMetaMethod();
+ void disconnectNotSignalMetaMethod();
+ void autoConnectionBehavior();
+ void baseDestroyed();
+protected:
+};
+
+tst_QObject::tst_QObject()
+{
+
+}
+
+tst_QObject::~tst_QObject()
+{
+
+}
+
+void tst_QObject::initTestCase()
+{
+}
+
+void tst_QObject::cleanupTestCase()
+{
+}
+
+void tst_QObject::init()
+{
+}
+
+void tst_QObject::cleanup()
+{
+}
+
+class SenderObject : public QObject
+{
+ Q_OBJECT
+
+public:
+ SenderObject() : aPublicSlotCalled(0), recursionCount(0) {}
+
+ void emitSignal1AfterRecursion()
+ {
+ if (recursionCount++ < 100)
+ emitSignal1AfterRecursion();
+ else
+ emitSignal1();
+ }
+
+ void emitSignal1() { emit signal1(); }
+ void emitSignal2() { emit signal2(); }
+ void emitSignal3() { emit signal3(); }
+ void emitSignal4() { emit signal4(); }
+
+signals:
+ void signal1();
+ void signal2();
+ void signal3();
+ void signal4();
+ QT_MOC_COMPAT void signal5();
+
+public slots:
+ void aPublicSlot() { aPublicSlotCalled++; }
+
+public:
+ Q_INVOKABLE void invoke1(){}
+ Q_SCRIPTABLE void sinvoke1(){}
+ int aPublicSlotCalled;
+protected:
+ Q_INVOKABLE QT_MOC_COMPAT void invoke2(){}
+ Q_INVOKABLE QT_MOC_COMPAT void invoke2(int){}
+ Q_SCRIPTABLE QT_MOC_COMPAT void sinvoke2(){}
+private:
+ Q_INVOKABLE void invoke3(int hinz = 0, int kunz = 0){Q_UNUSED(hinz) Q_UNUSED(kunz)}
+ Q_SCRIPTABLE void sinvoke3(){}
+
+ int recursionCount;
+};
+
+class ReceiverObject : public QObject
+{
+ Q_OBJECT
+
+public:
+ ReceiverObject() : sequence_slot1( 0 ),
+ sequence_slot2( 0 ),
+ sequence_slot3( 0 ),
+ sequence_slot4( 0 ) {}
+
+ void reset() {
+ sequence_slot4 = 0;
+ sequence_slot3 = 0;
+ sequence_slot2 = 0;
+ sequence_slot1 = 0;
+ count_slot1 = 0;
+ count_slot2 = 0;
+ count_slot3 = 0;
+ count_slot4 = 0;
+ }
+
+ int sequence_slot1;
+ int sequence_slot2;
+ int sequence_slot3;
+ int sequence_slot4;
+ int count_slot1;
+ int count_slot2;
+ int count_slot3;
+ int count_slot4;
+
+ bool called(int slot) {
+ switch (slot) {
+ case 1: return sequence_slot1;
+ case 2: return sequence_slot2;
+ case 3: return sequence_slot3;
+ case 4: return sequence_slot4;
+ default: return false;
+ }
+ }
+
+ static int sequence;
+
+public slots:
+ void slot1() { sequence_slot1 = ++sequence; count_slot1++; }
+ void slot2() { sequence_slot2 = ++sequence; count_slot2++; }
+ void slot3() { sequence_slot3 = ++sequence; count_slot3++; }
+ void slot4() { sequence_slot4 = ++sequence; count_slot4++; }
+
+};
+
+int ReceiverObject::sequence = 0;
+
+void tst_QObject::disconnect()
+{
+ SenderObject *s = new SenderObject;
+ ReceiverObject *r1 = new ReceiverObject;
+ ReceiverObject *r2 = new ReceiverObject;
+
+ connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
+
+ connect( s, SIGNAL( signal2() ), r1, SLOT( slot2() ) );
+ connect( s, SIGNAL( signal3() ), r1, SLOT( slot3() ) );
+ connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) );
+
+ s->emitSignal1();
+ s->emitSignal2();
+ s->emitSignal3();
+ s->emitSignal4();
+
+ QCOMPARE( r1->called(1), TRUE );
+ QCOMPARE( r1->called(2), TRUE );
+ QCOMPARE( r1->called(3), TRUE );
+ QCOMPARE( r1->called(4), TRUE );
+ r1->reset();
+
+ // usual disconnect with all parameters given
+ bool ret = QObject::disconnect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
+
+ s->emitSignal1();
+
+ QCOMPARE( r1->called(1), FALSE );
+ r1->reset();
+
+ QCOMPARE( ret, TRUE );
+ ret = QObject::disconnect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
+ QCOMPARE( ret, FALSE );
+
+ // disconnect all signals from s from all slots from r1
+ QObject::disconnect( s, 0, r1, 0 );
+
+ s->emitSignal2();
+ s->emitSignal3();
+ s->emitSignal4();
+
+ QCOMPARE( r1->called(2), FALSE );
+ QCOMPARE( r1->called(3), FALSE );
+ QCOMPARE( r1->called(4), FALSE );
+ r1->reset();
+
+ connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
+ connect( s, SIGNAL( signal1() ), r1, SLOT( slot2() ) );
+ connect( s, SIGNAL( signal1() ), r1, SLOT( slot3() ) );
+ connect( s, SIGNAL( signal2() ), r1, SLOT( slot4() ) );
+
+ // disconnect s's signal1() from all slots of r1
+ QObject::disconnect( s, SIGNAL( signal1() ), r1, 0 );
+
+ s->emitSignal1();
+ s->emitSignal2();
+
+ QCOMPARE( r1->called(1), FALSE );
+ QCOMPARE( r1->called(2), FALSE );
+ QCOMPARE( r1->called(3), FALSE );
+ QCOMPARE( r1->called(4), TRUE );
+ r1->reset();
+ // make sure all is disconnected again
+ QObject::disconnect( s, 0, r1, 0 );
+
+ connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
+ connect( s, SIGNAL( signal1() ), r2, SLOT( slot1() ) );
+ connect( s, SIGNAL( signal2() ), r1, SLOT( slot2() ) );
+ connect( s, SIGNAL( signal2() ), r2, SLOT( slot2() ) );
+ connect( s, SIGNAL( signal3() ), r1, SLOT( slot3() ) );
+ connect( s, SIGNAL( signal3() ), r2, SLOT( slot3() ) );
+
+ // disconnect signal1() from all receivers
+ QObject::disconnect( s, SIGNAL( signal1() ), 0, 0 );
+ s->emitSignal1();
+ s->emitSignal2();
+ s->emitSignal3();
+
+ QCOMPARE( r1->called(1), FALSE );
+ QCOMPARE( r2->called(1), FALSE );
+ QCOMPARE( r1->called(2), TRUE );
+ QCOMPARE( r2->called(2), TRUE );
+ QCOMPARE( r1->called(2), TRUE );
+ QCOMPARE( r2->called(2), TRUE );
+
+ r1->reset();
+ r2->reset();
+
+ // disconnect all signals of s from all receivers
+ QObject::disconnect( s, 0, 0, 0 );
+
+ QCOMPARE( r1->called(2), FALSE );
+ QCOMPARE( r2->called(2), FALSE );
+ QCOMPARE( r1->called(2), FALSE );
+ QCOMPARE( r2->called(2), FALSE );
+
+ delete r2;
+ delete r1;
+ delete s;
+}
+
+class AutoConnectSender : public QObject
+{
+ Q_OBJECT
+
+public:
+ AutoConnectSender(QObject *parent)
+ : QObject(parent)
+ {}
+
+ void emitSignalNoParams() { emit signalNoParams(); }
+ void emitSignalWithParams(int i) { emit signalWithParams(i); }
+ void emitSignalWithParams(int i, QString string) { emit signalWithParams(i, string); }
+ void emitSignalManyParams(int i1, int i2, int i3, QString string, bool onoff) { emit signalManyParams(i1, i2, i3, string, onoff); }
+ void emitSignalManyParams2(int i1, int i2, int i3, QString string, bool onoff) { emit signalManyParams2(i1, i2, i3, string, onoff); }
+ void emitSignalLoopBack() { emit signalLoopBack(); }
+
+signals:
+ void signalNoParams();
+ void signalWithParams(int i);
+ void signalWithParams(int i, QString string);
+ void signalManyParams(int i1, int i2, int i3, QString string, bool onoff);
+ void signalManyParams(int i1, int i2, int i3, QString string, bool onoff, bool);
+ void signalManyParams2(int i1, int i2, int i3, QString string, bool onoff);
+ void signalLoopBack();
+};
+
+class AutoConnectReceiver : public QObject
+{
+ Q_OBJECT
+
+public:
+ AutoConnectReceiver()
+ {
+ reset();
+
+ connect(this, SIGNAL(on_Sender_signalLoopBack()), this, SLOT(slotLoopBack()));
+ }
+
+ void reset() {
+ called_slot10 = 0;
+ called_slot9 = 0;
+ called_slot8 = 0;
+ called_slot7 = 0;
+ called_slot6 = 0;
+ called_slot5 = 0;
+ called_slot4 = 0;
+ called_slot3 = 0;
+ called_slot2 = 0;
+ called_slot1 = 0;
+ }
+
+ int called_slot1;
+ int called_slot2;
+ int called_slot3;
+ int called_slot4;
+ int called_slot5;
+ int called_slot6;
+ int called_slot7;
+ int called_slot8;
+ int called_slot9;
+ int called_slot10;
+
+ bool called(int slot) {
+ switch (slot) {
+ case 1: return called_slot1;
+ case 2: return called_slot2;
+ case 3: return called_slot3;
+ case 4: return called_slot4;
+ case 5: return called_slot5;
+ case 6: return called_slot6;
+ case 7: return called_slot7;
+ case 8: return called_slot8;
+ case 9: return called_slot9;
+ case 10: return called_slot10;
+ default: return false;
+ }
+ }
+
+public slots:
+ void on_Sender_signalNoParams() { ++called_slot1; }
+ void on_Sender_signalWithParams(int i = 0) { ++called_slot2; Q_UNUSED(i); }
+ void on_Sender_signalWithParams(int i, QString string) { ++called_slot3; Q_UNUSED(i);Q_UNUSED(string); }
+ void on_Sender_signalManyParams() { ++called_slot4; }
+ void on_Sender_signalManyParams(int i1, int i2, int i3, QString string, bool onoff) { ++called_slot5; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); }
+ void on_Sender_signalManyParams(int i1, int i2, int i3, QString string, bool onoff, bool dummy)
+ { ++called_slot6; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); Q_UNUSED(dummy);}
+ void on_Sender_signalManyParams2(int i1, int i2, int i3, QString string, bool onoff)
+ { ++called_slot7; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); }
+ void slotLoopBack() { ++called_slot8; }
+
+protected slots:
+ void o() { ++called_slot9; }
+ void on() { ++called_slot10; }
+
+signals:
+ void on_Sender_signalLoopBack();
+};
+
+void tst_QObject::connectByName()
+{
+ AutoConnectReceiver receiver;
+ AutoConnectSender sender(&receiver);
+ sender.setObjectName("Sender");
+
+ QMetaObject::connectSlotsByName(&receiver);
+
+ sender.emitSignalNoParams();
+ QCOMPARE(receiver.called(1), true);
+ QCOMPARE(receiver.called(2), false);
+ QCOMPARE(receiver.called(3), false);
+ QCOMPARE(receiver.called(4), false);
+ QCOMPARE(receiver.called(5), false);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), false);
+ QCOMPARE(receiver.called(8), false);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+
+ sender.emitSignalWithParams(0);
+ QCOMPARE(receiver.called(1), false);
+ QCOMPARE(receiver.called(2), true);
+ QCOMPARE(receiver.called(3), false);
+ QCOMPARE(receiver.called(4), false);
+ QCOMPARE(receiver.called(5), false);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), false);
+ QCOMPARE(receiver.called(8), false);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+
+ sender.emitSignalWithParams(0, "string");
+ QCOMPARE(receiver.called(1), false);
+ QCOMPARE(receiver.called(2), false);
+ QCOMPARE(receiver.called(3), true);
+ QCOMPARE(receiver.called(4), false);
+ QCOMPARE(receiver.called(5), false);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), false);
+ QCOMPARE(receiver.called(8), false);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+
+ sender.emitSignalManyParams(1, 2, 3, "string", true);
+ QCOMPARE(receiver.called(1), false);
+ QCOMPARE(receiver.called(2), false);
+ QCOMPARE(receiver.called(3), false);
+ QCOMPARE(receiver.called(4), true);
+ QCOMPARE(receiver.called(5), true);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), false);
+ QCOMPARE(receiver.called(8), false);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+
+ sender.emitSignalManyParams2(1, 2, 3, "string", true);
+ QCOMPARE(receiver.called(1), false);
+ QCOMPARE(receiver.called(2), false);
+ QCOMPARE(receiver.called(3), false);
+ QCOMPARE(receiver.called(4), false);
+ QCOMPARE(receiver.called(5), false);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), true);
+ QCOMPARE(receiver.called(8), false);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+
+ sender.emitSignalLoopBack();
+ QCOMPARE(receiver.called(1), false);
+ QCOMPARE(receiver.called(2), false);
+ QCOMPARE(receiver.called(3), false);
+ QCOMPARE(receiver.called(4), false);
+ QCOMPARE(receiver.called(5), false);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), false);
+ QCOMPARE(receiver.called(8), true);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+}
+
+void tst_QObject::qobject_castTemplate()
+{
+ QObject *o = 0;
+ QVERIFY( !::qobject_cast<QObject*>(o) );
+
+ o = new SenderObject;
+ QVERIFY( ::qobject_cast<SenderObject*>(o) );
+ QVERIFY( ::qobject_cast<QObject*>(o) );
+ QVERIFY( !::qobject_cast<ReceiverObject*>(o) );
+ delete o;
+}
+
+void tst_QObject::findChildren()
+{
+ QObject o;
+ QObject o1(&o);
+ QObject o2(&o);
+ QObject o11(&o1);
+ QObject o12(&o1);
+ QObject o111(&o11);
+ QObject unnamed(&o);
+ QTimer t1(&o);
+ QTimer t121(&o12);
+ QTimer emptyname(&o);
+
+ o.setObjectName("o");
+ o1.setObjectName("o1");
+ o2.setObjectName("o2");
+ o11.setObjectName("o11");
+ o12.setObjectName("o12");
+ o111.setObjectName("o111");
+ t1.setObjectName("t1");
+ t121.setObjectName("t121");
+ emptyname.setObjectName("");
+
+ QObject *op = 0;
+
+ op = qFindChild<QObject*>(&o, "o1");
+ QCOMPARE(op, &o1);
+ op = qFindChild<QObject*>(&o, "o2");
+ QCOMPARE(op, &o2);
+ op = qFindChild<QObject*>(&o, "o11");
+ QCOMPARE(op, &o11);
+ op = qFindChild<QObject*>(&o, "o12");
+ QCOMPARE(op, &o12);
+ op = qFindChild<QObject*>(&o, "o111");
+ QCOMPARE(op, &o111);
+ op = qFindChild<QObject*>(&o, "t1");
+ QCOMPARE(op, static_cast<QObject *>(&t1));
+ op = qFindChild<QObject*>(&o, "t121");
+ QCOMPARE(op, static_cast<QObject *>(&t121));
+ op = qFindChild<QTimer*>(&o, "t1");
+ QCOMPARE(op, static_cast<QObject *>(&t1));
+ op = qFindChild<QTimer*>(&o, "t121");
+ QCOMPARE(op, static_cast<QObject *>(&t121));
+ op = qFindChild<QTimer*>(&o, "o12");
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = qFindChild<QObject*>(&o, "o");
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = qFindChild<QObject*>(&o, "harry");
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = qFindChild<QObject*>(&o, "o1");
+ QCOMPARE(op, &o1);
+
+ QList<QObject*> l;
+ QList<QTimer*> tl;
+
+ l = qFindChildren<QObject*>(&o, "o1");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o1);
+ l = qFindChildren<QObject*>(&o, "o2");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o2);
+ l = qFindChildren<QObject*>(&o, "o11");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o11);
+ l = qFindChildren<QObject*>(&o, "o12");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o12);
+ l = qFindChildren<QObject*>(&o, "o111");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o111);
+ l = qFindChildren<QObject*>(&o, "t1");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), static_cast<QObject *>(&t1));
+ l = qFindChildren<QObject*>(&o, "t121");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), static_cast<QObject *>(&t121));
+ tl = qFindChildren<QTimer*>(&o, "t1");
+ QCOMPARE(tl.size(), 1);
+ QCOMPARE(tl.at(0), &t1);
+ tl = qFindChildren<QTimer*>(&o, "t121");
+ QCOMPARE(tl.size(), 1);
+ QCOMPARE(tl.at(0), &t121);
+ l = qFindChildren<QObject*>(&o, "o");
+ QCOMPARE(l.size(), 0);
+ l = qFindChildren<QObject*>(&o, "harry");
+ QCOMPARE(l.size(), 0);
+ tl = qFindChildren<QTimer*>(&o, "o12");
+ QCOMPARE(tl.size(), 0);
+ l = qFindChildren<QObject*>(&o, "o1");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o1);
+
+ l = qFindChildren<QObject*>(&o, QRegExp("o.*"));
+ QCOMPARE(l.size(), 5);
+ QVERIFY(l.contains(&o1));
+ QVERIFY(l.contains(&o2));
+ QVERIFY(l.contains(&o11));
+ QVERIFY(l.contains(&o12));
+ QVERIFY(l.contains(&o111));
+ l = qFindChildren<QObject*>(&o, QRegExp("t.*"));
+ QCOMPARE(l.size(), 2);
+ QVERIFY(l.contains(&t1));
+ QVERIFY(l.contains(&t121));
+ tl = qFindChildren<QTimer*>(&o, QRegExp(".*"));
+ QCOMPARE(tl.size(), 3);
+ QVERIFY(tl.contains(&t1));
+ QVERIFY(tl.contains(&t121));
+ tl = qFindChildren<QTimer*>(&o, QRegExp("o.*"));
+ QCOMPARE(tl.size(), 0);
+ l = qFindChildren<QObject*>(&o, QRegExp("harry"));
+ QCOMPARE(l.size(), 0);
+
+ // empty and null string check
+ op = qFindChild<QObject*>(&o);
+ QCOMPARE(op, &o1);
+ op = qFindChild<QObject*>(&o, "");
+ QCOMPARE(op, &unnamed);
+ op = qFindChild<QObject*>(&o, "unnamed");
+ QCOMPARE(op, static_cast<QObject *>(0));
+
+ l = qFindChildren<QObject*>(&o);
+ QCOMPARE(l.size(), 9);
+ l = qFindChildren<QObject*>(&o, "");
+ QCOMPARE(l.size(), 2);
+ l = qFindChildren<QObject*>(&o, "unnamed");
+ QCOMPARE(l.size(), 0);
+
+ tl = o.findChildren<QTimer *>("t1");
+ QCOMPARE(tl.size(), 1);
+ QCOMPARE(tl.at(0), &t1);
+
+ // Find direct child/children
+
+ op = o.findChild<QObject*>("o1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, &o1);
+ op = o.findChild<QObject*>("o2", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, &o2);
+ op = o.findChild<QObject*>("o11", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("o12", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("o111", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("t1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(&t1));
+ op = o.findChild<QObject*>("t121", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QTimer*>("t1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(&t1));
+ op = o.findChild<QTimer*>("t121", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QTimer*>("o12", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("o", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("harry", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("o1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, &o1);
+
+ l = o.findChildren<QObject*>("o1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o1);
+ l = o.findChildren<QObject*>("o2", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o2);
+ l = o.findChildren<QObject*>("o11", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ l = o.findChildren<QObject*>("o12", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ l = o.findChildren<QObject*>("o111", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ l = o.findChildren<QObject*>("t1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), static_cast<QObject *>(&t1));
+ l = o.findChildren<QObject*>("t121", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ tl = o.findChildren<QTimer*>("t1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 1);
+ QCOMPARE(tl.at(0), &t1);
+ tl = o.findChildren<QTimer*>("t121", Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 0);
+ l = o.findChildren<QObject*>("o", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ l = o.findChildren<QObject*>("harry", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ tl = o.findChildren<QTimer*>("o12", Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 0);
+ l = o.findChildren<QObject*>("o1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o1);
+
+ l = o.findChildren<QObject*>(QRegExp("o.*"), Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 2);
+ QVERIFY(l.contains(&o1));
+ QVERIFY(l.contains(&o2));
+ l = o.findChildren<QObject*>(QRegExp("t.*"), Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 1);
+ QVERIFY(l.contains(&t1));
+ tl = o.findChildren<QTimer*>(QRegExp(".*"), Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 2);
+ QVERIFY(tl.contains(&t1));
+ tl = o.findChildren<QTimer*>(QRegExp("o.*"), Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 0);
+ l = o.findChildren<QObject*>(QRegExp("harry"), Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+
+ // empty and null string check
+ op = o.findChild<QObject*>(QString(), Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, &o1);
+ op = o.findChild<QObject*>("", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, &unnamed);
+ op = o.findChild<QObject*>("unnamed", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+
+ l = o.findChildren<QObject*>(QString(), Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 5);
+ l = o.findChildren<QObject*>("", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 2);
+ l = o.findChildren<QObject*>("unnamed", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+
+ tl = o.findChildren<QTimer *>("t1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 1);
+ QCOMPARE(tl.at(0), &t1);
+}
+
+
+class NotifyObject : public SenderObject, public ReceiverObject
+{
+public:
+ NotifyObject() : SenderObject(), ReceiverObject()
+ {}
+
+ QString org_signal;
+ QString nw_signal;
+
+protected:
+ void connectNotify( const char *signal )
+ {
+ org_signal = signal;
+ nw_signal = QMetaObject::normalizedSignature(signal);
+ };
+ void disconnectNotify( const char *signal )
+ {
+ org_signal = signal;
+ nw_signal = QMetaObject::normalizedSignature(signal);
+ };
+};
+
+void tst_QObject::connectDisconnectNotify_data()
+{
+ QTest::addColumn<QString>("a_signal");
+ QTest::addColumn<QString>("a_slot");
+
+ QTest::newRow("combo1") << SIGNAL( signal1() ) << SLOT( slot1() );
+ QTest::newRow("combo2") << SIGNAL( signal2(void) ) << SLOT( slot2( ) );
+ QTest::newRow("combo3") << SIGNAL( signal3( ) ) << SLOT( slot3(void) );
+ QTest::newRow("combo4") << SIGNAL( signal4( void ) )<< SLOT( slot4( void ) );
+}
+
+void tst_QObject::connectDisconnectNotify()
+{
+ NotifyObject *s = new NotifyObject;
+ NotifyObject *r = new NotifyObject;
+
+ QFETCH(QString, a_signal);
+ QFETCH(QString, a_slot);
+
+ // Test connectNotify
+ connect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
+ QCOMPARE( s->org_signal, s->nw_signal );
+ QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
+
+ // Test disconnectNotify
+ QObject::disconnect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
+ QCOMPARE( s->org_signal, s->nw_signal );
+ QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
+
+ // Reconnect
+ connect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
+ // Test disconnectNotify for a complete disconnect
+ ((SenderObject*)s)->disconnect((ReceiverObject*)r);
+
+ // Obtaining meta methods
+ int signalIndx = ((SenderObject*)s)->metaObject()->indexOfSignal(
+ QMetaObject::normalizedSignature(a_signal.toLatin1().constData()+1).constData());
+ int methodIndx = ((ReceiverObject*)r)->metaObject()->indexOfMethod(
+ QMetaObject::normalizedSignature(a_slot.toLatin1().constData()+1).constData());
+ QMetaMethod signal = ((SenderObject*)s)->metaObject()->method(signalIndx);
+ QMetaMethod method = ((ReceiverObject*)r)->metaObject()->method(methodIndx);
+
+ // Test connectNotify when connecting by QMetaMethod
+ connect( (SenderObject*)s, signal, (ReceiverObject*)r, method );
+ QCOMPARE( s->org_signal, s->nw_signal );
+ QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
+
+ // Test disconnectNotify when disconnecting by QMetaMethod
+ QObject::disconnect( (SenderObject*)s, signal, (ReceiverObject*)r, method );
+ QCOMPARE( s->org_signal, s->nw_signal );
+ QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
+
+ delete s;
+ delete r;
+}
+
+class SequenceObject : public ReceiverObject
+{
+ Q_OBJECT
+
+public:
+ QObject *next;
+ SequenceObject() : next(0) { }
+
+public slots:
+ void slot1_disconnectThis()
+ {
+ slot1();
+ disconnect(sender(), SIGNAL(signal1()), this, SLOT(slot1_disconnectThis()));
+ }
+
+ void slot2_reconnectThis()
+ {
+ slot2();
+
+ const QObject *s = sender();
+ disconnect(s, SIGNAL(signal1()), this, SLOT(slot2_reconnectThis()));
+ connect(s, SIGNAL(signal1()), this, SLOT(slot2_reconnectThis()));
+ }
+
+ void slot1_disconnectNext()
+ {
+ slot1();
+ disconnect(sender(), SIGNAL(signal1()), next, SLOT(slot1()));
+ }
+
+ void slot2_reconnectNext()
+ {
+ slot2();
+
+ // modify the connection list in 'this'
+ disconnect(sender(), SIGNAL(signal1()), next, SLOT(slot2()));
+ connect(sender(), SIGNAL(signal1()), next, SLOT(slot2()));
+
+ // modify the sender list in 'this'
+ connect(next, SIGNAL(destroyed()), this, SLOT(deleteLater()));
+ connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(deleteLater()));
+ disconnect(next, SIGNAL(destroyed()), this, SLOT(deleteLater()));
+ disconnect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(deleteLater()));
+ }
+
+ void slot1_deleteNext()
+ {
+ slot1();
+ delete next;
+ }
+
+ void slot2_deleteSender()
+ {
+ slot2();
+ delete sender();
+ }
+};
+
+void tst_QObject::emitInDefinedOrder()
+{
+ SenderObject sender;
+ ReceiverObject receiver1, receiver2, receiver3, receiver4;
+
+ connect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver3, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver4, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot2()));
+ connect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot2()));
+ connect(&sender, SIGNAL(signal1()), &receiver3, SLOT(slot2()));
+ connect(&sender, SIGNAL(signal1()), &receiver4, SLOT(slot2()));
+
+ int sequence;
+ ReceiverObject::sequence = sequence = 0;
+ sender.emitSignal1();
+ QCOMPARE(receiver1.sequence_slot1, ++sequence);
+ QCOMPARE(receiver2.sequence_slot1, ++sequence);
+ QCOMPARE(receiver3.sequence_slot1, ++sequence);
+ QCOMPARE(receiver4.sequence_slot1, ++sequence);
+ QCOMPARE(receiver1.sequence_slot2, ++sequence);
+ QCOMPARE(receiver2.sequence_slot2, ++sequence);
+ QCOMPARE(receiver3.sequence_slot2, ++sequence);
+ QCOMPARE(receiver4.sequence_slot2, ++sequence);
+
+ QObject::disconnect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot1()));
+
+ ReceiverObject::sequence = sequence = 0;
+ sender.emitSignal1();
+ QCOMPARE(receiver1.sequence_slot1, ++sequence);
+ QCOMPARE(receiver3.sequence_slot1, ++sequence);
+ QCOMPARE(receiver4.sequence_slot1, ++sequence);
+ QCOMPARE(receiver1.sequence_slot2, ++sequence);
+ QCOMPARE(receiver2.sequence_slot2, ++sequence);
+ QCOMPARE(receiver3.sequence_slot2, ++sequence);
+ QCOMPARE(receiver4.sequence_slot2, ++sequence);
+ QCOMPARE(receiver2.sequence_slot1, ++sequence);
+
+ QObject::disconnect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot1()));
+
+ ReceiverObject::sequence = sequence = 0;
+ sender.emitSignal1();
+ QCOMPARE(receiver3.sequence_slot1, ++sequence);
+ QCOMPARE(receiver4.sequence_slot1, ++sequence);
+ QCOMPARE(receiver1.sequence_slot2, ++sequence);
+ QCOMPARE(receiver2.sequence_slot2, ++sequence);
+ QCOMPARE(receiver3.sequence_slot2, ++sequence);
+ QCOMPARE(receiver4.sequence_slot2, ++sequence);
+ QCOMPARE(receiver2.sequence_slot1, ++sequence);
+ QCOMPARE(receiver1.sequence_slot1, ++sequence);
+
+ // ensure emission order even if the connections change during emission
+ SenderObject *sender2 = new SenderObject;
+ SequenceObject seq1, seq2, *seq3 = new SequenceObject, seq4;
+ seq1.next = &seq2;
+ seq2.next = seq3;
+ seq3->next = &seq4;
+
+ // try 1
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1_disconnectThis()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_disconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2_reconnectThis()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_reconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
+
+ SequenceObject::sequence = sequence = 0;
+ sender2->emitSignal1();
+ QCOMPARE(seq1.called(1), TRUE);
+ QCOMPARE(seq2.called(1), TRUE);
+ QCOMPARE(seq3->called(1), FALSE);
+ QCOMPARE(seq4.called(1), TRUE);
+ QCOMPARE(seq1.called(2), TRUE);
+ QCOMPARE(seq2.called(2), TRUE);
+ QCOMPARE(seq3->called(2), FALSE);
+ QCOMPARE(seq4.called(2), TRUE);
+ QCOMPARE(seq1.sequence_slot1, ++sequence);
+ QCOMPARE(seq2.sequence_slot1, ++sequence);
+ QCOMPARE(seq4.sequence_slot1, ++sequence);
+ QCOMPARE(seq1.sequence_slot2, ++sequence);
+ QCOMPARE(seq2.sequence_slot2, ++sequence);
+ QCOMPARE(seq4.sequence_slot2, ++sequence);
+
+ QObject::disconnect(sender2, 0, &seq1, 0);
+ QObject::disconnect(sender2, 0, &seq2, 0);
+ QObject::disconnect(sender2, 0, seq3, 0);
+ QObject::disconnect(sender2, 0, &seq4, 0);
+ seq1.reset();
+ seq2.reset();
+ seq3->reset();
+ seq4.reset();
+
+ // try 2
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2_reconnectThis()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_reconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1_disconnectThis()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_disconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
+
+ SequenceObject::sequence = sequence = 0;
+ sender2->emitSignal1();
+ QCOMPARE(seq1.called(2), TRUE);
+ QCOMPARE(seq2.called(2), TRUE);
+ QCOMPARE(seq3->called(2), FALSE);
+ QCOMPARE(seq4.called(2), TRUE);
+ QCOMPARE(seq1.called(1), TRUE);
+ QCOMPARE(seq2.called(1), TRUE);
+ QCOMPARE(seq3->called(1), FALSE);
+ QCOMPARE(seq4.called(1), TRUE);
+ QCOMPARE(seq1.sequence_slot2, ++sequence);
+ QCOMPARE(seq2.sequence_slot2, ++sequence);
+ QCOMPARE(seq4.sequence_slot2, ++sequence);
+ QCOMPARE(seq1.sequence_slot1, ++sequence);
+ QCOMPARE(seq2.sequence_slot1, ++sequence);
+ QCOMPARE(seq4.sequence_slot1, ++sequence);
+
+ QObject::disconnect(sender2, 0, &seq1, 0);
+ QObject::disconnect(sender2, 0, &seq2, 0);
+ QObject::disconnect(sender2, 0, seq3, 0);
+ QObject::disconnect(sender2, 0, &seq4, 0);
+ seq1.reset();
+ seq2.reset();
+ seq3->reset();
+ seq4.reset();
+
+ // try 3
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_disconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_reconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
+
+ SequenceObject::sequence = sequence = 0;
+ sender2->emitSignal1();
+ QCOMPARE(seq1.called(1), TRUE);
+ QCOMPARE(seq2.called(1), TRUE);
+ QCOMPARE(seq3->called(1), FALSE);
+ QCOMPARE(seq4.called(1), TRUE);
+ QCOMPARE(seq1.called(2), TRUE);
+ QCOMPARE(seq2.called(2), TRUE);
+ QCOMPARE(seq3->called(2), FALSE);
+ QCOMPARE(seq4.called(2), TRUE);
+ QCOMPARE(seq1.sequence_slot1, ++sequence);
+ QCOMPARE(seq2.sequence_slot1, ++sequence);
+ QCOMPARE(seq4.sequence_slot1, ++sequence);
+ QCOMPARE(seq1.sequence_slot2, ++sequence);
+ QCOMPARE(seq2.sequence_slot2, ++sequence);
+ QCOMPARE(seq4.sequence_slot2, ++sequence);
+
+ // ensure emission order even if objects are destroyed during emission
+ QObject::disconnect(sender2, 0, &seq1, 0);
+ QObject::disconnect(sender2, 0, &seq2, 0);
+ QObject::disconnect(sender2, 0, seq3, 0);
+ QObject::disconnect(sender2, 0, &seq4, 0);
+ seq1.reset();
+ seq2.reset();
+ seq3->reset();
+ seq4.reset();
+
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_deleteNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_deleteSender()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
+
+ QPointer<SenderObject> psender = sender2;
+ QPointer<SequenceObject> pseq3 = seq3;
+
+ SequenceObject::sequence = sequence = 0;
+ sender2->emitSignal1();
+ QCOMPARE(static_cast<QObject *>(psender), static_cast<QObject *>(0));
+ QCOMPARE(static_cast<QObject *>(pseq3), static_cast<QObject *>(0));
+ QCOMPARE(seq1.called(1), TRUE);
+ QCOMPARE(seq2.called(1), TRUE);
+ QCOMPARE(seq4.called(1), TRUE);
+ QCOMPARE(seq1.called(2), TRUE);
+ QCOMPARE(seq2.called(2), TRUE);
+ QCOMPARE(seq4.called(2), FALSE);
+ QCOMPARE(seq1.sequence_slot1, ++sequence);
+ QCOMPARE(seq2.sequence_slot1, ++sequence);
+ QCOMPARE(seq4.sequence_slot1, ++sequence);
+ QCOMPARE(seq1.sequence_slot2, ++sequence);
+ QCOMPARE(seq2.sequence_slot2, ++sequence);
+
+ QPointer<SenderObject> psender3 = new SenderObject;
+ connect(psender3, SIGNAL(signal1()), psender3, SIGNAL(signal2()));
+ connect(psender3, SIGNAL(signal2()), &seq1, SLOT(slot2_deleteSender()));
+ psender3->emitSignal1();
+ QVERIFY(!psender3);
+}
+
+static int instanceCount = 0;
+
+struct CustomType
+{
+ CustomType(int l1 = 0, int l2 = 0, int l3 = 0): i1(l1), i2(l2), i3(l3)
+ { ++instanceCount; }
+ CustomType(const CustomType &other): i1(other.i1), i2(other.i2), i3(other.i3)
+ { ++instanceCount; }
+ ~CustomType() { --instanceCount; }
+
+ int i1, i2, i3;
+ int value() { return i1 + i2 + i3; }
+};
+
+Q_DECLARE_METATYPE(CustomType*)
+
+class QCustomTypeChecker: public QObject
+{
+ Q_OBJECT
+
+public:
+ QCustomTypeChecker(QObject *parent = 0): QObject(parent) {}
+ void doEmit(CustomType ct)
+ { emit signal1(ct); }
+
+public slots:
+ void slot1(CustomType ct);
+
+signals:
+ void signal1(CustomType ct);
+
+public:
+ CustomType received;
+};
+
+void QCustomTypeChecker::slot1(CustomType ct)
+{ received = ct; }
+
+
+void tst_QObject::customTypes()
+{
+ CustomType t0;
+ CustomType t1(1, 2, 3);
+ CustomType t2(2, 3, 4);
+
+ {
+ QCustomTypeChecker checker;
+ QCOMPARE(instanceCount, 4);
+
+ connect(&checker, SIGNAL(signal1(CustomType)), &checker, SLOT(slot1(CustomType)),
+ Qt::DirectConnection);
+ QCOMPARE(checker.received.value(), 0);
+ checker.doEmit(t1);
+ QCOMPARE(checker.received.value(), t1.value());
+ checker.received = t0;
+
+ int idx = qRegisterMetaType<CustomType>("CustomType");
+ QCOMPARE(QMetaType::type("CustomType"), idx);
+
+ checker.disconnect();
+ connect(&checker, SIGNAL(signal1(CustomType)), &checker, SLOT(slot1(CustomType)),
+ Qt::QueuedConnection);
+ QCOMPARE(instanceCount, 4);
+ checker.doEmit(t2);
+ QCOMPARE(instanceCount, 5);
+ QCOMPARE(checker.received.value(), t0.value());
+
+ QCoreApplication::processEvents();
+ QCOMPARE(checker.received.value(), t2.value());
+ QCOMPARE(instanceCount, 4);
+
+ QVERIFY(QMetaType::isRegistered(idx));
+ QCOMPARE(qRegisterMetaType<CustomType>("CustomType"), idx);
+ QCOMPARE(QMetaType::type("CustomType"), idx);
+ QVERIFY(QMetaType::isRegistered(idx));
+ }
+ QCOMPARE(instanceCount, 3);
+}
+
+QDataStream &operator<<(QDataStream &stream, const CustomType &ct)
+{
+ stream << ct.i1 << ct.i2 << ct.i3;
+ return stream;
+}
+
+QDataStream &operator>>(QDataStream &stream, CustomType &ct)
+{
+ stream >> ct.i1;
+ stream >> ct.i2;
+ stream >> ct.i3;
+ return stream;
+}
+
+void tst_QObject::streamCustomTypes()
+{
+ QByteArray ba;
+
+ int idx = qRegisterMetaType<CustomType>("CustomType");
+ qRegisterMetaTypeStreamOperators<CustomType>("CustomType");
+
+ {
+ CustomType t1(1, 2, 3);
+ QCOMPARE(instanceCount, 1);
+ QDataStream stream(&ba, (QIODevice::OpenMode)QIODevice::WriteOnly);
+ QMetaType::save(stream, idx, &t1);
+ }
+
+ QCOMPARE(instanceCount, 0);
+
+ {
+ CustomType t2;
+ QCOMPARE(instanceCount, 1);
+ QDataStream stream(&ba, (QIODevice::OpenMode)QIODevice::ReadOnly);
+ QMetaType::load(stream, idx, &t2);
+ QCOMPARE(instanceCount, 1);
+ QCOMPARE(t2.i1, 1);
+ QCOMPARE(t2.i2, 2);
+ QCOMPARE(t2.i3, 3);
+ }
+ QCOMPARE(instanceCount, 0);
+}
+
+typedef QString CustomString;
+
+class PropertyObject : public QObject
+{
+ Q_OBJECT
+ Q_ENUMS(Alpha Priority)
+
+ Q_PROPERTY(Alpha alpha READ alpha WRITE setAlpha)
+ Q_PROPERTY(Priority priority READ priority WRITE setPriority)
+ Q_PROPERTY(int number READ number WRITE setNumber)
+ Q_PROPERTY(QString string READ string WRITE setString)
+ Q_PROPERTY(QVariant variant READ variant WRITE setVariant)
+ Q_PROPERTY(CustomType* custom READ custom WRITE setCustom)
+ Q_PROPERTY(float myFloat READ myFloat WRITE setMyFloat)
+ Q_PROPERTY(qreal myQReal READ myQReal WRITE setMyQReal)
+ Q_PROPERTY(CustomString customString READ customString WRITE setCustomString )
+
+public:
+ enum Alpha {
+ Alpha0,
+ Alpha1,
+ Alpha2
+ };
+
+ enum Priority { High, Low, VeryHigh, VeryLow };
+
+ PropertyObject()
+ : m_alpha(Alpha0), m_priority(High), m_number(0), m_custom(0), m_float(42)
+ {}
+
+ Alpha alpha() const { return m_alpha; }
+ void setAlpha(Alpha alpha) { m_alpha = alpha; }
+
+ Priority priority() const { return m_priority; }
+ void setPriority(Priority priority) { m_priority = priority; }
+
+ int number() const { return m_number; }
+ void setNumber(int number) { m_number = number; }
+
+ QString string() const { return m_string; }
+ void setString(const QString &string) { m_string = string; }
+
+ QVariant variant() const { return m_variant; }
+ void setVariant(const QVariant &variant) { m_variant = variant; }
+
+ CustomType *custom() const { return m_custom; }
+ void setCustom(CustomType *custom) { m_custom = custom; }
+
+ void setMyFloat(float value) { m_float = value; }
+ inline float myFloat() const { return m_float; }
+
+ void setMyQReal(qreal value) { m_qreal = value; }
+ qreal myQReal() const { return m_qreal; }
+
+ CustomString customString() const { return m_customString; }
+ void setCustomString(const QString &string) { m_customString = string; }
+
+private:
+ Alpha m_alpha;
+ Priority m_priority;
+ int m_number;
+ QString m_string;
+ QVariant m_variant;
+ CustomType *m_custom;
+ float m_float;
+ qreal m_qreal;
+ CustomString m_customString;
+};
+
+Q_DECLARE_METATYPE(PropertyObject::Priority)
+
+void tst_QObject::threadSignalEmissionCrash()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ int loopCount = 100;
+#else
+ int loopCount = 1000;
+#endif
+ for (int i = 0; i < loopCount; ++i) {
+ QTcpSocket socket;
+ socket.connectToHost("localhost", 80);
+ }
+}
+
+class TestThread : public QThread
+{
+ Q_OBJECT
+public:
+ inline void run()
+ {
+ *object = new QObject;
+ *child = new QObject(*object);
+ mutex.lock();
+ cond.wakeOne();
+ cond.wait(&mutex);
+ mutex.unlock();
+ }
+
+ QObject **object, **child;
+ QMutex mutex;
+ QWaitCondition cond;
+};
+
+void tst_QObject::thread()
+{
+ QThread *currentThread = QThread::currentThread();
+ // the current thread is the same as the QApplication
+ // thread... see tst_QApplication::thread()
+
+ {
+ QObject object;
+ // thread affinity for objects with no parent should be the
+ // current thread
+ QVERIFY(object.thread() != 0);
+ QCOMPARE(object.thread(), currentThread);
+ // children inherit their parent's thread
+ QObject child(&object);
+ QCOMPARE(child.thread(), object.thread());
+ }
+
+ QObject *object = 0;
+ QObject *child = 0;
+
+ {
+ TestThread thr;
+ QVERIFY(thr.thread() != 0);
+ QCOMPARE(thr.thread(), currentThread);
+
+ thr.object = &object;
+ thr.child = &child;
+
+ thr.mutex.lock();
+ thr.start();
+ thr.cond.wait(&thr.mutex);
+
+ // thread affinity for an object with no parent should be the
+ // thread in which the object was created
+ QCOMPARE(object->thread(), (QThread *)&thr);
+ // children inherit their parent's thread
+ QCOMPARE(child->thread(), object->thread());
+
+ thr.cond.wakeOne();
+ thr.mutex.unlock();
+ thr.wait();
+
+ // even though the thread is no longer running, the affinity
+ // should not change
+ QCOMPARE(object->thread(), (QThread *)&thr);
+ QCOMPARE(child->thread(), object->thread());
+ }
+
+ // the thread has been destroyed, thread affinity should
+ // automatically reset to no thread
+ QCOMPARE(object->thread(), (QThread *)0);
+ QCOMPARE(child->thread(), object->thread());
+
+ delete object;
+}
+
+class MoveToThreadObject : public QObject
+{
+ Q_OBJECT
+public:
+ QThread *timerEventThread;
+ QThread *customEventThread;
+ QThread *slotThread;
+
+ MoveToThreadObject(QObject *parent = 0)
+ : QObject(parent), timerEventThread(0), customEventThread(0), slotThread(0)
+ { }
+
+ void customEvent(QEvent *)
+ {
+ if (customEventThread)
+ qFatal("%s: customEventThread should be null", Q_FUNC_INFO);
+ customEventThread = QThread::currentThread();
+ emit theSignal();
+ }
+
+ void timerEvent(QTimerEvent *)
+ {
+ if (timerEventThread)
+ qFatal("%s: timerEventThread should be null", Q_FUNC_INFO);
+ timerEventThread = QThread::currentThread();
+ emit theSignal();
+ }
+
+public slots:
+ void theSlot()
+ {
+ if (slotThread)
+ qFatal("%s: slotThread should be null", Q_FUNC_INFO);
+ slotThread = QThread::currentThread();
+ emit theSignal();
+ }
+
+signals:
+ void theSignal();
+};
+
+class MoveToThreadThread : public QThread
+{
+public:
+ ~MoveToThreadThread()
+ {
+ if (isRunning()) {
+ terminate();
+ wait();
+ }
+ }
+ void start()
+ {
+ QEventLoop eventLoop;
+ connect(this, SIGNAL(started()), &eventLoop, SLOT(quit()), Qt::QueuedConnection);
+ QThread::start();
+ // wait for thread to start
+ (void) eventLoop.exec();
+ }
+ void run()
+ { (void) exec(); }
+};
+
+void tst_QObject::thread0()
+{
+ QObject *object = new QObject;
+ object->moveToThread(0);
+ QObject *child = new QObject(object);
+ QCOMPARE(child->parent(), object);
+ QCOMPARE(child->thread(), (QThread *)0);
+
+#if 0
+ // We don't support moving children into a parent that has no thread
+ // affinity (yet?).
+ QObject *child2 = new QObject;
+ child2->moveToThread(0);
+ child2->setParent(object);
+ QCOMPARE(child2->parent(), object);
+ QCOMPARE(child2->thread(), (QThread *)0);
+#endif
+
+ delete object;
+}
+
+void tst_QObject::moveToThread()
+{
+ QThread *currentThread = QThread::currentThread();
+
+ {
+ QObject *object = new QObject;
+ QObject *child = new QObject(object);
+ QCOMPARE(object->thread(), currentThread);
+ QCOMPARE(child->thread(), currentThread);
+ object->moveToThread(0);
+ QCOMPARE(object->thread(), (QThread *)0);
+ QCOMPARE(child->thread(), (QThread *)0);
+ object->moveToThread(currentThread);
+ QCOMPARE(object->thread(), currentThread);
+ QCOMPARE(child->thread(), currentThread);
+ object->moveToThread(0);
+ QCOMPARE(object->thread(), (QThread *)0);
+ QCOMPARE(child->thread(), (QThread *)0);
+ // can delete an object with no thread anywhere
+ delete object;
+ }
+
+ {
+ MoveToThreadThread thread;
+ thread.start();
+
+ QObject *object = new QObject;
+ QObject *child = new QObject(object);
+ QPointer<QObject> opointer = object;
+ QPointer<QObject> cpointer = object;
+
+ QCOMPARE(object->thread(), currentThread);
+ QCOMPARE(child->thread(), currentThread);
+ object->moveToThread(&thread);
+ QCOMPARE(object->thread(), (QThread *)&thread);
+ QCOMPARE(child->thread(), (QThread *)&thread);
+
+ connect(object, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
+ QMetaObject::invokeMethod(object, "deleteLater", Qt::QueuedConnection);
+ thread.wait();
+
+ QVERIFY(opointer == 0);
+ QVERIFY(cpointer == 0);
+ }
+
+ {
+ // make sure posted events are moved with the object
+ MoveToThreadThread thread;
+ thread.start();
+
+ MoveToThreadObject *object = new MoveToThreadObject;
+ MoveToThreadObject *child = new MoveToThreadObject(object);
+
+ connect(object, SIGNAL(theSignal()), &thread, SLOT(quit()), Qt::DirectConnection);
+ QCoreApplication::postEvent(child, new QEvent(QEvent::User));
+ QCoreApplication::postEvent(object, new QEvent(QEvent::User));
+
+ QCOMPARE(object->thread(), currentThread);
+ QCOMPARE(child->thread(), currentThread);
+ object->moveToThread(&thread);
+ QCOMPARE(object->thread(), (QThread *)&thread);
+ QCOMPARE(child->thread(), (QThread *)&thread);
+
+ thread.wait();
+
+ QCOMPARE(object->customEventThread, (QThread *)&thread);
+ QCOMPARE(child->customEventThread, (QThread *)&thread);
+
+ thread.start();
+ connect(object, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
+ QMetaObject::invokeMethod(object, "deleteLater", Qt::QueuedConnection);
+ thread.wait();
+ }
+
+ {
+ // make sure timers are moved with the object
+ MoveToThreadThread thread;
+ thread.start();
+
+ MoveToThreadObject *object = new MoveToThreadObject;
+ MoveToThreadObject *child = new MoveToThreadObject(object);
+
+ connect(object, SIGNAL(theSignal()), &thread, SLOT(quit()), Qt::DirectConnection);
+
+#if defined(Q_OS_SYMBIAN)
+ // Child timer will be registered after parent timer in the new
+ // thread, and 10ms is less than symbian timer resolution, so
+ // child->timerEventThread compare after thread.wait() will
+ // usually fail unless timers are farther apart.
+ child->startTimer(100);
+ object->startTimer(150);
+#else
+ child->startTimer(90);
+ object->startTimer(100);
+#endif
+
+ QCOMPARE(object->thread(), currentThread);
+ QCOMPARE(child->thread(), currentThread);
+ object->moveToThread(&thread);
+ QCOMPARE(object->thread(), (QThread *)&thread);
+ QCOMPARE(child->thread(), (QThread *)&thread);
+
+ thread.wait();
+
+ QCOMPARE(object->timerEventThread, (QThread *)&thread);
+ QCOMPARE(child->timerEventThread, (QThread *)&thread);
+
+ thread.start();
+ connect(object, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
+ QMetaObject::invokeMethod(object, "deleteLater", Qt::QueuedConnection);
+ thread.wait();
+ }
+
+ {
+ // make sure socket notifiers are moved with the object
+ MoveToThreadThread thread;
+ thread.start();
+
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost, 0));
+ QTcpSocket *socket = new QTcpSocket;
+ MoveToThreadObject *child = new MoveToThreadObject(socket);
+ connect(socket, SIGNAL(disconnected()), child, SLOT(theSlot()), Qt::DirectConnection);
+ connect(child, SIGNAL(theSignal()), &thread, SLOT(quit()), Qt::DirectConnection);
+
+ socket->connectToHost(server.serverAddress(), server.serverPort());
+
+ QVERIFY(server.waitForNewConnection(1000));
+ QTcpSocket *serverSocket = server.nextPendingConnection();
+ QVERIFY(serverSocket);
+
+ socket->waitForConnected();
+
+ QCOMPARE(socket->thread(), currentThread);
+ socket->moveToThread(&thread);
+ QCOMPARE(socket->thread(), (QThread *)&thread);
+
+ serverSocket->close();
+
+ QVERIFY(thread.wait(10000));
+
+ QCOMPARE(child->slotThread, (QThread *)&thread);
+
+ thread.start();
+ connect(socket, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
+ QMetaObject::invokeMethod(socket, "deleteLater", Qt::QueuedConnection);
+ thread.wait();
+ }
+}
+
+
+void tst_QObject::property()
+{
+ PropertyObject object;
+ const QMetaObject *mo = object.metaObject();
+ QMetaProperty property;
+ QVERIFY(mo);
+
+ QVERIFY(mo->indexOfProperty("alpha") != -1);
+ property = mo->property(mo->indexOfProperty("alpha"));
+ QVERIFY(property.isEnumType());
+ QCOMPARE(property.typeName(), "Alpha");
+ QCOMPARE(property.type(), QVariant::Int);
+
+ QVariant var = object.property("alpha");
+ QVERIFY(!var.isNull());
+ QCOMPARE(var.toInt(), int(PropertyObject::Alpha0));
+ object.setAlpha(PropertyObject::Alpha1);
+ QCOMPARE(object.property("alpha").toInt(), int(PropertyObject::Alpha1));
+ QVERIFY(object.setProperty("alpha", PropertyObject::Alpha2));
+ QCOMPARE(object.property("alpha").toInt(), int(PropertyObject::Alpha2));
+ QVERIFY(object.setProperty("alpha", "Alpha1"));
+ QCOMPARE(object.property("alpha").toInt(), int(PropertyObject::Alpha1));
+ QVERIFY(!object.setProperty("alpha", QVariant()));
+
+ QVERIFY(mo->indexOfProperty("number") != -1);
+ QCOMPARE(object.property("number").toInt(), 0);
+ object.setNumber(24);
+ QCOMPARE(object.property("number"), QVariant(24));
+ QVERIFY(object.setProperty("number", 12));
+ QCOMPARE(object.property("number"), QVariant(12));
+ QVERIFY(object.setProperty("number", "42"));
+ QCOMPARE(object.property("number"), QVariant(42));
+
+ QVERIFY(mo->indexOfProperty("string") != -1);
+ QCOMPARE(object.property("string").toString(), QString());
+ object.setString("String1");
+ QCOMPARE(object.property("string"), QVariant("String1"));
+ QVERIFY(object.setProperty("string", "String2"));
+ QCOMPARE(object.property("string"), QVariant("String2"));
+ QVERIFY(!object.setProperty("string", QVariant()));
+
+ const int idx = mo->indexOfProperty("variant");
+ QVERIFY(idx != -1);
+ QVERIFY(mo->property(idx).type() == QVariant::LastType);
+ QCOMPARE(object.property("variant"), QVariant());
+ QVariant variant1(42);
+ QVariant variant2("string");
+ object.setVariant(variant1);
+ QCOMPARE(object.property("variant"), variant1);
+ QVERIFY(object.setProperty("variant", variant2));
+ QCOMPARE(object.variant(), QVariant(variant2));
+ QCOMPARE(object.property("variant"), variant2);
+ QVERIFY(object.setProperty("variant", QVariant()));
+ QCOMPARE(object.property("variant"), QVariant());
+
+ QVERIFY(mo->indexOfProperty("custom") != -1);
+ property = mo->property(mo->indexOfProperty("custom"));
+ QVERIFY(property.isValid());
+ QVERIFY(property.isWritable());
+ QVERIFY(!property.isEnumType());
+ QCOMPARE(property.typeName(), "CustomType*");
+ QCOMPARE(property.type(), QVariant::UserType);
+
+ CustomType *customPointer = 0;
+ QVariant customVariant = object.property("custom");
+ customPointer = qVariantValue<CustomType *>(customVariant);
+ QCOMPARE(customPointer, object.custom());
+
+ CustomType custom;
+ customPointer = &custom;
+ qVariantSetValue(customVariant, customPointer);
+
+ property = mo->property(mo->indexOfProperty("custom"));
+ QVERIFY(property.isWritable());
+ QCOMPARE(property.typeName(), "CustomType*");
+ QCOMPARE(property.type(), QVariant::UserType);
+
+ QVERIFY(object.setProperty("custom", customVariant));
+ QCOMPARE(object.custom(), customPointer);
+
+ customVariant = object.property("custom");
+ customPointer = qVariantValue<CustomType *>(customVariant);
+ QCOMPARE(object.custom(), customPointer);
+
+ // this enum property has a meta type, but it's not yet registered, so we know this fails
+ QVERIFY(mo->indexOfProperty("priority") != -1);
+ property = mo->property(mo->indexOfProperty("priority"));
+ QVERIFY(property.isEnumType());
+ QCOMPARE(property.typeName(), "Priority");
+ QCOMPARE(property.type(), QVariant::Int);
+
+ var = object.property("priority");
+ QVERIFY(!var.isNull());
+ QCOMPARE(var.toInt(), int(PropertyObject::High));
+ object.setPriority(PropertyObject::Low);
+ QCOMPARE(object.property("priority").toInt(), int(PropertyObject::Low));
+ QVERIFY(object.setProperty("priority", PropertyObject::VeryHigh));
+ QCOMPARE(object.property("priority").toInt(), int(PropertyObject::VeryHigh));
+ QVERIFY(object.setProperty("priority", "High"));
+ QCOMPARE(object.property("priority").toInt(), int(PropertyObject::High));
+ QVERIFY(!object.setProperty("priority", QVariant()));
+
+ // now it's registered, so it works as expected
+ int priorityMetaTypeId = qRegisterMetaType<PropertyObject::Priority>("PropertyObject::Priority");
+
+ QVERIFY(mo->indexOfProperty("priority") != -1);
+ property = mo->property(mo->indexOfProperty("priority"));
+ QVERIFY(property.isEnumType());
+ QCOMPARE(property.typeName(), "Priority");
+ QCOMPARE(property.type(), QVariant::UserType);
+ QCOMPARE(property.userType(), priorityMetaTypeId);
+
+ var = object.property("priority");
+ QVERIFY(!var.isNull());
+ QVERIFY(qVariantCanConvert<PropertyObject::Priority>(var));
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(var), PropertyObject::High);
+ object.setPriority(PropertyObject::Low);
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::Low);
+ QVERIFY(object.setProperty("priority", PropertyObject::VeryHigh));
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::VeryHigh);
+ QVERIFY(object.setProperty("priority", "High"));
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::High);
+ QVERIFY(!object.setProperty("priority", QVariant()));
+
+ var = object.property("priority");
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(var), PropertyObject::High);
+ object.setPriority(PropertyObject::Low);
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::Low);
+ object.setProperty("priority", var);
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::High);
+
+ qRegisterMetaType<CustomString>("CustomString");
+ QVERIFY(mo->indexOfProperty("customString") != -1);
+ QCOMPARE(object.property("customString").toString(), QString());
+ object.setCustomString("String1");
+ QCOMPARE(object.property("customString"), QVariant("String1"));
+ QVERIFY(object.setProperty("customString", "String2"));
+ QCOMPARE(object.property("customString"), QVariant("String2"));
+ QVERIFY(!object.setProperty("customString", QVariant()));
+}
+
+void tst_QObject::metamethod()
+{
+ SenderObject obj;
+ const QMetaObject *mobj = obj.metaObject();
+ QMetaMethod m;
+
+ m = mobj->method(mobj->indexOfMethod("invoke1()"));
+ QVERIFY(QByteArray(m.signature()) == "invoke1()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Public);
+ QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("sinvoke1()"));
+ QVERIFY(QByteArray(m.signature()) == "sinvoke1()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Public);
+ QVERIFY((m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("invoke2()"));
+ QVERIFY(QByteArray(m.signature()) == "invoke2()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Protected);
+ QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY((m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("sinvoke2()"));
+ QVERIFY(QByteArray(m.signature()) == "sinvoke2()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Protected);
+ QVERIFY((m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY((m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("invoke3()"));
+ QVERIFY(QByteArray(m.signature()) == "invoke3()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Private);
+ QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("sinvoke3()"));
+ QVERIFY(QByteArray(m.signature()) == "sinvoke3()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Private);
+ QVERIFY((m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("signal5()"));
+ QVERIFY(QByteArray(m.signature()) == "signal5()");
+ QVERIFY(m.methodType() == QMetaMethod::Signal);
+ QVERIFY(m.access() == QMetaMethod::Protected);
+ QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY((m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("aPublicSlot()"));
+ QVERIFY(QByteArray(m.signature()) == "aPublicSlot()");
+ QVERIFY(m.methodType() == QMetaMethod::Slot);
+ QVERIFY(m.access() == QMetaMethod::Public);
+ QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("invoke1()"));
+ QCOMPARE(m.parameterNames().count(), 0);
+ QCOMPARE(m.parameterTypes().count(), 0);
+
+ m = mobj->method(mobj->indexOfMethod("invoke2(int)"));
+ QCOMPARE(m.parameterNames().count(), 1);
+ QCOMPARE(m.parameterTypes().count(), 1);
+ QCOMPARE(m.parameterTypes().at(0), QByteArray("int"));
+ QVERIFY(m.parameterNames().at(0).isEmpty());
+
+ m = mobj->method(mobj->indexOfMethod("invoke3(int,int)"));
+ QCOMPARE(m.parameterNames().count(), 2);
+ QCOMPARE(m.parameterTypes().count(), 2);
+ QCOMPARE(m.parameterTypes().at(0), QByteArray("int"));
+ QCOMPARE(m.parameterNames().at(0), QByteArray("hinz"));
+ QCOMPARE(m.parameterTypes().at(1), QByteArray("int"));
+ QCOMPARE(m.parameterNames().at(1), QByteArray("kunz"));
+
+}
+
+namespace QObjectTest
+{
+ class TestObject: public QObject
+ {
+ Q_OBJECT
+ public:
+ TestObject(): QObject(), i(0) {}
+ void doEmit() { emit aSignal(); }
+ int i;
+ public slots:
+ void aSlot() { ++i; }
+ signals:
+ void aSignal();
+ };
+}
+
+void tst_QObject::namespaces()
+{
+ QObjectTest::TestObject obj;
+
+ QVERIFY(connect(&obj, SIGNAL(aSignal()), &obj, SLOT(aSlot())));
+ obj.doEmit();
+ QCOMPARE(obj.i, 1);
+}
+
+class SuperObject : public QObject
+{
+ Q_OBJECT
+public:
+ QObject *theSender;
+ int theSignalId;
+
+ SuperObject()
+ {
+ theSender = 0;
+ theSignalId = 0;
+ }
+
+ friend class tst_QObject;
+
+ using QObject::sender;
+
+public slots:
+ void rememberSender()
+ {
+ theSender = sender();
+ theSignalId = senderSignalIndex();
+ }
+
+ void deleteAndRememberSender()
+ {
+ delete theSender;
+ rememberSender();
+ }
+signals:
+ void anotherSignal();
+ void theSignal();
+};
+
+void tst_QObject::sender()
+{
+ {
+ SuperObject sender;
+ SuperObject receiver;
+ connect(&sender, SIGNAL(anotherSignal()),
+ &receiver, SLOT(rememberSender()));
+ connect(&sender, SIGNAL(theSignal()),
+ &receiver, SLOT(rememberSender()));
+ QCOMPARE(receiver.sender(), (QObject *)0);
+ QCOMPARE(receiver.senderSignalIndex(), -1);
+ emit sender.theSignal();
+ QCOMPARE(receiver.theSender, (QObject *)&sender);
+ QCOMPARE(receiver.sender(), (QObject *)0);
+ QCOMPARE(receiver.theSignalId,
+ sender.metaObject()->indexOfSignal("theSignal()"));
+ QCOMPARE(receiver.senderSignalIndex(), -1);
+
+ emit sender.anotherSignal();
+ QCOMPARE(receiver.theSignalId,
+ sender.metaObject()->indexOfSignal("anotherSignal()"));
+ QCOMPARE(receiver.senderSignalIndex(), -1);
+ }
+
+ {
+ SuperObject *sender = new SuperObject;
+ SuperObject *receiver = new SuperObject;
+ connect(sender, SIGNAL(theSignal()),
+ receiver, SLOT(rememberSender()),
+ Qt::BlockingQueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ connect(sender, SIGNAL(theSignal()),
+ &thread, SLOT(quit()),
+ Qt::DirectConnection);
+
+ QCOMPARE(receiver->sender(), (QObject *)0);
+ QCOMPARE(receiver->senderSignalIndex(), -1);
+ receiver->theSender = 0;
+ receiver->theSignalId = -1;
+ thread.start();
+ emit sender->theSignal();
+ QCOMPARE(receiver->theSender, (QObject *) sender);
+ QCOMPARE(receiver->sender(), (QObject *)0);
+ QCOMPARE(receiver->theSignalId,
+ sender->metaObject()->indexOfSignal("theSignal()"));
+ QCOMPARE(receiver->senderSignalIndex(), -1);
+
+ QVERIFY(thread.wait(10000));
+ delete receiver;
+ delete sender;
+ }
+
+ {
+ SuperObject *sender = new SuperObject;
+ SuperObject receiver;
+ connect(sender, SIGNAL(theSignal()),
+ &receiver, SLOT(deleteAndRememberSender()));
+ QCOMPARE(receiver.sender(), (QObject *)0);
+ receiver.theSender = sender;
+ emit sender->theSignal();
+ QCOMPARE(receiver.theSender, (QObject *)0);
+ QCOMPARE(receiver.sender(), (QObject *)0);
+ }
+
+ {
+ SuperObject *sender = new SuperObject;
+ SuperObject *receiver = new SuperObject;
+ connect(sender, SIGNAL(theSignal()),
+ receiver, SLOT(deleteAndRememberSender()),
+ Qt::BlockingQueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ connect(sender, SIGNAL(destroyed()),
+ &thread, SLOT(quit()),
+ Qt::DirectConnection);
+
+ QCOMPARE(receiver->sender(), (QObject *)0);
+ receiver->theSender = sender;
+ thread.start();
+ emit sender->theSignal();
+ QCOMPARE(receiver->theSender, (QObject *)0);
+ QCOMPARE(receiver->sender(), (QObject *)0);
+
+ QVERIFY(thread.wait(10000));
+ delete receiver;
+ }
+}
+
+namespace Foo
+{
+ struct Bar
+ {
+ virtual ~Bar() {}
+ virtual int rtti() const = 0;
+ };
+
+ struct Bleh
+ {
+ virtual ~Bleh() {}
+ virtual int rtti() const = 0;
+ };
+}
+
+QT_BEGIN_NAMESPACE
+Q_DECLARE_INTERFACE(Foo::Bar, "com.qtest.foobar")
+QT_END_NAMESPACE
+
+#define Bleh_iid "com.qtest.bleh"
+QT_BEGIN_NAMESPACE
+Q_DECLARE_INTERFACE(Foo::Bleh, Bleh_iid)
+QT_END_NAMESPACE
+
+class FooObject: public QObject, public Foo::Bar
+{
+ Q_OBJECT
+ Q_INTERFACES(Foo::Bar)
+public:
+ int rtti() const { return 42; }
+};
+
+class BlehObject : public QObject, public Foo::Bleh
+{
+ Q_OBJECT
+ Q_INTERFACES(Foo::Bleh)
+public:
+ int rtti() const { return 43; }
+};
+
+void tst_QObject::declareInterface()
+{
+ FooObject obj;
+
+ Foo::Bar *bar = qobject_cast<Foo::Bar *>(&obj);
+ QVERIFY(bar);
+ QCOMPARE(bar->rtti(), 42);
+ QCOMPARE(static_cast<Foo::Bar *>(&obj), bar);
+
+ BlehObject bleh;
+
+ bar = qobject_cast<Foo::Bar *>(&bleh);
+ QVERIFY(!bar);
+ Foo::Bleh *b = qobject_cast<Foo::Bleh *>(&bleh);
+ QCOMPARE(b->rtti(), 43);
+ QCOMPARE(static_cast<Foo::Bleh *>(&bleh), b);
+
+}
+
+class CustomData : public QObjectUserData
+{
+public:
+ int id;
+};
+
+void tst_QObject::testUserData()
+{
+ const int USER_DATA_COUNT = 100;
+ int user_data_ids[USER_DATA_COUNT];
+
+ // Register a few
+ for (int i=0; i<USER_DATA_COUNT; ++i) {
+ user_data_ids[i] = QObject::registerUserData();
+ }
+
+ // Randomize the table a bit
+ for (int i=0; i<100; ++i) {
+ int p1 = rand() % USER_DATA_COUNT;
+ int p2 = rand() % USER_DATA_COUNT;
+
+ int tmp = user_data_ids[p1];
+ user_data_ids[p1] = user_data_ids[p2];
+ user_data_ids[p2] = tmp;
+ }
+
+ // insert the user data into an object
+ QObject my_test_object;
+ for (int i=0; i<USER_DATA_COUNT; ++i) {
+ CustomData *data = new CustomData;
+ data->id = user_data_ids[i];
+ my_test_object.setUserData(data->id, data);
+ }
+
+ // verify that all ids and positions are matching
+ for (int i=0; i<USER_DATA_COUNT; ++i) {
+ int id = user_data_ids[i];
+ CustomData *data = static_cast<CustomData *>(my_test_object.userData(id));
+ QVERIFY(data != 0);
+ QVERIFY(data->id == id);
+ }
+}
+
+class DestroyedListener : public QObject
+{
+ Q_OBJECT
+public:
+ inline DestroyedListener() : pointerWasZero(false) {}
+
+ QPointer<QObject> pointer;
+ bool pointerWasZero;
+
+private slots:
+ inline void otherObjectDestroyed()
+ { pointerWasZero = pointer.isNull(); }
+};
+
+void tst_QObject::qpointerResetBeforeDestroyedSignal()
+{
+ QObject *obj = new QObject;
+ DestroyedListener listener;
+ listener.pointer = obj;
+ listener.pointerWasZero = false;
+ connect(obj, SIGNAL(destroyed()), &listener, SLOT(otherObjectDestroyed()));
+ delete obj;
+ QVERIFY(listener.pointerWasZero);
+ QVERIFY(listener.pointer.isNull());
+}
+
+class DefaultArguments : public QObject
+{
+ Q_OBJECT
+
+public slots:
+
+ void theSlot(const QString &s) { result = s; }
+
+signals:
+ void theOriginalSignal();
+ void theSecondSignal(const QString &s = QString("secondDefault"));
+
+public:
+
+ void emitTheOriginalSignal() { emit theOriginalSignal(); }
+ void emitTheSecondSignal() { emit theSecondSignal(); }
+ QString result;
+};
+
+void tst_QObject::connectSignalsToSignalsWithDefaultArguments()
+{
+ DefaultArguments o;
+ connect(&o, SIGNAL(theOriginalSignal()), &o, SIGNAL(theSecondSignal()));
+ connect(&o, SIGNAL(theSecondSignal(QString)), &o, SLOT(theSlot(QString)));
+ QVERIFY( o.result.isEmpty() );
+ o.emitTheSecondSignal();
+ QCOMPARE(o.result, QString("secondDefault"));
+ o.result = "Not called";
+ o.emitTheOriginalSignal();
+ QCOMPARE(o.result, QString("secondDefault"));
+
+}
+
+void tst_QObject::receivers()
+{
+ class Object : public QObject
+ {
+ public:
+ int receivers(const char* signal) const
+ { return QObject::receivers(signal); }
+ };
+
+ Object object;
+ QCOMPARE(object.receivers(SIGNAL(destroyed())), 0);
+ object.connect(&object, SIGNAL(destroyed()), SLOT(deleteLater()));
+ QCOMPARE(object.receivers(SIGNAL(destroyed())), 1);
+ object.connect(&object, SIGNAL(destroyed()), SLOT(deleteLater()));
+ QCOMPARE(object.receivers(SIGNAL(destroyed())), 2);
+ object.disconnect(SIGNAL(destroyed()), &object, SLOT(deleteLater()));
+ QCOMPARE(object.receivers(SIGNAL(destroyed())), 0);
+}
+
+enum Enum { };
+
+struct Struct { };
+class Class { };
+template <typename T> class Template { };
+
+class NormalizeObject : public QObject
+{
+ Q_OBJECT
+
+public:
+
+signals:
+ void uintPointerSignal(uint *);
+ void ulongPointerSignal(ulong *);
+ void constUintPointerSignal(const uint *);
+ void constUlongPointerSignal(const ulong *);
+
+ void structSignal(Struct s);
+ void classSignal(Class c);
+ void enumSignal(Enum e);
+
+ void structPointerSignal(Struct *s);
+ void classPointerSignal(Class *c);
+ void enumPointerSignal(Enum *e);
+
+ void constStructPointerSignal(const Struct *s);
+ void constClassPointerSignal(const Class *c);
+ void constEnumPointerSignal(const Enum *e);
+
+ void constStructPointerConstPointerSignal(const Struct * const *s);
+ void constClassPointerConstPointerSignal(const Class * const *c);
+ void constEnumPointerConstPointerSignal(const Enum * const *e);
+
+ void unsignedintSignal(unsigned int);
+ void unsignedSignal(unsigned);
+ void unsignedlongSignal(unsigned long);
+ void unsignedlonglongSignal(quint64);
+ void unsignedlongintSignal(unsigned long int);
+ void unsignedshortSignal(unsigned short);
+ void unsignedcharSignal(unsigned char);
+
+ void typeRefSignal(Template<Class &> &ref);
+ void constTypeRefSignal(const Template<Class const &> &ref);
+ void typeConstRefSignal(Template<Class const &> const &ref);
+
+ void typePointerConstRefSignal(Class * const &);
+
+ void constTemplateSignal1( Template<int > );
+ void constTemplateSignal2( Template< const int >);
+
+public slots:
+ void uintPointerSlot(uint *) { }
+ void ulongPointerSlot(ulong *) { }
+ void constUintPointerSlot(const uint *) { }
+ void constUlongPointerSlot(const ulong *) { }
+
+ void structSlot(Struct s) { Q_UNUSED(s); }
+ void classSlot(Class c) { Q_UNUSED(c); }
+ void enumSlot(Enum e) { Q_UNUSED(e); }
+
+ void structPointerSlot(Struct *s) { Q_UNUSED(s); }
+ void classPointerSlot(Class *c) { Q_UNUSED(c); }
+ void enumPointerSlot(Enum *e) { Q_UNUSED(e); }
+
+ void constStructPointerSlot(const Struct *s) { Q_UNUSED(s); }
+ void constClassPointerSlot(const Class *c) { Q_UNUSED(c); }
+ void constEnumPointerSlot(const Enum *e) { Q_UNUSED(e); }
+
+ void constStructPointerConstPointerSlot(const Struct * const *s) { Q_UNUSED(s); }
+ void constClassPointerConstPointerSlot(const Class * const *c) { Q_UNUSED(c); }
+ void constEnumPointerConstPointerSlot(const Enum * const *e) { Q_UNUSED(e); }
+
+ void uintSlot(uint) {};
+ void unsignedintSlot(unsigned int) {};
+ void unsignedSlot(unsigned) {};
+ void unsignedlongSlot(unsigned long) {};
+ void unsignedlonglongSlot(quint64) {};
+ void unsignedlongintSlot(unsigned long int) {};
+ void unsignedshortSlot(unsigned short) {};
+ void unsignedcharSlot(unsigned char) {};
+
+ void typeRefSlot(Template<Class &> &) {}
+ void constTypeRefSlot(const Template<const Class &> &) {}
+ void typeConstRefSlot(Template<Class const &> const &) {}
+
+ void typePointerConstRefSlot(Class * const &) {}
+
+ void constTemplateSlot1(Template<int > const) {}
+ void constTemplateSlot2(const Template<int > ) {}
+ void constTemplateSlot3(const Template< const int >) {}
+};
+
+#include "oldnormalizeobject.h"
+
+void tst_QObject::normalize()
+{
+ NormalizeObject object;
+
+ // unsigned int -> uint, unsigned long -> ulong
+ QVERIFY(object.connect(&object,
+ SIGNAL(uintPointerSignal(uint *)),
+ SLOT(uintPointerSlot(uint *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(uintPointerSignal(unsigned int *)),
+ SLOT(uintPointerSlot(uint *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(uintPointerSignal(uint *)),
+ SLOT(uintPointerSlot(unsigned int *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUintPointerSignal(const uint *)),
+ SLOT(constUintPointerSlot(const uint *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUintPointerSignal(const unsigned int *)),
+ SLOT(constUintPointerSlot(const uint *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUintPointerSignal(const uint *)),
+ SLOT(constUintPointerSlot(const unsigned int *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(ulongPointerSignal(ulong *)),
+ SLOT(ulongPointerSlot(ulong *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(ulongPointerSignal(unsigned long *)),
+ SLOT(ulongPointerSlot(ulong *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(ulongPointerSignal(ulong *)),
+ SLOT(ulongPointerSlot(unsigned long *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUlongPointerSignal(const ulong *)),
+ SLOT(constUlongPointerSlot(const ulong *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUlongPointerSignal(const unsigned long *)),
+ SLOT(constUlongPointerSlot(const ulong *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUlongPointerSignal(const ulong *)),
+ SLOT(constUlongPointerSlot(const unsigned long *))));
+
+ // struct, class, and enum are optional
+ QVERIFY(object.connect(&object,
+ SIGNAL(structSignal(struct Struct)),
+ SLOT(structSlot(struct Struct))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(structSignal(Struct)),
+ SLOT(structSlot(struct Struct))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(structSignal(struct Struct)),
+ SLOT(structSlot(Struct))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classSignal(class Class)),
+ SLOT(classSlot(class Class))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classSignal(Class)),
+ SLOT(classSlot(class Class))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classSignal(class Class)),
+ SLOT(classSlot(Class))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumSignal(enum Enum)),
+ SLOT(enumSlot(enum Enum))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumSignal(Enum)),
+ SLOT(enumSlot(enum Enum))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumSignal(enum Enum)),
+ SLOT(enumSlot(Enum))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(structPointerSignal(struct Struct *)),
+ SLOT(structPointerSlot(struct Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(structPointerSignal(Struct *)),
+ SLOT(structPointerSlot(struct Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(structPointerSignal(struct Struct *)),
+ SLOT(structPointerSlot(Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classPointerSignal(class Class *)),
+ SLOT(classPointerSlot(class Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classPointerSignal(Class *)),
+ SLOT(classPointerSlot(class Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classPointerSignal(class Class *)),
+ SLOT(classPointerSlot(Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumPointerSignal(enum Enum *)),
+ SLOT(enumPointerSlot(enum Enum *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumPointerSignal(Enum *)),
+ SLOT(enumPointerSlot(enum Enum *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumPointerSignal(enum Enum *)),
+ SLOT(enumPointerSlot(Enum *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(const struct Struct *)),
+ SLOT(constStructPointerSlot(const struct Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(const Struct *)),
+ SLOT(constStructPointerSlot(const struct Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(const struct Struct *)),
+ SLOT(constStructPointerSlot(const Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(const class Class *)),
+ SLOT(constClassPointerSlot(const class Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(const Class *)),
+ SLOT(constClassPointerSlot(const class Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(const class Class *)),
+ SLOT(constClassPointerSlot(const Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(const enum Enum *)),
+ SLOT(constEnumPointerSlot(const enum Enum *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(const Enum *)),
+ SLOT(constEnumPointerSlot(const enum Enum *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(const enum Enum *)),
+ SLOT(constEnumPointerSlot(const Enum *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(struct Struct const *)),
+ SLOT(constStructPointerSlot(struct Struct const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(Struct const *)),
+ SLOT(constStructPointerSlot(struct Struct const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(struct Struct const *)),
+ SLOT(constStructPointerSlot(Struct const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(class Class const *)),
+ SLOT(constClassPointerSlot(class Class const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(Class const *)),
+ SLOT(constClassPointerSlot(class Class const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(class Class const *)),
+ SLOT(constClassPointerSlot(Class const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(enum Enum const *)),
+ SLOT(constEnumPointerSlot(enum Enum const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(Enum const *)),
+ SLOT(constEnumPointerSlot(enum Enum const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(enum Enum const *)),
+ SLOT(constEnumPointerSlot(Enum const *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(const struct Struct * const *)),
+ SLOT(constStructPointerConstPointerSlot(const struct Struct * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(const Struct * const *)),
+ SLOT(constStructPointerConstPointerSlot(const struct Struct * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(const struct Struct * const *)),
+ SLOT(constStructPointerConstPointerSlot(const Struct * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(const class Class * const *)),
+ SLOT(constClassPointerConstPointerSlot(const class Class * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(const Class * const *)),
+ SLOT(constClassPointerConstPointerSlot(const class Class * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(const class Class * const *)),
+ SLOT(constClassPointerConstPointerSlot(const Class * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(const enum Enum * const *)),
+ SLOT(constEnumPointerConstPointerSlot(const enum Enum * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(const Enum * const *)),
+ SLOT(constEnumPointerConstPointerSlot(const enum Enum * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(const enum Enum * const *)),
+ SLOT(constEnumPointerConstPointerSlot(const Enum * const *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(struct Struct const * const *)),
+ SLOT(constStructPointerConstPointerSlot(struct Struct const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(Struct const * const *)),
+ SLOT(constStructPointerConstPointerSlot(struct Struct const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(struct Struct const * const *)),
+ SLOT(constStructPointerConstPointerSlot(Struct const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(class Class const * const *)),
+ SLOT(constClassPointerConstPointerSlot(class Class const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(Class const * const *)),
+ SLOT(constClassPointerConstPointerSlot(class Class const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(class Class const * const *)),
+ SLOT(constClassPointerConstPointerSlot(Class const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(enum Enum const * const *)),
+ SLOT(constEnumPointerConstPointerSlot(enum Enum const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(Enum const * const *)),
+ SLOT(constEnumPointerConstPointerSlot(enum Enum const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(enum Enum const * const *)),
+ SLOT(constEnumPointerConstPointerSlot(Enum const * const *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedintSignal(unsigned int)),
+ SLOT(unsignedintSlot(unsigned int))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedSignal(unsigned)),
+ SLOT(unsignedSlot(unsigned))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedSignal(unsigned)),
+ SLOT(uintSlot(uint))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedlongSignal(unsigned long)),
+ SLOT(unsignedlongSlot(unsigned long))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedlonglongSignal(quint64)),
+ SLOT(unsignedlonglongSlot(quint64))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedlongintSignal(unsigned long int)),
+ SLOT(unsignedlongintSlot(unsigned long int))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedshortSignal(unsigned short)),
+ SLOT(unsignedshortSlot(unsigned short))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedcharSignal(unsigned char)),
+ SLOT(unsignedcharSlot(unsigned char))));
+
+ // connect when original template signature and mixed usage of 'T<C const &> const &',
+ // 'const T<const C &> &', and 'T<const C &>'
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeRefSignal(Template<Class &> &)),
+ SLOT(typeRefSlot(Template<Class &> &))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<const Class &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<Class const &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<const Class &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<Class const &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<const Class &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<Class const &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<const Class &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<Class const &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+
+ // same test again, this time with an object compiled with old moc output... we know that
+ // it is not possible to connect everything, whic is the purpose for this test
+ OldNormalizeObject oldobject;
+
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<const Class &> &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<Class const &> &))));
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+
+ // these fail in older Qt versions, but pass now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<const Class &> &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<Class const &> &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+
+ // these also fail in older Qt versions, but pass now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<const Class &> &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<Class const &> &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<const Class &> &))));
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<Class const &> &))));
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(typePointerConstRefSignal(Class*const&)),
+ SLOT(typePointerConstRefSlot(Class*const&))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typePointerConstRefSignal(Class*const&)),
+ SLOT(typePointerConstRefSlot(Class*))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typePointerConstRefSignal(Class*)),
+ SLOT(typePointerConstRefSlot(Class*const&))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typePointerConstRefSignal(Class*)),
+ SLOT(typePointerConstRefSlot(Class*))));
+
+ QVERIFY( connect(&object, SIGNAL(constTemplateSignal1(Template <int>)),
+ &object , SLOT(constTemplateSlot1 (Template<int > ) ) ));
+ QVERIFY( connect(&object, SIGNAL(constTemplateSignal1(Template <int>)),
+ &object , SLOT(constTemplateSlot2 (Template<int > ) ) ));
+ QVERIFY( connect(&object, SIGNAL(constTemplateSignal2(Template <const int>)),
+ &object , SLOT(constTemplateSlot3(Template<int const > ) ) ));
+
+ //type does not match
+ QTest::ignoreMessage(QtWarningMsg, "QObject::connect: Incompatible sender/receiver arguments\n"
+ " NormalizeObject::constTemplateSignal1(Template<int>) --> NormalizeObject::constTemplateSlot3(Template<const int>)");
+ QVERIFY(!connect(&object, SIGNAL(constTemplateSignal1(Template <int>)),
+ &object , SLOT(constTemplateSlot3(Template<int const> ) ) ));
+}
+
+class SiblingDeleter : public QObject
+{
+public:
+ inline SiblingDeleter(QObject *sibling, QObject *parent)
+ : QObject(parent), sibling(sibling) {}
+ inline virtual ~SiblingDeleter() { delete sibling; }
+
+private:
+ QPointer<QObject> sibling;
+};
+
+
+void tst_QObject::childDeletesItsSibling()
+{
+ QObject *commonParent = new QObject(0);
+ QPointer<QObject> child = new QObject(0);
+ QPointer<QObject> siblingDeleter = new SiblingDeleter(child, commonParent);
+ child->setParent(commonParent);
+ delete commonParent; // don't crash
+ QVERIFY(!child);
+ QVERIFY(!siblingDeleter);
+}
+
+void tst_QObject::floatProperty()
+{
+ PropertyObject obj;
+ const int idx = obj.metaObject()->indexOfProperty("myFloat");
+ QVERIFY(idx > 0);
+ QMetaProperty prop = obj.metaObject()->property(idx);
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.type() == uint(QMetaType::type("float")));
+ QVERIFY(!prop.write(&obj, QVariant("Hello")));
+ QVERIFY(prop.write(&obj, qVariantFromValue(128.0f)));
+ QVariant v = prop.read(&obj);
+ QVERIFY(int(v.userType()) == QMetaType::Float);
+ QVERIFY(qVariantValue<float>(v) == 128.0f);
+}
+
+void tst_QObject::qrealProperty()
+{
+ PropertyObject obj;
+ const int idx = obj.metaObject()->indexOfProperty("myQReal");
+ QVERIFY(idx > 0);
+ QMetaProperty prop = obj.metaObject()->property(idx);
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.type() == uint(QMetaType::type("qreal")));
+ QVERIFY(!prop.write(&obj, QVariant("Hello")));
+
+ QVERIFY(prop.write(&obj, qVariantFromValue(128.0f)));
+ QVariant v = prop.read(&obj);
+ QCOMPARE(v.userType(), qMetaTypeId<qreal>());
+ QVERIFY(qVariantValue<qreal>(v) == 128.0);
+
+ QVERIFY(prop.write(&obj, qVariantFromValue(double(127))));
+ v = prop.read(&obj);
+ QCOMPARE(v.userType(), qMetaTypeId<qreal>());
+ QVERIFY(qVariantValue<qreal>(v) == 127.0);
+}
+
+class DynamicPropertyObject : public PropertyObject
+{
+public:
+ inline DynamicPropertyObject() {}
+
+ inline virtual bool event(QEvent *e) {
+ if (e->type() == QEvent::DynamicPropertyChange) {
+ changedDynamicProperties.append(static_cast<QDynamicPropertyChangeEvent *>(e)->propertyName());
+ }
+ return QObject::event(e);
+ }
+
+ QList<QByteArray> changedDynamicProperties;
+};
+
+void tst_QObject::dynamicProperties()
+{
+ DynamicPropertyObject obj;
+
+ QVERIFY(obj.dynamicPropertyNames().isEmpty());
+
+ QVERIFY(obj.setProperty("number", 42));
+ QVERIFY(obj.changedDynamicProperties.isEmpty());
+ QCOMPARE(obj.property("number").toInt(), 42);
+
+ QVERIFY(!obj.setProperty("number", "invalid string"));
+ QVERIFY(obj.changedDynamicProperties.isEmpty());
+
+ QVERIFY(!obj.setProperty("myuserproperty", "Hello"));
+ QCOMPARE(obj.changedDynamicProperties.count(), 1);
+ QCOMPARE(obj.changedDynamicProperties.first(), QByteArray("myuserproperty"));
+ obj.changedDynamicProperties.clear();
+
+ QCOMPARE(obj.property("myuserproperty").toString(), QString("Hello"));
+
+ QCOMPARE(obj.dynamicPropertyNames().count(), 1);
+ QCOMPARE(obj.dynamicPropertyNames().first(), QByteArray("myuserproperty"));
+
+ QVERIFY(!obj.setProperty("myuserproperty", QVariant()));
+
+ QCOMPARE(obj.changedDynamicProperties.count(), 1);
+ QCOMPARE(obj.changedDynamicProperties.first(), QByteArray("myuserproperty"));
+ obj.changedDynamicProperties.clear();
+
+ QVERIFY(obj.property("myuserproperty").isNull());
+
+ QVERIFY(obj.dynamicPropertyNames().isEmpty());
+}
+
+void tst_QObject::recursiveSignalEmission()
+{
+#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+ QSKIP("Emulator builds in Symbian do not support launching processes linking to Qt", SkipAll);
+#elif defined(QT_NO_PROCESS)
+ QSKIP("Test requires QProcess", SkipAll);
+#else
+ QProcess proc;
+ proc.start("./signalbug");
+ QVERIFY(proc.waitForFinished());
+ QVERIFY(proc.exitStatus() == QProcess::NormalExit);
+ QCOMPARE(proc.exitCode(), 0);
+#endif
+}
+
+void tst_QObject::blockingQueuedConnection()
+{
+ {
+ SenderObject sender;
+
+ MoveToThreadThread thread;
+ ReceiverObject receiver;
+ receiver.moveToThread(&thread);
+ thread.start();
+
+ receiver.connect(&sender, SIGNAL(signal1()), SLOT(slot1()), Qt::BlockingQueuedConnection);
+ sender.emitSignal1();
+ QVERIFY(receiver.called(1));
+
+ receiver.reset();
+ QVERIFY(QMetaObject::invokeMethod(&receiver, "slot1", Qt::BlockingQueuedConnection));
+ QVERIFY(receiver.called(1));
+
+ thread.quit();
+ QVERIFY(thread.wait());
+ }
+}
+
+class EventSpy : public QObject
+{
+ Q_OBJECT
+
+public:
+ typedef QList<QPair<QObject *, QEvent::Type> > EventList;
+
+ EventSpy(QObject *parent = 0)
+ : QObject(parent)
+ { }
+
+ EventList eventList()
+ {
+ return events;
+ }
+
+ void clear()
+ {
+ events.clear();
+ }
+
+ bool eventFilter(QObject *object, QEvent *event)
+ {
+ events.append(qMakePair(object, event->type()));
+ return false;
+ }
+
+private:
+ EventList events;
+};
+
+void tst_QObject::compatibilityChildInsertedEvents()
+{
+ EventSpy::EventList expected;
+
+ {
+ // no children created, so we expect no events
+ QObject object;
+ EventSpy spy;
+ object.installEventFilter(&spy);
+
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 1)));
+
+ QCoreApplication::processEvents();
+
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::Type(QEvent::User + 1));
+ QCOMPARE(spy.eventList(), expected);
+ }
+
+ {
+ // 2 children, so we expect 2 ChildAdded and 2 ChildInserted events
+ QObject object;
+ EventSpy spy;
+ object.installEventFilter(&spy);
+
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 1)));
+
+ QObject child1(&object);
+ QObject child2;
+ child2.setParent(&object);
+
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 2)));
+
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::ChildAdded)
+ << qMakePair(&object, QEvent::ChildAdded);
+ QCOMPARE(spy.eventList(), expected);
+ spy.clear();
+
+ QCoreApplication::processEvents();
+
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::Type(QEvent::User + 1))
+ << qMakePair(&object, QEvent::Type(QEvent::User + 2));
+ QCOMPARE(spy.eventList(), expected);
+ }
+
+ {
+ // 2 children, but one is reparented away, so we expect:
+ // 2 ChildAdded, 1 ChildRemoved, and 1 ChildInserted
+ QObject object;
+ EventSpy spy;
+ object.installEventFilter(&spy);
+
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 1)));
+
+ QObject child1(&object);
+ QObject child2;
+ child2.setParent(&object);
+ child2.setParent(0);
+
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 2)));
+
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::ChildAdded)
+ << qMakePair(&object, QEvent::ChildAdded)
+ << qMakePair(&object, QEvent::ChildRemoved);
+ QCOMPARE(spy.eventList(), expected);
+ spy.clear();
+
+ QCoreApplication::processEvents();
+
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::Type(QEvent::User + 1))
+ << qMakePair(&object, QEvent::Type(QEvent::User + 2));
+ QCOMPARE(spy.eventList(), expected);
+ }
+}
+
+void tst_QObject::installEventFilter()
+{
+ QEvent event(QEvent::User);
+ EventSpy::EventList expected;
+
+ QObject object;
+ EventSpy spy;
+ object.installEventFilter(&spy);
+
+ // nothing special, should just work
+ QCoreApplication::sendEvent(&object, &event);
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::User);
+ QCOMPARE(spy.eventList(), expected);
+ spy.clear();
+
+ // moving the filter causes QCoreApplication to skip the filter
+ spy.moveToThread(0);
+ QTest::ignoreMessage(QtWarningMsg, "QCoreApplication: Object event filter cannot be in a different thread.");
+ QCoreApplication::sendEvent(&object, &event);
+ QVERIFY(spy.eventList().isEmpty());
+
+ // move it back, and the filter works again
+ spy.moveToThread(object.thread());
+ QCoreApplication::sendEvent(&object, &event);
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::User);
+ QCOMPARE(spy.eventList(), expected);
+ spy.clear();
+
+ // cannot install an event filter that lives in a different thread
+ object.removeEventFilter(&spy);
+ spy.moveToThread(0);
+ QTest::ignoreMessage(QtWarningMsg, "QObject::installEventFilter(): Cannot filter events for objects in a different thread.");
+ object.installEventFilter(&spy);
+ QCoreApplication::sendEvent(&object, &event);
+ QVERIFY(spy.eventList().isEmpty());
+}
+
+class EmitThread : public QThread
+{ Q_OBJECT
+public:
+ void run(void) {
+ emit work();
+ }
+signals:
+ void work();
+};
+
+namespace QObjectTest { // Do not clash with WinAPI 'DeleteObject'
+class DeleteObject : public QObject
+{
+ Q_OBJECT
+
+public slots:
+ void deleteSelf()
+ {
+ delete this;
+ }
+
+ void relaySignalAndProcessEvents()
+ {
+ emit relayedSignal();
+ QCoreApplication::processEvents();
+ }
+
+signals:
+ void relayedSignal();
+};
+} // namespace QObjectTest
+
+void tst_QObject::deleteSelfInSlot()
+{
+ {
+ SenderObject sender;
+ QObjectTest::DeleteObject *receiver = new QObjectTest::DeleteObject();
+ receiver->connect(&sender,
+ SIGNAL(signal1()),
+ SLOT(deleteSelf()),
+ Qt::BlockingQueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
+ thread.start();
+
+ QPointer<QObjectTest::DeleteObject> p = receiver;
+ sender.emitSignal1();
+ QVERIFY(p.isNull());
+
+ QVERIFY(thread.wait(10000));
+ }
+
+ {
+ SenderObject sender;
+ QObjectTest::DeleteObject *receiver = new QObjectTest::DeleteObject();
+ receiver->connect(&sender,
+ SIGNAL(signal1()),
+ SLOT(relaySignalAndProcessEvents()),
+ Qt::BlockingQueuedConnection);
+ receiver->connect(receiver,
+ SIGNAL(relayedSignal()),
+ SLOT(deleteSelf()),
+ Qt::QueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
+ thread.start();
+
+ QPointer<QObjectTest::DeleteObject> p = receiver;
+ sender.emitSignal1();
+ QVERIFY(p.isNull());
+
+ QVERIFY(thread.wait(10000));
+ }
+
+ {
+ EmitThread sender;
+ QObjectTest::DeleteObject *receiver = new QObjectTest::DeleteObject();
+ connect(&sender, SIGNAL(work()), receiver, SLOT(deleteSelf()), Qt::DirectConnection);
+ QPointer<QObjectTest::DeleteObject> p = receiver;
+ sender.start();
+ QVERIFY(sender.wait(10000));
+ QVERIFY(p.isNull());
+ }
+}
+
+class DisconnectObject : public QObject
+{
+ Q_OBJECT
+
+public slots:
+ void disconnectSelf()
+ {
+ disconnect(sender(), 0, this, 0);
+ }
+
+ void relaySignalAndProcessEvents()
+ {
+ emit relayedSignal();
+ QCoreApplication::processEvents();
+ }
+
+signals:
+ void relayedSignal();
+};
+
+void tst_QObject::disconnectSelfInSlotAndDeleteAfterEmit()
+{
+ {
+ SenderObject sender;
+ DisconnectObject *receiver = new DisconnectObject();
+ receiver->connect(&sender, SIGNAL(signal1()), SLOT(disconnectSelf()));
+ sender.emitSignal1AfterRecursion();
+ delete receiver;
+ }
+
+ {
+ SenderObject sender;
+ DisconnectObject *receiver = new DisconnectObject();
+ receiver->connect(&sender,
+ SIGNAL(signal1()),
+ SLOT(disconnectSelf()),
+ Qt::BlockingQueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
+ thread.start();
+
+ QPointer<DisconnectObject> p = receiver;
+ sender.emitSignal1();
+ QVERIFY(!p.isNull());
+
+ receiver->deleteLater();
+
+ QVERIFY(thread.wait(10000));
+ QVERIFY(p.isNull());
+ }
+
+ {
+ SenderObject sender;
+ DisconnectObject *receiver = new DisconnectObject();
+ receiver->connect(&sender,
+ SIGNAL(signal1()),
+ SLOT(relaySignalAndProcessEvents()),
+ Qt::BlockingQueuedConnection);
+ receiver->connect(receiver,
+ SIGNAL(relayedSignal()),
+ SLOT(disconnectSelf()),
+ Qt::QueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
+ thread.start();
+
+ QPointer<DisconnectObject> p = receiver;
+ sender.emitSignal1();
+ QVERIFY(!p.isNull());
+
+ receiver->deleteLater();
+
+ QVERIFY(thread.wait(10000));
+ QVERIFY(p.isNull());
+ }
+}
+
+void tst_QObject::dumpObjectInfo()
+{
+ QObject a, b;
+ QObject::connect(&a, SIGNAL(destroyed(QObject *)), &b, SLOT(deleteLater()));
+ a.disconnect(&b);
+ a.dumpObjectInfo(); // should not crash
+}
+
+class ConnectToSender : public QObject
+{ Q_OBJECT
+ public slots:
+ void uselessSlot() { count++; }
+
+ void harmfullSlot() {
+ //this used to crash
+ connect(sender(), SIGNAL(signal4()), this, SLOT(uselessSlot()));
+ //play a little bit with the memory in order to really get a segfault.
+ connect(sender(), SIGNAL(signal1()), this, SLOT(uselessSlot()));
+ QList<double>() << 45 << 78 << 65 << 121 << 45 << 78 << 12;
+ }
+ public:
+ int count;
+};
+
+void tst_QObject::connectToSender()
+{
+ SenderObject s;
+ ConnectToSender r;
+ r.count = 0;
+ QObject::connect(&s, SIGNAL(signal1()), &r, SLOT(harmfullSlot()));
+ QObject::connect(&s, SIGNAL(signal1()), &r, SLOT(uselessSlot()));
+
+ s.emitSignal1();
+
+ QCOMPARE(r.count, 1);
+ s.emitSignal4();
+ QCOMPARE(r.count, 2);
+}
+
+void tst_QObject::qobjectConstCast()
+{
+ FooObject obj;
+
+ QObject *ptr = &obj;
+ const QObject *cptr = &obj;
+
+ QVERIFY(qobject_cast<FooObject *>(ptr));
+ QVERIFY(qobject_cast<const FooObject *>(cptr));
+}
+
+void tst_QObject::uniqConnection()
+{
+ SenderObject *s = new SenderObject;
+ ReceiverObject *r1 = new ReceiverObject;
+ ReceiverObject *r2 = new ReceiverObject;
+ r1->reset();
+ r2->reset();
+ ReceiverObject::sequence = 0;
+
+ QVERIFY( connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) , Qt::UniqueConnection) );
+ QVERIFY( connect( s, SIGNAL( signal1() ), r2, SLOT( slot1() ) , Qt::UniqueConnection) );
+ QVERIFY( connect( s, SIGNAL( signal1() ), r1, SLOT( slot3() ) , Qt::UniqueConnection) );
+ QVERIFY( connect( s, SIGNAL( signal3() ), r1, SLOT( slot3() ) , Qt::UniqueConnection) );
+
+ s->emitSignal1();
+ s->emitSignal2();
+ s->emitSignal3();
+ s->emitSignal4();
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 2 );
+ QCOMPARE( r1->count_slot4, 0 );
+ QCOMPARE( r2->count_slot1, 1 );
+ QCOMPARE( r2->count_slot2, 0 );
+ QCOMPARE( r2->count_slot3, 0 );
+ QCOMPARE( r2->count_slot4, 0 );
+ QCOMPARE( r1->sequence_slot1, 1 );
+ QCOMPARE( r2->sequence_slot1, 2 );
+ QCOMPARE( r1->sequence_slot3, 4 );
+
+ r1->reset();
+ r2->reset();
+ ReceiverObject::sequence = 0;
+
+ QVERIFY( connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) , Qt::UniqueConnection) );
+ QVERIFY( connect( s, SIGNAL( signal4() ), r2, SLOT( slot4() ) , Qt::UniqueConnection) );
+ QVERIFY(!connect( s, SIGNAL( signal4() ), r2, SLOT( slot4() ) , Qt::UniqueConnection) );
+ QVERIFY( connect( s, SIGNAL( signal1() ), r2, SLOT( slot4() ) , Qt::UniqueConnection) );
+ QVERIFY(!connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) , Qt::UniqueConnection) );
+
+ s->emitSignal4();
+ QCOMPARE( r1->count_slot4, 1 );
+ QCOMPARE( r2->count_slot4, 1 );
+ QCOMPARE( r1->sequence_slot4, 1 );
+ QCOMPARE( r2->sequence_slot4, 2 );
+
+ r1->reset();
+ r2->reset();
+ ReceiverObject::sequence = 0;
+
+ connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) );
+
+ s->emitSignal4();
+ QCOMPARE( r1->count_slot4, 2 );
+ QCOMPARE( r2->count_slot4, 1 );
+ QCOMPARE( r1->sequence_slot4, 3 );
+ QCOMPARE( r2->sequence_slot4, 2 );
+
+ delete s;
+ delete r1;
+ delete r2;
+}
+
+void tst_QObject::interfaceIid()
+{
+ QCOMPARE(QByteArray(qobject_interface_iid<Foo::Bleh *>()),
+ QByteArray(Bleh_iid));
+ QCOMPARE(QByteArray(qobject_interface_iid<Foo::Bar *>()),
+ QByteArray("com.qtest.foobar"));
+ QCOMPARE(QByteArray(qobject_interface_iid<FooObject *>()),
+ QByteArray());
+}
+
+void tst_QObject::deleteQObjectWhenDeletingEvent()
+{
+ //this is related to task 259514
+ //before the fix this used to dead lock when the QObject from the event was destroyed
+
+ struct MyEvent : public QEvent
+ {
+ MyEvent() : QEvent(QEvent::User) { }
+ QObject obj;
+ };
+
+ QObject o;
+ QApplication::postEvent(&o, new MyEvent);
+ QCoreApplication::removePostedEvents(&o); // here you would get a deadlock
+}
+
+class OverloadObject : public QObject
+{
+ friend class tst_QObject;
+ Q_OBJECT
+ signals:
+ void sig(int i, char c, qreal m = 12);
+ void sig(int i, int j = 12);
+ void sig(QObject *o, QObject *p, QObject *q = 0, QObject *r = 0) const;
+ void other(int a = 0);
+ void sig(QObject *o, OverloadObject *p = 0, QObject *q = 0, QObject *r = 0);
+ void sig(double r = 0.5);
+ public slots:
+ void slo(int i, int j = 43)
+ {
+ s_num += 1;
+ i1_num = i;
+ i2_num = j;
+ }
+ void slo(QObject *o, QObject *p = qApp, QObject *q = qApp, QObject *r = qApp)
+ {
+ s_num += 10;
+ o1_obj = o;
+ o2_obj = p;
+ o3_obj = q;
+ o4_obj = r;
+ }
+ void slo()
+ {
+ s_num += 100;
+ }
+
+ public:
+ int s_num;
+ int i1_num;
+ int i2_num;
+ QObject *o1_obj;
+ QObject *o2_obj;
+ QObject *o3_obj;
+ QObject *o4_obj;
+};
+
+void tst_QObject::overloads()
+{
+ OverloadObject obj1;
+ OverloadObject obj2;
+ QObject obj3;
+ obj1.s_num = 0;
+ obj2.s_num = 0;
+
+ connect (&obj1, SIGNAL(sig(int)) , &obj1, SLOT(slo(int)));
+ connect (&obj1, SIGNAL(sig(QObject *, QObject *, QObject *)) , &obj1, SLOT(slo(QObject * , QObject *, QObject *)));
+
+ connect (&obj1, SIGNAL(sig(QObject *, QObject *, QObject *, QObject *)) , &obj2, SLOT(slo(QObject * , QObject *, QObject *)));
+ connect (&obj1, SIGNAL(sig(QObject *)) , &obj2, SLOT(slo()));
+ connect (&obj1, SIGNAL(sig(int, int)) , &obj2, SLOT(slo(int, int)));
+
+ emit obj1.sig(0.5); //connected to nothing
+ emit obj1.sig(1, 'a'); //connected to nothing
+ QCOMPARE(obj1.s_num, 0);
+ QCOMPARE(obj2.s_num, 0);
+
+ emit obj1.sig(1); //this signal is connected
+ QCOMPARE(obj1.s_num, 1);
+ QCOMPARE(obj1.i1_num, 1);
+ QCOMPARE(obj1.i2_num, 43); //default argument of the slot
+
+ QCOMPARE(obj2.s_num, 1);
+ QCOMPARE(obj2.i1_num, 1);
+ QCOMPARE(obj2.i2_num, 12); //default argument of the signal
+
+
+ emit obj1.sig(&obj2); //this signal is conencted to obj2
+ QCOMPARE(obj1.s_num, 1);
+ QCOMPARE(obj2.s_num, 101);
+ emit obj1.sig(&obj2, &obj3); //this signal is connected
+ QCOMPARE(obj1.s_num, 11);
+ QCOMPARE(obj1.o1_obj, (QObject *)&obj2);
+ QCOMPARE(obj1.o2_obj, &obj3);
+ QCOMPARE(obj1.o3_obj, (QObject *)0); //default arg of the signal
+ QCOMPARE(obj1.o4_obj, (QObject *)qApp); //default arg of the slot
+
+ QCOMPARE(obj2.s_num, 111);
+ QCOMPARE(obj2.o1_obj, (QObject *)&obj2);
+ QCOMPARE(obj2.o2_obj, &obj3);
+ QCOMPARE(obj2.o3_obj, (QObject *)0); //default arg of the signal
+ QCOMPARE(obj2.o4_obj, (QObject *)qApp); //default arg of the slot
+}
+
+class ManySignals : public QObject
+{ Q_OBJECT
+ friend class tst_QObject;
+signals:
+ void sig00(); void sig01(); void sig02(); void sig03(); void sig04();
+ void sig05(); void sig06(); void sig07(); void sig08(); void sig09();
+ void sig10(); void sig11(); void sig12(); void sig13(); void sig14();
+ void sig15(); void sig16(); void sig17(); void sig18(); void sig19();
+ void sig20(); void sig21(); void sig22(); void sig23(); void sig24();
+ void sig25(); void sig26(); void sig27(); void sig28(); void sig29();
+ void sig30(); void sig31(); void sig32(); void sig33(); void sig34();
+ void sig35(); void sig36(); void sig37(); void sig38(); void sig39();
+ void sig40(); void sig41(); void sig42(); void sig43(); void sig44();
+ void sig45(); void sig46(); void sig47(); void sig48(); void sig49();
+ void sig50(); void sig51(); void sig52(); void sig53(); void sig54();
+ void sig55(); void sig56(); void sig57(); void sig58(); void sig59();
+ void sig60(); void sig61(); void sig62(); void sig63(); void sig64();
+ void sig65(); void sig66(); void sig67(); void sig68(); void sig69();
+
+public slots:
+ void received() { rec++; }
+public:
+ int rec;
+};
+
+
+void tst_QObject::isSignalConnected()
+{
+ ManySignals o;
+ o.rec = 0;
+#ifdef QT_BUILD_INTERNAL
+ QObjectPrivate *priv = QObjectPrivate::get(&o);
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("destroyed()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig00()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig05()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig15()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig29()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig60()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig61()")));
+#endif
+
+ QObject::connect(&o, SIGNAL(sig00()), &o, SIGNAL(sig69()));
+ QObject::connect(&o, SIGNAL(sig34()), &o, SIGNAL(sig03()));
+ QObject::connect(&o, SIGNAL(sig69()), &o, SIGNAL(sig34()));
+ QObject::connect(&o, SIGNAL(sig03()), &o, SIGNAL(sig18()));
+
+#ifdef QT_BUILD_INTERNAL
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("destroyed()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig05()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig15()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig29()")));
+
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig00()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig03()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig34()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig69()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig18()")));
+#endif
+
+ QObject::connect(&o, SIGNAL(sig18()), &o, SIGNAL(sig29()));
+ QObject::connect(&o, SIGNAL(sig29()), &o, SIGNAL(sig62()));
+ QObject::connect(&o, SIGNAL(sig62()), &o, SIGNAL(sig28()));
+ QObject::connect(&o, SIGNAL(sig28()), &o, SIGNAL(sig27()));
+
+#ifdef QT_BUILD_INTERNAL
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig18()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig62()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig28()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig69()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig27()")));
+#endif
+
+ QCOMPARE(o.rec, 0);
+ emit o.sig01();
+ emit o.sig34();
+ QCOMPARE(o.rec, 0);
+
+ QObject::connect(&o, SIGNAL(sig27()), &o, SLOT(received()));
+
+#ifdef QT_BUILD_INTERNAL
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig00()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig03()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig34()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig18()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig62()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig28()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig69()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig27()")));
+
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig04()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig21()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig25()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig55()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig61()")));
+#endif
+
+ emit o.sig00();
+ QCOMPARE(o.rec, 1);
+ emit o.sig69();
+ QCOMPARE(o.rec, 2);
+ emit o.sig36();
+ QCOMPARE(o.rec, 2);
+}
+
+void tst_QObject::qMetaObjectConnect()
+{
+ SenderObject *s = new SenderObject;
+ ReceiverObject *r1 = new ReceiverObject;
+ ReceiverObject *r2 = new ReceiverObject;
+ r1->reset();
+ r2->reset();
+ ReceiverObject::sequence = 0;
+
+ int signal1Index = s->metaObject()->indexOfSignal("signal1()");
+ int signal3Index = s->metaObject()->indexOfSignal("signal3()");
+ int slot1Index = r1->metaObject()->indexOfSlot("slot1()");
+ int slot2Index = r1->metaObject()->indexOfSlot("slot2()");
+ int slot3Index = r1->metaObject()->indexOfSlot("slot3()");
+
+ QVERIFY(slot1Index > 0);
+ QVERIFY(slot2Index > 0);
+ QVERIFY(slot3Index > 0);
+
+ QVERIFY( QMetaObject::connect( s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::connect( s, signal3Index, r2, slot3Index) );
+ QVERIFY( QMetaObject::connect( s, -1, r2, slot2Index) );
+
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 0 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 0 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ s->emitSignal1();
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 0 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 1 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ s->emitSignal2();
+ s->emitSignal3();
+ s->emitSignal4();
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 0 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 4 );
+ QCOMPARE( r2->count_slot3, 1 );
+
+ QVERIFY( QMetaObject::disconnect( s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::disconnect( s, signal3Index, r2, slot3Index) );
+ QVERIFY( QMetaObject::disconnect( s, -1, r2, slot2Index) );
+
+ s->emitSignal1();
+ s->emitSignal2();
+ s->emitSignal3();
+ s->emitSignal4();
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 0 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 4 );
+ QCOMPARE( r2->count_slot3, 1 );
+
+ //some "dynamic" signal
+ QVERIFY( QMetaObject::connect( s, s->metaObject()->methodOffset() + 20, r1, slot3Index) );
+ QVERIFY( QMetaObject::connect( s, s->metaObject()->methodOffset() + 35, r2, slot1Index) );
+ QVERIFY( QMetaObject::connect( s, -1, r1, slot2Index) );
+
+ r1->reset();
+ r2->reset();
+
+ void *args[] = { 0 , 0 };
+ QMetaObject::activate(s, s->metaObject()->methodOffset() + 20, args);
+ QMetaObject::activate(s, s->metaObject()->methodOffset() + 48, args);
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 2 );
+ QCOMPARE( r1->count_slot3, 1 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 0 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ QMetaObject::activate(s, s->metaObject()->methodOffset() + 35, args);
+ s->emitSignal1();
+ s->emitSignal2();
+
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 5 );
+ QCOMPARE( r1->count_slot3, 1 );
+ QCOMPARE( r2->count_slot1, 1 );
+ QCOMPARE( r2->count_slot2, 0 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ delete s;
+ r1->reset();
+ r2->reset();
+
+#define SIGNAL_INDEX(S) obj1.metaObject()->indexOfSignal(QMetaObject::normalizedSignature(#S))
+ OverloadObject obj1;
+ QObject obj2, obj3;
+
+ QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(int)) , r1, slot1Index);
+ QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(QObject *, QObject *, QObject *)) , r2, slot1Index);
+
+ QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(QObject *, QObject *, QObject *, QObject *)) , r1, slot2Index);
+ QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(QObject *)) , r2, slot2Index);
+ QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(int, int)) , r1, slot3Index);
+
+ emit obj1.sig(0.5); //connected to nothing
+ emit obj1.sig(1, 'a'); //connected to nothing
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 0 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 0 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ emit obj1.sig(1); //this signal is connected
+ emit obj1.sig(&obj2);
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 1 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 1 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ emit obj1.sig(&obj2, &obj3); //this signal is connected
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 1 );
+ QCOMPARE( r1->count_slot3, 1 );
+ QCOMPARE( r2->count_slot1, 1 );
+ QCOMPARE( r2->count_slot2, 1 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ delete r1;
+ delete r2;
+
+}
+
+void tst_QObject::qMetaObjectDisconnectOne()
+{
+ SenderObject *s = new SenderObject;
+ ReceiverObject *r1 = new ReceiverObject;
+
+ int signal1Index = s->metaObject()->indexOfSignal("signal1()");
+ int signal3Index = s->metaObject()->indexOfSignal("signal3()");
+ int slot1Index = r1->metaObject()->indexOfSlot("slot1()");
+ int slot2Index = r1->metaObject()->indexOfSlot("slot2()");
+
+ QVERIFY(signal1Index > 0);
+ QVERIFY(signal3Index > 0);
+ QVERIFY(slot1Index > 0);
+ QVERIFY(slot2Index > 0);
+
+ QVERIFY( QMetaObject::connect(s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::connect(s, signal3Index, r1, slot2Index) );
+ QVERIFY( QMetaObject::connect(s, signal3Index, r1, slot2Index) );
+ QVERIFY( QMetaObject::connect(s, signal3Index, r1, slot2Index) );
+
+ r1->reset();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ s->emitSignal1();
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ s->emitSignal3();
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 3 );
+
+ r1->reset();
+ QVERIFY( QMetaObject::disconnectOne(s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::disconnectOne(s, signal3Index, r1, slot2Index) );
+
+ s->emitSignal1();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ s->emitSignal3();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 2 );
+
+ r1->reset();
+ QVERIFY( false == QMetaObject::disconnectOne(s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::disconnectOne(s, signal3Index, r1, slot2Index) );
+
+ s->emitSignal1();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ s->emitSignal3();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 1 );
+
+ r1->reset();
+ QVERIFY( false == QMetaObject::disconnectOne(s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::disconnectOne(s, signal3Index, r1, slot2Index) );
+
+ s->emitSignal1();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ s->emitSignal3();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ delete s;
+ delete r1;
+}
+
+class ConfusingObject : public SenderObject
+{ Q_OBJECT
+public slots:
+ void signal1() { s++; }
+signals:
+ void aPublicSlot();
+public:
+ int s;
+ ConfusingObject() : s(0) {}
+ friend class tst_QObject;
+};
+
+void tst_QObject::sameName()
+{
+ ConfusingObject c1, c2;
+ QVERIFY(connect(&c1, SIGNAL(signal1()), &c1, SLOT(signal1())));
+ c1.emitSignal1();
+ QCOMPARE(c1.s, 1);
+
+ QVERIFY(connect(&c2, SIGNAL(signal1()), &c1, SIGNAL(signal1())));
+ c2.emitSignal1();
+ QCOMPARE(c1.s, 2);
+
+ QVERIFY(connect(&c2, SIGNAL(aPublicSlot()), &c1, SLOT(signal1())));
+ c2.aPublicSlot();
+ QCOMPARE(c2.aPublicSlotCalled, 0);
+ QCOMPARE(c1.aPublicSlotCalled, 0);
+ QCOMPARE(c1.s, 3);
+
+ QVERIFY(connect(&c2, SIGNAL(aPublicSlot()), &c1, SLOT(aPublicSlot())));
+ c2.aPublicSlot();
+ QCOMPARE(c2.aPublicSlotCalled, 0);
+ QCOMPARE(c1.aPublicSlotCalled, 1);
+ QCOMPARE(c1.s, 4);
+}
+
+void tst_QObject::connectByMetaMethods()
+{
+ SenderObject s;
+ ReceiverObject r;
+ const QMetaObject *smeta = s.metaObject();
+ const QMetaObject *rmeta = r.metaObject();
+ int sigIndx = smeta->indexOfSignal(QMetaObject::normalizedSignature("signal1()"));
+ int slotIndx = rmeta->indexOfSlot(QMetaObject::normalizedSignature("slot1()"));
+ QVERIFY( sigIndx != -1 );
+ QVERIFY( slotIndx != -1 );
+ QMetaMethod signal = smeta->method(sigIndx);
+ QMetaMethod slot = rmeta->method(slotIndx);
+
+ QVERIFY(connect(&s,signal, &r,slot));
+
+ QVERIFY(!r.called(1));
+ s.emitSignal1();
+ QVERIFY(r.called(1));
+}
+
+void tst_QObject::connectByMetaMethodSlotInsteadOfSignal()
+{
+ SenderObject s;
+ ReceiverObject r;
+ const QMetaObject *smeta = s.metaObject();
+ const QMetaObject *rmeta = r.metaObject();
+ int badIndx = smeta->indexOfSlot(QMetaObject::normalizedSignature("aPublicSlot()"));
+ int slotIndx = rmeta->indexOfSlot(QMetaObject::normalizedSignature("slot1()"));
+ QVERIFY( badIndx != -1 );
+ QVERIFY( slotIndx != -1 );
+ QMetaMethod badMethod = smeta->method(badIndx);
+ QMetaMethod slot = rmeta->method(slotIndx);
+
+ QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect SenderObject::aPublicSlot() to ReceiverObject::slot1()");
+ QVERIFY(!connect(&s,badMethod, &r,slot));
+}
+
+class Constructable: public QObject
+{
+ Q_OBJECT
+
+public:
+ Q_INVOKABLE Constructable(){}
+
+};
+
+void tst_QObject::connectConstructorByMetaMethod()
+{
+ Constructable sc;
+ Constructable rc;
+ SenderObject s;
+ ReceiverObject r;
+
+ const QMetaObject cmeta = Constructable::staticMetaObject;
+ const QMetaObject *smeta = s.metaObject();
+ const QMetaObject *rmeta = r.metaObject();
+ int constructorIndx = cmeta.indexOfConstructor(QMetaObject::normalizedSignature("Constructable()"));
+ int sigIndx = smeta->indexOfSignal(QMetaObject::normalizedSignature("signal1()"));
+ int slotIndx = rmeta->indexOfSlot(QMetaObject::normalizedSignature("slot1()"));
+ QVERIFY( constructorIndx != -1 );
+ QVERIFY( sigIndx != -1 );
+ QVERIFY( slotIndx != -1 );
+
+ QMetaMethod constructor = cmeta.constructor(constructorIndx);
+ QMetaMethod signal = smeta->method(sigIndx);
+ QMetaMethod slot = rmeta->method(slotIndx);
+
+ QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect Constructable::Constructable() to ReceiverObject::slot1()");
+ QVERIFY(!connect(&sc,constructor, &r,slot));
+ QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect SenderObject::signal1() to Constructable::Constructable()");
+ QVERIFY(!connect(&s,signal, &rc,constructor));
+ QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect Constructable::Constructable() to Constructable::Constructable()");
+ QVERIFY(!connect(&sc,constructor, &rc,constructor));
+}
+
+void tst_QObject::disconnectByMetaMethod()
+{
+ SenderObject *s = new SenderObject;
+ ReceiverObject *r1 = new ReceiverObject;
+ ReceiverObject *r2 = new ReceiverObject;
+
+ QMetaMethod signal1 = s->metaObject()->method(
+ s->metaObject()->indexOfMethod("signal1()"));
+ QMetaMethod signal2 = s->metaObject()->method(
+ s->metaObject()->indexOfMethod("signal2()"));
+ QMetaMethod signal3 = s->metaObject()->method(
+ s->metaObject()->indexOfMethod("signal3()"));
+ QMetaMethod signal4 = s->metaObject()->method(
+ s->metaObject()->indexOfMethod("signal4()"));
+
+ QMetaMethod slot1 = r1->metaObject()->method(
+ r1->metaObject()->indexOfMethod("slot1()"));
+ QMetaMethod slot2 = r1->metaObject()->method(
+ r1->metaObject()->indexOfMethod("slot2()"));
+ QMetaMethod slot3 = r1->metaObject()->method(
+ r1->metaObject()->indexOfMethod("slot3()"));
+ QMetaMethod slot4 = r1->metaObject()->method(
+ r1->metaObject()->indexOfMethod("slot4()"));
+
+ connect(s, signal1, r1, slot1);
+
+ s->emitSignal1();
+
+ QVERIFY(r1->called(1));
+ r1->reset();
+
+ // usual disconnect with all parameters given
+ bool ret = QObject::disconnect(s, signal1, r1, slot1);
+
+ s->emitSignal1();
+
+ QVERIFY(!r1->called(1));
+ r1->reset();
+
+ QVERIFY(ret);
+ ret = QObject::disconnect(s, signal1, r1, slot1);
+ QVERIFY(!ret);
+
+ r1->reset();
+
+ connect( s, signal1, r1, slot1 );
+ connect( s, signal1, r1, slot2 );
+ connect( s, signal1, r1, slot3 );
+ connect( s, signal2, r1, slot4 );
+
+ // disconnect s's signal1() from all slots of r1
+ QObject::disconnect(s, signal1, r1, QMetaMethod());
+
+ s->emitSignal1();
+ s->emitSignal2();
+
+ QVERIFY(!r1->called(1));
+ QVERIFY(!r1->called(2));
+ QVERIFY(!r1->called(3));
+ QVERIFY(r1->called(4));
+ r1->reset();
+ // make sure all is disconnected again
+ QObject::disconnect(s, 0, r1, 0);
+
+ connect(s, signal1, r1, slot1);
+ connect(s, signal1, r2, slot1);
+ connect(s, signal2, r1, slot2);
+ connect(s, signal2, r2, slot2);
+ connect(s, signal3, r1, slot3);
+ connect(s, signal3, r2, slot3);
+
+ // disconnect signal1() from all receivers
+ QObject::disconnect(s, signal1, 0, QMetaMethod());
+ s->emitSignal1();
+ s->emitSignal2();
+ s->emitSignal3();
+
+ QVERIFY(!r1->called(1));
+ QVERIFY(!r2->called(1));
+ QVERIFY(r1->called(2));
+ QVERIFY(r2->called(2));
+ QVERIFY(r1->called(2));
+ QVERIFY(r2->called(2));
+
+ r1->reset();
+ r2->reset();
+
+ // disconnect all signals of s from all receivers
+ QObject::disconnect( s, 0, 0, 0 );
+
+ connect( s, signal1, r1, slot1 );
+ connect( s, signal1, r2, slot1 );
+
+ // disconnect all signals from slot1 of r1
+ QObject::disconnect(s, QMetaMethod(), r1, slot1);
+
+ s->emitSignal1();
+
+ QVERIFY(!r1->called(1));
+ QVERIFY(r2->called(1));
+
+ delete r2;
+ delete r1;
+ delete s;
+}
+
+void tst_QObject::disconnectNotSignalMetaMethod()
+{
+ SenderObject s;
+ ReceiverObject r;
+
+ connect(&s, SIGNAL(signal1()), &r, SLOT(slot1()));
+
+ QMetaMethod slot = s.metaObject()->method(
+ s.metaObject()->indexOfMethod("aPublicSlot()"));
+
+ QTest::ignoreMessage(QtWarningMsg,"Object::disconnect: Attempt to unbind non-signal SenderObject::aPublicSlot()");
+ QVERIFY(!QObject::disconnect(&s, slot, &r, QMetaMethod()));
+}
+
+class ThreadAffinityThread : public QThread
+{
+public:
+ SenderObject *sender;
+
+ ThreadAffinityThread(SenderObject *sender)
+ : sender(sender)
+ { }
+ void run()
+ {
+ sender->emitSignal1();
+ }
+};
+
+void tst_QObject::autoConnectionBehavior()
+{
+ SenderObject *sender = new SenderObject;
+ ReceiverObject *receiver = new ReceiverObject;
+ connect(sender, SIGNAL(signal1()), receiver, SLOT(slot1()));
+
+ // at emit, currentThread == sender->thread(), currentThread == receiver->thread(), sender->thread() == receiver->thread()
+ QVERIFY(!receiver->called(1));
+ sender->emitSignal1();
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread != receiver->thread(), sender->thread() == receiver->thread()
+ ThreadAffinityThread emitThread1(sender);
+ QVERIFY(!receiver->called(1));
+ emitThread1.start();
+ QVERIFY(emitThread1.wait(30000));
+ QVERIFY(!receiver->called(1));
+ QCoreApplication::sendPostedEvents(receiver, QEvent::MetaCall);
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread == sender->thread(), currentThread != receiver->thread(), sender->thread() != receiver->thread()
+ sender->moveToThread(&emitThread1);
+ QVERIFY(!receiver->called(1));
+ emitThread1.start();
+ QVERIFY(emitThread1.wait(30000));
+ QVERIFY(!receiver->called(1));
+ QCoreApplication::sendPostedEvents(receiver, QEvent::MetaCall);
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread == receiver->thread(), sender->thread() != receiver->thread()
+ QVERIFY(!receiver->called(1));
+ sender->emitSignal1();
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread != receiver->thread(), sender->thread() != receiver->thread()
+ ThreadAffinityThread emitThread2(sender);
+ QThread receiverThread;
+ QTimer *timer = new QTimer;
+ timer->setSingleShot(true);
+ timer->setInterval(100);
+ connect(&receiverThread, SIGNAL(started()), timer, SLOT(start()));
+ connect(timer, SIGNAL(timeout()), &receiverThread, SLOT(quit()), Qt::DirectConnection);
+ connect(&receiverThread, SIGNAL(finished()), timer, SLOT(deleteLater()));
+ timer->moveToThread(&receiverThread);
+
+ receiver->moveToThread(&receiverThread);
+ QVERIFY(!receiver->called(1));
+ emitThread2.start();
+ QVERIFY(emitThread2.wait(30000));
+ QVERIFY(!receiver->called(1));
+ receiverThread.start();
+ QVERIFY(receiverThread.wait(30000));
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ delete sender;
+ delete receiver;
+}
+
+class BaseDestroyed : public QObject
+{ Q_OBJECT
+ QList<QString> fooList;
+ bool destroyed;
+public:
+ BaseDestroyed() : destroyed(false)
+ { fooList << "a" << "b"; }
+ ~BaseDestroyed()
+ {
+ QVERIFY(!destroyed);
+ destroyed = true;
+ }
+
+public slots:
+ void slotUseList()
+ {
+ QVERIFY(!destroyed);
+ fooList << "c" << "d";
+ }
+};
+
+void tst_QObject::baseDestroyed()
+{
+ BaseDestroyed d;
+ connect(&d, SIGNAL(destroyed()), &d, SLOT(slotUseList()));
+ //When d goes out of scope, slotUseList should not be called as the BaseDestroyed has
+ // already been destroyed while ~QObject emit destroyed
+}
+
+QTEST_MAIN(tst_QObject)
+#include "tst_qobject.moc"
diff --git a/tests/auto/qobject/tst_qobject.pro b/tests/auto/corelib/kernel/qobject/tst_qobject.pro
index 29de071328..29de071328 100644
--- a/tests/auto/qobject/tst_qobject.pro
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.pro
diff --git a/tests/auto/qpointer/.gitignore b/tests/auto/corelib/kernel/qpointer/.gitignore
index ce97ab782d..ce97ab782d 100644
--- a/tests/auto/qpointer/.gitignore
+++ b/tests/auto/corelib/kernel/qpointer/.gitignore
diff --git a/tests/auto/corelib/kernel/qpointer/qpointer.pro b/tests/auto/corelib/kernel/qpointer/qpointer.pro
new file mode 100644
index 0000000000..5728b7bb4f
--- /dev/null
+++ b/tests/auto/corelib/kernel/qpointer/qpointer.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qpointer.cpp
+
+
diff --git a/tests/auto/qpointer/tst_qpointer.cpp b/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp
index fed98ec86a..fed98ec86a 100644
--- a/tests/auto/qpointer/tst_qpointer.cpp
+++ b/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp
diff --git a/tests/auto/qsignalmapper/.gitignore b/tests/auto/corelib/kernel/qsignalmapper/.gitignore
index 33fab268da..33fab268da 100644
--- a/tests/auto/qsignalmapper/.gitignore
+++ b/tests/auto/corelib/kernel/qsignalmapper/.gitignore
diff --git a/tests/auto/corelib/kernel/qsignalmapper/qsignalmapper.pro b/tests/auto/corelib/kernel/qsignalmapper/qsignalmapper.pro
new file mode 100644
index 0000000000..5af4b70c63
--- /dev/null
+++ b/tests/auto/corelib/kernel/qsignalmapper/qsignalmapper.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qsignalmapper.cpp
+
+
+
diff --git a/tests/auto/qsignalmapper/tst_qsignalmapper.cpp b/tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp
index a4dc123778..a4dc123778 100644
--- a/tests/auto/qsignalmapper/tst_qsignalmapper.cpp
+++ b/tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp
diff --git a/tests/auto/qsocketnotifier/.gitignore b/tests/auto/corelib/kernel/qsocketnotifier/.gitignore
index 2e1568660c..2e1568660c 100644
--- a/tests/auto/qsocketnotifier/.gitignore
+++ b/tests/auto/corelib/kernel/qsocketnotifier/.gitignore
diff --git a/tests/auto/corelib/kernel/qsocketnotifier/qsocketnotifier.pro b/tests/auto/corelib/kernel/qsocketnotifier/qsocketnotifier.pro
new file mode 100644
index 0000000000..0768c69caa
--- /dev/null
+++ b/tests/auto/corelib/kernel/qsocketnotifier/qsocketnotifier.pro
@@ -0,0 +1,11 @@
+load(qttest_p4)
+SOURCES += tst_qsocketnotifier.cpp
+QT = core-private network-private
+
+requires(contains(QT_CONFIG,private_tests))
+
+include(../platformsocketengine/platformsocketengine.pri)
+
+symbian: TARGET.CAPABILITY = NetworkServices
+
+CONFIG += insignificant_test # QTBUG-21204
diff --git a/tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp b/tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp
new file mode 100644
index 0000000000..2c3a6c52bf
--- /dev/null
+++ b/tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp
@@ -0,0 +1,367 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QTest>
+#include <QtTest/QSignalSpy>
+#include <QtTest/QTestEventLoop>
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QTimer>
+#include <QtCore/QSocketNotifier>
+#include <QtNetwork/QTcpServer>
+#include <QtNetwork/QTcpSocket>
+#ifdef Q_OS_SYMBIAN
+#include <private/qsymbiansocketengine_p.h>
+#define NATIVESOCKETENGINE QSymbianSocketEngine
+#else
+#include <private/qnativesocketengine_p.h>
+#define NATIVESOCKETENGINE QNativeSocketEngine
+#endif
+#ifdef Q_OS_UNIX
+#include <private/qnet_unix_p.h>
+#include <sys/select.h>
+#endif
+#include <limits>
+
+#if defined (Q_CC_MSVC) && defined(max)
+# undef max
+# undef min
+#endif // Q_CC_MSVC
+
+class tst_QSocketNotifier : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QSocketNotifier();
+ ~tst_QSocketNotifier();
+
+private slots:
+ void unexpectedDisconnection();
+ void mixingWithTimers();
+ void posixSockets();
+ void bogusFds();
+};
+
+tst_QSocketNotifier::tst_QSocketNotifier()
+{ }
+
+tst_QSocketNotifier::~tst_QSocketNotifier()
+{
+}
+
+class UnexpectedDisconnectTester : public QObject
+{
+ Q_OBJECT
+public:
+ NATIVESOCKETENGINE *readEnd1, *readEnd2;
+ int sequence;
+
+ UnexpectedDisconnectTester(NATIVESOCKETENGINE *s1, NATIVESOCKETENGINE *s2)
+ : readEnd1(s1), readEnd2(s2), sequence(0)
+ {
+ QSocketNotifier *notifier1 =
+ new QSocketNotifier(readEnd1->socketDescriptor(), QSocketNotifier::Read, this);
+ connect(notifier1, SIGNAL(activated(int)), SLOT(handleActivated()));
+ QSocketNotifier *notifier2 =
+ new QSocketNotifier(readEnd2->socketDescriptor(), QSocketNotifier::Read, this);
+ connect(notifier2, SIGNAL(activated(int)), SLOT(handleActivated()));
+ }
+
+public slots:
+ void handleActivated()
+ {
+ char data1[1], data2[1];
+ ++sequence;
+ if (sequence == 1) {
+ // read from both ends
+ (void) readEnd1->read(data1, sizeof(data1));
+ (void) readEnd2->read(data2, sizeof(data2));
+ emit finished();
+ } else if (sequence == 2) {
+ // we should never get here
+ QCOMPARE(readEnd2->read(data2, sizeof(data2)), qint64(-2));
+ QVERIFY(readEnd2->isValid());
+ }
+ }
+
+signals:
+ void finished();
+};
+
+void tst_QSocketNotifier::unexpectedDisconnection()
+{
+#ifdef Q_OS_SYMBIAN
+ QSKIP("Symbian socket engine pseudo descriptors can't be used for QSocketNotifier", SkipAll);
+#else
+ /*
+ Given two sockets and two QSocketNotifiers registered on each
+ their socket. If both sockets receive data, and the first slot
+ invoked by one of the socket notifiers empties both sockets, the
+ other notifier will also emit activated(). This results in
+ unexpected disconnection in QAbstractSocket.
+
+ The use case is that somebody calls one of the
+ waitFor... functions in a QSocketNotifier activated slot, and
+ the waitFor... functions do local selects that can empty both
+ stdin and stderr while waiting for fex bytes to be written.
+ */
+
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost, 0));
+
+ NATIVESOCKETENGINE readEnd1;
+ readEnd1.initialize(QAbstractSocket::TcpSocket);
+ bool b = readEnd1.connectToHost(server.serverAddress(), server.serverPort());
+ QVERIFY(readEnd1.waitForWrite());
+// while (!b && readEnd1.state() != QAbstractSocket::ConnectedState)
+// b = readEnd1.connectToHost(server.serverAddress(), server.serverPort());
+ QVERIFY(readEnd1.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(server.waitForNewConnection());
+ QTcpSocket *writeEnd1 = server.nextPendingConnection();
+ QVERIFY(writeEnd1 != 0);
+
+ NATIVESOCKETENGINE readEnd2;
+ readEnd2.initialize(QAbstractSocket::TcpSocket);
+ b = readEnd2.connectToHost(server.serverAddress(), server.serverPort());
+ QVERIFY(readEnd2.waitForWrite());
+// while (!b)
+// b = readEnd2.connectToHost(server.serverAddress(), server.serverPort());
+ QVERIFY(readEnd2.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(server.waitForNewConnection());
+ QTcpSocket *writeEnd2 = server.nextPendingConnection();
+ QVERIFY(writeEnd2 != 0);
+
+ writeEnd1->write("1", 1);
+ writeEnd2->write("2", 1);
+
+ writeEnd1->waitForBytesWritten();
+ writeEnd2->waitForBytesWritten();
+
+ writeEnd1->flush();
+ writeEnd2->flush();
+
+ UnexpectedDisconnectTester tester(&readEnd1, &readEnd2);
+
+ QTimer timer;
+ timer.setSingleShot(true);
+ timer.start(30000);
+ do {
+ // we have to wait until sequence value changes
+ // as any event can make us jump out processing
+ QCoreApplication::processEvents(QEventLoop::WaitForMoreEvents);
+ QVERIFY(timer.isActive()); //escape if test would hang
+ } while(tester.sequence <= 0);
+
+ QVERIFY(readEnd1.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(readEnd2.state() == QAbstractSocket::ConnectedState);
+
+ QCOMPARE(tester.sequence, 2);
+
+ readEnd1.close();
+ readEnd2.close();
+ writeEnd1->close();
+ writeEnd2->close();
+ server.close();
+#endif
+}
+
+class MixingWithTimersHelper : public QObject
+{
+ Q_OBJECT
+
+public:
+ MixingWithTimersHelper(QTimer *timer, QTcpServer *server);
+
+ bool timerActivated;
+ bool socketActivated;
+
+private slots:
+ void timerFired();
+ void socketFired();
+};
+
+MixingWithTimersHelper::MixingWithTimersHelper(QTimer *timer, QTcpServer *server)
+{
+ timerActivated = false;
+ socketActivated = false;
+
+ connect(timer, SIGNAL(timeout()), SLOT(timerFired()));
+ connect(server, SIGNAL(newConnection()), SLOT(socketFired()));
+}
+
+void MixingWithTimersHelper::timerFired()
+{
+ timerActivated = true;
+}
+
+void MixingWithTimersHelper::socketFired()
+{
+ socketActivated = true;
+}
+
+void tst_QSocketNotifier::mixingWithTimers()
+{
+ QTimer timer;
+ timer.setInterval(0);
+ timer.start();
+
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost, 0));
+
+ MixingWithTimersHelper helper(&timer, &server);
+
+ QCoreApplication::processEvents();
+
+ QCOMPARE(helper.timerActivated, true);
+ QCOMPARE(helper.socketActivated, false);
+
+ helper.timerActivated = false;
+ helper.socketActivated = false;
+
+ QTcpSocket socket;
+ socket.connectToHost(server.serverAddress(), server.serverPort());
+
+ QCoreApplication::processEvents();
+
+ QCOMPARE(helper.timerActivated, true);
+ QCOMPARE(helper.socketActivated, true);
+}
+
+void tst_QSocketNotifier::posixSockets()
+{
+#ifndef Q_OS_UNIX
+ QSKIP("test only for posix", SkipAll);
+#else
+
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost, 0));
+
+ int posixSocket = qt_safe_socket(AF_INET, SOCK_STREAM, 0);
+ sockaddr_in addr;
+ addr.sin_addr.s_addr = htonl(0x7f000001);
+ addr.sin_family = AF_INET;
+ addr.sin_port = htons(server.serverPort());
+ qt_safe_connect(posixSocket, (const struct sockaddr*)&addr, sizeof(sockaddr_in));
+ QVERIFY(server.waitForNewConnection(5000));
+ QScopedPointer<QTcpSocket> passive(server.nextPendingConnection());
+
+ ::fcntl(posixSocket, F_SETFL, ::fcntl(posixSocket, F_GETFL) | O_NONBLOCK);
+
+ {
+ QSocketNotifier rn(posixSocket, QSocketNotifier::Read);
+ connect(&rn, SIGNAL(activated(int)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QSignalSpy readSpy(&rn, SIGNAL(activated(int)));
+ QSocketNotifier wn(posixSocket, QSocketNotifier::Write);
+ connect(&wn, SIGNAL(activated(int)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QSignalSpy writeSpy(&wn, SIGNAL(activated(int)));
+ QSocketNotifier en(posixSocket, QSocketNotifier::Exception);
+ connect(&en, SIGNAL(activated(int)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QSignalSpy errorSpy(&en, SIGNAL(activated(int)));
+
+ passive->write("hello",6);
+ passive->waitForBytesWritten(5000);
+
+ QTestEventLoop::instance().enterLoop(3);
+ QCOMPARE(readSpy.count(), 1);
+ QEXPECT_FAIL("", "QTBUG-20982 fails", Abort);
+ QCOMPARE(writeSpy.count(), 0);
+ QCOMPARE(errorSpy.count(), 0);
+
+ char buffer[100];
+ qt_safe_read(posixSocket, buffer, 100);
+ QCOMPARE(buffer, "hello");
+
+ qt_safe_write(posixSocket, "goodbye", 8);
+
+ QTestEventLoop::instance().enterLoop(3);
+ QCOMPARE(readSpy.count(), 1);
+ QCOMPARE(writeSpy.count(), 1);
+ QCOMPARE(errorSpy.count(), 0);
+ QCOMPARE(passive->readAll(), QByteArray("goodbye",8));
+ }
+ qt_safe_close(posixSocket);
+#endif
+}
+
+void tst_QSocketNotifier::bogusFds()
+{
+#ifndef Q_OS_WIN
+ QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Internal error");
+#endif
+ QSocketNotifier max(std::numeric_limits<int>::max(), QSocketNotifier::Read);
+ QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Invalid socket specified");
+#ifndef Q_OS_WIN
+ // FIXME QTBUG-20982: this fails, and ignoreMessage can't be skipped or QEXPECT_FAILed
+ // QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Internal error");
+#endif
+ QSocketNotifier min(std::numeric_limits<int>::min(), QSocketNotifier::Write);
+#ifndef Q_OS_WIN
+ // FIXME QTBUG-20982: this fails, and ignoreMessage can't be skipped or QEXPECT_FAILed
+ // QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Internal error");
+#endif
+ //bogus magic number is the first pseudo socket descriptor from symbian socket engine.
+ QSocketNotifier bogus(0x40000000, QSocketNotifier::Exception);
+ QSocketNotifier largestlegal(FD_SETSIZE - 1, QSocketNotifier::Read);
+
+ QSignalSpy maxspy(&max, SIGNAL(activated(int)));
+ QSignalSpy minspy(&min, SIGNAL(activated(int)));
+ QSignalSpy bogspy(&bogus, SIGNAL(activated(int)));
+ QSignalSpy llspy(&largestlegal, SIGNAL(activated(int)));
+
+ //generate some unrelated socket activity
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+ connect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTcpSocket client;
+ client.connectToHost(QHostAddress::LocalHost, server.serverPort());
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(server.hasPendingConnections());
+
+ //check no activity on bogus notifiers
+ QCOMPARE(maxspy.count(), 0);
+ QCOMPARE(minspy.count(), 0);
+ QCOMPARE(bogspy.count(), 0);
+ QCOMPARE(llspy.count(), 0);
+}
+
+QTEST_MAIN(tst_QSocketNotifier)
+#include <tst_qsocketnotifier.moc>
diff --git a/tests/auto/qtimer/.gitignore b/tests/auto/corelib/kernel/qtimer/.gitignore
index 14fd00629e..14fd00629e 100644
--- a/tests/auto/qtimer/.gitignore
+++ b/tests/auto/corelib/kernel/qtimer/.gitignore
diff --git a/tests/auto/qtimer/qtimer.pro b/tests/auto/corelib/kernel/qtimer/qtimer.pro
index 086df1dd18..086df1dd18 100644
--- a/tests/auto/qtimer/qtimer.pro
+++ b/tests/auto/corelib/kernel/qtimer/qtimer.pro
diff --git a/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
new file mode 100644
index 0000000000..a8ac799d73
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
@@ -0,0 +1,794 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+
+#include <qtimer.h>
+#include <qthread.h>
+
+#if defined Q_OS_UNIX
+#include <unistd.h>
+#endif
+
+#include "../../../../shared/util.h"
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QTimer : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QTimer();
+ virtual ~tst_QTimer();
+
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void zeroTimer();
+ void singleShotTimeout();
+ void timeout();
+ void livelock_data();
+ void livelock();
+ void timerInfiniteRecursion_data();
+ void timerInfiniteRecursion();
+ void recurringTimer_data();
+ void recurringTimer();
+ void deleteLaterOnQTimer(); // long name, don't want to shadow QObject::deleteLater()
+ void moveToThread();
+ void restartedTimerFiresTooSoon();
+ void timerFiresOnlyOncePerProcessEvents_data();
+ void timerFiresOnlyOncePerProcessEvents();
+ void timerIdPersistsAfterThreadExit();
+ void cancelLongTimer();
+ void singleShotStaticFunctionZeroTimeout();
+ void recurseOnTimeoutAndStopTimer();
+
+ void QTBUG13633_dontBlockEvents();
+ void postedEventsShouldNotStarveTimers();
+#ifdef Q_OS_SYMBIAN
+ void handleLeaks();
+#endif
+};
+
+class TimerHelper : public QObject
+{
+ Q_OBJECT
+public:
+ TimerHelper() : QObject(), count(0)
+ {
+ }
+
+ int count;
+
+public slots:
+ void timeout();
+};
+
+void TimerHelper::timeout()
+{
+ ++count;
+}
+
+tst_QTimer::tst_QTimer()
+{
+}
+
+tst_QTimer::~tst_QTimer()
+{
+}
+
+void tst_QTimer::initTestCase()
+{
+}
+
+void tst_QTimer::cleanupTestCase()
+{
+}
+
+void tst_QTimer::init()
+{
+}
+
+void tst_QTimer::cleanup()
+{
+}
+
+void tst_QTimer::zeroTimer()
+{
+ TimerHelper helper;
+ QTimer timer;
+ timer.setInterval(0);
+ timer.start();
+
+ connect(&timer, SIGNAL(timeout()), &helper, SLOT(timeout()));
+
+ QCoreApplication::processEvents();
+
+ QCOMPARE(helper.count, 1);
+}
+
+void tst_QTimer::singleShotTimeout()
+{
+ TimerHelper helper;
+ QTimer timer;
+ timer.setSingleShot(true);
+
+ connect(&timer, SIGNAL(timeout()), &helper, SLOT(timeout()));
+ timer.start(100);
+
+ QTest::qWait(500);
+ QCOMPARE(helper.count, 1);
+ QTest::qWait(500);
+ QCOMPARE(helper.count, 1);
+}
+
+#if defined(Q_OS_SYMBIAN)
+// Increase wait as emulator startup can cause unexpected delays, and
+// on hardware there are sometimes spikes right after process startup.
+#define TIMEOUT_TIMEOUT 2000
+#else
+#define TIMEOUT_TIMEOUT 200
+#endif
+
+void tst_QTimer::timeout()
+{
+ TimerHelper helper;
+ QTimer timer;
+
+ connect(&timer, SIGNAL(timeout()), &helper, SLOT(timeout()));
+ timer.start(100);
+
+ QCOMPARE(helper.count, 0);
+
+ QTest::qWait(TIMEOUT_TIMEOUT);
+ QVERIFY(helper.count > 0);
+ int oldCount = helper.count;
+
+ QTest::qWait(TIMEOUT_TIMEOUT);
+ QVERIFY(helper.count > oldCount);
+}
+
+
+void tst_QTimer::livelock_data()
+{
+ QTest::addColumn<int>("interval");
+ QTest::newRow("zero timer") << 0;
+ QTest::newRow("non-zero timer") << 1;
+ QTest::newRow("longer than sleep") << 20;
+}
+
+/*!
+ *
+ * DO NOT "FIX" THIS TEST! it is written like this for a reason, do
+ * not *change it without first dicussing it with its maintainers.
+ *
+*/
+class LiveLockTester : public QObject
+{
+public:
+ LiveLockTester(int i)
+ : interval(i),
+ timeoutsForFirst(0), timeoutsForExtra(0), timeoutsForSecond(0),
+ postEventAtRightTime(false)
+ {
+ firstTimerId = startTimer(interval);
+ extraTimerId = startTimer(interval + 80);
+ secondTimerId = -1; // started later
+ }
+
+ bool event(QEvent *e) {
+ if (e->type() == 4002) {
+ // got the posted event
+ if (timeoutsForFirst == 1 && timeoutsForSecond == 0)
+ postEventAtRightTime = true;
+ return true;
+ }
+ return QObject::event(e);
+ }
+
+ void timerEvent(QTimerEvent *te) {
+ if (te->timerId() == firstTimerId) {
+ if (++timeoutsForFirst == 1) {
+ killTimer(extraTimerId);
+ extraTimerId = -1;
+ QCoreApplication::postEvent(this, new QEvent(static_cast<QEvent::Type>(4002)));
+ secondTimerId = startTimer(interval);
+ }
+ } else if (te->timerId() == secondTimerId) {
+ ++timeoutsForSecond;
+ } else if (te->timerId() == extraTimerId) {
+ ++timeoutsForExtra;
+ }
+
+ // sleep for 2ms
+ QTest::qSleep(2);
+ killTimer(te->timerId());
+ }
+
+ const int interval;
+ int firstTimerId;
+ int secondTimerId;
+ int extraTimerId;
+ int timeoutsForFirst;
+ int timeoutsForExtra;
+ int timeoutsForSecond;
+ bool postEventAtRightTime;
+};
+
+void tst_QTimer::livelock()
+{
+ /*
+ New timers created in timer event handlers should not be sent
+ until the next iteration of the eventloop. Note: this test
+ depends on the fact that we send posted events before timer
+ events (since new posted events are not sent until the next
+ iteration of the eventloop either).
+ */
+ QFETCH(int, interval);
+ LiveLockTester tester(interval);
+ QTest::qWait(180); // we have to use wait here, since we're testing timers with a non-zero timeout
+ QTRY_COMPARE(tester.timeoutsForFirst, 1);
+ QCOMPARE(tester.timeoutsForExtra, 0);
+ QTRY_COMPARE(tester.timeoutsForSecond, 1);
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ if (QSysInfo::WindowsVersion < QSysInfo::WV_XP)
+ QEXPECT_FAIL("non-zero timer", "Multimedia timers are not available on Windows 2000", Continue);
+#elif defined(Q_OS_WINCE)
+ QEXPECT_FAIL("non-zero timer", "Windows CE devices often too slow", Continue);
+#endif
+ QVERIFY(tester.postEventAtRightTime);
+}
+
+class TimerInfiniteRecursionObject : public QObject
+{
+public:
+ bool inTimerEvent;
+ bool timerEventRecursed;
+ int interval;
+
+ TimerInfiniteRecursionObject(int interval)
+ : inTimerEvent(false), timerEventRecursed(false), interval(interval)
+ { }
+
+ void timerEvent(QTimerEvent *timerEvent)
+ {
+ timerEventRecursed = inTimerEvent;
+ if (timerEventRecursed) {
+ // bug detected!
+ return;
+ }
+
+ inTimerEvent = true;
+
+ QEventLoop eventLoop;
+ QTimer::singleShot(qMax(100, interval * 2), &eventLoop, SLOT(quit()));
+ eventLoop.exec();
+
+ inTimerEvent = false;
+
+ killTimer(timerEvent->timerId());
+ }
+};
+
+void tst_QTimer::timerInfiniteRecursion_data()
+{
+ QTest::addColumn<int>("interval");
+ QTest::newRow("zero timer") << 0;
+ QTest::newRow("non-zero timer") << 1;
+ QTest::newRow("10ms timer") << 10;
+ QTest::newRow("11ms timer") << 11;
+ QTest::newRow("100ms timer") << 100;
+ QTest::newRow("1s timer") << 1000;
+}
+
+
+void tst_QTimer::timerInfiniteRecursion()
+{
+ QFETCH(int, interval);
+ TimerInfiniteRecursionObject object(interval);
+ (void) object.startTimer(interval);
+
+ QEventLoop eventLoop;
+ QTimer::singleShot(qMax(100, interval * 2), &eventLoop, SLOT(quit()));
+ eventLoop.exec();
+
+ QVERIFY(!object.timerEventRecursed);
+}
+
+class RecurringTimerObject : public QObject
+{
+Q_OBJECT
+public:
+ int times;
+ int target;
+ bool recurse;
+
+ RecurringTimerObject(int target)
+ : times(0), target(target), recurse(false)
+ { }
+
+ void timerEvent(QTimerEvent *timerEvent)
+ {
+ if (++times == target) {
+ killTimer(timerEvent->timerId());
+ emit done();
+ } if (recurse) {
+ QEventLoop eventLoop;
+ QTimer::singleShot(100, &eventLoop, SLOT(quit()));
+ eventLoop.exec();
+ }
+ }
+
+signals:
+ void done();
+};
+
+void tst_QTimer::recurringTimer_data()
+{
+ QTest::addColumn<int>("interval");
+ QTest::newRow("zero timer") << 0;
+ QTest::newRow("non-zero timer") << 1;
+}
+
+void tst_QTimer::recurringTimer()
+{
+ const int target = 5;
+ QFETCH(int, interval);
+
+ {
+ RecurringTimerObject object(target);
+ QObject::connect(&object, SIGNAL(done()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ (void) object.startTimer(interval);
+ QTestEventLoop::instance().enterLoop(5);
+
+ QCOMPARE(object.times, target);
+ }
+
+ {
+ // make sure that eventloop recursion doesn't effect timer recurrance
+ RecurringTimerObject object(target);
+ object.recurse = true;
+
+ QObject::connect(&object, SIGNAL(done()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ (void) object.startTimer(interval);
+ QTestEventLoop::instance().enterLoop(5);
+
+ QCOMPARE(object.times, target);
+ }
+}
+
+void tst_QTimer::deleteLaterOnQTimer()
+{
+ QTimer *timer = new QTimer;
+ connect(timer, SIGNAL(timeout()), timer, SLOT(deleteLater()));
+ connect(timer, SIGNAL(destroyed()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ timer->setInterval(1);
+ timer->setSingleShot(true);
+ timer->start();
+ QPointer<QTimer> pointer = timer;
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(pointer.isNull());
+}
+
+#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+// Increase wait as emulator startup can cause unexpected delays
+#define MOVETOTHREAD_TIMEOUT 200
+#define MOVETOTHREAD_WAIT 5000
+#else
+#define MOVETOTHREAD_TIMEOUT 200
+#define MOVETOTHREAD_WAIT 300
+#endif
+
+void tst_QTimer::moveToThread()
+{
+ QTimer ti1;
+ QTimer ti2;
+ ti1.start(MOVETOTHREAD_TIMEOUT);
+ ti2.start(MOVETOTHREAD_TIMEOUT);
+ QVERIFY((ti1.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
+ QThread tr;
+ ti1.moveToThread(&tr);
+ connect(&ti1,SIGNAL(timeout()), &tr, SLOT(quit()));
+ tr.start();
+ QTimer ti3;
+ ti3.start(MOVETOTHREAD_TIMEOUT);
+ QVERIFY((ti3.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
+ QVERIFY((ti3.timerId() & 0xffffff) != (ti1.timerId() & 0xffffff));
+ QTest::qWait(MOVETOTHREAD_WAIT);
+ QVERIFY(tr.wait());
+ ti2.stop();
+ QTimer ti4;
+ ti4.start(MOVETOTHREAD_TIMEOUT);
+ ti3.stop();
+ ti2.start(MOVETOTHREAD_TIMEOUT);
+ ti3.start(MOVETOTHREAD_TIMEOUT);
+ QVERIFY((ti4.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
+ QVERIFY((ti3.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
+ QVERIFY((ti3.timerId() & 0xffffff) != (ti1.timerId() & 0xffffff));
+}
+
+class RestartedTimerFiresTooSoonObject : public QObject
+{
+ Q_OBJECT
+
+public:
+ QBasicTimer m_timer;
+
+ int m_interval;
+ QTime m_startedTime;
+ QEventLoop eventLoop;
+
+ inline RestartedTimerFiresTooSoonObject()
+ : QObject(), m_interval(0)
+ { }
+
+ void timerFired()
+ {
+ static int interval = 1000;
+
+ m_interval = interval;
+ m_startedTime.start();
+ m_timer.start(interval, this);
+
+ // alternate between single-shot and 1 sec
+ interval = interval ? 0 : 1000;
+ }
+
+ void timerEvent(QTimerEvent* ev)
+ {
+ if (ev->timerId() != m_timer.timerId())
+ return;
+
+ m_timer.stop();
+
+ QTime now = QTime::currentTime();
+ int elapsed = m_startedTime.elapsed();
+
+ if (elapsed < m_interval / 2) {
+ // severely too early!
+ m_timer.stop();
+ eventLoop.exit(-1);
+ return;
+ }
+
+ timerFired();
+
+ // don't do this forever
+ static int count = 0;
+ if (count++ > 20) {
+ m_timer.stop();
+ eventLoop.quit();
+ return;
+ }
+ }
+};
+
+void tst_QTimer::restartedTimerFiresTooSoon()
+{
+ RestartedTimerFiresTooSoonObject object;
+ object.timerFired();
+ QVERIFY(object.eventLoop.exec() == 0);
+}
+
+class LongLastingSlotClass : public QObject
+{
+ Q_OBJECT
+
+public:
+ LongLastingSlotClass(QTimer *timer) : count(0), timer(timer) {}
+
+public slots:
+ void longLastingSlot()
+ {
+ // Don't use timers for this, because we are testing them.
+ QTime time;
+ time.start();
+ while (time.elapsed() < 200) {
+ for (int c = 0; c < 100000; c++) {} // Mindless looping.
+ }
+ if (++count >= 2) {
+ timer->stop();
+ }
+ }
+
+public:
+ int count;
+ QTimer *timer;
+};
+
+void tst_QTimer::timerFiresOnlyOncePerProcessEvents_data()
+{
+ QTest::addColumn<int>("interval");
+ QTest::newRow("zero timer") << 0;
+ QTest::newRow("non-zero timer") << 10;
+}
+
+void tst_QTimer::timerFiresOnlyOncePerProcessEvents()
+{
+ QFETCH(int, interval);
+
+ QTimer t;
+ LongLastingSlotClass longSlot(&t);
+ t.start(interval);
+ connect(&t, SIGNAL(timeout()), &longSlot, SLOT(longLastingSlot()));
+ // Loop because there may be other events pending.
+ while (longSlot.count == 0) {
+ QCoreApplication::processEvents(QEventLoop::WaitForMoreEvents);
+ }
+
+ QCOMPARE(longSlot.count, 1);
+}
+
+class TimerIdPersistsAfterThreadExitThread : public QThread
+{
+public:
+ QTimer *timer;
+ int timerId, returnValue;
+
+ TimerIdPersistsAfterThreadExitThread()
+ : QThread(), timer(0), timerId(-1), returnValue(-1)
+ { }
+ ~TimerIdPersistsAfterThreadExitThread()
+ {
+ delete timer;
+ }
+
+ void run()
+ {
+ QEventLoop eventLoop;
+ timer = new QTimer;
+ connect(timer, SIGNAL(timeout()), &eventLoop, SLOT(quit()));
+ timer->start(100);
+ timerId = timer->timerId();
+ returnValue = eventLoop.exec();
+ }
+};
+
+void tst_QTimer::timerIdPersistsAfterThreadExit()
+{
+ TimerIdPersistsAfterThreadExitThread thread;
+ thread.start();
+ QVERIFY(thread.wait(30000));
+ QCOMPARE(thread.returnValue, 0);
+
+ // even though the thread has exited, and the event dispatcher destroyed, the timer is still
+ // "active", meaning the timer id should NOT be reused (i.e. the event dispatcher should not
+ // have unregistered it)
+ int timerId = thread.startTimer(100);
+ QVERIFY((timerId & 0xffffff) != (thread.timerId & 0xffffff));
+}
+
+void tst_QTimer::cancelLongTimer()
+{
+ QTimer timer;
+ timer.setSingleShot(true);
+ timer.start(1000 * 60 * 60); //set timer for 1 hour (which would overflow Symbian RTimer)
+ QCoreApplication::processEvents();
+ QVERIFY(timer.isActive()); //if the timer completes immediately with an error, then this will fail
+ timer.stop();
+ QVERIFY(!timer.isActive());
+}
+
+void tst_QTimer::singleShotStaticFunctionZeroTimeout()
+{
+ TimerHelper helper;
+
+ QTimer::singleShot(0, &helper, SLOT(timeout()));
+ QTest::qWait(500);
+ QCOMPARE(helper.count, 1);
+ QTest::qWait(500);
+ QCOMPARE(helper.count, 1);
+}
+
+class RecursOnTimeoutAndStopTimerTimer : public QObject
+{
+ Q_OBJECT
+
+public:
+ QTimer *one;
+ QTimer *two;
+
+public slots:
+ void onetrigger()
+ {
+ QCoreApplication::processEvents();
+ }
+
+ void twotrigger()
+ {
+ one->stop();
+ }
+};
+
+void tst_QTimer::recurseOnTimeoutAndStopTimer()
+{
+ QEventLoop eventLoop;
+ QTimer::singleShot(1000, &eventLoop, SLOT(quit()));
+
+ RecursOnTimeoutAndStopTimerTimer t;
+ t.one = new QTimer(&t);
+ t.two = new QTimer(&t);
+
+ QObject::connect(t.one, SIGNAL(timeout()), &t, SLOT(onetrigger()));
+ QObject::connect(t.two, SIGNAL(timeout()), &t, SLOT(twotrigger()));
+
+ t.two->setSingleShot(true);
+
+ t.one->start();
+ t.two->start();
+
+ (void) eventLoop.exec();
+
+ QVERIFY(!t.one->isActive());
+ QVERIFY(!t.two->isActive());
+}
+
+
+
+class DontBlockEvents : public QObject
+{
+ Q_OBJECT
+public:
+ DontBlockEvents();
+ void timerEvent(QTimerEvent*);
+
+ int count;
+ int total;
+ QBasicTimer m_timer;
+
+public slots:
+ void paintEvent();
+
+};
+
+DontBlockEvents::DontBlockEvents()
+{
+ count = 0;
+ total = 0;
+
+ //QTBUG-13633 need few unrelated timer running to reproduce the bug.
+ (new QTimer(this))->start(2000);
+ (new QTimer(this))->start(2500);
+ (new QTimer(this))->start(3000);
+ (new QTimer(this))->start(5000);
+ (new QTimer(this))->start(1000);
+ (new QTimer(this))->start(2000);
+
+ m_timer.start(1, this);
+}
+
+void DontBlockEvents::timerEvent(QTimerEvent* event)
+{
+ if (event->timerId() == m_timer.timerId()) {
+ QMetaObject::invokeMethod(this, "paintEvent", Qt::QueuedConnection);
+ m_timer.start(0, this);
+ count++;
+ QCOMPARE(count, 1);
+ total++;
+ }
+}
+
+void DontBlockEvents::paintEvent()
+{
+ count--;
+ QCOMPARE(count, 0);
+}
+
+
+void tst_QTimer::QTBUG13633_dontBlockEvents()
+{
+ DontBlockEvents t;
+ QTest::qWait(60);
+ QTRY_VERIFY(t.total > 2);
+}
+
+class SlotRepeater : public QObject {
+ Q_OBJECT
+public:
+ SlotRepeater() {}
+
+public slots:
+ void repeatThisSlot()
+ {
+ QMetaObject::invokeMethod(this, "repeatThisSlot", Qt::QueuedConnection);
+ }
+};
+
+void tst_QTimer::postedEventsShouldNotStarveTimers()
+{
+ TimerHelper timerHelper;
+ QTimer timer;
+ connect(&timer, SIGNAL(timeout()), &timerHelper, SLOT(timeout()));
+ timer.setInterval(0);
+ timer.setSingleShot(false);
+ timer.start();
+ SlotRepeater slotRepeater;
+ slotRepeater.repeatThisSlot();
+ QTest::qWait(100);
+ QVERIFY(timerHelper.count > 5);
+}
+
+#ifdef Q_OS_SYMBIAN
+void tst_QTimer::handleLeaks()
+{
+ const int timercount = 5;
+ int processhandles_start;
+ int threadhandles_start;
+ RThread().HandleCount(processhandles_start, threadhandles_start);
+ {
+ TimerHelper timerHelper;
+ QList<QTimer*> timers;
+ for (int i=0;i<timercount;i++) {
+ QTimer* timer = new QTimer;
+ timers.append(timer);
+ connect(timer, SIGNAL(timeout()), &timerHelper, SLOT(timeout()));
+ timer->setSingleShot(true);
+ timer->start(i); //test both zero and normal timeouts
+ }
+ int processhandles_mid;
+ int threadhandles_mid;
+ RThread().HandleCount(processhandles_mid, threadhandles_mid);
+ qDebug() << threadhandles_mid - threadhandles_start << "new thread owned handles";
+ QTest::qWait(100);
+ QCOMPARE(timerHelper.count, timercount);
+ qDeleteAll(timers);
+ }
+ int processhandles_end;
+ int threadhandles_end;
+ RThread().HandleCount(processhandles_end, threadhandles_end);
+ QCOMPARE(threadhandles_end, threadhandles_start); //RTimer::CreateLocal creates a thread owned handle
+ //Can not verify process handles because QObject::connect may create up to 2 mutexes
+ //from a QMutexPool (4 process owned handles with open C imp.)
+ //QCOMPARE(processhandles_end, processhandles_start);
+}
+#endif
+
+QTEST_MAIN(tst_QTimer)
+#include "tst_qtimer.moc"
diff --git a/tests/auto/qtipc/lackey/lackey.pro b/tests/auto/corelib/kernel/qtipc/lackey/lackey.pro
index 91659d701e..91659d701e 100644
--- a/tests/auto/qtipc/lackey/lackey.pro
+++ b/tests/auto/corelib/kernel/qtipc/lackey/lackey.pro
diff --git a/tests/auto/qtipc/lackey/main.cpp b/tests/auto/corelib/kernel/qtipc/lackey/main.cpp
index 3caae48740..3caae48740 100644
--- a/tests/auto/qtipc/lackey/main.cpp
+++ b/tests/auto/corelib/kernel/qtipc/lackey/main.cpp
diff --git a/tests/auto/qtipc/lackey/scripts/consumer.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/consumer.js
index 4d12dcac1a..4d12dcac1a 100644
--- a/tests/auto/qtipc/lackey/scripts/consumer.js
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/consumer.js
diff --git a/tests/auto/qtipc/lackey/scripts/producer.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js
index e02cd8b7bb..e02cd8b7bb 100644
--- a/tests/auto/qtipc/lackey/scripts/producer.js
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js
diff --git a/tests/auto/qtipc/lackey/scripts/readonly_segfault.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/readonly_segfault.js
index 3eaf789d23..3eaf789d23 100644
--- a/tests/auto/qtipc/lackey/scripts/readonly_segfault.js
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/readonly_segfault.js
diff --git a/tests/auto/qtipc/lackey/scripts/systemlock_read.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_read.js
index 1048bc7955..1048bc7955 100644
--- a/tests/auto/qtipc/lackey/scripts/systemlock_read.js
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_read.js
diff --git a/tests/auto/qtipc/lackey/scripts/systemlock_readwrite.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_readwrite.js
index fc6367ff4b..fc6367ff4b 100644
--- a/tests/auto/qtipc/lackey/scripts/systemlock_readwrite.js
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_readwrite.js
diff --git a/tests/auto/qtipc/lackey/scripts/systemsemaphore_acquire.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquire.js
index 5cff429b86..5cff429b86 100644
--- a/tests/auto/qtipc/lackey/scripts/systemsemaphore_acquire.js
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquire.js
diff --git a/tests/auto/qtipc/lackey/scripts/systemsemaphore_acquirerelease.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquirerelease.js
index cedde3f0ae..cedde3f0ae 100644
--- a/tests/auto/qtipc/lackey/scripts/systemsemaphore_acquirerelease.js
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquirerelease.js
diff --git a/tests/auto/qtipc/lackey/scripts/systemsemaphore_release.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_release.js
index c805e0fed8..c805e0fed8 100644
--- a/tests/auto/qtipc/lackey/scripts/systemsemaphore_release.js
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_release.js
diff --git a/tests/auto/qtipc/qsharedmemory/.gitignore b/tests/auto/corelib/kernel/qtipc/qsharedmemory/.gitignore
index 03ddcf29cf..03ddcf29cf 100644
--- a/tests/auto/qtipc/qsharedmemory/.gitignore
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/.gitignore
diff --git a/tests/auto/qtipc/qsharedmemory/qsharedmemory.pro b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsharedmemory.pro
index 9fef8e4112..9fef8e4112 100644
--- a/tests/auto/qtipc/qsharedmemory/qsharedmemory.pro
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsharedmemory.pro
diff --git a/tests/auto/qtipc/qsharedmemory/qsystemlock/qsystemlock.pro b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/qsystemlock.pro
index e3d99bb85c..e3d99bb85c 100644
--- a/tests/auto/qtipc/qsharedmemory/qsystemlock/qsystemlock.pro
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/qsystemlock.pro
diff --git a/tests/auto/qtipc/qsharedmemory/qsystemlock/tst_qsystemlock.cpp b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/tst_qsystemlock.cpp
index 072b94f985..072b94f985 100644
--- a/tests/auto/qtipc/qsharedmemory/qsystemlock/tst_qsystemlock.cpp
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/tst_qsystemlock.cpp
diff --git a/tests/auto/qtipc/qsharedmemory/src/qsystemlock.cpp b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.cpp
index b48bd7bebe..b48bd7bebe 100644
--- a/tests/auto/qtipc/qsharedmemory/src/qsystemlock.cpp
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.cpp
diff --git a/tests/auto/qtipc/qsharedmemory/src/qsystemlock.h b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.h
index f9db4f879c..f9db4f879c 100644
--- a/tests/auto/qtipc/qsharedmemory/src/qsystemlock.h
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.h
diff --git a/tests/auto/qtipc/qsharedmemory/src/qsystemlock_p.h b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_p.h
index 628b005afc..628b005afc 100644
--- a/tests/auto/qtipc/qsharedmemory/src/qsystemlock_p.h
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_p.h
diff --git a/tests/auto/qtipc/qsharedmemory/src/qsystemlock_unix.cpp b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_unix.cpp
index 984379619e..984379619e 100644
--- a/tests/auto/qtipc/qsharedmemory/src/qsystemlock_unix.cpp
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_unix.cpp
diff --git a/tests/auto/qtipc/qsharedmemory/src/qsystemlock_win.cpp b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_win.cpp
index c04b596210..c04b596210 100644
--- a/tests/auto/qtipc/qsharedmemory/src/qsystemlock_win.cpp
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_win.cpp
diff --git a/tests/auto/qtipc/qsharedmemory/src/src.pri b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/src.pri
index 8aaf528447..8aaf528447 100644
--- a/tests/auto/qtipc/qsharedmemory/src/src.pri
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/src.pri
diff --git a/tests/auto/qtipc/qsharedmemory/test/test.pro b/tests/auto/corelib/kernel/qtipc/qsharedmemory/test/test.pro
index 50c266986c..50c266986c 100644
--- a/tests/auto/qtipc/qsharedmemory/test/test.pro
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/test/test.pro
diff --git a/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp b/tests/auto/corelib/kernel/qtipc/qsharedmemory/tst_qsharedmemory.cpp
index 38c6f0e8ee..38c6f0e8ee 100644
--- a/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/tst_qsharedmemory.cpp
diff --git a/tests/auto/qtipc/qsystemsemaphore/.gitignore b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/.gitignore
index 2b60bfb3e6..2b60bfb3e6 100644
--- a/tests/auto/qtipc/qsystemsemaphore/.gitignore
+++ b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/.gitignore
diff --git a/tests/auto/qtipc/qsystemsemaphore/files.qrc b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/files.qrc
index 62966903e8..62966903e8 100644
--- a/tests/auto/qtipc/qsystemsemaphore/files.qrc
+++ b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/files.qrc
diff --git a/tests/auto/qtipc/qsystemsemaphore/qsystemsemaphore.pro b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/qsystemsemaphore.pro
index e05b6b878b..e05b6b878b 100644
--- a/tests/auto/qtipc/qsystemsemaphore/qsystemsemaphore.pro
+++ b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/qsystemsemaphore.pro
diff --git a/tests/auto/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp
index df625b8661..df625b8661 100644
--- a/tests/auto/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp
+++ b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp
diff --git a/tests/auto/qtipc/qtipc.pro b/tests/auto/corelib/kernel/qtipc/qtipc.pro
index ac647e097b..ac647e097b 100644
--- a/tests/auto/qtipc/qtipc.pro
+++ b/tests/auto/corelib/kernel/qtipc/qtipc.pro
diff --git a/tests/auto/qtranslator/.gitignore b/tests/auto/corelib/kernel/qtranslator/.gitignore
index ce24e1016b..ce24e1016b 100644
--- a/tests/auto/qtranslator/.gitignore
+++ b/tests/auto/corelib/kernel/qtranslator/.gitignore
diff --git a/tests/auto/qtranslator/hellotr_la.qm b/tests/auto/corelib/kernel/qtranslator/hellotr_la.qm
index cc42afe05c..cc42afe05c 100644
--- a/tests/auto/qtranslator/hellotr_la.qm
+++ b/tests/auto/corelib/kernel/qtranslator/hellotr_la.qm
Binary files differ
diff --git a/tests/auto/qtranslator/hellotr_la.ts b/tests/auto/corelib/kernel/qtranslator/hellotr_la.ts
index 2a4a41b9ea..2a4a41b9ea 100644
--- a/tests/auto/qtranslator/hellotr_la.ts
+++ b/tests/auto/corelib/kernel/qtranslator/hellotr_la.ts
diff --git a/tests/auto/qtranslator/msgfmt_from_po.qm b/tests/auto/corelib/kernel/qtranslator/msgfmt_from_po.qm
index 7b62819459..7b62819459 100644
--- a/tests/auto/qtranslator/msgfmt_from_po.qm
+++ b/tests/auto/corelib/kernel/qtranslator/msgfmt_from_po.qm
Binary files differ
diff --git a/tests/auto/corelib/kernel/qtranslator/qtranslator.pro b/tests/auto/corelib/kernel/qtranslator/qtranslator.pro
new file mode 100644
index 0000000000..171216afb4
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtranslator/qtranslator.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qtranslator.cpp
+RESOURCES += qtranslator.qrc
+
+wince*|symbian: {
+ addFiles.files = hellotr_la.qm msgfmt_from_po.qm
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+}
+
+CONFIG += insignificant_test # QTBUG-21125
diff --git a/tests/auto/qtranslator/qtranslator.qrc b/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc
index 333dcfaa21..333dcfaa21 100644
--- a/tests/auto/qtranslator/qtranslator.qrc
+++ b/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc
diff --git a/tests/auto/qtranslator/tst_qtranslator.cpp b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp
index 8e2ed157a4..8e2ed157a4 100644
--- a/tests/auto/qtranslator/tst_qtranslator.cpp
+++ b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp
diff --git a/tests/auto/qvariant/.gitignore b/tests/auto/corelib/kernel/qvariant/.gitignore
index 2434ec945d..2434ec945d 100644
--- a/tests/auto/qvariant/.gitignore
+++ b/tests/auto/corelib/kernel/qvariant/.gitignore
diff --git a/tests/auto/corelib/kernel/qvariant/qvariant.pro b/tests/auto/corelib/kernel/qvariant/qvariant.pro
new file mode 100644
index 0000000000..52af24ea85
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/qvariant.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qvariant.cpp
+QT += widgets network
+
+CONFIG+=insignificant_test
diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
index 25a32cc734..25a32cc734 100644
--- a/tests/auto/qvariant/tst_qvariant.cpp
+++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
diff --git a/tests/auto/qwineventnotifier/.gitignore b/tests/auto/corelib/kernel/qwineventnotifier/.gitignore
index e2b5581e02..e2b5581e02 100644
--- a/tests/auto/qwineventnotifier/.gitignore
+++ b/tests/auto/corelib/kernel/qwineventnotifier/.gitignore
diff --git a/tests/auto/corelib/kernel/qwineventnotifier/qwineventnotifier.pro b/tests/auto/corelib/kernel/qwineventnotifier/qwineventnotifier.pro
new file mode 100644
index 0000000000..4a5ea78ed1
--- /dev/null
+++ b/tests/auto/corelib/kernel/qwineventnotifier/qwineventnotifier.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qwineventnotifier.cpp
+QT = core core-private
+CONFIG += parallel_test
diff --git a/tests/auto/qwineventnotifier/tst_qwineventnotifier.cpp b/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp
index cbe62f6662..cbe62f6662 100644
--- a/tests/auto/qwineventnotifier/tst_qwineventnotifier.cpp
+++ b/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp
diff --git a/tests/auto/corelib/plugin/plugin.pro b/tests/auto/corelib/plugin/plugin.pro
new file mode 100644
index 0000000000..24de36e4ec
--- /dev/null
+++ b/tests/auto/corelib/plugin/plugin.pro
@@ -0,0 +1,6 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qlibrary \
+ qplugin \
+ qpluginloader \
+ quuid
diff --git a/tests/auto/qlibrary/.gitignore b/tests/auto/corelib/plugin/qlibrary/.gitignore
index 38963f2235..38963f2235 100644
--- a/tests/auto/qlibrary/.gitignore
+++ b/tests/auto/corelib/plugin/qlibrary/.gitignore
diff --git a/tests/auto/qlibrary/lib/lib.pro b/tests/auto/corelib/plugin/qlibrary/lib/lib.pro
index 6d80881cd2..6d80881cd2 100644
--- a/tests/auto/qlibrary/lib/lib.pro
+++ b/tests/auto/corelib/plugin/qlibrary/lib/lib.pro
diff --git a/tests/auto/qlibrary/lib/mylib.c b/tests/auto/corelib/plugin/qlibrary/lib/mylib.c
index f1a2b7a002..f1a2b7a002 100644
--- a/tests/auto/qlibrary/lib/mylib.c
+++ b/tests/auto/corelib/plugin/qlibrary/lib/mylib.c
diff --git a/tests/auto/qlibrary/lib2/lib2.pro b/tests/auto/corelib/plugin/qlibrary/lib2/lib2.pro
index b441569e5a..b441569e5a 100644
--- a/tests/auto/qlibrary/lib2/lib2.pro
+++ b/tests/auto/corelib/plugin/qlibrary/lib2/lib2.pro
diff --git a/tests/auto/qlibrary/lib2/mylib.c b/tests/auto/corelib/plugin/qlibrary/lib2/mylib.c
index f824a3a82d..f824a3a82d 100644
--- a/tests/auto/qlibrary/lib2/mylib.c
+++ b/tests/auto/corelib/plugin/qlibrary/lib2/mylib.c
diff --git a/tests/auto/qlibrary/library_path/invalid.so b/tests/auto/corelib/plugin/qlibrary/library_path/invalid.so
index 4f8a56fe95..4f8a56fe95 100644
--- a/tests/auto/qlibrary/library_path/invalid.so
+++ b/tests/auto/corelib/plugin/qlibrary/library_path/invalid.so
diff --git a/tests/auto/qlibrary/qlibrary.pro b/tests/auto/corelib/plugin/qlibrary/qlibrary.pro
index 5dc129fbf9..5dc129fbf9 100644
--- a/tests/auto/qlibrary/qlibrary.pro
+++ b/tests/auto/corelib/plugin/qlibrary/qlibrary.pro
diff --git a/tests/auto/qlibrary/tst/tst.pro b/tests/auto/corelib/plugin/qlibrary/tst/tst.pro
index 28c40b0b42..28c40b0b42 100644
--- a/tests/auto/qlibrary/tst/tst.pro
+++ b/tests/auto/corelib/plugin/qlibrary/tst/tst.pro
diff --git a/tests/auto/qlibrary/tst_qlibrary.cpp b/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp
index 675d0e6ab6..675d0e6ab6 100644
--- a/tests/auto/qlibrary/tst_qlibrary.cpp
+++ b/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp
diff --git a/tests/auto/qplugin/.gitignore b/tests/auto/corelib/plugin/qplugin/.gitignore
index 671b21a458..671b21a458 100644
--- a/tests/auto/qplugin/.gitignore
+++ b/tests/auto/corelib/plugin/qplugin/.gitignore
diff --git a/tests/auto/qplugin/debugplugin/debugplugin.pro b/tests/auto/corelib/plugin/qplugin/debugplugin/debugplugin.pro
index d0762fc101..d0762fc101 100644
--- a/tests/auto/qplugin/debugplugin/debugplugin.pro
+++ b/tests/auto/corelib/plugin/qplugin/debugplugin/debugplugin.pro
diff --git a/tests/auto/qplugin/debugplugin/main.cpp b/tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp
index b1538963d8..b1538963d8 100644
--- a/tests/auto/qplugin/debugplugin/main.cpp
+++ b/tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp
diff --git a/tests/auto/qplugin/qplugin.pro b/tests/auto/corelib/plugin/qplugin/qplugin.pro
index 37a12da732..37a12da732 100644
--- a/tests/auto/qplugin/qplugin.pro
+++ b/tests/auto/corelib/plugin/qplugin/qplugin.pro
diff --git a/tests/auto/qplugin/releaseplugin/main.cpp b/tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp
index 3be9a7415d..3be9a7415d 100644
--- a/tests/auto/qplugin/releaseplugin/main.cpp
+++ b/tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp
diff --git a/tests/auto/qplugin/releaseplugin/releaseplugin.pro b/tests/auto/corelib/plugin/qplugin/releaseplugin/releaseplugin.pro
index ce66aaf7cb..ce66aaf7cb 100644
--- a/tests/auto/qplugin/releaseplugin/releaseplugin.pro
+++ b/tests/auto/corelib/plugin/qplugin/releaseplugin/releaseplugin.pro
diff --git a/tests/auto/qplugin/tst_qplugin.cpp b/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp
index c7ea963225..c7ea963225 100644
--- a/tests/auto/qplugin/tst_qplugin.cpp
+++ b/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp
diff --git a/tests/auto/qplugin/tst_qplugin.pro b/tests/auto/corelib/plugin/qplugin/tst_qplugin.pro
index 3629fb36a1..3629fb36a1 100644
--- a/tests/auto/qplugin/tst_qplugin.pro
+++ b/tests/auto/corelib/plugin/qplugin/tst_qplugin.pro
diff --git a/tests/auto/qpluginloader/.gitignore b/tests/auto/corelib/plugin/qpluginloader/.gitignore
index 6b2fa3a715..6b2fa3a715 100644
--- a/tests/auto/qpluginloader/.gitignore
+++ b/tests/auto/corelib/plugin/qpluginloader/.gitignore
diff --git a/tests/auto/qpluginloader/almostplugin/almostplugin.cpp b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp
index 70596c0113..70596c0113 100644
--- a/tests/auto/qpluginloader/almostplugin/almostplugin.cpp
+++ b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp
diff --git a/tests/auto/qpluginloader/almostplugin/almostplugin.h b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h
index 0021180b36..0021180b36 100644
--- a/tests/auto/qpluginloader/almostplugin/almostplugin.h
+++ b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h
diff --git a/tests/auto/qpluginloader/almostplugin/almostplugin.pro b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.pro
index b45509ef01..b45509ef01 100644
--- a/tests/auto/qpluginloader/almostplugin/almostplugin.pro
+++ b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.pro
diff --git a/tests/auto/qpluginloader/elftest/.gitattributes b/tests/auto/corelib/plugin/qpluginloader/elftest/.gitattributes
index 891192ca94..891192ca94 100644
--- a/tests/auto/qpluginloader/elftest/.gitattributes
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/.gitattributes
diff --git a/tests/auto/qpluginloader/elftest/corrupt1.elf64.so b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt1.elf64.so
index 12ce7362dc..12ce7362dc 100755
--- a/tests/auto/qpluginloader/elftest/corrupt1.elf64.so
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt1.elf64.so
Binary files differ
diff --git a/tests/auto/qpluginloader/elftest/corrupt2.elf64.so b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt2.elf64.so
index 11fdc2c118..11fdc2c118 100755
--- a/tests/auto/qpluginloader/elftest/corrupt2.elf64.so
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt2.elf64.so
Binary files differ
diff --git a/tests/auto/qpluginloader/elftest/corrupt3.elf64.so b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt3.elf64.so
index 94a2bc3560..94a2bc3560 100755
--- a/tests/auto/qpluginloader/elftest/corrupt3.elf64.so
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt3.elf64.so
Binary files differ
diff --git a/tests/auto/qpluginloader/elftest/debugobj.so b/tests/auto/corelib/plugin/qpluginloader/elftest/debugobj.so
index f0ee0569a3..f0ee0569a3 100644
--- a/tests/auto/qpluginloader/elftest/debugobj.so
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/debugobj.so
Binary files differ
diff --git a/tests/auto/qpluginloader/elftest/garbage1.so b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage1.so
index 0c7453077f..0c7453077f 100644
--- a/tests/auto/qpluginloader/elftest/garbage1.so
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage1.so
diff --git a/tests/auto/qpluginloader/elftest/garbage2.so b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage2.so
index c06338e0c8..c06338e0c8 100644
--- a/tests/auto/qpluginloader/elftest/garbage2.so
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage2.so
diff --git a/tests/auto/qpluginloader/elftest/garbage3.so b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage3.so
index a24c523a77..a24c523a77 100644
--- a/tests/auto/qpluginloader/elftest/garbage3.so
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage3.so
diff --git a/tests/auto/qpluginloader/elftest/garbage4.so b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage4.so
index 4f45cf5157..4f45cf5157 100644
--- a/tests/auto/qpluginloader/elftest/garbage4.so
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage4.so
diff --git a/tests/auto/qpluginloader/elftest/garbage5.so b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage5.so
index f8c0a1d544..f8c0a1d544 100644
--- a/tests/auto/qpluginloader/elftest/garbage5.so
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage5.so
diff --git a/tests/auto/qpluginloader/lib/lib.pro b/tests/auto/corelib/plugin/qpluginloader/lib/lib.pro
index ce9bf13c25..ce9bf13c25 100644
--- a/tests/auto/qpluginloader/lib/lib.pro
+++ b/tests/auto/corelib/plugin/qpluginloader/lib/lib.pro
diff --git a/tests/auto/qpluginloader/lib/mylib.c b/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c
index dc43c35815..dc43c35815 100644
--- a/tests/auto/qpluginloader/lib/mylib.c
+++ b/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c
diff --git a/tests/auto/qpluginloader/qpluginloader.pro b/tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro
index 6e41b4c96a..6e41b4c96a 100644
--- a/tests/auto/qpluginloader/qpluginloader.pro
+++ b/tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro
diff --git a/tests/auto/qpluginloader/theplugin/plugininterface.h b/tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h
index 48d8443ba1..48d8443ba1 100644
--- a/tests/auto/qpluginloader/theplugin/plugininterface.h
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h
diff --git a/tests/auto/qpluginloader/theplugin/theplugin.cpp b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp
index fdf599c875..fdf599c875 100644
--- a/tests/auto/qpluginloader/theplugin/theplugin.cpp
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp
diff --git a/tests/auto/qpluginloader/theplugin/theplugin.h b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h
index 5b738696e0..5b738696e0 100644
--- a/tests/auto/qpluginloader/theplugin/theplugin.h
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h
diff --git a/tests/auto/qpluginloader/theplugin/theplugin.pro b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.pro
index 44b46b439f..44b46b439f 100644
--- a/tests/auto/qpluginloader/theplugin/theplugin.pro
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.pro
diff --git a/tests/auto/corelib/plugin/qpluginloader/tst/tst.pro b/tests/auto/corelib/plugin/qpluginloader/tst/tst.pro
new file mode 100644
index 0000000000..98de004263
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/tst/tst.pro
@@ -0,0 +1,34 @@
+load(qttest_p4)
+SOURCES += ../tst_qpluginloader.cpp
+TARGET = ../tst_qpluginloader
+QT = core
+HEADERS += ../theplugin/plugininterface.h
+
+win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qpluginloader
+} else {
+ TARGET = ../../release/tst_qpluginloader
+ }
+}
+
+
+wince*: {
+ addFiles.files = $$OUT_PWD/../bin/*.dll
+ addFiles.path = bin
+ DEPLOYMENT += addFiles
+}
+
+symbian: {
+ libDep.files = tst_qpluginloaderlib.dll
+ libDep.path = /sys/bin
+ pluginDep.files = theplugin.dll
+ pluginDep.path = bin
+
+ DEPLOYMENT += libDep pluginDep
+}
+
+DEFINES += SRCDIR=\\\"$$PWD/../\\\"
+mac*:CONFIG+=insignificant_test
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qpluginloader/tst_qpluginloader.cpp b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp
index 76dbd48a14..76dbd48a14 100644
--- a/tests/auto/qpluginloader/tst_qpluginloader.cpp
+++ b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp
diff --git a/tests/auto/quuid/.gitignore b/tests/auto/corelib/plugin/quuid/.gitignore
index 4ef3142f0f..4ef3142f0f 100644
--- a/tests/auto/quuid/.gitignore
+++ b/tests/auto/corelib/plugin/quuid/.gitignore
diff --git a/tests/auto/quuid/quuid.pro b/tests/auto/corelib/plugin/quuid/quuid.pro
index 461956f313..461956f313 100644
--- a/tests/auto/quuid/quuid.pro
+++ b/tests/auto/corelib/plugin/quuid/quuid.pro
diff --git a/tests/auto/quuid/test/test.pro b/tests/auto/corelib/plugin/quuid/test/test.pro
index 06ae3bd362..06ae3bd362 100644
--- a/tests/auto/quuid/test/test.pro
+++ b/tests/auto/corelib/plugin/quuid/test/test.pro
diff --git a/tests/auto/quuid/testProcessUniqueness/main.cpp b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp
index 085f56539d..085f56539d 100644
--- a/tests/auto/quuid/testProcessUniqueness/main.cpp
+++ b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp
diff --git a/tests/auto/quuid/testProcessUniqueness/testProcessUniqueness.pro b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/testProcessUniqueness.pro
index 88df1a25d7..88df1a25d7 100644
--- a/tests/auto/quuid/testProcessUniqueness/testProcessUniqueness.pro
+++ b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/testProcessUniqueness.pro
diff --git a/tests/auto/quuid/tst_quuid.cpp b/tests/auto/corelib/plugin/quuid/tst_quuid.cpp
index 5761ea1a8c..5761ea1a8c 100644
--- a/tests/auto/quuid/tst_quuid.cpp
+++ b/tests/auto/corelib/plugin/quuid/tst_quuid.cpp
diff --git a/tests/auto/qstate/qstate.pro b/tests/auto/corelib/statemachine/qstate/qstate.pro
index 6ee7e0cd00..6ee7e0cd00 100644
--- a/tests/auto/qstate/qstate.pro
+++ b/tests/auto/corelib/statemachine/qstate/qstate.pro
diff --git a/tests/auto/qstate/tst_qstate.cpp b/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp
index 5a9c8d9996..5a9c8d9996 100644
--- a/tests/auto/qstate/tst_qstate.cpp
+++ b/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp
diff --git a/tests/auto/corelib/statemachine/qstatemachine/qstatemachine.pro b/tests/auto/corelib/statemachine/qstatemachine/qstatemachine.pro
new file mode 100644
index 0000000000..9d057eb05f
--- /dev/null
+++ b/tests/auto/corelib/statemachine/qstatemachine/qstatemachine.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT += widgets
+QT += core core-private gui widgets
+SOURCES += tst_qstatemachine.cpp
+
diff --git a/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp b/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
new file mode 100644
index 0000000000..08181c17de
--- /dev/null
+++ b/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
@@ -0,0 +1,4448 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtCore/QCoreApplication>
+#include <QtWidgets/QPushButton>
+#include <QtWidgets/QGraphicsScene>
+#include <QtWidgets/QGraphicsSceneEvent>
+#include <QtWidgets/QGraphicsTextItem>
+
+#include "qstatemachine.h"
+#include "qstate.h"
+#include "qhistorystate.h"
+#include "qkeyeventtransition.h"
+#include "qmouseeventtransition.h"
+#include "private/qstate_p.h"
+#include "private/qstatemachine_p.h"
+
+// Will try to wait for the condition while allowing event processing
+#define QTRY_COMPARE(__expr, __expected) \
+ do { \
+ const int __step = 50; \
+ const int __timeout = 5000; \
+ if ((__expr) != (__expected)) { \
+ QTest::qWait(0); \
+ } \
+ for (int __i = 0; __i < __timeout && ((__expr) != (__expected)); __i+=__step) { \
+ QTest::qWait(__step); \
+ } \
+ QCOMPARE(__expr, __expected); \
+ } while(0)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+static int globalTick;
+
+// Run exec for a maximum of TIMEOUT msecs
+#define QCOREAPPLICATION_EXEC(TIMEOUT) \
+{ \
+ QTimer timer; \
+ timer.setSingleShot(true); \
+ timer.setInterval(TIMEOUT); \
+ timer.start(); \
+ connect(&timer, SIGNAL(timeout()), QCoreApplication::instance(), SLOT(quit())); \
+ QCoreApplication::exec(); \
+}
+
+class SignalEmitter : public QObject
+{
+Q_OBJECT
+ public:
+ SignalEmitter(QObject *parent = 0)
+ : QObject(parent) {}
+ void emitSignalWithNoArg()
+ { emit signalWithNoArg(); }
+ void emitSignalWithIntArg(int arg)
+ { emit signalWithIntArg(arg); }
+ void emitSignalWithStringArg(const QString &arg)
+ { emit signalWithStringArg(arg); }
+ void emitSignalWithDefaultArg()
+ { emit signalWithDefaultArg(); }
+Q_SIGNALS:
+ void signalWithNoArg();
+ void signalWithIntArg(int);
+ void signalWithStringArg(const QString &);
+ void signalWithDefaultArg(int i = 42);
+};
+
+class tst_QStateMachine : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QStateMachine();
+ virtual ~tst_QStateMachine();
+
+private slots:
+ void init();
+ void cleanup();
+
+ void rootState();
+ void machineWithParent();
+ void addAndRemoveState();
+ void stateEntryAndExit();
+ void assignProperty();
+ void assignPropertyWithAnimation();
+ void postEvent();
+ void cancelDelayedEvent();
+ void postDelayedEventAndStop();
+ void stopAndPostEvent();
+ void stateFinished();
+ void parallelStates();
+ void parallelRootState();
+ void allSourceToTargetConfigurations();
+ void signalTransitions();
+ void eventTransitions();
+ void graphicsSceneEventTransitions();
+ void historyStates();
+ void startAndStop();
+ void targetStateWithNoParent();
+ void targetStateDeleted();
+ void transitionToRootState();
+ void transitionFromRootState();
+ void transitionEntersParent();
+
+ void defaultErrorState();
+ void customGlobalErrorState();
+ void customLocalErrorStateInBrokenState();
+ void customLocalErrorStateInOtherState();
+ void customLocalErrorStateInParentOfBrokenState();
+ void customLocalErrorStateOverridesParent();
+ void errorStateHasChildren();
+ void errorStateHasErrors();
+ void errorStateIsRootState();
+ void errorStateEntersParentFirst();
+ void customErrorStateIsNull();
+ void clearError();
+ void historyStateHasNowhereToGo();
+ void historyStateAsInitialState();
+ void historyStateAfterRestart();
+ void brokenStateIsNeverEntered();
+ void customErrorStateNotInGraph();
+ void transitionToStateNotInGraph();
+ void restoreProperties();
+
+ void defaultGlobalRestorePolicy();
+ void globalRestorePolicySetToRestore();
+ void globalRestorePolicySetToDontRestore();
+
+ void noInitialStateForInitialState();
+
+ //void restorePolicyNotInherited();
+ //void mixedRestoreProperties();
+ //void setRestorePolicyToDoNotRestore();
+ //void setGlobalRestorePolicyToGlobalRestore();
+ //void restorePolicyOnChildState();
+
+ void transitionWithParent();
+ void transitionsFromParallelStateWithNoChildren();
+ void parallelStateTransition();
+ void parallelStateAssignmentsDone();
+ void nestedRestoreProperties();
+ void nestedRestoreProperties2();
+
+ void simpleAnimation();
+ void twoAnimations();
+ void twoAnimatedTransitions();
+ void playAnimationTwice();
+ void nestedTargetStateForAnimation();
+ void propertiesAssignedSignalTransitionsReuseAnimationGroup();
+ void animatedGlobalRestoreProperty();
+ void specificTargetValueOfAnimation();
+
+ void addDefaultAnimation();
+ void addDefaultAnimationWithUnusedAnimation();
+ void removeDefaultAnimation();
+ void overrideDefaultAnimationWithSpecific();
+
+// void addDefaultAnimationForSource();
+// void addDefaultAnimationForTarget();
+// void removeDefaultAnimationForSource();
+// void removeDefaultAnimationForTarget();
+// void overrideDefaultAnimationWithSource();
+// void overrideDefaultAnimationWithTarget();
+// void overrideDefaultSourceAnimationWithSpecific();
+// void overrideDefaultTargetAnimationWithSpecific();
+// void overrideDefaultTargetAnimationWithSource();
+
+ void nestedStateMachines();
+ void goToState();
+
+ void task260403_clonedSignals();
+ void postEventFromOtherThread();
+ void eventFilterForApplication();
+ void eventClassesExported();
+ void stopInTransitionToFinalState();
+ void stopInEventTest_data();
+ void stopInEventTest();
+};
+
+tst_QStateMachine::tst_QStateMachine()
+{
+}
+
+tst_QStateMachine::~tst_QStateMachine()
+{
+}
+
+class TestState : public QState
+{
+public:
+ enum Event {
+ Entry,
+ Exit
+ };
+ TestState(QState *parent)
+ : QState(parent) {}
+ QList<QPair<int, Event> > events;
+protected:
+ virtual void onEntry(QEvent *) {
+ events.append(qMakePair(globalTick++, Entry));
+ }
+ virtual void onExit(QEvent *) {
+ events.append(qMakePair(globalTick++, Exit));
+ }
+};
+
+class TestTransition : public QAbstractTransition
+{
+public:
+ TestTransition(QAbstractState *target)
+ : QAbstractTransition()
+ { setTargetState(target); }
+ QList<int> triggers;
+protected:
+ virtual bool eventTest(QEvent *) {
+ return true;
+ }
+ virtual void onTransition(QEvent *) {
+ triggers.append(globalTick++);
+ }
+};
+
+void tst_QStateMachine::init()
+{
+}
+
+void tst_QStateMachine::cleanup()
+{
+}
+
+class EventTransition : public QAbstractTransition
+{
+public:
+ EventTransition(QEvent::Type type, QAbstractState *target, QState *parent = 0)
+ : QAbstractTransition(parent), m_type(type)
+ { setTargetState(target); }
+protected:
+ virtual bool eventTest(QEvent *e) {
+ return (e->type() == m_type);
+ }
+ virtual void onTransition(QEvent *) {}
+private:
+ QEvent::Type m_type;
+};
+
+void tst_QStateMachine::transitionToRootState()
+{
+ QStateMachine machine;
+ machine.setObjectName("machine");
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initial");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QAbstractTransition *trans = new EventTransition(QEvent::User, &machine);
+ initialState->addTransition(trans);
+ QCOMPARE(trans->sourceState(), initialState);
+ QCOMPARE(trans->targetState(), static_cast<QAbstractState *>(&machine));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(initialState));
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: No common ancestor for targets and source of transition from state 'initial'");
+ QCoreApplication::processEvents();
+ QVERIFY(machine.configuration().isEmpty());
+ QVERIFY(!machine.isRunning());
+}
+
+void tst_QStateMachine::transitionFromRootState()
+{
+ QStateMachine machine;
+ QState *root = &machine;
+ QState *s1 = new QState(root);
+ EventTransition *trans = new EventTransition(QEvent::User, s1);
+ root->addTransition(trans);
+ QCOMPARE(trans->sourceState(), root);
+ QCOMPARE(trans->targetState(), static_cast<QAbstractState *>(s1));
+}
+
+void tst_QStateMachine::transitionEntersParent()
+{
+ QStateMachine machine;
+
+ QObject *entryController = new QObject(&machine);
+ entryController->setObjectName("entryController");
+ entryController->setProperty("greatGrandParentEntered", false);
+ entryController->setProperty("grandParentEntered", false);
+ entryController->setProperty("parentEntered", false);
+ entryController->setProperty("stateEntered", false);
+
+ QState *greatGrandParent = new QState();
+ greatGrandParent->setObjectName("grandParent");
+ greatGrandParent->assignProperty(entryController, "greatGrandParentEntered", true);
+ machine.addState(greatGrandParent);
+ machine.setInitialState(greatGrandParent);
+
+ QState *grandParent = new QState(greatGrandParent);
+ grandParent->setObjectName("grandParent");
+ grandParent->assignProperty(entryController, "grandParentEntered", true);
+
+ QState *parent = new QState(grandParent);
+ parent->setObjectName("parent");
+ parent->assignProperty(entryController, "parentEntered", true);
+
+ QState *state = new QState(parent);
+ state->setObjectName("state");
+ state->assignProperty(entryController, "stateEntered", true);
+
+ QState *initialStateOfGreatGrandParent = new QState(greatGrandParent);
+ initialStateOfGreatGrandParent->setObjectName("initialStateOfGreatGrandParent");
+ greatGrandParent->setInitialState(initialStateOfGreatGrandParent);
+
+ initialStateOfGreatGrandParent->addTransition(new EventTransition(QEvent::User, state));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), true);
+ QCOMPARE(entryController->property("grandParentEntered").toBool(), false);
+ QCOMPARE(entryController->property("parentEntered").toBool(), false);
+ QCOMPARE(entryController->property("stateEntered").toBool(), false);
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(greatGrandParent));
+ QVERIFY(machine.configuration().contains(initialStateOfGreatGrandParent));
+
+ entryController->setProperty("greatGrandParentEntered", false);
+ entryController->setProperty("grandParentEntered", false);
+ entryController->setProperty("parentEntered", false);
+ entryController->setProperty("stateEntered", false);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), false);
+ QCOMPARE(entryController->property("grandParentEntered").toBool(), true);
+ QCOMPARE(entryController->property("parentEntered").toBool(), true);
+ QCOMPARE(entryController->property("stateEntered").toBool(), true);
+ QCOMPARE(machine.configuration().count(), 4);
+ QVERIFY(machine.configuration().contains(greatGrandParent));
+ QVERIFY(machine.configuration().contains(grandParent));
+ QVERIFY(machine.configuration().contains(parent));
+ QVERIFY(machine.configuration().contains(state));
+}
+
+void tst_QStateMachine::defaultErrorState()
+{
+ QStateMachine machine;
+ QCOMPARE(machine.errorState(), reinterpret_cast<QAbstractState *>(0));
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("MyInitialState");
+
+ machine.addState(brokenState);
+ machine.setInitialState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'MyInitialState'");
+
+ // initialState has no initial state
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
+ QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'MyInitialState'"));
+ QCOMPARE(machine.isRunning(), false);
+}
+
+class CustomErrorState: public QState
+{
+public:
+ CustomErrorState(QStateMachine *machine, QState *parent = 0)
+ : QState(parent), error(QStateMachine::NoError), m_machine(machine)
+ {
+ }
+
+ void onEntry(QEvent *)
+ {
+ error = m_machine->error();
+ errorString = m_machine->errorString();
+ }
+
+ QStateMachine::Error error;
+ QString errorString;
+
+private:
+ QStateMachine *m_machine;
+};
+
+void tst_QStateMachine::customGlobalErrorState()
+{
+ QStateMachine machine;
+
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ customErrorState->setObjectName("customErrorState");
+ machine.addState(customErrorState);
+ machine.setErrorState(customErrorState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+ machine.addState(brokenState);
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.errorState(), static_cast<QAbstractState*>(customErrorState));
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(initialState));
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(initialState));
+
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(customErrorState));
+ QCOMPARE(customErrorState->error, QStateMachine::NoInitialStateError);
+ QCOMPARE(customErrorState->errorString, QString::fromLatin1("Missing initial state in compound state 'brokenState'"));
+ QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
+ QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'brokenState'"));
+}
+
+void tst_QStateMachine::customLocalErrorStateInBrokenState()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ machine.addState(customErrorState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+ machine.addState(brokenState);
+ brokenState->setErrorState(customErrorState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(customErrorState));
+ QCOMPARE(customErrorState->error, QStateMachine::NoInitialStateError);
+}
+
+void tst_QStateMachine::customLocalErrorStateInOtherState()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ machine.addState(customErrorState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ QTest::ignoreMessage(QtWarningMsg, "QState::setErrorState: error state cannot belong to a different state machine");
+ initialState->setErrorState(customErrorState);
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+
+ machine.addState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'brokenState'");
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+}
+
+void tst_QStateMachine::customLocalErrorStateInParentOfBrokenState()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ machine.addState(customErrorState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *parentOfBrokenState = new QState();
+ machine.addState(parentOfBrokenState);
+ parentOfBrokenState->setObjectName("parentOfBrokenState");
+ parentOfBrokenState->setErrorState(customErrorState);
+
+ QState *brokenState = new QState(parentOfBrokenState);
+ brokenState->setObjectName("brokenState");
+ parentOfBrokenState->setInitialState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(customErrorState));
+}
+
+void tst_QStateMachine::customLocalErrorStateOverridesParent()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorStateForParent = new CustomErrorState(&machine);
+ machine.addState(customErrorStateForParent);
+
+ CustomErrorState *customErrorStateForBrokenState = new CustomErrorState(&machine);
+ machine.addState(customErrorStateForBrokenState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *parentOfBrokenState = new QState();
+ machine.addState(parentOfBrokenState);
+ parentOfBrokenState->setObjectName("parentOfBrokenState");
+ parentOfBrokenState->setErrorState(customErrorStateForParent);
+
+ QState *brokenState = new QState(parentOfBrokenState);
+ brokenState->setObjectName("brokenState");
+ brokenState->setErrorState(customErrorStateForBrokenState);
+ parentOfBrokenState->setInitialState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(customErrorStateForBrokenState));
+ QCOMPARE(customErrorStateForBrokenState->error, QStateMachine::NoInitialStateError);
+ QCOMPARE(customErrorStateForParent->error, QStateMachine::NoError);
+}
+
+void tst_QStateMachine::errorStateHasChildren()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ customErrorState->setObjectName("customErrorState");
+ machine.addState(customErrorState);
+
+ machine.setErrorState(customErrorState);
+
+ QState *childOfErrorState = new QState(customErrorState);
+ childOfErrorState->setObjectName("childOfErrorState");
+ customErrorState->setInitialState(childOfErrorState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+ machine.addState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(customErrorState));
+ QVERIFY(machine.configuration().contains(childOfErrorState));
+}
+
+
+void tst_QStateMachine::errorStateHasErrors()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ customErrorState->setObjectName("customErrorState");
+ machine.addState(customErrorState);
+
+ machine.setErrorState(customErrorState);
+
+ QState *childOfErrorState = new QState(customErrorState);
+ childOfErrorState->setObjectName("childOfErrorState");
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+ machine.addState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'customErrorState'");
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+ QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
+ QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'customErrorState'"));
+}
+
+void tst_QStateMachine::errorStateIsRootState()
+{
+ QStateMachine machine;
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::setErrorState: root state cannot be error state");
+ machine.setErrorState(&machine);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+ machine.addState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'brokenState'");
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+}
+
+void tst_QStateMachine::errorStateEntersParentFirst()
+{
+ QStateMachine machine;
+
+ QObject *entryController = new QObject(&machine);
+ entryController->setObjectName("entryController");
+ entryController->setProperty("greatGrandParentEntered", false);
+ entryController->setProperty("grandParentEntered", false);
+ entryController->setProperty("parentEntered", false);
+ entryController->setProperty("errorStateEntered", false);
+
+ QState *greatGrandParent = new QState();
+ greatGrandParent->setObjectName("greatGrandParent");
+ greatGrandParent->assignProperty(entryController, "greatGrandParentEntered", true);
+ machine.addState(greatGrandParent);
+ machine.setInitialState(greatGrandParent);
+
+ QState *grandParent = new QState(greatGrandParent);
+ grandParent->setObjectName("grandParent");
+ grandParent->assignProperty(entryController, "grandParentEntered", true);
+
+ QState *parent = new QState(grandParent);
+ parent->setObjectName("parent");
+ parent->assignProperty(entryController, "parentEntered", true);
+
+ QState *errorState = new QState(parent);
+ errorState->setObjectName("errorState");
+ errorState->assignProperty(entryController, "errorStateEntered", true);
+ machine.setErrorState(errorState);
+
+ QState *initialStateOfGreatGrandParent = new QState(greatGrandParent);
+ initialStateOfGreatGrandParent->setObjectName("initialStateOfGreatGrandParent");
+ greatGrandParent->setInitialState(initialStateOfGreatGrandParent);
+
+ QState *brokenState = new QState(greatGrandParent);
+ brokenState->setObjectName("brokenState");
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialStateOfGreatGrandParent->addTransition(new EventTransition(QEvent::User, brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), true);
+ QCOMPARE(entryController->property("grandParentEntered").toBool(), false);
+ QCOMPARE(entryController->property("parentEntered").toBool(), false);
+ QCOMPARE(entryController->property("errorStateEntered").toBool(), false);
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(greatGrandParent));
+ QVERIFY(machine.configuration().contains(initialStateOfGreatGrandParent));
+
+ entryController->setProperty("greatGrandParentEntered", false);
+ entryController->setProperty("grandParentEntered", false);
+ entryController->setProperty("parentEntered", false);
+ entryController->setProperty("errorStateEntered", false);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), false);
+ QCOMPARE(entryController->property("grandParentEntered").toBool(), true);
+ QCOMPARE(entryController->property("parentEntered").toBool(), true);
+ QCOMPARE(entryController->property("errorStateEntered").toBool(), true);
+ QCOMPARE(machine.configuration().count(), 4);
+ QVERIFY(machine.configuration().contains(greatGrandParent));
+ QVERIFY(machine.configuration().contains(grandParent));
+ QVERIFY(machine.configuration().contains(parent));
+ QVERIFY(machine.configuration().contains(errorState));
+}
+
+void tst_QStateMachine::customErrorStateIsNull()
+{
+ QStateMachine machine;
+ machine.setErrorState(0);
+
+ QState *initialState = new QState();
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ machine.addState(brokenState);
+
+ new QState(brokenState);
+ initialState->addTransition(new EventTransition(QEvent::User, brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state ''");
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.errorState(), reinterpret_cast<QAbstractState *>(0));
+ QCOMPARE(machine.isRunning(), false);
+}
+
+void tst_QStateMachine::clearError()
+{
+ QStateMachine machine;
+ machine.setErrorState(new QState(&machine)); // avoid warnings
+
+ QState *brokenState = new QState(&machine);
+ brokenState->setObjectName("brokenState");
+ machine.setInitialState(brokenState);
+ new QState(brokenState);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
+ QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'brokenState'"));
+
+ machine.clearError();
+
+ QCOMPARE(machine.error(), QStateMachine::NoError);
+ QVERIFY(machine.errorString().isEmpty());
+}
+
+void tst_QStateMachine::historyStateAsInitialState()
+{
+ QStateMachine machine;
+
+ QHistoryState *hs = new QHistoryState(&machine);
+ machine.setInitialState(hs);
+
+ QState *s1 = new QState(&machine);
+ hs->setDefaultState(s1);
+
+ QState *s2 = new QState(&machine);
+
+ QHistoryState *s2h = new QHistoryState(s2);
+ s2->setInitialState(s2h);
+
+ QState *s21 = new QState(s2);
+ s2h->setDefaultState(s21);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s21));
+}
+
+void tst_QStateMachine::historyStateHasNowhereToGo()
+{
+ QStateMachine machine;
+
+ QState *initialState = new QState(&machine);
+ machine.setInitialState(initialState);
+ machine.setErrorState(new QState(&machine)); // avoid warnings
+
+ QState *brokenState = new QState(&machine);
+ brokenState->setObjectName("brokenState");
+ brokenState->setInitialState(new QState(brokenState));
+
+ QHistoryState *historyState = new QHistoryState(brokenState);
+ historyState->setObjectName("historyState");
+ initialState->addTransition(new EventTransition(QEvent::User, historyState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(machine.errorState()));
+ QCOMPARE(machine.error(), QStateMachine::NoDefaultStateInHistoryStateError);
+ QCOMPARE(machine.errorString(), QString::fromLatin1("Missing default state in history state 'historyState'"));
+}
+
+void tst_QStateMachine::historyStateAfterRestart()
+{
+ // QTBUG-8842
+ QStateMachine machine;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+ QState *s2 = new QState(&machine);
+ QState *s21 = new QState(s2);
+ QState *s22 = new QState(s2);
+ QHistoryState *s2h = new QHistoryState(s2);
+ s2h->setDefaultState(s21);
+ s1->addTransition(new EventTransition(QEvent::User, s2h));
+ s21->addTransition(new EventTransition(QEvent::User, s22));
+ s2->addTransition(new EventTransition(QEvent::User, s1));
+
+ for (int x = 0; x < 2; ++x) {
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ // s1 -> s2h -> s21 (default state)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ // This used to fail on the 2nd run because the
+ // history had not been cleared.
+ QVERIFY(machine.configuration().contains(s21));
+
+ // s21 -> s22
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+
+ // s2 -> s1 (s22 saved in s2h)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ // s1 -> s2h -> s22 (saved state)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ machine.stop();
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ }
+}
+
+void tst_QStateMachine::brokenStateIsNeverEntered()
+{
+ QStateMachine machine;
+
+ QObject *entryController = new QObject(&machine);
+ entryController->setProperty("brokenStateEntered", false);
+ entryController->setProperty("childStateEntered", false);
+ entryController->setProperty("errorStateEntered", false);
+
+ QState *initialState = new QState(&machine);
+ machine.setInitialState(initialState);
+
+ QState *errorState = new QState(&machine);
+ errorState->assignProperty(entryController, "errorStateEntered", true);
+ machine.setErrorState(errorState);
+
+ QState *brokenState = new QState(&machine);
+ brokenState->assignProperty(entryController, "brokenStateEntered", true);
+ brokenState->setObjectName("brokenState");
+
+ QState *childState = new QState(brokenState);
+ childState->assignProperty(entryController, "childStateEntered", true);
+
+ initialState->addTransition(new EventTransition(QEvent::User, brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(entryController->property("errorStateEntered").toBool(), true);
+ QCOMPARE(entryController->property("brokenStateEntered").toBool(), false);
+ QCOMPARE(entryController->property("childStateEntered").toBool(), false);
+}
+
+void tst_QStateMachine::transitionToStateNotInGraph()
+{
+ QStateMachine machine;
+
+ QState *initialState = new QState(&machine);
+ initialState->setObjectName("initialState");
+ machine.setInitialState(initialState);
+
+ QState independentState;
+ independentState.setObjectName("independentState");
+ initialState->addTransition(&independentState);
+
+ machine.start();
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: No common ancestor for targets and source of transition from state 'initialState'");
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+}
+
+void tst_QStateMachine::customErrorStateNotInGraph()
+{
+ QStateMachine machine;
+
+ QState errorState;
+ errorState.setObjectName("errorState");
+ QTest::ignoreMessage(QtWarningMsg, "QState::setErrorState: error state cannot belong to a different state machine");
+ machine.setErrorState(&errorState);
+ QCOMPARE(machine.errorState(), reinterpret_cast<QAbstractState *>(0));
+
+ QState *initialBrokenState = new QState(&machine);
+ initialBrokenState->setObjectName("initialBrokenState");
+ machine.setInitialState(initialBrokenState);
+ new QState(initialBrokenState);
+
+ machine.start();
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'initialBrokenState'");
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+}
+
+void tst_QStateMachine::restoreProperties()
+{
+ QStateMachine machine;
+ QCOMPARE(machine.globalRestorePolicy(), QStateMachine::DontRestoreProperties);
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("a", 1);
+ object->setProperty("b", 2);
+
+ QState *S1 = new QState();
+ S1->setObjectName("S1");
+ S1->assignProperty(object, "a", 3);
+ machine.addState(S1);
+
+ QState *S2 = new QState();
+ S2->setObjectName("S2");
+ S2->assignProperty(object, "b", 5);
+ machine.addState(S2);
+
+ QState *S3 = new QState();
+ S3->setObjectName("S3");
+ machine.addState(S3);
+
+ QFinalState *S4 = new QFinalState();
+ machine.addState(S4);
+
+ S1->addTransition(new EventTransition(QEvent::User, S2));
+ S2->addTransition(new EventTransition(QEvent::User, S3));
+ S3->addTransition(S4);
+
+ machine.setInitialState(S1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 3);
+ QCOMPARE(object->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 1);
+ QCOMPARE(object->property("b").toInt(), 5);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 1);
+ QCOMPARE(object->property("b").toInt(), 2);
+}
+
+void tst_QStateMachine::rootState()
+{
+ QStateMachine machine;
+ QCOMPARE(qobject_cast<QState*>(machine.parentState()), (QState*)0);
+ QCOMPARE(machine.machine(), (QStateMachine*)0);
+
+ QState *s1 = new QState(&machine);
+ QCOMPARE(s1->parentState(), static_cast<QState*>(&machine));
+
+ QState *s2 = new QState();
+ s2->setParent(&machine);
+ QCOMPARE(s2->parentState(), static_cast<QState*>(&machine));
+}
+
+void tst_QStateMachine::machineWithParent()
+{
+ QObject object;
+ QStateMachine *machine = new QStateMachine(&object);
+ QCOMPARE(machine->parent(), &object);
+ QCOMPARE(machine->parentState(), static_cast<QState*>(0));
+}
+
+void tst_QStateMachine::addAndRemoveState()
+{
+#ifdef QT_BUILD_INTERNAL
+ QStateMachine machine;
+ QStatePrivate *root_d = QStatePrivate::get(&machine);
+ QCOMPARE(root_d->childStates().size(), 0);
+
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::addState: cannot add null state");
+ machine.addState(0);
+
+ QState *s1 = new QState();
+ QCOMPARE(s1->parentState(), (QState*)0);
+ QCOMPARE(s1->machine(), (QStateMachine*)0);
+ machine.addState(s1);
+ QCOMPARE(s1->machine(), static_cast<QStateMachine*>(&machine));
+ QCOMPARE(s1->parentState(), static_cast<QState*>(&machine));
+ QCOMPARE(root_d->childStates().size(), 1);
+ QCOMPARE(root_d->childStates().at(0), (QAbstractState*)s1);
+
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::addState: state has already been added to this machine");
+ machine.addState(s1);
+
+ QState *s2 = new QState();
+ QCOMPARE(s2->parentState(), (QState*)0);
+ machine.addState(s2);
+ QCOMPARE(s2->parentState(), static_cast<QState*>(&machine));
+ QCOMPARE(root_d->childStates().size(), 2);
+ QCOMPARE(root_d->childStates().at(0), (QAbstractState*)s1);
+ QCOMPARE(root_d->childStates().at(1), (QAbstractState*)s2);
+
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::addState: state has already been added to this machine");
+ machine.addState(s2);
+
+ machine.removeState(s1);
+ QCOMPARE(s1->parentState(), (QState*)0);
+ QCOMPARE(root_d->childStates().size(), 1);
+ QCOMPARE(root_d->childStates().at(0), (QAbstractState*)s2);
+
+ machine.removeState(s2);
+ QCOMPARE(s2->parentState(), (QState*)0);
+ QCOMPARE(root_d->childStates().size(), 0);
+
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::removeState: cannot remove null state");
+ machine.removeState(0);
+
+ {
+ QStateMachine machine2;
+ {
+ QString warning;
+ warning.sprintf("QStateMachine::removeState: state %p's machine (%p) is different from this machine (%p)",
+ &machine2, (void*)0, &machine);
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
+ machine.removeState(&machine2);
+ }
+ // ### check this behavior
+ machine.addState(&machine2);
+ QCOMPARE(machine2.parent(), (QObject*)&machine);
+ }
+
+ delete s1;
+ delete s2;
+ // ### how to deal with this?
+ // machine.removeState(machine.errorState());
+#endif
+}
+
+void tst_QStateMachine::stateEntryAndExit()
+{
+ // Two top-level states
+ {
+ QStateMachine machine;
+
+ TestState *s1 = new TestState(&machine);
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: cannot add transition to null state");
+ s1->addTransition((QAbstractState*)0);
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: cannot add null transition");
+ s1->addTransition((QAbstractTransition*)0);
+ QTest::ignoreMessage(QtWarningMsg, "QState::removeTransition: cannot remove null transition");
+ s1->removeTransition((QAbstractTransition*)0);
+
+ TestState *s2 = new TestState(&machine);
+ QFinalState *s3 = new QFinalState(&machine);
+
+ TestTransition *t = new TestTransition(s2);
+ QCOMPARE(t->machine(), (QStateMachine*)0);
+ QCOMPARE(t->sourceState(), (QState*)0);
+ QCOMPARE(t->targetState(), (QAbstractState*)s2);
+ QCOMPARE(t->targetStates().size(), 1);
+ QCOMPARE(t->targetStates().at(0), (QAbstractState*)s2);
+ t->setTargetState(0);
+ QCOMPARE(t->targetState(), (QAbstractState*)0);
+ QVERIFY(t->targetStates().isEmpty());
+ t->setTargetState(s2);
+ QCOMPARE(t->targetState(), (QAbstractState*)s2);
+ QTest::ignoreMessage(QtWarningMsg, "QAbstractTransition::setTargetStates: target state(s) cannot be null");
+ t->setTargetStates(QList<QAbstractState*>() << 0);
+ QCOMPARE(t->targetState(), (QAbstractState*)s2);
+ t->setTargetStates(QList<QAbstractState*>() << s2);
+ QCOMPARE(t->targetState(), (QAbstractState*)s2);
+ QCOMPARE(t->targetStates().size(), 1);
+ QCOMPARE(t->targetStates().at(0), (QAbstractState*)s2);
+ s1->addTransition(t);
+ QCOMPARE(t->sourceState(), (QState*)s1);
+ QCOMPARE(t->machine(), &machine);
+
+ {
+ QAbstractTransition *trans = s2->addTransition(s3);
+ QVERIFY(trans != 0);
+ QCOMPARE(trans->sourceState(), (QState*)s2);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s3);
+ {
+ QString warning;
+ warning.sprintf("QState::removeTransition: transition %p's source state (%p) is different from this state (%p)", trans, s2, s1);
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
+ s1->removeTransition(trans);
+ }
+ s2->removeTransition(trans);
+ QCOMPARE(trans->sourceState(), (QState*)0);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s3);
+ s2->addTransition(trans);
+ QCOMPARE(trans->sourceState(), (QState*)s2);
+ }
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s1);
+ QCOMPARE(machine.initialState(), (QAbstractState*)s1);
+ {
+ QString warning;
+ warning.sprintf("QState::setInitialState: state %p is not a child of this state (%p)", &machine, &machine);
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
+ machine.setInitialState(&machine);
+ QCOMPARE(machine.initialState(), (QAbstractState*)s1);
+ }
+ QVERIFY(machine.configuration().isEmpty());
+ globalTick = 0;
+ QVERIFY(!machine.isRunning());
+ QSignalSpy s1EnteredSpy(s1, SIGNAL(entered()));
+ QSignalSpy s1ExitedSpy(s1, SIGNAL(exited()));
+ QSignalSpy tTriggeredSpy(t, SIGNAL(triggered()));
+ QSignalSpy s2EnteredSpy(s2, SIGNAL(entered()));
+ QSignalSpy s2ExitedSpy(s2, SIGNAL(exited()));
+ machine.start();
+
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QTRY_COMPARE(stoppedSpy.count(), 0);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s3));
+
+ // s1 is entered
+ QCOMPARE(s1->events.count(), 2);
+ QCOMPARE(s1->events.at(0).first, 0);
+ QCOMPARE(s1->events.at(0).second, TestState::Entry);
+ // s1 is exited
+ QCOMPARE(s1->events.at(1).first, 1);
+ QCOMPARE(s1->events.at(1).second, TestState::Exit);
+ // t is triggered
+ QCOMPARE(t->triggers.count(), 1);
+ QCOMPARE(t->triggers.at(0), 2);
+ // s2 is entered
+ QCOMPARE(s2->events.count(), 2);
+ QCOMPARE(s2->events.at(0).first, 3);
+ QCOMPARE(s2->events.at(0).second, TestState::Entry);
+ // s2 is exited
+ QCOMPARE(s2->events.at(1).first, 4);
+ QCOMPARE(s2->events.at(1).second, TestState::Exit);
+
+ QCOMPARE(s1EnteredSpy.count(), 1);
+ QCOMPARE(s1ExitedSpy.count(), 1);
+ QCOMPARE(tTriggeredSpy.count(), 1);
+ QCOMPARE(s2EnteredSpy.count(), 1);
+ QCOMPARE(s2ExitedSpy.count(), 1);
+ }
+ // Two top-level states, one has two child states
+ {
+ QStateMachine machine;
+
+ TestState *s1 = new TestState(&machine);
+ TestState *s11 = new TestState(s1);
+ TestState *s12 = new TestState(s1);
+ TestState *s2 = new TestState(&machine);
+ QFinalState *s3 = new QFinalState(&machine);
+ s1->setInitialState(s11);
+ TestTransition *t1 = new TestTransition(s12);
+ s11->addTransition(t1);
+ TestTransition *t2 = new TestTransition(s2);
+ s12->addTransition(t2);
+ s2->addTransition(s3);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s1);
+ globalTick = 0;
+ machine.start();
+
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s3));
+
+ // s1 is entered
+ QCOMPARE(s1->events.count(), 2);
+ QCOMPARE(s1->events.at(0).first, 0);
+ QCOMPARE(s1->events.at(0).second, TestState::Entry);
+ // s11 is entered
+ QCOMPARE(s11->events.count(), 2);
+ QCOMPARE(s11->events.at(0).first, 1);
+ QCOMPARE(s11->events.at(0).second, TestState::Entry);
+ // s11 is exited
+ QCOMPARE(s11->events.at(1).first, 2);
+ QCOMPARE(s11->events.at(1).second, TestState::Exit);
+ // t1 is triggered
+ QCOMPARE(t1->triggers.count(), 1);
+ QCOMPARE(t1->triggers.at(0), 3);
+ // s12 is entered
+ QCOMPARE(s12->events.count(), 2);
+ QCOMPARE(s12->events.at(0).first, 4);
+ QCOMPARE(s12->events.at(0).second, TestState::Entry);
+ // s12 is exited
+ QCOMPARE(s12->events.at(1).first, 5);
+ QCOMPARE(s12->events.at(1).second, TestState::Exit);
+ // s1 is exited
+ QCOMPARE(s1->events.at(1).first, 6);
+ QCOMPARE(s1->events.at(1).second, TestState::Exit);
+ // t2 is triggered
+ QCOMPARE(t2->triggers.count(), 1);
+ QCOMPARE(t2->triggers.at(0), 7);
+ // s2 is entered
+ QCOMPARE(s2->events.count(), 2);
+ QCOMPARE(s2->events.at(0).first, 8);
+ QCOMPARE(s2->events.at(0).second, TestState::Entry);
+ // s2 is exited
+ QCOMPARE(s2->events.at(1).first, 9);
+ QCOMPARE(s2->events.at(1).second, TestState::Exit);
+ }
+}
+
+void tst_QStateMachine::assignProperty()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+
+ QTest::ignoreMessage(QtWarningMsg, "QState::assignProperty: cannot assign property 'foo' of null object");
+ s1->assignProperty(0, "foo", QVariant());
+
+ s1->assignProperty(s1, "objectName", "s1");
+ QFinalState *s2 = new QFinalState(&machine);
+ s1->addTransition(s2);
+ machine.setInitialState(s1);
+ machine.start();
+ QTRY_COMPARE(s1->objectName(), QString::fromLatin1("s1"));
+
+ s1->assignProperty(s1, "objectName", "foo");
+ machine.start();
+ QTRY_COMPARE(s1->objectName(), QString::fromLatin1("foo"));
+
+ s1->assignProperty(s1, "noSuchProperty", 123);
+ machine.start();
+ QTRY_COMPARE(s1->dynamicPropertyNames().size(), 1);
+ QCOMPARE(s1->dynamicPropertyNames().at(0), QByteArray("noSuchProperty"));
+ QCOMPARE(s1->objectName(), QString::fromLatin1("foo"));
+
+ {
+ QSignalSpy propertiesAssignedSpy(s1, SIGNAL(propertiesAssigned()));
+ machine.start();
+ QTRY_COMPARE(propertiesAssignedSpy.count(), 1);
+ }
+
+ // nested states
+ {
+ QState *s11 = new QState(s1);
+ QString str = QString::fromLatin1("set by nested state");
+ s11->assignProperty(s11, "objectName", str);
+ s1->setInitialState(s11);
+ machine.start();
+ QTRY_COMPARE(s11->objectName(), str);
+ }
+}
+
+void tst_QStateMachine::assignPropertyWithAnimation()
+{
+ // Single animation
+ {
+ QStateMachine machine;
+ QVERIFY(machine.isAnimated());
+ machine.setAnimated(false);
+ QVERIFY(!machine.isAnimated());
+ machine.setAnimated(true);
+ QVERIFY(machine.isAnimated());
+ QObject obj;
+ obj.setProperty("foo", 321);
+ obj.setProperty("bar", 654);
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(&obj, "foo", 123);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(&obj, "foo", 456);
+ s2->assignProperty(&obj, "bar", 789);
+ QAbstractTransition *trans = s1->addTransition(s2);
+ QVERIFY(trans->animations().isEmpty());
+ QTest::ignoreMessage(QtWarningMsg, "QAbstractTransition::addAnimation: cannot add null animation");
+ trans->addAnimation(0);
+ QPropertyAnimation anim(&obj, "foo");
+ anim.setDuration(250);
+ trans->addAnimation(&anim);
+ QCOMPARE(trans->animations().size(), 1);
+ QCOMPARE(trans->animations().at(0), (QAbstractAnimation*)&anim);
+ QCOMPARE(anim.parent(), (QObject*)0);
+ QTest::ignoreMessage(QtWarningMsg, "QAbstractTransition::removeAnimation: cannot remove null animation");
+ trans->removeAnimation(0);
+ trans->removeAnimation(&anim);
+ QVERIFY(trans->animations().isEmpty());
+ trans->addAnimation(&anim);
+ QCOMPARE(trans->animations().size(), 1);
+ QCOMPARE(trans->animations().at(0), (QAbstractAnimation*)&anim);
+ QFinalState *s3 = new QFinalState(&machine);
+ s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
+
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(obj.property("foo").toInt(), 456);
+ QCOMPARE(obj.property("bar").toInt(), 789);
+ }
+ // Two animations
+ {
+ QStateMachine machine;
+ QObject obj;
+ obj.setProperty("foo", 321);
+ obj.setProperty("bar", 654);
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(&obj, "foo", 123);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(&obj, "foo", 456);
+ s2->assignProperty(&obj, "bar", 789);
+ QAbstractTransition *trans = s1->addTransition(s2);
+ QPropertyAnimation anim(&obj, "foo");
+ anim.setDuration(150);
+ trans->addAnimation(&anim);
+ QPropertyAnimation anim2(&obj, "bar");
+ anim2.setDuration(150);
+ trans->addAnimation(&anim2);
+ QFinalState *s3 = new QFinalState(&machine);
+ s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
+
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(obj.property("foo").toInt(), 456);
+ QCOMPARE(obj.property("bar").toInt(), 789);
+ }
+ // Animation group
+ {
+ QStateMachine machine;
+ QObject obj;
+ obj.setProperty("foo", 321);
+ obj.setProperty("bar", 654);
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(&obj, "foo", 123);
+ s1->assignProperty(&obj, "bar", 321);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(&obj, "foo", 456);
+ s2->assignProperty(&obj, "bar", 654);
+ s2->assignProperty(&obj, "baz", 789);
+ QAbstractTransition *trans = s1->addTransition(s2);
+ QSequentialAnimationGroup group;
+ group.addAnimation(new QPropertyAnimation(&obj, "foo"));
+ group.addAnimation(new QPropertyAnimation(&obj, "bar"));
+ trans->addAnimation(&group);
+ QFinalState *s3 = new QFinalState(&machine);
+ s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
+
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(obj.property("foo").toInt(), 456);
+ QCOMPARE(obj.property("bar").toInt(), 654);
+ QCOMPARE(obj.property("baz").toInt(), 789);
+ }
+ // Nested states
+ {
+ QStateMachine machine;
+ QObject obj;
+ obj.setProperty("foo", 321);
+ obj.setProperty("bar", 654);
+ QState *s1 = new QState(&machine);
+ QCOMPARE(s1->childMode(), QState::ExclusiveStates);
+ s1->setChildMode(QState::ParallelStates);
+ QCOMPARE(s1->childMode(), QState::ParallelStates);
+ s1->setChildMode(QState::ExclusiveStates);
+ QCOMPARE(s1->childMode(), QState::ExclusiveStates);
+ QCOMPARE(s1->initialState(), (QAbstractState*)0);
+ s1->setObjectName("s1");
+ s1->assignProperty(&obj, "foo", 123);
+ s1->assignProperty(&obj, "bar", 456);
+ QState *s2 = new QState(&machine);
+ s2->setObjectName("s2");
+ s2->assignProperty(&obj, "foo", 321);
+ QState *s21 = new QState(s2);
+ s21->setObjectName("s21");
+ s21->assignProperty(&obj, "bar", 654);
+ QState *s22 = new QState(s2);
+ s22->setObjectName("s22");
+ s22->assignProperty(&obj, "bar", 789);
+ s2->setInitialState(s21);
+ QCOMPARE(s2->initialState(), (QAbstractState*)s21);
+
+ QAbstractTransition *trans = s1->addTransition(s2);
+ QPropertyAnimation anim(&obj, "foo");
+ anim.setDuration(500);
+ trans->addAnimation(&anim);
+ QPropertyAnimation anim2(&obj, "bar");
+ anim2.setDuration(250);
+ trans->addAnimation(&anim2);
+
+ s21->addTransition(s21, SIGNAL(propertiesAssigned()), s22);
+
+ QFinalState *s3 = new QFinalState(&machine);
+ s22->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
+
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(obj.property("foo").toInt(), 321);
+ QCOMPARE(obj.property("bar").toInt(), 789);
+ }
+ // Aborted animation
+ {
+ QStateMachine machine;
+ SignalEmitter emitter;
+ QObject obj;
+ obj.setProperty("foo", 321);
+ obj.setProperty("bar", 654);
+ QState *group = new QState(&machine);
+ QState *s1 = new QState(group);
+ group->setInitialState(s1);
+ s1->assignProperty(&obj, "foo", 123);
+ QState *s2 = new QState(group);
+ s2->assignProperty(&obj, "foo", 456);
+ s2->assignProperty(&obj, "bar", 789);
+ QAbstractTransition *trans = s1->addTransition(&emitter, SIGNAL(signalWithNoArg()), s2);
+ QPropertyAnimation anim(&obj, "foo");
+ anim.setDuration(8000);
+ trans->addAnimation(&anim);
+ QPropertyAnimation anim2(&obj, "bar");
+ anim2.setDuration(8000);
+ trans->addAnimation(&anim2);
+ QState *s3 = new QState(group);
+ s3->assignProperty(&obj, "foo", 911);
+ s2->addTransition(&emitter, SIGNAL(signalWithNoArg()), s3);
+
+ machine.setInitialState(group);
+ machine.start();
+ QTRY_COMPARE(machine.configuration().contains(s1), true);
+ QSignalSpy propertiesAssignedSpy(s2, SIGNAL(propertiesAssigned()));
+ emitter.emitSignalWithNoArg();
+ QTRY_COMPARE(machine.configuration().contains(s2), true);
+ QVERIFY(propertiesAssignedSpy.isEmpty());
+ emitter.emitSignalWithNoArg(); // will cause animations from s1-->s2 to abort
+ QTRY_COMPARE(machine.configuration().contains(s3), true);
+ QVERIFY(propertiesAssignedSpy.isEmpty());
+ QCOMPARE(obj.property("foo").toInt(), 911);
+ QCOMPARE(obj.property("bar").toInt(), 789);
+ }
+}
+
+struct StringEvent : public QEvent
+{
+public:
+ StringEvent(const QString &val)
+ : QEvent(QEvent::Type(QEvent::User+2)),
+ value(val) {}
+
+ QString value;
+};
+
+class StringTransition : public QAbstractTransition
+{
+public:
+ StringTransition(const QString &value, QAbstractState *target)
+ : QAbstractTransition(), m_value(value)
+ { setTargetState(target); }
+
+protected:
+ virtual bool eventTest(QEvent *e)
+ {
+ if (e->type() != QEvent::Type(QEvent::User+2))
+ return false;
+ StringEvent *se = static_cast<StringEvent*>(e);
+ return (m_value == se->value) && (!m_cond.isValid() || (m_cond.indexIn(m_value) != -1));
+ }
+ virtual void onTransition(QEvent *) {}
+
+private:
+ QString m_value;
+ QRegExp m_cond;
+};
+
+class StringEventPoster : public QState
+{
+public:
+ StringEventPoster(const QString &value, QState *parent = 0)
+ : QState(parent), m_value(value), m_delay(-1) {}
+
+ void setString(const QString &value)
+ { m_value = value; }
+ void setDelay(int delay)
+ { m_delay = delay; }
+
+protected:
+ virtual void onEntry(QEvent *)
+ {
+ if (m_delay == -1)
+ machine()->postEvent(new StringEvent(m_value));
+ else
+ machine()->postDelayedEvent(new StringEvent(m_value), m_delay);
+ }
+ virtual void onExit(QEvent *) {}
+
+private:
+ QString m_value;
+ int m_delay;
+};
+
+void tst_QStateMachine::postEvent()
+{
+ for (int x = 0; x < 2; ++x) {
+ QStateMachine machine;
+ {
+ QEvent e(QEvent::None);
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::postEvent: cannot post event when the state machine is not running");
+ machine.postEvent(&e);
+ }
+ StringEventPoster *s1 = new StringEventPoster("a");
+ if (x == 1)
+ s1->setDelay(100);
+ QFinalState *s2 = new QFinalState;
+ s1->addTransition(new StringTransition("a", s2));
+ machine.addState(s1);
+ machine.addState(s2);
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ s1->setString("b");
+ QFinalState *s3 = new QFinalState();
+ machine.addState(s3);
+ s1->addTransition(new StringTransition("b", s3));
+ finishedSpy.clear();
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s3));
+ }
+}
+
+void tst_QStateMachine::cancelDelayedEvent()
+{
+ QStateMachine machine;
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::cancelDelayedEvent: the machine is not running");
+ QVERIFY(!machine.cancelDelayedEvent(-1));
+
+ QState *s1 = new QState(&machine);
+ QFinalState *s2 = new QFinalState(&machine);
+ s1->addTransition(new StringTransition("a", s2));
+ machine.setInitialState(s1);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ int id1 = machine.postDelayedEvent(new StringEvent("c"), 50000);
+ QVERIFY(id1 != -1);
+ int id2 = machine.postDelayedEvent(new StringEvent("b"), 25000);
+ QVERIFY(id2 != -1);
+ QVERIFY(id2 != id1);
+ int id3 = machine.postDelayedEvent(new StringEvent("a"), 100);
+ QVERIFY(id3 != -1);
+ QVERIFY(id3 != id2);
+ QVERIFY(machine.cancelDelayedEvent(id1));
+ QVERIFY(!machine.cancelDelayedEvent(id1));
+ QVERIFY(machine.cancelDelayedEvent(id2));
+ QVERIFY(!machine.cancelDelayedEvent(id2));
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+}
+
+void tst_QStateMachine::postDelayedEventAndStop()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QFinalState *s2 = new QFinalState(&machine);
+ s1->addTransition(new StringTransition("a", s2));
+ machine.setInitialState(s1);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ int id1 = machine.postDelayedEvent(new StringEvent("a"), 0);
+ QVERIFY(id1 != -1);
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ machine.stop();
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 2);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ int id2 = machine.postDelayedEvent(new StringEvent("a"), 1000);
+ QVERIFY(id2 != -1);
+ machine.stop();
+ QTRY_COMPARE(stoppedSpy.count(), 2);
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 3);
+ QTestEventLoop::instance().enterLoop(2);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+}
+
+void tst_QStateMachine::stopAndPostEvent()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ machine.stop();
+ QCOMPARE(stoppedSpy.count(), 0);
+ machine.postEvent(new QEvent(QEvent::User));
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ QCoreApplication::processEvents();
+}
+
+void tst_QStateMachine::stateFinished()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QState *s1_1 = new QState(s1);
+ QFinalState *s1_2 = new QFinalState(s1);
+ s1_1->addTransition(s1_2);
+ s1->setInitialState(s1_1);
+ QFinalState *s2 = new QFinalState(&machine);
+ s1->addTransition(s1, SIGNAL(finished()), s2);
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+}
+
+void tst_QStateMachine::parallelStates()
+{
+ QStateMachine machine;
+
+ QState *s1 = new QState(QState::ParallelStates);
+ QCOMPARE(s1->childMode(), QState::ParallelStates);
+ QState *s1_1 = new QState(s1);
+ QState *s1_1_1 = new QState(s1_1);
+ QFinalState *s1_1_f = new QFinalState(s1_1);
+ s1_1_1->addTransition(s1_1_f);
+ s1_1->setInitialState(s1_1_1);
+ QState *s1_2 = new QState(s1);
+ QState *s1_2_1 = new QState(s1_2);
+ QFinalState *s1_2_f = new QFinalState(s1_2);
+ s1_2_1->addTransition(s1_2_f);
+ s1_2->setInitialState(s1_2_1);
+ {
+ QString warning;
+ warning.sprintf("QState::setInitialState: ignoring attempt to set initial state of parallel state group %p", s1);
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
+ s1->setInitialState(0);
+ }
+ machine.addState(s1);
+
+ QFinalState *s2 = new QFinalState();
+ machine.addState(s2);
+
+ s1->addTransition(s1, SIGNAL(finished()), s2);
+
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+}
+
+void tst_QStateMachine::parallelRootState()
+{
+ QStateMachine machine;
+ QState *root = &machine;
+ QCOMPARE(root->childMode(), QState::ExclusiveStates);
+ root->setChildMode(QState::ParallelStates);
+ QCOMPARE(root->childMode(), QState::ParallelStates);
+
+ QState *s1 = new QState(root);
+ QFinalState *s1_f = new QFinalState(s1);
+ s1->setInitialState(s1_f);
+ QState *s2 = new QState(root);
+ QFinalState *s2_f = new QFinalState(s2);
+ s2->setInitialState(s2_f);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::start: No initial state set for machine. Refusing to start.");
+ machine.start();
+ QCoreApplication::processEvents();
+ QEXPECT_FAIL("", "parallel root state is not supported (task 256587)", Continue);
+ QCOMPARE(startedSpy.count(), 1);
+}
+
+void tst_QStateMachine::allSourceToTargetConfigurations()
+{
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ s0->setObjectName("s0");
+ QState *s1 = new QState(s0);
+ s1->setObjectName("s1");
+ QState *s11 = new QState(s1);
+ s11->setObjectName("s11");
+ QState *s2 = new QState(s0);
+ s2->setObjectName("s2");
+ QState *s21 = new QState(s2);
+ s21->setObjectName("s21");
+ QState *s211 = new QState(s21);
+ s211->setObjectName("s211");
+ QFinalState *f = new QFinalState(&machine);
+ f->setObjectName("f");
+
+ s0->setInitialState(s1);
+ s1->setInitialState(s11);
+ s2->setInitialState(s21);
+ s21->setInitialState(s211);
+
+ s11->addTransition(new StringTransition("g", s211));
+ s1->addTransition(new StringTransition("a", s1));
+ s1->addTransition(new StringTransition("b", s11));
+ s1->addTransition(new StringTransition("c", s2));
+ s1->addTransition(new StringTransition("d", s0));
+ s1->addTransition(new StringTransition("f", s211));
+ s211->addTransition(new StringTransition("d", s21));
+ s211->addTransition(new StringTransition("g", s0));
+ s211->addTransition(new StringTransition("h", f));
+ s21->addTransition(new StringTransition("b", s211));
+ s2->addTransition(new StringTransition("c", s1));
+ s2->addTransition(new StringTransition("f", s11));
+ s0->addTransition(new StringTransition("e", s211));
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new StringEvent("a"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("b"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("c"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("d"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("e"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("f"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("g"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("h"));
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+}
+
+class TestSignalTransition : public QSignalTransition
+{
+public:
+ TestSignalTransition(QState *sourceState = 0)
+ : QSignalTransition(sourceState), m_sender(0)
+ {}
+ TestSignalTransition(QObject *sender, const char *signal,
+ QAbstractState *target)
+ : QSignalTransition(sender, signal), m_sender(0)
+ { setTargetState(target); }
+ QObject *senderReceived() const {
+ return m_sender;
+ }
+ int signalIndexReceived() const {
+ return m_signalIndex;
+ }
+ QVariantList argumentsReceived() const {
+ return m_args;
+ }
+protected:
+ bool eventTest(QEvent *e) {
+ if (!QSignalTransition::eventTest(e))
+ return false;
+ QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(e);
+ m_sender = se->sender();
+ m_signalIndex = se->signalIndex();
+ m_args = se->arguments();
+ return true;
+ }
+private:
+ QObject *m_sender;
+ int m_signalIndex;
+ QVariantList m_args;
+};
+
+void tst_QStateMachine::signalTransitions()
+{
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: sender cannot be null");
+ QCOMPARE(s0->addTransition(0, SIGNAL(noSuchSignal()), 0), (QSignalTransition*)0);
+
+ SignalEmitter emitter;
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: signal cannot be null");
+ QCOMPARE(s0->addTransition(&emitter, 0, 0), (QSignalTransition*)0);
+
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: cannot add transition to null state");
+ QCOMPARE(s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), 0), (QSignalTransition*)0);
+
+ QFinalState *s1 = new QFinalState(&machine);
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: no such signal SignalEmitter::noSuchSignal()");
+ QCOMPARE(s0->addTransition(&emitter, SIGNAL(noSuchSignal()), s1), (QSignalTransition*)0);
+
+ QSignalTransition *trans = s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), s1);
+ QVERIFY(trans != 0);
+ QCOMPARE(trans->sourceState(), s0);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s1);
+ QCOMPARE(trans->senderObject(), (QObject*)&emitter);
+ QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithNoArg())));
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ emitter.emitSignalWithNoArg();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+
+ emitter.emitSignalWithNoArg();
+
+ trans->setSignal(SIGNAL(signalWithIntArg(int)));
+ QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithIntArg(int))));
+ machine.start();
+ QCoreApplication::processEvents();
+ emitter.emitSignalWithIntArg(123);
+ QTRY_COMPARE(finishedSpy.count(), 2);
+
+ machine.start();
+ QCoreApplication::processEvents();
+ trans->setSignal(SIGNAL(signalWithNoArg()));
+ QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithNoArg())));
+ emitter.emitSignalWithNoArg();
+ QTRY_COMPARE(finishedSpy.count(), 3);
+
+ SignalEmitter emitter2;
+ machine.start();
+ QCoreApplication::processEvents();
+ trans->setSenderObject(&emitter2);
+ emitter2.emitSignalWithNoArg();
+ QTRY_COMPARE(finishedSpy.count(), 4);
+
+ machine.start();
+ QCoreApplication::processEvents();
+ QTest::ignoreMessage(QtWarningMsg, "QSignalTransition: no such signal: SignalEmitter::noSuchSignal()");
+ trans->setSignal(SIGNAL(noSuchSignal()));
+ QCOMPARE(trans->signal(), QByteArray(SIGNAL(noSuchSignal())));
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ SignalEmitter emitter;
+ QSignalTransition *trans = s0->addTransition(&emitter, "signalWithNoArg()", s1);
+ QVERIFY(trans != 0);
+ QCOMPARE(trans->sourceState(), s0);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s1);
+ QCOMPARE(trans->senderObject(), (QObject*)&emitter);
+ QCOMPARE(trans->signal(), QByteArray("signalWithNoArg()"));
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ emitter.emitSignalWithNoArg();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+
+ trans->setSignal("signalWithIntArg(int)");
+ QCOMPARE(trans->signal(), QByteArray("signalWithIntArg(int)"));
+ machine.start();
+ QCoreApplication::processEvents();
+ emitter.emitSignalWithIntArg(123);
+ QTRY_COMPARE(finishedSpy.count(), 2);
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ SignalEmitter emitter;
+ TestSignalTransition *trans = new TestSignalTransition(&emitter, SIGNAL(signalWithIntArg(int)), s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ emitter.emitSignalWithIntArg(123);
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(trans->senderReceived(), (QObject*)&emitter);
+ QCOMPARE(trans->signalIndexReceived(), emitter.metaObject()->indexOfSignal("signalWithIntArg(int)"));
+ QCOMPARE(trans->argumentsReceived().size(), 1);
+ QCOMPARE(trans->argumentsReceived().at(0).toInt(), 123);
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ SignalEmitter emitter;
+ TestSignalTransition *trans = new TestSignalTransition(&emitter, SIGNAL(signalWithStringArg(QString)), s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QString testString = QString::fromLatin1("hello");
+ emitter.emitSignalWithStringArg(testString);
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(trans->senderReceived(), (QObject*)&emitter);
+ QCOMPARE(trans->signalIndexReceived(), emitter.metaObject()->indexOfSignal("signalWithStringArg(QString)"));
+ QCOMPARE(trans->argumentsReceived().size(), 1);
+ QCOMPARE(trans->argumentsReceived().at(0).toString(), testString);
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ TestSignalTransition *trans = new TestSignalTransition();
+ QCOMPARE(trans->senderObject(), (QObject*)0);
+ QCOMPARE(trans->signal(), QByteArray());
+
+ SignalEmitter emitter;
+ trans->setSenderObject(&emitter);
+ QCOMPARE(trans->senderObject(), (QObject*)&emitter);
+ trans->setSignal(SIGNAL(signalWithNoArg()));
+ QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithNoArg())));
+ trans->setTargetState(s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ emitter.emitSignalWithNoArg();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+ // Multiple transitions for same (object,signal)
+ {
+ QStateMachine machine;
+ SignalEmitter emitter;
+ QState *s0 = new QState(&machine);
+ QState *s1 = new QState(&machine);
+ QSignalTransition *t0 = s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), s1);
+ QSignalTransition *t1 = s1->addTransition(&emitter, SIGNAL(signalWithNoArg()), s0);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ emitter.emitSignalWithNoArg();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ s0->removeTransition(t0);
+ emitter.emitSignalWithNoArg();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ emitter.emitSignalWithNoArg();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ s1->removeTransition(t1);
+ emitter.emitSignalWithNoArg();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ s0->addTransition(t0);
+ s1->addTransition(t1);
+ emitter.emitSignalWithNoArg();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+ }
+ // multiple signal transitions from same source
+ {
+ QStateMachine machine;
+ SignalEmitter emitter;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), s1);
+ QFinalState *s2 = new QFinalState(&machine);
+ s0->addTransition(&emitter, SIGNAL(signalWithIntArg(int)), s2);
+ QFinalState *s3 = new QFinalState(&machine);
+ s0->addTransition(&emitter, SIGNAL(signalWithStringArg(QString)), s3);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ emitter.emitSignalWithNoArg();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 2);
+ emitter.emitSignalWithIntArg(123);
+ QTRY_COMPARE(finishedSpy.count(), 2);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 3);
+ emitter.emitSignalWithStringArg("hello");
+ QTRY_COMPARE(finishedSpy.count(), 3);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s3));
+ }
+ // signature normalization
+ {
+ QStateMachine machine;
+ SignalEmitter emitter;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ QSignalTransition *t0 = s0->addTransition(&emitter, SIGNAL( signalWithNoArg( ) ), s1);
+ QVERIFY(t0 != 0);
+ QCOMPARE(t0->signal(), QByteArray(SIGNAL( signalWithNoArg( ) )));
+
+ QSignalTransition *t1 = s0->addTransition(&emitter, SIGNAL( signalWithStringArg( const QString & ) ), s1);
+ QVERIFY(t1 != 0);
+ QCOMPARE(t1->signal(), QByteArray(SIGNAL( signalWithStringArg( const QString & ) )));
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ emitter.emitSignalWithNoArg();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+}
+
+class TestEventTransition : public QEventTransition
+{
+public:
+ TestEventTransition(QState *sourceState = 0)
+ : QEventTransition(sourceState),
+ m_eventSource(0), m_eventType(QEvent::None)
+ {}
+ TestEventTransition(QObject *object, QEvent::Type type,
+ QAbstractState *target)
+ : QEventTransition(object, type),
+ m_eventSource(0), m_eventType(QEvent::None)
+ { setTargetState(target); }
+ QObject *eventSourceReceived() const {
+ return m_eventSource;
+ }
+ QEvent::Type eventTypeReceived() const {
+ return m_eventType;
+ }
+protected:
+ bool eventTest(QEvent *e) {
+ if (!QEventTransition::eventTest(e))
+ return false;
+ QStateMachine::WrappedEvent *we = static_cast<QStateMachine::WrappedEvent*>(e);
+ m_eventSource = we->object();
+ m_eventType = we->event()->type();
+ return true;
+ }
+private:
+ QObject *m_eventSource;
+ QEvent::Type m_eventType;
+};
+
+void tst_QStateMachine::eventTransitions()
+{
+ QPushButton button;
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QMouseEventTransition *trans;
+ trans = new QMouseEventTransition(&button, QEvent::MouseButtonPress, Qt::LeftButton);
+ QCOMPARE(trans->targetState(), (QAbstractState*)0);
+ trans->setTargetState(s1);
+ QCOMPARE(trans->eventType(), QEvent::MouseButtonPress);
+ QCOMPARE(trans->button(), Qt::LeftButton);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 1);
+
+ QTest::mousePress(&button, Qt::LeftButton);
+
+ trans->setEventType(QEvent::MouseButtonRelease);
+ QCOMPARE(trans->eventType(), QEvent::MouseButtonRelease);
+ machine.start();
+ QCoreApplication::processEvents();
+ QTest::mouseRelease(&button, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 2);
+
+ machine.start();
+ QCoreApplication::processEvents();
+ trans->setEventType(QEvent::MouseButtonPress);
+ QTest::mousePress(&button, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 3);
+
+ QPushButton button2;
+ machine.start();
+ QCoreApplication::processEvents();
+ trans->setEventSource(&button2);
+ QTest::mousePress(&button2, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 4);
+ }
+ for (int x = 0; x < 2; ++x) {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QEventTransition *trans;
+ if (x == 0) {
+ trans = new QEventTransition();
+ QCOMPARE(trans->eventSource(), (QObject*)0);
+ QCOMPARE(trans->eventType(), QEvent::None);
+ trans->setEventSource(&button);
+ trans->setEventType(QEvent::MouseButtonPress);
+ trans->setTargetState(s1);
+ } else if (x == 1) {
+ trans = new QEventTransition(&button, QEvent::MouseButtonPress);
+ trans->setTargetState(s1);
+ }
+ QCOMPARE(trans->eventSource(), (QObject*)&button);
+ QCOMPARE(trans->eventType(), QEvent::MouseButtonPress);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QMouseEventTransition *trans = new QMouseEventTransition();
+ QCOMPARE(trans->eventSource(), (QObject*)0);
+ QCOMPARE(trans->eventType(), QEvent::None);
+ QCOMPARE(trans->button(), Qt::NoButton);
+ trans->setEventSource(&button);
+ trans->setEventType(QEvent::MouseButtonPress);
+ trans->setButton(Qt::LeftButton);
+ trans->setTargetState(s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QKeyEventTransition *trans = new QKeyEventTransition(&button, QEvent::KeyPress, Qt::Key_A);
+ QCOMPARE(trans->eventType(), QEvent::KeyPress);
+ QCOMPARE(trans->key(), (int)Qt::Key_A);
+ trans->setTargetState(s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::keyPress(&button, Qt::Key_A);
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QKeyEventTransition *trans = new QKeyEventTransition();
+ QCOMPARE(trans->eventSource(), (QObject*)0);
+ QCOMPARE(trans->eventType(), QEvent::None);
+ QCOMPARE(trans->key(), 0);
+ trans->setEventSource(&button);
+ trans->setEventType(QEvent::KeyPress);
+ trans->setKey(Qt::Key_A);
+ trans->setTargetState(s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::keyPress(&button, Qt::Key_A);
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+ // Multiple transitions for same (object,event)
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QState *s1 = new QState(&machine);
+ QEventTransition *t0 = new QEventTransition(&button, QEvent::MouseButtonPress);
+ t0->setTargetState(s1);
+ s0->addTransition(t0);
+ QEventTransition *t1 = new QEventTransition(&button, QEvent::MouseButtonPress);
+ t1->setTargetState(s0);
+ s1->addTransition(t1);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ s0->removeTransition(t0);
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ s1->removeTransition(t1);
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ s0->addTransition(t0);
+ s1->addTransition(t1);
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+ }
+ // multiple event transitions from same source
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ QFinalState *s2 = new QFinalState(&machine);
+ QEventTransition *t0 = new QEventTransition(&button, QEvent::MouseButtonPress);
+ t0->setTargetState(s1);
+ s0->addTransition(t0);
+ QEventTransition *t1 = new QEventTransition(&button, QEvent::MouseButtonRelease);
+ t1->setTargetState(s2);
+ s0->addTransition(t1);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QTest::mousePress(&button, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 2);
+ QTest::mouseRelease(&button, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 2);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+ }
+ // custom event
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QEventTransition *trans = new QEventTransition(&button, QEvent::Type(QEvent::User+1));
+ trans->setTargetState(s1);
+ s0->addTransition(trans);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.setInitialState(s0);
+ machine.start();
+ QTest::ignoreMessage(QtWarningMsg, "QObject event transitions are not supported for custom types");
+ QTRY_COMPARE(startedSpy.count(), 1);
+ }
+ // custom transition
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ TestEventTransition *trans = new TestEventTransition(&button, QEvent::MouseButtonPress, s1);
+ s0->addTransition(trans);
+ QCOMPARE(trans->eventSourceReceived(), (QObject*)0);
+ QCOMPARE(trans->eventTypeReceived(), QEvent::None);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+
+ QCOMPARE(trans->eventSourceReceived(), (QObject*)&button);
+ QCOMPARE(trans->eventTypeReceived(), QEvent::MouseButtonPress);
+ }
+}
+
+void tst_QStateMachine::graphicsSceneEventTransitions()
+{
+ QGraphicsScene scene;
+ QGraphicsTextItem *textItem = scene.addText("foo");
+
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QFinalState *s2 = new QFinalState(&machine);
+ QEventTransition *t = new QEventTransition(textItem, QEvent::GraphicsSceneMouseMove);
+ t->setTargetState(s2);
+ s1->addTransition(t);
+ machine.setInitialState(s1);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QVERIFY(finishedSpy.count() == 0);
+ QGraphicsSceneMouseEvent mouseEvent(QEvent::GraphicsSceneMouseMove);
+ scene.sendEvent(textItem, &mouseEvent);
+ QTRY_COMPARE(finishedSpy.count(), 1);
+}
+
+void tst_QStateMachine::historyStates()
+{
+ for (int x = 0; x < 2; ++x) {
+ QStateMachine machine;
+ QState *root = &machine;
+ QState *s0 = new QState(root);
+ QState *s00 = new QState(s0);
+ QState *s01 = new QState(s0);
+ QHistoryState *s0h;
+ if (x == 0) {
+ s0h = new QHistoryState(s0);
+ QCOMPARE(s0h->historyType(), QHistoryState::ShallowHistory);
+ s0h->setHistoryType(QHistoryState::DeepHistory);
+ } else {
+ s0h = new QHistoryState(QHistoryState::DeepHistory, s0);
+ }
+ QCOMPARE(s0h->historyType(), QHistoryState::DeepHistory);
+ s0h->setHistoryType(QHistoryState::ShallowHistory);
+ QCOMPARE(s0h->historyType(), QHistoryState::ShallowHistory);
+ QCOMPARE(s0h->defaultState(), (QAbstractState*)0);
+ s0h->setDefaultState(s00);
+ QCOMPARE(s0h->defaultState(), (QAbstractState*)s00);
+ QString warning;
+ warning.sprintf("QHistoryState::setDefaultState: state %p does not belong to this history state's group (%p)", s0, s0);
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
+ s0h->setDefaultState(s0);
+ QState *s1 = new QState(root);
+ QFinalState *s2 = new QFinalState(root);
+
+ s00->addTransition(new StringTransition("a", s01));
+ s0->addTransition(new StringTransition("b", s1));
+ s1->addTransition(new StringTransition("c", s0h));
+ s0->addTransition(new StringTransition("d", s2));
+
+ root->setInitialState(s0);
+ s0->setInitialState(s00);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s0));
+ QVERIFY(machine.configuration().contains(s00));
+
+ machine.postEvent(new StringEvent("a"));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s0));
+ QVERIFY(machine.configuration().contains(s01));
+
+ machine.postEvent(new StringEvent("b"));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.postEvent(new StringEvent("c"));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s0));
+ QVERIFY(machine.configuration().contains(s01));
+
+ machine.postEvent(new StringEvent("d"));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+}
+
+void tst_QStateMachine::startAndStop()
+{
+ QStateMachine machine;
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ QVERIFY(!machine.isRunning());
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::start: No initial state set for machine. Refusing to start.");
+ machine.start();
+ QCOMPARE(startedSpy.count(), 0);
+ QCOMPARE(stoppedSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 0);
+ QVERIFY(!machine.isRunning());
+ machine.stop();
+ QCOMPARE(startedSpy.count(), 0);
+ QCOMPARE(stoppedSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+ machine.start();
+ QTRY_COMPARE(machine.isRunning(), true);
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(stoppedSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::start(): already running");
+ machine.start();
+
+ machine.stop();
+ QTRY_COMPARE(machine.isRunning(), false);
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ QCOMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.start();
+ machine.stop();
+ QTRY_COMPARE(startedSpy.count(), 2);
+ QCOMPARE(stoppedSpy.count(), 2);
+}
+
+void tst_QStateMachine::targetStateWithNoParent()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ s1->setObjectName("s1");
+ QState s2;
+ s1->addTransition(&s2);
+ machine.setInitialState(s1);
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: No common ancestor for targets and source of transition from state 's1'");
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(machine.isRunning(), false);
+ QCOMPARE(stoppedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(machine.error(), QStateMachine::NoCommonAncestorForTransitionError);
+}
+
+void tst_QStateMachine::targetStateDeleted()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ s1->setObjectName("s1");
+ QState *s2 = new QState(&machine);
+ QAbstractTransition *trans = s1->addTransition(s2);
+ delete s2;
+ QCOMPARE(trans->targetState(), (QAbstractState*)0);
+ QVERIFY(trans->targetStates().isEmpty());
+}
+
+void tst_QStateMachine::defaultGlobalRestorePolicy()
+{
+ QStateMachine machine;
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("a", 1);
+ propertyHolder->setProperty("b", 2);
+
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(propertyHolder, "a", 3);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "b", 4);
+
+ QState *s3 = new QState(&machine);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+}
+
+void tst_QStateMachine::noInitialStateForInitialState()
+{
+ QStateMachine machine;
+
+ QState *initialState = new QState(&machine);
+ initialState->setObjectName("initialState");
+ machine.setInitialState(initialState);
+
+ QState *childState = new QState(initialState);
+ (void)childState;
+
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: "
+ "Missing initial state in compound state 'initialState'");
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+ QCOMPARE(int(machine.error()), int(QStateMachine::NoInitialStateError));
+}
+
+/*
+void tst_QStateMachine::restorePolicyNotInherited()
+{
+ QStateMachine machine;
+
+ QObject *propertyHolder = new QObject();
+ propertyHolder->setProperty("a", 1);
+ propertyHolder->setProperty("b", 2);
+
+ QState *parentState = new QState(&machine);
+ parentState->setObjectName("parentState");
+ parentState->setRestorePolicy(QState::RestoreProperties);
+
+ QState *s1 = new QState(parentState);
+ s1->setObjectName("s1");
+ s1->assignProperty(propertyHolder, "a", 3);
+ parentState->setInitialState(s1);
+
+ QState *s2 = new QState(parentState);
+ s2->setObjectName("s2");
+ s2->assignProperty(propertyHolder, "b", 4);
+
+ QState *s3 = new QState(parentState);
+ s3->setObjectName("s3");
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(parentState);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+}*/
+
+void tst_QStateMachine::globalRestorePolicySetToDontRestore()
+{
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::DontRestoreProperties);
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("a", 1);
+ propertyHolder->setProperty("b", 2);
+
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(propertyHolder, "a", 3);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "b", 4);
+
+ QState *s3 = new QState(&machine);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+}
+
+/*
+void tst_QStateMachine::setRestorePolicyToDoNotRestore()
+{
+ QObject *object = new QObject();
+ object->setProperty("a", 1);
+ object->setProperty("b", 2);
+
+ QStateMachine machine;
+
+ QState *S1 = new QState();
+ S1->setObjectName("S1");
+ S1->assignProperty(object, "a", 3);
+ S1->setRestorePolicy(QState::DoNotRestoreProperties);
+ machine.addState(S1);
+
+ QState *S2 = new QState();
+ S2->setObjectName("S2");
+ S2->assignProperty(object, "b", 5);
+ S2->setRestorePolicy(QState::DoNotRestoreProperties);
+ machine.addState(S2);
+
+ QState *S3 = new QState();
+ S3->setObjectName("S3");
+ S3->setRestorePolicy(QState::DoNotRestoreProperties);
+ machine.addState(S3);
+
+ QFinalState *S4 = new QFinalState();
+ machine.addState(S4);
+
+ S1->addTransition(new EventTransition(QEvent::User, S2));
+ S2->addTransition(new EventTransition(QEvent::User, S3));
+ S3->addTransition(S4);
+
+ machine.setInitialState(S1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 3);
+ QCOMPARE(object->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 3);
+ QCOMPARE(object->property("b").toInt(), 5);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 3);
+ QCOMPARE(object->property("b").toInt(), 5);
+}
+
+void tst_QStateMachine::setGlobalRestorePolicyToGlobalRestore()
+{
+ s_countWarnings = false;
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::GlobalRestorePolicy);
+
+ QCOMPARE(machine.globalRestorePolicy(), QStateMachine::DoNotRestoreProperties);
+ QCOMPARE(s_msgType, QtWarningMsg);
+
+ s_msgType = QtDebugMsg;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QStateMachine::GlobalRestorePolicy);
+
+ QCOMPARE(machine.globalRestorePolicy(), QStateMachine::RestoreProperties);
+ QCOMPARE(s_msgType, QtWarningMsg);
+}
+
+
+void tst_QStateMachine::restorePolicyOnChildState()
+{
+ QStateMachine machine;
+
+ QObject *propertyHolder = new QObject();
+ propertyHolder->setProperty("a", 1);
+ propertyHolder->setProperty("b", 2);
+
+ QState *parentState = new QState(&machine);
+ parentState->setObjectName("parentState");
+
+ QState *s1 = new QState(parentState);
+ s1->setRestorePolicy(QState::RestoreProperties);
+ s1->setObjectName("s1");
+ s1->assignProperty(propertyHolder, "a", 3);
+ parentState->setInitialState(s1);
+
+ QState *s2 = new QState(parentState);
+ s2->setRestorePolicy(QState::RestoreProperties);
+ s2->setObjectName("s2");
+ s2->assignProperty(propertyHolder, "b", 4);
+
+ QState *s3 = new QState(parentState);
+ s3->setRestorePolicy(QState::RestoreProperties);
+ s3->setObjectName("s3");
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(parentState);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 1);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 1);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+}
+*/
+
+void tst_QStateMachine::globalRestorePolicySetToRestore()
+{
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("a", 1);
+ propertyHolder->setProperty("b", 2);
+
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(propertyHolder, "a", 3);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "b", 4);
+
+ QState *s3 = new QState(&machine);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 1);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 1);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+}
+
+/*
+void tst_QStateMachine::mixedRestoreProperties()
+{
+ QStateMachine machine;
+
+ QObject *propertyHolder = new QObject();
+ propertyHolder->setProperty("a", 1);
+
+ QState *s1 = new QState(&machine);
+ s1->setRestorePolicy(QState::RestoreProperties);
+ s1->assignProperty(propertyHolder, "a", 3);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "a", 4);
+
+ QState *s3 = new QState(&machine);
+
+ QState *s4 = new QState(&machine);
+ s4->assignProperty(propertyHolder, "a", 5);
+
+ QState *s5 = new QState(&machine);
+ s5->setRestorePolicy(QState::RestoreProperties);
+ s5->assignProperty(propertyHolder, "a", 6);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+ s3->addTransition(new EventTransition(QEvent::User, s4));
+ s4->addTransition(new EventTransition(QEvent::User, s5));
+ s5->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ // Enter s1, save current
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ // Enter s2, restorePolicy == DoNotRestore, so restore all properties
+ QCOMPARE(propertyHolder->property("a").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ // Enter s3
+ QCOMPARE(propertyHolder->property("a").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ // Enter s4
+ QCOMPARE(propertyHolder->property("a").toInt(), 5);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ // Enter s5, save current
+ QCOMPARE(propertyHolder->property("a").toInt(), 6);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ // Enter s3, restore
+ QCOMPARE(propertyHolder->property("a").toInt(), 5);
+}
+*/
+
+void tst_QStateMachine::transitionWithParent()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ EventTransition *trans = new EventTransition(QEvent::User, s2, s1);
+ QCOMPARE(trans->sourceState(), s1);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s2);
+ QCOMPARE(trans->targetStates().size(), 1);
+ QCOMPARE(trans->targetStates().at(0), (QAbstractState*)s2);
+}
+
+void tst_QStateMachine::simpleAnimation()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("fooBar", 1.0);
+
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "fooBar", 2.0);
+
+ EventTransition *et = new EventTransition(QEvent::User, s2);
+ QPropertyAnimation *animation = new QPropertyAnimation(object, "fooBar", s2);
+ et->addAnimation(animation);
+ s1->addTransition(et);
+
+ QState *s3 = new QState(&machine);
+ s2->addTransition(animation, SIGNAL(finished()), s3);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("fooBar").toDouble(), 2.0);
+}
+
+class SlotCalledCounter: public QObject
+{
+ Q_OBJECT
+public:
+ SlotCalledCounter() : counter(0) {}
+
+ int counter;
+
+public slots:
+ void slot() { counter++; }
+};
+
+void tst_QStateMachine::twoAnimations()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+ object->setProperty("bar", 3.0);
+
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+ s2->assignProperty(object, "bar", 10.0);
+
+ QPropertyAnimation *animationFoo = new QPropertyAnimation(object, "foo", s2);
+ QPropertyAnimation *animationBar = new QPropertyAnimation(object, "bar", s2);
+ animationBar->setDuration(900);
+
+ SlotCalledCounter counter;
+ connect(animationFoo, SIGNAL(finished()), &counter, SLOT(slot()));
+ connect(animationBar, SIGNAL(finished()), &counter, SLOT(slot()));
+
+ EventTransition *et = new EventTransition(QEvent::User, s2);
+ et->addAnimation(animationFoo);
+ et->addAnimation(animationBar);
+ s1->addTransition(et);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+ s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+ QCOMPARE(object->property("bar").toDouble(), 10.0);
+
+ QCOMPARE(counter.counter, 2);
+}
+
+void tst_QStateMachine::twoAnimatedTransitions()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 5.0);
+ QPropertyAnimation *fooAnimation = new QPropertyAnimation(object, "foo", s2);
+ EventTransition *trans = new EventTransition(QEvent::User, s2);
+ s1->addTransition(trans);
+ trans->addAnimation(fooAnimation);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+ s2->addTransition(fooAnimation, SIGNAL(finished()), s3);
+
+ QState *s4 = new QState(&machine);
+ s4->assignProperty(object, "foo", 2.0);
+ QPropertyAnimation *fooAnimation2 = new QPropertyAnimation(object, "foo", s4);
+ trans = new EventTransition(QEvent::User, s4);
+ s3->addTransition(trans);
+ trans->addAnimation(fooAnimation2);
+
+ QState *s5 = new QState(&machine);
+ QObject::connect(s5, SIGNAL(entered()), QApplication::instance(), SLOT(quit()));
+ s4->addTransition(fooAnimation2, SIGNAL(finished()), s5);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 5.0);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s5));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+}
+
+void tst_QStateMachine::playAnimationTwice()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 5.0);
+ QPropertyAnimation *fooAnimation = new QPropertyAnimation(object, "foo", s2);
+ EventTransition *trans = new EventTransition(QEvent::User, s2);
+ s1->addTransition(trans);
+ trans->addAnimation(fooAnimation);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+ s2->addTransition(fooAnimation, SIGNAL(finished()), s3);
+
+ QState *s4 = new QState(&machine);
+ s4->assignProperty(object, "foo", 2.0);
+ trans = new EventTransition(QEvent::User, s4);
+ s3->addTransition(trans);
+ trans->addAnimation(fooAnimation);
+
+ QState *s5 = new QState(&machine);
+ QObject::connect(s5, SIGNAL(entered()), QApplication::instance(), SLOT(quit()));
+ s4->addTransition(fooAnimation, SIGNAL(finished()), s5);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 5.0);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s5));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+}
+
+void tst_QStateMachine::nestedTargetStateForAnimation()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+ object->setProperty("bar", 3.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s2Child = new QState(s2);
+ s2Child->assignProperty(object, "bar", 10.0);
+ s2->setInitialState(s2Child);
+
+ QState *s2Child2 = new QState(s2);
+ s2Child2->assignProperty(object, "bar", 11.0);
+ QAbstractTransition *at = new EventTransition(QEvent::User, s2Child2);
+ s2Child->addTransition(at);
+
+ QPropertyAnimation *animation = new QPropertyAnimation(object, "bar", s2);
+ animation->setDuration(2000);
+ connect(animation, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(animation);
+
+ at = new EventTransition(QEvent::User, s2);
+ s1->addTransition(at);
+
+ animation = new QPropertyAnimation(object, "foo", s2);
+ connect(animation, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(animation);
+
+ animation = new QPropertyAnimation(object, "bar", s2);
+ connect(animation, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(animation);
+
+ QState *s3 = new QState(&machine);
+ s2->addTransition(s2Child, SIGNAL(propertiesAssigned()), s3);
+
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+ machine.postEvent(new QEvent(QEvent::User));
+
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+ QCOMPARE(object->property("bar").toDouble(), 10.0);
+ QCOMPARE(counter.counter, 2);
+}
+
+void tst_QStateMachine::propertiesAssignedSignalTransitionsReuseAnimationGroup()
+{
+ QStateMachine machine;
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 0);
+
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(object, "foo", 123);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 456);
+ QState *s3 = new QState(&machine);
+ s3->assignProperty(object, "foo", 789);
+ QFinalState *s4 = new QFinalState(&machine);
+
+ QParallelAnimationGroup animationGroup;
+ animationGroup.addAnimation(new QPropertyAnimation(object, "foo"));
+ QSignalSpy animationFinishedSpy(&animationGroup, SIGNAL(finished()));
+ s1->addTransition(s1, SIGNAL(propertiesAssigned()), s2)->addAnimation(&animationGroup);
+ s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3)->addAnimation(&animationGroup);
+ s3->addTransition(s3, SIGNAL(propertiesAssigned()), s4);
+
+ machine.setInitialState(s1);
+ QSignalSpy machineFinishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(machineFinishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s4));
+ QCOMPARE(object->property("foo").toInt(), 789);
+
+ QCOMPARE(animationFinishedSpy.count(), 2);
+}
+
+void tst_QStateMachine::animatedGlobalRestoreProperty()
+{
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+
+ QState *s4 = new QState(&machine);
+ QObject::connect(s4, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ QAbstractTransition *at = new EventTransition(QEvent::User, s2);
+ s1->addTransition(at);
+ QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", s2);
+ connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(pa);
+
+ at = s2->addTransition(pa, SIGNAL(finished()), s3);
+ pa = new QPropertyAnimation(object, "foo", s3);
+ connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(pa);
+
+ at = s3->addTransition(pa, SIGNAL(finished()), s4);
+ pa = new QPropertyAnimation(object, "foo", s4);
+ connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(pa);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s4));
+ QCOMPARE(object->property("foo").toDouble(), 1.0);
+ QCOMPARE(counter.counter, 2);
+}
+
+void tst_QStateMachine::specificTargetValueOfAnimation()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QPropertyAnimation *anim = new QPropertyAnimation(object, "foo");
+ anim->setEndValue(10.0);
+ EventTransition *trans = new EventTransition(QEvent::User, s2);
+ s1->addTransition(trans);
+ trans->addAnimation(anim);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+ s2->addTransition(anim, SIGNAL(finished()), s3);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+ QCOMPARE(anim->endValue().toDouble(), 10.0);
+
+ delete anim;
+}
+
+void tst_QStateMachine::addDefaultAnimation()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
+ machine.addDefaultAnimation(pa);
+ s2->addTransition(pa, SIGNAL(finished()), s3);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+
+ delete object;
+}
+
+void tst_QStateMachine::addDefaultAnimationWithUnusedAnimation()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+ object->setProperty("bar", 2.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
+ connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
+ machine.addDefaultAnimation(pa);
+ s2->addTransition(pa, SIGNAL(finished()), s3);
+
+ pa = new QPropertyAnimation(object, "bar", &machine);
+ connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
+ machine.addDefaultAnimation(pa);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+ QCOMPARE(counter.counter, 1);
+}
+
+void tst_QStateMachine::removeDefaultAnimation()
+{
+ QStateMachine machine;
+
+ QObject propertyHolder;
+ propertyHolder.setProperty("foo", 0);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+
+ QPropertyAnimation *anim = new QPropertyAnimation(&propertyHolder, "foo");
+
+ machine.addDefaultAnimation(anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 1);
+ QVERIFY(machine.defaultAnimations().contains(anim));
+
+ machine.removeDefaultAnimation(anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+
+ machine.addDefaultAnimation(anim);
+
+ QPropertyAnimation *anim2 = new QPropertyAnimation(&propertyHolder, "foo");
+ machine.addDefaultAnimation(anim2);
+
+ QCOMPARE(machine.defaultAnimations().size(), 2);
+ QVERIFY(machine.defaultAnimations().contains(anim));
+ QVERIFY(machine.defaultAnimations().contains(anim2));
+
+ machine.removeDefaultAnimation(anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 1);
+ QVERIFY(machine.defaultAnimations().contains(anim2));
+
+ machine.removeDefaultAnimation(anim2);
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+
+ delete anim;
+ delete anim2;
+}
+
+void tst_QStateMachine::overrideDefaultAnimationWithSpecific()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ QAbstractTransition *at = new EventTransition(QEvent::User, s2);
+ s1->addTransition(at);
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimation(defaultAnimation);
+ at->addAnimation(moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+
+ delete defaultAnimation;
+ delete moreSpecificAnimation;
+}
+
+/*
+void tst_QStateMachine::addDefaultAnimationForSource()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
+ machine.addDefaultAnimationForSourceState(s1, pa);
+ s2->addTransition(pa, SIGNAL(finished()), s3);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+}
+
+void tst_QStateMachine::addDefaultAnimationForTarget()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
+ machine.addDefaultAnimationForTargetState(s2, pa);
+ s2->addTransition(pa, SIGNAL(finished()), s3);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+}
+
+void tst_QStateMachine::removeDefaultAnimationForSource()
+{
+ QStateMachine machine;
+
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
+
+ QPropertyAnimation *anim = new QPropertyAnimation(this, "foo");
+
+ machine.addDefaultAnimationForSourceState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim));
+
+ machine.removeDefaultAnimationForTargetState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim));
+
+ machine.removeDefaultAnimationForSourceState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
+
+ machine.addDefaultAnimationForSourceState(&machine, anim);
+
+ QPropertyAnimation *anim2 = new QPropertyAnimation(this, "foo");
+ machine.addDefaultAnimationForSourceState(&machine, anim2);
+
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 2);
+ QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim));
+ QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim2));
+
+ machine.removeDefaultAnimationForSourceState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim2));
+
+ machine.removeDefaultAnimationForSourceState(&machine, anim2);
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
+}
+
+void tst_QStateMachine::removeDefaultAnimationForTarget()
+{
+ QStateMachine machine;
+
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
+
+ QPropertyAnimation *anim = new QPropertyAnimation(this, "foo");
+
+ machine.addDefaultAnimationForTargetState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim));
+
+ machine.removeDefaultAnimationForSourceState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim));
+
+ machine.removeDefaultAnimationForTargetState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
+
+ machine.addDefaultAnimationForTargetState(&machine, anim);
+
+ QPropertyAnimation *anim2 = new QPropertyAnimation(this, "foo");
+ machine.addDefaultAnimationForTargetState(&machine, anim2);
+
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 2);
+ QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim));
+ QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim2));
+
+ machine.removeDefaultAnimationForTargetState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim2));
+
+ machine.removeDefaultAnimationForTargetState(&machine, anim2);
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
+}
+
+void tst_QStateMachine::overrideDefaultAnimationWithSource()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimation(defaultAnimation);
+ machine.addDefaultAnimationForSourceState(s1, moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+}
+
+void tst_QStateMachine::overrideDefaultAnimationWithTarget()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimation(defaultAnimation);
+ machine.addDefaultAnimationForTargetState(s2, moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+
+}
+
+void tst_QStateMachine::overrideDefaultSourceAnimationWithSpecific()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ QAbstractTransition *at = s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimationForSourceState(s1, defaultAnimation);
+ at->addAnimation(moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+}
+
+void tst_QStateMachine::overrideDefaultTargetAnimationWithSpecific()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ QAbstractTransition *at = s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimationForTargetState(s2, defaultAnimation);
+ at->addAnimation(moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+}
+
+void tst_QStateMachine::overrideDefaultTargetAnimationWithSource()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimationForTargetState(s2, defaultAnimation);
+ machine.addDefaultAnimationForSourceState(s1, moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+}
+
+*/
+
+void tst_QStateMachine::parallelStateAssignmentsDone()
+{
+ QStateMachine machine;
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("foo", 123);
+ propertyHolder->setProperty("bar", 456);
+ propertyHolder->setProperty("zoot", 789);
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *parallelState = new QState(QState::ParallelStates, &machine);
+ parallelState->assignProperty(propertyHolder, "foo", 321);
+
+ QState *s2 = new QState(parallelState);
+ s2->assignProperty(propertyHolder, "bar", 654);
+
+ QState *s3 = new QState(parallelState);
+ s3->assignProperty(propertyHolder, "zoot", 987);
+
+ s1->addTransition(new EventTransition(QEvent::User, parallelState));
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("foo").toInt(), 123);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 456);
+ QCOMPARE(propertyHolder->property("zoot").toInt(), 789);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("foo").toInt(), 321);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 654);
+ QCOMPARE(propertyHolder->property("zoot").toInt(), 987);
+}
+
+void tst_QStateMachine::transitionsFromParallelStateWithNoChildren()
+{
+ QStateMachine machine;
+
+ QState *parallelState = new QState(QState::ParallelStates, &machine);
+ machine.setInitialState(parallelState);
+
+ QState *s1 = new QState(&machine);
+ parallelState->addTransition(new EventTransition(QEvent::User, s1));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(1, machine.configuration().size());
+ QVERIFY(machine.configuration().contains(parallelState));
+
+ machine.postEvent(new QEvent(QEvent::User));
+
+ QCoreApplication::processEvents();
+
+ QCOMPARE(1, machine.configuration().size());
+ QVERIFY(machine.configuration().contains(s1));
+}
+
+void tst_QStateMachine::parallelStateTransition()
+{
+ QStateMachine machine;
+
+ QState *parallelState = new QState(QState::ParallelStates, &machine);
+ machine.setInitialState(parallelState);
+
+ QState *s1 = new QState(parallelState);
+ QState *s2 = new QState(parallelState);
+
+ QState *s1InitialChild = new QState(s1);
+ s1->setInitialState(s1InitialChild);
+
+ QState *s2InitialChild = new QState(s2);
+ s2->setInitialState(s2InitialChild);
+
+ QState *s1OtherChild = new QState(s1);
+
+ s1->addTransition(new EventTransition(QEvent::User, s1OtherChild));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QVERIFY(machine.configuration().contains(parallelState));
+ QVERIFY(machine.configuration().contains(s1));
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s1InitialChild));
+ QVERIFY(machine.configuration().contains(s2InitialChild));
+ QCOMPARE(machine.configuration().size(), 5);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QVERIFY(machine.configuration().contains(parallelState));
+
+ QVERIFY(machine.configuration().contains(s1));
+
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s1OtherChild));
+ QVERIFY(machine.configuration().contains(s2InitialChild));
+ QCOMPARE(machine.configuration().size(), 5);
+
+}
+
+void tst_QStateMachine::nestedRestoreProperties()
+{
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("foo", 1);
+ propertyHolder->setProperty("bar", 2);
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "foo", 3);
+
+ QState *s21 = new QState(s2);
+ s21->assignProperty(propertyHolder, "bar", 4);
+ s2->setInitialState(s21);
+
+ QState *s22 = new QState(s2);
+ s22->assignProperty(propertyHolder, "bar", 5);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s21->addTransition(new EventTransition(QEvent::User, s22));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 1);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s21));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 3);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 3);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 5);
+}
+
+void tst_QStateMachine::nestedRestoreProperties2()
+{
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("foo", 1);
+ propertyHolder->setProperty("bar", 2);
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "foo", 3);
+
+ QState *s21 = new QState(s2);
+ s21->assignProperty(propertyHolder, "bar", 4);
+ s2->setInitialState(s21);
+
+ QState *s22 = new QState(s2);
+ s22->assignProperty(propertyHolder, "foo", 6);
+ s22->assignProperty(propertyHolder, "bar", 5);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s21->addTransition(new EventTransition(QEvent::User, s22));
+ s22->addTransition(new EventTransition(QEvent::User, s21));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 1);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s21));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 3);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 6);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 5);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s21));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 3);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 4);
+
+}
+
+void tst_QStateMachine::nestedStateMachines()
+{
+ QStateMachine machine;
+ QState *group = new QState(&machine);
+ group->setChildMode(QState::ParallelStates);
+ QStateMachine *subMachines[3];
+ for (int i = 0; i < 3; ++i) {
+ QState *subGroup = new QState(group);
+ QStateMachine *subMachine = new QStateMachine(subGroup);
+ {
+ QState *initial = new QState(subMachine);
+ QFinalState *done = new QFinalState(subMachine);
+ initial->addTransition(new EventTransition(QEvent::User, done));
+ subMachine->setInitialState(initial);
+ }
+ QFinalState *subMachineDone = new QFinalState(subGroup);
+ subMachine->addTransition(subMachine, SIGNAL(finished()), subMachineDone);
+ subGroup->setInitialState(subMachine);
+ subMachines[i] = subMachine;
+ }
+ QFinalState *final = new QFinalState(&machine);
+ group->addTransition(group, SIGNAL(finished()), final);
+ machine.setInitialState(group);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QTRY_COMPARE(machine.configuration().count(), 1+2*3);
+ QVERIFY(machine.configuration().contains(group));
+ for (int i = 0; i < 3; ++i)
+ QVERIFY(machine.configuration().contains(subMachines[i]));
+
+ QCoreApplication::processEvents(); // starts the submachines
+
+ for (int i = 0; i < 3; ++i)
+ subMachines[i]->postEvent(new QEvent(QEvent::User));
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+}
+
+void tst_QStateMachine::goToState()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ machine.setInitialState(s1);
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+
+ QStateMachinePrivate::get(&machine)->goToState(s2);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ QStateMachinePrivate::get(&machine)->goToState(s2);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ QStateMachinePrivate::get(&machine)->goToState(s1);
+ QStateMachinePrivate::get(&machine)->goToState(s2);
+ QStateMachinePrivate::get(&machine)->goToState(s1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ // go to state in group
+ QState *s2_1 = new QState(s2);
+ s2->setInitialState(s2_1);
+ QStateMachinePrivate::get(&machine)->goToState(s2_1);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s2_1));
+}
+
+class CloneSignalTransition : public QSignalTransition
+{
+public:
+ CloneSignalTransition(QObject *sender, const char *signal, QAbstractState *target)
+ : QSignalTransition(sender, signal)
+ {
+ setTargetState(target);
+ }
+
+ void onTransition(QEvent *e)
+ {
+ QSignalTransition::onTransition(e);
+ QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(e);
+ eventSignalIndex = se->signalIndex();
+ }
+
+ int eventSignalIndex;
+};
+
+void tst_QStateMachine::task260403_clonedSignals()
+{
+ SignalEmitter emitter;
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ CloneSignalTransition *t1 = new CloneSignalTransition(&emitter, SIGNAL(signalWithDefaultArg()), s2);
+ s1->addTransition(t1);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QTest::qWait(1);
+
+ emitter.emitSignalWithDefaultArg();
+ QTest::qWait(1);
+ QCOMPARE(t1->eventSignalIndex, emitter.metaObject()->indexOfSignal("signalWithDefaultArg()"));
+}
+
+class EventPosterThread : public QThread
+{
+ Q_OBJECT
+public:
+ EventPosterThread(QStateMachine *machine, QObject *parent = 0)
+ : QThread(parent), m_machine(machine), m_count(0)
+ {
+ moveToThread(this);
+ QObject::connect(m_machine, SIGNAL(started()),
+ this, SLOT(postEvent()));
+ }
+protected:
+ virtual void run()
+ {
+ exec();
+ }
+private Q_SLOTS:
+ void postEvent()
+ {
+ m_machine->postEvent(new QEvent(QEvent::User));
+ if (++m_count < 10000)
+ QTimer::singleShot(0, this, SLOT(postEvent()));
+ else
+ quit();
+ }
+private:
+ QStateMachine *m_machine;
+ int m_count;
+};
+
+void tst_QStateMachine::postEventFromOtherThread()
+{
+ QStateMachine machine;
+ EventPosterThread poster(&machine);
+ StringEventPoster *s1 = new StringEventPoster("foo", &machine);
+ s1->addTransition(new EventTransition(QEvent::User, s1));
+ QFinalState *f = new QFinalState(&machine);
+ s1->addTransition(&poster, SIGNAL(finished()), f);
+ machine.setInitialState(s1);
+
+ poster.start();
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+}
+
+void tst_QStateMachine::eventFilterForApplication()
+{
+ QStateMachine machine;
+
+ QState *s1 = new QState(&machine);
+ {
+ machine.setInitialState(s1);
+ }
+
+ QState *s2 = new QState(&machine);
+
+ QEventTransition *transition = new QEventTransition(QCoreApplication::instance(),
+ QEvent::ApplicationActivate);
+ transition->setTargetState(s2);
+ s1->addTransition(transition);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ QCoreApplication::postEvent(QCoreApplication::instance(),
+ new QEvent(QEvent::ApplicationActivate));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+}
+
+void tst_QStateMachine::eventClassesExported()
+{
+ // make sure this links
+ QStateMachine::WrappedEvent *wrappedEvent = new QStateMachine::WrappedEvent(0, 0);
+ Q_UNUSED(wrappedEvent);
+ QStateMachine::SignalEvent *signalEvent = new QStateMachine::SignalEvent(0, 0, QList<QVariant>());
+ Q_UNUSED(signalEvent);
+}
+
+void tst_QStateMachine::stopInTransitionToFinalState()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QFinalState *s2 = new QFinalState(&machine);
+ QAbstractTransition *t1 = s1->addTransition(s2);
+ machine.setInitialState(s1);
+
+ QObject::connect(t1, SIGNAL(triggered()), &machine, SLOT(stop()));
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ QSignalSpy s2EnteredSpy(s2, SIGNAL(entered()));
+ machine.start();
+
+ // Stopping should take precedence over finished.
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(s2EnteredSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+}
+
+class StopInEventTestTransition : public QAbstractTransition
+{
+public:
+ bool eventTest(QEvent *e)
+ {
+ if (e->type() == QEvent::User)
+ machine()->stop();
+ return false;
+ }
+ void onTransition(QEvent *)
+ { }
+};
+
+void tst_QStateMachine::stopInEventTest_data()
+{
+ QTest::addColumn<int>("eventPriority");
+ QTest::newRow("NormalPriority") << int(QStateMachine::NormalPriority);
+ QTest::newRow("HighPriority") << int(QStateMachine::HighPriority);
+}
+
+void tst_QStateMachine::stopInEventTest()
+{
+ QFETCH(int, eventPriority);
+
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ s1->addTransition(new StopInEventTestTransition());
+ machine.setInitialState(s1);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.postEvent(new QEvent(QEvent::User), QStateMachine::EventPriority(eventPriority));
+
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+}
+
+QTEST_MAIN(tst_QStateMachine)
+#include "tst_qstatemachine.moc"
diff --git a/tests/auto/corelib/statemachine/statemachine.pro b/tests/auto/corelib/statemachine/statemachine.pro
new file mode 100644
index 0000000000..aa645ac9f4
--- /dev/null
+++ b/tests/auto/corelib/statemachine/statemachine.pro
@@ -0,0 +1,4 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qstate \
+ qstatemachine
diff --git a/tests/auto/qatomicint/.gitignore b/tests/auto/corelib/thread/qatomicint/.gitignore
index 52998efd02..52998efd02 100644
--- a/tests/auto/qatomicint/.gitignore
+++ b/tests/auto/corelib/thread/qatomicint/.gitignore
diff --git a/tests/auto/qatomicint/qatomicint.pro b/tests/auto/corelib/thread/qatomicint/qatomicint.pro
index 7850d93dc7..7850d93dc7 100644
--- a/tests/auto/qatomicint/qatomicint.pro
+++ b/tests/auto/corelib/thread/qatomicint/qatomicint.pro
diff --git a/tests/auto/qatomicint/tst_qatomicint.cpp b/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp
index 27a2cc2e9c..27a2cc2e9c 100644
--- a/tests/auto/qatomicint/tst_qatomicint.cpp
+++ b/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp
diff --git a/tests/auto/qatomicpointer/.gitignore b/tests/auto/corelib/thread/qatomicpointer/.gitignore
index 2843c40749..2843c40749 100644
--- a/tests/auto/qatomicpointer/.gitignore
+++ b/tests/auto/corelib/thread/qatomicpointer/.gitignore
diff --git a/tests/auto/qatomicpointer/qatomicpointer.pro b/tests/auto/corelib/thread/qatomicpointer/qatomicpointer.pro
index 89ff137d39..89ff137d39 100644
--- a/tests/auto/qatomicpointer/qatomicpointer.pro
+++ b/tests/auto/corelib/thread/qatomicpointer/qatomicpointer.pro
diff --git a/tests/auto/qatomicpointer/tst_qatomicpointer.cpp b/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp
index 42e744aaa6..42e744aaa6 100644
--- a/tests/auto/qatomicpointer/tst_qatomicpointer.cpp
+++ b/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp
diff --git a/tests/auto/qmutex/.gitignore b/tests/auto/corelib/thread/qmutex/.gitignore
index 2f6b74166f..2f6b74166f 100644
--- a/tests/auto/qmutex/.gitignore
+++ b/tests/auto/corelib/thread/qmutex/.gitignore
diff --git a/tests/auto/qmutex/qmutex.pro b/tests/auto/corelib/thread/qmutex/qmutex.pro
index 608b08e16e..608b08e16e 100644
--- a/tests/auto/qmutex/qmutex.pro
+++ b/tests/auto/corelib/thread/qmutex/qmutex.pro
diff --git a/tests/auto/qmutex/tst_qmutex.cpp b/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp
index 7ad6a98a4d..7ad6a98a4d 100644
--- a/tests/auto/qmutex/tst_qmutex.cpp
+++ b/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp
diff --git a/tests/auto/qmutexlocker/.gitignore b/tests/auto/corelib/thread/qmutexlocker/.gitignore
index 7c75c1c2f4..7c75c1c2f4 100644
--- a/tests/auto/qmutexlocker/.gitignore
+++ b/tests/auto/corelib/thread/qmutexlocker/.gitignore
diff --git a/tests/auto/qmutexlocker/qmutexlocker.pro b/tests/auto/corelib/thread/qmutexlocker/qmutexlocker.pro
index 01c369101b..01c369101b 100644
--- a/tests/auto/qmutexlocker/qmutexlocker.pro
+++ b/tests/auto/corelib/thread/qmutexlocker/qmutexlocker.pro
diff --git a/tests/auto/qmutexlocker/tst_qmutexlocker.cpp b/tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp
index a663b60be7..a663b60be7 100644
--- a/tests/auto/qmutexlocker/tst_qmutexlocker.cpp
+++ b/tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp
diff --git a/tests/auto/qreadlocker/.gitignore b/tests/auto/corelib/thread/qreadlocker/.gitignore
index 2539362670..2539362670 100644
--- a/tests/auto/qreadlocker/.gitignore
+++ b/tests/auto/corelib/thread/qreadlocker/.gitignore
diff --git a/tests/auto/qreadlocker/qreadlocker.pro b/tests/auto/corelib/thread/qreadlocker/qreadlocker.pro
index ee533070a7..ee533070a7 100644
--- a/tests/auto/qreadlocker/qreadlocker.pro
+++ b/tests/auto/corelib/thread/qreadlocker/qreadlocker.pro
diff --git a/tests/auto/qreadlocker/tst_qreadlocker.cpp b/tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp
index 3ec9f1cb25..3ec9f1cb25 100644
--- a/tests/auto/qreadlocker/tst_qreadlocker.cpp
+++ b/tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp
diff --git a/tests/auto/qreadwritelock/.gitignore b/tests/auto/corelib/thread/qreadwritelock/.gitignore
index 96fda685f5..96fda685f5 100644
--- a/tests/auto/qreadwritelock/.gitignore
+++ b/tests/auto/corelib/thread/qreadwritelock/.gitignore
diff --git a/tests/auto/qreadwritelock/qreadwritelock.pro b/tests/auto/corelib/thread/qreadwritelock/qreadwritelock.pro
index 93f7c68dc3..93f7c68dc3 100644
--- a/tests/auto/qreadwritelock/qreadwritelock.pro
+++ b/tests/auto/corelib/thread/qreadwritelock/qreadwritelock.pro
diff --git a/tests/auto/qreadwritelock/tst_qreadwritelock.cpp b/tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp
index 1b995e8d19..1b995e8d19 100644
--- a/tests/auto/qreadwritelock/tst_qreadwritelock.cpp
+++ b/tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp
diff --git a/tests/auto/qsemaphore/.gitignore b/tests/auto/corelib/thread/qsemaphore/.gitignore
index fe86486af4..fe86486af4 100644
--- a/tests/auto/qsemaphore/.gitignore
+++ b/tests/auto/corelib/thread/qsemaphore/.gitignore
diff --git a/tests/auto/qsemaphore/qsemaphore.pro b/tests/auto/corelib/thread/qsemaphore/qsemaphore.pro
index a75bf443bc..a75bf443bc 100644
--- a/tests/auto/qsemaphore/qsemaphore.pro
+++ b/tests/auto/corelib/thread/qsemaphore/qsemaphore.pro
diff --git a/tests/auto/qsemaphore/tst_qsemaphore.cpp b/tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp
index a2c6bf16b7..a2c6bf16b7 100644
--- a/tests/auto/qsemaphore/tst_qsemaphore.cpp
+++ b/tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp
diff --git a/tests/auto/qthread/.gitignore b/tests/auto/corelib/thread/qthread/.gitignore
index 4413a75588..4413a75588 100644
--- a/tests/auto/qthread/.gitignore
+++ b/tests/auto/corelib/thread/qthread/.gitignore
diff --git a/tests/auto/qthread/qthread.pro b/tests/auto/corelib/thread/qthread/qthread.pro
index d3b1028034..d3b1028034 100644
--- a/tests/auto/qthread/qthread.pro
+++ b/tests/auto/corelib/thread/qthread/qthread.pro
diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
index 3c46212c16..3c46212c16 100644
--- a/tests/auto/qthread/tst_qthread.cpp
+++ b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
diff --git a/tests/auto/qthreadonce/.gitignore b/tests/auto/corelib/thread/qthreadonce/.gitignore
index 856177d615..856177d615 100644
--- a/tests/auto/qthreadonce/.gitignore
+++ b/tests/auto/corelib/thread/qthreadonce/.gitignore
diff --git a/tests/auto/qthreadonce/qthreadonce.cpp b/tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp
index b23e11b153..b23e11b153 100644
--- a/tests/auto/qthreadonce/qthreadonce.cpp
+++ b/tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp
diff --git a/tests/auto/qthreadonce/qthreadonce.h b/tests/auto/corelib/thread/qthreadonce/qthreadonce.h
index c33625cbde..c33625cbde 100644
--- a/tests/auto/qthreadonce/qthreadonce.h
+++ b/tests/auto/corelib/thread/qthreadonce/qthreadonce.h
diff --git a/tests/auto/qthreadonce/qthreadonce.pro b/tests/auto/corelib/thread/qthreadonce/qthreadonce.pro
index d7ef4d4c23..d7ef4d4c23 100644
--- a/tests/auto/qthreadonce/qthreadonce.pro
+++ b/tests/auto/corelib/thread/qthreadonce/qthreadonce.pro
diff --git a/tests/auto/qthreadonce/tst_qthreadonce.cpp b/tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp
index dea4e43fef..dea4e43fef 100644
--- a/tests/auto/qthreadonce/tst_qthreadonce.cpp
+++ b/tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp
diff --git a/tests/auto/qthreadstorage/.gitignore b/tests/auto/corelib/thread/qthreadstorage/.gitignore
index 301968a8f6..301968a8f6 100644
--- a/tests/auto/qthreadstorage/.gitignore
+++ b/tests/auto/corelib/thread/qthreadstorage/.gitignore
diff --git a/tests/auto/qthreadstorage/crashOnExit.cpp b/tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp
index 92efcf3b3d..92efcf3b3d 100644
--- a/tests/auto/qthreadstorage/crashOnExit.cpp
+++ b/tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp
diff --git a/tests/auto/qthreadstorage/crashOnExit.pro b/tests/auto/corelib/thread/qthreadstorage/crashOnExit.pro
index 918ef398ba..918ef398ba 100644
--- a/tests/auto/qthreadstorage/crashOnExit.pro
+++ b/tests/auto/corelib/thread/qthreadstorage/crashOnExit.pro
diff --git a/tests/auto/qthreadstorage/qthreadstorage.pro b/tests/auto/corelib/thread/qthreadstorage/qthreadstorage.pro
index 0dc8d086df..0dc8d086df 100644
--- a/tests/auto/qthreadstorage/qthreadstorage.pro
+++ b/tests/auto/corelib/thread/qthreadstorage/qthreadstorage.pro
diff --git a/tests/auto/qthreadstorage/tst_qthreadstorage.cpp b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
index e123fc4fea..e123fc4fea 100644
--- a/tests/auto/qthreadstorage/tst_qthreadstorage.cpp
+++ b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
diff --git a/tests/auto/qthreadstorage/tst_qthreadstorage.pro b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.pro
index 3071098629..3071098629 100644
--- a/tests/auto/qthreadstorage/tst_qthreadstorage.pro
+++ b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.pro
diff --git a/tests/auto/qwaitcondition/.gitignore b/tests/auto/corelib/thread/qwaitcondition/.gitignore
index 96531988d9..96531988d9 100644
--- a/tests/auto/qwaitcondition/.gitignore
+++ b/tests/auto/corelib/thread/qwaitcondition/.gitignore
diff --git a/tests/auto/qwaitcondition/qwaitcondition.pro b/tests/auto/corelib/thread/qwaitcondition/qwaitcondition.pro
index 9af0c71301..9af0c71301 100644
--- a/tests/auto/qwaitcondition/qwaitcondition.pro
+++ b/tests/auto/corelib/thread/qwaitcondition/qwaitcondition.pro
diff --git a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp b/tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp
index 6545df9189..6545df9189 100644
--- a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
+++ b/tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp
diff --git a/tests/auto/qwritelocker/.gitignore b/tests/auto/corelib/thread/qwritelocker/.gitignore
index 865739ad2c..865739ad2c 100644
--- a/tests/auto/qwritelocker/.gitignore
+++ b/tests/auto/corelib/thread/qwritelocker/.gitignore
diff --git a/tests/auto/qwritelocker/qwritelocker.pro b/tests/auto/corelib/thread/qwritelocker/qwritelocker.pro
index 39a98aaba5..39a98aaba5 100644
--- a/tests/auto/qwritelocker/qwritelocker.pro
+++ b/tests/auto/corelib/thread/qwritelocker/qwritelocker.pro
diff --git a/tests/auto/qwritelocker/tst_qwritelocker.cpp b/tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp
index a06431a5e1..a06431a5e1 100644
--- a/tests/auto/qwritelocker/tst_qwritelocker.cpp
+++ b/tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp
diff --git a/tests/auto/corelib/thread/thread.pro b/tests/auto/corelib/thread/thread.pro
new file mode 100644
index 0000000000..a137748b75
--- /dev/null
+++ b/tests/auto/corelib/thread/thread.pro
@@ -0,0 +1,14 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qatomicint \
+ qatomicpointer \
+ qmutex \
+ qmutexlocker \
+ qreadlocker \
+ qreadwritelock \
+ qsemaphore \
+ qthread \
+ qthreadonce \
+ qthreadstorage \
+ qwaitcondition \
+ qwritelocker
diff --git a/tests/auto/qalgorithms/.gitignore b/tests/auto/corelib/tools/qalgorithms/.gitignore
index 379c13eb9b..379c13eb9b 100644
--- a/tests/auto/qalgorithms/.gitignore
+++ b/tests/auto/corelib/tools/qalgorithms/.gitignore
diff --git a/tests/auto/qalgorithms/qalgorithms.pro b/tests/auto/corelib/tools/qalgorithms/qalgorithms.pro
index 9143da658d..9143da658d 100644
--- a/tests/auto/qalgorithms/qalgorithms.pro
+++ b/tests/auto/corelib/tools/qalgorithms/qalgorithms.pro
diff --git a/tests/auto/qalgorithms/tst_qalgorithms.cpp b/tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp
index 72e5729ee9..72e5729ee9 100644
--- a/tests/auto/qalgorithms/tst_qalgorithms.cpp
+++ b/tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp
diff --git a/tests/auto/qbitarray/.gitignore b/tests/auto/corelib/tools/qbitarray/.gitignore
index a36354a6c4..a36354a6c4 100644
--- a/tests/auto/qbitarray/.gitignore
+++ b/tests/auto/corelib/tools/qbitarray/.gitignore
diff --git a/tests/auto/qbitarray/qbitarray.pro b/tests/auto/corelib/tools/qbitarray/qbitarray.pro
index 358d81bad1..358d81bad1 100644
--- a/tests/auto/qbitarray/qbitarray.pro
+++ b/tests/auto/corelib/tools/qbitarray/qbitarray.pro
diff --git a/tests/auto/qbitarray/tst_qbitarray.cpp b/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp
index 83fcfccd21..83fcfccd21 100644
--- a/tests/auto/qbitarray/tst_qbitarray.cpp
+++ b/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp
diff --git a/tests/auto/qbytearray/.gitattributes b/tests/auto/corelib/tools/qbytearray/.gitattributes
index e04709aa2e..e04709aa2e 100644
--- a/tests/auto/qbytearray/.gitattributes
+++ b/tests/auto/corelib/tools/qbytearray/.gitattributes
diff --git a/tests/auto/qbytearray/.gitignore b/tests/auto/corelib/tools/qbytearray/.gitignore
index 3de7c3fab5..3de7c3fab5 100644
--- a/tests/auto/qbytearray/.gitignore
+++ b/tests/auto/corelib/tools/qbytearray/.gitignore
diff --git a/tests/auto/qbytearray/qbytearray.pro b/tests/auto/corelib/tools/qbytearray/qbytearray.pro
index 2c58db6b84..2c58db6b84 100644
--- a/tests/auto/qbytearray/qbytearray.pro
+++ b/tests/auto/corelib/tools/qbytearray/qbytearray.pro
diff --git a/tests/auto/qbytearray/rfc3252.txt b/tests/auto/corelib/tools/qbytearray/rfc3252.txt
index b80c61bf0a..b80c61bf0a 100644
--- a/tests/auto/qbytearray/rfc3252.txt
+++ b/tests/auto/corelib/tools/qbytearray/rfc3252.txt
diff --git a/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
new file mode 100644
index 0000000000..5f036f37fe
--- /dev/null
+++ b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
@@ -0,0 +1,1569 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qbytearray.h>
+#include <qfile.h>
+#include <limits.h>
+#include <private/qtools_p.h>
+#if defined(Q_OS_WINCE)
+#include <qcoreapplication.h>
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#if defined(Q_OS_SYMBIAN)
+#define SRCDIR ""
+#endif
+
+class tst_QByteArray : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QByteArray();
+ virtual ~tst_QByteArray();
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void swap();
+ void qCompress_data();
+#ifndef QT_NO_COMPRESS
+ void qCompress();
+ void qUncompress_data();
+ void qUncompress();
+ void qCompressionZeroTermination();
+#endif
+ void constByteArray();
+ void leftJustified();
+ void rightJustified();
+ void startsWith_data();
+ void startsWith();
+ void startsWith_char();
+ void endsWith_data();
+ void endsWith();
+ void endsWith_char();
+ void split_data();
+ void split();
+ void base64_data();
+ void base64();
+ void fromBase64_data();
+ void fromBase64();
+ void qvsnprintf();
+ void qstrlen();
+ void qstrnlen();
+ void qstrcpy();
+ void qstrncpy();
+ void qstricmp_data();
+ void qstricmp();
+ void qstricmp_singularities();
+ void qstrnicmp_singularities();
+ void chop_data();
+ void chop();
+ void prepend();
+ void append();
+ void insert();
+ void remove_data();
+ void remove();
+ void replace_data();
+ void replace();
+ void replaceWithSpecifiedLength();
+ void indexOf_data();
+ void indexOf();
+ void lastIndexOf_data();
+ void lastIndexOf();
+ void toULong_data();
+ void toULong();
+ void toULongLong_data();
+ void toULongLong();
+
+ void number();
+ void toInt_data();
+ void toInt();
+ void qAllocMore();
+
+ void resizeAfterFromRawData();
+ void appendAfterFromRawData();
+ void toFromHex_data();
+ void toFromHex();
+ void toFromPercentEncoding();
+
+ void compare_data();
+ void compare();
+ void compareCharStar_data();
+ void compareCharStar();
+
+ void repeatedSignature() const;
+ void repeated() const;
+ void repeated_data() const;
+
+ void byteRefDetaching() const;
+
+ void reserve();
+
+ void literals();
+};
+
+tst_QByteArray::tst_QByteArray()
+{
+ qRegisterMetaType<qulonglong>("qulonglong");
+}
+
+tst_QByteArray::~tst_QByteArray()
+{
+}
+
+void tst_QByteArray::initTestCase()
+{
+}
+
+void tst_QByteArray::cleanupTestCase()
+{
+}
+
+void tst_QByteArray::init()
+{
+}
+
+void tst_QByteArray::cleanup()
+{
+}
+
+void tst_QByteArray::qCompress_data()
+{
+ QTest::addColumn<QByteArray>("ba");
+
+#ifndef Q_OS_WINCE
+ const int size1 = 1024*1024;
+#else
+ const int size1 = 1024;
+#endif
+ QByteArray ba1( size1, 0 );
+
+ QTest::newRow( "00" ) << QByteArray();
+
+ int i;
+ for ( i=0; i<size1; i++ )
+ ba1[i] = (char)( i / 1024 );
+ QTest::newRow( "01" ) << ba1;
+
+ for ( i=0; i<size1; i++ )
+ ba1[i] = (char)( i % 256 );
+ QTest::newRow( "02" ) << ba1;
+
+ ba1.fill( 'A' );
+ QTest::newRow( "03" ) << ba1;
+
+#if defined(Q_OS_WINCE)
+ int tmpArgc = 0;
+ char** tmpArgv = 0;
+ QCoreApplication app(tmpArgc, tmpArgv);
+#endif
+ QFile file( SRCDIR "rfc3252.txt" );
+ QVERIFY( file.open(QIODevice::ReadOnly) );
+ QTest::newRow( "04" ) << file.readAll();
+}
+
+#ifndef QT_NO_COMPRESS
+void tst_QByteArray::qCompress()
+{
+ QFETCH( QByteArray, ba );
+ QByteArray compressed = ::qCompress( ba );
+ //qDebug( "size uncompressed: %d size compressed: %d", ba.size(), compressed.size() );
+ QTEST( ::qUncompress( compressed ), "ba" );
+}
+
+/*
+ Just making sure it doesn't crash on invalid data.
+*/
+void tst_QByteArray::qUncompress_data()
+{
+ QTest::addColumn<QByteArray>("in");
+ QTest::addColumn<QByteArray>("out");
+
+ QTest::newRow("0x00000000") << QByteArray("\x00\x00\x00\x00", 4) << QByteArray();
+ QTest::newRow("0x000000ff") << QByteArray("\x00\x00\x00\xff", 4) << QByteArray();
+ QTest::newRow("0x3f000000") << QByteArray("\x3f\x00\x00\x00", 4) << QByteArray();
+ QTest::newRow("0x3fffffff") << QByteArray("\x3f\xff\xff\xff", 4) << QByteArray();
+ QTest::newRow("0x7fffff00") << QByteArray("\x7f\xff\xff\x00", 4) << QByteArray();
+ QTest::newRow("0x7fffffff") << QByteArray("\x7f\xff\xff\xff", 4) << QByteArray();
+ QTest::newRow("0x80000000") << QByteArray("\x80\x00\x00\x00", 4) << QByteArray();
+ QTest::newRow("0x800000ff") << QByteArray("\x80\x00\x00\xff", 4) << QByteArray();
+ QTest::newRow("0xcf000000") << QByteArray("\xcf\x00\x00\x00", 4) << QByteArray();
+ QTest::newRow("0xcfffffff") << QByteArray("\xcf\xff\xff\xff", 4) << QByteArray();
+ QTest::newRow("0xffffff00") << QByteArray("\xff\xff\xff\x00", 4) << QByteArray();
+ QTest::newRow("0xffffffff") << QByteArray("\xff\xff\xff\xff", 4) << QByteArray();
+}
+
+void tst_QByteArray::qUncompress()
+{
+ QFETCH(QByteArray, in);
+ QFETCH(QByteArray, out);
+
+#if defined Q_OS_HPUX && !defined __ia64 && defined Q_CC_GNU
+ QSKIP("Corrupt data causes this tests to lock up on HP-UX / PA-RISC with gcc", SkipAll);
+#elif defined Q_OS_SOLARIS
+ QSKIP("Corrupt data causes this tests to lock up on Solaris", SkipAll);
+#elif defined Q_OS_QNX
+ QSKIP("Corrupt data causes this test to lock up on QNX", SkipAll);
+#elif defined Q_OS_WIN
+ QSKIP("Corrupt data causes this test to lock up on Windows", SkipAll);
+#endif
+
+ QByteArray res;
+ res = ::qUncompress(in);
+ QCOMPARE(res, out);
+
+ res = ::qUncompress(in + "blah");
+ QCOMPARE(res, out);
+}
+
+void tst_QByteArray::qCompressionZeroTermination()
+{
+ QString s = "Hello, I'm a string.";
+ QByteArray ba = ::qUncompress(::qCompress(s.toLocal8Bit()));
+ QVERIFY((int) *(ba.data() + ba.size()) == 0);
+}
+
+#endif
+
+void tst_QByteArray::constByteArray()
+{
+ const char *ptr = "abc";
+ QByteArray cba = QByteArray::fromRawData(ptr, 3);
+ QVERIFY(cba.constData() == ptr);
+ cba.squeeze();
+ QVERIFY(cba.constData() == ptr);
+ cba.detach();
+ QVERIFY(cba.size() == 3);
+ QVERIFY(cba.capacity() == 3);
+ QVERIFY(cba.constData() != ptr);
+ QVERIFY(cba.constData()[0] == 'a');
+ QVERIFY(cba.constData()[1] == 'b');
+ QVERIFY(cba.constData()[2] == 'c');
+ QVERIFY(cba.constData()[3] == '\0');
+}
+
+void tst_QByteArray::leftJustified()
+{
+ QByteArray a;
+ a = "ABC";
+ QCOMPARE(a.leftJustified(5,'-'), QByteArray("ABC--"));
+ QCOMPARE(a.leftJustified(4,'-'), QByteArray("ABC-"));
+ QCOMPARE(a.leftJustified(4), QByteArray("ABC "));
+ QCOMPARE(a.leftJustified(3), QByteArray("ABC"));
+ QCOMPARE(a.leftJustified(2), QByteArray("ABC"));
+ QCOMPARE(a.leftJustified(1), QByteArray("ABC"));
+ QCOMPARE(a.leftJustified(0), QByteArray("ABC"));
+
+ QByteArray n;
+ QVERIFY(!n.leftJustified(3).isNull()); // I expected true
+ QCOMPARE(a.leftJustified(4,' ',true), QByteArray("ABC "));
+ QCOMPARE(a.leftJustified(3,' ',true), QByteArray("ABC"));
+ QCOMPARE(a.leftJustified(2,' ',true), QByteArray("AB"));
+ QCOMPARE(a.leftJustified(1,' ',true), QByteArray("A"));
+ QCOMPARE(a.leftJustified(0,' ',true), QByteArray(""));
+}
+
+void tst_QByteArray::rightJustified()
+{
+ QByteArray a;
+ a="ABC";
+ QCOMPARE(a.rightJustified(5,'-'),QByteArray("--ABC"));
+ QCOMPARE(a.rightJustified(4,'-'),QByteArray("-ABC"));
+ QCOMPARE(a.rightJustified(4),QByteArray(" ABC"));
+ QCOMPARE(a.rightJustified(3),QByteArray("ABC"));
+ QCOMPARE(a.rightJustified(2),QByteArray("ABC"));
+ QCOMPARE(a.rightJustified(1),QByteArray("ABC"));
+ QCOMPARE(a.rightJustified(0),QByteArray("ABC"));
+
+ QByteArray n;
+ QVERIFY(!n.rightJustified(3).isNull()); // I expected true
+ QCOMPARE(a.rightJustified(4,'-',true),QByteArray("-ABC"));
+ QCOMPARE(a.rightJustified(4,' ',true),QByteArray(" ABC"));
+ QCOMPARE(a.rightJustified(3,' ',true),QByteArray("ABC"));
+ QCOMPARE(a.rightJustified(2,' ',true),QByteArray("AB"));
+ QCOMPARE(a.rightJustified(1,' ',true),QByteArray("A"));
+ QCOMPARE(a.rightJustified(0,' ',true),QByteArray(""));
+ QCOMPARE(a,QByteArray("ABC"));
+}
+
+void tst_QByteArray::startsWith_data()
+{
+ QTest::addColumn<QByteArray>("ba");
+ QTest::addColumn<QByteArray>("sw");
+ QTest::addColumn<bool>("result");
+
+ QTest::newRow("01") << QByteArray() << QByteArray() << true;
+ QTest::newRow("02") << QByteArray() << QByteArray("") << true;
+ QTest::newRow("03") << QByteArray() << QByteArray("hallo") << false;
+
+ QTest::newRow("04") << QByteArray("") << QByteArray() << true;
+ QTest::newRow("05") << QByteArray("") << QByteArray("") << true;
+ QTest::newRow("06") << QByteArray("") << QByteArray("h") << false;
+
+ QTest::newRow("07") << QByteArray("hallo") << QByteArray("h") << true;
+ QTest::newRow("08") << QByteArray("hallo") << QByteArray("hallo") << true;
+ QTest::newRow("09") << QByteArray("hallo") << QByteArray("") << true;
+ QTest::newRow("10") << QByteArray("hallo") << QByteArray("hallohallo") << false;
+ QTest::newRow("11") << QByteArray("hallo") << QByteArray() << true;
+}
+
+void tst_QByteArray::startsWith()
+{
+ QFETCH(QByteArray, ba);
+ QFETCH(QByteArray, sw);
+ QFETCH(bool, result);
+
+ QVERIFY(ba.startsWith(sw) == result);
+
+ if (sw.isNull()) {
+ QVERIFY(ba.startsWith((char*)0) == result);
+ } else {
+ QVERIFY(ba.startsWith(sw.data()) == result);
+ }
+}
+
+void tst_QByteArray::startsWith_char()
+{
+ QVERIFY(QByteArray("hallo").startsWith('h'));
+ QVERIFY(!QByteArray("hallo").startsWith('\0'));
+ QVERIFY(!QByteArray("hallo").startsWith('o'));
+ QVERIFY(QByteArray("h").startsWith('h'));
+ QVERIFY(!QByteArray("h").startsWith('\0'));
+ QVERIFY(!QByteArray("h").startsWith('o'));
+ QVERIFY(!QByteArray("hallo").startsWith('l'));
+ QVERIFY(!QByteArray("").startsWith('\0'));
+ QVERIFY(!QByteArray("").startsWith('a'));
+ QVERIFY(!QByteArray().startsWith('a'));
+ QVERIFY(!QByteArray().startsWith('\0'));
+}
+
+void tst_QByteArray::endsWith_data()
+{
+ QTest::addColumn<QByteArray>("ba");
+ QTest::addColumn<QByteArray>("sw");
+ QTest::addColumn<bool>("result");
+
+ QTest::newRow("01") << QByteArray() << QByteArray() << true;
+ QTest::newRow("02") << QByteArray() << QByteArray("") << true;
+ QTest::newRow("03") << QByteArray() << QByteArray("hallo") << false;
+
+ QTest::newRow("04") << QByteArray("") << QByteArray() << true;
+ QTest::newRow("05") << QByteArray("") << QByteArray("") << true;
+ QTest::newRow("06") << QByteArray("") << QByteArray("h") << false;
+
+ QTest::newRow("07") << QByteArray("hallo") << QByteArray("o") << true;
+ QTest::newRow("08") << QByteArray("hallo") << QByteArray("hallo") << true;
+ QTest::newRow("09") << QByteArray("hallo") << QByteArray("") << true;
+ QTest::newRow("10") << QByteArray("hallo") << QByteArray("hallohallo") << false;
+ QTest::newRow("11") << QByteArray("hallo") << QByteArray() << true;
+}
+
+void tst_QByteArray::endsWith()
+{
+ QFETCH(QByteArray, ba);
+ QFETCH(QByteArray, sw);
+ QFETCH(bool, result);
+
+ QVERIFY(ba.endsWith(sw) == result);
+
+ if (sw.isNull()) {
+ QVERIFY(ba.endsWith((char*)0) == result);
+ } else {
+ QVERIFY(ba.endsWith(sw.data()) == result);
+ }
+}
+
+void tst_QByteArray::endsWith_char()
+{
+ QVERIFY(QByteArray("hallo").endsWith('o'));
+ QVERIFY(!QByteArray("hallo").endsWith('\0'));
+ QVERIFY(!QByteArray("hallo").endsWith('h'));
+ QVERIFY(QByteArray("h").endsWith('h'));
+ QVERIFY(!QByteArray("h").endsWith('\0'));
+ QVERIFY(!QByteArray("h").endsWith('o'));
+ QVERIFY(!QByteArray("hallo").endsWith('l'));
+ QVERIFY(!QByteArray("").endsWith('\0'));
+ QVERIFY(!QByteArray("").endsWith('a'));
+ QVERIFY(!QByteArray().endsWith('a'));
+ QVERIFY(!QByteArray().endsWith('\0'));
+}
+
+void tst_QByteArray::split_data()
+{
+ QTest::addColumn<QByteArray>("sample");
+ QTest::addColumn<int>("size");
+
+ QTest::newRow("1") << QByteArray("-rw-r--r-- 1 0 0 519240 Jul 9 2002 bigfile")
+ << 14;
+ QTest::newRow("2") << QByteArray("abcde") << 1;
+ QTest::newRow("one empty") << QByteArray("") << 1;
+ QTest::newRow("two empty") << QByteArray(" ") << 2;
+ QTest::newRow("three empty") << QByteArray(" ") << 3;
+
+}
+
+void tst_QByteArray::split()
+{
+ QFETCH(QByteArray, sample);
+ QFETCH(int, size);
+
+ QList<QByteArray> list = sample.split(' ');
+ QCOMPARE(list.count(), size);
+}
+
+void tst_QByteArray::swap()
+{
+ QByteArray b1 = "b1", b2 = "b2";
+ b1.swap(b2);
+ QCOMPARE(b1, QByteArray("b2"));
+ QCOMPARE(b2, QByteArray("b1"));
+}
+
+void tst_QByteArray::base64_data()
+{
+ QTest::addColumn<QByteArray>("rawdata");
+ QTest::addColumn<QByteArray>("base64");
+
+ QTest::newRow("1") << QByteArray("") << QByteArray("");
+ QTest::newRow("2") << QByteArray("1") << QByteArray("MQ==");
+ QTest::newRow("3") << QByteArray("12") << QByteArray("MTI=");
+ QTest::newRow("4") << QByteArray("123") << QByteArray("MTIz");
+ QTest::newRow("5") << QByteArray("1234") << QByteArray("MTIzNA==");
+ QTest::newRow("6") << QByteArray("\n") << QByteArray("Cg==");
+ QTest::newRow("7") << QByteArray("a\n") << QByteArray("YQo=");
+ QTest::newRow("8") << QByteArray("ab\n") << QByteArray("YWIK");
+ QTest::newRow("9") << QByteArray("abc\n") << QByteArray("YWJjCg==");
+ QTest::newRow("a") << QByteArray("abcd\n") << QByteArray("YWJjZAo=");
+ QTest::newRow("b") << QByteArray("abcde\n") << QByteArray("YWJjZGUK");
+ QTest::newRow("c") << QByteArray("abcdef\n") << QByteArray("YWJjZGVmCg==");
+ QTest::newRow("d") << QByteArray("abcdefg\n") << QByteArray("YWJjZGVmZwo=");
+ QTest::newRow("e") << QByteArray("abcdefgh\n") << QByteArray("YWJjZGVmZ2gK");
+
+ QByteArray ba;
+ ba.resize(256);
+ for (int i = 0; i < 256; ++i)
+ ba[i] = i;
+ QTest::newRow("f") << ba << QByteArray("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==");
+
+ QTest::newRow("g") << QByteArray("foo\0bar", 7) << QByteArray("Zm9vAGJhcg==");
+ QTest::newRow("h") << QByteArray("f\xd1oo\x9ctar") << QByteArray("ZtFvb5x0YXI=");
+ QTest::newRow("i") << QByteArray("\"\0\0\0\0\0\0\"", 8) << QByteArray("IgAAAAAAACI=");
+}
+
+
+void tst_QByteArray::base64()
+{
+ QFETCH(QByteArray, rawdata);
+ QFETCH(QByteArray, base64);
+
+ QByteArray arr = QByteArray::fromBase64(base64);
+ QCOMPARE(arr, rawdata);
+
+ QByteArray arr64 = rawdata.toBase64();
+ QCOMPARE(arr64, base64);
+}
+
+//different from the previous test as the input are invalid
+void tst_QByteArray::fromBase64_data()
+{
+ QTest::addColumn<QByteArray>("rawdata");
+ QTest::addColumn<QByteArray>("base64");
+
+ QTest::newRow("1") << QByteArray("") << QByteArray(" ");
+ QTest::newRow("2") << QByteArray("1") << QByteArray("MQ");
+ QTest::newRow("3") << QByteArray("12") << QByteArray("MTI ");
+ QTest::newRow("4") << QByteArray("123") << QByteArray("M=TIz");
+ QTest::newRow("5") << QByteArray("1234") << QByteArray("MTI zN A ");
+ QTest::newRow("6") << QByteArray("\n") << QByteArray("Cg");
+ QTest::newRow("7") << QByteArray("a\n") << QByteArray("======YQo=");
+ QTest::newRow("8") << QByteArray("ab\n") << QByteArray("Y\nWIK");
+ QTest::newRow("9") << QByteArray("abc\n") << QByteArray("YWJjCg==");
+ QTest::newRow("a") << QByteArray("abcd\n") << QByteArray("YWJ\1j\x9cZAo=");
+ QTest::newRow("b") << QByteArray("abcde\n") << QByteArray("YW JjZ\n G\tUK");
+ QTest::newRow("c") << QByteArray("abcdef\n") << QByteArray("YWJjZGVmCg=");
+ QTest::newRow("d") << QByteArray("abcdefg\n") << QByteArray("YWJ\rjZGVmZwo");
+ QTest::newRow("e") << QByteArray("abcdefgh\n") << QByteArray("YWJjZGVmZ2gK");
+
+ QByteArray ba;
+ ba.resize(256);
+ for (int i = 0; i < 256; ++i)
+ ba[i] = i;
+ QTest::newRow("f") << ba << QByteArray("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Nj\n"
+ "c4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1u\n"
+ "b3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpa\n"
+ "anqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd\n"
+ "3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w== ");
+
+
+ QTest::newRow("g") << QByteArray("foo\0bar", 7) << QByteArray("Zm9vAGJhcg");
+ QTest::newRow("h") << QByteArray("f\xd1oo\x9ctar") << QByteArray("ZtFvb5x0YXI=");
+ QTest::newRow("i") << QByteArray("\"\0\0\0\0\0\0\"", 8) << QByteArray("IgAAAAAAACI");
+
+}
+
+
+void tst_QByteArray::fromBase64()
+{
+ QFETCH(QByteArray, rawdata);
+ QFETCH(QByteArray, base64);
+
+ QByteArray arr = QByteArray::fromBase64(base64);
+ QCOMPARE(arr, rawdata);
+}
+
+void tst_QByteArray::qvsnprintf()
+{
+ char buf[20];
+ qMemSet(buf, 42, sizeof(buf));
+
+ QCOMPARE(::qsnprintf(buf, 10, "%s", "bubu"), 4);
+ QCOMPARE(static_cast<const char *>(buf), "bubu");
+ QCOMPARE(buf[5], char(42));
+
+ qMemSet(buf, 42, sizeof(buf));
+ QCOMPARE(::qsnprintf(buf, 5, "%s", "bubu"), 4);
+ QCOMPARE(static_cast<const char *>(buf), "bubu");
+ QCOMPARE(buf[5], char(42));
+
+ qMemSet(buf, 42, sizeof(buf));
+#ifdef Q_OS_WIN
+ // VS 2005 uses the Qt implementation of vsnprintf.
+# if defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(Q_OS_WINCE)
+ QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), -1);
+ QCOMPARE(static_cast<const char*>(buf), "bu");
+# else
+ // windows has to do everything different, of course.
+ QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), -1);
+ buf[19] = '\0';
+ QCOMPARE(static_cast<const char *>(buf), "bub****************");
+# endif
+#else
+#ifdef Q_OS_IRIX
+ // Irix reports back the amount of characters written without the \0
+ QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), 2);
+#else
+ // Every other system in this world reports the amount of data that could have been written
+ QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), 4);
+#endif
+ QCOMPARE(static_cast<const char*>(buf), "bu");
+#endif
+ QCOMPARE(buf[4], char(42));
+
+#ifndef Q_OS_WIN
+ qMemSet(buf, 42, sizeof(buf));
+ QCOMPARE(::qsnprintf(buf, 10, ""), 0);
+#endif
+}
+
+
+void tst_QByteArray::qstrlen()
+{
+ const char *src = "Something about ... \0 a string.";
+ QCOMPARE(::qstrlen((char*)0), (uint)0);
+ QCOMPARE(::qstrlen(src), (uint)20);
+}
+
+void tst_QByteArray::qstrnlen()
+{
+ const char *src = "Something about ... \0 a string.";
+ QCOMPARE(::qstrnlen((char*)0, 1), (uint)0);
+ QCOMPARE(::qstrnlen(src, 31), (uint)20);
+ QCOMPARE(::qstrnlen(src, 19), (uint)19);
+ QCOMPARE(::qstrnlen(src, 21), (uint)20);
+ QCOMPARE(::qstrnlen(src, 20), (uint)20);
+}
+
+void tst_QByteArray::qstrcpy()
+{
+ const char *src = "Something about ... \0 a string.";
+ const char *expected = "Something about ... ";
+ char dst[128];
+
+ QCOMPARE(::qstrcpy(0, 0), (char*)0);
+ QCOMPARE(::qstrcpy(dst, 0), (char*)0);
+
+ QCOMPARE(::qstrcpy(dst ,src), (char *)dst);
+ QCOMPARE((char *)dst, const_cast<char *>(expected));
+}
+
+void tst_QByteArray::qstrncpy()
+{
+ QByteArray src(1024, 'a'), dst(1024, 'b');
+
+ // singularities
+ QCOMPARE(::qstrncpy(0, 0,0), (char*)0);
+ QCOMPARE(::qstrncpy(dst.data(), 0, 0), (char*)0);
+
+ // normal copy
+ QCOMPARE(::qstrncpy(dst.data(), src.data(), src.size()), dst.data());
+
+ src = QByteArray( "Tumdelidum" );
+ QCOMPARE(QByteArray(::qstrncpy(dst.data(), src.data(), src.size())),
+ QByteArray("Tumdelidu"));
+
+ // normal copy with length is longer than necessary
+ src = QByteArray( "Tumdelidum\0foo" );
+ dst.resize(128*1024);
+ QCOMPARE(QByteArray(::qstrncpy(dst.data(), src.data(), dst.size())),
+ QByteArray("Tumdelidum"));
+}
+
+void tst_QByteArray::qstricmp_data()
+{
+ QTest::addColumn<QString>("str1");
+ QTest::addColumn<QString>("str2");
+
+ QTest::newRow("equal 1") << "abcEdb" << "abcEdb";
+ QTest::newRow("equal 2") << "abcEdb" << "ABCeDB";
+ QTest::newRow("equal 3") << "ABCEDB" << "abcedb";
+ QTest::newRow("less 1") << "abcdef" << "abcdefg";
+ QTest::newRow("less 2") << "abcdeF" << "abcdef";
+ QTest::newRow("greater 1") << "abcdef" << "abcdeF";
+ QTest::newRow("greater 2") << "abcdefg" << "abcdef";
+}
+
+void tst_QByteArray::qstricmp()
+{
+ QFETCH(QString, str1);
+ QFETCH(QString, str2);
+
+ int expected = strcmp(str1.toUpper().toLatin1(),
+ str2.toUpper().toLatin1());
+ if ( expected != 0 ) {
+ expected = (expected < 0 ? -1 : 1);
+ }
+ int actual = ::qstricmp(str1.toLatin1(), str2.toLatin1());
+ if ( actual != 0 ) {
+ actual = (actual < 0 ? -1 : 1);
+ }
+ QCOMPARE(expected, actual);
+}
+
+void tst_QByteArray::qstricmp_singularities()
+{
+ QCOMPARE(::qstricmp(0, 0), 0);
+ QVERIFY(::qstricmp(0, "a") != 0);
+ QVERIFY(::qstricmp("a", 0) != 0);
+ QCOMPARE(::qstricmp("", ""), 0);
+}
+
+void tst_QByteArray::qstrnicmp_singularities()
+{
+ QCOMPARE(::qstrnicmp(0, 0, 123), 0);
+ QVERIFY(::qstrnicmp(0, "a", 123) != 0);
+ QVERIFY(::qstrnicmp("a", 0, 123) != 0);
+ QCOMPARE(::qstrnicmp("", "", 123), 0);
+ QCOMPARE(::qstrnicmp("a", "B", 0), 0);
+}
+
+void tst_QByteArray::chop_data()
+{
+ QTest::addColumn<QByteArray>("src");
+ QTest::addColumn<int>("choplength");
+ QTest::addColumn<QByteArray>("expected");
+
+ QTest::newRow("1") << QByteArray("short1") << 128 << QByteArray();
+ QTest::newRow("2") << QByteArray("short2") << int(strlen("short2"))
+ << QByteArray();
+ QTest::newRow("3") << QByteArray("abcdef\0foo", 10) << 2
+ << QByteArray("abcdef\0f", 8);
+ QTest::newRow("4") << QByteArray("STARTTLS\r\n") << 2
+ << QByteArray("STARTTLS");
+ QTest::newRow("5") << QByteArray("") << 1 << QByteArray();
+ QTest::newRow("6") << QByteArray("foo") << 0 << QByteArray("foo");
+ QTest::newRow("7") << QByteArray(0) << 28 << QByteArray();
+}
+
+void tst_QByteArray::chop()
+{
+ QFETCH(QByteArray, src);
+ QFETCH(int, choplength);
+ QFETCH(QByteArray, expected);
+
+ src.chop(choplength);
+ QCOMPARE(src, expected);
+}
+
+void tst_QByteArray::prepend()
+{
+ QByteArray ba("foo");
+ QCOMPARE(ba.prepend((char*)0), QByteArray("foo"));
+ QCOMPARE(ba.prepend(QByteArray()), QByteArray("foo"));
+ QCOMPARE(ba.prepend("1"), QByteArray("1foo"));
+ QCOMPARE(ba.prepend(QByteArray("2")), QByteArray("21foo"));
+ QCOMPARE(ba.prepend('3'), QByteArray("321foo"));
+ QCOMPARE(ba.prepend("\0 ", 2), QByteArray::fromRawData("\0 321foo", 8));
+}
+
+void tst_QByteArray::append()
+{
+ QByteArray ba("foo");
+ QCOMPARE(ba.append((char*)0), QByteArray("foo"));
+ QCOMPARE(ba.append(QByteArray()), QByteArray("foo"));
+ QCOMPARE(ba.append("1"), QByteArray("foo1"));
+ QCOMPARE(ba.append(QByteArray("2")), QByteArray("foo12"));
+ QCOMPARE(ba.append('3'), QByteArray("foo123"));
+ QCOMPARE(ba.append("\0"), QByteArray("foo123"));
+ QCOMPARE(ba.append("\0", 1), QByteArray::fromRawData("foo123\0", 7));
+ QCOMPARE(ba.size(), 7);
+}
+
+void tst_QByteArray::insert()
+{
+ QByteArray ba("Meal");
+ QCOMPARE(ba.insert(1, QByteArray("ontr")), QByteArray("Montreal"));
+ QCOMPARE(ba.insert(ba.size(), "foo"), QByteArray("Montrealfoo"));
+
+ ba = QByteArray("13");
+ QCOMPARE(ba.insert(1, QByteArray("2")), QByteArray("123"));
+
+ ba = "ac";
+ QCOMPARE(ba.insert(1, 'b'), QByteArray("abc"));
+ QCOMPARE(ba.size(), 3);
+
+ ba = "ikl";
+ QCOMPARE(ba.insert(1, "j"), QByteArray("ijkl"));
+ QCOMPARE(ba.size(), 4);
+
+ ba = "ab";
+ QCOMPARE(ba.insert(1, "\0X\0", 3), QByteArray::fromRawData("a\0X\0b", 5));
+ QCOMPARE(ba.size(), 5);
+}
+
+void tst_QByteArray::remove_data()
+{
+ QTest::addColumn<QByteArray>("src");
+ QTest::addColumn<int>("position");
+ QTest::addColumn<int>("length");
+ QTest::addColumn<QByteArray>("expected");
+
+ QTest::newRow("1") << QByteArray("Montreal") << 1 << 4
+ << QByteArray("Meal");
+ QTest::newRow("2") << QByteArray() << 10 << 10 << QByteArray();
+ QTest::newRow("3") << QByteArray("hi") << 0 << 10 << QByteArray();
+ QTest::newRow("4") << QByteArray("Montreal") << 4 << 100
+ << QByteArray("Mont");
+
+ // index out of range
+ QTest::newRow("5") << QByteArray("Montreal") << 8 << 1
+ << QByteArray("Montreal");
+ QTest::newRow("6") << QByteArray("Montreal") << 18 << 4
+ << QByteArray("Montreal");
+}
+
+void tst_QByteArray::remove()
+{
+ QFETCH(QByteArray, src);
+ QFETCH(int, position);
+ QFETCH(int, length);
+ QFETCH(QByteArray, expected);
+ QCOMPARE(src.remove(position, length), expected);
+}
+
+void tst_QByteArray::replace_data()
+{
+ QTest::addColumn<QByteArray>("src");
+ QTest::addColumn<int>("pos");
+ QTest::addColumn<int>("len");
+ QTest::addColumn<QByteArray>("after");
+ QTest::addColumn<QByteArray>("expected");
+
+ QTest::newRow("1") << QByteArray("Say yes!") << 4 << 3
+ << QByteArray("no") << QByteArray("Say no!");
+ QTest::newRow("2") << QByteArray("rock and roll") << 5 << 3
+ << QByteArray("&") << QByteArray("rock & roll");
+ QTest::newRow("3") << QByteArray("foo") << 3 << 0 << QByteArray("bar")
+ << QByteArray("foobar");
+ QTest::newRow("4") << QByteArray() << 0 << 0 << QByteArray() << QByteArray();
+ // index out of range
+ QTest::newRow("5") << QByteArray() << 3 << 0 << QByteArray("hi")
+ << QByteArray(" hi");
+ // Optimized path
+ QTest::newRow("6") << QByteArray("abcdef") << 3 << 12 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijkl");
+ QTest::newRow("7") << QByteArray("abcdef") << 3 << 4 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijkl");
+ QTest::newRow("8") << QByteArray("abcdef") << 3 << 3 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijkl");
+ QTest::newRow("9") << QByteArray("abcdef") << 3 << 2 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijklf");
+ QTest::newRow("10") << QByteArray("abcdef") << 2 << 2 << QByteArray("xx") << QByteArray("abxxef");
+}
+
+void tst_QByteArray::replace()
+{
+ QFETCH(QByteArray, src);
+ QFETCH(int, pos);
+ QFETCH(int, len);
+ QFETCH(QByteArray, after);
+ QFETCH(QByteArray, expected);
+
+ QByteArray str1 = src;
+ QByteArray str2 = src;
+
+ QCOMPARE(str1.replace(pos, len, after).constData(), expected.constData());
+ QCOMPARE(str2.replace(pos, len, after.data()), expected);
+}
+
+void tst_QByteArray::replaceWithSpecifiedLength()
+{
+ const char after[] = "zxc\0vbnmqwert";
+ int lenAfter = 6;
+ QByteArray ba("abcdefghjk");
+ ba.replace(0,2,after,lenAfter);
+
+ const char _expected[] = "zxc\0vbcdefghjk";
+ QByteArray expected(_expected,sizeof(_expected)-1);
+ QCOMPARE(ba,expected);
+}
+
+void tst_QByteArray::indexOf_data()
+{
+ QTest::addColumn<QByteArray>("haystack");
+ QTest::addColumn<QByteArray>("needle");
+ QTest::addColumn<int>("startpos");
+ QTest::addColumn<int>("expected");
+
+ QTest::newRow( "1" ) << QByteArray("abc") << QByteArray("a") << 0 << 0;
+ QTest::newRow( "2" ) << QByteArray("abc") << QByteArray("A") << 0 << -1;
+ QTest::newRow( "3" ) << QByteArray("abc") << QByteArray("a") << 1 << -1;
+ QTest::newRow( "4" ) << QByteArray("abc") << QByteArray("A") << 1 << -1;
+ QTest::newRow( "5" ) << QByteArray("abc") << QByteArray("b") << 0 << 1;
+ QTest::newRow( "6" ) << QByteArray("abc") << QByteArray("B") << 0 << -1;
+ QTest::newRow( "7" ) << QByteArray("abc") << QByteArray("b") << 1 << 1;
+ QTest::newRow( "8" ) << QByteArray("abc") << QByteArray("B") << 1 << -1;
+ QTest::newRow( "9" ) << QByteArray("abc") << QByteArray("b") << 2 << -1;
+ QTest::newRow( "10" ) << QByteArray("abc") << QByteArray("c") << 0 << 2;
+ QTest::newRow( "11" ) << QByteArray("abc") << QByteArray("C") << 0 << -1;
+ QTest::newRow( "12" ) << QByteArray("abc") << QByteArray("c") << 1 << 2;
+ QTest::newRow( "13" ) << QByteArray("abc") << QByteArray("C") << 1 << -1;
+ QTest::newRow( "14" ) << QByteArray("abc") << QByteArray("c") << 2 << 2;
+ QTest::newRow( "15" ) << QByteArray("aBc") << QByteArray("bc") << 0 << -1;
+ QTest::newRow( "16" ) << QByteArray("aBc") << QByteArray("Bc") << 0 << 1;
+ QTest::newRow( "17" ) << QByteArray("aBc") << QByteArray("bC") << 0 << -1;
+ QTest::newRow( "18" ) << QByteArray("aBc") << QByteArray("BC") << 0 << -1;
+
+ // task 203692
+ static const char h19[] = {'x', 0x00, (char)0xe7, 0x25, 0x1c, 0x0a};
+ static const char n19[] = {0x00, 0x00, 0x01, 0x00};
+ QTest::newRow( "19" ) << QByteArray(h19, sizeof(h19))
+ << QByteArray(n19, sizeof(n19)) << 0 << -1;
+
+ QTest::newRow( "empty" ) << QByteArray("") << QByteArray("x") << 0 << -1;
+ QTest::newRow( "null" ) << QByteArray() << QByteArray("x") << 0 << -1;
+ QTest::newRow( "null-in-null") << QByteArray() << QByteArray() << 0 << 0;
+ QTest::newRow( "empty-in-null") << QByteArray() << QByteArray("") << 0 << 0;
+ QTest::newRow( "null-in-empty") << QByteArray("") << QByteArray() << 0 << 0;
+ QTest::newRow( "empty-in-empty") << QByteArray("") << QByteArray("") << 0 << 0;
+
+ QByteArray veryBigHaystack(500, 'a');
+ veryBigHaystack += 'B';
+ QTest::newRow("BoyerMooreStressTest") << veryBigHaystack << veryBigHaystack << 0 << 0;
+ QTest::newRow("BoyerMooreStressTest2") << QByteArray(veryBigHaystack + 'c') << QByteArray(veryBigHaystack) << 0 << 0;
+ QTest::newRow("BoyerMooreStressTest3") << QByteArray('c' + veryBigHaystack) << QByteArray(veryBigHaystack) << 0 << 1;
+ QTest::newRow("BoyerMooreStressTest4") << QByteArray(veryBigHaystack) << QByteArray(veryBigHaystack + 'c') << 0 << -1;
+ QTest::newRow("BoyerMooreStressTest5") << QByteArray(veryBigHaystack) << QByteArray('c' + veryBigHaystack) << 0 << -1;
+ QTest::newRow("BoyerMooreStressTest6") << QByteArray('d' + veryBigHaystack) << QByteArray('c' + veryBigHaystack) << 0 << -1;
+ QTest::newRow("BoyerMooreStressTest6") << QByteArray(veryBigHaystack + 'c') << QByteArray('c' + veryBigHaystack) << 0 << -1;
+}
+
+void tst_QByteArray::indexOf()
+{
+ QFETCH( QByteArray, haystack );
+ QFETCH( QByteArray, needle );
+ QFETCH( int, startpos );
+ QFETCH( int, expected );
+
+ bool hasNull = needle.contains('\0');
+
+ QCOMPARE( haystack.indexOf(needle, startpos), expected );
+ if (!hasNull)
+ QCOMPARE( haystack.indexOf(needle.data(), startpos), expected );
+ if (needle.size() == 1)
+ QCOMPARE( haystack.indexOf(needle.at(0), startpos), expected );
+
+ if (startpos == 0) {
+ QCOMPARE( haystack.indexOf(needle), expected );
+ if (!hasNull)
+ QCOMPARE( haystack.indexOf(needle.data()), expected );
+ if (needle.size() == 1)
+ QCOMPARE( haystack.indexOf(needle.at(0)), expected );
+ }
+}
+
+void tst_QByteArray::lastIndexOf_data()
+{
+ QTest::addColumn<QByteArray>("haystack");
+ QTest::addColumn<QByteArray>("needle");
+ QTest::addColumn<int>("startpos");
+ QTest::addColumn<int>("expected");
+
+ QTest::newRow( "1" ) << QByteArray("abc") << QByteArray("a") << 0 << 0;
+ QTest::newRow( "2" ) << QByteArray("abc") << QByteArray("A") << 0 << -1;
+ QTest::newRow( "3" ) << QByteArray("abc") << QByteArray("a") << 1 << 0;
+ QTest::newRow( "4" ) << QByteArray("abc") << QByteArray("A") << 1 << -1;
+ QTest::newRow( "5" ) << QByteArray("abc") << QByteArray("a") << -1 << 0;
+ QTest::newRow( "6" ) << QByteArray("abc") << QByteArray("b") << 0 << -1;
+ QTest::newRow( "7" ) << QByteArray("abc") << QByteArray("B") << 0 << -1;
+ QTest::newRow( "8" ) << QByteArray("abc") << QByteArray("b") << 1 << 1;
+ QTest::newRow( "9" ) << QByteArray("abc") << QByteArray("B") << 1 << -1;
+ QTest::newRow( "10" ) << QByteArray("abc") << QByteArray("b") << 2 << 1;
+ QTest::newRow( "11" ) << QByteArray("abc") << QByteArray("b") << -1 << 1;
+ QTest::newRow( "12" ) << QByteArray("abc") << QByteArray("c") << 0 << -1;
+ QTest::newRow( "13" ) << QByteArray("abc") << QByteArray("C") << 0 << -1;
+ QTest::newRow( "14" ) << QByteArray("abc") << QByteArray("c") << 1 << -1;
+ QTest::newRow( "15" ) << QByteArray("abc") << QByteArray("C") << 1 << -1;
+ QTest::newRow( "16" ) << QByteArray("abc") << QByteArray("c") << 2 << 2;
+ QTest::newRow( "17" ) << QByteArray("abc") << QByteArray("c") << -1 << 2;
+ QTest::newRow( "18" ) << QByteArray("aBc") << QByteArray("bc") << 0 << -1;
+ QTest::newRow( "19" ) << QByteArray("aBc") << QByteArray("Bc") << 0 << -1;
+ QTest::newRow( "20" ) << QByteArray("aBc") << QByteArray("Bc") << 2 << 1;
+ QTest::newRow( "21" ) << QByteArray("aBc") << QByteArray("Bc") << 1 << 1;
+ QTest::newRow( "22" ) << QByteArray("aBc") << QByteArray("Bc") << -1 << 1;
+ QTest::newRow( "23" ) << QByteArray("aBc") << QByteArray("bC") << 0 << -1;
+ QTest::newRow( "24" ) << QByteArray("aBc") << QByteArray("BC") << 0 << -1;
+
+ // task 203692
+ static const char h25[] = {0x00, (char)0xbc, 0x03, 0x10, 0x0a };
+ static const char n25[] = {0x00, 0x00, 0x01, 0x00};
+ QTest::newRow( "25" ) << QByteArray(h25, sizeof(h25))
+ << QByteArray(n25, sizeof(n25)) << 0 << -1;
+
+ QTest::newRow( "empty" ) << QByteArray("") << QByteArray("x") << -1 << -1;
+ QTest::newRow( "null" ) << QByteArray() << QByteArray("x") << -1 << -1;
+ QTest::newRow( "null-in-null") << QByteArray() << QByteArray() << -1 << 0;
+ QTest::newRow( "empty-in-null") << QByteArray() << QByteArray("") << -1 << 0;
+ QTest::newRow( "null-in-empty") << QByteArray("") << QByteArray() << -1 << 0;
+ QTest::newRow( "empty-in-empty") << QByteArray("") << QByteArray("") << -1 << 0;
+}
+
+void tst_QByteArray::lastIndexOf()
+{
+ QFETCH( QByteArray, haystack );
+ QFETCH( QByteArray, needle );
+ QFETCH( int, startpos );
+ QFETCH( int, expected );
+
+ bool hasNull = needle.contains('\0');
+
+ QCOMPARE( haystack.lastIndexOf(needle, startpos), expected );
+ if (!hasNull)
+ QCOMPARE( haystack.lastIndexOf(needle.data(), startpos), expected );
+ if (needle.size() == 1)
+ QCOMPARE( haystack.lastIndexOf(needle.at(0), startpos), expected );
+
+ if (startpos == -1) {
+ QCOMPARE( haystack.lastIndexOf(needle), expected );
+ if (!hasNull)
+ QCOMPARE( haystack.lastIndexOf(needle.data()), expected );
+ if (needle.size() == 1)
+ QCOMPARE( haystack.lastIndexOf(needle.at(0)), expected );
+ }
+}
+
+void tst_QByteArray::number()
+{
+ QCOMPARE(QString(QByteArray::number((quint64) 0)),
+ QString(QByteArray("0")));
+ QCOMPARE(QString(QByteArray::number(Q_UINT64_C(0xFFFFFFFFFFFFFFFF))),
+ QString(QByteArray("18446744073709551615")));
+ QCOMPARE(QString(QByteArray::number(Q_INT64_C(0xFFFFFFFFFFFFFFFF))),
+ QString(QByteArray("-1")));
+ QCOMPARE(QString(QByteArray::number(qint64(0))),
+ QString(QByteArray("0")));
+ QCOMPARE(QString(QByteArray::number(Q_INT64_C(0x7FFFFFFFFFFFFFFF))),
+ QString(QByteArray("9223372036854775807")));
+ QCOMPARE(QString(QByteArray::number(Q_INT64_C(0x8000000000000000))),
+ QString(QByteArray("-9223372036854775808")));
+}
+
+// defined later
+extern const char globalChar;
+
+void tst_QByteArray::toInt_data()
+{
+ QTest::addColumn<QByteArray>("string");
+ QTest::addColumn<int>("base");
+ QTest::addColumn<int>("expectednumber");
+ QTest::addColumn<bool>("expectedok");
+
+ QTest::newRow("base 10") << QByteArray("100") << 10 << int(100) << true;
+ QTest::newRow("base 16") << QByteArray("100") << 16 << int(256) << true;
+ QTest::newRow("base 16") << QByteArray("0400") << 16 << int(1024) << true;
+ QTest::newRow("base 2") << QByteArray("1111") << 2 << int(15) << true;
+ QTest::newRow("base 8") << QByteArray("100") << 8 << int(64) << true;
+ QTest::newRow("base 0") << QByteArray("0x10") << 0 << int(16) << true;
+ QTest::newRow("base 0") << QByteArray("10") << 0 << int(10) << true;
+ QTest::newRow("base 0") << QByteArray("010") << 0 << int(8) << true;
+ QTest::newRow("empty") << QByteArray() << 0 << int(0) << false;
+
+ // using fromRawData
+ QTest::newRow("raw1") << QByteArray::fromRawData("1", 1) << 10 << 1 << true;
+ QTest::newRow("raw2") << QByteArray::fromRawData("1foo", 1) << 10 << 1 << true;
+ QTest::newRow("raw3") << QByteArray::fromRawData("12", 1) << 10 << 1 << true;
+ QTest::newRow("raw4") << QByteArray::fromRawData("123456789", 1) << 10 << 1 << true;
+ QTest::newRow("raw4") << QByteArray::fromRawData("123456789", 2) << 10 << 12 << true;
+
+ QTest::newRow("raw-static") << QByteArray::fromRawData(&globalChar, 1) << 10 << 1 << true;
+}
+
+void tst_QByteArray::toInt()
+{
+ QFETCH( QByteArray, string );
+ QFETCH( int, base );
+ QFETCH( int, expectednumber );
+ QFETCH( bool, expectedok );
+
+ bool ok;
+ int number = string.toInt(&ok, base);
+
+ QCOMPARE( ok, expectedok );
+ QCOMPARE( number, expectednumber );
+}
+
+Q_DECLARE_METATYPE(qulonglong)
+void tst_QByteArray::toULong_data()
+{
+ QTest::addColumn<QByteArray>("str");
+ QTest::addColumn<int>("base");
+ QTest::addColumn<ulong>("result");
+ QTest::addColumn<bool>("ok");
+
+ ulong LongMaxPlusOne = (ulong)LONG_MAX + 1;
+ QTest::newRow("LONG_MAX+1") << QString::number(LongMaxPlusOne).toLatin1() << 10 << LongMaxPlusOne << true;
+ QTest::newRow("default") << QByteArray() << 10 << 0UL << false;
+ QTest::newRow("empty") << QByteArray("") << 10 << 0UL << false;
+ QTest::newRow("ulong1") << QByteArray("3234567890") << 10 << 3234567890UL << true;
+ QTest::newRow("ulong2") << QByteArray("fFFfFfFf") << 16 << 0xFFFFFFFFUL << true;
+}
+
+void tst_QByteArray::toULong()
+{
+ QFETCH(QByteArray, str);
+ QFETCH(int, base);
+ QFETCH(ulong, result);
+ QFETCH(bool, ok);
+
+ bool b;
+ QCOMPARE(str.toULong(0, base), result);
+ QCOMPARE(str.toULong(&b, base), result);
+ QCOMPARE(b, ok);
+}
+
+void tst_QByteArray::toULongLong_data()
+{
+ QTest::addColumn<QByteArray>("str");
+ QTest::addColumn<int>("base");
+ QTest::addColumn<qulonglong>("result");
+ QTest::addColumn<bool>("ok");
+
+ QTest::newRow("default") << QByteArray() << 10 << (qulonglong)0 << false;
+ QTest::newRow("out of base bound") << QByteArray("c") << 10 << (qulonglong)0 << false;
+
+}
+
+void tst_QByteArray::toULongLong()
+{
+ QFETCH(QByteArray, str);
+ QFETCH(int, base);
+ QFETCH(qulonglong, result);
+ QFETCH(bool, ok);
+
+ bool b;
+ QCOMPARE(str.toULongLong(0, base), result);
+ QCOMPARE(str.toULongLong(&b, base), result);
+ QCOMPARE(b, ok);
+}
+
+// global function defined in qbytearray.cpp
+void tst_QByteArray::qAllocMore()
+{
+ static const int t[] = {
+ INT_MIN, INT_MIN + 1, -1234567, -66000, -1025,
+ -3, -1, 0, +1, +3, +1025, +66000, +1234567, INT_MAX - 1, INT_MAX,
+ INT_MAX/3
+ };
+ static const int N = sizeof(t)/sizeof(t[0]);
+
+ // make sure qAllocMore() doesn't loop infinitely on any input
+ for (int i = 0; i < N; ++i) {
+ for (int j = 0; j < N; ++j) {
+ ::qAllocMore(t[i], t[j]);
+ }
+ }
+}
+
+void tst_QByteArray::resizeAfterFromRawData()
+{
+ QByteArray buffer("hello world");
+
+ QByteArray array = QByteArray::fromRawData(buffer.constData(), buffer.size());
+ QVERIFY(array.constData() == buffer.constData());
+ array.resize(5);
+ QVERIFY(array.constData() == buffer.constData());
+}
+
+void tst_QByteArray::appendAfterFromRawData()
+{
+ QByteArray arr;
+ {
+ char data[] = "X";
+ arr += QByteArray::fromRawData(data, sizeof(data));
+ data[0] = 'Y';
+ }
+ QVERIFY(arr.at(0) == 'X');
+}
+
+void tst_QByteArray::toFromHex_data()
+{
+ QTest::addColumn<QByteArray>("str");
+ QTest::addColumn<QByteArray>("hex");
+ QTest::addColumn<QByteArray>("hex_alt1");
+
+ QTest::newRow("Qt is great!")
+ << QByteArray("Qt is great!")
+ << QByteArray("517420697320677265617421")
+ << QByteArray("51 74 20 69 73 20 67 72 65 61 74 21");
+
+ QTest::newRow("Qt is so great!")
+ << QByteArray("Qt is so great!")
+ << QByteArray("517420697320736f20677265617421")
+ << QByteArray("51 74 20 69 73 20 73 6f 20 67 72 65 61 74 21");
+
+ QTest::newRow("default-constructed")
+ << QByteArray()
+ << QByteArray()
+ << QByteArray();
+
+ QTest::newRow("empty")
+ << QByteArray("")
+ << QByteArray("")
+ << QByteArray("");
+
+ QTest::newRow("array-of-null")
+ << QByteArray("\0", 1)
+ << QByteArray("00")
+ << QByteArray("0");
+
+ QTest::newRow("no-leading-zero")
+ << QByteArray("\xf")
+ << QByteArray("0f")
+ << QByteArray("f");
+
+ QTest::newRow("single-byte")
+ << QByteArray("\xaf")
+ << QByteArray("af")
+ << QByteArray("xaf");
+
+ QTest::newRow("no-leading-zero")
+ << QByteArray("\xd\xde\xad\xc0\xde")
+ << QByteArray("0ddeadc0de")
+ << QByteArray("ddeadc0de");
+
+ QTest::newRow("garbage")
+ << QByteArray("\xC\xde\xeC\xea\xee\xDe\xee\xee")
+ << QByteArray("0cdeeceaeedeeeee")
+ << QByteArray("Code less. Create more. Deploy everywhere.");
+
+ QTest::newRow("under-defined-1")
+ << QByteArray("\x1\x23")
+ << QByteArray("0123")
+ << QByteArray("x123");
+
+ QTest::newRow("under-defined-2")
+ << QByteArray("\x12\x34")
+ << QByteArray("1234")
+ << QByteArray("x1234");
+}
+
+void tst_QByteArray::toFromHex()
+{
+ QFETCH(QByteArray, str);
+ QFETCH(QByteArray, hex);
+ QFETCH(QByteArray, hex_alt1);
+
+ {
+ const QByteArray th = str.toHex();
+ QCOMPARE(th.size(), hex.size());
+ QCOMPARE(th, hex);
+ }
+
+ {
+ const QByteArray fh = QByteArray::fromHex(hex);
+ QCOMPARE(fh.size(), str.size());
+ QCOMPARE(fh, str);
+ }
+
+ QCOMPARE(QByteArray::fromHex(hex_alt1), str);
+}
+
+void tst_QByteArray::toFromPercentEncoding()
+{
+ QByteArray arr("Qt is great!");
+/*
+ QByteArray data = arr.toPercentEncoding();
+ QCOMPARE(QString(data), QString("Qt%20is%20great%21"));
+ QCOMPARE(QByteArray::fromPercentEncoding(data), arr);
+*/
+ QByteArray data = arr.toPercentEncoding("! ", "Qt");
+ QCOMPARE(QString(data), QString("%51%74 is grea%74!"));
+ QCOMPARE(QByteArray::fromPercentEncoding(data), arr);
+
+ data = arr.toPercentEncoding(QByteArray(), "abcdefghijklmnopqrstuvwxyz", 'Q');
+ QCOMPARE(QString(data), QString("Q51Q74Q20Q69Q73Q20Q67Q72Q65Q61Q74Q21"));
+ QCOMPARE(QByteArray::fromPercentEncoding(data, 'Q'), arr);
+
+ // verify that to/from percent encoding preserves nullity
+ arr = "";
+ QVERIFY(arr.isEmpty());
+ QVERIFY(!arr.isNull());
+ QVERIFY(arr.toPercentEncoding().isEmpty());
+ QVERIFY(!arr.toPercentEncoding().isNull());
+ QVERIFY(QByteArray::fromPercentEncoding("").isEmpty());
+ QVERIFY(!QByteArray::fromPercentEncoding("").isNull());
+
+ arr = QByteArray();
+ QVERIFY(arr.isEmpty());
+ QVERIFY(arr.isNull());
+ QVERIFY(arr.toPercentEncoding().isEmpty());
+ QVERIFY(arr.toPercentEncoding().isNull());
+ QVERIFY(QByteArray::fromPercentEncoding(QByteArray()).isEmpty());
+ QVERIFY(QByteArray::fromPercentEncoding(QByteArray()).isNull());
+}
+
+void tst_QByteArray::compare_data()
+{
+ QTest::addColumn<QByteArray>("str1");
+ QTest::addColumn<QByteArray>("str2");
+ QTest::addColumn<int>("result");
+
+ QTest::newRow("null") << QByteArray() << QByteArray() << 0;
+ QTest::newRow("null-empty")<< QByteArray() << QByteArray("") << 0;
+ QTest::newRow("empty-null")<< QByteArray("") << QByteArray() << 0;
+ QTest::newRow("null-full") << QByteArray() << QByteArray("abc") << -1;
+ QTest::newRow("full-null") << QByteArray("abc") << QByteArray() << +1;
+ QTest::newRow("empty-full")<< QByteArray("") << QByteArray("abc") << -1;
+ QTest::newRow("full-empty")<< QByteArray("abc") << QByteArray("") << +1;
+ QTest::newRow("rawempty-full") << QByteArray::fromRawData("abc", 0) << QByteArray("abc") << -1;
+ QTest::newRow("full-rawempty") << QByteArray("abc") << QByteArray::fromRawData("abc", 0) << +1;
+
+ QTest::newRow("equal 1") << QByteArray("abc") << QByteArray("abc") << 0;
+ QTest::newRow("equal 2") << QByteArray::fromRawData("abc", 3) << QByteArray("abc") << 0;
+ QTest::newRow("equal 3") << QByteArray::fromRawData("abcdef", 3) << QByteArray("abc") << 0;
+ QTest::newRow("equal 4") << QByteArray("abc") << QByteArray::fromRawData("abc", 3) << 0;
+ QTest::newRow("equal 5") << QByteArray("abc") << QByteArray::fromRawData("abcdef", 3) << 0;
+ QTest::newRow("equal 6") << QByteArray("a\0bc", 4) << QByteArray("a\0bc", 4) << 0;
+ QTest::newRow("equal 7") << QByteArray::fromRawData("a\0bcdef", 4) << QByteArray("a\0bc", 4) << 0;
+ QTest::newRow("equal 8") << QByteArray("a\0bc", 4) << QByteArray::fromRawData("a\0bcdef", 4) << 0;
+
+ QTest::newRow("less 1") << QByteArray("000") << QByteArray("abc") << -1;
+ QTest::newRow("less 2") << QByteArray::fromRawData("00", 3) << QByteArray("abc") << -1;
+ QTest::newRow("less 3") << QByteArray("000") << QByteArray::fromRawData("abc", 3) << -1;
+ QTest::newRow("less 4") << QByteArray("abc", 3) << QByteArray("abc", 4) << -1;
+ QTest::newRow("less 5") << QByteArray::fromRawData("abc\0", 3) << QByteArray("abc\0", 4) << -1;
+ QTest::newRow("less 6") << QByteArray("a\0bc", 4) << QByteArray("a\0bd", 4) << -1;
+
+ QTest::newRow("greater 1") << QByteArray("abc") << QByteArray("000") << +1;
+ QTest::newRow("greater 2") << QByteArray("abc") << QByteArray::fromRawData("00", 3) << +1;
+ QTest::newRow("greater 3") << QByteArray("abcd") << QByteArray::fromRawData("abcd", 3) << +1;
+ QTest::newRow("greater 4") << QByteArray("a\0bc", 4) << QByteArray("a\0bb", 4) << +1;
+}
+
+void tst_QByteArray::compare()
+{
+ QFETCH(QByteArray, str1);
+ QFETCH(QByteArray, str2);
+ QFETCH(int, result);
+
+ const bool isEqual = result == 0;
+ const bool isLess = result < 0;
+ const bool isGreater = result > 0;
+
+ // basic tests:
+ QCOMPARE(str1 == str2, isEqual);
+ QCOMPARE(str1 < str2, isLess);
+ QCOMPARE(str1 > str2, isGreater);
+
+ // composed tests:
+ QCOMPARE(str1 <= str2, isLess || isEqual);
+ QCOMPARE(str1 >= str2, isGreater || isEqual);
+ QCOMPARE(str1 != str2, !isEqual);
+
+ // inverted tests:
+ QCOMPARE(str2 == str1, isEqual);
+ QCOMPARE(str2 < str1, isGreater);
+ QCOMPARE(str2 > str1, isLess);
+
+ // composed, inverted tests:
+ QCOMPARE(str2 <= str1, isGreater || isEqual);
+ QCOMPARE(str2 >= str1, isLess || isEqual);
+ QCOMPARE(str2 != str1, !isEqual);
+}
+
+void tst_QByteArray::compareCharStar_data()
+{
+ QTest::addColumn<QByteArray>("str1");
+ QTest::addColumn<QString>("string2");
+ QTest::addColumn<int>("result");
+
+ QTest::newRow("null-null") << QByteArray() << QString() << 0;
+ QTest::newRow("null-empty") << QByteArray() << "" << 0;
+ QTest::newRow("null-full") << QByteArray() << "abc" << -1;
+ QTest::newRow("empty-null") << QByteArray("") << QString() << 0;
+ QTest::newRow("empty-empty") << QByteArray("") << "" << 0;
+ QTest::newRow("empty-full") << QByteArray("") << "abc" << -1;
+ QTest::newRow("raw-null") << QByteArray::fromRawData("abc", 0) << QString() << 0;
+ QTest::newRow("raw-empty") << QByteArray::fromRawData("abc", 0) << QString("") << 0;
+ QTest::newRow("raw-full") << QByteArray::fromRawData("abc", 0) << "abc" << -1;
+
+ QTest::newRow("full-null") << QByteArray("abc") << QString() << +1;
+ QTest::newRow("full-empty") << QByteArray("abc") << "" << +1;
+
+ QTest::newRow("equal1") << QByteArray("abc") << "abc" << 0;
+ QTest::newRow("equal2") << QByteArray("abcd", 3) << "abc" << 0;
+ QTest::newRow("equal3") << QByteArray::fromRawData("abcd", 3) << "abc" << 0;
+
+ QTest::newRow("less1") << QByteArray("ab") << "abc" << -1;
+ QTest::newRow("less2") << QByteArray("abb") << "abc" << -1;
+ QTest::newRow("less3") << QByteArray::fromRawData("abc", 2) << "abc" << -1;
+ QTest::newRow("less4") << QByteArray("", 1) << "abc" << -1;
+ QTest::newRow("less5") << QByteArray::fromRawData("", 1) << "abc" << -1;
+ QTest::newRow("less6") << QByteArray("a\0bc", 4) << "a.bc" << -1;
+
+ QTest::newRow("greater1") << QByteArray("ac") << "abc" << +1;
+ QTest::newRow("greater2") << QByteArray("abd") << "abc" << +1;
+ QTest::newRow("greater3") << QByteArray("abcd") << "abc" << +1;
+ QTest::newRow("greater4") << QByteArray::fromRawData("abcd", 4) << "abc" << +1;
+}
+
+void tst_QByteArray::compareCharStar()
+{
+ QFETCH(QByteArray, str1);
+ QFETCH(QString, string2);
+ QFETCH(int, result);
+
+ const bool isEqual = result == 0;
+ const bool isLess = result < 0;
+ const bool isGreater = result > 0;
+ QByteArray qba = string2.toLatin1();
+ const char *str2 = qba.constData();
+ if (string2.isNull())
+ str2 = 0;
+
+ // basic tests:
+ QCOMPARE(str1 == str2, isEqual);
+ QCOMPARE(str1 < str2, isLess);
+ QCOMPARE(str1 > str2, isGreater);
+
+ // composed tests:
+ QCOMPARE(str1 <= str2, isLess || isEqual);
+ QCOMPARE(str1 >= str2, isGreater || isEqual);
+ QCOMPARE(str1 != str2, !isEqual);
+
+ // inverted tests:
+ QCOMPARE(str2 == str1, isEqual);
+ QCOMPARE(str2 < str1, isGreater);
+ QCOMPARE(str2 > str1, isLess);
+
+ // composed, inverted tests:
+ QCOMPARE(str2 <= str1, isGreater || isEqual);
+ QCOMPARE(str2 >= str1, isLess || isEqual);
+ QCOMPARE(str2 != str1, !isEqual);
+}
+
+void tst_QByteArray::repeatedSignature() const
+{
+ /* repated() should be a const member. */
+ const QByteArray string;
+ string.repeated(3);
+}
+
+void tst_QByteArray::repeated() const
+{
+ QFETCH(QByteArray, string);
+ QFETCH(QByteArray, expected);
+ QFETCH(int, count);
+
+ QCOMPARE(string.repeated(count), expected);
+}
+
+void tst_QByteArray::repeated_data() const
+{
+ QTest::addColumn<QByteArray>("string" );
+ QTest::addColumn<QByteArray>("expected" );
+ QTest::addColumn<int>("count" );
+
+ /* Empty strings. */
+ QTest::newRow("")
+ << QByteArray()
+ << QByteArray()
+ << 0;
+
+ QTest::newRow("")
+ << QByteArray()
+ << QByteArray()
+ << -1004;
+
+ QTest::newRow("")
+ << QByteArray()
+ << QByteArray()
+ << 1;
+
+ QTest::newRow("")
+ << QByteArray()
+ << QByteArray()
+ << 5;
+
+ /* On simple string. */
+ QTest::newRow("")
+ << QByteArray("abc")
+ << QByteArray()
+ << -1004;
+
+ QTest::newRow("")
+ << QByteArray("abc")
+ << QByteArray()
+ << -1;
+
+ QTest::newRow("")
+ << QByteArray("abc")
+ << QByteArray()
+ << 0;
+
+ QTest::newRow("")
+ << QByteArray("abc")
+ << QByteArray("abc")
+ << 1;
+
+ QTest::newRow("")
+ << QByteArray(("abc"))
+ << QByteArray(("abcabc"))
+ << 2;
+
+ QTest::newRow("")
+ << QByteArray(("abc"))
+ << QByteArray(("abcabcabc"))
+ << 3;
+
+ QTest::newRow("")
+ << QByteArray(("abc"))
+ << QByteArray(("abcabcabcabc"))
+ << 4;
+}
+
+void tst_QByteArray::byteRefDetaching() const
+{
+ {
+ QByteArray str = "str";
+ QByteArray copy;
+ copy[0] = 'S';
+
+ QCOMPARE(str, QByteArray("str"));
+ }
+
+ {
+ char buf[] = { 's', 't', 'r' };
+ QByteArray str = QByteArray::fromRawData(buf, 3);
+ str[0] = 'S';
+
+ QCOMPARE(buf[0], char('s'));
+ }
+
+ {
+ static const char buf[] = { 's', 't', 'r' };
+ QByteArray str = QByteArray::fromRawData(buf, 3);
+
+ // this causes a crash in most systems if the detaching doesn't work
+ str[0] = 'S';
+
+ QCOMPARE(buf[0], char('s'));
+ }
+}
+
+void tst_QByteArray::reserve()
+{
+ int capacity = 100;
+ QByteArray qba;
+ qba.reserve(capacity);
+ QVERIFY(qba.capacity() == capacity);
+ char *data = qba.data();
+
+ for (int i = 0; i < capacity; i++) {
+ qba.resize(i);
+ QVERIFY(capacity == qba.capacity());
+ QVERIFY(data == qba.data());
+ }
+}
+
+void tst_QByteArray::literals()
+{
+#if defined(Q_COMPILER_LAMBDA) || defined(Q_CC_GNU)
+ QByteArray str(QByteArrayLiteral("abcd"));
+
+ QVERIFY(str.length() == 4);
+ QVERIFY(str == "abcd");
+ QVERIFY(str.data_ptr()->ref == -1);
+ QVERIFY(str.data_ptr()->offset == 0);
+
+ const char *s = str.constData();
+ QByteArray str2 = str;
+ QVERIFY(str2.constData() == s);
+
+ // detach on non const access
+ QVERIFY(str.data() != s);
+
+ QVERIFY(str2.constData() == s);
+ QVERIFY(str2.data() != s);
+
+#else
+ QSKIP("Only tested on c++0x compliant compiler or gcc", SkipAll);
+#endif
+}
+
+const char globalChar = '1';
+
+QTEST_APPLESS_MAIN(tst_QByteArray)
+#include "tst_qbytearray.moc"
diff --git a/tests/auto/qbytearraymatcher/qbytearraymatcher.pro b/tests/auto/corelib/tools/qbytearraymatcher/qbytearraymatcher.pro
index a2458e623f..a2458e623f 100644
--- a/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
+++ b/tests/auto/corelib/tools/qbytearraymatcher/qbytearraymatcher.pro
diff --git a/tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp b/tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp
new file mode 100644
index 0000000000..09a3dfdf7d
--- /dev/null
+++ b/tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp
@@ -0,0 +1,129 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qbytearraymatcher.h>
+
+// COM interface
+#if defined(Q_OS_WIN) && defined(interface)
+# undef interface
+#endif
+
+class tst_QByteArrayMatcher : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void interface();
+ void task251958();
+};
+
+static QByteArrayMatcher matcher1;
+
+void tst_QByteArrayMatcher::interface()
+{
+ const char needle[] = "abc123";
+ QByteArray haystack(500, 'a');
+ haystack.insert(6, "123");
+ haystack.insert(31, "abc");
+ haystack.insert(42, "abc123");
+ haystack.insert(84, "abc123");
+
+ matcher1 = QByteArrayMatcher(QByteArray(needle));
+ QByteArrayMatcher matcher2;
+ matcher2.setPattern(QByteArray(needle));
+
+ QByteArrayMatcher matcher3 = QByteArrayMatcher(QByteArray(needle));
+ QByteArrayMatcher matcher4(needle, sizeof(needle) - 1);
+ QByteArrayMatcher matcher5(matcher2);
+ QByteArrayMatcher matcher6;
+ matcher6 = matcher3;
+
+ QCOMPARE(matcher1.indexIn(haystack), 42);
+ QCOMPARE(matcher2.indexIn(haystack), 42);
+ QCOMPARE(matcher3.indexIn(haystack), 42);
+ QCOMPARE(matcher4.indexIn(haystack), 42);
+ QCOMPARE(matcher5.indexIn(haystack), 42);
+ QCOMPARE(matcher6.indexIn(haystack), 42);
+
+ QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length()), 42);
+
+ QCOMPARE(matcher1.indexIn(haystack, 43), 84);
+ QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length(), 43), 84);
+ QCOMPARE(matcher1.indexIn(haystack, 85), -1);
+ QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length(), 85), -1);
+
+ QByteArrayMatcher matcher7(QByteArray("123"));
+ QCOMPARE(matcher7.indexIn(haystack), 6);
+
+ matcher7 = QByteArrayMatcher(QByteArray("abc"));
+ QCOMPARE(matcher7.indexIn(haystack), 31);
+
+ matcher7.setPattern(matcher4.pattern());
+ QCOMPARE(matcher7.indexIn(haystack), 42);
+}
+
+
+static QByteArrayMatcher matcher;
+
+void tst_QByteArrayMatcher::task251958()
+{
+ const char p_data[] = { 0x0, 0x0, 0x1 };
+ QByteArray pattern(p_data, sizeof(p_data));
+
+ QByteArray haystack(8, '\0');
+ haystack[7] = 0x1;
+
+ matcher = QByteArrayMatcher(pattern);
+ QCOMPARE(matcher.indexIn(haystack, 0), 5);
+ QCOMPARE(matcher.indexIn(haystack, 1), 5);
+ QCOMPARE(matcher.indexIn(haystack, 2), 5);
+
+ matcher.setPattern(pattern);
+ QCOMPARE(matcher.indexIn(haystack, 0), 5);
+ QCOMPARE(matcher.indexIn(haystack, 1), 5);
+ QCOMPARE(matcher.indexIn(haystack, 2), 5);
+}
+
+QTEST_APPLESS_MAIN(tst_QByteArrayMatcher)
+#include "tst_qbytearraymatcher.moc"
diff --git a/tests/auto/qcache/.gitignore b/tests/auto/corelib/tools/qcache/.gitignore
index 287559b578..287559b578 100644
--- a/tests/auto/qcache/.gitignore
+++ b/tests/auto/corelib/tools/qcache/.gitignore
diff --git a/tests/auto/qcache/qcache.pro b/tests/auto/corelib/tools/qcache/qcache.pro
index 0da4e1414f..0da4e1414f 100644
--- a/tests/auto/qcache/qcache.pro
+++ b/tests/auto/corelib/tools/qcache/qcache.pro
diff --git a/tests/auto/qcache/tst_qcache.cpp b/tests/auto/corelib/tools/qcache/tst_qcache.cpp
index 2c1f256313..2c1f256313 100644
--- a/tests/auto/qcache/tst_qcache.cpp
+++ b/tests/auto/corelib/tools/qcache/tst_qcache.cpp
diff --git a/tests/auto/qchar/.gitignore b/tests/auto/corelib/tools/qchar/.gitignore
index 341b3e6c3f..341b3e6c3f 100644
--- a/tests/auto/qchar/.gitignore
+++ b/tests/auto/corelib/tools/qchar/.gitignore
diff --git a/tests/auto/qchar/NormalizationTest.txt b/tests/auto/corelib/tools/qchar/NormalizationTest.txt
index f36f5a68ce..f36f5a68ce 100644
--- a/tests/auto/qchar/NormalizationTest.txt
+++ b/tests/auto/corelib/tools/qchar/NormalizationTest.txt
diff --git a/tests/auto/qchar/qchar.pro b/tests/auto/corelib/tools/qchar/qchar.pro
index 154c37e1af..154c37e1af 100644
--- a/tests/auto/qchar/qchar.pro
+++ b/tests/auto/corelib/tools/qchar/qchar.pro
diff --git a/tests/auto/qchar/tst_qchar.cpp b/tests/auto/corelib/tools/qchar/tst_qchar.cpp
index 02807f38b3..02807f38b3 100644
--- a/tests/auto/qchar/tst_qchar.cpp
+++ b/tests/auto/corelib/tools/qchar/tst_qchar.cpp
diff --git a/tests/auto/qcontiguouscache/qcontiguouscache.pro b/tests/auto/corelib/tools/qcontiguouscache/qcontiguouscache.pro
index 5951f87f89..5951f87f89 100644
--- a/tests/auto/qcontiguouscache/qcontiguouscache.pro
+++ b/tests/auto/corelib/tools/qcontiguouscache/qcontiguouscache.pro
diff --git a/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp b/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp
index 0a0c999b31..0a0c999b31 100644
--- a/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp
+++ b/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp
diff --git a/tests/auto/qcryptographichash/.gitignore b/tests/auto/corelib/tools/qcryptographichash/.gitignore
index cdc1de2626..cdc1de2626 100644
--- a/tests/auto/qcryptographichash/.gitignore
+++ b/tests/auto/corelib/tools/qcryptographichash/.gitignore
diff --git a/tests/auto/qcryptographichash/qcryptographichash.pro b/tests/auto/corelib/tools/qcryptographichash/qcryptographichash.pro
index 65e31dcb57..65e31dcb57 100644
--- a/tests/auto/qcryptographichash/qcryptographichash.pro
+++ b/tests/auto/corelib/tools/qcryptographichash/qcryptographichash.pro
diff --git a/tests/auto/qcryptographichash/tst_qcryptographichash.cpp b/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
index b8592e1850..b8592e1850 100644
--- a/tests/auto/qcryptographichash/tst_qcryptographichash.cpp
+++ b/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
diff --git a/tests/auto/qdate/.gitignore b/tests/auto/corelib/tools/qdate/.gitignore
index 70945d4a86..70945d4a86 100644
--- a/tests/auto/qdate/.gitignore
+++ b/tests/auto/corelib/tools/qdate/.gitignore
diff --git a/tests/auto/qdate/qdate.pro b/tests/auto/corelib/tools/qdate/qdate.pro
index 1c041004d3..1c041004d3 100644
--- a/tests/auto/qdate/qdate.pro
+++ b/tests/auto/corelib/tools/qdate/qdate.pro
diff --git a/tests/auto/qdate/tst_qdate.cpp b/tests/auto/corelib/tools/qdate/tst_qdate.cpp
index b1e0f33ba6..b1e0f33ba6 100644
--- a/tests/auto/qdate/tst_qdate.cpp
+++ b/tests/auto/corelib/tools/qdate/tst_qdate.cpp
diff --git a/tests/auto/qdatetime/.gitignore b/tests/auto/corelib/tools/qdatetime/.gitignore
index 7784f3a3eb..7784f3a3eb 100644
--- a/tests/auto/qdatetime/.gitignore
+++ b/tests/auto/corelib/tools/qdatetime/.gitignore
diff --git a/tests/auto/qdatetime/qdatetime.pro b/tests/auto/corelib/tools/qdatetime/qdatetime.pro
index cd335826ec..cd335826ec 100644
--- a/tests/auto/qdatetime/qdatetime.pro
+++ b/tests/auto/corelib/tools/qdatetime/qdatetime.pro
diff --git a/tests/auto/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
index 95995e857b..95995e857b 100644
--- a/tests/auto/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
diff --git a/tests/auto/qeasingcurve/qeasingcurve.pro b/tests/auto/corelib/tools/qeasingcurve/qeasingcurve.pro
index 2a3a075d8a..2a3a075d8a 100644
--- a/tests/auto/qeasingcurve/qeasingcurve.pro
+++ b/tests/auto/corelib/tools/qeasingcurve/qeasingcurve.pro
diff --git a/tests/auto/qeasingcurve/tst_qeasingcurve.cpp b/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp
index 851a9d463c..851a9d463c 100644
--- a/tests/auto/qeasingcurve/tst_qeasingcurve.cpp
+++ b/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp
diff --git a/tests/auto/qelapsedtimer/qelapsedtimer.pro b/tests/auto/corelib/tools/qelapsedtimer/qelapsedtimer.pro
index 876887678f..876887678f 100644
--- a/tests/auto/qelapsedtimer/qelapsedtimer.pro
+++ b/tests/auto/corelib/tools/qelapsedtimer/qelapsedtimer.pro
diff --git a/tests/auto/qelapsedtimer/tst_qelapsedtimer.cpp b/tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp
index 40b2d30c02..40b2d30c02 100644
--- a/tests/auto/qelapsedtimer/tst_qelapsedtimer.cpp
+++ b/tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp
diff --git a/tests/auto/qexplicitlyshareddatapointer/.gitignore b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/.gitignore
index 47e152c120..47e152c120 100644
--- a/tests/auto/qexplicitlyshareddatapointer/.gitignore
+++ b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/.gitignore
diff --git a/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
index cf574ffc40..cf574ffc40 100644
--- a/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
+++ b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
diff --git a/tests/auto/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp
index a6c2f50e6d..a6c2f50e6d 100644
--- a/tests/auto/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp
+++ b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp
diff --git a/tests/auto/corelib/tools/qfreelist/qfreelist.pro b/tests/auto/corelib/tools/qfreelist/qfreelist.pro
new file mode 100644
index 0000000000..0afa12b8a8
--- /dev/null
+++ b/tests/auto/corelib/tools/qfreelist/qfreelist.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qfreelist.cpp
+QT += core-private
+QT -= gui
+!contains(QT_CONFIG,private_tests): SOURCES += $$QT.core.sources/tools/qfreelist.cpp
diff --git a/tests/auto/qfreelist/tst_qfreelist.cpp b/tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp
index 139d76e64a..139d76e64a 100644
--- a/tests/auto/qfreelist/tst_qfreelist.cpp
+++ b/tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp
diff --git a/tests/auto/qhash/.gitignore b/tests/auto/corelib/tools/qhash/.gitignore
index 4c54a69b3a..4c54a69b3a 100644
--- a/tests/auto/qhash/.gitignore
+++ b/tests/auto/corelib/tools/qhash/.gitignore
diff --git a/tests/auto/qhash/qhash.pro b/tests/auto/corelib/tools/qhash/qhash.pro
index 16c9eabecc..16c9eabecc 100644
--- a/tests/auto/qhash/qhash.pro
+++ b/tests/auto/corelib/tools/qhash/qhash.pro
diff --git a/tests/auto/qhash/tst_qhash.cpp b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
index 18654cf763..18654cf763 100644
--- a/tests/auto/qhash/tst_qhash.cpp
+++ b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
diff --git a/tests/auto/qline/.gitignore b/tests/auto/corelib/tools/qline/.gitignore
index 5f1f39d4bf..5f1f39d4bf 100644
--- a/tests/auto/qline/.gitignore
+++ b/tests/auto/corelib/tools/qline/.gitignore
diff --git a/tests/auto/qline/qline.pro b/tests/auto/corelib/tools/qline/qline.pro
index 6e9af24476..6e9af24476 100644
--- a/tests/auto/qline/qline.pro
+++ b/tests/auto/corelib/tools/qline/qline.pro
diff --git a/tests/auto/qline/tst_qline.cpp b/tests/auto/corelib/tools/qline/tst_qline.cpp
index de47506ae3..de47506ae3 100644
--- a/tests/auto/qline/tst_qline.cpp
+++ b/tests/auto/corelib/tools/qline/tst_qline.cpp
diff --git a/tests/auto/qlist/.gitignore b/tests/auto/corelib/tools/qlist/.gitignore
index df208b6e78..df208b6e78 100644
--- a/tests/auto/qlist/.gitignore
+++ b/tests/auto/corelib/tools/qlist/.gitignore
diff --git a/tests/auto/qlist/qlist.pro b/tests/auto/corelib/tools/qlist/qlist.pro
index be599b7b85..be599b7b85 100644
--- a/tests/auto/qlist/qlist.pro
+++ b/tests/auto/corelib/tools/qlist/qlist.pro
diff --git a/tests/auto/qlist/tst_qlist.cpp b/tests/auto/corelib/tools/qlist/tst_qlist.cpp
index 3901b6ffe8..3901b6ffe8 100644
--- a/tests/auto/qlist/tst_qlist.cpp
+++ b/tests/auto/corelib/tools/qlist/tst_qlist.cpp
diff --git a/tests/auto/qlocale/.gitignore b/tests/auto/corelib/tools/qlocale/.gitignore
index 21ab80a2af..21ab80a2af 100644
--- a/tests/auto/qlocale/.gitignore
+++ b/tests/auto/corelib/tools/qlocale/.gitignore
diff --git a/tests/auto/qlocale/qlocale.pro b/tests/auto/corelib/tools/qlocale/qlocale.pro
index 4c4a31e0de..4c4a31e0de 100644
--- a/tests/auto/qlocale/qlocale.pro
+++ b/tests/auto/corelib/tools/qlocale/qlocale.pro
diff --git a/tests/auto/qlocale/syslocaleapp/syslocaleapp.cpp b/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp
index 030fc4a728..030fc4a728 100644
--- a/tests/auto/qlocale/syslocaleapp/syslocaleapp.cpp
+++ b/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp
diff --git a/tests/auto/qlocale/syslocaleapp/syslocaleapp.pro b/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.pro
index d3188c020d..d3188c020d 100644
--- a/tests/auto/qlocale/syslocaleapp/syslocaleapp.pro
+++ b/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.pro
diff --git a/tests/auto/qlocale/test/test.pro b/tests/auto/corelib/tools/qlocale/test/test.pro
index 8117708c46..8117708c46 100644
--- a/tests/auto/qlocale/test/test.pro
+++ b/tests/auto/corelib/tools/qlocale/test/test.pro
diff --git a/tests/auto/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
index b9e5fd93e1..b9e5fd93e1 100644
--- a/tests/auto/qlocale/tst_qlocale.cpp
+++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
diff --git a/tests/auto/qmap/.gitignore b/tests/auto/corelib/tools/qmap/.gitignore
index e94a75d242..e94a75d242 100644
--- a/tests/auto/qmap/.gitignore
+++ b/tests/auto/corelib/tools/qmap/.gitignore
diff --git a/tests/auto/qmap/qmap.pro b/tests/auto/corelib/tools/qmap/qmap.pro
index eaed926481..eaed926481 100644
--- a/tests/auto/qmap/qmap.pro
+++ b/tests/auto/corelib/tools/qmap/qmap.pro
diff --git a/tests/auto/qmap/tst_qmap.cpp b/tests/auto/corelib/tools/qmap/tst_qmap.cpp
index 141e693b16..141e693b16 100644
--- a/tests/auto/qmap/tst_qmap.cpp
+++ b/tests/auto/corelib/tools/qmap/tst_qmap.cpp
diff --git a/tests/auto/qmargins/qmargins.pro b/tests/auto/corelib/tools/qmargins/qmargins.pro
index 0404da0424..0404da0424 100644
--- a/tests/auto/qmargins/qmargins.pro
+++ b/tests/auto/corelib/tools/qmargins/qmargins.pro
diff --git a/tests/auto/qmargins/tst_qmargins.cpp b/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp
index c7632d125a..c7632d125a 100644
--- a/tests/auto/qmargins/tst_qmargins.cpp
+++ b/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp
diff --git a/tests/auto/qpoint/.gitignore b/tests/auto/corelib/tools/qpoint/.gitignore
index c8711ed354..c8711ed354 100644
--- a/tests/auto/qpoint/.gitignore
+++ b/tests/auto/corelib/tools/qpoint/.gitignore
diff --git a/tests/auto/qpoint/qpoint.pro b/tests/auto/corelib/tools/qpoint/qpoint.pro
index fd240461e2..fd240461e2 100644
--- a/tests/auto/qpoint/qpoint.pro
+++ b/tests/auto/corelib/tools/qpoint/qpoint.pro
diff --git a/tests/auto/qpoint/tst_qpoint.cpp b/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
index c4b5339a3b..c4b5339a3b 100644
--- a/tests/auto/qpoint/tst_qpoint.cpp
+++ b/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
diff --git a/tests/auto/qqueue/.gitignore b/tests/auto/corelib/tools/qqueue/.gitignore
index 706f21fa7a..706f21fa7a 100644
--- a/tests/auto/qqueue/.gitignore
+++ b/tests/auto/corelib/tools/qqueue/.gitignore
diff --git a/tests/auto/qqueue/qqueue.pro b/tests/auto/corelib/tools/qqueue/qqueue.pro
index ce0d8c30ca..ce0d8c30ca 100644
--- a/tests/auto/qqueue/qqueue.pro
+++ b/tests/auto/corelib/tools/qqueue/qqueue.pro
diff --git a/tests/auto/qqueue/tst_qqueue.cpp b/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp
index 483cf93918..483cf93918 100644
--- a/tests/auto/qqueue/tst_qqueue.cpp
+++ b/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp
diff --git a/tests/auto/qrect/.gitignore b/tests/auto/corelib/tools/qrect/.gitignore
index 95866b6fbd..95866b6fbd 100644
--- a/tests/auto/qrect/.gitignore
+++ b/tests/auto/corelib/tools/qrect/.gitignore
diff --git a/tests/auto/qrect/qrect.pro b/tests/auto/corelib/tools/qrect/qrect.pro
index f1ad046e34..f1ad046e34 100644
--- a/tests/auto/qrect/qrect.pro
+++ b/tests/auto/corelib/tools/qrect/qrect.pro
diff --git a/tests/auto/qrect/tst_qrect.cpp b/tests/auto/corelib/tools/qrect/tst_qrect.cpp
index c84e175857..c84e175857 100644
--- a/tests/auto/qrect/tst_qrect.cpp
+++ b/tests/auto/corelib/tools/qrect/tst_qrect.cpp
diff --git a/tests/auto/qregexp/.gitignore b/tests/auto/corelib/tools/qregexp/.gitignore
index e6e629ee2c..e6e629ee2c 100644
--- a/tests/auto/qregexp/.gitignore
+++ b/tests/auto/corelib/tools/qregexp/.gitignore
diff --git a/tests/auto/qregexp/qregexp.pro b/tests/auto/corelib/tools/qregexp/qregexp.pro
index e0fef12479..e0fef12479 100644
--- a/tests/auto/qregexp/qregexp.pro
+++ b/tests/auto/corelib/tools/qregexp/qregexp.pro
diff --git a/tests/auto/qregexp/tst_qregexp.cpp b/tests/auto/corelib/tools/qregexp/tst_qregexp.cpp
index 65edb56410..65edb56410 100644
--- a/tests/auto/qregexp/tst_qregexp.cpp
+++ b/tests/auto/corelib/tools/qregexp/tst_qregexp.cpp
diff --git a/tests/auto/qringbuffer/qringbuffer.pro b/tests/auto/corelib/tools/qringbuffer/qringbuffer.pro
index dc572d0633..dc572d0633 100644
--- a/tests/auto/qringbuffer/qringbuffer.pro
+++ b/tests/auto/corelib/tools/qringbuffer/qringbuffer.pro
diff --git a/tests/auto/qringbuffer/tst_qringbuffer.cpp b/tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp
index 0ca360fda7..0ca360fda7 100644
--- a/tests/auto/qringbuffer/tst_qringbuffer.cpp
+++ b/tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp
diff --git a/tests/auto/qscopedpointer/.gitignore b/tests/auto/corelib/tools/qscopedpointer/.gitignore
index 9f2324cb11..9f2324cb11 100644
--- a/tests/auto/qscopedpointer/.gitignore
+++ b/tests/auto/corelib/tools/qscopedpointer/.gitignore
diff --git a/tests/auto/qscopedpointer/qscopedpointer.pro b/tests/auto/corelib/tools/qscopedpointer/qscopedpointer.pro
index 4a3d5b8de8..4a3d5b8de8 100644
--- a/tests/auto/qscopedpointer/qscopedpointer.pro
+++ b/tests/auto/corelib/tools/qscopedpointer/qscopedpointer.pro
diff --git a/tests/auto/qscopedpointer/tst_qscopedpointer.cpp b/tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp
index 06c0ecbafd..06c0ecbafd 100644
--- a/tests/auto/qscopedpointer/tst_qscopedpointer.cpp
+++ b/tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp
diff --git a/tests/auto/qscopedvaluerollback/qscopedvaluerollback.pro b/tests/auto/corelib/tools/qscopedvaluerollback/qscopedvaluerollback.pro
index f06e21ba1f..f06e21ba1f 100644
--- a/tests/auto/qscopedvaluerollback/qscopedvaluerollback.pro
+++ b/tests/auto/corelib/tools/qscopedvaluerollback/qscopedvaluerollback.pro
diff --git a/tests/auto/qscopedvaluerollback/tst_qscopedvaluerollback.cpp b/tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp
index 457733b7a8..457733b7a8 100644
--- a/tests/auto/qscopedvaluerollback/tst_qscopedvaluerollback.cpp
+++ b/tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp
diff --git a/tests/auto/qset/.gitignore b/tests/auto/corelib/tools/qset/.gitignore
index 43440e53f3..43440e53f3 100644
--- a/tests/auto/qset/.gitignore
+++ b/tests/auto/corelib/tools/qset/.gitignore
diff --git a/tests/auto/qset/qset.pro b/tests/auto/corelib/tools/qset/qset.pro
index ebdf0d68f0..ebdf0d68f0 100644
--- a/tests/auto/qset/qset.pro
+++ b/tests/auto/corelib/tools/qset/qset.pro
diff --git a/tests/auto/qset/tst_qset.cpp b/tests/auto/corelib/tools/qset/tst_qset.cpp
index 5611709075..5611709075 100644
--- a/tests/auto/qset/tst_qset.cpp
+++ b/tests/auto/corelib/tools/qset/tst_qset.cpp
diff --git a/tests/auto/qsharedpointer/.gitignore b/tests/auto/corelib/tools/qsharedpointer/.gitignore
index 3cd9f1a085..3cd9f1a085 100644
--- a/tests/auto/qsharedpointer/.gitignore
+++ b/tests/auto/corelib/tools/qsharedpointer/.gitignore
diff --git a/tests/auto/qsharedpointer/externaltests.cpp b/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp
index 1bfa1c10a0..1bfa1c10a0 100644
--- a/tests/auto/qsharedpointer/externaltests.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp
diff --git a/tests/auto/qsharedpointer/externaltests.h b/tests/auto/corelib/tools/qsharedpointer/externaltests.h
index e07ba31928..e07ba31928 100644
--- a/tests/auto/qsharedpointer/externaltests.h
+++ b/tests/auto/corelib/tools/qsharedpointer/externaltests.h
diff --git a/tests/auto/qsharedpointer/externaltests.pri b/tests/auto/corelib/tools/qsharedpointer/externaltests.pri
index c8a36765ea..c8a36765ea 100644
--- a/tests/auto/qsharedpointer/externaltests.pri
+++ b/tests/auto/corelib/tools/qsharedpointer/externaltests.pri
diff --git a/tests/auto/qsharedpointer/forwarddeclaration.cpp b/tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp
index f6ee9ad02a..f6ee9ad02a 100644
--- a/tests/auto/qsharedpointer/forwarddeclaration.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp
diff --git a/tests/auto/qsharedpointer/forwarddeclared.cpp b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp
index 5ff8893b81..5ff8893b81 100644
--- a/tests/auto/qsharedpointer/forwarddeclared.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp
diff --git a/tests/auto/qsharedpointer/forwarddeclared.h b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h
index 6afc293dde..6afc293dde 100644
--- a/tests/auto/qsharedpointer/forwarddeclared.h
+++ b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h
diff --git a/tests/auto/corelib/tools/qsharedpointer/qsharedpointer.pro b/tests/auto/corelib/tools/qsharedpointer/qsharedpointer.pro
new file mode 100644
index 0000000000..fc791f485c
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/qsharedpointer.pro
@@ -0,0 +1,17 @@
+load(qttest_p4)
+
+SOURCES += tst_qsharedpointer.cpp \
+ forwarddeclaration.cpp \
+ forwarddeclared.cpp \
+ wrapper.cpp
+
+HEADERS += forwarddeclared.h \
+ wrapper.h
+
+QT = core
+!symbian:DEFINES += SRCDIR=\\\"$$PWD/\\\"
+
+include(externaltests.pri)
+CONFIG += parallel_test
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
index 27d2d4d24a..27d2d4d24a 100644
--- a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
diff --git a/tests/auto/qsharedpointer/wrapper.cpp b/tests/auto/corelib/tools/qsharedpointer/wrapper.cpp
index 018fc1c97b..018fc1c97b 100644
--- a/tests/auto/qsharedpointer/wrapper.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/wrapper.cpp
diff --git a/tests/auto/qsharedpointer/wrapper.h b/tests/auto/corelib/tools/qsharedpointer/wrapper.h
index b25510f76d..b25510f76d 100644
--- a/tests/auto/qsharedpointer/wrapper.h
+++ b/tests/auto/corelib/tools/qsharedpointer/wrapper.h
diff --git a/tests/auto/qsize/.gitignore b/tests/auto/corelib/tools/qsize/.gitignore
index 748ce461c8..748ce461c8 100644
--- a/tests/auto/qsize/.gitignore
+++ b/tests/auto/corelib/tools/qsize/.gitignore
diff --git a/tests/auto/qsize/qsize.pro b/tests/auto/corelib/tools/qsize/qsize.pro
index a1814ac8c5..a1814ac8c5 100644
--- a/tests/auto/qsize/qsize.pro
+++ b/tests/auto/corelib/tools/qsize/qsize.pro
diff --git a/tests/auto/qsize/tst_qsize.cpp b/tests/auto/corelib/tools/qsize/tst_qsize.cpp
index 36654df618..36654df618 100644
--- a/tests/auto/qsize/tst_qsize.cpp
+++ b/tests/auto/corelib/tools/qsize/tst_qsize.cpp
diff --git a/tests/auto/qsizef/.gitignore b/tests/auto/corelib/tools/qsizef/.gitignore
index f4ded487d7..f4ded487d7 100644
--- a/tests/auto/qsizef/.gitignore
+++ b/tests/auto/corelib/tools/qsizef/.gitignore
diff --git a/tests/auto/qsizef/qsizef.pro b/tests/auto/corelib/tools/qsizef/qsizef.pro
index 5aa07d72a1..5aa07d72a1 100644
--- a/tests/auto/qsizef/qsizef.pro
+++ b/tests/auto/corelib/tools/qsizef/qsizef.pro
diff --git a/tests/auto/qsizef/tst_qsizef.cpp b/tests/auto/corelib/tools/qsizef/tst_qsizef.cpp
index 2e03a65197..2e03a65197 100644
--- a/tests/auto/qsizef/tst_qsizef.cpp
+++ b/tests/auto/corelib/tools/qsizef/tst_qsizef.cpp
diff --git a/tests/auto/qstl/.gitignore b/tests/auto/corelib/tools/qstl/.gitignore
index 6e6a885f4f..6e6a885f4f 100644
--- a/tests/auto/qstl/.gitignore
+++ b/tests/auto/corelib/tools/qstl/.gitignore
diff --git a/tests/auto/qstl/qstl.pro b/tests/auto/corelib/tools/qstl/qstl.pro
index a0c9db1dfc..a0c9db1dfc 100644
--- a/tests/auto/qstl/qstl.pro
+++ b/tests/auto/corelib/tools/qstl/qstl.pro
diff --git a/tests/auto/qstl/tst_qstl.cpp b/tests/auto/corelib/tools/qstl/tst_qstl.cpp
index 43c318737f..43c318737f 100644
--- a/tests/auto/qstl/tst_qstl.cpp
+++ b/tests/auto/corelib/tools/qstl/tst_qstl.cpp
diff --git a/tests/auto/qstring/.gitignore b/tests/auto/corelib/tools/qstring/.gitignore
index c2ea8d0336..c2ea8d0336 100644
--- a/tests/auto/qstring/.gitignore
+++ b/tests/auto/corelib/tools/qstring/.gitignore
diff --git a/tests/auto/qstring/double_data.h b/tests/auto/corelib/tools/qstring/double_data.h
index e7e654c442..e7e654c442 100644
--- a/tests/auto/qstring/double_data.h
+++ b/tests/auto/corelib/tools/qstring/double_data.h
diff --git a/tests/auto/qstring/qstring.pro b/tests/auto/corelib/tools/qstring/qstring.pro
index 1c123adcca..1c123adcca 100644
--- a/tests/auto/qstring/qstring.pro
+++ b/tests/auto/corelib/tools/qstring/qstring.pro
diff --git a/tests/auto/corelib/tools/qstring/tst_qstring.cpp b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
new file mode 100644
index 0000000000..5ef8d70ef6
--- /dev/null
+++ b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
@@ -0,0 +1,5143 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qregexp.h>
+#include <qtextcodec.h>
+#include <qtextstream.h>
+#include <qstringlist.h>
+#include <qstringmatcher.h>
+#include <qbytearraymatcher.h>
+#include <qvariant.h>
+
+#include <qlocale.h>
+#include <locale.h>
+
+Q_DECLARE_METATYPE(qlonglong)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#define CREATE_REF(string) \
+ const QString padded = QString::fromLatin1(" %1 ").arg(string); \
+ QStringRef ref = padded.midRef(1, padded.size() - 2);
+
+class tst_QString : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QString();
+ virtual ~tst_QString();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void fromStdString();
+ void toStdString();
+ void check_QTextIOStream();
+ void check_QTextStream();
+ void check_QDataStream();
+ void fromRawData();
+ void setRawData();
+ void endsWith();
+ void startsWith();
+ void setNum();
+ void toDouble_data();
+ void toDouble();
+ void toFloat();
+ void toLong_data();
+ void toLong();
+ void toULong_data();
+ void toULong();
+ void toLongLong();
+ void toULongLong();
+ void toUInt();
+ void toInt();
+ void toShort();
+ void toUShort();
+ void replace_qchar_qchar_data();
+ void replace_qchar_qchar();
+ void replace_qchar_qstring_data();
+ void replace_qchar_qstring();
+ void replace_uint_uint_data();
+ void replace_uint_uint();
+ void replace_uint_uint_extra();
+ void replace_string_data();
+ void replace_string();
+ void replace_regexp_data();
+ void replace_regexp();
+ void remove_uint_uint_data();
+ void remove_uint_uint();
+ void remove_string_data();
+ void remove_string();
+ void remove_regexp_data();
+ void remove_regexp();
+ void swap();
+ void prepend();
+ void prepend_bytearray_data();
+ void prepend_bytearray();
+ void append();
+ void append_bytearray_data();
+ void append_bytearray();
+ void operator_pluseq_bytearray_data();
+ void operator_pluseq_bytearray();
+ void operator_eqeq_nullstring();
+ void operator_smaller();
+ void insert();
+ void simplified_data();
+ void simplified();
+ void trimmed();
+ void toLower();
+ void toUpper();
+ void rightJustified();
+ void leftJustified();
+ void mid();
+ void right();
+ void left();
+ void midRef();
+ void rightRef();
+ void leftRef();
+ void stringRef();
+ void contains();
+ void count();
+ void lastIndexOf_data();
+ void lastIndexOf();
+ void indexOf_data();
+ void indexOf();
+ void indexOf2_data();
+ void indexOf2();
+ void indexOf3_data();
+// void indexOf3();
+ void sprintf();
+ void fill();
+ void truncate();
+ void constructor();
+ void constructorQByteArray_data();
+ void constructorQByteArray();
+ void STL();
+ void isEmpty();
+ void isNull();
+ void acc_01();
+ void length_data();
+ void length();
+ void utf8_data();
+ void utf8();
+ void fromUtf8_data();
+ void fromUtf8();
+ void nullFromUtf8();
+ void fromLocal8Bit_data();
+ void fromLocal8Bit();
+ void local8Bit_data();
+ void local8Bit();
+ void fromLatin1Roundtrip_data();
+ void fromLatin1Roundtrip();
+ void toLatin1Roundtrip_data();
+ void toLatin1Roundtrip();
+ void stringRef_toLatin1Roundtrip_data();
+ void stringRef_toLatin1Roundtrip();
+ void stringRef_utf8_data();
+ void stringRef_utf8();
+ void stringRef_local8Bit_data();
+ void stringRef_local8Bit();
+ void fromLatin1();
+ void fromAscii();
+ void arg();
+ void number();
+ void arg_fillChar_data();
+ void arg_fillChar();
+ void capacity_data();
+ void capacity();
+ void section_data();
+ void section();
+ void double_conversion_data();
+ void double_conversion();
+ void integer_conversion_data();
+ void integer_conversion();
+ void tortureSprintfDouble();
+ void toNum();
+ void localeAwareCompare_data();
+ void localeAwareCompare();
+ void split_data();
+ void split();
+ void split_regexp();
+ void fromUtf16_data();
+ void fromUtf16();
+ void latin1String();
+ void nanAndInf();
+ void compare_data();
+ void compare();
+ void resizeAfterFromRawData();
+ void resizeAfterReserve();
+ void resizeWithNegative() const;
+ void truncateWithNegative() const;
+ void QCharRefMutableUnicode() const;
+ void QCharRefDetaching() const;
+ void sprintfZU() const;
+ void repeatedSignature() const;
+ void repeated() const;
+ void repeated_data() const;
+ void task262677remove();
+ void QTBUG10404_compareRef();
+ void QTBUG9281_arg_locale();
+
+ void toUpperLower_icu();
+ void literals();
+};
+
+typedef QList<int> IntList;
+
+Q_DECLARE_METATYPE(QList<QVariant>)
+Q_DECLARE_METATYPE(IntList)
+
+// This next bit is needed for the NAN and INF in string -> number conversion tests
+#include <float.h>
+#include <limits.h>
+#include <math.h>
+#if defined (Q_OS_WIN)
+# include <windows.h>
+// mingw defines NAN and INFINITY to 0/0 and x/0
+# if defined(Q_CC_GNU)
+# undef NAN
+# undef INFINITY
+# else
+# define isnan(d) _isnan(d)
+# endif
+#endif
+#if defined (Q_OS_MAC) && !defined isnan
+#define isnan(d) __isnand(d)
+#endif
+#if defined (Q_OS_SOLARIS)
+# include <ieeefp.h>
+#endif
+#if defined (Q_OS_OSF) && (defined(__DECC) || defined(__DECCXX))
+# define INFINITY DBL_INFINITY
+# define NAN DBL_QNAN
+#endif
+#if defined(Q_OS_IRIX) && defined(Q_CC_GNU)
+# include <ieeefp.h>
+# define isnan(d) isnand(d)
+#endif
+
+enum {
+ LittleEndian,
+ BigEndian
+#ifdef Q_BYTE_ORDER
+# if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ , ByteOrder = BigEndian
+# elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN
+ , ByteOrder = LittleEndian
+# else
+# error "undefined byte order"
+# endif
+};
+#else
+};
+static const unsigned int one = 1;
+static const bool ByteOrder = ((*((unsigned char *) &one) == 0) ? BigEndian : LittleEndian);
+#endif
+#if !defined(INFINITY)
+static const unsigned char be_inf_bytes[] = { 0x7f, 0xf0, 0, 0, 0, 0, 0,0 };
+static const unsigned char le_inf_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f };
+static inline double inf()
+{
+ if (ByteOrder == BigEndian)
+ return *reinterpret_cast<const double *>(be_inf_bytes);
+ return *reinterpret_cast<const double *>(le_inf_bytes);
+}
+# define INFINITY (::inf())
+#endif
+#if !defined(NAN)
+static const unsigned char be_nan_bytes[] = { 0x7f, 0xf8, 0, 0, 0, 0, 0,0 };
+static const unsigned char le_nan_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf8, 0x7f };
+static inline double nan()
+{
+ if (ByteOrder == BigEndian)
+ return *reinterpret_cast<const double *>(be_nan_bytes);
+ return *reinterpret_cast<const double *>(le_nan_bytes);
+}
+# define NAN (::nan())
+#endif
+
+tst_QString::tst_QString()
+{
+ QTextCodec::setCodecForLocale(QTextCodec::codecForName("ISO 8859-1"));
+}
+
+tst_QString::~tst_QString()
+{
+}
+
+void tst_QString::init()
+{
+}
+
+void tst_QString::cleanup()
+{
+ QLocale::setDefault(QString("C"));
+}
+
+void tst_QString::remove_uint_uint_data()
+{
+ replace_uint_uint_data();
+}
+
+void tst_QString::remove_string_data()
+{
+ replace_string_data();
+}
+
+void tst_QString::remove_regexp_data()
+{
+ replace_regexp_data();
+}
+
+void tst_QString::indexOf3_data()
+{
+ indexOf2_data();
+}
+
+void tst_QString::length_data()
+{
+ QTest::addColumn<QString>("s1" );
+ QTest::addColumn<int>("res" );
+
+ QTest::newRow( "data0" ) << QString("Test") << 4;
+ QTest::newRow( "data1" ) << QString("The quick brown fox jumps over the lazy dog") << 43;
+ QTest::newRow( "data2" ) << QString() << 0;
+ QTest::newRow( "data3" ) << QString("A") << 1;
+ QTest::newRow( "data4" ) << QString("AB") << 2;
+ QTest::newRow( "data5" ) << QString("AB\n") << 3;
+ QTest::newRow( "data6" ) << QString("AB\nC") << 4;
+ QTest::newRow( "data7" ) << QString("\n") << 1;
+ QTest::newRow( "data8" ) << QString("\nA") << 2;
+ QTest::newRow( "data9" ) << QString("\nAB") << 3;
+ QTest::newRow( "data10" ) << QString("\nAB\nCDE") << 7;
+ QTest::newRow( "data11" ) << QString("shdnftrheid fhgnt gjvnfmd chfugkh bnfhg thgjf vnghturkf chfnguh bjgnfhvygh hnbhgutjfv dhdnjds dcjs d") << 100;
+}
+
+void tst_QString::replace_qchar_qchar_data()
+{
+ QTest::addColumn<QString>("src" );
+ QTest::addColumn<QChar>("before" );
+ QTest::addColumn<QChar>("after" );
+ QTest::addColumn<int>("cs" );
+ QTest::addColumn<QString>("expected" );
+
+ QTest::newRow( "1" ) << QString("foo") << QChar('o') << QChar('a')
+ << int(Qt::CaseSensitive) << QString("faa");
+ QTest::newRow( "2" ) << QString("foo") << QChar('o') << QChar('a')
+ << int(Qt::CaseInsensitive) << QString("faa");
+ QTest::newRow( "3" ) << QString("foo") << QChar('O') << QChar('a')
+ << int(Qt::CaseSensitive) << QString("foo");
+ QTest::newRow( "4" ) << QString("foo") << QChar('O') << QChar('a')
+ << int(Qt::CaseInsensitive) << QString("faa");
+ QTest::newRow( "5" ) << QString("ababABAB") << QChar('a') << QChar(' ')
+ << int(Qt::CaseSensitive) << QString(" b bABAB");
+ QTest::newRow( "6" ) << QString("ababABAB") << QChar('a') << QChar(' ')
+ << int(Qt::CaseInsensitive) << QString(" b b B B");
+ QTest::newRow( "7" ) << QString("ababABAB") << QChar() << QChar(' ')
+ << int(Qt::CaseInsensitive) << QString("ababABAB");
+}
+
+void tst_QString::replace_qchar_qchar()
+{
+ QFETCH(QString, src);
+ QFETCH(QChar, before);
+ QFETCH(QChar, after);
+ QFETCH(int, cs);
+ QFETCH(QString, expected);
+
+ QCOMPARE(src.replace(before, after, Qt::CaseSensitivity(cs)), expected);
+}
+
+void tst_QString::replace_qchar_qstring_data()
+{
+ QTest::addColumn<QString>("src" );
+ QTest::addColumn<QChar>("before" );
+ QTest::addColumn<QString>("after" );
+ QTest::addColumn<int>("cs" );
+ QTest::addColumn<QString>("expected" );
+
+ QTest::newRow( "1" ) << QString("foo") << QChar('o') << QString("aA")
+ << int(Qt::CaseSensitive) << QString("faAaA");
+ QTest::newRow( "2" ) << QString("foo") << QChar('o') << QString("aA")
+ << int(Qt::CaseInsensitive) << QString("faAaA");
+ QTest::newRow( "3" ) << QString("foo") << QChar('O') << QString("aA")
+ << int(Qt::CaseSensitive) << QString("foo");
+ QTest::newRow( "4" ) << QString("foo") << QChar('O') << QString("aA")
+ << int(Qt::CaseInsensitive) << QString("faAaA");
+ QTest::newRow( "5" ) << QString("ababABAB") << QChar('a') << QString(" ")
+ << int(Qt::CaseSensitive) << QString(" b bABAB");
+ QTest::newRow( "6" ) << QString("ababABAB") << QChar('a') << QString(" ")
+ << int(Qt::CaseInsensitive) << QString(" b b B B");
+ QTest::newRow( "7" ) << QString("ababABAB") << QChar() << QString(" ")
+ << int(Qt::CaseInsensitive) << QString("ababABAB");
+ QTest::newRow( "8" ) << QString("ababABAB") << QChar() << QString()
+ << int(Qt::CaseInsensitive) << QString("ababABAB");
+}
+
+void tst_QString::replace_qchar_qstring()
+{
+ QFETCH(QString, src);
+ QFETCH(QChar, before);
+ QFETCH(QString, after);
+ QFETCH(int, cs);
+ QFETCH(QString, expected);
+
+ QCOMPARE(src.replace(before, after, Qt::CaseSensitivity(cs)), expected);
+}
+
+void tst_QString::replace_uint_uint_data()
+{
+ QTest::addColumn<QString>("string" );
+ QTest::addColumn<int>("index" );
+ QTest::addColumn<int>("len" );
+ QTest::addColumn<QString>("after" );
+ QTest::addColumn<QString>("result" );
+
+ QTest::newRow( "rem00" ) << QString("-<>ABCABCABCABC>") << 0 << 3 << QString("") << QString("ABCABCABCABC>");
+ QTest::newRow( "rem01" ) << QString("ABCABCABCABC>") << 1 << 4 << QString("") << QString("ACABCABC>");
+ QTest::newRow( "rem04" ) << QString("ACABCABC>") << 8 << 4 << QString("") << QString("ACABCABC");
+ QTest::newRow( "rem05" ) << QString("ACABCABC") << 7 << 1 << QString("") << QString("ACABCAB");
+ QTest::newRow( "rem06" ) << QString("ACABCAB") << 4 << 0 << QString("") << QString("ACABCAB");
+
+ QTest::newRow( "rep00" ) << QString("ACABCAB") << 4 << 0 << QString("X") << QString("ACABXCAB");
+ QTest::newRow( "rep01" ) << QString("ACABXCAB") << 4 << 1 << QString("Y") << QString("ACABYCAB");
+ QTest::newRow( "rep02" ) << QString("ACABYCAB") << 4 << 1 << QString("") << QString("ACABCAB");
+ QTest::newRow( "rep03" ) << QString("ACABCAB") << 0 << 9999 << QString("XX") << QString("XX");
+ QTest::newRow( "rep04" ) << QString("XX") << 0 << 9999 << QString("") << QString("");
+ QTest::newRow( "rep05" ) << QString("ACABCAB") << 0 << 2 << QString("XX") << QString("XXABCAB");
+ QTest::newRow( "rep06" ) << QString("ACABCAB") << 1 << 2 << QString("XX") << QString("AXXBCAB");
+ QTest::newRow( "rep07" ) << QString("ACABCAB") << 2 << 2 << QString("XX") << QString("ACXXCAB");
+ QTest::newRow( "rep08" ) << QString("ACABCAB") << 3 << 2 << QString("XX") << QString("ACAXXAB");
+ QTest::newRow( "rep09" ) << QString("ACABCAB") << 4 << 2 << QString("XX") << QString("ACABXXB");
+ QTest::newRow( "rep10" ) << QString("ACABCAB") << 5 << 2 << QString("XX") << QString("ACABCXX");
+ QTest::newRow( "rep10" ) << QString("ACABCAB") << 6 << 2 << QString("XX") << QString("ACABCAXX");
+ QTest::newRow( "rep12" ) << QString() << 0 << 10 << QString("X") << QString("X");
+ QTest::newRow( "rep13" ) << QString("short") << 0 << 10 << QString("X") << QString("X");
+ QTest::newRow( "rep14" ) << QString() << 0 << 10 << QString("XX") << QString("XX");
+ QTest::newRow( "rep15" ) << QString("short") << 0 << 10 << QString("XX") << QString("XX");
+}
+
+void tst_QString::replace_string_data()
+{
+ QTest::addColumn<QString>("string" );
+ QTest::addColumn<QString>("before" );
+ QTest::addColumn<QString>("after" );
+ QTest::addColumn<QString>("result" );
+ QTest::addColumn<bool>("bcs" );
+
+ QTest::newRow( "rem00" ) << QString("") << QString("") << QString("") << QString("") << true;
+ QTest::newRow( "rem01" ) << QString("A") << QString("") << QString("") << QString("A") << true;
+ QTest::newRow( "rem02" ) << QString("A") << QString("A") << QString("") << QString("") << true;
+ QTest::newRow( "rem03" ) << QString("A") << QString("B") << QString("") << QString("A") << true;
+ QTest::newRow( "rem04" ) << QString("AA") << QString("A") << QString("") << QString("") << true;
+ QTest::newRow( "rem05" ) << QString("AB") << QString("A") << QString("") << QString("B") << true;
+ QTest::newRow( "rem06" ) << QString("AB") << QString("B") << QString("") << QString("A") << true;
+ QTest::newRow( "rem07" ) << QString("AB") << QString("C") << QString("") << QString("AB") << true;
+ QTest::newRow( "rem08" ) << QString("ABA") << QString("A") << QString("") << QString("B") << true;
+ QTest::newRow( "rem09" ) << QString("ABA") << QString("B") << QString("") << QString("AA") << true;
+ QTest::newRow( "rem10" ) << QString("ABA") << QString("C") << QString("") << QString("ABA") << true;
+ QTest::newRow( "rem11" ) << QString("banana") << QString("an") << QString("") << QString("ba") << true;
+ QTest::newRow( "rem12" ) << QString("") << QString("A") << QString("") << QString("") << true;
+ QTest::newRow( "rem13" ) << QString("") << QString("A") << QString() << QString("") << true;
+ QTest::newRow( "rem14" ) << QString() << QString("A") << QString("") << QString() << true;
+ QTest::newRow( "rem15" ) << QString() << QString("A") << QString() << QString() << true;
+ QTest::newRow( "rem16" ) << QString() << QString("") << QString("") << QString("") << true;
+ QTest::newRow( "rem17" ) << QString("") << QString() << QString("") << QString("") << true;
+ QTest::newRow( "rem18" ) << QString("a") << QString("a") << QString("") << QString("") << false;
+ QTest::newRow( "rem19" ) << QString("A") << QString("A") << QString("") << QString("") << false;
+ QTest::newRow( "rem20" ) << QString("a") << QString("A") << QString("") << QString("") << false;
+ QTest::newRow( "rem21" ) << QString("A") << QString("a") << QString("") << QString("") << false;
+ QTest::newRow( "rem22" ) << QString("Alpha beta") << QString("a") << QString("") << QString("lph bet") << false;
+
+ QTest::newRow( "rep00" ) << QString("ABC") << QString("B") << QString("-") << QString("A-C") << true;
+ QTest::newRow( "rep01" ) << QString("$()*+.?[\\]^{|}") << QString("$()*+.?[\\]^{|}") << QString("X") << QString("X") << true;
+ QTest::newRow( "rep02" ) << QString("ABCDEF") << QString("") << QString("X") << QString("XAXBXCXDXEXFX") << true;
+ QTest::newRow( "rep03" ) << QString("") << QString("") << QString("X") << QString("X") << true;
+ QTest::newRow( "rep04" ) << QString("a") << QString("a") << QString("b") << QString("b") << false;
+ QTest::newRow( "rep05" ) << QString("A") << QString("A") << QString("b") << QString("b") << false;
+ QTest::newRow( "rep06" ) << QString("a") << QString("A") << QString("b") << QString("b") << false;
+ QTest::newRow( "rep07" ) << QString("A") << QString("a") << QString("b") << QString("b") << false;
+ QTest::newRow( "rep08" ) << QString("a") << QString("a") << QString("a") << QString("a") << false;
+ QTest::newRow( "rep09" ) << QString("A") << QString("A") << QString("a") << QString("a") << false;
+ QTest::newRow( "rep10" ) << QString("a") << QString("A") << QString("a") << QString("a") << false;
+ QTest::newRow( "rep11" ) << QString("A") << QString("a") << QString("a") << QString("a") << false;
+ QTest::newRow( "rep12" ) << QString("Alpha beta") << QString("a") << QString("o") << QString("olpho beto") << false;
+ QTest::newRow( "rep13" ) << QString() << QString("") << QString("A") << QString("A") << true;
+ QTest::newRow( "rep14" ) << QString("") << QString() << QString("A") << QString("A") << true;
+ QTest::newRow( "rep15" ) << QString("fooxbarxbazxblub") << QString("x") << QString("yz") << QString("fooyzbaryzbazyzblub") << true;
+ QTest::newRow( "rep16" ) << QString("fooxbarxbazxblub") << QString("x") << QString("z") << QString("foozbarzbazzblub") << true;
+ QTest::newRow( "rep17" ) << QString("fooxybarxybazxyblub") << QString("xy") << QString("z") << QString("foozbarzbazzblub") << true;
+}
+
+void tst_QString::replace_regexp_data()
+{
+ QTest::addColumn<QString>("string" );
+ QTest::addColumn<QString>("regexp" );
+ QTest::addColumn<QString>("after" );
+ QTest::addColumn<QString>("result" );
+
+ QTest::newRow( "rem00" ) << QString("alpha") << QString("a+") << QString("") << QString("lph");
+ QTest::newRow( "rem01" ) << QString("banana") << QString("^.a") << QString("") << QString("nana");
+ QTest::newRow( "rem02" ) << QString("") << QString("^.a") << QString("") << QString("");
+ QTest::newRow( "rem03" ) << QString("") << QString("^.a") << QString() << QString("");
+ QTest::newRow( "rem04" ) << QString() << QString("^.a") << QString("") << QString();
+ QTest::newRow( "rem05" ) << QString() << QString("^.a") << QString() << QString();
+
+ QTest::newRow( "rep00" ) << QString("A <i>bon mot</i>.") << QString("<i>([^<]*)</i>") << QString("\\emph{\\1}") << QString("A \\emph{bon mot}.");
+ QTest::newRow( "rep01" ) << QString("banana") << QString("^.a()") << QString("\\1") << QString("nana");
+ QTest::newRow( "rep02" ) << QString("banana") << QString("(ba)") << QString("\\1X\\1") << QString("baXbanana");
+ QTest::newRow( "rep03" ) << QString("banana") << QString("(ba)(na)na") << QString("\\2X\\1") << QString("naXba");
+
+ QTest::newRow("backref00") << QString("\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\10\\11") << QString("\\\\[34]")
+ << QString("X") << QString("\\1\\2XX\\5\\6\\7\\8\\9\\A\\10\\11");
+ QTest::newRow("backref01") << QString("foo") << QString("[fo]") << QString("\\1") << QString("\\1\\1\\1");
+ QTest::newRow("backref02") << QString("foo") << QString("([fo])") << QString("(\\1)") << QString("(f)(o)(o)");
+ QTest::newRow("backref03") << QString("foo") << QString("([fo])") << QString("\\2") << QString("\\2\\2\\2");
+ QTest::newRow("backref04") << QString("foo") << QString("([fo])") << QString("\\10") << QString("f0o0o0");
+ QTest::newRow("backref05") << QString("foo") << QString("([fo])") << QString("\\11") << QString("f1o1o1");
+ QTest::newRow("backref06") << QString("foo") << QString("([fo])") << QString("\\19") << QString("f9o9o9");
+ QTest::newRow("backref07") << QString("foo") << QString("(f)(o+)")
+ << QString("\\2\\1\\10\\20\\11\\22\\19\\29\\3")
+ << QString("ooff0oo0f1oo2f9oo9\\3");
+ QTest::newRow("backref08") << QString("abc") << QString("(((((((((((((([abc]))))))))))))))")
+ << QString("{\\14}") << QString("{a}{b}{c}");
+ QTest::newRow("backref09") << QString("abcdefghijklmn")
+ << QString("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)")
+ << QString("\\19\\18\\17\\16\\15\\14\\13\\12\\11\\10"
+ "\\9\\90\\8\\80\\7\\70\\6\\60\\5\\50\\4\\40\\3\\30\\2\\20\\1")
+ << QString("a9a8a7a6a5nmlkjii0hh0gg0ff0ee0dd0cc0bb0a");
+ QTest::newRow("backref10") << QString("abc") << QString("((((((((((((((abc))))))))))))))")
+ << QString("\\0\\01\\011") << QString("\\0\\01\\011");
+}
+
+void tst_QString::utf8_data()
+{
+ QString str;
+ QTest::addColumn<QByteArray>("utf8" );
+ QTest::addColumn<QString>("res" );
+
+ QTest::newRow( "str0" ) << QByteArray("abcdefgh")
+ << QString("abcdefgh");
+ QTest::newRow( "str1" ) << QByteArray("\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205")
+ << QString("\366\344\374\326\304\334\370\346\345\330\306\305") ;
+ str += QChar( 0x05e9 );
+ str += QChar( 0x05d3 );
+ str += QChar( 0x05d2 );
+ QTest::newRow( "str2" ) << QByteArray("\327\251\327\223\327\222")
+ << str;
+
+ str = QChar( 0x20ac );
+ str += " some text";
+ QTest::newRow( "str3" ) << QByteArray("\342\202\254 some text")
+ << str;
+
+ str = "Old Italic: ";
+ str += QChar(0xd800);
+ str += QChar(0xdf00);
+ str += QChar(0xd800);
+ str += QChar(0xdf01);
+ str += QChar(0xd800);
+ str += QChar(0xdf02);
+ str += QChar(0xd800);
+ str += QChar(0xdf03);
+ str += QChar(0xd800);
+ str += QChar(0xdf04);
+ QTest::newRow("surrogate") << QByteArray("Old Italic: \360\220\214\200\360\220\214\201\360\220\214\202\360\220\214\203\360\220\214\204") << str;
+}
+
+void tst_QString::length()
+{
+ QFETCH( QString, s1 );
+ QTEST( (int)s1.length(), "res" );
+}
+
+#include <qfile.h>
+
+void tst_QString::acc_01()
+{
+ QString a;
+ QString b; //b(10);
+ QString bb; //bb((int)0);
+ QString c("String C");
+ QChar tmp[10];
+ tmp[0] = 'S';
+ tmp[1] = 't';
+ tmp[2] = 'r';
+ tmp[3] = 'i';
+ tmp[4] = 'n';
+ tmp[5] = 'g';
+ tmp[6] = ' ';
+ tmp[7] = 'D';
+ tmp[8] = 'X';
+ tmp[9] = '\0';
+ QString d(tmp,8);
+ QString ca(a);
+ QString cb(b);
+ QString cc(c);
+ QString n;
+ QString e("String E");
+ QString f;
+ f = e;
+ f[7]='F';
+ QCOMPARE(e,(QString)"String E");
+ char text[]="String f";
+ f = text;
+ text[7]='!';
+ QCOMPARE(f,(QString)"String f");
+ f[7]='F';
+ QCOMPARE(text[7],'!');
+
+ a="";
+ a[0]='A';
+ QCOMPARE(a,(QString)"A");
+ QCOMPARE(a.length(),1);
+ a[1]='B';
+ QCOMPARE(a,(QString)"AB");
+ QCOMPARE(a.length(),2);
+ a[2]='C';
+ QCOMPARE(a,(QString)"ABC");
+ QCOMPARE(a.length(),3);
+ a = QString();
+ QVERIFY(a.isNull());
+ a[0]='A';
+ QCOMPARE(a,(QString)"A");
+ QCOMPARE(a.length(),1);
+ a[1]='B';
+ QCOMPARE(a,(QString)"AB");
+ QCOMPARE(a.length(),2);
+ a[2]='C';
+ QCOMPARE(a,(QString)"ABC");
+ QCOMPARE(a.length(),3);
+
+ a="123";
+ b="456";
+ a[0]=a[1];
+ QCOMPARE(a,(QString)"223");
+ a[1]=b[1];
+ QCOMPARE(b,(QString)"456");
+ QCOMPARE(a,(QString)"253");
+
+ char t[]="TEXT";
+ a="A";
+ a=t;
+ QCOMPARE(a,(QString)"TEXT");
+ QCOMPARE(a,(QString)t);
+ a[0]='X';
+ QCOMPARE(a,(QString)"XEXT");
+ QCOMPARE(t[0],'T');
+ t[0]='Z';
+ QCOMPARE(a,(QString)"XEXT");
+
+ a="ABC";
+ QCOMPARE(char(a.toLatin1()[1]),'B');
+ QCOMPARE(strcmp(a.toLatin1(),((QString)"ABC").toLatin1()),0);
+ QCOMPARE(a+="DEF",(QString)"ABCDEF");
+ QCOMPARE(a+='G',(QString)"ABCDEFG");
+ QCOMPARE(a+=((const char*)(0)),(QString)"ABCDEFG");
+
+ // non-member operators
+
+ a="ABC";
+ b="ABC";
+ c="ACB";
+ d="ABCD";
+ QVERIFY(a==b);
+ QVERIFY(!(a==d));
+ QVERIFY(!(a!=b));
+ QVERIFY(a!=d);
+ QVERIFY(!(a<b));
+ QVERIFY(a<c);
+ QVERIFY(a<d);
+ QVERIFY(!(d<a));
+ QVERIFY(!(c<a));
+ QVERIFY(a<=b);
+ QVERIFY(a<=d);
+ QVERIFY(a<=c);
+ QVERIFY(!(c<=a));
+ QVERIFY(!(d<=a));
+ QCOMPARE(QString(a+b),(QString)"ABCABC");
+ QCOMPARE(QString(a+"XXXX"),(QString)"ABCXXXX");
+ QCOMPARE(QString(a+'X'),(QString)"ABCX");
+ QCOMPARE(QString("XXXX"+a),(QString)"XXXXABC");
+ QCOMPARE(QString('X'+a),(QString)"XABC");
+ a = (const char*)0;
+ QVERIFY(a.isNull());
+ QVERIFY(*a.toLatin1().constData() == '\0');
+ {
+#if defined(Q_OS_WINCE)
+ int argc = 0;
+ QCoreApplication app(argc, 0);
+#endif
+ QFile f("COMPARE.txt");
+ f.open(QIODevice::ReadOnly);
+ QTextStream ts( &f );
+ ts.setCodec(QTextCodec::codecForName("UTF-16"));
+ ts << "Abc";
+ }
+}
+
+void tst_QString::isNull()
+{
+ QString a;
+ QVERIFY(a.isNull());
+
+ const char *zero = 0;
+ a.sprintf( zero );
+ QVERIFY(!a.isNull());
+}
+
+void tst_QString::isEmpty()
+{
+ QString a;
+ QVERIFY(a.isEmpty());
+ QString c("Not empty");
+ QVERIFY(!c.isEmpty());
+}
+
+void tst_QString::constructor()
+{
+ QString a;
+ QString b; //b(10);
+ QString c("String C");
+ QChar tmp[10];
+ tmp[0] = 'S';
+ tmp[1] = 't';
+ tmp[2] = 'r';
+ tmp[3] = 'i';
+ tmp[4] = 'n';
+ tmp[5] = 'g';
+ tmp[6] = ' ';
+ tmp[7] = 'D';
+ tmp[8] = 'X';
+ tmp[9] = '\0';
+ QString d(tmp,8);
+ QString ca(a);
+ QString cb(b);
+ QString cc(c);
+
+ QCOMPARE(a,ca);
+ QVERIFY(a.isNull());
+ QVERIFY(a == (QString)"");
+ QCOMPARE(b,cb);
+ QCOMPARE(c,cc);
+ QCOMPARE(d,(QString)"String D");
+
+ QString nullStr;
+ QVERIFY( nullStr.isNull() );
+ QVERIFY( nullStr.isEmpty() );
+ QString empty("");
+ QVERIFY( !empty.isNull() );
+ QVERIFY( empty.isEmpty() );
+}
+
+
+
+void tst_QString::constructorQByteArray_data()
+{
+ QTest::addColumn<QByteArray>("src" );
+ QTest::addColumn<QString>("expected" );
+
+ QByteArray ba( 4, 0 );
+ ba[0] = 'C';
+ ba[1] = 'O';
+ ba[2] = 'M';
+ ba[3] = 'P';
+
+ QTest::newRow( "1" ) << ba << QString("COMP");
+
+ QByteArray ba1( 7, 0 );
+ ba1[0] = 'a';
+ ba1[1] = 'b';
+ ba1[2] = 'c';
+ ba1[3] = '\0';
+ ba1[4] = 'd';
+ ba1[5] = 'e';
+ ba1[6] = 'f';
+
+ QTest::newRow( "2" ) << ba1 << QString("abc");
+
+ QTest::newRow( "3" ) << QByteArray::fromRawData("abcd", 3) << QString("abc");
+}
+
+void tst_QString::constructorQByteArray()
+{
+ QFETCH(QByteArray, src);
+ QFETCH(QString, expected);
+
+ QString str1(src);
+ QCOMPARE(str1.length(), expected.length());
+ QCOMPARE( str1, expected );
+
+ QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
+ QString strBA(src);
+ QTextCodec::setCodecForCStrings( 0 );
+
+ QCOMPARE( strBA, expected );
+}
+
+void tst_QString::STL()
+{
+#ifdef Q_CC_HPACC
+ QSKIP("This test crashes on HP-UX with aCC", SkipSingle);
+#endif
+#ifndef QT_NO_STL
+#ifndef QT_NO_CAST_TO_ASCII
+ QString qt( "QString" );
+
+ std::string stdstr( "QString" );
+
+ QString stlqt;
+
+ // constructor
+ stlqt = QString( stdstr );
+ QCOMPARE( stlqt, qt );
+
+ // assignment
+ stlqt = stdstr;
+ QCOMPARE( stlqt, qt );
+
+ std::string stdstr2 = stlqt;
+ QCOMPARE( stdstr2, stdstr );
+
+ // prepend
+ stlqt = QString();
+ stlqt.prepend( stdstr );
+ QCOMPARE( stlqt, qt );
+
+ // append
+ stlqt = QString();
+ stlqt.append( stdstr );
+ QCOMPARE( stlqt, qt );
+
+ // pathologics (null-strings not supported by many STLs, so test only empty strings)
+ stdstr = std::string();
+ stlqt = stdstr;
+ QVERIFY( stlqt.isEmpty() );
+ std::string stdstr3 = stlqt;
+ QVERIFY( !stdstr3.length() );
+#endif
+
+//skip test if glibc is not compiled with wide character support
+#if (defined Q_CC_GNU && !defined _GLIBCPP_USE_WCHAR_T) || defined QT_NO_STL_WCHAR
+ QSKIP( "Not tested without wide character support", SkipAll);
+#else
+ const wchar_t arr[] = {'h', 'e', 'l', 'l', 'o', 0};
+ QStdWString stlStr = arr;
+
+ QString s = QString::fromStdWString(stlStr);
+
+ QCOMPARE(s, QString::fromLatin1("hello"));
+ QCOMPARE(stlStr, s.toStdWString());
+#endif
+#else
+ QSKIP( "Not tested without STL support", SkipAll);
+#endif
+}
+
+void tst_QString::truncate()
+{
+ QString e("String E");
+ e.truncate(4);
+ QCOMPARE(e,(QString)"Stri");
+
+ e = "String E";
+ e.truncate(0);
+ QCOMPARE(e,(QString)"");
+ QVERIFY(e.isEmpty());
+ QVERIFY(!e.isNull());
+
+}
+
+void tst_QString::fill()
+{
+ QString e;
+ e.fill('e',1);
+ QCOMPARE(e,(QString)"e");
+ QString f;
+ f.fill('f',3);
+ QCOMPARE(f,(QString)"fff");
+ f.fill('F');
+ QCOMPARE(f,(QString)"FFF");
+}
+
+void tst_QString::sprintf()
+{
+ QString a;
+ a.sprintf("COMPARE");
+ QCOMPARE(a,(QString)"COMPARE");
+ a.sprintf("%%%d",1);
+ QCOMPARE(a,(QString)"%1");
+ QCOMPARE(a.sprintf("X%dY",2),(QString)"X2Y");
+ QCOMPARE(a.sprintf("X%9iY", 50000 ),(QString)"X 50000Y");
+ QCOMPARE(a.sprintf("X%-9sY","hello"),(QString)"Xhello Y");
+ QCOMPARE(a.sprintf("X%-9iY", 50000 ),(QString)"X50000 Y");
+ QCOMPARE(a.sprintf("%lf", 1.23), QString("1.230000"));
+ QCOMPARE(a.sprintf("%lf", 1.23456789), QString("1.234568"));
+ QCOMPARE(a.sprintf("%p", (void *)0xbfffd350), QString("0xbfffd350"));
+ QCOMPARE(a.sprintf("%p", (void *)0), QString("0x0"));
+
+ int i = 6;
+ long l = -2;
+ float f = 4.023f;
+ QString S1;
+ S1.sprintf("%d %ld %f",i,l,f);
+ QCOMPARE(S1,QString("6 -2 4.023000"));
+
+ double d = -514.25683;
+ S1.sprintf("%f",d);
+ QCOMPARE(S1, QString("-514.256830"));
+
+ QCOMPARE(a.sprintf("%.3s", "Hello" ),(QString)"Hel");
+ QCOMPARE(a.sprintf("%10.3s", "Hello" ),(QString)" Hel");
+ QCOMPARE(a.sprintf("%.10s", "Hello" ),(QString)"Hello");
+ QCOMPARE(a.sprintf("%10.10s", "Hello" ),(QString)" Hello");
+ QCOMPARE(a.sprintf("%-10.10s", "Hello" ),(QString)"Hello ");
+ QCOMPARE(a.sprintf("%-10.3s", "Hello" ),(QString)"Hel ");
+ QCOMPARE(a.sprintf("%-5.5s", "Hello" ),(QString)"Hello");
+
+ // Check utf8 conversion for %s
+ QCOMPARE(a.sprintf("%s", "\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205"), QString("\366\344\374\326\304\334\370\346\345\330\306\305"));
+
+ // Check codecForCStrings is used to read non-modifier sequences in the format string
+ QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
+ QCOMPARE(a.sprintf("\303\251\303\250\303\240 %s", "\303\251\303\250\303\240"), QString("\303\251\303\250\303\240 \303\251\303\250\303\240"));
+ QTextCodec::setCodecForCStrings(0);
+
+ int n1;
+ a.sprintf("%s%n%s", "hello", &n1, "goodbye");
+ QCOMPARE(n1, 5);
+ QCOMPARE(a, QString("hellogoodbye"));
+ qlonglong n2;
+ a.sprintf("%s%s%lln%s", "foo", "bar", &n2, "whiz");
+ QCOMPARE((int)n2, 6);
+ QCOMPARE(a, QString("foobarwhiz"));
+}
+
+/*
+ indexOf() and indexOf02() test QString::indexOf(),
+ QString::lastIndexOf(), and their QByteArray equivalents.
+
+ lastIndexOf() tests QString::lastIndexOf() more in depth, but it
+ should probably be rewritten to use a data table.
+*/
+
+void tst_QString::indexOf_data()
+{
+ QTest::addColumn<QString>("haystack" );
+ QTest::addColumn<QString>("needle" );
+ QTest::addColumn<int>("startpos" );
+ QTest::addColumn<bool>("bcs" );
+ QTest::addColumn<int>("resultpos" );
+
+ QTest::newRow( "data0" ) << QString("abc") << QString("a") << 0 << true << 0;
+ QTest::newRow( "data1" ) << QString("abc") << QString("a") << 0 << false << 0;
+ QTest::newRow( "data2" ) << QString("abc") << QString("A") << 0 << true << -1;
+ QTest::newRow( "data3" ) << QString("abc") << QString("A") << 0 << false << 0;
+ QTest::newRow( "data4" ) << QString("abc") << QString("a") << 1 << true << -1;
+ QTest::newRow( "data5" ) << QString("abc") << QString("a") << 1 << false << -1;
+ QTest::newRow( "data6" ) << QString("abc") << QString("A") << 1 << true << -1;
+ QTest::newRow( "data7" ) << QString("abc") << QString("A") << 1 << false << -1;
+ QTest::newRow( "data8" ) << QString("abc") << QString("b") << 0 << true << 1;
+ QTest::newRow( "data9" ) << QString("abc") << QString("b") << 0 << false << 1;
+ QTest::newRow( "data10" ) << QString("abc") << QString("B") << 0 << true << -1;
+ QTest::newRow( "data11" ) << QString("abc") << QString("B") << 0 << false << 1;
+ QTest::newRow( "data12" ) << QString("abc") << QString("b") << 1 << true << 1;
+ QTest::newRow( "data13" ) << QString("abc") << QString("b") << 1 << false << 1;
+ QTest::newRow( "data14" ) << QString("abc") << QString("B") << 1 << true << -1;
+ QTest::newRow( "data15" ) << QString("abc") << QString("B") << 1 << false << 1;
+ QTest::newRow( "data16" ) << QString("abc") << QString("b") << 2 << true << -1;
+ QTest::newRow( "data17" ) << QString("abc") << QString("b") << 2 << false << -1;
+
+ QTest::newRow( "data20" ) << QString("ABC") << QString("A") << 0 << true << 0;
+ QTest::newRow( "data21" ) << QString("ABC") << QString("A") << 0 << false << 0;
+ QTest::newRow( "data22" ) << QString("ABC") << QString("a") << 0 << true << -1;
+ QTest::newRow( "data23" ) << QString("ABC") << QString("a") << 0 << false << 0;
+ QTest::newRow( "data24" ) << QString("ABC") << QString("A") << 1 << true << -1;
+ QTest::newRow( "data25" ) << QString("ABC") << QString("A") << 1 << false << -1;
+ QTest::newRow( "data26" ) << QString("ABC") << QString("a") << 1 << true << -1;
+ QTest::newRow( "data27" ) << QString("ABC") << QString("a") << 1 << false << -1;
+ QTest::newRow( "data28" ) << QString("ABC") << QString("B") << 0 << true << 1;
+ QTest::newRow( "data29" ) << QString("ABC") << QString("B") << 0 << false << 1;
+ QTest::newRow( "data30" ) << QString("ABC") << QString("b") << 0 << true << -1;
+ QTest::newRow( "data31" ) << QString("ABC") << QString("b") << 0 << false << 1;
+ QTest::newRow( "data32" ) << QString("ABC") << QString("B") << 1 << true << 1;
+ QTest::newRow( "data33" ) << QString("ABC") << QString("B") << 1 << false << 1;
+ QTest::newRow( "data34" ) << QString("ABC") << QString("b") << 1 << true << -1;
+ QTest::newRow( "data35" ) << QString("ABC") << QString("b") << 1 << false << 1;
+ QTest::newRow( "data36" ) << QString("ABC") << QString("B") << 2 << true << -1;
+ QTest::newRow( "data37" ) << QString("ABC") << QString("B") << 2 << false << -1;
+
+ QTest::newRow( "data40" ) << QString("aBc") << QString("bc") << 0 << true << -1;
+ QTest::newRow( "data41" ) << QString("aBc") << QString("Bc") << 0 << true << 1;
+ QTest::newRow( "data42" ) << QString("aBc") << QString("bC") << 0 << true << -1;
+ QTest::newRow( "data43" ) << QString("aBc") << QString("BC") << 0 << true << -1;
+ QTest::newRow( "data44" ) << QString("aBc") << QString("bc") << 0 << false << 1;
+ QTest::newRow( "data45" ) << QString("aBc") << QString("Bc") << 0 << false << 1;
+ QTest::newRow( "data46" ) << QString("aBc") << QString("bC") << 0 << false << 1;
+ QTest::newRow( "data47" ) << QString("aBc") << QString("BC") << 0 << false << 1;
+ QTest::newRow( "data48" ) << QString("AbC") << QString("bc") << 0 << true << -1;
+ QTest::newRow( "data49" ) << QString("AbC") << QString("Bc") << 0 << true << -1;
+ QTest::newRow( "data50" ) << QString("AbC") << QString("bC") << 0 << true << 1;
+ QTest::newRow( "data51" ) << QString("AbC") << QString("BC") << 0 << true << -1;
+ QTest::newRow( "data52" ) << QString("AbC") << QString("bc") << 0 << false << 1;
+ QTest::newRow( "data53" ) << QString("AbC") << QString("Bc") << 0 << false << 1;
+
+ QTest::newRow( "data54" ) << QString("AbC") << QString("bC") << 0 << false << 1;
+ QTest::newRow( "data55" ) << QString("AbC") << QString("BC") << 0 << false << 1;
+ QTest::newRow( "data56" ) << QString("AbC") << QString("BC") << 1 << false << 1;
+ QTest::newRow( "data57" ) << QString("AbC") << QString("BC") << 2 << false << -1;
+#if 0
+ QTest::newRow( "null-in-null") << QString() << QString() << 0 << false << 0;
+ QTest::newRow( "empty-in-null") << QString() << QString("") << 0 << false << 0;
+ QTest::newRow( "null-in-empty") << QString("") << QString() << 0 << false << 0;
+ QTest::newRow( "empty-in-empty") << QString("") << QString("") << 0 << false << 0;
+#endif
+
+
+ QString s1 = "abc";
+ s1 += QChar(0xb5);
+ QString s2;
+ s2 += QChar(0x3bc);
+ QTest::newRow( "data58" ) << s1 << s2 << 0 << false << 3;
+ s2.prepend("C");
+ QTest::newRow( "data59" ) << s1 << s2 << 0 << false << 2;
+
+ QString veryBigHaystack(500, 'a');
+ veryBigHaystack += 'B';
+ QTest::newRow("BoyerMooreStressTest") << veryBigHaystack << veryBigHaystack << 0 << true << 0;
+ QTest::newRow("BoyerMooreStressTest2") << QString(veryBigHaystack + 'c') << veryBigHaystack << 0 << true << 0;
+ QTest::newRow("BoyerMooreStressTest3") << QString('c' + veryBigHaystack) << veryBigHaystack << 0 << true << 1;
+ QTest::newRow("BoyerMooreStressTest4") << veryBigHaystack << QString(veryBigHaystack + 'c') << 0 << true << -1;
+ QTest::newRow("BoyerMooreStressTest5") << veryBigHaystack << QString('c' + veryBigHaystack) << 0 << true << -1;
+ QTest::newRow("BoyerMooreStressTest6") << QString('d' + veryBigHaystack) << QString('c' + veryBigHaystack) << 0 << true << -1;
+ QTest::newRow("BoyerMooreStressTest6") << QString(veryBigHaystack + 'c') << QString('c' + veryBigHaystack) << 0 << true << -1;
+
+ QTest::newRow("BoyerMooreInsensitiveStressTest") << veryBigHaystack << veryBigHaystack << 0 << false << 0;
+
+}
+
+void tst_QString::indexOf()
+{
+ QFETCH( QString, haystack );
+ QFETCH( QString, needle );
+ QFETCH( int, startpos );
+ QFETCH( bool, bcs );
+ QFETCH( int, resultpos );
+ CREATE_REF(needle);
+
+ Qt::CaseSensitivity cs = bcs ? Qt::CaseSensitive : Qt::CaseInsensitive;
+
+ bool needleIsLatin = (QString::fromLatin1(needle.toLatin1()) == needle);
+
+ QCOMPARE( haystack.indexOf(needle, startpos, cs), resultpos );
+ QCOMPARE( haystack.indexOf(ref, startpos, cs), resultpos );
+ if (needleIsLatin) {
+ QCOMPARE( haystack.indexOf(needle.toLatin1(), startpos, cs), resultpos );
+ QCOMPARE( haystack.indexOf(needle.toLatin1().data(), startpos, cs), resultpos );
+ }
+
+ {
+ QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
+ QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
+ QCOMPARE( haystack.indexOf(rx1, startpos), resultpos );
+ QCOMPARE( haystack.indexOf(rx2, startpos), resultpos );
+ // these QRegExp must have been modified
+ QVERIFY( resultpos == -1 || rx1.matchedLength() > 0);
+ QVERIFY( resultpos == -1 || rx2.matchedLength() > 0);
+ }
+
+ {
+ const QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
+ const QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
+ QCOMPARE( haystack.indexOf(rx1, startpos), resultpos );
+ QCOMPARE( haystack.indexOf(rx2, startpos), resultpos );
+ // our QRegExp mustn't have been modified
+ QCOMPARE( rx1.matchedLength(), -1 );
+ QCOMPARE( rx2.matchedLength(), -1 );
+ }
+
+ if (cs == Qt::CaseSensitive) {
+ QCOMPARE( haystack.indexOf(needle, startpos), resultpos );
+ QCOMPARE( haystack.indexOf(ref, startpos), resultpos );
+ if (needleIsLatin) {
+ QCOMPARE( haystack.indexOf(needle.toLatin1(), startpos), resultpos );
+ QCOMPARE( haystack.indexOf(needle.toLatin1().data(), startpos), resultpos );
+ }
+ if (startpos == 0) {
+ QCOMPARE( haystack.indexOf(needle), resultpos );
+ QCOMPARE( haystack.indexOf(ref), resultpos );
+ if (needleIsLatin) {
+ QCOMPARE( haystack.indexOf(needle.toLatin1()), resultpos );
+ QCOMPARE( haystack.indexOf(needle.toLatin1().data()), resultpos );
+ }
+ }
+ }
+ if (needle.size() == 1) {
+ QCOMPARE(haystack.indexOf(needle.at(0), startpos, cs), resultpos);
+ QCOMPARE(haystack.indexOf(ref.at(0), startpos, cs), resultpos);
+ }
+
+}
+
+void tst_QString::indexOf2_data()
+{
+ QTest::addColumn<QString>("haystack" );
+ QTest::addColumn<QString>("needle" );
+ QTest::addColumn<int>("resultpos" );
+
+ QTest::newRow( "data0" ) << QString() << QString() << 0;
+ QTest::newRow( "data1" ) << QString() << QString("") << 0;
+ QTest::newRow( "data2" ) << QString("") << QString() << 0;
+ QTest::newRow( "data3" ) << QString("") << QString("") << 0;
+ QTest::newRow( "data4" ) << QString() << QString("a") << -1;
+ QTest::newRow( "data5" ) << QString() << QString("abcdefg") << -1;
+ QTest::newRow( "data6" ) << QString("") << QString("a") << -1;
+ QTest::newRow( "data7" ) << QString("") << QString("abcdefg") << -1;
+
+ QTest::newRow( "data8" ) << QString("a") << QString() << 0;
+ QTest::newRow( "data9" ) << QString("a") << QString("") << 0;
+ QTest::newRow( "data10" ) << QString("a") << QString("a") << 0;
+ QTest::newRow( "data11" ) << QString("a") << QString("b") << -1;
+ QTest::newRow( "data12" ) << QString("a") << QString("abcdefg") << -1;
+ QTest::newRow( "data13" ) << QString("ab") << QString() << 0;
+ QTest::newRow( "data14" ) << QString("ab") << QString("") << 0;
+ QTest::newRow( "data15" ) << QString("ab") << QString("a") << 0;
+ QTest::newRow( "data16" ) << QString("ab") << QString("b") << 1;
+ QTest::newRow( "data17" ) << QString("ab") << QString("ab") << 0;
+ QTest::newRow( "data18" ) << QString("ab") << QString("bc") << -1;
+ QTest::newRow( "data19" ) << QString("ab") << QString("abcdefg") << -1;
+
+ QTest::newRow( "data30" ) << QString("abc") << QString("a") << 0;
+ QTest::newRow( "data31" ) << QString("abc") << QString("b") << 1;
+ QTest::newRow( "data32" ) << QString("abc") << QString("c") << 2;
+ QTest::newRow( "data33" ) << QString("abc") << QString("d") << -1;
+ QTest::newRow( "data34" ) << QString("abc") << QString("ab") << 0;
+ QTest::newRow( "data35" ) << QString("abc") << QString("bc") << 1;
+ QTest::newRow( "data36" ) << QString("abc") << QString("cd") << -1;
+ QTest::newRow( "data37" ) << QString("abc") << QString("ac") << -1;
+
+ // sizeof(whale) > 32
+ QString whale = "a5zby6cx7dw8evf9ug0th1si2rj3qkp4lomn";
+ QString minnow = "zby";
+ QTest::newRow( "data40" ) << whale << minnow << 2;
+ QTest::newRow( "data41" ) << QString(whale + whale) << minnow << 2;
+ QTest::newRow( "data42" ) << QString(minnow + whale) << minnow << 0;
+ QTest::newRow( "data43" ) << whale << whale << 0;
+ QTest::newRow( "data44" ) << QString(whale + whale) << whale << 0;
+ QTest::newRow( "data45" ) << whale << QString(whale + whale) << -1;
+ QTest::newRow( "data46" ) << QString(whale + whale) << QString(whale + whale) << 0;
+ QTest::newRow( "data47" ) << QString(whale + whale) << QString(whale + minnow) << -1;
+ QTest::newRow( "data48" ) << QString(minnow + whale) << whale << (int)minnow.length();
+}
+
+void tst_QString::indexOf2()
+{
+ QFETCH( QString, haystack );
+ QFETCH( QString, needle );
+ QFETCH( int, resultpos );
+ CREATE_REF(needle);
+
+ QByteArray chaystack = haystack.toLatin1();
+ QByteArray cneedle = needle.toLatin1();
+ int got;
+
+ QCOMPARE( haystack.indexOf(needle, 0, Qt::CaseSensitive), resultpos );
+ QCOMPARE( haystack.indexOf(ref, 0, Qt::CaseSensitive), resultpos );
+ QCOMPARE( QStringMatcher(needle, Qt::CaseSensitive).indexIn(haystack, 0), resultpos );
+ QCOMPARE( haystack.indexOf(needle, 0, Qt::CaseInsensitive), resultpos );
+ QCOMPARE( haystack.indexOf(ref, 0, Qt::CaseInsensitive), resultpos );
+ QCOMPARE( QStringMatcher(needle, Qt::CaseInsensitive).indexIn(haystack, 0), resultpos );
+ if ( needle.length() > 0 ) {
+ got = haystack.lastIndexOf( needle, -1, Qt::CaseSensitive );
+ QVERIFY( got == resultpos || (resultpos >= 0 && got >= resultpos) );
+ got = haystack.lastIndexOf( needle, -1, Qt::CaseInsensitive );
+ QVERIFY( got == resultpos || (resultpos >= 0 && got >= resultpos) );
+ }
+
+ QCOMPARE( chaystack.indexOf(cneedle, 0), resultpos );
+ QCOMPARE( QByteArrayMatcher(cneedle).indexIn(chaystack, 0), resultpos );
+ if ( cneedle.length() > 0 ) {
+ got = chaystack.lastIndexOf(cneedle, -1);
+ QVERIFY( got == resultpos || (resultpos >= 0 && got >= resultpos) );
+ }
+}
+
+void tst_QString::lastIndexOf_data()
+{
+ QTest::addColumn<QString>("haystack" );
+ QTest::addColumn<QString>("needle" );
+ QTest::addColumn<int>("from" );
+ QTest::addColumn<int>("expected" );
+ QTest::addColumn<bool>("caseSensitive" );
+
+ QString a = "ABCDEFGHIEfGEFG";
+
+ QTest::newRow("-1") << a << "G" << a.size() - 1 << 14 << true;
+ QTest::newRow("1") << a << "G" << - 1 << 14 << true;
+ QTest::newRow("2") << a << "G" << -3 << 11 << true;
+ QTest::newRow("3") << a << "G" << -5 << 6 << true;
+ QTest::newRow("4") << a << "G" << 14 << 14 << true;
+ QTest::newRow("5") << a << "G" << 13 << 11 << true;
+ QTest::newRow("6") << a << "B" << a.size() - 1 << 1 << true;
+ QTest::newRow("6") << a << "B" << - 1 << 1 << true;
+ QTest::newRow("7") << a << "B" << 1 << 1 << true;
+ QTest::newRow("8") << a << "B" << 0 << -1 << true;
+
+ QTest::newRow("9") << a << "G" << -1 << a.size()-1 << true;
+ QTest::newRow("10") << a << "G" << a.size()-1 << a.size()-1 << true;
+ QTest::newRow("11") << a << "G" << a.size() << -1 << true;
+ QTest::newRow("12") << a << "A" << 0 << 0 << true;
+ QTest::newRow("13") << a << "A" << -1*a.size() << 0 << true;
+
+ QTest::newRow("15") << a << "efg" << 0 << -1 << false;
+ QTest::newRow("16") << a << "efg" << a.size() << -1 << false;
+ QTest::newRow("17") << a << "efg" << -1 * a.size() << -1 << false;
+ QTest::newRow("19") << a << "efg" << a.size() - 1 << 12 << false;
+ QTest::newRow("20") << a << "efg" << 12 << 12 << false;
+ QTest::newRow("21") << a << "efg" << -12 << -1 << false;
+ QTest::newRow("22") << a << "efg" << 11 << 9 << false;
+
+ QTest::newRow("24") << "" << "asdf" << -1 << -1 << false;
+ QTest::newRow("25") << "asd" << "asdf" << -1 << -1 << false;
+ QTest::newRow("26") << "" << QString() << -1 << -1 << false;
+
+ QTest::newRow("27") << a << "" << a.size() << a.size() << false;
+ QTest::newRow("28") << a << "" << a.size() + 10 << -1 << false;
+}
+
+void tst_QString::lastIndexOf()
+{
+ QFETCH(QString, haystack);
+ QFETCH(QString, needle);
+ QFETCH(int, from);
+ QFETCH(int, expected);
+ QFETCH(bool, caseSensitive);
+ CREATE_REF(needle);
+
+ Qt::CaseSensitivity cs = (caseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive);
+
+ QCOMPARE(haystack.lastIndexOf(needle, from, cs), expected);
+ QCOMPARE(haystack.lastIndexOf(ref, from, cs), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1(), from, cs), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data(), from, cs), expected);
+
+ if (from >= -1 && from < haystack.size()) {
+ // unfortunately, QString and QRegExp don't have the same out of bound semantics
+ // I think QString is wrong -- See file log for contact information.
+ {
+ QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
+ QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
+ QCOMPARE(haystack.lastIndexOf(rx1, from), expected);
+ QCOMPARE(haystack.lastIndexOf(rx2, from), expected);
+ // our QRegExp mustn't have been modified
+ QVERIFY(expected == -1 || rx1.matchedLength() > 0);
+ QVERIFY(expected == -1 || rx2.matchedLength() > 0);
+ }
+
+ {
+ const QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
+ const QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
+ QCOMPARE(haystack.lastIndexOf(rx1, from), expected);
+ QCOMPARE(haystack.lastIndexOf(rx2, from), expected);
+ // our QRegExp mustn't have been modified
+ QCOMPARE(rx1.matchedLength(), -1);
+ QCOMPARE(rx2.matchedLength(), -1);
+ }
+ }
+
+ if (cs == Qt::CaseSensitive) {
+ QCOMPARE(haystack.lastIndexOf(needle, from), expected);
+ QCOMPARE(haystack.lastIndexOf(ref, from), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1(), from), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data(), from), expected);
+ if (from == -1) {
+ QCOMPARE(haystack.lastIndexOf(needle), expected);
+ QCOMPARE(haystack.lastIndexOf(ref), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1()), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data()), expected);
+ }
+ }
+ if (needle.size() == 1) {
+ QCOMPARE(haystack.lastIndexOf(needle.at(0), from), expected);
+ QCOMPARE(haystack.lastIndexOf(ref.at(0), from), expected);
+ }
+}
+
+void tst_QString::count()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QCOMPARE(a.count('A'),1);
+ QCOMPARE(a.count('Z'),0);
+ QCOMPARE(a.count('E'),3);
+ QCOMPARE(a.count('F'),2);
+ QCOMPARE(a.count('F',Qt::CaseInsensitive),3);
+ QCOMPARE(a.count("FG"),2);
+ QCOMPARE(a.count("FG",Qt::CaseInsensitive),3);
+ QCOMPARE(a.count( QString(), Qt::CaseInsensitive), 16);
+ QCOMPARE(a.count( "", Qt::CaseInsensitive), 16);
+ QCOMPARE(a.count(QRegExp("[FG][HI]")),1);
+ QCOMPARE(a.count(QRegExp("[G][HE]")),2);
+
+ CREATE_REF(QLatin1String("FG"));
+ QCOMPARE(a.count(ref),2);
+ QCOMPARE(a.count(ref,Qt::CaseInsensitive),3);
+ QCOMPARE(a.count( QStringRef(), Qt::CaseInsensitive), 16);
+ QStringRef emptyRef(&a, 0, 0);
+ QCOMPARE(a.count( emptyRef, Qt::CaseInsensitive), 16);
+
+}
+
+void tst_QString::contains()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QVERIFY(a.contains('A'));
+ QVERIFY(!a.contains('Z'));
+ QVERIFY(a.contains('E'));
+ QVERIFY(a.contains('F'));
+ QVERIFY(a.contains('F',Qt::CaseInsensitive));
+ QVERIFY(a.contains("FG"));
+ QVERIFY(a.contains("FG",Qt::CaseInsensitive));
+ QVERIFY(a.contains( QString(), Qt::CaseInsensitive));
+ QVERIFY(a.contains( "", Qt::CaseInsensitive));
+ QVERIFY(a.contains(QRegExp("[FG][HI]")));
+ QVERIFY(a.contains(QRegExp("[G][HE]")));
+
+ CREATE_REF(QLatin1String("FG"));
+ QVERIFY(a.contains(ref));
+ QVERIFY(a.contains(ref, Qt::CaseInsensitive));
+ QVERIFY(a.contains( QStringRef(), Qt::CaseInsensitive));
+ QStringRef emptyRef(&a, 0, 0);
+ QVERIFY(a.contains(emptyRef, Qt::CaseInsensitive));
+
+}
+
+
+void tst_QString::left()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QCOMPARE(a.left(3),(QString)"ABC");
+ QVERIFY(!a.left(0).isNull());
+ QCOMPARE(a.left(0),(QString)"");
+
+ QString n;
+ QVERIFY(n.left(3).isNull());
+ QVERIFY(n.left(0).isNull());
+ QVERIFY(n.left(0).isNull());
+
+ QString l = "Left";
+ QCOMPARE(l.left(-1), l);
+ QCOMPARE(l.left(100), l);
+}
+
+void tst_QString::leftRef()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QCOMPARE(a.leftRef(3).toString(),(QString)"ABC");
+
+ QVERIFY(a.leftRef(0).toString().isEmpty());
+ QCOMPARE(a.leftRef(0).toString(),(QString)"");
+
+ QString n;
+ QVERIFY(n.leftRef(3).toString().isEmpty());
+ QVERIFY(n.leftRef(0).toString().isEmpty());
+ QVERIFY(n.leftRef(0).toString().isEmpty());
+
+ QString l = "Left";
+ QCOMPARE(l.leftRef(-1).toString(), l);
+ QCOMPARE(l.leftRef(100).toString(), l);
+}
+
+void tst_QString::right()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QCOMPARE(a.right(3),(QString)"EFG");
+ QCOMPARE(a.right(0),(QString)"");
+
+ QString n;
+ QVERIFY(n.right(3).isNull());
+ QVERIFY(n.right(0).isNull());
+
+ QString r = "Right";
+ QCOMPARE(r.right(-1), r);
+ QCOMPARE(r.right(100), r);
+}
+
+void tst_QString::rightRef()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QCOMPARE(a.rightRef(3).toString(),(QString)"EFG");
+ QCOMPARE(a.rightRef(0).toString(),(QString)"");
+
+ QString n;
+ QVERIFY(n.rightRef(3).toString().isEmpty());
+ QVERIFY(n.rightRef(0).toString().isEmpty());
+
+ QString r = "Right";
+ QCOMPARE(r.rightRef(-1).toString(), r);
+ QCOMPARE(r.rightRef(100).toString(), r);
+}
+
+void tst_QString::mid()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+
+ QCOMPARE(a.mid(3,3),(QString)"DEF");
+ QCOMPARE(a.mid(0,0),(QString)"");
+ QVERIFY(a.mid(9999).isNull());
+ QVERIFY(a.mid(9999,1).isNull());
+
+ QString n;
+ QVERIFY(n.mid(3,3).isNull());
+ QVERIFY(n.mid(0,0).isNull());
+ QVERIFY(n.mid(9999,0).isNull());
+ QVERIFY(n.mid(9999,1).isNull());
+
+ QString x = "Nine pineapples";
+ QCOMPARE(x.mid(5, 4), QString("pine"));
+ QCOMPARE(x.mid(5), QString("pineapples"));
+
+}
+
+void tst_QString::midRef()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+
+ QCOMPARE(a.midRef(3,3).toString(),(QString)"DEF");
+ QCOMPARE(a.midRef(0,0).toString(),(QString)"");
+ QVERIFY(a.midRef(9999).toString().isEmpty());
+ QVERIFY(a.midRef(9999,1).toString().isEmpty());
+
+ QString n;
+ QVERIFY(n.midRef(3,3).toString().isEmpty());
+ QVERIFY(n.midRef(0,0).toString().isEmpty());
+ QVERIFY(n.midRef(9999,0).toString().isEmpty());
+ QVERIFY(n.midRef(9999,1).toString().isEmpty());
+
+ QString x = "Nine pineapples";
+ QCOMPARE(x.midRef(5, 4).toString(), QString("pine"));
+ QCOMPARE(x.midRef(5).toString(), QString("pineapples"));
+
+}
+
+void tst_QString::stringRef()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+
+ QVERIFY(QStringRef(&a, 0, 0) == (QString)"");
+
+ QVERIFY(QStringRef(&a, 3, 3) == (QString)"DEF");
+ QVERIFY(QStringRef(&a, 3, 3) == QLatin1String("DEF"));
+ QVERIFY(QStringRef(&a, 3, 3) == "DEF");
+ QVERIFY((QString)"DEF" == QStringRef(&a, 3, 3));
+ QVERIFY(QLatin1String("DEF") == QStringRef(&a, 3, 3));
+ QVERIFY("DEF" == QStringRef(&a, 3, 3));
+
+ QVERIFY(QStringRef(&a, 3, 3) != (QString)"DE");
+ QVERIFY(QStringRef(&a, 3, 3) != QLatin1String("DE"));
+ QVERIFY(QStringRef(&a, 3, 3) != "DE");
+ QVERIFY((QString)"DE" != QStringRef(&a, 3, 3));
+ QVERIFY(QLatin1String("DE") != QStringRef(&a, 3, 3));
+ QVERIFY("DE" != QStringRef(&a, 3, 3));
+
+ QString s_alpha("alpha");
+ QString s_beta("beta");
+ QStringRef alpha(&s_alpha);
+ QStringRef beta(&s_beta);
+
+ QVERIFY(alpha < beta);
+ QVERIFY(alpha <= beta);
+ QVERIFY(alpha <= alpha);
+ QVERIFY(beta > alpha);
+ QVERIFY(beta >= alpha);
+ QVERIFY(beta >= beta);
+
+ QString s_alpha2("alpha");
+
+ QMap<QStringRef, QString> map;
+ map.insert(alpha, "alpha");
+ map.insert(beta, "beta");
+ QVERIFY(alpha == map.value(QStringRef(&s_alpha2)));
+
+ QHash<QStringRef, QString> hash;
+ hash.insert(alpha, "alpha");
+ hash.insert(beta, "beta");
+
+ QVERIFY(alpha == hash.value(QStringRef(&s_alpha2)));
+}
+
+void tst_QString::leftJustified()
+{
+ QString a;
+ a="ABC";
+ QCOMPARE(a.leftJustified(5,'-'),(QString)"ABC--");
+ QCOMPARE(a.leftJustified(4,'-'),(QString)"ABC-");
+ QCOMPARE(a.leftJustified(4),(QString)"ABC ");
+ QCOMPARE(a.leftJustified(3),(QString)"ABC");
+ QCOMPARE(a.leftJustified(2),(QString)"ABC");
+ QCOMPARE(a.leftJustified(1),(QString)"ABC");
+ QCOMPARE(a.leftJustified(0),(QString)"ABC");
+
+ QString n;
+ QVERIFY(!n.leftJustified(3).isNull());
+ QCOMPARE(a.leftJustified(4,' ',true),(QString)"ABC ");
+ QCOMPARE(a.leftJustified(3,' ',true),(QString)"ABC");
+ QCOMPARE(a.leftJustified(2,' ',true),(QString)"AB");
+ QCOMPARE(a.leftJustified(1,' ',true),(QString)"A");
+ QCOMPARE(a.leftJustified(0,' ',true),(QString)"");
+}
+
+void tst_QString::rightJustified()
+{
+ QString a;
+ a="ABC";
+ QCOMPARE(a.rightJustified(5,'-'),(QString)"--ABC");
+ QCOMPARE(a.rightJustified(4,'-'),(QString)"-ABC");
+ QCOMPARE(a.rightJustified(4),(QString)" ABC");
+ QCOMPARE(a.rightJustified(3),(QString)"ABC");
+ QCOMPARE(a.rightJustified(2),(QString)"ABC");
+ QCOMPARE(a.rightJustified(1),(QString)"ABC");
+ QCOMPARE(a.rightJustified(0),(QString)"ABC");
+
+ QString n;
+ QVERIFY(!n.rightJustified(3).isNull());
+ QCOMPARE(a.rightJustified(4,'-',true),(QString)"-ABC");
+ QCOMPARE(a.rightJustified(4,' ',true),(QString)" ABC");
+ QCOMPARE(a.rightJustified(3,' ',true),(QString)"ABC");
+ QCOMPARE(a.rightJustified(2,' ',true),(QString)"AB");
+ QCOMPARE(a.rightJustified(1,' ',true),(QString)"A");
+ QCOMPARE(a.rightJustified(0,' ',true),(QString)"");
+ QCOMPARE(a,(QString)"ABC");
+}
+
+void tst_QString::toUpper()
+{
+ QCOMPARE( QString().toUpper(), QString() );
+ QCOMPARE( QString("").toUpper(), QString("") );
+ QCOMPARE( QString("text").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("Text").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("tExt").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("teXt").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("texT").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("TExt").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("teXT").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("tEXt").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("tExT").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("TEXT").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("@ABYZ[").toUpper(), QString("@ABYZ["));
+ QCOMPARE( QString("@abyz[").toUpper(), QString("@ABYZ["));
+ QCOMPARE( QString("`ABYZ{").toUpper(), QString("`ABYZ{"));
+ QCOMPARE( QString("`abyz{").toUpper(), QString("`ABYZ{"));
+
+ QCOMPARE( QString(1, QChar(0xdf)).toUpper(), QString("SS"));
+
+ QString lower;
+ lower += QChar(QChar::highSurrogate(0x10428));
+ lower += QChar(QChar::lowSurrogate(0x10428));
+ QString upper;
+ upper += QChar(QChar::highSurrogate(0x10400));
+ upper += QChar(QChar::lowSurrogate(0x10400));
+ QCOMPARE( lower.toUpper(), upper);
+
+
+#ifdef QT_USE_ICU
+ // test doesn't work with ICU support, since QChar is unaware of any locale
+ QEXPECT_FAIL("", "test doesn't work with ICU support, since QChar is unaware of any locale", Continue);
+ QVERIFY(false);
+#else
+ for (int i = 0; i < 65536; ++i) {
+ QString str(1, QChar(i));
+ QString upper = str.toUpper();
+ QVERIFY(upper.length() >= 1);
+ if (upper.length() == 1)
+ QVERIFY(upper == QString(1, QChar(i).toUpper()));
+ }
+#endif
+}
+
+void tst_QString::toLower()
+{
+ QCOMPARE( QString().toLower(), QString() );
+ QCOMPARE( QString("").toLower(), QString("") );
+ QCOMPARE( QString("text").toLower(), QString("text") );
+ QCOMPARE( QString("Text").toLower(), QString("text") );
+ QCOMPARE( QString("tExt").toLower(), QString("text") );
+ QCOMPARE( QString("teXt").toLower(), QString("text") );
+ QCOMPARE( QString("texT").toLower(), QString("text") );
+ QCOMPARE( QString("TExt").toLower(), QString("text") );
+ QCOMPARE( QString("teXT").toLower(), QString("text") );
+ QCOMPARE( QString("tEXt").toLower(), QString("text") );
+ QCOMPARE( QString("tExT").toLower(), QString("text") );
+ QCOMPARE( QString("TEXT").toLower(), QString("text") );
+ QCOMPARE( QString("@ABYZ[").toLower(), QString("@abyz["));
+ QCOMPARE( QString("@abyz[").toLower(), QString("@abyz["));
+ QCOMPARE( QString("`ABYZ{").toLower(), QString("`abyz{"));
+ QCOMPARE( QString("`abyz{").toLower(), QString("`abyz{"));
+
+ QCOMPARE( QString(1, QChar(0x130)).toLower(), QString(QString(1, QChar(0x69)) + QChar(0x307)));
+
+ QString lower;
+ lower += QChar(QChar::highSurrogate(0x10428));
+ lower += QChar(QChar::lowSurrogate(0x10428));
+ QString upper;
+ upper += QChar(QChar::highSurrogate(0x10400));
+ upper += QChar(QChar::lowSurrogate(0x10400));
+ QCOMPARE( upper.toLower(), lower);
+
+#ifdef QT_USE_ICU
+ // test doesn't work with ICU support, since QChar is unaware of any locale
+ QEXPECT_FAIL("", "test doesn't work with ICU support, since QChar is unaware of any locale", Continue);
+ QVERIFY(false);
+#else
+ for (int i = 0; i < 65536; ++i) {
+ QString str(1, QChar(i));
+ QString lower = str.toLower();
+ QVERIFY(lower.length() >= 1);
+ if (lower.length() == 1)
+ QVERIFY(str.toLower() == QString(1, QChar(i).toLower()));
+ }
+#endif
+}
+
+void tst_QString::trimmed()
+{
+ QString a;
+ a="Text";
+ QCOMPARE(a,(QString)"Text");
+ QCOMPARE(a.trimmed(),(QString)"Text");
+ QCOMPARE(a,(QString)"Text");
+ a=" ";
+ QCOMPARE(a.trimmed(),(QString)"");
+ QCOMPARE(a,(QString)" ");
+ a=" a ";
+ QCOMPARE(a.trimmed(),(QString)"a");
+}
+
+void tst_QString::simplified_data()
+{
+ QTest::addColumn<QString>("full" );
+ QTest::addColumn<QString>("simple" );
+
+ QTest::newRow("null") << QString() << QString();
+ QTest::newRow("empty") << "" << "";
+ QTest::newRow("one char") << "a" << "a";
+ QTest::newRow("one word") << "foo" << "foo";
+ QTest::newRow("chars trivial") << "a b" << "a b";
+ QTest::newRow("words trivial") << "foo bar" << "foo bar";
+ QTest::newRow("allspace") << " \t\v " << "";
+ QTest::newRow("char trailing") << "a " << "a";
+ QTest::newRow("char trailing tab") << "a\t" << "a";
+ QTest::newRow("char multitrailing") << "a " << "a";
+ QTest::newRow("char multitrailing tab") << "a \t" << "a";
+ QTest::newRow("char leading") << " a" << "a";
+ QTest::newRow("char leading tab") << "\ta" << "a";
+ QTest::newRow("char multileading") << " a" << "a";
+ QTest::newRow("char multileading tab") << "\t a" << "a";
+ QTest::newRow("chars apart") << "a b" << "a b";
+ QTest::newRow("words apart") << "foo bar" << "foo bar";
+ QTest::newRow("enclosed word") << " foo \t " << "foo";
+ QTest::newRow("enclosed chars apart") << " a b " << "a b";
+ QTest::newRow("enclosed words apart") << " foo bar " << "foo bar";
+ QTest::newRow("chars apart posttab") << "a \tb" << "a b";
+ QTest::newRow("chars apart pretab") << "a\t b" << "a b";
+ QTest::newRow("many words") << " just some random\ttext here" << "just some random text here";
+}
+
+void tst_QString::simplified()
+{
+ QFETCH(QString, full);
+ QFETCH(QString, simple);
+
+ QString result = full.simplified();
+ if (simple.isNull()) {
+ QVERIFY2(result.isNull(), qPrintable("'" + full + "' did not yield null: " + result));
+ } else if (simple.isEmpty()) {
+ QVERIFY2(result.isEmpty() && !result.isNull(), qPrintable("'" + full + "' did not yield empty: " + result));
+ } else {
+ QCOMPARE(result, simple);
+ if (full == simple)
+ QVERIFY(result.isSharedWith(full));
+ }
+}
+
+void tst_QString::insert()
+{
+ QString a;
+
+ a = "Ys";
+ QCOMPARE(a.insert(1,'e'), QString("Yes"));
+ QCOMPARE(a.insert(3,'!'), QString("Yes!"));
+ QCOMPARE(a.insert(5,'?'), QString("Yes! ?"));
+
+ a = "ABC";
+ QCOMPARE(a.insert(5,"DEF"), QString("ABC DEF"));
+
+ a = "ABC";
+ QCOMPARE(a.insert(2, QString()), QString("ABC"));
+ QCOMPARE(a.insert(0,"ABC"), QString("ABCABC"));
+ QCOMPARE(a, QString("ABCABC"));
+ QCOMPARE(a.insert(0,a), QString("ABCABCABCABC"));
+
+ QCOMPARE(a, QString("ABCABCABCABC"));
+ QCOMPARE(a.insert(0,'<'), QString("<ABCABCABCABC"));
+ QCOMPARE(a.insert(1,'>'), QString("<>ABCABCABCABC"));
+
+ a = "Meal";
+ QCOMPARE(a.insert(1, QLatin1String("ontr")), QString("Montreal"));
+ QCOMPARE(a.insert(4, ""), QString("Montreal"));
+ QCOMPARE(a.insert(3, QLatin1String("")), QString("Montreal"));
+ QCOMPARE(a.insert(3, QLatin1String(0)), QString("Montreal"));
+ QCOMPARE(a.insert(3, static_cast<const char *>(0)), QString("Montreal"));
+ QCOMPARE(a.insert(0, QLatin1String("a")), QString("aMontreal"));
+}
+
+void tst_QString::append()
+{
+ QString a;
+ a = "<>ABCABCABCABC";
+ QCOMPARE(a.append(">"),(QString)"<>ABCABCABCABC>");
+#if 0
+#if !defined(QT_NO_STL)
+ /*
+ The std::string support is fairly trivial in itself. The major
+ problem is whether it compiles or not, because of the way
+ different compilers choose an overload based on the type of the
+ argument. If it compiles, we're happy.
+ */
+ std::string stroustrup;
+ a.append( stroustrup );
+ a += stroustrup;
+#endif
+#endif
+}
+
+void tst_QString::append_bytearray_data()
+{
+ QTest::addColumn<QString>("str" );
+ QTest::addColumn<QByteArray>("ba" );
+ QTest::addColumn<QString>("res" );
+
+ QByteArray ba( 5, 0 );
+ ba[0] = 'a';
+ ba[1] = 'b';
+ ba[2] = 'c';
+ ba[3] = 'd';
+#if 0
+ ba[4] = 0;
+
+ for ( int i=0; i<2; i++ ) {
+ // i == 0: the byte array is exactly strlen+1
+ // i == 1: the byte array is larger than strlen+1
+ QTest::newRow( QString("nullTerminated_%1_0").arg(i) ) << QString() << ba << QString("abcd");
+ QTest::newRow( QString("nullTerminated_%1_1").arg(i) ) << QString("") << ba << QString("abcd");
+ QTest::newRow( QString("nullTerminated_%1_2").arg(i) ) << QString("foobar ") << ba << QString("foobar abcd");
+
+ ba.resize( 8 );
+ }
+#endif
+ // no 0 termination
+ ba.resize( 4 );
+ QTest::newRow( "notTerminated_0" ) << QString() << ba << QString("abcd");
+ QTest::newRow( "notTerminated_1" ) << QString("") << ba << QString("abcd");
+ QTest::newRow( "notTerminated_2" ) << QString("foobar ") << ba << QString("foobar abcd");
+
+ // byte array with only a 0
+ ba.resize( 1 );
+ ba[0] = 0;
+ QByteArray ba2("foobar ");
+ ba2.append('\0');
+ QTest::newRow( "emptyString" ) << QString("foobar ") << ba << QString(ba2);
+
+ // empty byte array
+ ba.resize( 0 );
+ QTest::newRow( "emptyByteArray" ) << QString("foobar ") << ba << QString("foobar ");
+}
+
+void tst_QString::append_bytearray()
+{
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ str.append( ba );
+
+ QTEST( str, "res" );
+ }
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
+ str.append( ba );
+ QTextCodec::setCodecForCStrings( 0 );
+
+ QTEST( str, "res" );
+ }
+}
+
+void tst_QString::operator_pluseq_bytearray_data()
+{
+ append_bytearray_data();
+}
+
+void tst_QString::operator_pluseq_bytearray()
+{
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ str += ba;
+
+ QTEST( str, "res" );
+ }
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
+ str += ba;
+ QTextCodec::setCodecForCStrings( 0 );
+
+ QTEST( str, "res" );
+ }
+}
+
+void tst_QString::swap()
+{
+ QString s1, s2;
+ s1 = "s1";
+ s2 = "s2";
+ s1.swap(s2);
+ QCOMPARE(s1,QLatin1String("s2"));
+ QCOMPARE(s2,QLatin1String("s1"));
+}
+
+void tst_QString::prepend()
+{
+ QString a;
+ a = "<>ABCABCABCABC>";
+ QCOMPARE(a.prepend("-"),(QString)"-<>ABCABCABCABC>");
+#if 0
+#if !defined(QT_NO_STL)
+ std::string stroustrup;
+ a.prepend( stroustrup );
+#endif
+#endif
+}
+
+void tst_QString::prepend_bytearray_data()
+{
+ QTest::addColumn<QString>("str" );
+ QTest::addColumn<QByteArray>("ba" );
+ QTest::addColumn<QString>("res" );
+
+ QByteArray ba( 5, 0 );
+ ba[0] = 'a';
+ ba[1] = 'b';
+ ba[2] = 'c';
+ ba[3] = 'd';
+#if 0
+ ba[4] = 0;
+
+ for ( int i=0; i<2; i++ ) {
+ // i == 0: the byte array is exactly strlen+1
+ // i == 1: the byte array is larger than strlen+1
+ QTest::newRow( QString("nullTerminated_%1_0").arg(i) ) << QString() << ba << QString("abcd");
+ QTest::newRow( QString("nullTerminated_%1_1").arg(i) ) << QString("") << ba << QString("abcd");
+ QTest::newRow( QString("nullTerminated_%1_2").arg(i) ) << QString(" foobar") << ba << QString("abcd foobar");
+
+ ba.resize( 8 );
+ }
+ // no 0 termination
+ ba.resize( 4 );
+ QTest::newRow( "notTerminated_0" ) << QString() << ba << QString("abcd");
+ QTest::newRow( "notTerminated_1" ) << QString("") << ba << QString("abcd");
+ QTest::newRow( "notTerminated_2" ) << QString(" foobar") << ba << QString("abcd foobar");
+#endif
+
+ // byte array with only a 0
+ ba.resize( 1 );
+ ba[0] = 0;
+ QTest::newRow( "emptyString" ) << QString("foobar ") << ba << QString("foobar ");
+
+ // empty byte array
+ ba.resize( 0 );
+ QTest::newRow( "emptyByteArray" ) << QString(" foobar") << ba << QString(" foobar");
+}
+
+void tst_QString::prepend_bytearray()
+{
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ str.prepend( ba );
+
+ QFETCH( QString, res );
+ QCOMPARE( str, res );
+ }
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
+ str.prepend( ba );
+ QTextCodec::setCodecForCStrings( 0 );
+
+ QTEST( str, "res" );
+ }
+}
+
+void tst_QString::replace_uint_uint()
+{
+ QFETCH( QString, string );
+ QFETCH( int, index );
+ QFETCH( int, len );
+ QFETCH( QString, after );
+
+ QString s1 = string;
+ s1.replace( (uint) index, (int) len, after );
+ QTEST( s1, "result" );
+
+ QString s2 = string;
+ s2.replace( (uint) index, (uint) len, after.unicode(), after.length() );
+ QTEST( s2, "result" );
+
+ if ( after.length() == 1 ) {
+ QString s3 = string;
+ s3.replace( (uint) index, (uint) len, QChar(after[0]) );
+ QTEST( s3, "result" );
+
+ QString s4 = string;
+ s4.replace( (uint) index, (uint) len, QChar(after[0]).toLatin1() );
+ QTEST( s4, "result" );
+ }
+}
+
+void tst_QString::replace_uint_uint_extra()
+{
+ /*
+ This test is designed to be extremely slow if QString::replace() doesn't optimize the case
+ len == after.size().
+ */
+ QString str("dsfkljfdsjklsdjsfjklfsdjkldfjslkjsdfkllkjdsfjklsfdkjsdflkjlsdfjklsdfkjldsflkjsddlkj");
+ for (int j = 1; j < 12; ++j)
+ str += str;
+
+ QString str2("aaaaaaaaaaaaaaaaaaaa");
+ for (int i = 0; i < 2000000; ++i) {
+ str.replace(10, 20, str2);
+ }
+
+ /*
+ Make sure that replacing with itself works.
+ */
+ QString copy(str);
+ copy.detach();
+ str.replace(0, str.length(), str);
+ QVERIFY(copy == str);
+
+ /*
+ Make sure that replacing a part of oneself with itself works.
+ */
+ QString str3("abcdefghij");
+ str3.replace(0, 1, str3);
+ QCOMPARE(str3, QString("abcdefghijbcdefghij"));
+
+ QString str4("abcdefghij");
+ str4.replace(1, 3, str4);
+ QCOMPARE(str4, QString("aabcdefghijefghij"));
+
+ QString str5("abcdefghij");
+ str5.replace(8, 10, str5);
+ QCOMPARE(str5, QString("abcdefghabcdefghij"));
+}
+
+void tst_QString::replace_string()
+{
+ QFETCH( QString, string );
+ QFETCH( QString, before );
+ QFETCH( QString, after );
+ QFETCH( bool, bcs );
+
+ Qt::CaseSensitivity cs = bcs ? Qt::CaseSensitive : Qt::CaseInsensitive;
+
+ if ( before.length() == 1 ) {
+ QChar ch = before.at( 0 );
+
+ QString s1 = string;
+ s1.replace( ch, after, cs );
+ QTEST( s1, "result" );
+
+ if ( QChar(ch.toLatin1()) == ch ) {
+ QString s2 = string;
+ s2.replace( ch.toLatin1(), after, cs );
+ QTEST( s2, "result" );
+ }
+ }
+
+ QString s3 = string;
+ s3.replace( before, after, cs );
+ QTEST( s3, "result" );
+
+ QString s4 = string;
+ s4.replace( QRegExp(QRegExp::escape(before), cs), after );
+ QTEST( s4, "result" );
+
+ QString s5 = string;
+ s5.replace(QRegExp(before, cs, QRegExp::FixedString), after);
+ QTEST( s5, "result" );
+}
+
+void tst_QString::replace_regexp()
+{
+ QFETCH( QString, string );
+ QFETCH( QString, regexp );
+ QFETCH( QString, after );
+
+ QString s2 = string;
+ s2.replace( QRegExp(regexp), after );
+ QTEST( s2, "result" );
+}
+
+void tst_QString::remove_uint_uint()
+{
+ QFETCH( QString, string );
+ QFETCH( int, index );
+ QFETCH( int, len );
+ QFETCH( QString, after );
+
+ if ( after.length() == 0 ) {
+ QString s1 = string;
+ s1.remove( (uint) index, (uint) len );
+ QTEST( s1, "result" );
+ } else
+ QCOMPARE( 0, 0 ); // shut QtTest
+}
+
+void tst_QString::remove_string()
+{
+ QFETCH( QString, string );
+ QFETCH( QString, before );
+ QFETCH( QString, after );
+ QFETCH( bool, bcs );
+
+ Qt::CaseSensitivity cs = bcs ? Qt::CaseSensitive : Qt::CaseInsensitive;
+
+ if ( after.length() == 0 ) {
+ if ( before.length() == 1 && cs ) {
+ QChar ch = before.at( 0 );
+
+ QString s1 = string;
+ s1.remove( ch );
+ QTEST( s1, "result" );
+
+ if ( QChar(ch.toLatin1()) == ch ) {
+ QString s2 = string;
+ s2.remove( ch );
+ QTEST( s2, "result" );
+ }
+ }
+
+ QString s3 = string;
+ s3.remove( before, cs );
+ QTEST( s3, "result" );
+
+ QString s4 = string;
+ s4.replace( QRegExp(QRegExp::escape(before), cs), after );
+ QTEST( s4, "result" );
+
+ QString s5 = string;
+ s5.replace( QRegExp(before, cs, QRegExp::FixedString), after );
+ QTEST( s5, "result" );
+ } else {
+ QCOMPARE( 0, 0 ); // shut QtTest
+ }
+}
+
+void tst_QString::remove_regexp()
+{
+ QFETCH( QString, string );
+ QFETCH( QString, regexp );
+ QFETCH( QString, after );
+
+ if ( after.length() == 0 ) {
+ string.remove( QRegExp(regexp) );
+ QTEST( string, "result" );
+ } else {
+ QCOMPARE( 0, 0 ); // shut QtTest
+ }
+}
+
+void tst_QString::toNum()
+{
+#if defined (Q_WS_WIN) && defined (Q_CC_MSVC)
+#define TEST_TO_INT(num, func) \
+ a = #num; \
+ QVERIFY2(a.func(&ok) == num ## i64 && ok, "Failed: num=" #num ", func=" #func);
+#else
+#define TEST_TO_INT(num, func) \
+ a = #num; \
+ QVERIFY2(a.func(&ok) == num ## LL && ok, "Failed: num=" #num ", func=" #func);
+#endif
+
+ QString a;
+ bool ok = false;
+
+ TEST_TO_INT(0, toInt)
+ TEST_TO_INT(-1, toInt)
+ TEST_TO_INT(1, toInt)
+ TEST_TO_INT(2147483647, toInt)
+ TEST_TO_INT(-2147483648, toInt)
+
+ TEST_TO_INT(0, toShort)
+ TEST_TO_INT(-1, toShort)
+ TEST_TO_INT(1, toShort)
+ TEST_TO_INT(32767, toShort)
+ TEST_TO_INT(-32768, toShort)
+
+ TEST_TO_INT(0, toLong)
+ TEST_TO_INT(-1, toLong)
+ TEST_TO_INT(1, toLong)
+ TEST_TO_INT(2147483647, toLong)
+ TEST_TO_INT(-2147483648, toLong)
+ TEST_TO_INT(0, toLongLong)
+ TEST_TO_INT(-1, toLongLong)
+ TEST_TO_INT(1, toLongLong)
+ TEST_TO_INT(9223372036854775807, toLongLong)
+ TEST_TO_INT(-9223372036854775807, toLongLong)
+
+#undef TEST_TO_INT
+
+#if defined (Q_WS_WIN) && defined (Q_CC_MSVC)
+#define TEST_TO_UINT(num, func) \
+ a = #num; \
+ QVERIFY2(a.func(&ok) == num ## i64 && ok, "Failed: num=" #num ", func=" #func);
+#else
+#define TEST_TO_UINT(num, func) \
+ a = #num; \
+ QVERIFY2(a.func(&ok) == num ## ULL && ok, "Failed: num=" #num ", func=" #func);
+#endif
+
+ TEST_TO_UINT(0, toUInt)
+ TEST_TO_UINT(1, toUInt)
+ TEST_TO_UINT(4294967295, toUInt)
+
+ TEST_TO_UINT(0, toUShort)
+ TEST_TO_UINT(1, toUShort)
+ TEST_TO_UINT(65535, toUShort)
+
+ TEST_TO_UINT(0, toULong)
+ TEST_TO_UINT(1, toULong)
+ TEST_TO_UINT(4294967295, toULong)
+
+ TEST_TO_UINT(0, toULongLong)
+ TEST_TO_UINT(1, toULongLong)
+ TEST_TO_UINT(18446744073709551615, toULongLong)
+#undef TEST_TO_UINT
+
+
+#define TEST_BASE(str, base, num) \
+ a = str; \
+ QVERIFY2(a.toInt(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toInt"); \
+ QVERIFY2(a.toUInt(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toUInt"); \
+ QVERIFY2(a.toShort(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toShort"); \
+ QVERIFY2(a.toUShort(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toUShort"); \
+ QVERIFY2(a.toLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLong"); \
+ QVERIFY2(a.toULong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toULong"); \
+ QVERIFY2(a.toLongLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLongLong"); \
+ QVERIFY2(a.toULongLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toULongLong");
+
+ TEST_BASE("FF", 16, 255)
+ TEST_BASE("0xFF", 16, 255)
+ TEST_BASE("77", 8, 63)
+ TEST_BASE("077", 8, 63)
+
+ TEST_BASE("0xFF", 0, 255)
+ TEST_BASE("077", 0, 63)
+ TEST_BASE("255", 0, 255)
+
+ TEST_BASE(" FF", 16, 255)
+ TEST_BASE(" 0xFF", 16, 255)
+ TEST_BASE(" 77", 8, 63)
+ TEST_BASE(" 077", 8, 63)
+
+ TEST_BASE(" 0xFF", 0, 255)
+ TEST_BASE(" 077", 0, 63)
+ TEST_BASE(" 255", 0, 255)
+
+ TEST_BASE("\tFF\t", 16, 255)
+ TEST_BASE("\t0xFF ", 16, 255)
+ TEST_BASE(" 77 ", 8, 63)
+ TEST_BASE("77 ", 8, 63)
+
+#undef TEST_BASE
+
+#define TEST_NEG_BASE(str, base, num) \
+ a = str; \
+ QVERIFY2(a.toInt(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toInt"); \
+ QVERIFY2(a.toShort(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toShort"); \
+ QVERIFY2(a.toLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLong"); \
+ QVERIFY2(a.toLongLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLongLong");
+
+ TEST_NEG_BASE("-FE", 16, -254)
+ TEST_NEG_BASE("-0xFE", 16, -254)
+ TEST_NEG_BASE("-77", 8, -63)
+ TEST_NEG_BASE("-077", 8, -63)
+
+ TEST_NEG_BASE("-0xFE", 0, -254)
+ TEST_NEG_BASE("-077", 0, -63)
+ TEST_NEG_BASE("-254", 0, -254)
+
+#undef TEST_NEG_BASE
+
+#define TEST_DOUBLE(num, str) \
+ a = str; \
+ QCOMPARE(a.toDouble(&ok), num); \
+ QVERIFY(ok);
+
+ TEST_DOUBLE(1.2345, "1.2345")
+ TEST_DOUBLE(12.345, "1.2345e+01")
+ TEST_DOUBLE(12.345, "1.2345E+01")
+ TEST_DOUBLE(12345.6, "12345.6")
+
+#undef TEST_DOUBLE
+
+
+#define TEST_BAD(str, func) \
+ a = str; \
+ a.func(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str " func=" #func);
+
+ TEST_BAD("32768", toShort)
+ TEST_BAD("-32769", toShort)
+ TEST_BAD("65536", toUShort)
+ TEST_BAD("2147483648", toInt)
+ TEST_BAD("-2147483649", toInt)
+ TEST_BAD("4294967296", toUInt)
+ if (sizeof(long) == 4) {
+ TEST_BAD("2147483648", toLong)
+ TEST_BAD("-2147483649", toLong)
+ TEST_BAD("4294967296", toULong)
+ }
+ TEST_BAD("9223372036854775808", toLongLong)
+ TEST_BAD("-9223372036854775809", toLongLong)
+ TEST_BAD("18446744073709551616", toULongLong)
+ TEST_BAD("-1", toUShort)
+ TEST_BAD("-1", toUInt)
+ TEST_BAD("-1", toULong)
+ TEST_BAD("-1", toULongLong)
+#undef TEST_BAD
+
+#define TEST_BAD_ALL(str) \
+ a = str; \
+ a.toShort(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toUShort(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toInt(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toUInt(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toLong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toULong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toLongLong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toULongLong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toFloat(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toDouble(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str);
+
+ TEST_BAD_ALL((const char*)0);
+ TEST_BAD_ALL("");
+ TEST_BAD_ALL(" ");
+ TEST_BAD_ALL(".");
+ TEST_BAD_ALL("-");
+ TEST_BAD_ALL("hello");
+ TEST_BAD_ALL("1.2.3");
+ TEST_BAD_ALL("0x0x0x");
+ TEST_BAD_ALL("123-^~<");
+ TEST_BAD_ALL("123ThisIsNotANumber");
+
+#undef TEST_BAD_ALL
+
+ a = "FF";
+ a.toULongLong(&ok, 10);
+ QVERIFY(!ok);
+
+ a = "FF";
+ a.toULongLong(&ok, 0);
+ QVERIFY(!ok);
+
+#ifdef QT_NO_FPU
+ double d = 3.40282346638528e+38; // slightly off FLT_MAX when using hardfloats
+#else
+ double d = 3.4028234663852886e+38; // FLT_MAX
+#endif
+ QString::number(d, 'e', 17).toFloat(&ok);
+ QVERIFY(ok);
+ QString::number(d + 1e32, 'e', 17).toFloat(&ok);
+ QVERIFY(!ok);
+ QString::number(-d, 'e', 17).toFloat(&ok);
+ QVERIFY(ok);
+ QString::number(-d - 1e32, 'e', 17).toFloat(&ok);
+ QVERIFY(!ok);
+ QString::number(d + 1e32, 'e', 17).toDouble(&ok);
+ QVERIFY(ok);
+ QString::number(-d - 1e32, 'e', 17).toDouble(&ok);
+ QVERIFY(ok);
+}
+
+void tst_QString::toUShort()
+{
+ QString a;
+ bool ok;
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a="";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a="COMPARE";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a="123";
+ QCOMPARE(a.toUShort(),(ushort)123);
+ QCOMPARE(a.toUShort(&ok),(ushort)123);
+ QVERIFY(ok);
+
+ a="123A";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a="1234567";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "aaa123aaa";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "aaa123";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "123aaa";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "32767";
+ QCOMPARE(a.toUShort(),(ushort)32767);
+ QCOMPARE(a.toUShort(&ok),(ushort)32767);
+ QVERIFY(ok);
+
+ a = "-32767";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "65535";
+ QCOMPARE(a.toUShort(),(ushort)65535);
+ QCOMPARE(a.toUShort(&ok),(ushort)65535);
+ QVERIFY(ok);
+
+ if (sizeof(short) == 2) {
+ a = "65536";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "123456";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+ }
+}
+
+void tst_QString::toShort()
+{
+ QString a;
+ bool ok;
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a="";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a="COMPARE";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a="123";
+ QCOMPARE(a.toShort(),(short)123);
+ QCOMPARE(a.toShort(&ok),(short)123);
+ QVERIFY(ok);
+
+ a="123A";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a="1234567";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a = "aaa123aaa";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a = "aaa123";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a = "123aaa";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a = "32767";
+ QCOMPARE(a.toShort(),(short)32767);
+ QCOMPARE(a.toShort(&ok),(short)32767);
+ QVERIFY(ok);
+
+ a = "-32767";
+ QCOMPARE(a.toShort(),(short)-32767);
+ QCOMPARE(a.toShort(&ok),(short)-32767);
+ QVERIFY(ok);
+
+ a = "-32768";
+ QCOMPARE(a.toShort(),(short)-32768);
+ QCOMPARE(a.toShort(&ok),(short)-32768);
+ QVERIFY(ok);
+
+ if (sizeof(short) == 2) {
+ a = "32768";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a = "-32769";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+ }
+}
+
+void tst_QString::toInt()
+{
+ QString a;
+ bool ok;
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a="COMPARE";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a="123";
+ QCOMPARE(a.toInt(),123);
+ QCOMPARE(a.toInt(&ok),123);
+ QVERIFY(ok);
+
+ a="123A";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a="1234567";
+ QCOMPARE(a.toInt(),1234567);
+ QCOMPARE(a.toInt(&ok),1234567);
+ QVERIFY(ok);
+
+ a="12345678901234";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a="3234567890";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "aaa12345aaa";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "aaa12345";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "12345aaa";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "2147483647"; // 2**31 - 1
+ QCOMPARE(a.toInt(),2147483647);
+ QCOMPARE(a.toInt(&ok),2147483647);
+ QVERIFY(ok);
+
+ if (sizeof(int) == 4) {
+ a = "-2147483647"; // -(2**31 - 1)
+ QCOMPARE(a.toInt(),-2147483647);
+ QCOMPARE(a.toInt(&ok),-2147483647);
+ QVERIFY(ok);
+
+ a = "2147483648"; // 2**31
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "-2147483648"; // -2**31
+ QCOMPARE(a.toInt(),-2147483647 - 1);
+ QCOMPARE(a.toInt(&ok),-2147483647 - 1);
+ QVERIFY(ok);
+
+ a = "2147483649"; // 2**31 + 1
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+ }
+}
+
+void tst_QString::toUInt()
+{
+ bool ok;
+ QString a;
+ a="3234567890";
+ QCOMPARE(a.toUInt(&ok),3234567890u);
+ QVERIFY(ok);
+
+ a = "-50";
+ QCOMPARE(a.toUInt(),0u);
+ QCOMPARE(a.toUInt(&ok),0u);
+ QVERIFY(!ok);
+
+ a = "4294967295"; // 2**32 - 1
+ QCOMPARE(a.toUInt(),4294967295u);
+ QCOMPARE(a.toUInt(&ok),4294967295u);
+ QVERIFY(ok);
+
+ if (sizeof(int) == 4) {
+ a = "4294967296"; // 2**32
+ QCOMPARE(a.toUInt(),0u);
+ QCOMPARE(a.toUInt(&ok),0u);
+ QVERIFY(!ok);
+ }
+}
+
+///////////////////////////// to*Long //////////////////////////////////////
+
+void tst_QString::toULong_data()
+{
+ QTest::addColumn<QString>("str" );
+ QTest::addColumn<int>("base" );
+ QTest::addColumn<ulong>("result" );
+ QTest::addColumn<bool>("ok" );
+
+ QTest::newRow( "default" ) << QString() << 10 << 0UL << false;
+ QTest::newRow( "empty" ) << QString("") << 10 << 0UL << false;
+ QTest::newRow( "ulong1" ) << QString("3234567890") << 10 << 3234567890UL << true;
+ QTest::newRow( "ulong2" ) << QString("fFFfFfFf") << 16 << 0xFFFFFFFFUL << true;
+}
+
+void tst_QString::toULong()
+{
+ QFETCH( QString, str );
+ QFETCH( int, base );
+ QFETCH( ulong, result );
+ QFETCH( bool, ok );
+
+ bool b;
+ QCOMPARE( str.toULong( 0, base ), result );
+ QCOMPARE( str.toULong( &b, base ), result );
+ QCOMPARE( b, ok );
+}
+
+void tst_QString::toLong_data()
+{
+ QTest::addColumn<QString>("str" );
+ QTest::addColumn<int>("base" );
+ QTest::addColumn<long>("result" );
+ QTest::addColumn<bool>("ok" );
+
+ QTest::newRow( "default" ) << QString() << 10 << 0L << false;
+ QTest::newRow( "empty" ) << QString("") << 10 << 0L << false;
+ QTest::newRow( "normal" ) << QString("7fFFfFFf") << 16 << 0x7fFFfFFfL << true;
+ QTest::newRow( "long_max" ) << QString("2147483647") << 10 << 2147483647L << true;
+ if (sizeof(long) == 4) {
+ QTest::newRow( "long_max+1" ) << QString("2147483648") << 10 << 0L << false;
+ QTest::newRow( "long_min-1" ) << QString("-80000001") << 16 << 0L << false;
+ }
+ QTest::newRow( "negative" ) << QString("-7fffffff") << 16 << -0x7fffffffL << true;
+// QTest::newRow( "long_min" ) << QString("-80000000") << 16 << 0x80000000uL << true;
+}
+
+void tst_QString::toLong()
+{
+ QFETCH( QString, str );
+ QFETCH( int, base );
+ QFETCH( long, result );
+ QFETCH( bool, ok );
+
+ bool b;
+ QCOMPARE( str.toLong( 0, base ), result );
+ QCOMPARE( str.toLong( &b, base ), result );
+ QCOMPARE( b, ok );
+}
+
+
+////////////////////////// to*LongLong //////////////////////////////////////
+
+void tst_QString::toULongLong()
+{
+ QString str;
+ bool ok;
+ str = "18446744073709551615"; // ULLONG_MAX
+ QCOMPARE( str.toULongLong( 0 ), Q_UINT64_C(18446744073709551615) );
+ QCOMPARE( str.toULongLong( &ok ), Q_UINT64_C(18446744073709551615) );
+ QVERIFY( ok );
+
+ str = "18446744073709551616"; // ULLONG_MAX + 1
+ QCOMPARE( str.toULongLong( 0 ), Q_UINT64_C(0) );
+ QCOMPARE( str.toULongLong( &ok ), Q_UINT64_C(0) );
+ QVERIFY( !ok );
+
+ str = "-150";
+ QCOMPARE( str.toULongLong( 0 ), Q_UINT64_C(0) );
+ QCOMPARE( str.toULongLong( &ok ), Q_UINT64_C(0) );
+ QVERIFY( !ok );
+}
+
+void tst_QString::toLongLong()
+{
+ QString str;
+ bool ok;
+
+ str = "9223372036854775807"; // LLONG_MAX
+ QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(9223372036854775807) );
+ QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(9223372036854775807) );
+ QVERIFY( ok );
+
+ str = "-9223372036854775808"; // LLONG_MIN
+ QCOMPARE( str.toLongLong( 0 ),
+ -Q_INT64_C(9223372036854775807) - Q_INT64_C(1) );
+ QCOMPARE( str.toLongLong( &ok ),
+ -Q_INT64_C(9223372036854775807) - Q_INT64_C(1) );
+ QVERIFY( ok );
+
+ str = "aaaa9223372036854775807aaaa";
+ QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(0) );
+ QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(0) );
+ QVERIFY( !ok );
+
+ str = "9223372036854775807aaaa";
+ QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(0) );
+ QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(0) );
+ QVERIFY( !ok );
+
+ str = "aaaa9223372036854775807";
+ QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(0) );
+ QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(0) );
+ QVERIFY( !ok );
+
+ static char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+ for (int i = 0; i < 36; ++i) {
+ for (int j = 0; j < 36; ++j) {
+ for (int k = 0; k < 36; ++k) {
+ QString str;
+ str += QChar(digits[i]);
+ str += QChar(digits[j]);
+ str += QChar(digits[k]);
+ qlonglong value = (((i * 36) + j) * 36) + k;
+ QVERIFY(str.toLongLong(0, 36) == value);
+ }
+ }
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////
+
+void tst_QString::toFloat()
+{
+ QString a;
+ bool ok;
+ a="0.000000000931322574615478515625";
+ QCOMPARE(a.toFloat(&ok),(float)(0.000000000931322574615478515625));
+ QVERIFY(ok);
+}
+
+void tst_QString::toDouble_data()
+{
+ QTest::addColumn<QString>("str" );
+ QTest::addColumn<double>("result" );
+ QTest::addColumn<bool>("result_ok" );
+
+ QTest::newRow( "ok00" ) << QString("0.000000000931322574615478515625") << 0.000000000931322574615478515625 << true;
+ QTest::newRow( "ok01" ) << QString(" 123.45") << 123.45 << true;
+
+ QTest::newRow( "ok02" ) << QString("0.1e10") << 0.1e10 << true;
+ QTest::newRow( "ok03" ) << QString("0.1e-10") << 0.1e-10 << true;
+
+ QTest::newRow( "ok04" ) << QString("1e10") << 1.0e10 << true;
+ QTest::newRow( "ok05" ) << QString("1e+10") << 1.0e10 << true;
+ QTest::newRow( "ok06" ) << QString("1e-10") << 1.0e-10 << true;
+
+ QTest::newRow( "ok07" ) << QString(" 1e10") << 1.0e10 << true;
+ QTest::newRow( "ok08" ) << QString(" 1e+10") << 1.0e10 << true;
+ QTest::newRow( "ok09" ) << QString(" 1e-10") << 1.0e-10 << true;
+
+ QTest::newRow( "ok10" ) << QString("1.") << 1.0 << true;
+ QTest::newRow( "ok11" ) << QString(".1") << 0.1 << true;
+
+ QTest::newRow( "wrong00" ) << QString("123.45 ") << 123.45 << true;
+ QTest::newRow( "wrong01" ) << QString(" 123.45 ") << 123.45 << true;
+
+ QTest::newRow( "wrong02" ) << QString("aa123.45aa") << 0.0 << false;
+ QTest::newRow( "wrong03" ) << QString("123.45aa") << 0.0 << false;
+ QTest::newRow( "wrong04" ) << QString("123erf") << 0.0 << false;
+
+ QTest::newRow( "wrong05" ) << QString("abc") << 0.0 << false;
+ QTest::newRow( "wrong06" ) << QString() << 0.0 << false;
+ QTest::newRow( "wrong07" ) << QString("") << 0.0 << false;
+}
+
+void tst_QString::toDouble()
+{
+ QFETCH( QString, str );
+ QFETCH( bool, result_ok );
+ bool ok;
+ double d = str.toDouble( &ok );
+ if ( result_ok ) {
+ QTEST( d, "result" );
+ QVERIFY( ok );
+ } else {
+ QVERIFY( !ok );
+ }
+}
+
+void tst_QString::setNum()
+{
+ QString a;
+ QCOMPARE(a.setNum(123),(QString)"123");
+ QCOMPARE(a.setNum(-123),(QString)"-123");
+ QCOMPARE(a.setNum(0x123,16),(QString)"123");
+ QCOMPARE(a.setNum((short)123),(QString)"123");
+ QCOMPARE(a.setNum(123L),(QString)"123");
+ QCOMPARE(a.setNum(123UL),(QString)"123");
+ QCOMPARE(a.setNum(2147483647L), QString("2147483647")); // 32 bit LONG_MAX
+ QCOMPARE(a.setNum(-2147483647L), QString("-2147483647")); // LONG_MIN + 1
+ QCOMPARE(a.setNum(-2147483647L-1L), QString("-2147483648")); // LONG_MIN
+ QCOMPARE(a.setNum(1.23), QString("1.23"));
+ QCOMPARE(a.setNum(1.234567), QString("1.23457"));
+#if defined(LONG_MAX) && defined(LLONG_MAX) && LONG_MAX == LLONG_MAX
+ // LONG_MAX and LONG_MIN on 64 bit systems
+ QCOMPARE(a.setNum(9223372036854775807L), QString("9223372036854775807"));
+ QCOMPARE(a.setNum(-9223372036854775807L-1L), QString("-9223372036854775808"));
+ QCOMPARE(a.setNum(18446744073709551615UL), QString("18446744073709551615"));
+#endif
+ QCOMPARE(a.setNum(Q_INT64_C(123)), QString("123"));
+ // 2^40 == 1099511627776
+ QCOMPARE(a.setNum(Q_INT64_C(-1099511627776)), QString("-1099511627776"));
+ QCOMPARE(a.setNum(Q_UINT64_C(1099511627776)), QString("1099511627776"));
+ QCOMPARE(a.setNum(Q_INT64_C(9223372036854775807)), // LLONG_MAX
+ QString("9223372036854775807"));
+ QCOMPARE(a.setNum(-Q_INT64_C(9223372036854775807) - Q_INT64_C(1)),
+ QString("-9223372036854775808"));
+ QCOMPARE(a.setNum(Q_UINT64_C(18446744073709551615)), // ULLONG_MAX
+ QString("18446744073709551615"));
+ QCOMPARE(a.setNum(0.000000000931322574615478515625),QString("9.31323e-10"));
+
+// QCOMPARE(a.setNum(0.000000000931322574615478515625,'g',30),(QString)"9.31322574615478515625e-010");
+// QCOMPARE(a.setNum(0.000000000931322574615478515625,'f',30),(QString)"0.00000000093132257461547852");
+}
+
+void tst_QString::startsWith()
+{
+ QString a;
+ a = "AB";
+ QVERIFY( a.startsWith("A") );
+ QVERIFY( a.startsWith("AB") );
+ QVERIFY( !a.startsWith("C") );
+ QVERIFY( !a.startsWith("ABCDEF") );
+ QVERIFY( a.startsWith("") );
+ QVERIFY( a.startsWith(QString::null) );
+ QVERIFY( a.startsWith('A') );
+ QVERIFY( a.startsWith(QLatin1Char('A')) );
+ QVERIFY( a.startsWith(QChar('A')) );
+ QVERIFY( !a.startsWith('C') );
+ QVERIFY( !a.startsWith(QChar()) );
+ QVERIFY( !a.startsWith(QLatin1Char(0)) );
+
+ QVERIFY( a.startsWith(QLatin1String("A")) );
+ QVERIFY( a.startsWith(QLatin1String("AB")) );
+ QVERIFY( !a.startsWith(QLatin1String("C")) );
+ QVERIFY( !a.startsWith(QLatin1String("ABCDEF")) );
+ QVERIFY( a.startsWith(QLatin1String("")) );
+ QVERIFY( a.startsWith(QLatin1String(0)) );
+
+ QVERIFY( a.startsWith("A", Qt::CaseSensitive) );
+ QVERIFY( a.startsWith("A", Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith("a", Qt::CaseSensitive) );
+ QVERIFY( a.startsWith("a", Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith("aB", Qt::CaseSensitive) );
+ QVERIFY( a.startsWith("aB", Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith("C", Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith("C", Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith("c", Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith("c", Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith("abcdef", Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith("", Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith(QString::null, Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith('a', Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith('A', Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith(QLatin1Char('a'), Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith(QChar('a'), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith('c', Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QChar(), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1Char(0), Qt::CaseInsensitive) );
+
+ QVERIFY( a.startsWith(QLatin1String("A"), Qt::CaseSensitive) );
+ QVERIFY( a.startsWith(QLatin1String("A"), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("a"), Qt::CaseSensitive) );
+ QVERIFY( a.startsWith(QLatin1String("a"), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("aB"), Qt::CaseSensitive) );
+ QVERIFY( a.startsWith(QLatin1String("aB"), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("C"), Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("C"), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("c"), Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("c"), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("abcdef"), Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith(QLatin1String(""), Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith(QLatin1String(0), Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith('A', Qt::CaseSensitive) );
+ QVERIFY( a.startsWith(QLatin1Char('A'), Qt::CaseSensitive) );
+ QVERIFY( a.startsWith(QChar('A'), Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith('a', Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith(QChar(), Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith(QLatin1Char(0), Qt::CaseSensitive) );
+
+#define TEST_REF_STARTS_WITH(string, yes) { CREATE_REF(string); QCOMPARE(a.startsWith(ref), yes); }
+
+ TEST_REF_STARTS_WITH("A", true);
+ TEST_REF_STARTS_WITH("AB", true);
+ TEST_REF_STARTS_WITH("C", false);
+ TEST_REF_STARTS_WITH("ABCDEF", false);
+#undef TEST_REF_STARTS_WITH
+
+ a = "";
+ QVERIFY( a.startsWith("") );
+ QVERIFY( a.startsWith(QString::null) );
+ QVERIFY( !a.startsWith("ABC") );
+
+ QVERIFY( a.startsWith(QLatin1String("")) );
+ QVERIFY( a.startsWith(QLatin1String(0)) );
+ QVERIFY( !a.startsWith(QLatin1String("ABC")) );
+
+ QVERIFY( !a.startsWith(QLatin1Char(0)) );
+ QVERIFY( !a.startsWith(QLatin1Char('x')) );
+ QVERIFY( !a.startsWith(QChar()) );
+
+ a = QString::null;
+ QVERIFY( !a.startsWith("") );
+ QVERIFY( a.startsWith(QString::null) );
+ QVERIFY( !a.startsWith("ABC") );
+
+ QVERIFY( !a.startsWith(QLatin1String("")) );
+ QVERIFY( a.startsWith(QLatin1String(0)) );
+ QVERIFY( !a.startsWith(QLatin1String("ABC")) );
+
+ QVERIFY( !a.startsWith(QLatin1Char(0)) );
+ QVERIFY( !a.startsWith(QLatin1Char('x')) );
+ QVERIFY( !a.startsWith(QChar()) );
+
+}
+
+void tst_QString::endsWith()
+{
+ QString a;
+ a = "AB";
+ QVERIFY( a.endsWith("B") );
+ QVERIFY( a.endsWith("AB") );
+ QVERIFY( !a.endsWith("C") );
+ QVERIFY( !a.endsWith("ABCDEF") );
+ QVERIFY( a.endsWith("") );
+ QVERIFY( a.endsWith(QString::null) );
+ QVERIFY( a.endsWith('B') );
+ QVERIFY( a.endsWith(QLatin1Char('B')) );
+ QVERIFY( a.endsWith(QChar('B')) );
+ QVERIFY( !a.endsWith('C') );
+ QVERIFY( !a.endsWith(QChar()) );
+ QVERIFY( !a.endsWith(QLatin1Char(0)) );
+
+ QVERIFY( a.endsWith(QLatin1String("B")) );
+ QVERIFY( a.endsWith(QLatin1String("AB")) );
+ QVERIFY( !a.endsWith(QLatin1String("C")) );
+ QVERIFY( !a.endsWith(QLatin1String("ABCDEF")) );
+ QVERIFY( a.endsWith(QLatin1String("")) );
+ QVERIFY( a.endsWith(QLatin1String(0)) );
+
+ QVERIFY( a.endsWith("B", Qt::CaseSensitive) );
+ QVERIFY( a.endsWith("B", Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith("b", Qt::CaseSensitive) );
+ QVERIFY( a.endsWith("b", Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith("aB", Qt::CaseSensitive) );
+ QVERIFY( a.endsWith("aB", Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith("C", Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith("C", Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith("c", Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith("c", Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith("abcdef", Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith("", Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith(QString::null, Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith('b', Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith('B', Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith(QLatin1Char('b'), Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith(QChar('b'), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith('c', Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QChar(), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1Char(0), Qt::CaseInsensitive) );
+
+ QVERIFY( a.endsWith(QLatin1String("B"), Qt::CaseSensitive) );
+ QVERIFY( a.endsWith(QLatin1String("B"), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("b"), Qt::CaseSensitive) );
+ QVERIFY( a.endsWith(QLatin1String("b"), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("aB"), Qt::CaseSensitive) );
+ QVERIFY( a.endsWith(QLatin1String("aB"), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("C"), Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("C"), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("c"), Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("c"), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("abcdef"), Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith(QLatin1String(""), Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith(QLatin1String(0), Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith('B', Qt::CaseSensitive) );
+ QVERIFY( a.endsWith(QLatin1Char('B'), Qt::CaseSensitive) );
+ QVERIFY( a.endsWith(QChar('B'), Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith('b', Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith(QChar(), Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith(QLatin1Char(0), Qt::CaseSensitive) );
+
+
+#define TEST_REF_ENDS_WITH(string, yes) { CREATE_REF(string); QCOMPARE(a.endsWith(ref), yes); }
+ TEST_REF_ENDS_WITH(QLatin1String("B"), true);
+ TEST_REF_ENDS_WITH(QLatin1String("AB"), true);
+ TEST_REF_ENDS_WITH(QLatin1String("C"), false);
+ TEST_REF_ENDS_WITH(QLatin1String("ABCDEF"), false);
+ TEST_REF_ENDS_WITH(QLatin1String(""), true);
+ TEST_REF_ENDS_WITH(QLatin1String(0), true);
+
+#undef TEST_REF_STARTS_WITH
+
+ a = "";
+ QVERIFY( a.endsWith("") );
+ QVERIFY( a.endsWith(QString::null) );
+ QVERIFY( !a.endsWith("ABC") );
+ QVERIFY( !a.endsWith(QLatin1Char(0)) );
+ QVERIFY( !a.endsWith(QLatin1Char('x')) );
+ QVERIFY( !a.endsWith(QChar()) );
+
+ QVERIFY( a.endsWith(QLatin1String("")) );
+ QVERIFY( a.endsWith(QLatin1String(0)) );
+ QVERIFY( !a.endsWith(QLatin1String("ABC")) );
+
+ a = QString::null;
+ QVERIFY( !a.endsWith("") );
+ QVERIFY( a.endsWith(QString::null) );
+ QVERIFY( !a.endsWith("ABC") );
+
+ QVERIFY( !a.endsWith(QLatin1String("")) );
+ QVERIFY( a.endsWith(QLatin1String(0)) );
+ QVERIFY( !a.endsWith(QLatin1String("ABC")) );
+
+ QVERIFY( !a.endsWith(QLatin1Char(0)) );
+ QVERIFY( !a.endsWith(QLatin1Char('x')) );
+ QVERIFY( !a.endsWith(QChar()) );
+}
+
+void tst_QString::check_QDataStream()
+{
+ QString a;
+ QByteArray ar;
+ {
+ QDataStream out(&ar,QIODevice::WriteOnly);
+ out << QString("COMPARE Text");
+ }
+ {
+ QDataStream in(&ar,QIODevice::ReadOnly);
+ in >> a;
+ QCOMPARE(a,(QString)"COMPARE Text");
+ }
+}
+
+void tst_QString::check_QTextStream()
+{
+ QString a;
+ QByteArray ar;
+ {
+ QTextStream out(&ar,QIODevice::WriteOnly);
+ out << QString("This is COMPARE Text");
+ }
+ {
+ QTextStream in(&ar,QIODevice::ReadOnly);
+ in >> a;
+ QCOMPARE(a,(QString)"This");
+ }
+}
+
+void tst_QString::check_QTextIOStream()
+{
+ QString a;
+ {
+ a="";
+ QTextStream ts(&a);
+ ts << "pi \261= " << 3.125;
+ QCOMPARE(a,(QString)"pi \261= 3.125");
+ }
+ {
+ a="123 456";
+ int x,y;
+ QTextStream(&a) >> x >> y;
+ QCOMPARE(x,123);
+ QCOMPARE(y,456);
+ }
+}
+
+void tst_QString::fromRawData()
+{
+ const QChar ptr[] = { 0x1234, 0x0000 };
+ QString cstr = QString::fromRawData(ptr, 1);
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() == ptr);
+ QVERIFY(cstr == QString(ptr, 1));
+ cstr.squeeze();
+ QVERIFY(cstr.constData() == ptr);
+ cstr.detach();
+ QVERIFY(cstr.size() == 1);
+ QVERIFY(cstr.capacity() == 1);
+ QVERIFY(cstr.constData() != ptr);
+ QVERIFY(cstr.constData()[0] == QChar(0x1234));
+ QVERIFY(cstr.constData()[1] == QChar(0x0000));
+}
+
+void tst_QString::setRawData()
+{
+ const QChar ptr[] = { 0x1234, 0x0000 };
+ const QChar ptr2[] = { 0x4321, 0x0000 };
+ QString cstr;
+
+ // This just tests the fromRawData() fallback
+ QVERIFY(!cstr.isDetached());
+ cstr.setRawData(ptr, 1);
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() == ptr);
+ QVERIFY(cstr == QString(ptr, 1));
+
+ // This actually tests the recycling of the shared data object
+ QString::DataPtr csd = cstr.data_ptr();
+ cstr.setRawData(ptr2, 1);
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() == ptr2);
+ QVERIFY(cstr == QString(ptr2, 1));
+ QVERIFY(cstr.data_ptr() == csd);
+
+ // This tests the discarding of the shared data object
+ cstr = "foo";
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() != ptr2);
+
+ // Another test of the fallback
+ csd = cstr.data_ptr();
+ cstr.setRawData(ptr2, 1);
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() == ptr2);
+ QVERIFY(cstr == QString(ptr2, 1));
+ QVERIFY(cstr.data_ptr() != csd);
+}
+
+void tst_QString::fromStdString()
+{
+#ifdef Q_CC_HPACC
+ QSKIP("This test crashes on HP-UX with aCC", SkipSingle);
+#endif
+#if !defined(QT_NO_STL)
+ std::string stroustrup = "foo";
+ QString eng = QString::fromStdString( stroustrup );
+ QCOMPARE( eng, QString("foo") );
+ const char cnull[] = "Embedded\0null\0character!";
+ std::string stdnull( cnull, sizeof(cnull)-1 );
+ QString qtnull = QString::fromStdString( stdnull );
+ QCOMPARE( qtnull.size(), int(stdnull.size()) );
+#endif
+}
+
+void tst_QString::toStdString()
+{
+#ifdef Q_CC_HPACC
+ QSKIP("This test crashes on HP-UX with aCC", SkipSingle);
+#endif
+#if !defined(QT_NO_STL)
+ QString nord = "foo";
+ std::string stroustrup1 = nord.toStdString();
+ QVERIFY( qstrcmp(stroustrup1.c_str(), "foo") == 0 );
+ // For now, most QString constructors are also broken with respect
+ // to embedded null characters, had to find one that works...
+ const QChar qcnull[] = {
+ 'E', 'm', 'b', 'e', 'd', 'd', 'e', 'd', '\0',
+ 'n', 'u', 'l', 'l', '\0',
+ 'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r', '!'
+ };
+ QString qtnull( qcnull, sizeof(qcnull)/sizeof(QChar) );
+ std::string stdnull = qtnull.toStdString();
+ QCOMPARE( int(stdnull.size()), qtnull.size() );
+#endif
+}
+
+void tst_QString::utf8()
+{
+ QFETCH( QByteArray, utf8 );
+ QFETCH( QString, res );
+
+ QCOMPARE( utf8, QByteArray(res.toUtf8()) );
+}
+
+void tst_QString::stringRef_utf8_data()
+{
+ utf8_data();
+}
+
+void tst_QString::stringRef_utf8()
+{
+ QFETCH( QByteArray, utf8 );
+ QFETCH( QString, res );
+
+ QStringRef ref(&res, 0, res.length());
+ QCOMPARE( utf8, QByteArray(ref.toUtf8()) );
+}
+
+// copied to tst_QTextCodec::utf8Codec_data()
+void tst_QString::fromUtf8_data()
+{
+ QTest::addColumn<QByteArray>("utf8");
+ QTest::addColumn<QString>("res");
+ QTest::addColumn<int>("len");
+ QString str;
+
+ QTest::newRow("str0") << QByteArray("abcdefgh") << QString("abcdefgh") << -1;
+ QTest::newRow("str0-len") << QByteArray("abcdefgh") << QString("abc") << 3;
+ QTest::newRow("str1") << QByteArray("\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205") << QString("\366\344\374\326\304\334\370\346\345\330\306\305") << -1;
+ QTest::newRow("str1-len") << QByteArray("\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205") << QString("\366\344\374\326\304") << 10;
+
+ str += QChar(0x05e9);
+ str += QChar(0x05d3);
+ str += QChar(0x05d2);
+ QTest::newRow("str2") << QByteArray("\327\251\327\223\327\222") << str << -1;
+
+ str = QChar(0x05e9);
+ QTest::newRow("str2-len") << QByteArray("\327\251\327\223\327\222") << str << 2;
+
+ str = QChar(0x20ac);
+ str += " some text";
+ QTest::newRow("str3") << QByteArray("\342\202\254 some text") << str << -1;
+
+ str = QChar(0x20ac);
+ str += " some ";
+ QTest::newRow("str3-len") << QByteArray("\342\202\254 some text") << str << 9;
+
+ str = "hello";
+ str += QChar::ReplacementCharacter;
+ str += QChar(0x68);
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += QChar(0x61);
+ str += QChar::ReplacementCharacter;
+ QTest::newRow("invalid utf8") << QByteArray("hello\344h\344\344\366\344a\304") << str << -1;
+ QTest::newRow("invalid utf8-len") << QByteArray("hello\344h\344\344\366\344a\304") << QString("hello") << 5;
+
+ str = "Prohl";
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += "e";
+ str += QChar::ReplacementCharacter;
+ str += " plugin";
+ str += QChar::ReplacementCharacter;
+ str += " Netscape";
+
+ QTest::newRow("task28417") << QByteArray("Prohl\355\276e\350 plugin\371 Netscape") << str << -1;
+ QTest::newRow("task28417-len") << QByteArray("Prohl\355\276e\350 plugin\371 Netscape") << QString("") << 0;
+
+ QTest::newRow("null-1") << QByteArray() << QString() << -1;
+ QTest::newRow("null0") << QByteArray() << QString() << 0;
+ QTest::newRow("null5") << QByteArray() << QString() << 5;
+ QTest::newRow("empty-1") << QByteArray("\0abcd", 5) << QString() << -1;
+ QTest::newRow("empty0") << QByteArray() << QString() << 0;
+ QTest::newRow("empty5") << QByteArray("\0abcd", 5) << QString::fromAscii("\0abcd", 5) << 5;
+ QTest::newRow("other-1") << QByteArray("ab\0cd", 5) << QString::fromAscii("ab") << -1;
+ QTest::newRow("other5") << QByteArray("ab\0cd", 5) << QString::fromAscii("ab\0cd", 5) << 5;
+
+ str = "Old Italic: ";
+ str += QChar(0xd800);
+ str += QChar(0xdf00);
+ str += QChar(0xd800);
+ str += QChar(0xdf01);
+ str += QChar(0xd800);
+ str += QChar(0xdf02);
+ str += QChar(0xd800);
+ str += QChar(0xdf03);
+ str += QChar(0xd800);
+ str += QChar(0xdf04);
+ QTest::newRow("surrogate") << QByteArray("Old Italic: \360\220\214\200\360\220\214\201\360\220\214\202\360\220\214\203\360\220\214\204") << str << -1;
+
+ QTest::newRow("surrogate-len") << QByteArray("Old Italic: \360\220\214\200\360\220\214\201\360\220\214\202\360\220\214\203\360\220\214\204") << str.left(16) << 20;
+
+}
+
+void tst_QString::fromUtf8()
+{
+ QFETCH(QByteArray, utf8);
+ QFETCH(QString, res);
+ QFETCH(int, len);
+
+ QCOMPARE(QString::fromUtf8(utf8.isNull() ? 0 : utf8.data(), len), res);
+}
+
+void tst_QString::nullFromUtf8()
+{
+ QString a;
+ a = QString::fromUtf8(0);
+ QVERIFY(a.isNull());
+ QVERIFY(a.isEmpty());
+ a = QString::fromUtf8("");
+ QVERIFY(!a.isNull());
+ QVERIFY(a.isEmpty());
+}
+
+void tst_QString::fromLocal8Bit_data()
+{
+ QTest::addColumn<QByteArray>("local8Bit");
+ QTest::addColumn<int>("len");
+ QTest::addColumn<QString>("result");
+
+ //QTest::newRow("nullString") << QByteArray() << -1 << QString();
+ //QTest::newRow("emptyString") << QByteArray("") << -1 << QString("");
+ //QTest::newRow("string") << QByteArray("test") << -1 << QString("test");
+ //QTest::newRow("stringlen0") << QByteArray("test") << 0 << QString("");
+ //QTest::newRow("stringlen3") << QByteArray("test") << 3 << QString("tes");
+ QTest::newRow("stringlen99") << QByteArray("test\0foo", 8) << 8 << QString::fromLatin1("test\0foo", 8);
+
+ QByteArray longQByteArray;
+ QString longQString;
+
+ for (int l=0;l<111;l++) {
+ longQByteArray = longQByteArray + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+ longQString += "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+ }
+
+ //QTest::newRow("longString") << longQByteArray << -1 << longQString;
+ //QTest::newRow("longStringlen0") << longQByteArray << 0 << QString("");
+ //QTest::newRow("longStringlen3") << longQByteArray << 3 << QString("aaa");
+ //QTest::newRow("someNonAlphaChars") << QByteArray("d:/this/is/a/test.h") << -1 << QString("d:/this/is/a/test.h");
+
+ //QTest::newRow("null-1") << QByteArray() << -1 << QString();
+ //QTest::newRow("null0") << QByteArray() << 0 << QString();
+ //QTest::newRow("null5") << QByteArray() << 5 << QString();
+ //QTest::newRow("empty-1") << QByteArray("\0abcd", 5) << -1 << QString();
+ //QTest::newRow("empty0") << QByteArray() << 0 << QString();
+ //QTest::newRow("empty5") << QByteArray("\0abcd", 5) << 5 << QString::fromAscii("\0abcd", 5);
+ //QTest::newRow("other-1") << QByteArray("ab\0cd", 5) << -1 << QString::fromAscii("ab");
+ //QTest::newRow("other5") << QByteArray("ab\0cd", 5) << 5 << QString::fromAscii("ab\0cd", 5);
+}
+
+void tst_QString::fromLocal8Bit()
+{
+ QFETCH(QByteArray, local8Bit);
+ QFETCH(int, len);
+ QFETCH(QString, result);
+
+ QCOMPARE(QString::fromLocal8Bit(local8Bit.isNull() ? 0 : local8Bit.data(), len).length(),
+ result.length());
+ QCOMPARE(QString::fromLocal8Bit(local8Bit.isNull() ? 0 : local8Bit.data(), len), result);
+}
+
+void tst_QString::local8Bit_data()
+{
+ QTest::addColumn<QString>("local8Bit");
+ QTest::addColumn<QByteArray>("result");
+
+/*
+ QString::local8Bit() called on a null QString returns an _empty_
+ QByteArray.
+*/
+ QTest::newRow("nullString") << QString() << QByteArray("");
+ QTest::newRow("emptyString") << QString("") << QByteArray("");
+ QTest::newRow("string") << QString("test") << QByteArray("test");
+
+ QByteArray longQByteArray;
+ QString longQString;
+
+ for (int l=0;l<111;l++) {
+ longQByteArray = longQByteArray + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+ longQString += "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+ }
+
+ QTest::newRow("longString") << longQString << longQByteArray;
+ QTest::newRow("someNonAlphaChars") << QString("d:/this/is/a/test.h") << QByteArray("d:/this/is/a/test.h");
+}
+
+void tst_QString::local8Bit()
+{
+ QFETCH(QString, local8Bit);
+ QFETCH(QByteArray, result);
+
+ QCOMPARE(local8Bit.toLocal8Bit(), QByteArray(result));
+}
+
+void tst_QString::stringRef_local8Bit_data()
+{
+ local8Bit_data();
+}
+
+void tst_QString::stringRef_local8Bit()
+{
+ QFETCH(QString, local8Bit);
+ QFETCH(QByteArray, result);
+
+ QStringRef ref(&local8Bit, 0, local8Bit.length());
+ QCOMPARE(ref.toLocal8Bit(), QByteArray(result));
+}
+
+void tst_QString::fromLatin1Roundtrip_data()
+{
+ QTest::addColumn<QByteArray>("latin1");
+ QTest::addColumn<QString>("unicode");
+
+ QTest::newRow("null") << QByteArray() << QString();
+ QTest::newRow("empty") << QByteArray("") << "";
+
+ static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
+ QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5);
+ QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9);
+
+ static const ushort unicode3[] = { 'a', 0, 'z' };
+ QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3);
+
+ static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
+ QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3);
+}
+
+void tst_QString::fromLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicode);
+
+ // QtTest safety check:
+ QCOMPARE(latin1.isNull(), unicode.isNull());
+ QCOMPARE(latin1.isEmpty(), unicode.isEmpty());
+ QCOMPARE(latin1.length(), unicode.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicode += unicode;
+ }
+
+ // fromLatin1
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicode.length());
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicode);
+
+ // and back:
+ QCOMPARE(unicode.toLatin1().length(), latin1.length());
+ QCOMPARE(unicode.toLatin1(), latin1);
+}
+
+void tst_QString::toLatin1Roundtrip_data()
+{
+ QTest::addColumn<QByteArray>("latin1");
+ QTest::addColumn<QString>("unicodesrc");
+ QTest::addColumn<QString>("unicodedst");
+
+ QTest::newRow("null") << QByteArray() << QString() << QString();
+ QTest::newRow("empty") << QByteArray("") << "" << "";
+
+ static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
+ QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5) << QString::fromUtf16(unicode1, 5);
+ QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9) << QString::fromUtf16(unicode1, 9);
+
+ static const ushort unicode3[] = { 'a', 0, 'z' };
+ QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3) << QString::fromUtf16(unicode3, 3);
+
+ static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
+ QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3) << QString::fromUtf16(unicode4, 3);
+
+ static const ushort unicodeq[] = { '?', '?', '?', '?', '?' };
+ const QString questionmarks = QString::fromUtf16(unicodeq, 5);
+
+ static const ushort unicode5[] = { 0x100, 0x101, 0x17f, 0x7f00, 0x7f7f };
+ QTest::newRow("non-latin1a") << QByteArray("?????") << QString::fromUtf16(unicode5, 5) << questionmarks;
+
+ static const ushort unicode6[] = { 0x180, 0x1ff, 0x8001, 0x8080, 0xfffc };
+ QTest::newRow("non-latin1b") << QByteArray("?????") << QString::fromUtf16(unicode6, 5) << questionmarks;
+}
+
+void tst_QString::toLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicodesrc);
+ QFETCH(QString, unicodedst);
+
+ // QtTest safety check:
+ QCOMPARE(latin1.isNull(), unicodesrc.isNull());
+ QCOMPARE(latin1.isEmpty(), unicodesrc.isEmpty());
+ QCOMPARE(latin1.length(), unicodesrc.length());
+ QCOMPARE(latin1.isNull(), unicodedst.isNull());
+ QCOMPARE(latin1.isEmpty(), unicodedst.isEmpty());
+ QCOMPARE(latin1.length(), unicodedst.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicodesrc += unicodesrc;
+ unicodedst += unicodedst;
+ }
+
+ // toLatin1
+ QCOMPARE(unicodesrc.toLatin1().length(), latin1.length());
+ QCOMPARE(unicodesrc.toLatin1(), latin1);
+
+ // and back:
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicodedst.length());
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicodedst);
+}
+
+void tst_QString::stringRef_toLatin1Roundtrip_data()
+{
+ toLatin1Roundtrip_data();
+}
+
+void tst_QString::stringRef_toLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicodesrc);
+ QFETCH(QString, unicodedst);
+
+ // QtTest safety check:
+ QCOMPARE(latin1.isNull(), unicodesrc.isNull());
+ QCOMPARE(latin1.isEmpty(), unicodesrc.isEmpty());
+ QCOMPARE(latin1.length(), unicodesrc.length());
+ QCOMPARE(latin1.isNull(), unicodedst.isNull());
+ QCOMPARE(latin1.isEmpty(), unicodedst.isEmpty());
+ QCOMPARE(latin1.length(), unicodedst.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicodesrc += unicodesrc;
+ unicodedst += unicodedst;
+ }
+
+ // toLatin1
+ QStringRef src(&unicodesrc, 0, unicodesrc.length());
+ QCOMPARE(src.toLatin1().length(), latin1.length());
+ QCOMPARE(src.toLatin1(), latin1);
+}
+
+void tst_QString::fromLatin1()
+{
+ QString a;
+ a = QString::fromLatin1( 0 );
+ QVERIFY( a.isNull() );
+ QVERIFY( a.isEmpty() );
+ a = QString::fromLatin1( "" );
+ QVERIFY( !a.isNull() );
+ QVERIFY( a.isEmpty() );
+
+ a = QString::fromLatin1(0, 0);
+ QVERIFY(a.isNull());
+ a = QString::fromLatin1(0, 5);
+ QVERIFY(a.isNull());
+ a = QString::fromLatin1("\0abcd", 0);
+ QVERIFY(!a.isNull());
+ QVERIFY(a.isEmpty());
+ a = QString::fromLatin1("\0abcd", 5);
+ QVERIFY(a.size() == 5);
+}
+
+void tst_QString::fromAscii()
+{
+ QString a;
+ a = QString::fromAscii( 0 );
+ QVERIFY( a.isNull() );
+ QVERIFY( a.isEmpty() );
+ a = QString::fromAscii( "" );
+ QVERIFY( !a.isNull() );
+ QVERIFY( a.isEmpty() );
+
+ a = QString::fromAscii(0, 0);
+ QVERIFY(a.isNull());
+ a = QString::fromAscii(0, 5);
+ QVERIFY(a.isNull());
+ a = QString::fromAscii("\0abcd", 0);
+ QVERIFY(!a.isNull());
+ QVERIFY(a.isEmpty());
+ a = QString::fromAscii("\0abcd", 5);
+ QVERIFY(a.size() == 5);
+}
+
+void tst_QString::arg()
+{
+/*
+ Warning: If any of these test fails, the warning given by QtTest
+ is all messed up, because QtTest itself uses QString::arg().
+*/
+
+ QLocale::setDefault(QString("de_DE"));
+
+ QString s4( "[%0]" );
+ QString s5( "[%1]" );
+ QString s6( "[%3]" );
+ QString s7( "[%9]" );
+ QString s8( "[%0 %1]" );
+ QString s9( "[%0 %3]" );
+ QString s10( "[%1 %2 %3]" );
+ QString s11( "[%9 %3 %0]" );
+ QString s12( "[%9 %1 %3 %9 %0 %8]" );
+ QString s13( "%1% %x%c%2 %d%2-%" );
+ QString s14( "%1%2%3" );
+
+ QCOMPARE( s4.arg("foo"), QString("[foo]") );
+ QCOMPARE( s5.arg("foo"), QString("[foo]") );
+ QCOMPARE( s6.arg("foo"), QString("[foo]") );
+ QCOMPARE( s7.arg("foo"), QString("[foo]") );
+ QCOMPARE( s8.arg("foo"), QString("[foo %1]") );
+ QCOMPARE( s8.arg("foo").arg("bar"), QString("[foo bar]") );
+ QCOMPARE( s8.arg("foo", "bar"), QString("[foo bar]") );
+ QCOMPARE( s9.arg("foo"), QString("[foo %3]") );
+ QCOMPARE( s9.arg("foo").arg("bar"), QString("[foo bar]") );
+ QCOMPARE( s9.arg("foo", "bar"), QString("[foo bar]") );
+ QCOMPARE( s10.arg("foo"), QString("[foo %2 %3]") );
+ QCOMPARE( s10.arg("foo").arg("bar"), QString("[foo bar %3]") );
+ QCOMPARE( s10.arg("foo", "bar"), QString("[foo bar %3]") );
+ QCOMPARE( s10.arg("foo").arg("bar").arg("baz"), QString("[foo bar baz]") );
+ QCOMPARE( s10.arg("foo", "bar", "baz"), QString("[foo bar baz]") );
+ QCOMPARE( s11.arg("foo"), QString("[%9 %3 foo]") );
+ QCOMPARE( s11.arg("foo").arg("bar"), QString("[%9 bar foo]") );
+ QCOMPARE( s11.arg("foo", "bar"), QString("[%9 bar foo]") );
+ QCOMPARE( s11.arg("foo").arg("bar").arg("baz"), QString("[baz bar foo]") );
+ QCOMPARE( s11.arg("foo", "bar", "baz"), QString("[baz bar foo]") );
+ QCOMPARE( s12.arg("a").arg("b").arg("c").arg("d").arg("e"),
+ QString("[e b c e a d]") );
+ QCOMPARE( s12.arg("a", "b", "c", "d").arg("e"), QString("[e b c e a d]") );
+ QCOMPARE( s12.arg("a").arg("b", "c", "d", "e"), QString("[e b c e a d]") );
+ QCOMPARE( s13.arg("alpha").arg("beta"),
+ QString("alpha% %x%cbeta %dbeta-%") );
+ QCOMPARE( s13.arg("alpha", "beta"), QString("alpha% %x%cbeta %dbeta-%") );
+ QCOMPARE( s14.arg("a", "b", "c"), QString("abc") );
+ QCOMPARE( s8.arg("%1").arg("foo"), QString("[foo foo]") );
+ QCOMPARE( s8.arg("%1", "foo"), QString("[%1 foo]") );
+ QCOMPARE( s4.arg("foo", 2), QString("[foo]") );
+ QCOMPARE( s4.arg("foo", -2), QString("[foo]") );
+ QCOMPARE( s4.arg("foo", 10), QString("[ foo]") );
+ QCOMPARE( s4.arg("foo", -10), QString("[foo ]") );
+
+ QString firstName( "James" );
+ QString lastName( "Bond" );
+ QString fullName = QString( "My name is %2, %1 %2" )
+ .arg( firstName ).arg( lastName );
+ QCOMPARE( fullName, QString("My name is Bond, James Bond") );
+
+ // number overloads
+ QCOMPARE( s4.arg(0), QString("[0]") );
+ QCOMPARE( s4.arg(-1), QString("[-1]") );
+ QCOMPARE( s4.arg(4294967295UL), QString("[4294967295]") ); // ULONG_MAX 32
+ QCOMPARE( s4.arg(Q_INT64_C(9223372036854775807)), // LLONG_MAX
+ QString("[9223372036854775807]") );
+
+ QCOMPARE( QString().arg(0), QString() );
+ QCOMPARE( QString("").arg(0), QString("") );
+ QCOMPARE( QString(" ").arg(0), QString(" ") );
+ QCOMPARE( QString("%").arg(0), QString("%") );
+ QCOMPARE( QString("%%").arg(0), QString("%%") );
+ QCOMPARE( QString("%%%").arg(0), QString("%%%") );
+ QCOMPARE( QString("%%%1%%%2").arg("foo").arg("bar"), QString("%%foo%%bar") );
+
+ QCOMPARE( QString("%1").arg("hello", -10), QString("hello ") );
+ QCOMPARE( QString("%1").arg("hello", -5), QString("hello") );
+ QCOMPARE( QString("%1").arg("hello", -2), QString("hello") );
+ QCOMPARE( QString("%1").arg("hello", 0), QString("hello") );
+ QCOMPARE( QString("%1").arg("hello", 2), QString("hello") );
+ QCOMPARE( QString("%1").arg("hello", 5), QString("hello") );
+ QCOMPARE( QString("%1").arg("hello", 10), QString(" hello") );
+ QCOMPARE( QString("%1%1").arg("hello"), QString("hellohello") );
+ QCOMPARE( QString("%2%1").arg("hello"), QString("%2hello") );
+ QCOMPARE( QString("%1%1").arg(QString::null), QString("") );
+ QCOMPARE( QString("%2%1").arg(""), QString("%2") );
+
+ QCOMPARE( QString("%2 %L1").arg(12345.6789).arg(12345.6789),
+ QString("12345.7 12.345,7") );
+ QCOMPARE( QString("%2 %L1").arg(123456789).arg(123456789),
+ QString("123456789 123.456.789") );
+ QCOMPARE( QString("%L2 %L1 %3").arg(12345.7).arg(123456789).arg('c'),
+ QString("123.456.789 12.345,7 c") );
+
+ // multi-digit replacement
+ QString input("%%%L0 %1 %02 %3 %4 %5 %L6 %7 %8 %%% %090 %10 %11 %L12 %14 %L9888 %9999 %%%%%%%L");
+ input = input.arg("A").arg("B").arg("C")
+ .arg("D").arg("E").arg("f")
+ .arg("g").arg("h").arg("i").arg("j")
+ .arg("k").arg("l").arg("m")
+ .arg("n").arg("o").arg("p");
+
+ QCOMPARE(input, QString("%%A B C D E f g h i %%% j0 k l m n o88 p99 %%%%%%%L"));
+
+ QString str("%1 %2 %3 %4 %5 %6 %7 %8 %9 foo %10 %11 bar");
+ str = str.arg("one", "2", "3", "4", "5", "6", "7", "8", "9");
+ str = str.arg("ahoy", "there");
+ QCOMPARE(str, QString("one 2 3 4 5 6 7 8 9 foo ahoy there bar"));
+
+ QString str2("%123 %234 %345 %456 %567 %999 %1000 %1230");
+ str2 = str2.arg("A", "B", "C", "D", "E", "F");
+ QCOMPARE(str2, QString("A B C D E F %1000 %1230"));
+
+ // task 201185
+ QCOMPARE(QString("%1").arg(-1, 3, 10, QChar('0')), QString("-01"));
+ QCOMPARE(QString("%1").arg(-100, 3, 10, QChar('0')), QString("-100"));
+ QCOMPARE(QString("%1").arg(-1, 3, 10, QChar(' ')), QString(" -1"));
+ QCOMPARE(QString("%1").arg(-100, 3, 10, QChar(' ')), QString("-100"));
+ QCOMPARE(QString("%1").arg(1U, 3, 10, QChar(' ')), QString(" 1"));
+ QCOMPARE(QString("%1").arg(1000U, 3, 10, QChar(' ')), QString("1000"));
+ QCOMPARE(QString("%1").arg(-1, 3, 10, QChar('x')), QString("x-1"));
+ QCOMPARE(QString("%1").arg(-100, 3, 10, QChar('x')), QString("-100"));
+ QCOMPARE(QString("%1").arg(1U, 3, 10, QChar('x')), QString("xx1"));
+ QCOMPARE(QString("%1").arg(1000U, 3, 10, QChar('x')), QString("1000"));
+
+ QCOMPARE(QString("%1").arg(-1., 3, 'g', -1, QChar('0')), QString("-01"));
+ QCOMPARE(QString("%1").arg(-100., 3, 'g', -1, QChar('0')), QString("-100"));
+ QCOMPARE(QString("%1").arg(-1., 3, 'g', -1, QChar(' ')), QString(" -1"));
+ QCOMPARE(QString("%1").arg(-100., 3, 'g', -1, QChar(' ')), QString("-100"));
+ QCOMPARE(QString("%1").arg(1., 3, 'g', -1, QChar('x')), QString("xx1"));
+ QCOMPARE(QString("%1").arg(1000., 3, 'g', -1, QChar('x')), QString("1000"));
+ QCOMPARE(QString("%1").arg(-1., 3, 'g', -1, QChar('x')), QString("x-1"));
+ QCOMPARE(QString("%1").arg(-100., 3, 'g', -1, QChar('x')), QString("-100"));
+}
+
+void tst_QString::number()
+{
+ QCOMPARE( QString::number(int(0)), QString("0") );
+ QCOMPARE( QString::number((unsigned int)(11)), QString("11") );
+ QCOMPARE( QString::number(-22L), QString("-22") );
+ QCOMPARE( QString::number(333UL), QString("333") );
+ QCOMPARE( QString::number(4.4), QString("4.4") );
+ QCOMPARE( QString::number(Q_INT64_C(-555)), QString("-555") );
+ QCOMPARE( QString::number(Q_UINT64_C(6666)), QString("6666") );
+}
+
+void tst_QString::capacity_data()
+{
+ length_data();
+}
+
+void tst_QString::capacity()
+{
+ QFETCH( QString, s1 );
+ QFETCH( int, res );
+
+ QString s2( s1 );
+ s2.reserve( res );
+ QVERIFY( (int)s2.capacity() >= res );
+ QCOMPARE( s2, s1 );
+
+ s2.reserve( res * 2 );
+ QVERIFY( (int)s2.capacity() >= res * 2 );
+ QCOMPARE( s2, s1 );
+
+ s2.squeeze();
+ QVERIFY( (int)s2.capacity() == res );
+ QCOMPARE( s2, s1 );
+
+}
+
+void tst_QString::section_data()
+{
+ QTest::addColumn<QString>("wholeString" );
+ QTest::addColumn<QString>("sep" );
+ QTest::addColumn<int>("start" );
+ QTest::addColumn<int>("end" );
+ QTest::addColumn<int>("flags" );
+ QTest::addColumn<QString>("sectionString" );
+ QTest::addColumn<bool>("regexp" );
+
+ QTest::newRow( "data0" ) << QString("forename,middlename,surname,phone") << QString(",") << 2 << 2 << int(QString::SectionDefault) << QString("surname") << false;
+ QTest::newRow( "data1" ) << QString("/usr/local/bin/myapp") << QString("/") << 3 << 4 << int(QString::SectionDefault) << QString("bin/myapp") << false;
+ QTest::newRow( "data2" ) << QString("/usr/local/bin/myapp") << QString("/") << 3 << 3 << int(QString::SectionSkipEmpty) << QString("myapp") << false;
+ QTest::newRow( "data3" ) << QString("forename**middlename**surname**phone") << QString("**") << 2 << 2 << int(QString::SectionDefault) << QString("surname") << false;
+ QTest::newRow( "data4" ) << QString("forename**middlename**surname**phone") << QString("**") << -3 << -2 << int(QString::SectionDefault) << QString("middlename**surname") << false;
+ QTest::newRow( "task-21749-1" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 0 << 0 << int(QString::SectionSkipEmpty) << QString("Datt") << false;
+ QTest::newRow( "task-21749-2" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 1 << 1 << int(QString::SectionSkipEmpty) << QString("wollen") << false;
+ QTest::newRow( "task-21749-3" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 2 << 2 << int(QString::SectionSkipEmpty) << QString("wir") << false;
+ QTest::newRow( "task-21749-4" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 3 << 3 << int(QString::SectionSkipEmpty) << QString("mal") << false;
+ QTest::newRow( "task-21749-5" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 4 << 4 << int(QString::SectionSkipEmpty) << QString("sehen") << false;
+ // not fixed for 3.1
+ QTest::newRow( "task-27269" ) << QString("a/b/c/d") << QString("/") << 1 << -1 << int(QString::SectionIncludeLeadingSep | QString::SectionIncludeTrailingSep) << QString("/b/c/d") << false;
+ QTest::newRow( "task-43641" ) << QString("aoLoboLocolod") << QString("olo") << -1 << -1 << int(QString::SectionCaseInsensitiveSeps) << QString("d") << false;
+ QTest::newRow( "task-27593" ) << QString("F0") << QString("F") << 0 << 0 << int(QString::SectionSkipEmpty) << QString("0") << false;
+ QTest::newRow( "foo1" ) << QString("foo;foo;") << QString(";") << 0 << 0
+ << int(QString::SectionIncludeLeadingSep) << QString("foo") << false;
+ QTest::newRow( "foo2" ) << QString("foo;foo;") << QString(";") << 1 << 1
+ << int(QString::SectionIncludeLeadingSep) << QString(";foo") << false;
+ QTest::newRow( "foo3" ) << QString("foo;foo;") << QString(";") << 2 << 2
+ << int(QString::SectionIncludeLeadingSep) << QString(";") << false;
+ QTest::newRow( "foo1rx" ) << QString("foo;foo;") << QString(";") << 0 << 0
+ << int(QString::SectionIncludeLeadingSep) << QString("foo") << true;
+ QTest::newRow( "foo2rx" ) << QString("foo;foo;") << QString(";") << 1 << 1
+ << int(QString::SectionIncludeLeadingSep) << QString(";foo") << true;
+ QTest::newRow( "foo3rx" ) << QString("foo;foo;") << QString(";") << 2 << 2
+ << int(QString::SectionIncludeLeadingSep) << QString(";") << true;
+
+ QTest::newRow( "qmake_path" ) << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode/")
+ << QString("/") << 0 << -2 << int(QString::SectionDefault)
+ << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode") << false;
+ QTest::newRow( "qmake_pathrx" ) << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode/")
+ << QString("/") << 0 << -2 << int(QString::SectionDefault)
+ << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode") << true;
+ QTest::newRow( "task72972" ) << QString("||2|3|||")
+ << QString("|") << 0 << 1 << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("||") << false;
+ QTest::newRow( "task72972rx" ) << QString("||2|3|||")
+ << QString("\\|") << 0 << 1 << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("||") << true;
+ QTest::newRow( "task72972-2" ) << QString("|1|2|")
+ << QString("|") << 0 << 1 << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("|1|") << false;
+ QTest::newRow( "task72972-2rx" ) << QString("|1|2|")
+ << QString("\\|") << 0 << 1
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("|1|") << true;
+ QTest::newRow( "normal1" ) << QString("o1o2o")
+ << QString("o") << 0 << 0
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o") << false;
+ QTest::newRow( "normal2" ) << QString("o1o2o")
+ << QString("o") << 1 << 1
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o1o") << false;
+ QTest::newRow( "normal3" ) << QString("o1o2o")
+ << QString("o") << 2 << 2
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o2o") << false;
+ QTest::newRow( "normal4" ) << QString("o1o2o")
+ << QString("o") << 2 << 3
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o2o") << false;
+ QTest::newRow( "normal5" ) << QString("o1o2o")
+ << QString("o") << 1 << 2
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o1o2o") << false;
+ QTest::newRow( "rx1" ) << QString("o1o2o")
+ << QString("[a-z]") << 0 << 0
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o") << true;
+ QTest::newRow( "rx2" ) << QString("o1o2o")
+ << QString("[a-z]") << 1 << 1
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o1o") << true;
+ QTest::newRow( "rx3" ) << QString("o1o2o")
+ << QString("[a-z]") << 2 << 2
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o2o") << true;
+ QTest::newRow( "rx4" ) << QString("o1o2o")
+ << QString("[a-z]") << 2 << 3
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o2o") << true;
+ QTest::newRow( "rx5" ) << QString("o1o2o")
+ << QString("[a-z]") << 1 << 2
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o1o2o") << true;
+ QTest::newRow( "task45855-rx" ) << QString("This is a story, a small story")
+ << QString("\\b") << 3 << 3
+ << int(QString::SectionDefault)
+ << QString("is") << true;
+ QTest::newRow( "task257941-rx" ) << QString("99.0 42.3")
+ << QString("\\s*[AaBb]\\s*") << 1 << 1
+ << int(QString::SectionIncludeLeadingSep)
+ << QString() << true;
+}
+
+void tst_QString::section()
+{
+ QFETCH( QString, wholeString );
+ QFETCH( QString, sep );
+ QFETCH( int, start );
+ QFETCH( int, end );
+ QFETCH( int, flags );
+ QFETCH( QString, sectionString );
+ QFETCH( bool, regexp );
+ if (regexp) {
+ QCOMPARE( wholeString.section( QRegExp(sep), start, end, QString::SectionFlag(flags) ), sectionString );
+ } else {
+ QCOMPARE( wholeString.section( sep, start, end, QString::SectionFlag(flags) ), sectionString );
+ }
+}
+
+
+void tst_QString::operator_eqeq_nullstring()
+{
+ /* Some of these might not be all that logical but it's the behaviour we've had since 3.0.0
+ so we should probably stick with it. */
+
+ QVERIFY( QString() == "" );
+ QVERIFY( "" == QString() );
+
+ QVERIFY( QString("") == "" );
+ QVERIFY( "" == QString("") );
+
+ QVERIFY( QString().size() == 0 );
+
+ QVERIFY( QString("").size() == 0 );
+
+ QVERIFY( QString() == QString("") );
+ QVERIFY( QString("") == QString() );
+}
+
+void tst_QString::operator_smaller()
+{
+ QString null;
+ QString empty("");
+ QString foo("foo");
+
+ QVERIFY( !(null < QString()) );
+ QVERIFY( !(null > QString()) );
+
+ QVERIFY( !(empty < QString("")) );
+ QVERIFY( !(empty > QString("")) );
+
+ QVERIFY( !(null < empty) );
+ QVERIFY( !(null > empty) );
+
+ QVERIFY( null < foo );
+ QVERIFY( !(null > foo) );
+ QVERIFY( foo > null );
+ QVERIFY( !(foo < null) );
+
+ QVERIFY( empty < foo );
+ QVERIFY( !(empty > foo) );
+ QVERIFY( foo > empty );
+ QVERIFY( !(foo < empty) );
+
+ QVERIFY( !(null < QLatin1String(0)) );
+ QVERIFY( !(null > QLatin1String(0)) );
+ QVERIFY( !(null < QLatin1String("")) );
+ QVERIFY( !(null > QLatin1String("")) );
+
+ QVERIFY( !(null < QLatin1String("")) );
+ QVERIFY( !(null > QLatin1String("")) );
+ QVERIFY( !(empty < QLatin1String("")) );
+ QVERIFY( !(empty > QLatin1String("")) );
+
+ QVERIFY( !(QLatin1String(0) < null) );
+ QVERIFY( !(QLatin1String(0) > null) );
+ QVERIFY( !(QLatin1String("") < null) );
+ QVERIFY( !(QLatin1String("") > null) );
+
+ QVERIFY( !(QLatin1String(0) < empty) );
+ QVERIFY( !(QLatin1String(0) > empty) );
+ QVERIFY( !(QLatin1String("") < empty) );
+ QVERIFY( !(QLatin1String("") > empty) );
+
+ QVERIFY( QLatin1String(0) < foo );
+ QVERIFY( !(QLatin1String(0) > foo) );
+ QVERIFY( QLatin1String("") < foo );
+ QVERIFY( !(QLatin1String("") > foo) );
+
+ QVERIFY( foo > QLatin1String(0) );
+ QVERIFY( !(foo < QLatin1String(0)) );
+ QVERIFY( foo > QLatin1String("") );
+ QVERIFY( !(foo < QLatin1String("")) );
+
+ QVERIFY( QLatin1String(0) == empty);
+ QVERIFY( QLatin1String(0) == null);
+ QVERIFY( QLatin1String("") == empty);
+ QVERIFY( QLatin1String("") == null);
+
+ QVERIFY( !(foo < QLatin1String("foo")));
+ QVERIFY( !(foo > QLatin1String("foo")));
+ QVERIFY( !(QLatin1String("foo") < foo));
+ QVERIFY( !(QLatin1String("foo") > foo));
+
+ QVERIFY( !(foo < QLatin1String("a")));
+ QVERIFY( (foo > QLatin1String("a")));
+ QVERIFY( (QLatin1String("a") < foo));
+ QVERIFY( !(QLatin1String("a") > foo));
+
+ QVERIFY( (foo < QLatin1String("z")));
+ QVERIFY( !(foo > QLatin1String("z")));
+ QVERIFY( !(QLatin1String("z") < foo));
+ QVERIFY( (QLatin1String("z") > foo));
+}
+
+void tst_QString::integer_conversion_data()
+{
+ QTest::addColumn<QString>("locale_name");
+ QTest::addColumn<QString>("num_str");
+ QTest::addColumn<int>("base");
+ QTest::addColumn<bool>("good");
+ QTest::addColumn<qlonglong>("num");
+
+ QTest::newRow("C empty 0") << QString("C") << QString("") << 0 << false << (qlonglong)0;
+ QTest::newRow("C empty 8") << QString("C") << QString("") << 8 << false << (qlonglong)0;
+ QTest::newRow("C empty 10") << QString("C") << QString("") << 10 << false << (qlonglong)0;
+ QTest::newRow("C empty 16") << QString("C") << QString("") << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C null 0") << QString("C") << QString() << 0 << false << (qlonglong)0;
+ QTest::newRow("C null 8") << QString("C") << QString() << 8 << false << (qlonglong)0;
+ QTest::newRow("C null 10") << QString("C") << QString() << 10 << false << (qlonglong)0;
+ QTest::newRow("C null 16") << QString("C") << QString() << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C -0xf 0") << QString("C") << QString(" -0xf") << 0 << true << (qlonglong)-15;
+ QTest::newRow("C -0xf 0") << QString("C") << QString("-0xf ") << 0 << true << (qlonglong)-15;
+ QTest::newRow("C \t0xf\t 0") << QString("C") << QString("\t0xf\t") << 0 << true << (qlonglong)15;
+ QTest::newRow("C -010 0") << QString("C") << QString(" -010") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C 010 0") << QString("C") << QString("010 ") << 0 << true << (qlonglong)8;
+ QTest::newRow("C \t-010\t 0") << QString("C") << QString("\t-010\t") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C 123 10") << QString("C") << QString(" 123") << 10 << true << (qlonglong)123;
+ QTest::newRow("C 123 10") << QString("C") << QString("123 ") << 10 << true << (qlonglong)123;
+ QTest::newRow("C \t123\t 10") << QString("C") << QString("\t123\t") << 10 << true << (qlonglong)123;
+ QTest::newRow("C -0xf 16") << QString("C") << QString(" -0xf") << 16 << true << (qlonglong)-15;
+ QTest::newRow("C -0xf 16") << QString("C") << QString("-0xf ") << 16 << true << (qlonglong)-15;
+ QTest::newRow("C \t0xf\t 16") << QString("C") << QString("\t0xf\t") << 16 << true << (qlonglong)15;
+
+ QTest::newRow("C -0 0") << QString("C") << QString("-0") << 0 << true << (qlonglong)0;
+ QTest::newRow("C -0 8") << QString("C") << QString("-0") << 8 << true << (qlonglong)0;
+ QTest::newRow("C -0 10") << QString("C") << QString("-0") << 10 << true << (qlonglong)0;
+ QTest::newRow("C -0 16") << QString("C") << QString("-0") << 16 << true << (qlonglong)0;
+
+ QTest::newRow("C 1.234 10") << QString("C") << QString("1.234") << 10 << false << (qlonglong)0;
+ QTest::newRow("C 1,234 10") << QString("C") << QString("1,234") << 10 << false << (qlonglong)0;
+ QTest::newRow("de_DE 1.234 10") << QString("de_DE") << QString("1.234") << 10 << false << (qlonglong)0;
+ QTest::newRow("de_DE 1,234 10") << QString("de_DE") << QString("1,234") << 10 << false << (qlonglong)0;
+
+ QTest::newRow("C 0x 0") << QString("C") << QString("0x") << 0 << false << (qlonglong)0;
+ QTest::newRow("C 0x 16") << QString("C") << QString("0x") << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C 10 0") << QString("C") << QString("10") << 0 << true << (qlonglong)10;
+ QTest::newRow("C 010 0") << QString("C") << QString("010") << 0 << true << (qlonglong)8;
+ QTest::newRow("C 0x10 0") << QString("C") << QString("0x10") << 0 << true << (qlonglong)16;
+ QTest::newRow("C 10 8") << QString("C") << QString("10") << 8 << true << (qlonglong)8;
+ QTest::newRow("C 010 8") << QString("C") << QString("010") << 8 << true << (qlonglong)8;
+ QTest::newRow("C 0x10 8") << QString("C") << QString("0x10") << 8 << false << (qlonglong)0;
+ QTest::newRow("C 10 10") << QString("C") << QString("10") << 10 << true << (qlonglong)10;
+ QTest::newRow("C 010 10") << QString("C") << QString("010") << 10 << true << (qlonglong)10;
+ QTest::newRow("C 0x10 10") << QString("C") << QString("0x10") << 10 << false << (qlonglong)0;
+ QTest::newRow("C 10 16") << QString("C") << QString("10") << 16 << true << (qlonglong)16;
+ QTest::newRow("C 010 16") << QString("C") << QString("010") << 16 << true << (qlonglong)16;
+ QTest::newRow("C 0x10 16") << QString("C") << QString("0x10") << 16 << true << (qlonglong)16;
+
+ QTest::newRow("de_DE 10 0") << QString("de_DE") << QString("10") << 0 << true << (qlonglong)10;
+ QTest::newRow("de_DE 010 0") << QString("de_DE") << QString("010") << 0 << true << (qlonglong)8;
+ QTest::newRow("de_DE 0x10 0") << QString("de_DE") << QString("0x10") << 0 << true << (qlonglong)16;
+ QTest::newRow("de_DE 10 8") << QString("de_DE") << QString("10") << 8 << true << (qlonglong)8;
+ QTest::newRow("de_DE 010 8") << QString("de_DE") << QString("010") << 8 << true << (qlonglong)8;
+ QTest::newRow("de_DE 0x10 8") << QString("de_DE") << QString("0x10") << 8 << false << (qlonglong)0;
+ QTest::newRow("de_DE 10 10") << QString("de_DE") << QString("10") << 10 << true << (qlonglong)10;
+ QTest::newRow("de_DE 010 10") << QString("de_DE") << QString("010") << 10 << true << (qlonglong)10;
+ QTest::newRow("de_DE 0x10 10") << QString("de_DE") << QString("0x10") << 10 << false << (qlonglong)0;
+ QTest::newRow("de_DE 10 16") << QString("de_DE") << QString("10") << 16 << true << (qlonglong)16;
+ QTest::newRow("de_DE 010 16") << QString("de_DE") << QString("010") << 16 << true << (qlonglong)16;
+ QTest::newRow("de_DE 0x10 16") << QString("de_DE") << QString("0x10") << 16 << true << (qlonglong)16;
+
+ QTest::newRow("C -10 0") << QString("C") << QString("-10") << 0 << true << (qlonglong)-10;
+ QTest::newRow("C -010 0") << QString("C") << QString("-010") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C -0x10 0") << QString("C") << QString("-0x10") << 0 << true << (qlonglong)-16;
+ QTest::newRow("C -10 8") << QString("C") << QString("-10") << 8 << true << (qlonglong)-8;
+ QTest::newRow("C -010 8") << QString("C") << QString("-010") << 8 << true << (qlonglong)-8;
+ QTest::newRow("C -0x10 8") << QString("C") << QString("-0x10") << 8 << false << (qlonglong)0;
+ QTest::newRow("C -10 10") << QString("C") << QString("-10") << 10 << true << (qlonglong)-10;
+ QTest::newRow("C -010 10") << QString("C") << QString("-010") << 10 << true << (qlonglong)-10;
+ QTest::newRow("C -0x10 10") << QString("C") << QString("-0x10") << 10 << false << (qlonglong)0;
+ QTest::newRow("C -10 16") << QString("C") << QString("-10") << 16 << true << (qlonglong)-16;
+ QTest::newRow("C -010 16") << QString("C") << QString("-010") << 16 << true << (qlonglong)-16;
+ QTest::newRow("C -0x10 16") << QString("C") << QString("-0x10") << 16 << true << (qlonglong)-16;
+
+ // Let's try some Arabic
+ const quint16 arabic_str[] = { 0x0661, 0x0662, 0x0663, 0x0664, 0x0000 }; // "1234"
+ QTest::newRow("ar_SA 1234 0") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 0 << true << (qlonglong)1234;
+ QTest::newRow("ar_SA 1234 8") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 8 << true << (qlonglong)668;
+ QTest::newRow("ar_SA 1234 10") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 10 << true << (qlonglong)1234;
+ QTest::newRow("ar_SA 1234 16") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 16 << true << (qlonglong)4660;
+}
+
+void tst_QString::integer_conversion()
+{
+ QFETCH(QString, locale_name);
+ QFETCH(QString, num_str);
+ QFETCH(int, base);
+ QFETCH(bool, good);
+ QFETCH(qlonglong, num);
+
+
+ QLocale::setDefault(locale_name);
+ QCOMPARE(QLocale().name(), locale_name);
+
+ bool ok;
+ qlonglong d = num_str.toLongLong(&ok, base);
+ QCOMPARE(ok, good);
+
+ if (ok) {
+ QCOMPARE(d, num);
+ }
+
+ QLocale::setDefault(QLocale::C);
+}
+
+void tst_QString::double_conversion_data()
+{
+ QTest::addColumn<QString>("locale_name");
+ QTest::addColumn<QString>("num_str");
+ QTest::addColumn<bool>("good");
+ QTest::addColumn<double>("num");
+/*
+ // The good...
+
+ QTest::newRow("C 1") << QString("C") << QString("1") << true << 1.0;
+ QTest::newRow("C 1.0") << QString("C") << QString("1.0") << true << 1.0;
+ QTest::newRow("C 1.234") << QString("C") << QString("1.234") << true << 1.234;
+ QTest::newRow("C 1.234e-10") << QString("C") << QString("1.234e-10") << true << 1.234e-10;
+ QTest::newRow("C 1.234E10") << QString("C") << QString("1.234E10") << true << 1.234e10;
+ QTest::newRow("C 1e10") << QString("C") << QString("1e10") << true << 1.0e10;
+
+ // The bad...
+
+ QTest::newRow("C empty") << QString("C") << QString("") << false << 0.0;
+ QTest::newRow("C null") << QString("C") << QString() << false << 0.0;
+ QTest::newRow("C .") << QString("C") << QString(".") << false << 0.0;
+ QTest::newRow("C 1e") << QString("C") << QString("1e") << false << 0.0;
+ QTest::newRow("C 1,") << QString("C") << QString("1,") << false << 0.0;
+ QTest::newRow("C 1,0") << QString("C") << QString("1,0") << false << 0.0;
+ QTest::newRow("C 1,000") << QString("C") << QString("1,000") << false << 0.0;
+ QTest::newRow("C 1e1.0") << QString("C") << QString("1e1.0") << false << 0.0;
+ QTest::newRow("C 1e+") << QString("C") << QString("1e+") << false << 0.0;
+ QTest::newRow("C 1e-") << QString("C") << QString("1e-") << false << 0.0;
+
+ // And the ugly...
+
+ QTest::newRow("C .1") << QString("C") << QString(".1") << true << 0.1;
+ QTest::newRow("C -.1") << QString("C") << QString("-.1") << true << -0.1;
+ QTest::newRow("C 1.") << QString("C") << QString("1.") << true << 1.0;
+ QTest::newRow("C 1.E10") << QString("C") << QString("1.E10") << true << 1.0e10;
+ QTest::newRow("C 1e+10") << QString("C") << QString("1e+10") << true << 1.0e+10;
+
+ QTest::newRow("de_DE 1") << QString("de_DE") << QString("1") << true << 1.0;
+ QTest::newRow("de_DE 1.0") << QString("de_DE") << QString("1.0") << true << 1.0;
+ QTest::newRow("de_DE 1.234") << QString("de_DE") << QString("1.234") << true << 1.234;
+ QTest::newRow("de_DE 1.234e-10") << QString("de_DE") << QString("1.234e-10") << true << 1.234e-10;
+ QTest::newRow("de_DE 1.234E10") << QString("de_DE") << QString("1.234E10") << true << 1.234e10;
+ QTest::newRow("de_DE 1e10") << QString("de_DE") << QString("1e10") << true << 1.0e10;
+ QTest::newRow("de_DE .1") << QString("de_DE") << QString(".1") << true << 0.1;
+ QTest::newRow("de_DE -.1") << QString("de_DE") << QString("-.1") << true << -0.1;
+ QTest::newRow("de_DE 1.") << QString("de_DE") << QString("1.") << true << 1.0;
+ QTest::newRow("de_DE 1.E10") << QString("de_DE") << QString("1.E10") << true << 1.0e10;
+ QTest::newRow("de_DE 1e+10") << QString("de_DE") << QString("1e+10") << true << 1.0e+10;
+
+ QTest::newRow("de_DE 1,0") << QString("de_DE") << QString("1,0") << true << 1.0;
+ QTest::newRow("de_DE 1,234") << QString("de_DE") << QString("1,234") << true << 1.234;
+ QTest::newRow("de_DE 1,234e-10") << QString("de_DE") << QString("1,234e-10") << true << 1.234e-10;
+ QTest::newRow("de_DE 1,234E10") << QString("de_DE") << QString("1,234E10") << true << 1.234e10;
+ QTest::newRow("de_DE ,1") << QString("de_DE") << QString(",1") << true << 0.1;
+ QTest::newRow("de_DE -,1") << QString("de_DE") << QString("-,1") << true << -0.1;
+ QTest::newRow("de_DE 1,") << QString("de_DE") << QString("1,") << true << 1.0;
+ QTest::newRow("de_DE 1,E10") << QString("de_DE") << QString("1,E10") << true << 1.0e10;
+
+ QTest::newRow("de_DE empty") << QString("de_DE") << QString("") << false << 0.0;
+ QTest::newRow("de_DE null") << QString("de_DE") << QString() << false << 0.0;
+ QTest::newRow("de_DE .") << QString("de_DE") << QString(".") << false << 0.0;
+ QTest::newRow("de_DE 1e") << QString("de_DE") << QString("1e") << false << 0.0;
+ QTest::newRow("de_DE 1e1.0") << QString("de_DE") << QString("1e1.0") << false << 0.0;
+ QTest::newRow("de_DE 1e+") << QString("de_DE") << QString("1e+") << false << 0.0;
+ QTest::newRow("de_DE 1e-") << QString("de_DE") << QString("1e-") << false << 0.0;
+
+ QTest::newRow("C 1") << QString("C") << QString(" 1") << true << 1.0;
+ QTest::newRow("C 1 ") << QString("C") << QString("1 ") << true << 1.0;
+ QTest::newRow("de_DE 1") << QString("de_DE") << QString(" 1") << true << 1.0;
+ QTest::newRow("de_DE 1 ") << QString("de_DE") << QString("1 ") << true << 1.0;
+*/
+ // Let's try some Arabic
+ const quint16 arabic_str[] = { 0x0660, 0x066B, 0x0661, 0x0662,
+ 0x0663, 0x0664, 0x0065, 0x0662,
+ 0x0000 }; // "0.1234e2"
+ QTest::newRow("ar_SA") << QString("ar_SA") << QString::fromUtf16(arabic_str) << true << 0.1234e2;
+}
+
+void tst_QString::double_conversion()
+{
+#define MY_DOUBLE_EPSILON (2.22045e-16)
+
+ QFETCH(QString, locale_name);
+ QFETCH(QString, num_str);
+ QFETCH(bool, good);
+ QFETCH(double, num);
+
+ QLocale::setDefault(locale_name);
+ QCOMPARE(QLocale().name(), locale_name);
+
+ bool ok;
+ double d = num_str.toDouble(&ok);
+ QCOMPARE(ok, good);
+
+ if (ok) {
+ double diff = d - num;
+ if (diff < 0)
+ diff = -diff;
+ QVERIFY(diff <= MY_DOUBLE_EPSILON);
+ }
+
+ QLocale::setDefault(QLocale::C);
+}
+
+#ifndef Q_MOC_RUN
+#include "double_data.h"
+#endif
+
+void tst_QString::tortureSprintfDouble()
+{
+ const SprintfDoubleData *data = g_sprintf_double_data;
+
+ QString s;
+
+ for (; data->fmt != 0; ++data) {
+ double d;
+ char *buff = (char *)&d;
+# ifndef Q_BYTE_ORDER
+# error "Q_BYTE_ORDER not defined"
+# endif
+
+# ifdef QT_ARMFPA
+ buff[0] = data->bytes[4];
+ buff[1] = data->bytes[5];
+ buff[2] = data->bytes[6];
+ buff[3] = data->bytes[7];
+ buff[4] = data->bytes[0];
+ buff[5] = data->bytes[1];
+ buff[6] = data->bytes[2];
+ buff[7] = data->bytes[3];
+# elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN
+ for (uint i = 0; i < 8; ++i)
+ buff[i] = data->bytes[i];
+# else
+ for (uint i = 0; i < 8; ++i)
+ buff[7 - i] = data->bytes[i];
+# endif
+ s.sprintf(data->fmt, d);
+#ifdef QT_NO_FPU // reduced precision when running with hardfloats in qemu
+ if (d - 0.1 < 1e12)
+ QSKIP("clib sprintf doesn't fill with 0's on this platform",
+ SkipSingle);
+ QCOMPARE(s.left(16), QString(data->expected).left(16));
+#else
+ QCOMPARE(s, QString(data->expected));
+#endif
+ }
+}
+
+#include <locale.h>
+
+void tst_QString::localeAwareCompare_data()
+{
+#ifdef Q_OS_WIN
+ QTest::addColumn<ulong>("locale");
+#else
+ QTest::addColumn<QString>("locale");
+#endif
+ QTest::addColumn<QString>("s1");
+ QTest::addColumn<QString>("s2");
+ QTest::addColumn<int>("result");
+
+ /*
+ The C locale performs pure byte comparisons for
+ Latin-1-specific characters (I think). Compare with Swedish
+ below.
+ */
+#ifdef Q_OS_WIN // assume c locale to be english
+ QTest::newRow("c1") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("\xe5") << QString("\xe4") << 1;
+ QTest::newRow("c2") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("c3") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("\xe5") << QString("\xf6") << -1;
+#else
+ QTest::newRow("c1") << QString("C") << QString("\xe5") << QString("\xe4") << 1;
+ QTest::newRow("c2") << QString("C") << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("c3") << QString("C") << QString("\xe5") << QString("\xf6") << -1;
+#endif
+
+ /*
+ It's hard to test English, because it's treated differently
+ on different platforms. For example, on Linux, it uses the
+ iso14651_t1 template file, which happens to provide good
+ defaults for Swedish. Mac OS X seems to do a pure bytewise
+ comparison of Latin-1 values, although I'm not sure. So I
+ just test digits to make sure that it's not totally broken.
+ */
+#ifdef Q_OS_WIN
+ QTest::newRow("english1") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("5") << QString("4") << 1;
+ QTest::newRow("english2") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("4") << QString("6") << -1;
+ QTest::newRow("english3") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("5") << QString("6") << -1;
+#else
+ QTest::newRow("english1") << QString("en_US") << QString("5") << QString("4") << 1;
+ QTest::newRow("english2") << QString("en_US") << QString("4") << QString("6") << -1;
+ QTest::newRow("english3") << QString("en_US") << QString("5") << QString("6") << -1;
+#endif
+ /*
+ In Swedish, a with ring above (E5) comes before a with
+ diaresis (E4), which comes before o diaresis (F6), which
+ all come after z.
+ */
+#ifdef Q_OS_MAC
+ QTest::newRow("swedish1") << QString("sv_SE.ISO8859-1") << QString("\xe5") << QString("\xe4") << -1;
+ QTest::newRow("swedish2") << QString("sv_SE.ISO8859-1") << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("swedish3") << QString("sv_SE.ISO8859-1") << QString("\xe5") << QString("\xf6") << -1;
+ QTest::newRow("swedish4") << QString("sv_SE.ISO8859-1") << QString("z") << QString("\xe5") << -1;
+#elif defined(Q_OS_WIN)
+ QTest::newRow("swedish1") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("\xe5") << QString("\xe4") << -1;
+ QTest::newRow("swedish2") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("swedish3") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("\xe5") << QString("\xf6") << -1;
+ QTest::newRow("swedish4") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("z") << QString("\xe5") << -1;
+#else
+ QTest::newRow("swedish1") << QString("sv_SE") << QString("\xe5") << QString("\xe4") << -1;
+ QTest::newRow("swedish2") << QString("sv_SE") << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("swedish3") << QString("sv_SE") << QString("\xe5") << QString("\xf6") << -1;
+ QTest::newRow("swedish4") << QString("sv_SE") << QString("z") << QString("\xe5") << -1;
+#endif
+
+#if 0
+ /*
+ In Norwegian, ae (E6) comes before o with stroke (D8), which
+ comes before a with ring above (E5).
+ */
+ QTest::newRow("norwegian1") << QString("no_NO") << QString("\xe6") << QString("\xd8") << -1;
+ QTest::newRow("norwegian2") << QString("no_NO") << QString("\xd8") << QString("\xe5") << -1;
+ QTest::newRow("norwegian3") << QString("no_NO") << QString("\xe6") << QString("\xe5") << -1;
+#endif
+
+ /*
+ In German, z comes *after* a with diaresis (E4),
+ which comes before o diaresis (F6).
+ */
+#ifdef Q_OS_MAC
+ QTest::newRow("german1") << QString("de_DE.ISO8859-1") << QString("z") << QString("\xe4") << 1;
+ QTest::newRow("german2") << QString("de_DE.ISO8859-1") << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("german3") << QString("de_DE.ISO8859-1") << QString("z") << QString("\xf6") << 1;
+#elif defined(Q_OS_WIN)
+ QTest::newRow("german1") << MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT) << QString("z") << QString("\xe4") << 1;
+ QTest::newRow("german2") << MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT) << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("german3") << MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT) << QString("z") << QString("\xf6") << 1;
+#else
+ QTest::newRow("german1") << QString("de_DE") << QString("z") << QString("\xe4") << 1;
+ QTest::newRow("german2") << QString("de_DE") << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("german3") << QString("de_DE") << QString("z") << QString("\xf6") << 1;
+#endif
+}
+
+void tst_QString::localeAwareCompare()
+{
+#ifdef Q_OS_SYMBIAN
+ QSKIP("QTBUG-16921: There is no way to set up the system locale, so this test is not reliable in Symbian.");
+#else
+#ifdef Q_OS_WIN
+# ifndef Q_OS_WINCE
+ QSKIP("On others than Win CE, we cannot set the system or user locale.", SkipAll);
+# endif
+ QFETCH(ulong, locale);
+#else
+ QFETCH(QString, locale);
+#endif
+ QFETCH(QString, s1);
+ QFETCH(QString, s2);
+ QFETCH(int, result);
+
+ QStringRef r1(&s1, 0, s1.length());
+ QStringRef r2(&s2, 0, s2.length());
+
+#ifdef Q_OS_WIN
+# if defined(Q_OS_WINCE)
+ DWORD oldLcid = GetUserDefaultLCID();
+ SetUserDefaultLCID(locale);
+
+ QCOMPARE(locale, GetUserDefaultLCID());
+# else
+ DWORD oldLcid = GetThreadLocale();
+ SetThreadLocale(locale);
+
+ QCOMPARE(locale, GetThreadLocale());
+# endif
+
+#elif defined (Q_WS_MAC)
+ QSKIP("Setting the locale is not supported on OS X (you can set the C locale, but that won't affect CFStringCompare which is used to compare strings)", SkipAll);
+#elif defined(QT_USE_ICU)
+ QLocale::setDefault(QLocale(locale));
+#else
+ if (!locale.isEmpty()) {
+ const char *newLocale = setlocale(LC_ALL, locale.toLatin1());
+ if (!newLocale) {
+ setlocale(LC_ALL, "");
+ QSKIP("Please install the proper locale on this machine to test properly", SkipSingle);
+ return;
+ }
+ }
+#endif
+
+#ifdef QT_USE_ICU
+ // ### for c1, ICU disagrees with libc on how to compare
+ QEXPECT_FAIL("c1", "ICU disagrees with test", Abort);
+#endif
+
+ int testres = QString::localeAwareCompare(s1, s2);
+ if (result < 0) {
+ QVERIFY(testres < 0);
+ } else if (result > 0) {
+ QVERIFY(testres > 0);
+ } else {
+ QVERIFY(testres == 0);
+ }
+
+ testres = QString::localeAwareCompare(s2, s1);
+ if (result > 0) {
+ QVERIFY(testres < 0);
+ } else if (result < 0) {
+ QVERIFY(testres > 0);
+ } else {
+ QVERIFY(testres == 0);
+ }
+
+ testres = QString::localeAwareCompare(s1, r2);
+ if (result < 0) {
+ QVERIFY(testres < 0);
+ } else if (result > 0) {
+ QVERIFY(testres > 0);
+ } else {
+ QVERIFY(testres == 0);
+ }
+
+ testres = QStringRef::localeAwareCompare(r1, r2);
+ if (result < 0) {
+ QVERIFY(testres < 0);
+ } else if (result > 0) {
+ QVERIFY(testres > 0);
+ } else {
+ QVERIFY(testres == 0);
+ }
+
+ testres = QStringRef::localeAwareCompare(r2, r1);
+ if (result > 0) {
+ QVERIFY(testres < 0);
+ } else if (result < 0) {
+ QVERIFY(testres > 0);
+ } else {
+ QVERIFY(testres == 0);
+ }
+
+#ifdef Q_OS_WIN
+# if defined(Q_OS_WINCE)
+ SetUserDefaultLCID(oldLcid);
+# else
+ SetThreadLocale(oldLcid);
+# endif
+
+#else
+ if (!locale.isEmpty())
+ setlocale(LC_ALL, "");
+#endif
+#endif // Q_OS_SYMBIAN
+}
+
+void tst_QString::split_data()
+{
+ QTest::addColumn<QString>("str");
+ QTest::addColumn<QString>("sep");
+ QTest::addColumn<QStringList>("result");
+
+ QTest::newRow("1") << "a,b,c" << "," << (QStringList() << "a" << "b" << "c");
+ QTest::newRow("2") << QString("-rw-r--r-- 1 0 0 519240 Jul 9 2002 bigfile")
+ << " "
+ << (QStringList() << "-rw-r--r--" << "" << "1" << "0" << "" << "0" << ""
+ << "519240" << "Jul" << "" << "9" << "" << "2002" << "bigfile");
+ QTest::newRow("one-empty") << "" << " " << (QStringList() << "");
+ QTest::newRow("two-empty") << " " << " " << (QStringList() << "" << "");
+ QTest::newRow("three-empty") << " " << " " << (QStringList() << "" << "" << "");
+
+ QTest::newRow("all-empty") << "" << "" << (QStringList() << "" << "");
+ QTest::newRow("sep-empty") << "abc" << "" << (QStringList() << "" << "a" << "b" << "c" << "");
+}
+
+void tst_QString::split()
+{
+ QFETCH(QString, str);
+ QFETCH(QString, sep);
+ QFETCH(QStringList, result);
+
+ QRegExp rx = QRegExp(QRegExp::escape(sep));
+
+ QStringList list;
+
+ list = str.split(sep);
+ QVERIFY(list == result);
+ list = str.split(rx);
+ QVERIFY(list == result);
+ if (sep.size() == 1) {
+ list = str.split(sep.at(0));
+ QVERIFY(list == result);
+ }
+
+ list = str.split(sep, QString::KeepEmptyParts);
+ QVERIFY(list == result);
+ list = str.split(rx, QString::KeepEmptyParts);
+ QVERIFY(list == result);
+ if (sep.size() == 1) {
+ list = str.split(sep.at(0), QString::KeepEmptyParts);
+ QVERIFY(list == result);
+ }
+
+ result.removeAll("");
+ list = str.split(sep, QString::SkipEmptyParts);
+ QVERIFY(list == result);
+ list = str.split(rx, QString::SkipEmptyParts);
+ QVERIFY(list == result);
+ if (sep.size() == 1) {
+ list = str.split(sep.at(0), QString::SkipEmptyParts);
+ QVERIFY(list == result);
+ }
+}
+
+void tst_QString::split_regexp()
+{
+ QString str1 = "Some text\n\twith strange whitespace.";
+ QStringList list1 = str1.split(QRegExp("\\s+"));
+ QStringList result1;
+ result1 << "Some" << "text" << "with" << "strange" << "whitespace.";
+ QVERIFY(list1 == result1);
+ list1 = str1.split(QRegExp("\\s"), QString::SkipEmptyParts);
+ QVERIFY(list1 == result1);
+
+ QString str2 = "This time, a normal English sentence.";
+ QStringList list2 = str2.split(QRegExp("\\W+"));
+ QStringList result2;
+ result2 << "This" << "time" << "a" << "normal" << "English" << "sentence" << "";
+ QVERIFY(list2 == result2);
+ list2 = str2.split(QRegExp("\\W"), QString::SkipEmptyParts);
+ result2.removeAll(QString());
+ QVERIFY(list2 == result2);
+
+ QString str3 = "Now: this sentence fragment.";
+ QStringList list3 = str3.split(QRegExp("\\b"));
+ QStringList result3;
+ result3 << "" << "Now" << ": " << "this" << " " << "sentence" << " " << "fragment" << ".";
+ QVERIFY(list3 == result3);
+ list3 = str3.split(QRegExp("\\b"), QString::SkipEmptyParts);
+ result3.removeAll(QString());
+ QVERIFY(list3 == result3);
+}
+
+void tst_QString::fromUtf16_data()
+{
+ QTest::addColumn<QString>("ucs2");
+ QTest::addColumn<QString>("res");
+ QTest::addColumn<int>("len");
+
+ QTest::newRow("str0") << QString("abcdefgh") << QString("abcdefgh") << -1;
+ QTest::newRow("str0-len") << QString("abcdefgh") << QString("abc") << 3;
+}
+
+void tst_QString::fromUtf16()
+{
+ QFETCH(QString, ucs2);
+ QFETCH(QString, res);
+ QFETCH(int, len);
+
+ QCOMPARE(QString::fromUtf16(ucs2.utf16(), len), res);
+}
+
+
+void tst_QString::latin1String()
+{
+ QString s("Hello");
+
+ QVERIFY(s == QLatin1String("Hello"));
+ QVERIFY(s != QLatin1String("Hello World"));
+ QVERIFY(s < QLatin1String("Helloa"));
+ QVERIFY(!(s > QLatin1String("Helloa")));
+ QVERIFY(s > QLatin1String("Helln"));
+ QVERIFY(s > QLatin1String("Hell"));
+ QVERIFY(!(s < QLatin1String("Helln")));
+ QVERIFY(!(s < QLatin1String("Hell")));
+}
+
+void tst_QString::nanAndInf()
+{
+ bool ok;
+ double d;
+
+#define CHECK_DOUBLE(str, expected_ok, expected_inf) \
+ d = QString(str).toDouble(&ok); \
+ QVERIFY(ok == expected_ok); \
+ QVERIFY((d == INFINITY) == expected_inf);
+
+ CHECK_DOUBLE("inf", true, true)
+ CHECK_DOUBLE("INF", true, true)
+ CHECK_DOUBLE("inf ", true, true)
+ CHECK_DOUBLE("+inf", true, true)
+ CHECK_DOUBLE("\t +INF", true, true)
+ CHECK_DOUBLE("\t INF", true, true)
+ CHECK_DOUBLE("inF ", true, true)
+ CHECK_DOUBLE("+iNf", true, true)
+ CHECK_DOUBLE("INFe-10", false, false)
+ CHECK_DOUBLE("0xINF", false, false)
+ CHECK_DOUBLE("- INF", false, false)
+ CHECK_DOUBLE("+ INF", false, false)
+ CHECK_DOUBLE("-- INF", false, false)
+ CHECK_DOUBLE("inf0", false, false)
+ CHECK_DOUBLE("--INF", false, false)
+ CHECK_DOUBLE("++INF", false, false)
+ CHECK_DOUBLE("INF++", false, false)
+ CHECK_DOUBLE("INF--", false, false)
+ CHECK_DOUBLE("INF +", false, false)
+ CHECK_DOUBLE("INF -", false, false)
+ CHECK_DOUBLE("0INF", false, false)
+#undef CHECK_INF
+
+#define CHECK_NAN(str, expected_ok, expected_nan) \
+ d = QString(str).toDouble(&ok); \
+ QVERIFY(ok == expected_ok); \
+ QVERIFY((bool)isnan(d) == expected_nan); \
+
+ CHECK_NAN("nan", true, true)
+ CHECK_NAN("NAN", true, true)
+ CHECK_NAN("nan ", true, true)
+ CHECK_NAN("\t NAN", true, true)
+ CHECK_NAN("\t NAN ", true, true)
+#ifndef QT_QLOCALE_USES_FCVT //In case we use glibc this tests will fail
+ CHECK_NAN("-nan", false, false)
+ CHECK_NAN("+NAN", false, false)
+#endif
+ CHECK_NAN("NaN", true, true)
+ CHECK_NAN("nAn", true, true)
+ CHECK_NAN("NANe-10", false, false)
+ CHECK_NAN("0xNAN", false, false)
+ CHECK_NAN("0NAN", false, false)
+#undef CHECK_NAN
+
+ d = QString("-INF").toDouble(&ok);
+ QVERIFY(ok);
+ QVERIFY(d == -INFINITY);
+
+ long l;
+ l = QString("INF").toLong(&ok);
+ QVERIFY(!ok);
+
+ l = QString("INF").toLong(&ok, 36);
+ QVERIFY(ok);
+
+ l = QString("INF0").toLong(&ok, 36);
+ QVERIFY(ok);
+
+ l = QString("0INF0").toLong(&ok, 36);
+ QVERIFY(ok);
+}
+
+void tst_QString::arg_fillChar_data()
+{
+ QTest::addColumn<QString>("pattern");
+ QTest::addColumn<QList<QVariant> >("replaceValues");
+ QTest::addColumn<IntList>("widths");
+ QTest::addColumn<QString>("fillChars");
+ QTest::addColumn<QString>("expected");
+
+ QList<QVariant> replaceValues;
+ IntList widths;
+ QString fillChars;
+
+ replaceValues << QVariant((int)5) << QVariant(QString("f")) << QVariant((int)0);
+ widths << 3 << 2 << 5;
+ QTest::newRow("str0") << QString("%1%2%3") << replaceValues << widths << QString("abc") << QString("aa5bfcccc0");
+
+ replaceValues.clear();
+ widths.clear();
+ replaceValues << QVariant((int)5.5) << QVariant(QString("foo")) << QVariant((qulonglong)INT_MAX);
+ widths << 10 << 2 << 5;
+ QTest::newRow("str1") << QString("%3.%1.%3.%2") << replaceValues << widths << QString("0 c")
+ << QString("2147483647.0000000005.2147483647.foo");
+
+ replaceValues.clear();
+ widths.clear();
+ replaceValues << QVariant(QString("fisk"));
+ widths << 100;
+ QTest::newRow("str2") << QString("%9 og poteter") << replaceValues << widths << QString("f")
+ << QString("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffisk og poteter");
+}
+
+void tst_QString::arg_fillChar()
+{
+ static const int base = 10;
+ static const char fmt = 'g';
+ static const int prec = -1;
+
+ QFETCH(QString, pattern);
+ QFETCH(QList<QVariant>, replaceValues);
+ QFETCH(IntList, widths);
+ QFETCH(QString, fillChars);
+ QFETCH(QString, expected);
+ QCOMPARE(replaceValues.count(), fillChars.count());
+ QCOMPARE(replaceValues.count(), widths.count());
+
+ QString actual = pattern;
+ for (int i=0; i<replaceValues.count(); ++i) {
+ const QVariant &var = replaceValues.at(i);
+ const int width = widths.at(i);
+ const QChar &fillChar = fillChars.at(i);
+ switch (var.type()) {
+ case QVariant::String: actual = actual.arg(var.toString(), width, fillChar); break;
+ case QVariant::Int: actual = actual.arg(var.toInt(), width, base, fillChar); break;
+ case QVariant::UInt: actual = actual.arg(var.toUInt(), width, base, fillChar); break;
+ case QVariant::Double: actual = actual.arg(var.toDouble(), width, fmt, prec, fillChar); break;
+ case QVariant::LongLong: actual = actual.arg(var.toLongLong(), width, base, fillChar); break;
+ case QVariant::ULongLong: actual = actual.arg(var.toULongLong(), width, base, fillChar); break;
+ default: QVERIFY(0); break;
+ }
+ }
+
+ QCOMPARE(actual, expected);
+}
+
+static inline int sign(int x)
+{
+ return x == 0 ? 0 : (x < 0 ? -1 : 1);
+}
+
+void tst_QString::compare_data()
+{
+ QTest::addColumn<QString>("s1");
+ QTest::addColumn<QString>("s2");
+ QTest::addColumn<int>("csr"); // case sensitive result
+ QTest::addColumn<int>("cir"); // case insensitive result
+
+
+ // null strings
+ QTest::newRow("data0") << QString("") << QString("") << 0 << 0;
+ QTest::newRow("data1") << QString("a") << QString("") << 1 << 1;
+ QTest::newRow("data2") << QString("") << QString("a") << -1 << -1;
+
+ // equal length
+ QTest::newRow("data3") << QString("abc") << QString("abc") << 0 << 0;
+ QTest::newRow("data4") << QString("abC") << QString("abc") << -1 << 0;
+ QTest::newRow("data5") << QString("abc") << QString("abC") << 1 << 0;
+
+ // different length
+ QTest::newRow("data6") << QString("abcdef") << QString("abc") << 1 << 1;
+ QTest::newRow("data6") << QString("abCdef") << QString("abc") << -1 << 1;
+ QTest::newRow("data7") << QString("abc") << QString("abcdef") << -1 << -1;
+
+ QString upper;
+ upper += QChar(QChar::highSurrogate(0x10400));
+ upper += QChar(QChar::lowSurrogate(0x10400));
+ QString lower;
+ lower += QChar(QChar::highSurrogate(0x10428));
+ lower += QChar(QChar::lowSurrogate(0x10428));
+ QTest::newRow("data8") << upper << lower << -1 << 0;
+
+ // embedded nulls
+ // These dont work as of now. Its OK that these dont work since \0 is not a valid unicode
+ /*QTest::newRow("data9") << QString(QByteArray("\0", 1)) << QString(QByteArray("\0", 1)) << 0 << 0;
+ QTest::newRow("data10") << QString(QByteArray("\0", 1)) << QString("") << 1 << 1;
+ QTest::newRow("data11") << QString("") << QString(QByteArray("\0", 1)) << -1 << -1;
+ QTest::newRow("data12") << QString("ab\0c") << QString(QByteArray("ab\0c", 4)) << 0 << 0;
+ QTest::newRow("data13") << QString(QByteArray("ab\0c", 4)) << QString("abc") << -1 << -1;
+ QTest::newRow("data14") << QString("abc") << QString(QByteArray("ab\0c", 4)) << 1 << 1;*/
+}
+
+static bool isLatin(const QString &s)
+{
+ for (int i = 0; i < s.length(); ++i)
+ if (s.at(i).unicode() > 0xff)
+ return false;
+ return true;
+}
+
+void tst_QString::compare()
+{
+ QFETCH(QString, s1);
+ QFETCH(QString, s2);
+ QFETCH(int, csr);
+ QFETCH(int, cir);
+
+ QStringRef r1(&s1, 0, s1.length());
+ QStringRef r2(&s2, 0, s2.length());
+
+ QCOMPARE(sign(QString::compare(s1, s2)), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, r2)), csr);
+ QCOMPARE(sign(s1.compare(s2)), csr);
+ QCOMPARE(sign(s1.compare(r2)), csr);
+ QCOMPARE(sign(r1.compare(r2)), csr);
+
+ QCOMPARE(sign(s1.compare(s2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(s1.compare(s2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(s1.compare(r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(s1.compare(r2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(r1.compare(r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(r1.compare(r2, Qt::CaseInsensitive)), cir);
+
+ QCOMPARE(sign(QString::compare(s1, s2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(QString::compare(s1, s2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(QString::compare(s1, r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(QString::compare(s1, r2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(QStringRef::compare(r1, r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, r2, Qt::CaseInsensitive)), cir);
+
+ if (!cir) {
+ QCOMPARE(s1.toCaseFolded(), s2.toCaseFolded());
+ }
+
+ if (isLatin(s2)) {
+ QCOMPARE(sign(QString::compare(s1, QLatin1String(s2.toLatin1()))), csr);
+ QCOMPARE(sign(QString::compare(s1, QLatin1String(s2.toLatin1()), Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(s2.toLatin1()))), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(s2.toLatin1()), Qt::CaseInsensitive)), cir);
+ }
+
+ if (isLatin(s1)) {
+ QCOMPARE(sign(QString::compare(QLatin1String(s1.toLatin1()), s2)), csr);
+ QCOMPARE(sign(QString::compare(QLatin1String(s1.toLatin1()), s2, Qt::CaseInsensitive)), cir);
+ }
+}
+
+void tst_QString::resizeAfterFromRawData()
+{
+ QString buffer("hello world");
+
+ QString array = QString::fromRawData(buffer.constData(), buffer.size());
+ QVERIFY(array.constData() == buffer.constData());
+ array.resize(5);
+ QVERIFY(array.constData() == buffer.constData());
+}
+
+void tst_QString::resizeAfterReserve()
+{
+
+ QString s;
+ s.reserve(100);
+
+ s += "hello world";
+
+ // resize should not affect capacity
+ s.resize(s.size());
+ QVERIFY(s.capacity() == 100);
+
+ // but squeeze does
+ s.squeeze();
+ QVERIFY(s.capacity() == s.size());
+
+ // clear does too
+ s.clear();
+ QVERIFY(s.capacity() == 0);
+
+ // test resize(0) border case
+ s.reserve(100);
+ s += "hello world";
+ s.resize(0);
+ QVERIFY(s.capacity() == 100);
+}
+
+void tst_QString::resizeWithNegative() const
+{
+ {
+ QString string(QLatin1String("input"));
+ string.resize(-1);
+ QCOMPARE(string, QString());
+ }
+
+ {
+ QString string(QLatin1String("input"));
+ string.resize(-9099);
+ QCOMPARE(string, QString());
+ }
+
+ {
+ /* Example code from customer. */
+ QString s(QLatin1String("hola"));
+ s.reserve(1);
+ s.resize(-1);
+ QCOMPARE(s, QString());
+ }
+}
+
+void tst_QString::truncateWithNegative() const
+{
+ {
+ QString string(QLatin1String("input"));
+ string.truncate(-1);
+ QCOMPARE(string, QString());
+ }
+
+ {
+ QString string(QLatin1String("input"));
+ string.truncate(-9099);
+ QCOMPARE(string, QString());
+ }
+
+ {
+ /* Example code from customer. */
+ QString test(QLatin1String("c"));
+
+ test.replace(QRegExp(QLatin1String("c")), QLatin1String("z"));
+ test.truncate(-1);
+ QCOMPARE(test, QString());
+ }
+}
+
+void tst_QString::QCharRefMutableUnicode() const
+{
+ QString str;
+ str.resize(3);
+ str[0].unicode() = 115;
+ str[1].unicode() = 116;
+ str[2].unicode() = 114;
+
+ QCOMPARE(str, QString::fromLatin1("str"));
+}
+
+void tst_QString::QCharRefDetaching() const
+{
+ {
+ QString str = QString::fromLatin1("str");
+ QString copy;
+ copy[0] = QLatin1Char('S');
+
+ QCOMPARE(str, QString::fromLatin1("str"));
+ }
+
+ {
+ ushort buf[] = { 's', 't', 'r' };
+ QString str = QString::fromRawData((const QChar *)buf, 3);
+ str[0] = QLatin1Char('S');
+
+ QCOMPARE(buf[0], ushort('s'));
+ }
+
+ {
+ static const ushort buf[] = { 's', 't', 'r' };
+ QString str = QString::fromRawData((const QChar *)buf, 3);
+
+ // this causes a crash in most systems if the detaching doesn't work
+ str[0] = QLatin1Char('S');
+
+ QCOMPARE(buf[0], ushort('s'));
+ }
+}
+
+void tst_QString::sprintfZU() const
+{
+ {
+ QString string;
+ size_t s = 6;
+ string.sprintf("%zu", s);
+ QCOMPARE(string, QString::fromLatin1("6"));
+ }
+
+ {
+ QString string;
+ string.sprintf("%s\n", "foo");
+ QCOMPARE(string, QString::fromLatin1("foo\n"));
+ }
+
+ {
+ /* This code crashed. I don't know how to reduce it further. In other words,
+ * both %zu and %s needs to be present. */
+ size_t s = 6;
+ QString string;
+ string.sprintf("%zu%s", s, "foo");
+ QCOMPARE(string, QString::fromLatin1("6foo"));
+ }
+
+ {
+ size_t s = 6;
+ QString string;
+ string.sprintf("%zu %s\n", s, "foo");
+ QCOMPARE(string, QString::fromLatin1("6 foo\n"));
+ }
+}
+
+void tst_QString::repeatedSignature() const
+{
+ /* repated() should be a const member. */
+ const QString string;
+ string.repeated(3);
+}
+
+void tst_QString::repeated() const
+{
+ QFETCH(QString, string);
+ QFETCH(QString, expected);
+ QFETCH(int, count);
+
+ QCOMPARE(string.repeated(count), expected);
+}
+
+void tst_QString::repeated_data() const
+{
+ QTest::addColumn<QString>("string" );
+ QTest::addColumn<QString>("expected" );
+ QTest::addColumn<int>("count" );
+
+ /* Empty strings. */
+ QTest::newRow("")
+ << QString()
+ << QString()
+ << 0;
+
+ QTest::newRow("")
+ << QString()
+ << QString()
+ << -1004;
+
+ QTest::newRow("")
+ << QString()
+ << QString()
+ << 1;
+
+ QTest::newRow("")
+ << QString()
+ << QString()
+ << 5;
+
+ /* On simple string. */
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString()
+ << -1004;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString()
+ << -1;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString()
+ << 0;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString(QLatin1String("abc"))
+ << 1;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString(QLatin1String("abcabc"))
+ << 2;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString(QLatin1String("abcabcabc"))
+ << 3;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString(QLatin1String("abcabcabcabc"))
+ << 4;
+}
+
+void tst_QString::task262677remove()
+{
+ QString driveName = QLatin1String("V:\\blahblah\\more_blahblah\\");
+ driveName.remove(2, INT_MAX); // should be "V:" - instead, it's "V::\\blahblah\\more_blahblah\\"
+ QVERIFY(driveName == QLatin1String("V:"));
+}
+
+void tst_QString::QTBUG10404_compareRef()
+{
+ QString a = "ABCDEFGH";
+
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QLatin1String("BC")), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QLatin1String("BCD")) < 0);
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QLatin1String("Bc"), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QLatin1String("bCD"), Qt::CaseInsensitive) < 0);
+
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QString::fromLatin1("BC")), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QString::fromLatin1("BCD")) < 0);
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QString::fromLatin1("Bc"), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QString::fromLatin1("bCD"), Qt::CaseInsensitive) < 0);
+
+ QCOMPARE(QString::fromLatin1("BC").compare(QStringRef(&a, 1, 2)), 0);
+ QVERIFY(QString::fromLatin1("BCD").compare(QStringRef(&a, 1, 2)) > 0);
+ QCOMPARE(QString::fromLatin1("Bc").compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
+ QVERIFY(QString::fromLatin1("bCD").compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive) > 0);
+
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 2)), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 3)) < 0);
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 3), Qt::CaseInsensitive) < 0);
+
+ QString a2 = "ABCDEFGh";
+ QCOMPARE(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 2)), 0);
+ QVERIFY(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 3)) < 0);
+ QCOMPARE(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 3), Qt::CaseInsensitive) < 0);
+}
+
+void tst_QString::QTBUG9281_arg_locale()
+{
+ QLocale l(QLocale::English, QLocale::UnitedKingdom);
+ l.setNumberOptions(QLocale::OmitGroupSeparator);
+ QLocale::setDefault(l);
+ QString str("*%L1*%L2*");
+ str = str.arg(123456).arg(1234.56);
+ QCOMPARE(str, QString::fromLatin1("*123456*1234.56*"));
+ QLocale::setDefault(QLocale::C);
+}
+
+void tst_QString::toUpperLower_icu()
+{
+#ifndef QT_USE_ICU
+ QSKIP("Qt was built without ICU support", SkipAll);
+#endif
+
+ QString s = QString::fromLatin1("i");
+
+ QCOMPARE(s.toUpper(), QString::fromLatin1("I"));
+ QCOMPARE(s.toLower(), QString::fromLatin1("i"));
+
+ QLocale::setDefault(QLocale(QLocale::Turkish, QLocale::Turkey));
+
+ QCOMPARE(s.toUpper(), QString::fromLatin1("I"));
+ QCOMPARE(s.toLower(), QString::fromLatin1("i"));
+
+ // turkish locale has a capital I with a dot (U+0130, utf8 c4b0)
+ QLocale l;
+
+ QCOMPARE(l.toUpper(s), QString::fromUtf8("\xc4\xb0"));
+ QCOMPARE(l.toLower(QString::fromUtf8("\xc4\xb0")), s);
+
+ // nothing should happen here
+ QCOMPARE(l.toLower(s), s);
+ QCOMPARE(l.toUpper(QString::fromLatin1("I")), QString::fromLatin1("I"));
+
+ // U+0131, utf8 c4b1 is the lower-case i without a dot
+ QString sup = QString::fromUtf8("\xc4\xb1");
+
+ QCOMPARE(l.toUpper(sup), QString::fromLatin1("I"));
+ QCOMPARE(l.toLower(QString::fromLatin1("I")), sup);
+
+ // nothing should happen here
+ QCOMPARE(l.toLower(sup), sup);
+ QCOMPARE(l.toLower(QString::fromLatin1("i")), QString::fromLatin1("i"));
+
+ // the cleanup function will restore the default locale
+}
+
+void tst_QString::literals()
+{
+#if defined(QT_UNICODE_LITERAL) && (defined(Q_COMPILER_LAMBDA) || defined(Q_CC_GNU))
+ QString str(QStringLiteral("abcd"));
+
+ QVERIFY(str.length() == 4);
+ QVERIFY(str == QLatin1String("abcd"));
+ QVERIFY(str.data_ptr()->ref == -1);
+ QVERIFY(str.data_ptr()->offset == 0);
+
+ const QChar *s = str.constData();
+ QString str2 = str;
+ QVERIFY(str2.constData() == s);
+
+ // detach on non const access
+ QVERIFY(str.data() != s);
+
+ QVERIFY(str2.constData() == s);
+ QVERIFY(str2.data() != s);
+
+#else
+ QSKIP("Only tested on c++0x compliant compiler or gcc", SkipAll);
+#endif
+}
+
+
+QTEST_APPLESS_MAIN(tst_QString)
+
+#include "tst_qstring.moc"
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder.pro b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder.pro
new file mode 100644
index 0000000000..d73d541502
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder.pro
@@ -0,0 +1,6 @@
+TEMPLATE=subdirs
+SUBDIRS= \
+ qstringbuilder1 \
+ qstringbuilder2 \
+ qstringbuilder3 \
+ qstringbuilder4
diff --git a/tests/auto/qstringbuilder1/qstringbuilder1.pro b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/qstringbuilder1.pro
index dc9062f4da..dc9062f4da 100644
--- a/tests/auto/qstringbuilder1/qstringbuilder1.pro
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/qstringbuilder1.pro
diff --git a/tests/auto/qstringbuilder1/stringbuilder.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp
index 4d453b0585..4d453b0585 100644
--- a/tests/auto/qstringbuilder1/stringbuilder.cpp
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp
diff --git a/tests/auto/qstringbuilder1/tst_qstringbuilder1.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp
index 134da1d877..134da1d877 100644
--- a/tests/auto/qstringbuilder1/tst_qstringbuilder1.cpp
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp
diff --git a/tests/auto/qstringbuilder2/qstringbuilder2.pro b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/qstringbuilder2.pro
index a57c6f19f2..a57c6f19f2 100644
--- a/tests/auto/qstringbuilder2/qstringbuilder2.pro
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/qstringbuilder2.pro
diff --git a/tests/auto/qstringbuilder2/tst_qstringbuilder2.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp
index b74cea069d..b74cea069d 100644
--- a/tests/auto/qstringbuilder2/tst_qstringbuilder2.cpp
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp
diff --git a/tests/auto/qstringbuilder3/qstringbuilder3.pro b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/qstringbuilder3.pro
index 5aced7c258..5aced7c258 100644
--- a/tests/auto/qstringbuilder3/qstringbuilder3.pro
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/qstringbuilder3.pro
diff --git a/tests/auto/qstringbuilder3/tst_qstringbuilder3.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp
index 0320ed293d..0320ed293d 100644
--- a/tests/auto/qstringbuilder3/tst_qstringbuilder3.cpp
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp
diff --git a/tests/auto/qstringbuilder4/qstringbuilder4.pro b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/qstringbuilder4.pro
index 0532a9b925..0532a9b925 100644
--- a/tests/auto/qstringbuilder4/qstringbuilder4.pro
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/qstringbuilder4.pro
diff --git a/tests/auto/qstringbuilder4/tst_qstringbuilder4.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp
index 7013780789..7013780789 100644
--- a/tests/auto/qstringbuilder4/tst_qstringbuilder4.cpp
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp
diff --git a/tests/auto/qstringlist/.gitignore b/tests/auto/corelib/tools/qstringlist/.gitignore
index 3e0cdc952f..3e0cdc952f 100644
--- a/tests/auto/qstringlist/.gitignore
+++ b/tests/auto/corelib/tools/qstringlist/.gitignore
diff --git a/tests/auto/qstringlist/qstringlist.pro b/tests/auto/corelib/tools/qstringlist/qstringlist.pro
index d82a3487fd..d82a3487fd 100644
--- a/tests/auto/qstringlist/qstringlist.pro
+++ b/tests/auto/corelib/tools/qstringlist/qstringlist.pro
diff --git a/tests/auto/qstringlist/tst_qstringlist.cpp b/tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp
index 3342ec0d79..3342ec0d79 100644
--- a/tests/auto/qstringlist/tst_qstringlist.cpp
+++ b/tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp
diff --git a/tests/auto/qstringmatcher/.gitignore b/tests/auto/corelib/tools/qstringmatcher/.gitignore
index 3c7caf8490..3c7caf8490 100644
--- a/tests/auto/qstringmatcher/.gitignore
+++ b/tests/auto/corelib/tools/qstringmatcher/.gitignore
diff --git a/tests/auto/qstringmatcher/qstringmatcher.pro b/tests/auto/corelib/tools/qstringmatcher/qstringmatcher.pro
index c5249ec84a..c5249ec84a 100644
--- a/tests/auto/qstringmatcher/qstringmatcher.pro
+++ b/tests/auto/corelib/tools/qstringmatcher/qstringmatcher.pro
diff --git a/tests/auto/qstringmatcher/tst_qstringmatcher.cpp b/tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp
index 9dade954f8..9dade954f8 100644
--- a/tests/auto/qstringmatcher/tst_qstringmatcher.cpp
+++ b/tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp
diff --git a/tests/auto/qstringref/qstringref.pro b/tests/auto/corelib/tools/qstringref/qstringref.pro
index 34f2de46ae..34f2de46ae 100644
--- a/tests/auto/qstringref/qstringref.pro
+++ b/tests/auto/corelib/tools/qstringref/qstringref.pro
diff --git a/tests/auto/qstringref/tst_qstringref.cpp b/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
index dbf8ee73fc..dbf8ee73fc 100644
--- a/tests/auto/qstringref/tst_qstringref.cpp
+++ b/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
diff --git a/tests/auto/qtextboundaryfinder/.gitignore b/tests/auto/corelib/tools/qtextboundaryfinder/.gitignore
index bd0df58233..bd0df58233 100644
--- a/tests/auto/qtextboundaryfinder/.gitignore
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/.gitignore
diff --git a/tests/auto/qtextboundaryfinder/data/GraphemeBreakTest.txt b/tests/auto/corelib/tools/qtextboundaryfinder/data/GraphemeBreakTest.txt
index 69096e1065..69096e1065 100644
--- a/tests/auto/qtextboundaryfinder/data/GraphemeBreakTest.txt
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/data/GraphemeBreakTest.txt
diff --git a/tests/auto/qtextboundaryfinder/data/SentenceBreakTest.txt b/tests/auto/corelib/tools/qtextboundaryfinder/data/SentenceBreakTest.txt
index 431d0e6a36..431d0e6a36 100644
--- a/tests/auto/qtextboundaryfinder/data/SentenceBreakTest.txt
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/data/SentenceBreakTest.txt
diff --git a/tests/auto/qtextboundaryfinder/data/WordBreakTest.txt b/tests/auto/corelib/tools/qtextboundaryfinder/data/WordBreakTest.txt
index 2ece4560d7..2ece4560d7 100644
--- a/tests/auto/qtextboundaryfinder/data/WordBreakTest.txt
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/data/WordBreakTest.txt
diff --git a/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro b/tests/auto/corelib/tools/qtextboundaryfinder/qtextboundaryfinder.pro
index 5f3cb119f4..5f3cb119f4 100644
--- a/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/qtextboundaryfinder.pro
diff --git a/tests/auto/qtextboundaryfinder/tst_qtextboundaryfinder.cpp b/tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp
index 3657556189..3657556189 100644
--- a/tests/auto/qtextboundaryfinder/tst_qtextboundaryfinder.cpp
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp
diff --git a/tests/auto/qtime/.gitignore b/tests/auto/corelib/tools/qtime/.gitignore
index 26a4c65cc2..26a4c65cc2 100644
--- a/tests/auto/qtime/.gitignore
+++ b/tests/auto/corelib/tools/qtime/.gitignore
diff --git a/tests/auto/qtime/qtime.pro b/tests/auto/corelib/tools/qtime/qtime.pro
index ce4f7ae91f..ce4f7ae91f 100644
--- a/tests/auto/qtime/qtime.pro
+++ b/tests/auto/corelib/tools/qtime/qtime.pro
diff --git a/tests/auto/qtime/tst_qtime.cpp b/tests/auto/corelib/tools/qtime/tst_qtime.cpp
index 746f36d6d9..746f36d6d9 100644
--- a/tests/auto/qtime/tst_qtime.cpp
+++ b/tests/auto/corelib/tools/qtime/tst_qtime.cpp
diff --git a/tests/auto/qtimeline/.gitignore b/tests/auto/corelib/tools/qtimeline/.gitignore
index fa0e347d80..fa0e347d80 100644
--- a/tests/auto/qtimeline/.gitignore
+++ b/tests/auto/corelib/tools/qtimeline/.gitignore
diff --git a/tests/auto/qtimeline/qtimeline.pro b/tests/auto/corelib/tools/qtimeline/qtimeline.pro
index 9be717dba8..9be717dba8 100644
--- a/tests/auto/qtimeline/qtimeline.pro
+++ b/tests/auto/corelib/tools/qtimeline/qtimeline.pro
diff --git a/tests/auto/qtimeline/tst_qtimeline.cpp b/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp
index 176688b809..176688b809 100644
--- a/tests/auto/qtimeline/tst_qtimeline.cpp
+++ b/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp
diff --git a/tests/auto/qvarlengtharray/.gitignore b/tests/auto/corelib/tools/qvarlengtharray/.gitignore
index d085e835c7..d085e835c7 100644
--- a/tests/auto/qvarlengtharray/.gitignore
+++ b/tests/auto/corelib/tools/qvarlengtharray/.gitignore
diff --git a/tests/auto/qvarlengtharray/qvarlengtharray.pro b/tests/auto/corelib/tools/qvarlengtharray/qvarlengtharray.pro
index 183da1b938..183da1b938 100644
--- a/tests/auto/qvarlengtharray/qvarlengtharray.pro
+++ b/tests/auto/corelib/tools/qvarlengtharray/qvarlengtharray.pro
diff --git a/tests/auto/qvarlengtharray/tst_qvarlengtharray.cpp b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
index fd67758cb6..fd67758cb6 100644
--- a/tests/auto/qvarlengtharray/tst_qvarlengtharray.cpp
+++ b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
diff --git a/tests/auto/qvector/.gitignore b/tests/auto/corelib/tools/qvector/.gitignore
index 5520039486..5520039486 100644
--- a/tests/auto/qvector/.gitignore
+++ b/tests/auto/corelib/tools/qvector/.gitignore
diff --git a/tests/auto/qvector/qvector.pro b/tests/auto/corelib/tools/qvector/qvector.pro
index a7c3957f2c..a7c3957f2c 100644
--- a/tests/auto/qvector/qvector.pro
+++ b/tests/auto/corelib/tools/qvector/qvector.pro
diff --git a/tests/auto/qvector/tst_qvector.cpp b/tests/auto/corelib/tools/qvector/tst_qvector.cpp
index 4cc2bc481a..4cc2bc481a 100644
--- a/tests/auto/qvector/tst_qvector.cpp
+++ b/tests/auto/corelib/tools/qvector/tst_qvector.cpp
diff --git a/tests/auto/corelib/tools/tools.pro b/tests/auto/corelib/tools/tools.pro
new file mode 100644
index 0000000000..930799e3b3
--- /dev/null
+++ b/tests/auto/corelib/tools/tools.pro
@@ -0,0 +1,44 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qalgorithms \
+ qbitarray \
+ qbytearray \
+ qbytearraymatcher \
+ qcache \
+ qchar \
+ qcontiguouscache \
+ qcryptographichash \
+ qdate \
+ qdatetime \
+ qeasingcurve \
+ qelapsedtimer \
+ qexplicitlyshareddatapointer \
+ qfreelist \
+ qhash \
+ qline \
+ qlist \
+ qlocale \
+ qmap \
+ qmargins \
+ qpoint \
+ qqueue \
+ qrect \
+ qregexp \
+ qringbuffer \
+ qscopedpointer \
+ qscopedvaluerollback \
+ qset \
+ qsharedpointer \
+ qsize \
+ qsizef \
+ qstl \
+ qstring \
+ qstringbuilder \
+ qstringlist \
+ qstringmatcher \
+ qstringref \
+ qtextboundaryfinder \
+ qtime \
+ qtimeline \
+ qvarlengtharray \
+ qvector
diff --git a/tests/auto/qxmlstream/.gitattributes b/tests/auto/corelib/xml/qxmlstream/.gitattributes
index 1179160a76..1179160a76 100644
--- a/tests/auto/qxmlstream/.gitattributes
+++ b/tests/auto/corelib/xml/qxmlstream/.gitattributes
diff --git a/tests/auto/qxmlstream/.gitignore b/tests/auto/corelib/xml/qxmlstream/.gitignore
index 0131c9090c..0131c9090c 100644
--- a/tests/auto/qxmlstream/.gitignore
+++ b/tests/auto/corelib/xml/qxmlstream/.gitignore
diff --git a/tests/auto/qxmlstream/XML-Test-Suite-LICENSE.txt b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite-LICENSE.txt
index bd84fae346..bd84fae346 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite-LICENSE.txt
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite-LICENSE.txt
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Entries
index ba3a807265..ba3a807265 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Repository
index 8b5cf35650..8b5cf35650 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/matrix.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/matrix.html
index 7cdd2c8051..7cdd2c8051 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/matrix.html
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/matrix.html
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Entries
index fcc3c02242..fcc3c02242 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Repository
index d1c36626fc..d1c36626fc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/changes.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/changes.html
index 7ec5b43cef..7ec5b43cef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/changes.html
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/changes.html
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Entries
index 1ada1803bf..1ada1803bf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Repository
index ac61f21224..ac61f21224 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Entries
index b14a51b5f5..b14a51b5f5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Repository
index e138ad2e84..e138ad2e84 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.dtd
index c46237f80c..c46237f80c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.xml
index 96f0ed7c30..96f0ed7c30 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15a.xml
index 4c05a33bc3..4c05a33bc3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15a.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15a.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15b.xml
index 03270e5ad5..03270e5ad5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15b.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15b.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15c.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15c.xml
index 6cfe53140b..6cfe53140b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15c.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15c.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15d.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15d.xml
index 9074c8d5c7..9074c8d5c7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15d.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15d.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15e.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15e.xml
index 2228b35e8e..2228b35e8e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15e.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15e.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15f.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15f.xml
index b65fe0d1b9..b65fe0d1b9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15f.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15f.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15g.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15g.xml
index c806deae54..c806deae54 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15g.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15g.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15h.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15h.xml
index 970599ee10..970599ee10 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15h.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15h.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15i.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15i.xml
index 25dac7fa73..25dac7fa73 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15i.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15i.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15j.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15j.xml
index c7006d2cf7..c7006d2cf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15j.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15j.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15k.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15k.xml
index 06631abb90..06631abb90 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15k.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15k.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15l.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15l.xml
index 986808d7f7..986808d7f7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15l.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15l.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18-ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18-ent
index b5508ffbf1..b5508ffbf1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18-ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18-ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18.xml
index 4572e53bea..4572e53bea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.dtd
index 13ec57a6f1..13ec57a6f1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.xml
index 56ecaacb28..56ecaacb28 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E20.xml
index 1a998134b1..1a998134b1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E20.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E22.xml
index 6b7d256c76..6b7d256c76 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E22.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E24.xml
index 45e3e164b7..45e3e164b7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E24.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E27.xml
index 9c10725323..9c10725323 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E27.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E27.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E29.xml
index da0493a38d..da0493a38d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E29.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E29.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2a.xml
index b5e885b088..b5e885b088 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2a.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2a.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2b.xml
index b3aac725e8..b3aac725e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2b.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2b.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E34.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E34.xml
index c12012bab2..c12012bab2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E34.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E34.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.dtd
index 27c627e520..27c627e520 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.xml
index 482de15c19..482de15c19 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.ent
index 137ed58831..137ed58831 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.xml
index e61b897e34..e61b897e34 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E41.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E41.xml
index 42d77e4441..42d77e4441 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E41.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E41.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E48.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E48.xml
index 5ca162a819..5ca162a819 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E48.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E48.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E50.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E50.xml
index 760ae17c07..760ae17c07 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E50.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E50.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E55.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E55.xml
index abb90efad5..abb90efad5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E55.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E55.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E57.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E57.xml
index 9174fa34a8..9174fa34a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E57.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E57.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.ent
index 3b07eb340e..3b07eb340e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.xml
index f98f33f4a2..f98f33f4a2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E61.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E61.xml
index 22c342fe28..22c342fe28 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E61.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E61.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9a.xml
index 9104cc4cba..9104cc4cba 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9a.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9a.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9b.xml
index 9a2bbbc030..9a2bbbc030 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9b.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9b.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/errata2e.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/errata2e.xml
index 51d92fd956..51d92fd956 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/errata2e.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/errata2e.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Entries
index 84bbe99bd6..84bbe99bd6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Repository
index 94bd81f49f..94bd81f49f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E18.xml
index 727de27226..727de27226 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E19.xml
index c1db16e5fa..c1db16e5fa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E19.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E24.xml
index abed8b7372..abed8b7372 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E24.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Entries
index e7f219e7b5..e7f219e7b5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Repository
index 22c019b707..22c019b707 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-ent
index 09709bdd52..09709bdd52 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-pe b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-pe
index 8a63a9291c..8a63a9291c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-pe
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-pe
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Entries
index 9b4abb18bb..9b4abb18bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Repository
index 9a886b0ccb..9a886b0ccb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-ent
index 73b4db0700..73b4db0700 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-extpe b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-extpe
index 2ba97bd947..2ba97bd947 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-extpe
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-extpe
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/testcases.dtd
index 448d362991..448d362991 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/testcases.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/testcases.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/xmlconf.xml
index 9c7d92eec6..9c7d92eec6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/xmlconf.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/xmlconf.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Entries
index 75b258e445..75b258e445 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Repository
index 748d2db480..748d2db480 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05a.xml
index 42654d1651..42654d1651 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05a.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05a.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05b.xml
index 2522b035c4..2522b035c4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05b.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05b.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06a.xml
index 1174ed52a8..1174ed52a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06a.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06a.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06b.xml
index d11d8cdcab..d11d8cdcab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06b.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06b.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06c.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06c.xml
index bd0fd5351d..bd0fd5351d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06c.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06c.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06d.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06d.xml
index 0671b7466f..0671b7466f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06d.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06d.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06e.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06e.xml
index 2b737e099b..2b737e099b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06e.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06e.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06f.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06f.xml
index 47e4618632..47e4618632 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06f.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06f.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06g.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06g.xml
index 37b1ee6ae6..37b1ee6ae6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06g.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06g.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06h.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06h.xml
index 1b3f11aeb4..1b3f11aeb4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06h.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06h.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06i.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06i.xml
index dd79ee2899..dd79ee2899 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06i.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06i.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E12.xml
index 784f3424ee..784f3424ee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E13.xml
index d93ef3ee5d..d93ef3ee5d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/errata3e.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/errata3e.xml
index 3eda8c6fd1..3eda8c6fd1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/errata3e.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/errata3e.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/testcases.dtd
index 448d362991..448d362991 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/testcases.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/testcases.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/xmlconf.xml
index dcc571a743..dcc571a743 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/xmlconf.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/xmlconf.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/001.xml
index dca5e6705f..dca5e6705f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/001.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/002.xml
index 3749bcbbb7..3749bcbbb7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/002.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/003.xml
index 66c5cb8191..66c5cb8191 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/003.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/004.xml
index e7d91d5d33..e7d91d5d33 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/004.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/005.xml
index dc9c663649..dc9c663649 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/005.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/006.xml
index 80c8bf75d1..80c8bf75d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/006.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/007.xml
index 667bd63d1b..667bd63d1b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/007.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/008.xml
index d63bc3c45e..d63bc3c45e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/008.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/008.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/009.xml
index d67c066ec4..d67c066ec4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/009.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/009.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/010.xml
index 2216fd6dce..2216fd6dce 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/010.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/011.xml
index f22269b2df..f22269b2df 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/011.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/011.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/012.xml
index 26d9b1bebb..26d9b1bebb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/012.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/012.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/013.xml
index e8770ea1cf..e8770ea1cf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/013.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/013.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/014.xml
index 7c8e9fa2a3..7c8e9fa2a3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/014.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/014.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/015.xml
index 503018e705..503018e705 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/015.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/015.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/016.xml
index 8a3c44e45d..8a3c44e45d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/016.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/016.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/017.xml
index 65e754257d..65e754257d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/017.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/017.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/018.xml
index e795466550..e795466550 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/018.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/018.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/019.xml
index c4620bd097..c4620bd097 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/019.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/019.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/020.xml
index 4e5fcad48d..4e5fcad48d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/020.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/020.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/021.xml
index e56c240c42..e56c240c42 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/021.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/021.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/022.xml
index 31984e79bf..31984e79bf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/022.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/022.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/023.xml
index 4d695ad38d..4d695ad38d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/023.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/023.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/024.xml
index b68470afa6..b68470afa6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/024.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/024.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/025.xml
index 1277ab33da..1277ab33da 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/025.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/025.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/026.xml
index 689c75c666..689c75c666 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/026.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/026.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/027.xml
index 1bf048e7f9..1bf048e7f9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/027.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/027.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/028.xml
index e461235571..e461235571 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/028.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/028.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/029.xml
index 2c05165d9d..2c05165d9d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/029.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/029.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/030.xml
index db5ab4dbc2..db5ab4dbc2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/030.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/030.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/031.xml
index 2eec6cc6d0..2eec6cc6d0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/031.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/031.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/032.xml
index 94433263c5..94433263c5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/032.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/032.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/033.xml
index d9ee72807c..d9ee72807c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/033.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/033.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/034.xml
index 4fa2b8dbb0..4fa2b8dbb0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/034.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/034.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/035.xml
index 97b14b3106..97b14b3106 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/035.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/035.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/036.xml
index c37894b5d7..c37894b5d7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/036.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/036.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/037.xml
index 30bc24b5b2..30bc24b5b2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/037.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/037.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/038.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/038.xml
index 2b20a469e0..2b20a469e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/038.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/038.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/039.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/039.xml
index af7be31dc7..af7be31dc7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/039.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/039.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/040.xml
index cf02e22bfa..cf02e22bfa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/040.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/040.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/041.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/041.xml
index 80781e2e2b..80781e2e2b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/041.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/041.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/042.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/042.xml
index 045dcc23dc..045dcc23dc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/042.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/042.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/043.xml
index d800e2537b..d800e2537b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/043.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/043.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/044.xml
index 30922c8d2b..30922c8d2b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/044.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/044.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/045.xml
index 3235470923..3235470923 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/045.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/045.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/046.xml
index 8432a2faaa..8432a2faaa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/046.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/046.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Entries
index 9162d1bae5..9162d1bae5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Repository
index 771fee0884..771fee0884 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/rmt-ns10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/rmt-ns10.xml
index 7cc985b5a9..7cc985b5a9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/rmt-ns10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/rmt-ns10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/001.xml
index b4b8b96e68..b4b8b96e68 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/001.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/002.xml
index 722df453c0..722df453c0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/002.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/003.xml
index 71d7343eb0..71d7343eb0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/003.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/004.xml
index fe89ec2f86..fe89ec2f86 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/004.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/005.xml
index cf47356b5b..cf47356b5b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/005.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/006.xml
index 9235054a2c..9235054a2c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/006.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Entries
index d1bf8d0fc7..d1bf8d0fc7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Repository
index 92664cd3be..92664cd3be 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/rmt-ns11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/rmt-ns11.xml
index 747aa47c58..747aa47c58 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/rmt-ns11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/rmt-ns11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries
index 2229b3fc8d..2229b3fc8d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries.Log b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries.Log
index 1044e1317e..1044e1317e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries.Log
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries.Log
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Repository
index d277ba7aa6..d277ba7aa6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Entries
index 3170ace724..3170ace724 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Repository
index 6ee3edf5a9..6ee3edf5a9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13a.xml
index b3a3a6b544..b3a3a6b544 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13a.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13a.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13b.xml
index b483caf6a6..b483caf6a6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13b.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13b.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13c.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13c.xml
index fb28af71d1..fb28af71d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13c.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13c.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/errata1e.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/errata1e.xml
index fd2ebf7a87..fd2ebf7a87 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/errata1e.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/errata1e.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/testcases.dtd
index 448d362991..448d362991 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/testcases.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/testcases.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/xmlconf.xml
index e8a004303f..e8a004303f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/xmlconf.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/xmlconf.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/testcases.dtd
index 448d362991..448d362991 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/testcases.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/testcases.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/xmlconf.xml
index 2d0dd86a1d..2d0dd86a1d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/xmlconf.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/xmlconf.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.dtd
index 61b3bf6eb6..61b3bf6eb6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.xml
index 3750a92147..3750a92147 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.pe b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.pe
index 61b3bf6eb6..61b3bf6eb6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.pe
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.pe
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.xml
index e152a71656..e152a71656 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.ent
index e513d58a51..e513d58a51 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.xml
index b0d3ee2b2a..b0d3ee2b2a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.ent
index e513d58a51..e513d58a51 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.xml
index cc9dfa2179..cc9dfa2179 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005.xml
index e3426a8537..e3426a8537 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_1.ent
index 427bb5081e..427bb5081e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_1.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_1.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_2.ent
index e513d58a51..e513d58a51 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_2.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_2.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006.xml
index a27a512b63..a27a512b63 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_1.ent
index 427bb5081e..427bb5081e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_1.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_1.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_2.ent
index e513d58a51..e513d58a51 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_2.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_2.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/007.xml
index e587762791..e587762791 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/007.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/008.xml
index 98f6c1ba0c..98f6c1ba0c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/008.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/008.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.ent
index 5c7d0dc7c7..5c7d0dc7c7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.xml
index b10354e4e6..b10354e4e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/010.xml
index 29b782878c..29b782878c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/010.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/011.xml
index 686f9abcc6..686f9abcc6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/011.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/011.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/012.xml
index 698db33712..698db33712 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/012.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/012.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/013.xml
index 399255893c..399255893c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/013.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/013.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/014.xml
index 05ac4aba77..05ac4aba77 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/014.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/014.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/015.xml
index a708f720ca..a708f720ca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/015.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/015.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/016.xml
index 81c035dcb7..81c035dcb7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/016.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/016.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/017.xml
index 08c03671e6..08c03671e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/017.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/017.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/018.xml
index b88ef98f93..b88ef98f93 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/018.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/018.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/019.xml
index 5bcdf49e8d..5bcdf49e8d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/019.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/019.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/020.xml
index 3cf6bf2e75..3cf6bf2e75 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/020.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/020.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/021.xml
index 6c8ff0fe03..6c8ff0fe03 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/021.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/021.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/022.xml
index 0081cef2a9..0081cef2a9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/022.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/022.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/023.xml
index 857a251a46..857a251a46 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/023.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/023.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/024.xml
index ee3cecba7e..ee3cecba7e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/024.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/024.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/025.xml
index 321601d42c..321601d42c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/025.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/025.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/026.xml
index 854e4e7785..854e4e7785 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/026.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/026.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/027.xml
index 9ba1d7c5fe..9ba1d7c5fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/027.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/027.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/028.xml
index 8fcfac0ecb..8fcfac0ecb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/028.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/028.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/029.xml
index 15f8e6d1d2..15f8e6d1d2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/029.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/029.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/030.xml
index 89ac243fb1..89ac243fb1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/030.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/030.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/031.xml
index 80510b8dd0..80510b8dd0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/031.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/031.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/032.xml
index 04e807655a..04e807655a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/032.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/032.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/033.xml
index 1b86446d13..1b86446d13 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/033.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/033.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/034.xml
index 1389e28769..1389e28769 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/034.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/034.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/035.xml
index 28275493a5..28275493a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/035.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/035.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/036.xml
index 26e02cdba1..26e02cdba1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/036.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/036.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/037.xml
index 7e0e9fd1b8..7e0e9fd1b8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/037.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/037.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/038.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/038.xml
index c172ca52cf..c172ca52cf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/038.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/038.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/039.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/039.xml
index d6ce5d05a6..d6ce5d05a6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/039.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/039.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/040.xml
index 2717a4f8a4..2717a4f8a4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/040.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/040.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/041.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/041.xml
index e3caa92050..e3caa92050 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/041.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/041.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/042.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/042.xml
index d12570ba01..d12570ba01 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/042.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/042.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/043.xml
index 771e807f94..771e807f94 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/043.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/043.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/044.xml
index fc47fbf6f2..fc47fbf6f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/044.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/044.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/045.xml
index 966f8c7906..966f8c7906 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/045.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/045.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/046.xml
index 8d1f955435..8d1f955435 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/046.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/046.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/047.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/047.xml
index 4231317ebf..4231317ebf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/047.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/047.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/048.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/048.xml
index b7a995d0be..b7a995d0be 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/048.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/048.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/049.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/049.xml
index 15608635a2..15608635a2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/049.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/049.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/050.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/050.xml
index 68b17cac37..68b17cac37 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/050.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/050.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/051.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/051.xml
index 916be37a09..916be37a09 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/051.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/051.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/052.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/052.xml
index 1a544dd26d..1a544dd26d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/052.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/052.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/053.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/053.xml
index 720e4393e0..720e4393e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/053.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/053.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/054.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/054.xml
index a60c006bae..a60c006bae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/054.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/054.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/055.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/055.xml
index fe5a6cc644..fe5a6cc644 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/055.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/055.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/056.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/056.xml
index 703f25b864..703f25b864 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/056.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/056.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/057.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/057.xml
index 1ee4071470..1ee4071470 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/057.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/057.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Entries
index 7dc624fe01..7dc624fe01 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Repository
index b4d2d355ce..b4d2d355ce 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/006.xml
index bb23ff88a9..bb23ff88a9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/006.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/007.xml
index 01d6d20520..01d6d20520 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/007.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/010.xml
index d24c7744c1..d24c7744c1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/010.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/012.xml
index 384344a000..384344a000 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/012.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/012.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/015.xml
index bbc5c27a14..bbc5c27a14 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/015.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/015.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/017.xml
index a169654ec8..a169654ec8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/017.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/017.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/018.xml
index e9ed497844..e9ed497844 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/018.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/018.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/022.xml
index dd89bed4e0..dd89bed4e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/022.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/022.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/023.xml
index be866ffc8b..be866ffc8b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/023.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/023.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/024.xml
index 0ae04b6fa6..0ae04b6fa6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/024.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/024.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/025.xml
index be866ffc8b..be866ffc8b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/025.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/025.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/026.xml
index 98aaebd487..98aaebd487 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/026.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/026.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/027.xml
index be866ffc8b..be866ffc8b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/027.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/027.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/028.xml
index 3537e31d0a..3537e31d0a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/028.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/028.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/029.xml
index 7f917046df..7f917046df 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/029.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/029.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/030.xml
index 10e9d7d2b5..10e9d7d2b5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/030.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/030.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/031.xml
index 128ee0e125..128ee0e125 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/031.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/031.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/032.xml
index b67e16498d..b67e16498d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/032.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/032.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/033.xml
index 128ee0e125..128ee0e125 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/033.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/033.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/034.xml
index da523b848e..da523b848e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/034.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/034.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/035.xml
index 128ee0e125..128ee0e125 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/035.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/035.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/036.xml
index 10e9d7d2b5..10e9d7d2b5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/036.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/036.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/037.xml
index fbdb0aab0a..fbdb0aab0a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/037.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/037.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/040.xml
index 7bbfacf14b..7bbfacf14b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/040.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/040.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/043.xml
index c858cf9436..c858cf9436 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/043.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/043.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/044.xml
index 7bbfacf14b..7bbfacf14b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/044.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/044.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/045.xml
index e86a8b6620..e86a8b6620 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/045.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/045.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/046.xml
index dd89bed4e0..dd89bed4e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/046.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/046.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/047.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/047.xml
index be866ffc8b..be866ffc8b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/047.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/047.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/048.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/048.xml
index 0ae04b6fa6..0ae04b6fa6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/048.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/048.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/049.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/049.xml
index be866ffc8b..be866ffc8b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/049.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/049.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/050.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/050.xml
index 7f3143d210..7f3143d210 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/050.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/050.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/051.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/051.xml
index d40772ba80..d40772ba80 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/051.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/051.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/052.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/052.xml
index efb77f2429..efb77f2429 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/052.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/052.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/053.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/053.xml
index 44e7304320..44e7304320 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/053.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/053.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/054.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/054.xml
index c858cf9436..c858cf9436 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/054.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/054.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Entries
index f4e8474467..f4e8474467 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Repository
index 7cae140bee..7cae140bee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/testcases.dtd
index 448d362991..448d362991 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/testcases.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/testcases.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xml11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xml11.xml
index 6bfe42c661..6bfe42c661 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xml11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xml11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xmlconf.xml
index af0a3b5fa1..af0a3b5fa1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xmlconf.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xmlconf.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Entries
index 2ca1cb0db5..2ca1cb0db5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Repository
index 88b76010b4..88b76010b4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/a_oasis-logo.gif b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/a_oasis-logo.gif
index 320150647c..320150647c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/a_oasis-logo.gif
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/a_oasis-logo.gif
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/committee.css b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/committee.css
index 1bf8e066e5..1bf8e066e5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/committee.css
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/committee.css
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/top3.jpe b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/top3.jpe
index 37185800cb..37185800cb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/files/top3.jpe
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/top3.jpe
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/finalCatalog.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/finalCatalog.xml
index adf39bac55..adf39bac55 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/finalCatalog.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/finalCatalog.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Entries
index 047d2e3ef0..047d2e3ef0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Repository
index e49e364c8a..e49e364c8a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_invalid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_invalid.xml
index 5134946591..5134946591 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_invalid.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_invalid.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_not-wf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_not-wf.xml
index f1e70c26cd..f1e70c26cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_not-wf.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_not-wf.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_readme.txt b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_readme.txt
index 6640e3c9f3..6640e3c9f3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_readme.txt
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_readme.txt
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_valid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_valid.xml
index 7544db3519..7544db3519 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_valid.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_valid.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Entries
index bc0025d2ad..bc0025d2ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Repository
index 27ee1f3e38..27ee1f3e38 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Entries
index 521a5a105c..521a5a105c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Repository
index c0716b8b9b..c0716b8b9b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/ibm28i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/ibm28i01.xml
index f9ea91cfb5..f9ea91cfb5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/ibm28i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/ibm28i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Entries
index df6f903ed9..df6f903ed9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Repository
index 24caa1588b..24caa1588b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/ibm28i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/ibm28i01.xml
index c712ea7861..c712ea7861 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/ibm28i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/ibm28i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Entries
index cf97c64551..cf97c64551 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Repository
index b6ce33a0ad..b6ce33a0ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.dtd
index 4828791469..4828791469 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.xml
index 68ca044d8e..68ca044d8e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.dtd
index 26743b6836..26743b6836 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.xml
index dbed9bce8c..dbed9bce8c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.dtd
index 358c3c7455..358c3c7455 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.xml
index bc2739078e..bc2739078e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Entries
index 23b45ac62a..23b45ac62a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Repository
index cab81954b6..cab81954b6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i01.xml
index 2ec4ca8d75..2ec4ca8d75 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i03.xml
index 42364d84a7..42364d84a7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i04.xml
index 9cc8454634..9cc8454634 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Entries
index 20c16488be..20c16488be 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Repository
index 15e4f85b56..15e4f85b56 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i01.xml
index 1ffa0bb5d9..1ffa0bb5d9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i02.xml
index cbf01fd15b..cbf01fd15b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i03.xml
index f50afab74b..f50afab74b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i04.xml
index 192447a700..192447a700 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Entries
index e658de736d..e658de736d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Repository
index a169f61827..a169f61827 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i01.xml
index 35bbc641ac..35bbc641ac 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i02.xml
index 2c21f47f2d..2c21f47f2d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i03.xml
index a5a526c983..a5a526c983 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i04.xml
index dd152f76b8..dd152f76b8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Entries
index a1ea2b1200..a1ea2b1200 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Repository
index e742ba96c5..e742ba96c5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i01.xml
index 05d67ade19..05d67ade19 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i02.xml
index 8c3d74e1b7..8c3d74e1b7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Entries
index 22fcf94509..22fcf94509 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Repository
index 1243a92e84..1243a92e84 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i01.xml
index 8c75abccfa..8c75abccfa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i02.xml
index 3bdaa30e18..3bdaa30e18 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Entries
index c4b20cf588..c4b20cf588 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Repository
index b784a8ce8d..b784a8ce8d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/ibm45i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/ibm45i01.xml
index 6526b4ad5e..6526b4ad5e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/ibm45i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/ibm45i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Entries
index 5aca32db59..5aca32db59 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Repository
index cd03a70086..cd03a70086 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/ibm45i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/ibm45i01.xml
index a107534606..a107534606 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/ibm45i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/ibm45i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Entries
index ee5dde8fc0..ee5dde8fc0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Repository
index 71bda1a417..71bda1a417 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.dtd
index 9fefbf5253..9fefbf5253 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.xml
index f84452e18b..f84452e18b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i02.xml
index 260fa82c8d..260fa82c8d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Entries
index 2b68a7fff1..2b68a7fff1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Repository
index 132c28e67a..132c28e67a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i01.xml
index fb492e28e4..fb492e28e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i02.xml
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Entries
index 07140599c4..07140599c4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Repository
index a50ce9bca9..a50ce9bca9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.dtd
index 1439a1738f..1439a1738f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.xml
index 33def44e03..33def44e03 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Entries
index f7901d6aeb..f7901d6aeb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Repository
index 8829c67195..8829c67195 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/ibm50i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/ibm50i01.xml
index fb492e28e4..fb492e28e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/ibm50i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/ibm50i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Entries
index e90c6600b3..e90c6600b3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Repository
index ab79e8f8e5..ab79e8f8e5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.dtd
index 1602ff3afb..1602ff3afb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.xml
index e77859811a..e77859811a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.dtd
index 61f882fb65..61f882fb65 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.xml
index 8c4b88935e..8c4b88935e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Entries
index 78d821818f..78d821818f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Repository
index 2251dcd77f..2251dcd77f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i01.xml
index 078934e1d1..078934e1d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i02.xml
index 078934e1d1..078934e1d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i03.xml
index 078934e1d1..078934e1d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Entries
index 0d1af5d13a..0d1af5d13a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Repository
index 0e6f194bb3..0e6f194bb3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i01.xml
index 830599170c..830599170c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i02.xml
index b7c5af55d0..b7c5af55d0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i03.xml
index 85a34a2e74..85a34a2e74 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i05.xml
index fb555aa080..fb555aa080 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i06.xml
index 9ef0fa3382..9ef0fa3382 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i07.xml
index 5724d47156..5724d47156 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i08.xml
index 2538a2c7be..2538a2c7be 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i09.xml
index e2ae11a8f2..e2ae11a8f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i10.xml
index 962d4661d1..962d4661d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i11.xml
index f2d88c5542..f2d88c5542 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i12.xml
index 79cc40a393..79cc40a393 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i13.xml
index c6818fa4bc..c6818fa4bc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i14.xml
index 9b4b3434f6..9b4b3434f6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i15.xml
index a8ebc8c816..a8ebc8c816 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i16.xml
index 3b4579fe42..3b4579fe42 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i17.xml
index 01162dfabd..01162dfabd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i18.xml
index 7ee173ba7f..7ee173ba7f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Entries
index 8a10963a89..8a10963a89 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Repository
index 0551a83123..0551a83123 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i01.xml
index b25807811b..b25807811b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i02.xml
index c6fc2937c1..c6fc2937c1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i03.xml
index 0fd8f98fc2..0fd8f98fc2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i05.xml
index 6da02f3935..6da02f3935 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i06.xml
index 30e5228f2d..30e5228f2d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i07.xml
index 3903dd4ef3..3903dd4ef3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i08.xml
index 7759a5e47c..7759a5e47c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i09.xml
index 426e94baa5..426e94baa5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i10.xml
index 59005d4083..59005d4083 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i11.xml
index 0bc9ddda62..0bc9ddda62 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i12.xml
index e5a0c0eeaf..e5a0c0eeaf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i13.xml
index 0292fd28cf..0292fd28cf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i14.xml
index 8a6c0a061a..8a6c0a061a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i15.xml
index e86f97b636..e86f97b636 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i16.xml
index dd486c63ed..dd486c63ed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i17.xml
index 0229bacbd1..0229bacbd1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i18.xml
index 9119b7324f..9119b7324f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Entries
index 021d8e65ca..021d8e65ca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Repository
index 32f1f9c1f6..32f1f9c1f6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i01.xml
index e9e53a01df..e9e53a01df 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i02.xml
index 68d9cbbf4f..68d9cbbf4f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Entries
index ed5dfef67e..ed5dfef67e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Repository
index 809824e51b..809824e51b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i01.xml
index 1ac628be4f..1ac628be4f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i02.xml
index 1999fc00dd..1999fc00dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Entries
index 8aa63a4dc8..8aa63a4dc8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Repository
index f78e94bd85..f78e94bd85 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/ibm59i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/ibm59i01.xml
index 9b004f2f6b..9b004f2f6b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/ibm59i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/ibm59i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Entries
index 6aac8a489c..6aac8a489c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Repository
index bfc8d0ed2d..bfc8d0ed2d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/ibm59i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/ibm59i01.xml
index 7766f1c297..7766f1c297 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/ibm59i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/ibm59i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Entries
index e3d22a3ddb..e3d22a3ddb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Repository
index 369068b0ad..369068b0ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i01.xml
index 57756a169b..57756a169b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i02.xml
index 1b891d8a59..1b891d8a59 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i03.xml
index 7e35078086..7e35078086 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i04.xml
index 9ccdc8257f..9ccdc8257f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Entries
index 03208dd2f8..03208dd2f8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Repository
index 5004676316..5004676316 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i01.xml
index 0546e27412..0546e27412 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i02.xml
index 2684857257..2684857257 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i03.xml
index 0334dbf10e..0334dbf10e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i04.xml
index 0334dbf10e..0334dbf10e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Entries
index 65d4c729e0..65d4c729e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Repository
index 8bc5e399d0..8bc5e399d0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.dtd
index f3b49c2472..f3b49c2472 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.xml
index 83145aa8c0..83145aa8c0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.dtd
index fcf30871c9..fcf30871c9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.xml
index 84ff6758d7..84ff6758d7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.ent
index 1ac4fcab5f..1ac4fcab5f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.xml
index f857b63390..f857b63390 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.ent
index bcc535bb25..bcc535bb25 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.xml
index 77a69628f6..77a69628f6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Entries
index 2b945900ec..2b945900ec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Repository
index 73e08e9561..73e08e9561 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i01.xml
index 2375979678..2375979678 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i02.xml
index 2375979678..2375979678 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i03.xml
index c05dd56b0c..c05dd56b0c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i04.xml
index c05dd56b0c..c05dd56b0c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Entries
index 054650eee2..054650eee2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Repository
index 504fa99f5e..504fa99f5e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.dtd
index 24f59e83c8..24f59e83c8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.xml
index 1c31ac572c..1c31ac572c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.dtd
index 2317c6ffc1..2317c6ffc1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.xml
index e1f45ae92e..e1f45ae92e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.ent
index 94bca39dff..94bca39dff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.xml
index 7ae2f130ce..7ae2f130ce 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.ent
index b078fb4276..b078fb4276 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.xml
index 62f1125043..62f1125043 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Entries
index f90c3091d5..f90c3091d5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Repository
index 79786a6aa5..79786a6aa5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i01.xml
index 2375979678..2375979678 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i02.xml
index 2375979678..2375979678 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i03.xml
index c05dd56b0c..c05dd56b0c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i04.xml
index c05dd56b0c..c05dd56b0c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Entries
index e70dc08a9b..e70dc08a9b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Repository
index 6af8648a21..6af8648a21 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/ibm76i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/ibm76i01.xml
index a4409c6b68..a4409c6b68 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/ibm76i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/ibm76i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Entries
index 6c04f454c8..6c04f454c8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Repository
index 9e590fdf12..9e590fdf12 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/ibm76i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/ibm76i01.xml
index bcce7a0f7c..bcce7a0f7c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/ibm76i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/ibm76i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Entries
index 0a8a358121..0a8a358121 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Repository
index 2e4f9283ae..2e4f9283ae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Entries
index 1a920f206e..1a920f206e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Repository
index 4ef6d7c144..4ef6d7c144 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n01.xml
index 8f2a24950c..8f2a24950c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n02.xml
index fba7c8f6fb..fba7c8f6fb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n03.xml
index 82fd08c3c6..82fd08c3c6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Entries
index 44562e48ba..44562e48ba 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Repository
index df75b96e6b..df75b96e6b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n01.xml
index 867386a255..867386a255 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n01.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n02.xml
index 0984535667..0984535667 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n03.xml
index 8fb98db76f..8fb98db76f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n04.xml
index 35ebb81254..35ebb81254 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n05.xml
index 4847c52f04..4847c52f04 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n06.xml
index f4b3fea92b..f4b3fea92b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n07.xml
index 70b39a42bf..70b39a42bf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n08.xml
index d6a07f9721..d6a07f9721 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n09.xml
index 14082265f1..14082265f1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n10.xml
index 127b117d9c..127b117d9c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n11.xml
index c0f6340498..c0f6340498 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n12.xml
index 3aa6b22386..3aa6b22386 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n13.xml
index b5da2def7b..b5da2def7b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n14.xml
index fb475617b2..fb475617b2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n15.xml
index 90e4ce29db..90e4ce29db 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n16.xml
index ef0bd5b521..ef0bd5b521 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n17.xml
index cb6d61f9e9..cb6d61f9e9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n18.xml
index 6d6277d662..6d6277d662 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n19.xml
index 965802232e..965802232e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n19.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n20.xml
index 0257c823c6..0257c823c6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n20.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n21.xml
index 89a0b1ad73..89a0b1ad73 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n21.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n22.xml
index 3bf0e2d1ab..3bf0e2d1ab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n22.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n23.xml
index 7ce8a85fd2..7ce8a85fd2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n23.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n23.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n24.xml
index 5a2ea3ecfc..5a2ea3ecfc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n24.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n25.xml
index 259b054712..259b054712 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n25.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n25.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n26.xml
index 004f5e0466..004f5e0466 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n26.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n26.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n27.xml
index 0cab04e7af..0cab04e7af 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n27.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n27.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n28.xml
index 34b1e0a2d9..34b1e0a2d9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n28.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n28.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n29.xml
index 70b9f721c6..70b9f721c6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n29.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n29.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n30.xml
index a5606b217a..a5606b217a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n30.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n30.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n31.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n31.xml
index e7b65e4894..e7b65e4894 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n31.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n31.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n32.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n32.xml
index 89597112cb..89597112cb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n32.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n32.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n33.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n33.xml
index 44f74da54c..44f74da54c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n33.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n33.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Entries
index 11df6eb44c..11df6eb44c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Repository
index 4ae749c6b4..4ae749c6b4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/ibm03n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/ibm03n01.xml
index 433e6b0374..433e6b0374 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/ibm03n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/ibm03n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Entries
index 7411fcfa1a..7411fcfa1a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Repository
index 8f43addda9..8f43addda9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n01.xml
index 91c8d59f5e..91c8d59f5e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n02.xml
index c47224bdfd..c47224bdfd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n03.xml
index 1c59d4782c..1c59d4782c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n04.xml
index 6f1e33e524..6f1e33e524 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n05.xml
index e32e65ea98..e32e65ea98 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n06.xml
index 1d531bb5af..1d531bb5af 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n07.xml
index 2b8efabee1..2b8efabee1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n08.xml
index 18a92271fd..18a92271fd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n09.xml
index 8e9a750cf7..8e9a750cf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n10.xml
index 9938fd25e7..9938fd25e7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n11.xml
index aca0080f7f..aca0080f7f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n12.xml
index 5472fcad0f..5472fcad0f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n13.xml
index 64ae797577..64ae797577 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n14.xml
index 2172736377..2172736377 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n15.xml
index 64fffaa093..64fffaa093 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n16.xml
index 98242ebe48..98242ebe48 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n17.xml
index f314531b25..f314531b25 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n18.xml
index 7c073fc240..7c073fc240 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Entries
index 3465967ed3..3465967ed3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Repository
index fb93cd6dae..fb93cd6dae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n01.xml
index 1b83228f02..1b83228f02 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n02.xml
index 3ee449969d..3ee449969d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n03.xml
index d3adffdb50..d3adffdb50 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n04.xml
index 499a09ca9a..499a09ca9a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n05.xml
index 98e575018a..98e575018a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Entries
index aad2c8af44..aad2c8af44 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Repository
index 06a675e440..06a675e440 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n01.xml
index b6c068bb4e..b6c068bb4e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n02.xml
index 106dbc46b0..106dbc46b0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n03.xml
index c7b28b31e9..c7b28b31e9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n04.xml
index df3399734e..df3399734e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Entries
index e12d4f87f3..e12d4f87f3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Repository
index 648f96fe92..648f96fe92 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n01.xml
index 3f9f50e9f4..3f9f50e9f4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n02.xml
index cf33029760..cf33029760 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n03.xml
index f7b6c13a19..f7b6c13a19 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n04.xml
index 039f65ae77..039f65ae77 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n05.xml
index 6b253f66f1..6b253f66f1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n06.xml
index 6d89dc50c4..6d89dc50c4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n07.xml
index f7b6c13a19..f7b6c13a19 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n08.xml
index 328729d1d5..328729d1d5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Entries
index 0f719b2afa..0f719b2afa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Repository
index 657e2c09c2..657e2c09c2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n01.xml
index 2195727cc1..2195727cc1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n02.xml
index ee6abd4ea2..ee6abd4ea2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n03.xml
index 3c1901edac..3c1901edac 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n04.xml
index 0a3017a8cc..0a3017a8cc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Entries
index 0489d6125c..0489d6125c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Repository
index 4733acee8c..4733acee8c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n01.xml
index 50a7b63b9a..50a7b63b9a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n02.xml
index e7024efded..e7024efded 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n03.xml
index 4264814c6e..4264814c6e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Entries
index 226177973e..226177973e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Repository
index 41211a39d7..41211a39d7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n01.xml
index e0e31d68fe..e0e31d68fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n02.xml
index 78439ab5ef..78439ab5ef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n03.xml
index 7ff512dc4d..7ff512dc4d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/student.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/student.dtd
index 7ce18a99a3..7ce18a99a3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/student.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/student.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Entries
index 91311bd039..91311bd039 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Repository
index 10903e1710..10903e1710 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n01.xml
index 2aa17b269e..2aa17b269e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n02.xml
index 4c1f06dd6c..4c1f06dd6c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n03.xml
index 80dc61695a..80dc61695a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Entries
index 7746229878..7746229878 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Repository
index ec5e63bf64..ec5e63bf64 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n01.xml
index d11b3ca4f2..d11b3ca4f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n02.xml
index c187070c03..c187070c03 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n03.xml
index 2c014864d3..2c014864d3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n04.xml
index 365b2c4bde..365b2c4bde 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Entries
index 627fc4a721..627fc4a721 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Repository
index 1a71554838..1a71554838 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n01.xml
index 6bafad526f..6bafad526f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n02.xml
index 923df6ce66..923df6ce66 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n03.xml
index 9625193ca6..9625193ca6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n04.xml
index dd0d352d15..dd0d352d15 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Entries
index a098c26450..a098c26450 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Repository
index a9a2232bcd..a9a2232bcd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n01.xml
index 3012de0f8f..3012de0f8f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n02.xml
index f236cdb079..f236cdb079 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n03.xml
index 4f5dba6d84..4f5dba6d84 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n04.xml
index f097ef3606..f097ef3606 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Entries
index 841c256158..841c256158 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Repository
index 1bcd6ef06e..1bcd6ef06e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n01.xml
index 91f47e9dea..91f47e9dea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n02.xml
index b0d07849df..b0d07849df 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Entries
index 3461836b0b..3461836b0b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Repository
index 3a16b94826..3a16b94826 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n01.xml
index 6dd0b32bce..6dd0b32bce 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n02.xml
index 0b18c42e71..0b18c42e71 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n03.xml
index 02a84788b1..02a84788b1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Entries
index 4d02ee9c24..4d02ee9c24 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Repository
index cf87b9431a..cf87b9431a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/ibm20n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/ibm20n01.xml
index cd454a29db..cd454a29db 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/ibm20n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/ibm20n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Entries
index e33c0dad41..e33c0dad41 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Repository
index 670d97b391..670d97b391 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n01.xml
index 3db95b7b40..3db95b7b40 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n02.xml
index 6969b0f35a..6969b0f35a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n03.xml
index 71a5bcaa0b..71a5bcaa0b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Entries
index 67170613c2..67170613c2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Repository
index 65858ada69..65858ada69 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n01.xml
index 01054fc752..01054fc752 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n02.xml
index 4d371ef98a..4d371ef98a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n03.xml
index 93c259c0c9..93c259c0c9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Entries
index b6590238a7..b6590238a7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Repository
index edac5ca2e5..edac5ca2e5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n01.xml
index 7db1daf2e4..7db1daf2e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n02.xml
index 9364b9eb82..9364b9eb82 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n03.xml
index c7c75abd63..c7c75abd63 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n04.xml
index 18d641f90a..18d641f90a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n05.xml
index 2fe93d7044..2fe93d7044 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n06.xml
index e5b7058272..e5b7058272 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Entries
index 33f7f3974f..33f7f3974f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Repository
index 94aed5f78a..94aed5f78a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n01.xml
index 06b8699cdc..06b8699cdc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n02.xml
index ad70e99baf..ad70e99baf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n03.xml
index 4f84125f3a..4f84125f3a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n04.xml
index 553df9707e..553df9707e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n05.xml
index 3e4510f3a1..3e4510f3a1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n06.xml
index 459c656b2f..459c656b2f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n07.xml
index 987d716d70..987d716d70 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n08.xml
index b73e565aff..b73e565aff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n09.xml
index 33c80969ba..33c80969ba 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Entries
index 5f26556f04..5f26556f04 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Repository
index e65b32d0e8..e65b32d0e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n01.xml
index c353336ce3..c353336ce3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n02.xml
index 0c0a0077dd..0c0a0077dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Entries
index 9a026b3518..9a026b3518 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Repository
index af666d19ad..af666d19ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/ibm26n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/ibm26n01.xml
index 7baed5f923..7baed5f923 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/ibm26n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/ibm26n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Entries
index 26e863a9ce..26e863a9ce 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Repository
index 837ff12bc6..837ff12bc6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/ibm27n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/ibm27n01.xml
index 56f82f9189..56f82f9189 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/ibm27n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/ibm27n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Entries
index 1ec0195803..1ec0195803 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Repository
index 2b5caf2b49..2b5caf2b49 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.dtd
index b3dde2f97a..b3dde2f97a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.xml
index 91a04bc9f0..91a04bc9f0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n02.xml
index d35360413a..d35360413a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n03.xml
index 565282bb74..565282bb74 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n04.xml
index b751671196..b751671196 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n05.xml
index ebdbe41898..ebdbe41898 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n06.xml
index f367e6fc1b..f367e6fc1b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n07.xml
index 98b8f34ef5..98b8f34ef5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n08.xml
index 78426a9514..78426a9514 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Entries
index d5c36aa261..d5c36aa261 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Repository
index 060df8d466..060df8d466 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/cat.txt b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/cat.txt
index 033b749de0..033b749de0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/cat.txt
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/cat.txt
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n01.xml
index 6582e926c4..6582e926c4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n02.xml
index 01656bafea..01656bafea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n03.xml
index 72e7398f69..72e7398f69 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n04.xml
index 7fbeb35ad3..7fbeb35ad3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n05.xml
index b2a3caaab2..b2a3caaab2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n06.xml
index a166f862a0..a166f862a0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n07.xml
index 40b5c90281..40b5c90281 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Entries
index 04ca77bc64..04ca77bc64 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Repository
index 4e447ddb84..4e447ddb84 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.dtd
index 8d88fe5578..8d88fe5578 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.xml
index 036b4592e0..036b4592e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Entries
index ccbdfce575..ccbdfce575 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Repository
index be9e854ecb..be9e854ecb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.dtd
index f70a194bf9..f70a194bf9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.xml
index 14136c596d..14136c596d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Entries
index 1cad781c32..1cad781c32 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Repository
index e953754031..e953754031 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n01.xml
index d1ead33d36..d1ead33d36 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n02.xml
index 2bfdd07105..2bfdd07105 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n03.xml
index a084036102..a084036102 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n04.xml
index 04c8eba891..04c8eba891 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n05.xml
index be004b3179..be004b3179 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.dtd
index b3dde2f97a..b3dde2f97a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.xml
index aecbc0bea3..aecbc0bea3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n07.xml
index 40e56f10f2..40e56f10f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n08.xml
index bd01546929..bd01546929 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.dtd
index a68e8974bb..a68e8974bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.xml
index e7597fa3d3..e7597fa3d3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Entries
index 685dbfcea5..685dbfcea5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Repository
index a21aa8f60d..a21aa8f60d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n01.xml
index bf43c318b4..bf43c318b4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n02.xml
index 26a4ae6876..26a4ae6876 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n03.xml
index da8548b45c..da8548b45c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n04.xml
index 241ee8be5c..241ee8be5c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n05.xml
index 80cbd83aa7..80cbd83aa7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n06.xml
index 97f7ff363d..97f7ff363d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Entries
index 044fa9a0e1..044fa9a0e1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Repository
index b25c651c5b..b25c651c5b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n01.xml
index 512dc62d86..512dc62d86 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n02.xml
index f25a5ba915..f25a5ba915 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n03.xml
index d5821f217c..d5821f217c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n04.xml
index fad77f7da2..fad77f7da2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n05.xml
index 640650846d..640650846d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Entries
index edb28d4ac7..edb28d4ac7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Repository
index 70430c3012..70430c3012 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n.ent
index f1bba14c8e..f1bba14c8e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n01.xml
index 58f8d2fd8c..58f8d2fd8c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n02.xml
index a487ebba27..a487ebba27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n03.xml
index 12cd0fc5f6..12cd0fc5f6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n04.xml
index cccc60dc27..cccc60dc27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n05.xml
index d31cc7043d..d31cc7043d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n06.xml
index 5954990e0b..5954990e0b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n07.xml
index db578f702d..db578f702d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n08.xml
index 716df810c1..716df810c1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n09.xml
index 71722f49d7..71722f49d7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.ent
index f1bba14c8e..f1bba14c8e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.xml
index 68ad4eb040..68ad4eb040 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.ent
index f1bba14c8e..f1bba14c8e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.xml
index 10652b8307..10652b8307 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n12.xml
index 23f8eb9971..23f8eb9971 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n13.xml
index d8b0ac1e1f..d8b0ac1e1f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n14.xml
index 20ecb77fe1..20ecb77fe1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Entries
index cc2de15118..cc2de15118 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Repository
index 5dcf694209..5dcf694209 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n01.xml
index 953178c64d..953178c64d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n02.xml
index 8e84b69243..8e84b69243 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n03.xml
index 5de14d16d8..5de14d16d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n04.xml
index 97e82e6c54..97e82e6c54 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n05.xml
index 47694b6dd1..47694b6dd1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Entries
index 553c5e2a08..553c5e2a08 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Repository
index da059b5dd6..da059b5dd6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n01.xml
index 30e28dd061..30e28dd061 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n02.xml
index 67f7f7e6e3..67f7f7e6e3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n04.xml
index 98d4bd34a1..98d4bd34a1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n05.xml
index c15483be66..c15483be66 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Entries
index 4d083bc143..4d083bc143 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Repository
index 16e3b32ecb..16e3b32ecb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n01.xml
index 6c67518040..6c67518040 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n02.xml
index 4af3042e15..4af3042e15 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n03.xml
index 3213209091..3213209091 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n04.xml
index 3372fcaac5..3372fcaac5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Entries
index 06c3aebd24..06c3aebd24 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Repository
index 833bd5d4e2..833bd5d4e2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n01.xml
index b24d7da407..b24d7da407 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n02.xml
index c3921565fb..c3921565fb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n03.xml
index e9d6df08e8..e9d6df08e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n04.xml
index dd0465d2cd..dd0465d2cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n05.xml
index 9cf73a935d..9cf73a935d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n06.xml
index 952164e197..952164e197 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n07.xml
index 46438e8916..46438e8916 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n08.xml
index 928721d881..928721d881 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n09.xml
index c0cf19306d..c0cf19306d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Entries
index ae84c66b4f..ae84c66b4f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Repository
index 6d42a89f21..6d42a89f21 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n01.xml
index a61d556217..a61d556217 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n02.xml
index 72d3967cac..72d3967cac 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n03.xml
index 5961ff402d..5961ff402d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n04.xml
index b9ec2d3886..b9ec2d3886 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n05.xml
index 27e5034e6d..27e5034e6d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Entries
index bb4be031d4..bb4be031d4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Repository
index d869c127fc..d869c127fc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n01.xml
index 69153b321c..69153b321c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n02.xml
index 989d7c47f8..989d7c47f8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n03.xml
index 7408d51ee7..7408d51ee7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n04.xml
index 3f4037ee30..3f4037ee30 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n05.xml
index 1ad4977fe0..1ad4977fe0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n06.xml
index afb6c1077f..afb6c1077f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Entries
index 3c2e4f3b27..3c2e4f3b27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Repository
index 54cb25f999..54cb25f999 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n01.xml
index 29294bbd1a..29294bbd1a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n02.xml
index 82126a6aec..82126a6aec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n03.xml
index 7eca7c9986..7eca7c9986 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n04.xml
index 921e2ffa14..921e2ffa14 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n05.xml
index cef09d6b46..cef09d6b46 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n06.xml
index ddfba81c72..ddfba81c72 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n07.xml
index 0a5fbb14e9..0a5fbb14e9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Entries
index 3b0476058e..3b0476058e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Repository
index 870636c0f7..870636c0f7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n01.xml
index b78fdd65e9..b78fdd65e9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n02.xml
index 9dfb650b23..9dfb650b23 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n03.xml
index 0433730aa2..0433730aa2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n04.xml
index cd9ec0d9af..cd9ec0d9af 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n05.xml
index 51bce21b59..51bce21b59 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n06.xml
index 498cff3373..498cff3373 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Entries
index 1929c46a58..1929c46a58 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Repository
index 36a187c2ad..36a187c2ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n01.xml
index ee054dd0cb..ee054dd0cb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n02.xml
index 92a0f7ce7f..92a0f7ce7f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n03.xml
index 3e2b4cb8dd..3e2b4cb8dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n04.xml
index 06d463972f..06d463972f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n05.xml
index aa871ee359..aa871ee359 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n06.xml
index ee976d527a..ee976d527a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n07.xml
index c049b65186..c049b65186 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Entries
index 6b8ebadd12..6b8ebadd12 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Repository
index 7adbdb0ebb..7adbdb0ebb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n01.xml
index 4ee24894e6..4ee24894e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n02.xml
index 76fbe2cab6..76fbe2cab6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n03.xml
index 55d6fc00b3..55d6fc00b3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n04.xml
index bf2508899c..bf2508899c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n05.xml
index 207845c6a2..207845c6a2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n06.xml
index 0bfda9cd5f..0bfda9cd5f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n07.xml
index 19d17ed8a2..19d17ed8a2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Entries
index 1e35137538..1e35137538 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Repository
index a8ba6c5f09..a8ba6c5f09 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n01.xml
index 4415dcbca0..4415dcbca0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n02.xml
index bb3beeaff5..bb3beeaff5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n03.xml
index b59a8abf23..b59a8abf23 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n04.xml
index 13599e8585..13599e8585 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n05.xml
index 5da5020ae3..5da5020ae3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n06.xml
index ce079358e0..ce079358e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Entries
index c02920250f..c02920250f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Repository
index ba4c7623e0..ba4c7623e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n01.xml
index 089af460cb..089af460cb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n02.xml
index 6a3d53c8ac..6a3d53c8ac 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n03.xml
index 10a95ae899..10a95ae899 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n04.xml
index 125c7b994f..125c7b994f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n05.xml
index ac9312a92b..ac9312a92b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n06.xml
index 8a013001b0..8a013001b0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n07.xml
index 6638a762cd..6638a762cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n08.xml
index bbc4f2a6ea..bbc4f2a6ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Entries
index 483b097b69..483b097b69 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Repository
index d0e67068c8..d0e67068c8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n01.xml
index e7e120c0ef..e7e120c0ef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n02.xml
index 004d8db582..004d8db582 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Entries
index e5bbd9a0ff..e5bbd9a0ff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Repository
index 44ade23a16..44ade23a16 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n01.xml
index 56229377ff..56229377ff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n02.xml
index 649ed99aca..649ed99aca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n03.xml
index c935b9be47..c935b9be47 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Entries
index 243eeabccf..243eeabccf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Repository
index 023c06715c..023c06715c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n01.xml
index c46357e0d8..c46357e0d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n02.xml
index 87fc28dfa0..87fc28dfa0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n03.xml
index b37353dd00..b37353dd00 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n04.xml
index 884a305acc..884a305acc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n05.xml
index 5f77b2636d..5f77b2636d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n06.xml
index db614d6929..db614d6929 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n07.xml
index f6a1dd802d..f6a1dd802d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Entries
index 92a05a11f8..92a05a11f8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Repository
index 3e07d7b8bd..3e07d7b8bd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/ibm57n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/ibm57n01.xml
index 1c6d7593b7..1c6d7593b7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/ibm57n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/ibm57n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Entries
index c004f688bf..c004f688bf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Repository
index 8d1d9401ba..8d1d9401ba 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n01.xml
index 729aac283b..729aac283b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n02.xml
index fae10f978e..fae10f978e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n03.xml
index 77511ff4e7..77511ff4e7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n04.xml
index 6f861028cd..6f861028cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n05.xml
index ed162a2ae8..ed162a2ae8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n06.xml
index 68148a57ae..68148a57ae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n07.xml
index ab04d335b9..ab04d335b9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n08.xml
index db72fca99f..db72fca99f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Entries
index ae11ab71e3..ae11ab71e3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Repository
index 49253b6f51..49253b6f51 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n01.xml
index b5cdd68645..b5cdd68645 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n02.xml
index 1e3417ff6c..1e3417ff6c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n03.xml
index 86b03de53b..86b03de53b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n04.xml
index 03cac38f2d..03cac38f2d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n05.xml
index 71054a8039..71054a8039 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n06.xml
index 3879eb1eaf..3879eb1eaf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Entries
index 676c6696ca..676c6696ca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Repository
index 5fd0acaad4..5fd0acaad4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n01.xml
index 9b010b9043..9b010b9043 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n02.xml
index 5f5fc0a980..5f5fc0a980 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n03.xml
index 83b649ab14..83b649ab14 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n04.xml
index 9c93cb65d6..9c93cb65d6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n05.xml
index efcc47186b..efcc47186b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n06.xml
index a755908918..a755908918 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n07.xml
index 7c3fa16264..7c3fa16264 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n08.xml
index ec49feb9e9..ec49feb9e9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Entries
index c82dbe3970..c82dbe3970 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Repository
index 257ec20946..257ec20946 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.dtd
index 2e1bdd0002..2e1bdd0002 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.xml
index 537c8d47d2..537c8d47d2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Entries
index 17414ee4d1..17414ee4d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Repository
index 2b5cea982d..2b5cea982d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.dtd
index 4cf76db05d..4cf76db05d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.xml
index b1a761f409..b1a761f409 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.dtd
index e6d77f0bd7..e6d77f0bd7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.xml
index 2b1c8f87b6..2b1c8f87b6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.dtd
index afcb5f418b..afcb5f418b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.xml
index fac08e98cd..fac08e98cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.dtd
index 61190011c9..61190011c9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.xml
index f21e770cdf..f21e770cdf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.dtd
index efec801204..efec801204 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.xml
index 8001d2ec11..8001d2ec11 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.dtd
index a25d523250..a25d523250 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.xml
index 3091f239a5..3091f239a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.dtd
index 55a6c7619b..55a6c7619b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.xml
index f1260ea393..f1260ea393 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.dtd
index 6c2b3a3299..6c2b3a3299 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.xml
index a8b23e052e..a8b23e052e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Entries
index e8dabab649..e8dabab649 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Repository
index 9ca5790cb6..9ca5790cb6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.dtd
index 79158e1bc3..79158e1bc3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.xml
index 1312eb6f01..1312eb6f01 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.dtd
index 3da7b272ad..3da7b272ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.xml
index 7b9b9260a0..7b9b9260a0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.dtd
index 6a74ba5ff9..6a74ba5ff9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.xml
index aa2bd69f77..aa2bd69f77 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.dtd
index f5ba20c9bb..f5ba20c9bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.xml
index fd54910839..fd54910839 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.dtd
index 4d9d29ae81..4d9d29ae81 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.xml
index 1b981ae0b2..1b981ae0b2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.dtd
index ce7189b038..ce7189b038 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.xml
index 135bba77a0..135bba77a0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.dtd
index f258ba4dc5..f258ba4dc5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.xml
index 36b5897a14..36b5897a14 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Entries
index 67b60edd93..67b60edd93 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Repository
index 034a883d06..034a883d06 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.dtd
index 046e93a5c3..046e93a5c3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.xml
index 8d35f73da9..8d35f73da9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.dtd
index 567e7885d8..567e7885d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.xml
index 1cb77b232c..1cb77b232c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.dtd
index 4e6327e11a..4e6327e11a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.xml
index daf2c2099e..daf2c2099e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Entries
index 25de6f1ebe..25de6f1ebe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Repository
index d0e34473ac..d0e34473ac 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.dtd
index d9b6175722..d9b6175722 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.xml
index 8a9be2bec9..8a9be2bec9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.dtd
index 14d418915b..14d418915b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.xml
index ae89a2de45..ae89a2de45 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Entries
index 85ee69f0d9..85ee69f0d9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Repository
index 1a505f9226..1a505f9226 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n01.xml
index ef42d683ea..ef42d683ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n02.xml
index 9759178638..9759178638 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n03.xml
index 345019098c..345019098c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n04.xml
index 0ad5904f85..0ad5904f85 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n05.xml
index 5906a812e6..5906a812e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n06.xml
index fcfb28d3f4..fcfb28d3f4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n07.xml
index b402f76262..b402f76262 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n08.xml
index 0195a9bb50..0195a9bb50 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n09.xml
index 53ed2c49d9..53ed2c49d9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n10.xml
index f018bcb534..f018bcb534 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n11.xml
index 20ec3edeab..20ec3edeab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n12.xml
index 27cbc450cd..27cbc450cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n13.xml
index c742d6b746..c742d6b746 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n14.xml
index 86b5aa058f..86b5aa058f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n15.xml
index f1b7fe136e..f1b7fe136e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Entries
index 50eaa909e5..50eaa909e5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Repository
index 38b4dc23d8..38b4dc23d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n01.xml
index f36baedc62..f36baedc62 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n02.xml
index 48516f557c..48516f557c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n03.xml
index 20780813f6..20780813f6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n04.xml
index 399bb9ce2b..399bb9ce2b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n05.xml
index 0303f34fee..0303f34fee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.dtd
index aaeb5b1300..aaeb5b1300 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.xml
index 6c647f5503..6c647f5503 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n07.xml
index e5f31f8d1f..e5f31f8d1f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n08.xml
index 02264a2137..02264a2137 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n09.xml
index e31471dc48..e31471dc48 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n10.xml
index 60a52278de..60a52278de 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Entries
index 87a8eb1868..87a8eb1868 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Repository
index 2d561c2c69..2d561c2c69 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n01.xml
index df6302d4eb..df6302d4eb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n02.xml
index a4365caed7..a4365caed7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n03.xml
index 4e73bc7337..4e73bc7337 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n04.xml
index e106eab9ee..e106eab9ee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n05.xml
index 5c0234cff1..5c0234cff1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n06.xml
index ccdd534527..ccdd534527 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n07.xml
index 324497f357..324497f357 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Entries
index 34746aadfe..34746aadfe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Repository
index 4be4b7015d..4be4b7015d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm70n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm70n01.xml
index 7f453b4135..7f453b4135 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm70n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm70n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n01.xml
index bed2832974..bed2832974 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n02.xml
index 256f1f4407..256f1f4407 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n03.xml
index b8dd782bde..b8dd782bde 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n04.xml
index ee52c8d259..ee52c8d259 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n05.xml
index edd93a41eb..edd93a41eb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n06.xml
index 5fb49c52f8..5fb49c52f8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n07.xml
index d280dba82f..d280dba82f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n08.xml
index fefba0e6a0..fefba0e6a0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Entries
index ecdb93da0d..ecdb93da0d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Repository
index 482a0904d9..482a0904d9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n01.xml
index 5ceb44a1e5..5ceb44a1e5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n02.xml
index 60ee4cbc3b..60ee4cbc3b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n03.xml
index 4cc1ee1b70..4cc1ee1b70 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n04.xml
index f9ca14481a..f9ca14481a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n05.xml
index ff17096d83..ff17096d83 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n06.xml
index e9b22f8913..e9b22f8913 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n07.xml
index ab02e52257..ab02e52257 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n08.xml
index b8b13dfc84..b8b13dfc84 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n09.xml
index 045427c846..045427c846 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Entries
index 670af38fda..670af38fda 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Repository
index 800547ad79..800547ad79 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n01.xml
index fac788bdb9..fac788bdb9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n03.xml
index c103d13b8e..c103d13b8e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Entries
index fb1b2bf7f7..fb1b2bf7f7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Repository
index eb6285add5..eb6285add5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/ibm74n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/ibm74n01.xml
index 2a59b59724..2a59b59724 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/ibm74n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/ibm74n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Entries
index b21ef61bc2..b21ef61bc2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Repository
index 14755f3d62..14755f3d62 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/empty.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/empty.dtd
index dbc2f78654..dbc2f78654 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/empty.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/empty.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n01.xml
index c8f1c8f289..c8f1c8f289 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n02.xml
index f823311bc1..f823311bc1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n03.xml
index e02f80850d..e02f80850d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n04.xml
index a9813642a5..a9813642a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n05.xml
index 389617cbd0..389617cbd0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n06.xml
index 32c7d949fe..32c7d949fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n07.xml
index c977eb71d4..c977eb71d4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n08.xml
index fd0428c6f5..fd0428c6f5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n09.xml
index 5029a50daa..5029a50daa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n10.xml
index 3cec6ffaea..3cec6ffaea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n11.xml
index 95092b692f..95092b692f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n12.xml
index 8d4dd1857f..8d4dd1857f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n13.xml
index 3ff70df7d6..3ff70df7d6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Entries
index ffa6d486d4..ffa6d486d4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Repository
index f136293df4..f136293df4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n01.xml
index 215cc938ca..215cc938ca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n02.xml
index 2eff802ace..2eff802ace 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n03.xml
index 134aed7002..134aed7002 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n04.xml
index 17f13408a8..17f13408a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n05.xml
index 3899463a63..3899463a63 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n06.xml
index 2c36e88596..2c36e88596 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n07.xml
index 13108c28af..13108c28af 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Entries
index 81f76d363a..81f76d363a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Repository
index b18c1b8845..b18c1b8845 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.ent
index 4395cf96ec..4395cf96ec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.xml
index a82e2b653a..a82e2b653a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.ent
index 8d681ccec6..8d681ccec6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.xml
index 49043afd88..49043afd88 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.ent
index e0acc108d8..e0acc108d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.xml
index 674c5b0eb1..674c5b0eb1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.ent
index f532ae5e3a..f532ae5e3a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.xml
index 38cb784e52..38cb784e52 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Entries
index 74afddd45a..74afddd45a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Repository
index 128897927d..128897927d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.ent
index 7fb6719720..7fb6719720 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.xml
index 0f984208d1..0f984208d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.ent
index 7a2ecc6cd1..7a2ecc6cd1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.xml
index a21c0b6135..a21c0b6135 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Entries
index deedae1e7c..deedae1e7c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Repository
index 01efa4d6f1..01efa4d6f1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.ent
index b5a43a5caf..b5a43a5caf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.xml
index 85d5614fef..85d5614fef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.ent
index 0345008783..0345008783 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.xml
index afb3b96fd1..afb3b96fd1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Entries
index 2a7ffa2a61..2a7ffa2a61 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Repository
index 7432e85af5..7432e85af5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n01.xml
index c44264b22e..c44264b22e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n02.xml
index c199a02630..c199a02630 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n03.xml
index e5ef0d55e1..e5ef0d55e1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n04.xml
index 2f5d2f5eff..2f5d2f5eff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n05.xml
index 714f2d42e1..714f2d42e1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n06.xml
index b503f9b9bb..b503f9b9bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Entries
index d1830b360e..d1830b360e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Repository
index 478b66d2fd..478b66d2fd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n01.xml
index 3354f4d3e0..3354f4d3e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n02.xml
index 445f230479..445f230479 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n03.xml
index 875bc7421d..875bc7421d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n04.xml
index 5b7979b405..5b7979b405 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n05.xml
index 009518166d..009518166d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n06.xml
index 2de674a84f..2de674a84f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n07.xml
index a3b3ce81a7..a3b3ce81a7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n08.xml
index a7814dc51d..a7814dc51d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n09.xml
index bc6c54aee8..bc6c54aee8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Entries
index e41200cd0d..e41200cd0d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Repository
index 88e1e6b385..88e1e6b385 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n01.xml
index e66c0a2d54..e66c0a2d54 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n02.xml
index 22eaa01c2f..22eaa01c2f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n03.xml
index 7e0dcf17e0..7e0dcf17e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n04.xml
index bde1554010..bde1554010 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n05.xml
index 365515b1ca..365515b1ca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n06.xml
index f39c92fc3c..f39c92fc3c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n07.xml
index 61b8f8d24d..61b8f8d24d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n08.xml
index ff43f8cbf2..ff43f8cbf2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Entries
index 51af0ce086..51af0ce086 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Repository
index 7139f43dc7..7139f43dc7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n01.xml
index f866602e81..f866602e81 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n02.xml
index b39683dbf5..b39683dbf5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n03.xml
index 4bca2b000c..4bca2b000c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n04.xml
index e409f3d210..e409f3d210 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n05.xml
index aea6dac44c..aea6dac44c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n06.xml
index eaa3ea65d8..eaa3ea65d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Entries
index 8cba3c5da6..8cba3c5da6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Repository
index 937063790e..937063790e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n01.xml
index e18e377e1f..e18e377e1f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n02.xml
index 0703d20c38..0703d20c38 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n03.xml
index b08af2945f..b08af2945f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n04.xml
index f37ca85595..f37ca85595 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n05.xml
index 616ca91515..616ca91515 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n06.xml
index 4134128af6..4134128af6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n07.xml
index 67f407e08b..67f407e08b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n08.xml
index 6299540ba5..6299540ba5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n09.xml
index c18d3ffebb..c18d3ffebb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n10.xml
index aac214495e..aac214495e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n100.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n100.xml
index 80ecdbc1ea..80ecdbc1ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n100.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n100.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n101.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n101.xml
index e76a06ee2b..e76a06ee2b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n101.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n101.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n102.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n102.xml
index e8c31a7ba3..e8c31a7ba3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n102.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n102.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n103.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n103.xml
index 6da0d486af..6da0d486af 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n103.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n103.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n104.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n104.xml
index da308ef661..da308ef661 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n104.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n104.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n105.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n105.xml
index 3bbfb3208a..3bbfb3208a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n105.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n105.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n106.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n106.xml
index 2103b2070f..2103b2070f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n106.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n106.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n107.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n107.xml
index 55c35b81e4..55c35b81e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n107.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n107.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n108.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n108.xml
index b148a639f5..b148a639f5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n108.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n108.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n109.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n109.xml
index c0b49183d6..c0b49183d6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n109.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n109.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n11.xml
index 5d991bfea7..5d991bfea7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n110.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n110.xml
index 97aeb59071..97aeb59071 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n110.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n110.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n111.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n111.xml
index a160f40f13..a160f40f13 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n111.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n111.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n112.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n112.xml
index 520ea15ef1..520ea15ef1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n112.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n112.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n113.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n113.xml
index b97245efb6..b97245efb6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n113.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n113.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n114.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n114.xml
index 17d5ca7deb..17d5ca7deb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n114.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n114.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n115.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n115.xml
index f51535ad68..f51535ad68 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n115.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n115.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n116.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n116.xml
index 256984841c..256984841c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n116.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n116.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n117.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n117.xml
index 61b2c5817c..61b2c5817c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n117.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n117.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n118.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n118.xml
index 519cfe265f..519cfe265f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n118.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n118.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n119.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n119.xml
index c1beaebf8c..c1beaebf8c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n119.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n119.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n12.xml
index 0352dcd7eb..0352dcd7eb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n120.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n120.xml
index 5ce20ec658..5ce20ec658 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n120.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n120.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n121.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n121.xml
index 87212bdb8d..87212bdb8d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n121.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n121.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n122.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n122.xml
index 0979f9fa21..0979f9fa21 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n122.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n122.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n123.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n123.xml
index 718fa06c40..718fa06c40 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n123.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n123.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n124.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n124.xml
index 5f1a16fc4a..5f1a16fc4a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n124.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n124.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n125.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n125.xml
index 2889bb8419..2889bb8419 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n125.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n125.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n126.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n126.xml
index b22877f426..b22877f426 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n126.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n126.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n127.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n127.xml
index 1ea4859818..1ea4859818 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n127.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n127.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n128.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n128.xml
index e4134bf5fe..e4134bf5fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n128.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n128.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n129.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n129.xml
index b05e3dfc58..b05e3dfc58 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n129.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n129.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n13.xml
index 87d15595c7..87d15595c7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n130.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n130.xml
index 81cf320709..81cf320709 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n130.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n130.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n131.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n131.xml
index f78253ad2a..f78253ad2a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n131.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n131.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n132.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n132.xml
index 66c74c845d..66c74c845d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n132.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n132.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n133.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n133.xml
index e017f8f61b..e017f8f61b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n133.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n133.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n134.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n134.xml
index 2f093a660f..2f093a660f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n134.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n134.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n135.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n135.xml
index ad9b2cf968..ad9b2cf968 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n135.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n135.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n136.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n136.xml
index b924b61770..b924b61770 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n136.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n136.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n137.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n137.xml
index 351a4925e4..351a4925e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n137.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n137.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n138.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n138.xml
index 9719a5f53e..9719a5f53e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n138.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n138.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n139.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n139.xml
index c4afb4f705..c4afb4f705 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n139.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n139.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n14.xml
index 14b71b4dad..14b71b4dad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n140.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n140.xml
index 7c575b9b95..7c575b9b95 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n140.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n140.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n141.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n141.xml
index f718c80ae9..f718c80ae9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n141.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n141.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n142.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n142.xml
index 3af3d8c39c..3af3d8c39c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n142.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n142.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n143.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n143.xml
index 19dad78122..19dad78122 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n143.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n143.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n144.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n144.xml
index 756bbe667f..756bbe667f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n144.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n144.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n145.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n145.xml
index 6bd0a80ef8..6bd0a80ef8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n145.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n145.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n146.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n146.xml
index 1b0aba959a..1b0aba959a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n146.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n146.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n147.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n147.xml
index 171dfb2188..171dfb2188 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n147.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n147.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n148.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n148.xml
index a5e69c4e15..a5e69c4e15 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n148.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n148.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n149.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n149.xml
index c368b37c66..c368b37c66 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n149.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n149.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n15.xml
index 14b71b4dad..14b71b4dad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n150.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n150.xml
index b0c9075662..b0c9075662 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n150.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n150.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n151.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n151.xml
index 97a169f14d..97a169f14d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n151.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n151.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n152.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n152.xml
index 92bdca5722..92bdca5722 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n152.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n152.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n153.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n153.xml
index ec76dfb05c..ec76dfb05c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n153.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n153.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n154.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n154.xml
index f541695a5a..f541695a5a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n154.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n154.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n155.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n155.xml
index c292ae913a..c292ae913a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n155.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n155.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n156.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n156.xml
index 5480590c4c..5480590c4c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n156.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n156.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n157.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n157.xml
index 781a62e3ab..781a62e3ab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n157.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n157.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n158.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n158.xml
index b87e0d725d..b87e0d725d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n158.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n158.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n159.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n159.xml
index 6cd532b0cd..6cd532b0cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n159.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n159.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n16.xml
index d071417107..d071417107 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n160.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n160.xml
index edf63417af..edf63417af 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n160.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n160.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n161.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n161.xml
index c5284ac321..c5284ac321 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n161.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n161.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n162.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n162.xml
index 11777deeba..11777deeba 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n162.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n162.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n163.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n163.xml
index 705ce24cbd..705ce24cbd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n163.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n163.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n164.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n164.xml
index acd8649297..acd8649297 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n164.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n164.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n165.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n165.xml
index 45feac400d..45feac400d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n165.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n165.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n166.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n166.xml
index 3c26ae44e2..3c26ae44e2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n166.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n166.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n167.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n167.xml
index 15718afdbf..15718afdbf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n167.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n167.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n168.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n168.xml
index 31d388f587..31d388f587 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n168.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n168.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n169.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n169.xml
index aeafbafd16..aeafbafd16 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n169.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n169.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n17.xml
index 210363c73b..210363c73b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n170.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n170.xml
index 036aabf04d..036aabf04d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n170.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n170.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n171.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n171.xml
index f304ca3000..f304ca3000 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n171.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n171.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n172.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n172.xml
index 2863f5e744..2863f5e744 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n172.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n172.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n173.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n173.xml
index d6d20bce96..d6d20bce96 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n173.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n173.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n174.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n174.xml
index ea3bc40e7a..ea3bc40e7a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n174.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n174.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n175.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n175.xml
index c7a22f2a62..c7a22f2a62 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n175.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n175.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n176.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n176.xml
index 3d1b0d7742..3d1b0d7742 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n176.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n176.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n177.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n177.xml
index 4c6d85f335..4c6d85f335 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n177.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n177.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n178.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n178.xml
index d3486d3c63..d3486d3c63 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n178.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n178.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n179.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n179.xml
index 59677a2838..59677a2838 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n179.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n179.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n18.xml
index 9d68532647..9d68532647 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n180.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n180.xml
index aa50a65869..aa50a65869 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n180.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n180.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n181.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n181.xml
index 8f175186a0..8f175186a0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n181.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n181.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n182.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n182.xml
index 880b99e1d0..880b99e1d0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n182.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n182.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n183.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n183.xml
index afed23ce8d..afed23ce8d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n183.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n183.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n184.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n184.xml
index 4b4932d949..4b4932d949 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n184.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n184.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n185.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n185.xml
index 70683792ff..70683792ff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n185.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n185.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n186.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n186.xml
index fe30216f31..fe30216f31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n186.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n186.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n187.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n187.xml
index 4ce877b801..4ce877b801 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n187.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n187.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n188.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n188.xml
index 3d6fb6cc7d..3d6fb6cc7d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n188.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n188.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n189.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n189.xml
index 7bf497a691..7bf497a691 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n189.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n189.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n19.xml
index 77835c46a5..77835c46a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n19.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n190.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n190.xml
index 59236d0bb4..59236d0bb4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n190.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n190.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n191.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n191.xml
index 7aa78f933e..7aa78f933e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n191.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n191.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n192.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n192.xml
index 65590b570d..65590b570d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n192.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n192.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n193.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n193.xml
index 9d91de76cb..9d91de76cb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n193.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n193.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n194.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n194.xml
index 052f14c877..052f14c877 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n194.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n194.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n195.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n195.xml
index f2cdfc5ad4..f2cdfc5ad4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n195.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n195.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n196.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n196.xml
index a1cc5c522b..a1cc5c522b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n196.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n196.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n197.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n197.xml
index d9be689efa..d9be689efa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n197.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n197.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n198.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n198.xml
index 709c5ce8d8..709c5ce8d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n198.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n198.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n20.xml
index 306eca9183..306eca9183 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n20.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n21.xml
index ace4e699f8..ace4e699f8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n21.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n22.xml
index b92b9aed21..b92b9aed21 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n22.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n23.xml
index a0ff57fc5a..a0ff57fc5a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n23.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n23.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n24.xml
index 045a5b90f8..045a5b90f8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n24.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n25.xml
index 85b7096c9e..85b7096c9e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n25.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n25.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n26.xml
index 3d46861ff9..3d46861ff9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n26.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n26.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n27.xml
index cc4e79aa92..cc4e79aa92 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n27.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n27.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n28.xml
index 3bdd4dd871..3bdd4dd871 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n28.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n28.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n29.xml
index ad79d0be8d..ad79d0be8d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n29.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n29.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n30.xml
index 110626a74b..110626a74b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n30.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n30.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n31.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n31.xml
index 8b3e0ea917..8b3e0ea917 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n31.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n31.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n32.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n32.xml
index ff2cbdcef7..ff2cbdcef7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n32.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n32.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n33.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n33.xml
index 125ba74dfa..125ba74dfa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n33.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n33.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n34.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n34.xml
index 3d5f09480b..3d5f09480b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n34.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n34.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n35.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n35.xml
index 8496da4660..8496da4660 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n35.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n35.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n36.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n36.xml
index 6c8fc9d625..6c8fc9d625 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n36.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n36.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n37.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n37.xml
index a892b9ccec..a892b9ccec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n37.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n37.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n38.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n38.xml
index 055d4cc822..055d4cc822 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n38.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n38.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n39.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n39.xml
index b44d77c951..b44d77c951 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n39.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n39.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n40.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n40.xml
index f9822a08ad..f9822a08ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n40.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n40.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n41.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n41.xml
index b7a5bd4806..b7a5bd4806 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n41.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n41.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n42.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n42.xml
index 8db7d20631..8db7d20631 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n42.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n42.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n43.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n43.xml
index a6ed7d9fab..a6ed7d9fab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n43.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n43.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n44.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n44.xml
index 73cd69c154..73cd69c154 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n44.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n44.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n45.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n45.xml
index 1b03ef4f8e..1b03ef4f8e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n45.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n45.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n46.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n46.xml
index c9d8e7dbfe..c9d8e7dbfe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n46.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n46.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n47.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n47.xml
index ec97b666b6..ec97b666b6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n47.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n47.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n48.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n48.xml
index 6f44b7a427..6f44b7a427 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n48.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n48.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n49.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n49.xml
index af47a4d263..af47a4d263 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n49.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n49.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n50.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n50.xml
index 0f56ee00dc..0f56ee00dc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n50.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n50.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n51.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n51.xml
index 7b7d3a3b5f..7b7d3a3b5f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n51.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n51.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n52.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n52.xml
index fa859cd738..fa859cd738 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n52.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n52.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n53.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n53.xml
index 89e06a6c56..89e06a6c56 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n53.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n53.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n54.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n54.xml
index f78ed8155d..f78ed8155d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n54.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n54.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n55.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n55.xml
index 19c0b675e7..19c0b675e7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n55.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n55.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n56.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n56.xml
index a4d566d17f..a4d566d17f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n56.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n56.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n57.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n57.xml
index abd9a33d08..abd9a33d08 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n57.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n57.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n58.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n58.xml
index 501a77b028..501a77b028 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n58.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n58.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n59.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n59.xml
index a220cec033..a220cec033 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n59.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n59.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n60.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n60.xml
index 69451a513a..69451a513a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n60.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n60.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n61.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n61.xml
index c96791228b..c96791228b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n61.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n61.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n62.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n62.xml
index 699f5858c2..699f5858c2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n62.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n62.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n63.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n63.xml
index 18d9938f33..18d9938f33 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n63.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n63.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n64.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n64.xml
index 09b68ffec8..09b68ffec8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n64.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n64.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n65.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n65.xml
index 099c1a747d..099c1a747d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n65.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n65.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n66.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n66.xml
index 9a9f6b4f53..9a9f6b4f53 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n66.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n66.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n67.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n67.xml
index 53cd2163b1..53cd2163b1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n67.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n67.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n68.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n68.xml
index 7a7ac59372..7a7ac59372 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n68.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n68.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n69.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n69.xml
index 829a3105e7..829a3105e7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n69.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n69.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n70.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n70.xml
index dfc5981472..dfc5981472 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n70.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n70.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n71.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n71.xml
index 60c6012304..60c6012304 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n71.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n71.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n72.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n72.xml
index 747f8e16f6..747f8e16f6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n72.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n72.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n73.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n73.xml
index 67b3569cdc..67b3569cdc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n73.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n73.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n74.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n74.xml
index 4e0f1aec07..4e0f1aec07 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n74.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n74.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n75.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n75.xml
index 6bc8136e7e..6bc8136e7e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n75.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n75.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n76.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n76.xml
index 00786d0d6a..00786d0d6a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n76.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n76.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n77.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n77.xml
index 271ce04bc9..271ce04bc9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n77.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n77.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n78.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n78.xml
index 8c1e53b7e4..8c1e53b7e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n78.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n78.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n79.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n79.xml
index cfb54f167e..cfb54f167e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n79.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n79.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n80.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n80.xml
index c7a579ec43..c7a579ec43 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n80.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n80.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n81.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n81.xml
index b6af57188a..b6af57188a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n81.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n81.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n82.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n82.xml
index dc3bdc94d3..dc3bdc94d3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n82.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n82.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n83.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n83.xml
index acaaa02b4e..acaaa02b4e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n83.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n83.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n84.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n84.xml
index ada649f833..ada649f833 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n84.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n84.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n85.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n85.xml
index c4d60d1c59..c4d60d1c59 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n85.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n85.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n86.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n86.xml
index e97bb89679..e97bb89679 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n86.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n86.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n87.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n87.xml
index e1df7fb766..e1df7fb766 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n87.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n87.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n88.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n88.xml
index 5efe3e46f5..5efe3e46f5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n88.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n88.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n89.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n89.xml
index f9d5f8b077..f9d5f8b077 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n89.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n89.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n90.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n90.xml
index eb138286ee..eb138286ee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n90.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n90.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n91.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n91.xml
index 681a0161e8..681a0161e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n91.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n91.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n92.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n92.xml
index 438bed05a9..438bed05a9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n92.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n92.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n93.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n93.xml
index 7ce88e04ef..7ce88e04ef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n93.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n93.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n94.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n94.xml
index eca46c86a2..eca46c86a2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n94.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n94.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n95.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n95.xml
index bc2ce61956..bc2ce61956 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n95.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n95.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n96.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n96.xml
index 2e0ac15856..2e0ac15856 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n96.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n96.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n97.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n97.xml
index 64e954be27..64e954be27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n97.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n97.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n98.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n98.xml
index 227c2fbf90..227c2fbf90 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n98.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n98.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n99.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n99.xml
index 7603a638be..7603a638be 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n99.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n99.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Entries
index 5ffda9868a..5ffda9868a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Repository
index 95383be9fa..95383be9fa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n01.xml
index 944cd9f766..944cd9f766 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n02.xml
index fdcec7e946..fdcec7e946 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n03.xml
index 0ac615b3bd..0ac615b3bd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n04.xml
index 0dcea5ee21..0dcea5ee21 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Entries
index 66717b2c63..66717b2c63 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Repository
index 21932a6e48..21932a6e48 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n01.xml
index 93e8c6a76b..93e8c6a76b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n02.xml
index e656074b4b..e656074b4b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n03.xml
index 4912cac9e3..4912cac9e3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n04.xml
index 89c94fcf6b..89c94fcf6b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n05.xml
index 2ca7779d71..2ca7779d71 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n06.xml
index 6a1a9f7da2..6a1a9f7da2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n07.xml
index 1291bed370..1291bed370 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n08.xml
index ffc50ae831..ffc50ae831 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n09.xml
index b85bcd860c..b85bcd860c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n10.xml
index 8b4dfc9820..8b4dfc9820 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n11.xml
index e801679d8d..e801679d8d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n12.xml
index 7886141f45..7886141f45 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n13.xml
index 919bc60a09..919bc60a09 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n14.xml
index 8488244c1f..8488244c1f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n15.xml
index 4b41eea665..4b41eea665 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n16.xml
index 1a0cd7a005..1a0cd7a005 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n17.xml
index ad5e107762..ad5e107762 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n18.xml
index 2080d6d6e9..2080d6d6e9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n19.xml
index 525cb830b5..525cb830b5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n19.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n20.xml
index 9b7f8dc3c9..9b7f8dc3c9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n20.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n21.xml
index 226c54652e..226c54652e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n21.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n22.xml
index 0c9a38c9b2..0c9a38c9b2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n22.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n23.xml
index 61c108593e..61c108593e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n23.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n23.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n24.xml
index fb47e7084e..fb47e7084e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n24.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n25.xml
index 6e8138438c..6e8138438c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n25.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n25.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n26.xml
index 22649c2dcc..22649c2dcc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n26.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n26.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n27.xml
index 89cef39443..89cef39443 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n27.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n27.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n28.xml
index 2f7cf1a426..2f7cf1a426 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n28.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n28.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n29.xml
index 0d461fc95e..0d461fc95e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n29.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n29.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n30.xml
index 0441ce3e29..0441ce3e29 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n30.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n30.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n31.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n31.xml
index 31e2dda32b..31e2dda32b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n31.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n31.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n32.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n32.xml
index d3ab27a424..d3ab27a424 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n32.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n32.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n33.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n33.xml
index 1e7dfdf670..1e7dfdf670 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n33.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n33.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n34.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n34.xml
index f410327cec..f410327cec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n34.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n34.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n35.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n35.xml
index d3857b9d95..d3857b9d95 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n35.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n35.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n36.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n36.xml
index 616d4e7f40..616d4e7f40 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n36.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n36.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n37.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n37.xml
index 8695a21644..8695a21644 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n37.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n37.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n38.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n38.xml
index a0a8fa39b7..a0a8fa39b7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n38.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n38.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n39.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n39.xml
index c033ffc330..c033ffc330 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n39.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n39.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n40.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n40.xml
index 7974a453d5..7974a453d5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n40.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n40.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n41.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n41.xml
index d29c76c951..d29c76c951 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n41.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n41.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n42.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n42.xml
index 0f84f57f32..0f84f57f32 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n42.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n42.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n43.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n43.xml
index 647fb53a17..647fb53a17 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n43.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n43.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n44.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n44.xml
index 5d72bc4e45..5d72bc4e45 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n44.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n44.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n45.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n45.xml
index f8d7404ed0..f8d7404ed0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n45.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n45.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n46.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n46.xml
index 9e41f32ec4..9e41f32ec4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n46.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n46.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n47.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n47.xml
index e9ad0d673a..e9ad0d673a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n47.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n47.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n48.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n48.xml
index f8d76939e3..f8d76939e3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n48.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n48.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n49.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n49.xml
index a4a976c95d..a4a976c95d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n49.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n49.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n50.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n50.xml
index aafe1462ed..aafe1462ed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n50.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n50.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n51.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n51.xml
index 1e2d7a016f..1e2d7a016f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n51.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n51.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n52.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n52.xml
index c3fa1f1302..c3fa1f1302 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n52.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n52.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n53.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n53.xml
index e085f82d17..e085f82d17 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n53.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n53.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n54.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n54.xml
index bbe5b86041..bbe5b86041 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n54.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n54.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n55.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n55.xml
index cc8a362bbb..cc8a362bbb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n55.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n55.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n56.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n56.xml
index b212b06847..b212b06847 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n56.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n56.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n57.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n57.xml
index 0b2f283d0f..0b2f283d0f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n57.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n57.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n58.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n58.xml
index b6fe5540a8..b6fe5540a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n58.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n58.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n59.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n59.xml
index 26fbcfb58b..26fbcfb58b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n59.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n59.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n60.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n60.xml
index 2a69c9ba12..2a69c9ba12 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n60.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n60.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n61.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n61.xml
index de7d518267..de7d518267 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n61.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n61.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n62.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n62.xml
index 59e0704d83..59e0704d83 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n62.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n62.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n63.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n63.xml
index 9c52345412..9c52345412 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n63.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n63.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n64.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n64.xml
index cf6f9b73f6..cf6f9b73f6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n64.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n64.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n66.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n66.xml
index 7938cd6f32..7938cd6f32 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n66.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n66.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n67.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n67.xml
index c767067397..c767067397 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n67.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n67.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n68.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n68.xml
index f691f25400..f691f25400 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n68.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n68.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n69.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n69.xml
index 12f66777a7..12f66777a7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n69.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n69.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n70.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n70.xml
index b4b443d9f2..b4b443d9f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n70.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n70.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n71.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n71.xml
index 1896885a77..1896885a77 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n71.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n71.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n72.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n72.xml
index 05d2574ff2..05d2574ff2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n72.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n72.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n73.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n73.xml
index 2dec5281be..2dec5281be 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n73.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n73.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n74.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n74.xml
index e0ec7d7700..e0ec7d7700 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n74.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n74.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n75.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n75.xml
index 355282c0aa..355282c0aa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n75.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n75.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n76.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n76.xml
index bd5b80ead5..bd5b80ead5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n76.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n76.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n77.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n77.xml
index f2ed26bb9d..f2ed26bb9d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n77.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n77.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n78.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n78.xml
index d7ad3001d8..d7ad3001d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n78.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n78.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n79.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n79.xml
index 7b4764b930..7b4764b930 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n79.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n79.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n80.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n80.xml
index a15a6a48c7..a15a6a48c7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n80.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n80.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n81.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n81.xml
index 9ff4e284e0..9ff4e284e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n81.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n81.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n82.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n82.xml
index a43b1a6c30..a43b1a6c30 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n82.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n82.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n83.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n83.xml
index 5a6e6c12b8..5a6e6c12b8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n83.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n83.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n84.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n84.xml
index 627447938c..627447938c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n84.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n84.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n85.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n85.xml
index 36a4153b7c..36a4153b7c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n85.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n85.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Entries
index 121f8e743b..121f8e743b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Repository
index 3c41a5fd7d..3c41a5fd7d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n01.xml
index 7f6560c7e3..7f6560c7e3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n02.xml
index 32098d638a..32098d638a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n03.xml
index 4df1d6dd90..4df1d6dd90 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n04.xml
index ac966c9668..ac966c9668 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n05.xml
index 5ab611dbeb..5ab611dbeb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n06.xml
index f726710c79..f726710c79 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n08.xml
index b34ee8fd3b..b34ee8fd3b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n09.xml
index 9c5857a77d..9c5857a77d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n10.xml
index 905d767e09..905d767e09 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n11.xml
index ad14d219f4..ad14d219f4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n12.xml
index d45eb84d37..d45eb84d37 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n13.xml
index 066de84967..066de84967 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n14.xml
index 243658df6b..243658df6b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n15.xml
index d59a76dcc5..d59a76dcc5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n16.xml
index e6098c8d60..e6098c8d60 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Entries
index 52e81e1caa..52e81e1caa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Repository
index 31b68d8f24..31b68d8f24 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n01.xml
index 72f3765c1f..72f3765c1f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n02.xml
index c6c20e7447..c6c20e7447 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n03.xml
index 85e1191c1e..85e1191c1e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n04.xml
index 82b75d33bf..82b75d33bf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n05.xml
index 49f7aaa6a5..49f7aaa6a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n06.xml
index 9e9313d861..9e9313d861 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n07.xml
index 719d31494e..719d31494e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n08.xml
index ad6b01449e..ad6b01449e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n09.xml
index 78884fcd3a..78884fcd3a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n10.xml
index 152ab1f14a..152ab1f14a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n11.xml
index 471c4e3036..471c4e3036 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n12.xml
index 731d505a1f..731d505a1f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/432gewf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/432gewf.xml
index 51515865c0..51515865c0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/432gewf.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/432gewf.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Entries
index 9ada44c04f..9ada44c04f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Repository
index ceb8cec477..ceb8cec477 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/ltinentval.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/ltinentval.xml
index 929bd7f9c0..929bd7f9c0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/ltinentval.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/ltinentval.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/simpleltinentval.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/simpleltinentval.xml
index a668e4c3f5..a668e4c3f5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/simpleltinentval.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/simpleltinentval.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Entries
index 3c2743a21c..3c2743a21c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Repository
index 5250d9403f..5250d9403f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.dtd
index 956320f370..956320f370 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.xml
index a293d092d6..a293d092d6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Entries
index 67e5dbe407..67e5dbe407 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Repository
index 48acd66c01..48acd66c01 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Entries
index 4ed8ab9a63..4ed8ab9a63 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Repository
index 7f0d8ed044..7f0d8ed044 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/ibm01v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/ibm01v01.xml
index c6e0cf470a..c6e0cf470a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/ibm01v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/ibm01v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Entries
index 81d6e5d3b4..81d6e5d3b4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Repository
index 7c03a9c171..7c03a9c171 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/ibm01v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/ibm01v01.xml
index 8b93892ae8..8b93892ae8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/ibm01v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/ibm01v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Entries
index c3228552d1..c3228552d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Repository
index 3341d0bc84..3341d0bc84 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml
index 2363b97fe7..2363b97fe7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Entries
index 56cc7b1ae9..56cc7b1ae9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Repository
index 7f0755c915..7f0755c915 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/ibm02v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/ibm02v01.xml
index 7e20303e9a..7e20303e9a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/ibm02v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/ibm02v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Entries
index 6271e781ea..6271e781ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Repository
index 7591eeb303..7591eeb303 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/ibm03v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/ibm03v01.xml
index 6ab6ff934f..6ab6ff934f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/ibm03v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/ibm03v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Entries
index 677e962239..677e962239 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Repository
index 7817ffc43d..7817ffc43d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/ibm03v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/ibm03v01.xml
index b2af47f3d5..b2af47f3d5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/ibm03v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/ibm03v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Entries
index ceb1a02eef..ceb1a02eef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Repository
index 11294d6f82..11294d6f82 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v01.xml
index 6972b10932..6972b10932 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v02.xml
index 72bca25508..72bca25508 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.dtd
index c39cb64c56..c39cb64c56 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.xml
index 7ce1eab062..7ce1eab062 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v04.xml
index 7661470018..7661470018 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v05.xml
index f03eb910b3..f03eb910b3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Entries
index 2ad162c296..2ad162c296 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Repository
index de9bac6df0..de9bac6df0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v01.xml
index f8dc7391f8..f8dc7391f8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v02.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v03.xml
index 3349e7e247..3349e7e247 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v04.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v05.xml
index 9f86daac0f..9f86daac0f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/student.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/student.dtd
index abb6c014dc..abb6c014dc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/student.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/student.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Entries
index c778cbc246..c778cbc246 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Repository
index 8c90615256..8c90615256 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v01.xml
index 51fa1087e7..51fa1087e7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v02.xml
index 6be402b518..6be402b518 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v03.xml
index a025c98312..a025c98312 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v04.xml
index 84cda90a88..84cda90a88 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v05.xml
index 47b32c5d23..47b32c5d23 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v06.xml
index 6b6c45eee0..6b6c45eee0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v07.xml
index 7ed6e11ae8..7ed6e11ae8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v08.xml
index c7e9e5ecd0..c7e9e5ecd0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Entries
index 5cf4d37b71..5cf4d37b71 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Repository
index 3e24d562bf..3e24d562bf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v01.xml
index a0e5f62ea7..a0e5f62ea7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v02.xml
index a0e5f62ea7..a0e5f62ea7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v03.xml
index 7fadc93f4d..7fadc93f4d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v04.xml
index b3a743f22f..b3a743f22f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v05.xml
index f38bac4154..f38bac4154 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v06.xml
index 3d59fbf803..3d59fbf803 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v07.xml
index 6ae9b6ca2f..6ae9b6ca2f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v08.xml
index 0fca8cb600..0fca8cb600 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Entries
index f5ab7bcd1f..f5ab7bcd1f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Repository
index e770587bd1..e770587bd1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v01.xml
index ea7a8948b3..ea7a8948b3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v02.xml
index 741c133f9d..741c133f9d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v03.xml
index 3f24ed2c34..3f24ed2c34 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v04.xml
index c7edb4198c..c7edb4198c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Entries
index cbd797b9ea..cbd797b9ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Repository
index 1da6db1a98..1da6db1a98 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v01.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v02.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v03.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v04.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/student.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/student.dtd
index 7ce18a99a3..7ce18a99a3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/student.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/student.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Entries
index 24330c6e6d..24330c6e6d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Repository
index e424f2df84..e424f2df84 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v01.xml
index c4ae3b21fb..c4ae3b21fb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v02.xml
index 5c64b3182c..5c64b3182c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v03.xml
index fc8a8be052..fc8a8be052 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v04.xml
index 0e56d70d61..0e56d70d61 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Entries
index d8b21942f9..d8b21942f9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Repository
index e664a4d720..e664a4d720 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v01.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v02.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v03.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v04.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/student.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/student.dtd
index 7ce18a99a3..7ce18a99a3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/student.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/student.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Entries
index 2259f8c8da..2259f8c8da 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Repository
index 5649ac4748..5649ac4748 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/ibm13v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/ibm13v01.xml
index 0cffd8ac00..0cffd8ac00 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/ibm13v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/ibm13v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Entries
index f538fd9432..f538fd9432 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Repository
index 2eb3061684..2eb3061684 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/ibm13v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/ibm13v01.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/ibm13v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/ibm13v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/student.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/student.dtd
index 7ce18a99a3..7ce18a99a3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/student.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/student.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Entries
index a0deacc423..a0deacc423 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Repository
index 486d08b615..486d08b615 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v01.xml
index 6856c02d12..6856c02d12 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v02.xml
index dc868cada8..dc868cada8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v03.xml
index e4a72645a1..e4a72645a1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Entries
index a1bb03f508..a1bb03f508 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Repository
index 2b75758e8a..2b75758e8a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v01.xml
index 768784919e..768784919e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v02.xml
index e5df213173..e5df213173 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v03.xml
index e61667b08c..e61667b08c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Entries
index 04c7981799..04c7981799 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Repository
index 37bc03d0a4..37bc03d0a4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v01.xml
index 0ae0217060..0ae0217060 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v02.xml
index 6a5f12a2ca..6a5f12a2ca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v03.xml
index fdccbc05f1..fdccbc05f1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v04.xml
index 06419e86fd..06419e86fd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Entries
index 7365602124..7365602124 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Repository
index 84e15c395c..84e15c395c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v01.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v02.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v03.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v04.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Entries
index 15f24626b4..15f24626b4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Repository
index 21b5dbc7b8..21b5dbc7b8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v01.xml
index 9e39638c06..9e39638c06 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v02.xml
index 9afced545d..9afced545d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v03.xml
index 61d7d28ffc..61d7d28ffc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Entries
index 5b68155073..5b68155073 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Repository
index 9328178c7e..9328178c7e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v01.xml
index 32de558de8..32de558de8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v02.xml
index 32de558de8..32de558de8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v03.xml
index 4ea41b794d..4ea41b794d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Entries
index 9c40725b79..9c40725b79 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Repository
index c5d781f18d..c5d781f18d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/ibm17v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/ibm17v01.xml
index 9a88d47329..9a88d47329 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/ibm17v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/ibm17v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Entries
index a1da9c5089..a1da9c5089 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Repository
index e9ecb2f372..e9ecb2f372 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/ibm17v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/ibm17v01.xml
index 78232f4949..78232f4949 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/ibm17v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/ibm17v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Entries
index b3281c603a..b3281c603a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Repository
index 4bfd44e42a..4bfd44e42a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/ibm18v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/ibm18v01.xml
index 484508e18f..484508e18f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/ibm18v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/ibm18v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Entries
index c46c2381a4..c46c2381a4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Repository
index b89c62083c..b89c62083c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/ibm18v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/ibm18v01.xml
index 26c81568dc..26c81568dc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/ibm18v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/ibm18v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Entries
index 719df701a1..719df701a1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Repository
index 64a6e78981..64a6e78981 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/ibm19v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/ibm19v01.xml
index 8144948908..8144948908 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/ibm19v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/ibm19v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Entries
index fa38b54ca3..fa38b54ca3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Repository
index 994d223bd8..994d223bd8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/ibm19v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/ibm19v01.xml
index 71d189035c..71d189035c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/ibm19v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/ibm19v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Entries
index 3165a90d42..3165a90d42 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Repository
index c64ebc0145..c64ebc0145 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v01.xml
index 222ae023b3..222ae023b3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v02.xml
index 6896e72670..6896e72670 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Entries
index 231b676983..231b676983 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Repository
index 0fe9d8dbe9..0fe9d8dbe9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v01.xml
index c73764ecf7..c73764ecf7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v02.xml
index 9c4db221cd..9c4db221cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Entries
index 6e98955619..6e98955619 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Repository
index ee165355e8..ee165355e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/ibm21v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/ibm21v01.xml
index 533f052ce0..533f052ce0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/ibm21v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/ibm21v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Entries
index bd55cefce3..bd55cefce3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Repository
index 8b9fb7ad09..8b9fb7ad09 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/ibm21v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/ibm21v01.xml
index 71d189035c..71d189035c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/ibm21v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/ibm21v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Entries
index fa4a82e1e2..fa4a82e1e2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Repository
index 5f5a697bf0..5f5a697bf0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v01.xml
index 7984200fff..7984200fff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v02.xml
index d8b0858eb3..d8b0858eb3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v03.xml
index 9a95702f3c..9a95702f3c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v04.xml
index 30d27eb37f..30d27eb37f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v05.xml
index 84f5e9d42e..84f5e9d42e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v06.xml
index 22034726a3..22034726a3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v07.xml
index a31f560e93..a31f560e93 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Entries
index e51d819ebf..e51d819ebf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Repository
index a0723d23dd..a0723d23dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v01.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v02.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v03.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v04.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v05.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v06.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v07.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Entries
index fa4440747a..fa4440747a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Repository
index 45b17fbf0f..45b17fbf0f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v01.xml
index 8e70c84e1c..8e70c84e1c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v02.xml
index 4d336102c6..4d336102c6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v03.xml
index 1f9672f7b1..1f9672f7b1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v04.xml
index 02b3df2473..02b3df2473 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v05.xml
index e221630a85..e221630a85 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v06.xml
index b329d228a8..b329d228a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Entries
index 502b60df8a..502b60df8a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Repository
index 7a831b4265..7a831b4265 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v01.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v02.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v03.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v04.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v05.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v06.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Entries
index d865949755..d865949755 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Repository
index e6d7680fe1..e6d7680fe1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v01.xml
index 8e70c84e1c..8e70c84e1c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v02.xml
index 07a3d5d46f..07a3d5d46f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Entries
index 22b0201813..22b0201813 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Repository
index 60b8804381..60b8804381 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v01.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v02.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Entries
index c26b7d7d27..c26b7d7d27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Repository
index c2e3446ae1..c2e3446ae1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v01.xml
index 8e70c84e1c..8e70c84e1c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v02.xml
index 23c98b5f9d..23c98b5f9d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v03.xml
index 5890536e93..5890536e93 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v04.xml
index b9b686343c..b9b686343c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Entries
index 0fb2f26a26..0fb2f26a26 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Repository
index a125e558b5..a125e558b5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v01.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v02.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v03.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v04.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Entries
index a0eb985af5..a0eb985af5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Repository
index 60a4a297b2..60a4a297b2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/ibm26v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/ibm26v01.xml
index f61cfbb955..f61cfbb955 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/ibm26v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/ibm26v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Entries
index f7cce23189..f7cce23189 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Repository
index 281977e9f2..281977e9f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/ibm26v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/ibm26v01.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/ibm26v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/ibm26v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Entries
index b76578aa79..b76578aa79 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Repository
index 15b01139aa..15b01139aa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v01.xml
index 97db90a6d8..97db90a6d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v02.xml
index abf0bbe27d..abf0bbe27d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v03.xml
index 2f11ac9519..2f11ac9519 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Entries
index b4bde9843d..b4bde9843d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Repository
index cadb6bda66..cadb6bda66 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v01.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v02.xml
index c038a64209..c038a64209 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v03.xml
index 957c86425b..957c86425b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Entries
index 5fecb9050c..5fecb9050c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Repository
index cdcaf14233..cdcaf14233 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v01.xml
index d313845ba4..d313845ba4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.dtd
index e441aa2b7d..e441aa2b7d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.txt b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.txt
index ac04999353..ac04999353 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.txt
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.txt
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.xml
index f68fd69572..f68fd69572 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Entries
index 7e4a593059..7e4a593059 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Repository
index 3e7d440c13..3e7d440c13 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v01.xml
index c712ea7861..c712ea7861 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v02.xml
index 40b51ef247..40b51ef247 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Entries
index 8a98f4bd98..8a98f4bd98 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Repository
index a146fb7177..a146fb7177 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.txt b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.txt
index f02afb2593..f02afb2593 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.txt
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.txt
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.xml
index de85558e2a..de85558e2a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v02.xml
index 8a2081acc9..8a2081acc9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Entries
index e64620d6ae..e64620d6ae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Repository
index 0618dd7052..0618dd7052 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v01.xml
index 46c4f36ba0..46c4f36ba0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v02.xml
index 46c4f36ba0..46c4f36ba0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Entries
index b77f36a4d3..b77f36a4d3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Repository
index 82bebf52cd..82bebf52cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.dtd
index 62ada785ad..62ada785ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.xml
index 71d05cbad0..71d05cbad0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.dtd
index 254d7b2727..254d7b2727 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.xml
index 9ee450aeeb..9ee450aeeb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Entries
index 350b2ca202..350b2ca202 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Repository
index c37699b70b..c37699b70b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v01.xml
index c712ea7861..c712ea7861 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v02.xml
index c712ea7861..c712ea7861 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Entries
index da1db4ad77..da1db4ad77 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Repository
index 5468f82899..5468f82899 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.dtd
index 185b7c8a5d..185b7c8a5d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.xml
index c8a5d834ae..c8a5d834ae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Entries
index e8dd232d4b..e8dd232d4b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Repository
index 8a3b3ca348..8a3b3ca348 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/ibm31v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/ibm31v01.xml
index 1b6971c727..1b6971c727 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/ibm31v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/ibm31v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Entries
index eaa4992792..eaa4992792 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Repository
index 57ab3d356d..57ab3d356d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.dtd
index 46dc2a5691..46dc2a5691 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.xml
index 38bf10ead8..38bf10ead8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.dtd
index 3b537f2c93..3b537f2c93 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.xml
index ff6e0ec9ad..ff6e0ec9ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.dtd
index b7649a210a..b7649a210a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.xml
index c9defb0463..c9defb0463 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.dtd
index 64c4f03ee7..64c4f03ee7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.xml
index 03d054f263..03d054f263 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Entries
index ad911de9d2..ad911de9d2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Repository
index 499d2cd1d6..499d2cd1d6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v01.xml
index 2ec4ca8d75..2ec4ca8d75 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v02.xml
index d7ab7cb44b..d7ab7cb44b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v03.xml
index 0f50002df9..0f50002df9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v04.xml
index da11a67094..da11a67094 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Entries
index c796575931..c796575931 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Repository
index 881b3413dd..881b3413dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/ibm33v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/ibm33v01.xml
index c85d67ac3e..c85d67ac3e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/ibm33v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/ibm33v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Entries
index 0bff6e9efb..0bff6e9efb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Repository
index f2067b9e46..f2067b9e46 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/ibm33v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/ibm33v01.xml
index 7366c087a3..7366c087a3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/ibm33v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/ibm33v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Entries
index 572fabd435..572fabd435 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Repository
index cb8138e28a..cb8138e28a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/ibm34v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/ibm34v01.xml
index e95ba4166e..e95ba4166e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/ibm34v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/ibm34v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Entries
index c838cf9804..c838cf9804 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Repository
index 350afd8817..350afd8817 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/ibm34v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/ibm34v01.xml
index 7366c087a3..7366c087a3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/ibm34v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/ibm34v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Entries
index 874daca05a..874daca05a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Repository
index 5b6e2599f4..5b6e2599f4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/ibm35v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/ibm35v01.xml
index 6c060e5182..6c060e5182 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/ibm35v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/ibm35v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Entries
index 3f0f33ce13..3f0f33ce13 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Repository
index e841e00e3e..e841e00e3e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/ibm35v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/ibm35v01.xml
index 2011da7711..2011da7711 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/ibm35v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/ibm35v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Entries
index 52f3d6958b..52f3d6958b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Repository
index 445e36276b..445e36276b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/ibm36v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/ibm36v01.xml
index 54ddaadef7..54ddaadef7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/ibm36v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/ibm36v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Entries
index 82957b404b..82957b404b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Repository
index 2805614bb4..2805614bb4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/ibm36v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/ibm36v01.xml
index 886ae81320..886ae81320 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/ibm36v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/ibm36v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Entries
index 2143fd9312..2143fd9312 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Repository
index 6d1ebb3842..6d1ebb3842 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/ibm37v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/ibm37v01.xml
index 8bdfd73b6d..8bdfd73b6d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/ibm37v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/ibm37v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Entries
index 02e49b6c09..02e49b6c09 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Repository
index 1aabd494a8..1aabd494a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/ibm37v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/ibm37v01.xml
index 2dc6b15b68..2dc6b15b68 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/ibm37v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/ibm37v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Entries
index 8d0ebe2382..8d0ebe2382 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Repository
index 5ef2834685..5ef2834685 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/ibm38v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/ibm38v01.xml
index b1ac99473c..b1ac99473c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/ibm38v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/ibm38v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Entries
index 64fc46fe75..64fc46fe75 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Repository
index 2e706b49e4..2e706b49e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/ibm38v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/ibm38v01.xml
index a747ce6262..a747ce6262 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/ibm38v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/ibm38v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Entries
index 501dbfbac3..501dbfbac3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Repository
index 9b4d948464..9b4d948464 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/ibm39v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/ibm39v01.xml
index b4cffd8e5d..b4cffd8e5d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/ibm39v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/ibm39v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Entries
index 06a4fc004c..06a4fc004c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Repository
index 4692fd5b4d..4692fd5b4d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/ibm39v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/ibm39v01.xml
index f3aa393a40..f3aa393a40 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/ibm39v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/ibm39v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Entries
index 657858e1f3..657858e1f3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Repository
index 1cbafc5374..1cbafc5374 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/ibm40v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/ibm40v01.xml
index 087b64a666..087b64a666 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/ibm40v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/ibm40v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Entries
index ceaf89b0ea..ceaf89b0ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Repository
index 930a13ddf9..930a13ddf9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/ibm40v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/ibm40v01.xml
index 3b2b470bad..3b2b470bad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/ibm40v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/ibm40v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Entries
index 63b80c456f..63b80c456f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Repository
index 0eb6eb6a86..0eb6eb6a86 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/ibm41v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/ibm41v01.xml
index 47e838ce42..47e838ce42 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/ibm41v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/ibm41v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Entries
index 91d9b1fe84..91d9b1fe84 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Repository
index c9a032af10..c9a032af10 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/ibm41v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/ibm41v01.xml
index 7c28d2c783..7c28d2c783 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/ibm41v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/ibm41v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Entries
index d5ad1ff6ea..d5ad1ff6ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Repository
index 67a4830b53..67a4830b53 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/ibm42v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/ibm42v01.xml
index f151704b94..f151704b94 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/ibm42v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/ibm42v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Entries
index 43a01e19dd..43a01e19dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Repository
index d61cecc4d4..d61cecc4d4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/ibm42v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/ibm42v01.xml
index e171475b80..e171475b80 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/ibm42v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/ibm42v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Entries
index 657d939e7a..657d939e7a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Repository
index 64c985842e..64c985842e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/ibm43v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/ibm43v01.xml
index 78a6f0aaf2..78a6f0aaf2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/ibm43v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/ibm43v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Entries
index dc162205da..dc162205da 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Repository
index 1ec9702753..1ec9702753 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/ibm43v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/ibm43v01.xml
index 4925b60469..4925b60469 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/ibm43v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/ibm43v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Entries
index 3fc0528974..3fc0528974 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Repository
index 39518a0edc..39518a0edc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/ibm44v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/ibm44v01.xml
index f3ab2c1715..f3ab2c1715 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/ibm44v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/ibm44v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Entries
index b72d92f035..b72d92f035 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Repository
index 8992aaf288..8992aaf288 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/ibm44v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/ibm44v01.xml
index a107534606..a107534606 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/ibm44v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/ibm44v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Entries
index 6c79b6be78..6c79b6be78 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Repository
index ef2b978d7c..ef2b978d7c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/ibm45v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/ibm45v01.xml
index 0c16231ab9..0c16231ab9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/ibm45v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/ibm45v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Entries
index 0c22eaf26c..0c22eaf26c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Repository
index fa615ebe9d..fa615ebe9d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/ibm45v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/ibm45v01.xml
index a107534606..a107534606 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/ibm45v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/ibm45v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Entries
index 48a24b954a..48a24b954a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Repository
index 80ca5bb360..80ca5bb360 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/ibm47v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/ibm47v01.xml
index e43203e332..e43203e332 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/ibm47v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/ibm47v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Entries
index 72d896d9dc..72d896d9dc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Repository
index 0e174cf027..0e174cf027 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/ibm47v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/ibm47v01.xml
index fb492e28e4..fb492e28e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/ibm47v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/ibm47v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Entries
index c2beb38dba..c2beb38dba 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Repository
index c39e0b8946..c39e0b8946 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.dtd
index fe00d6ae3a..fe00d6ae3a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.xml
index 5952647933..5952647933 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Entries
index a2ebdf256d..a2ebdf256d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Repository
index a653708399..a653708399 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/ibm49v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/ibm49v01.xml
index fb492e28e4..fb492e28e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/ibm49v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/ibm49v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Entries
index ba4082d889..ba4082d889 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Repository
index f75bf04483..f75bf04483 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.dtd
index 04685de4e7..04685de4e7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.xml
index 69848f1dac..69848f1dac 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Entries
index fd8d7c19f8..fd8d7c19f8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Repository
index 58fb9f9ec8..58fb9f9ec8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/ibm50v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/ibm50v01.xml
index 713ca91f78..713ca91f78 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/ibm50v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/ibm50v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Entries
index e7b8ffac66..e7b8ffac66 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Repository
index 6c06e5ca8e..6c06e5ca8e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v01.xml
index ea18f9060c..ea18f9060c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.dtd
index 035bd38816..035bd38816 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.xml
index c424f8e5d7..c424f8e5d7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Entries
index 72cb19aead..72cb19aead 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Repository
index 78285c212f..78285c212f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v01.xml
index 0c17c3f833..0c17c3f833 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v02.xml
index 0c17c3f833..0c17c3f833 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Entries
index 71f965d985..71f965d985 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Repository
index 00070be10d..00070be10d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/ibm52v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/ibm52v01.xml
index 778511eeae..778511eeae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/ibm52v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/ibm52v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Entries
index b48d8483a2..b48d8483a2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Repository
index ef79331efd..ef79331efd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/ibm52v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/ibm52v01.xml
index 47077a6b0d..47077a6b0d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/ibm52v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/ibm52v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Entries
index 71f40e131c..71f40e131c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Repository
index 7325264860..7325264860 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v01.xml
index 2317e38fac..2317e38fac 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v02.xml
index 9bfd55fd01..9bfd55fd01 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v03.xml
index 4215498125..4215498125 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibmlogo.gif b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibmlogo.gif
index 034ddc162b..034ddc162b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibmlogo.gif
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibmlogo.gif
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Entries
index 8174bd1ea2..8174bd1ea2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Repository
index b02a88598f..b02a88598f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v01.xml
index abb4b443e6..abb4b443e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v02.xml
index 3b744eefe7..3b744eefe7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v03.xml
index f98ff12935..f98ff12935 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/xmltech.gif b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/xmltech.gif
index 8f88a54f17..8f88a54f17 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/xmltech.gif
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/xmltech.gif
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Entries
index be48853f59..be48853f59 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Repository
index cf26a18411..cf26a18411 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/ibm55v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/ibm55v01.xml
index 1664311dc7..1664311dc7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/ibm55v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/ibm55v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Entries
index c468e1b1a9..c468e1b1a9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Repository
index c2642e408e..c2642e408e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/ibm55v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/ibm55v01.xml
index 05540bc826..05540bc826 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/ibm55v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/ibm55v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Entries
index 02553a9c25..02553a9c25 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Repository
index 9c04dcc542..9c04dcc542 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v01.xml
index 2e462b7cca..2e462b7cca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v02.xml
index 6007abcee4..6007abcee4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v03.xml
index bb8dfb12e7..bb8dfb12e7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v04.xml
index ed8e74d1a0..ed8e74d1a0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v05.xml
index 69b064a6ef..69b064a6ef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v06.xml
index 161965d790..161965d790 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v07.xml
index d238abc2fe..d238abc2fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v08.xml
index 865723c71c..865723c71c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v09.xml
index aa62050e66..aa62050e66 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v10.xml
index 116fa3bc96..116fa3bc96 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Entries
index f5f1df8dc7..f5f1df8dc7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Repository
index 92176f76d7..92176f76d7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v01.xml
index ef2fc53c2f..ef2fc53c2f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v02.xml
index 2be8a006a6..2be8a006a6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v03.xml
index 6e8f3e88be..6e8f3e88be 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v04.xml
index 90cb82cd27..90cb82cd27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v05.xml
index b737215b79..b737215b79 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v06.xml
index 1ffda9358d..1ffda9358d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v07.xml
index f42ed2ce33..f42ed2ce33 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v08.xml
index 8736918882..8736918882 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v09.xml
index 59630c40d9..59630c40d9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v10.xml
index 1baf6fbb8e..1baf6fbb8e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Entries
index 0e7fc516b6..0e7fc516b6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Repository
index 0d383ffae6..0d383ffae6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/ibm57v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/ibm57v01.xml
index 026dcdc5b7..026dcdc5b7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/ibm57v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/ibm57v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Entries
index c40a806f5f..c40a806f5f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Repository
index 27214d760f..27214d760f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/ibm57v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/ibm57v01.xml
index a02aa56e55..a02aa56e55 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/ibm57v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/ibm57v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Entries
index bd747fde59..bd747fde59 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Repository
index 0c10e14924..0c10e14924 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v01.xml
index dafe2fd64b..dafe2fd64b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v02.xml
index dc466440c3..dc466440c3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Entries
index 542b32a489..542b32a489 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Repository
index 9d25a282d4..9d25a282d4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v01.xml
index d80e4e7a4a..d80e4e7a4a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v02.xml
index a28dab91cf..a28dab91cf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Entries
index a38cce98e6..a38cce98e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Repository
index a9ef56c648..a9ef56c648 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v01.xml
index de89d08d2c..de89d08d2c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v02.xml
index 2620bc4b2c..2620bc4b2c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Entries
index caf2ca4acf..caf2ca4acf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Repository
index 8c73880dc9..8c73880dc9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v01.xml
index 91021d524f..91021d524f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v02.xml
index 041085b4ea..041085b4ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Entries
index a00cd3dbf8..a00cd3dbf8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Repository
index a58808e8b7..a58808e8b7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml
index 050a340016..050a340016 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v02.xml
index d2d9091649..d2d9091649 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v03.xml
index f5d1449f9c..f5d1449f9c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v04.xml
index b0684edc91..b0684edc91 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Entries
index 3eef66cd95..3eef66cd95 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Repository
index 890c77d282..890c77d282 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v01.xml
index ff619d06eb..ff619d06eb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v02.xml
index 25c23d7b58..25c23d7b58 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v03.xml
index 84cdd236f1..84cdd236f1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v04.xml
index 272589e0ea..272589e0ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Entries
index 5d767d52e9..5d767d52e9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Repository
index 7fda684f52..7fda684f52 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.dtd
index f38d86c239..f38d86c239 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.xml
index 9653dbbd4b..9653dbbd4b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.dtd
index 8552560d23..8552560d23 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.xml
index 16d65f680b..16d65f680b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Entries
index ba2cf45c26..ba2cf45c26 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Repository
index 570f4d7e27..570f4d7e27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v01.xml
index 58faad1c69..58faad1c69 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v02.xml
index c712ea7861..c712ea7861 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Entries
index 84c408581f..84c408581f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Repository
index e53b034fbc..e53b034fbc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.dtd
index fa1658b817..fa1658b817 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.xml
index 6aef865eef..6aef865eef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.dtd
index 0d8f9dbde9..0d8f9dbde9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.xml
index 68d64af76f..68d64af76f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.dtd
index e0935506cd..e0935506cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.xml
index 5706549dbb..5706549dbb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.dtd
index 9dc897a247..9dc897a247 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.xml
index 8a2e0cbf40..8a2e0cbf40 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.dtd
index 2070b07f01..2070b07f01 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.xml
index ec8583d3c0..ec8583d3c0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Entries
index 3fdbdc4cc0..3fdbdc4cc0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Repository
index 19f90bd98c..19f90bd98c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v01.xml
index 33a55b20cf..33a55b20cf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v02.xml
index 2e13e8b57d..2e13e8b57d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v03.xml
index b49da7bad7..b49da7bad7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v04.xml
index d9ae6c6bda..d9ae6c6bda 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v05.xml
index 83c66400e6..83c66400e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Entries
index 23bf0623ea..23bf0623ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Repository
index ef8ef57a96..ef8ef57a96 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.dtd
index b78d230497..b78d230497 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.xml
index af00015067..af00015067 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.dtd
index dc9c3da317..dc9c3da317 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.xml
index e3a81fa0a6..e3a81fa0a6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.dtd
index 3280ee4b31..3280ee4b31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.xml
index 7767d6af4e..7767d6af4e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.dtd
index 7e89f7de85..7e89f7de85 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.xml
index 823c32fd9b..823c32fd9b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.dtd
index 2cc362a193..2cc362a193 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.xml
index 680ab1a2d0..680ab1a2d0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Entries
index 074fab8a19..074fab8a19 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Repository
index b76794d4e5..b76794d4e5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v01.xml
index 12cfde5853..12cfde5853 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v02.xml
index d193162e1c..d193162e1c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v03.xml
index aa18165649..aa18165649 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v04.xml
index 2aaa7f9998..2aaa7f9998 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v05.xml
index 216eddf208..216eddf208 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Entries
index a6cb6c857a..a6cb6c857a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Repository
index e3aaf92f61..e3aaf92f61 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.dtd
index b0618c9d33..b0618c9d33 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.xml
index 6e6bde5203..6e6bde5203 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.dtd
index e290206735..e290206735 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.xml
index 45c0ba47da..45c0ba47da 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.dtd
index 4780e175c5..4780e175c5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.xml
index 63221dab27..63221dab27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Entries
index 0aad867492..0aad867492 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Repository
index 1ebd510f1a..1ebd510f1a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v01.xml
index dbabf5a283..dbabf5a283 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v02.xml
index a2ce286987..a2ce286987 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v03.xml
index b9eba2c844..b9eba2c844 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Entries
index 8276775870..8276775870 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Repository
index 4a2fb91cba..4a2fb91cba 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.dtd
index de6a97372b..de6a97372b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.xml
index 18b4ca75e6..18b4ca75e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.dtd
index 524c37884c..524c37884c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.xml
index f7f99e9d4a..f7f99e9d4a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Entries
index e7ad4080e8..e7ad4080e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Repository
index d05fb1c4af..d05fb1c4af 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v01.xml
index de36831bbc..de36831bbc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v02.xml
index c5f6a5fb80..c5f6a5fb80 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Entries
index 3a6104bbbf..3a6104bbbf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Repository
index d34ce12cc7..d34ce12cc7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml
index d7f7722da3..d7f7722da3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Entries
index dbeed2d2a7..dbeed2d2a7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Repository
index 2a7cbc27e5..2a7cbc27e5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml
index ed05e61ad6..ed05e61ad6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Entries
index c0a216c5a4..c0a216c5a4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Repository
index 5f01c1553e..5f01c1553e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/ibm67v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/ibm67v01.xml
index 5ada5f8d24..5ada5f8d24 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/ibm67v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/ibm67v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Entries
index 72f7e48197..72f7e48197 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Repository
index bf1d961dd8..bf1d961dd8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/ibm67v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/ibm67v01.xml
index ba06d941c6..ba06d941c6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/ibm67v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/ibm67v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Entries
index 4b0108a1be..4b0108a1be 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Repository
index 16fccf770c..16fccf770c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.dtd
index 57249bd6ab..57249bd6ab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.xml
index 33a8156651..33a8156651 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.ent
index 299a1121fb..299a1121fb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.xml
index 963415eaa6..963415eaa6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Entries
index eb373b6218..eb373b6218 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Repository
index f760536304..f760536304 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v01.xml
index 2375979678..2375979678 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v02.xml
index c05dd56b0c..c05dd56b0c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Entries
index 3e26ec4cc0..3e26ec4cc0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Repository
index 42be2f9772..42be2f9772 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.dtd
index 374f61f567..374f61f567 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.xml
index 9d3523f891..9d3523f891 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.ent
index 416c1cc81c..416c1cc81c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.xml
index 98b945933b..98b945933b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Entries
index 7591e389f9..7591e389f9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Repository
index e3de03e3c8..e3de03e3c8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v01.xml
index 2375979678..2375979678 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v02.xml
index c05dd56b0c..c05dd56b0c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Entries
index 14f4ae97a7..14f4ae97a7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Repository
index f580a7db85..f580a7db85 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.ent
index 0119d7c770..0119d7c770 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.xml
index e363e3dfc7..e363e3dfc7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Entries
index c970aff44b..c970aff44b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Repository
index e717a0d032..e717a0d032 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/ibm70v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/ibm70v01.xml
index 34634fac09..34634fac09 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/ibm70v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/ibm70v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Entries
index cd7fd509e8..cd7fd509e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Repository
index 9adb715738..9adb715738 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.ent
index 15e54d92cc..15e54d92cc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.xml
index 3fb4b9af07..3fb4b9af07 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v02.ent
index 477f60b33a..477f60b33a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v02.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v02.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v03.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v03.ent
index f46452e775..f46452e775 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v03.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v03.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Entries
index 7536d883ab..7536d883ab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Repository
index 59e86a95f6..59e86a95f6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/ibm78v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/ibm78v01.xml
index 52794f4dbd..52794f4dbd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/ibm78v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/ibm78v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Entries
index bd57c12125..bd57c12125 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Repository
index c36df15974..c36df15974 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.ent
index f54ba01b08..f54ba01b08 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.xml
index 1d1befaf03..1d1befaf03 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Entries
index 58b04c89ec..58b04c89ec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Repository
index 01cd93f790..01cd93f790 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/ibm79v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/ibm79v01.xml
index e898e58937..e898e58937 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/ibm79v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/ibm79v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Entries
index ba1712f619..ba1712f619 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Repository
index a2e8fdac1f..a2e8fdac1f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/ibm82v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/ibm82v01.xml
index 3c08581666..3c08581666 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/ibm82v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/ibm82v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Entries
index be03a47ea0..be03a47ea0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Repository
index da71ac9d80..da71ac9d80 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/ibm82v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/ibm82v01.xml
index 6200e1a16c..6200e1a16c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/ibm82v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/ibm82v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Entries
index 1174cccf0f..1174cccf0f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Repository
index c3f0a3cbb4..c3f0a3cbb4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/ibm85v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/ibm85v01.xml
index 045246e150..045246e150 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/ibm85v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/ibm85v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Entries
index 040b21147b..040b21147b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Repository
index 3c6ca0b25f..3c6ca0b25f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/ibm85v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/ibm85v01.xml
index b0aa21f3b1..b0aa21f3b1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/ibm85v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/ibm85v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Entries
index 75a1a248eb..75a1a248eb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Repository
index 77f2b4b3d0..77f2b4b3d0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/ibm86v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/ibm86v01.xml
index 150f10d977..150f10d977 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/ibm86v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/ibm86v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Entries
index d83c87b60f..d83c87b60f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Repository
index 187b88c955..187b88c955 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/ibm86v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/ibm86v01.xml
index f032d0c9b3..f032d0c9b3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/ibm86v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/ibm86v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Entries
index d822f21d5c..d822f21d5c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Repository
index 7b61a71f18..7b61a71f18 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/ibm87v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/ibm87v01.xml
index a59d63b8a7..a59d63b8a7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/ibm87v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/ibm87v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Entries
index d1cdff3eb4..d1cdff3eb4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Repository
index 7a9ac6729e..7a9ac6729e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/ibm87v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/ibm87v01.xml
index b9d16878dc..b9d16878dc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/ibm87v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/ibm87v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Entries
index 869d075ad4..869d075ad4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Repository
index 129ff7e8d7..129ff7e8d7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/ibm88v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/ibm88v01.xml
index 61d5db305d..61d5db305d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/ibm88v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/ibm88v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Entries
index 649aef6d96..649aef6d96 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Repository
index 3f82052164..3f82052164 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/ibm88v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/ibm88v01.xml
index ccdbdca30b..ccdbdca30b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/ibm88v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/ibm88v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Entries
index ad680e976d..ad680e976d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Repository
index b5f1d31b28..b5f1d31b28 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/ibm89v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/ibm89v01.xml
index 4d71cb9b9e..4d71cb9b9e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/ibm89v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/ibm89v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Entries
index 0665342204..0665342204 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Repository
index ec8baeb75e..ec8baeb75e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/ibm89v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/ibm89v01.xml
index 2e4c23ca21..2e4c23ca21 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/ibm89v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/ibm89v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Entries
index 05e6543f13..05e6543f13 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Repository
index 0497ff4c6e..0497ff4c6e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_invalid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_invalid.xml
index eb35efc4fe..eb35efc4fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_invalid.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_invalid.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_not-wf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_not-wf.xml
index baa357145f..baa357145f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_not-wf.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_not-wf.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_valid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_valid.xml
index bc0baf7262..bc0baf7262 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_valid.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_valid.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Entries
index b5b4053997..b5b4053997 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Repository
index 07e8a5f76b..07e8a5f76b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Entries
index 036518e0f5..036518e0f5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Repository
index f9a1cacca8..f9a1cacca8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i01.xml
index 4acbdc8c2b..4acbdc8c2b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i02.xml
index 81f503cc66..81f503cc66 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Entries
index c21e7230fa..c21e7230fa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Repository
index 98b18ce822..98b18ce822 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Entries
index 463f1c427e..463f1c427e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Repository
index 3190d3423b..3190d3423b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n01.xml
index bcdc4c23a5..bcdc4c23a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n02.xml
index 7720373ad9..7720373ad9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n03.xml
index fc9a469fe3..fc9a469fe3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n04.xml
index f18bcb3e50..f18bcb3e50 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n05.xml
index f8e7e35e6f..f8e7e35e6f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n06.xml
index c83d4f3039..c83d4f3039 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n07.xml
index fae131ea7d..fae131ea7d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n08.xml
index 7a687964cb..7a687964cb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n09.xml
index f023fe7eea..f023fe7eea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n09.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n10.xml
index cc010bafab..cc010bafab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n11.xml
index b1dac95bfa..b1dac95bfa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n12.xml
index 4a1e578930..4a1e578930 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n13.xml
index 5d818d13ec..5d818d13ec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n14.xml
index b5fe5b26c4..b5fe5b26c4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n15.xml
index 758f373298..758f373298 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n16.xml
index aa3b522c00..aa3b522c00 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n17.xml
index 75eb88798c..75eb88798c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n18.xml
index 8efbc86433..8efbc86433 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n19.xml
index b5536e084a..b5536e084a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n19.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n20.xml
index 7ca323bad5..7ca323bad5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n20.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n21.xml
index 95a8c9be26..95a8c9be26 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n21.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n22.xml
index 3df6b01f38..3df6b01f38 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n22.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n23.xml
index 53fc635301..53fc635301 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n23.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n23.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n24.xml
index c120acc370..c120acc370 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n24.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n25.xml
index a52e8bee77..a52e8bee77 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n25.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n25.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n26.xml
index ad1c0ebb99..ad1c0ebb99 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n26.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n26.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n27.xml
index a3dbf378da..a3dbf378da 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n27.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n27.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n28.xml
index cdf1c82955..cdf1c82955 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n28.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n28.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n29.xml
index 0e077c8fd4..0e077c8fd4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n29.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n29.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n30.xml
index 3b736dac0c..3b736dac0c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n30.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n30.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n31.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n31.xml
index 51bc907702..51bc907702 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n31.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n31.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n32.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n32.xml
index fc98d2df57..fc98d2df57 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n32.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n32.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n33.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n33.xml
index 062a5ff101..062a5ff101 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n33.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n33.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n34.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n34.xml
index fb7e5a9f0f..fb7e5a9f0f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n34.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n34.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n35.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n35.xml
index e97969161e..e97969161e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n35.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n35.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n36.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n36.xml
index e7677574c2..e7677574c2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n36.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n36.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n37.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n37.xml
index fbdb74a289..fbdb74a289 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n37.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n37.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n38.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n38.xml
index 536103e3f1..536103e3f1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n38.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n38.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n39.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n39.xml
index f7bdd57908..f7bdd57908 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n39.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n39.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n40.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n40.xml
index 7c9ac88aa8..7c9ac88aa8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n40.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n40.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n41.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n41.xml
index ab1e1f6031..ab1e1f6031 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n41.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n41.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n42.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n42.xml
index a1833a0900..a1833a0900 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n42.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n42.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n43.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n43.xml
index e166e5b5e8..e166e5b5e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n43.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n43.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n44.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n44.xml
index e66f0c7747..e66f0c7747 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n44.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n44.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n45.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n45.xml
index 5bd0b88709..5bd0b88709 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n45.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n45.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n46.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n46.xml
index 2fb7f40cba..2fb7f40cba 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n46.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n46.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n47.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n47.xml
index 153cf1627a..153cf1627a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n47.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n47.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n48.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n48.xml
index 37b08487ec..37b08487ec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n48.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n48.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n49.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n49.xml
index 6c7abff6b8..6c7abff6b8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n49.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n49.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n50.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n50.xml
index bb1408e389..bb1408e389 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n50.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n50.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n51.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n51.xml
index b02eb5a73a..b02eb5a73a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n51.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n51.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n52.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n52.xml
index ef4445db4f..ef4445db4f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n52.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n52.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n53.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n53.xml
index d4f0fba63d..d4f0fba63d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n53.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n53.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n54.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n54.xml
index 9b2958575d..9b2958575d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n54.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n54.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n55.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n55.xml
index c155253b78..c155253b78 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n55.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n55.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n56.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n56.xml
index aa38ecd70c..aa38ecd70c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n56.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n56.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n57.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n57.xml
index 27131260ad..27131260ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n57.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n57.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n58.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n58.xml
index 509ee430a1..509ee430a1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n58.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n58.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n59.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n59.xml
index 2af97c9518..2af97c9518 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n59.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n59.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n60.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n60.xml
index 1e7058a93a..1e7058a93a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n60.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n60.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n61.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n61.xml
index 91fed24453..91fed24453 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n61.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n61.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n62.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n62.xml
index 507a7049b7..507a7049b7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n62.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n62.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n63.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n63.xml
index 75df2bd7ed..75df2bd7ed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n63.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n63.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.ent
index e204c6b434..e204c6b434 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.xml
index b03071ef30..b03071ef30 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.ent
index 5bd1390a80..5bd1390a80 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.xml
index 56c25eb864..56c25eb864 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.ent
index eced60a5a0..eced60a5a0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.xml
index 43cfa46291..43cfa46291 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n67.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n67.xml
index 3f235d8ab7..3f235d8ab7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n67.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n67.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n68.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n68.xml
index 5b0b460a39..5b0b460a39 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n68.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n68.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n69.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n69.xml
index 07a1840298..07a1840298 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n69.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n69.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n70.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n70.xml
index 1863add553..1863add553 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n70.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n70.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n71.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n71.xml
index c5c8997938..c5c8997938 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n71.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n71.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Entries
index 43a8342165..43a8342165 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Repository
index 77ef3f2e7b..77ef3f2e7b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n01.xml
index 4c44ab644d..4c44ab644d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n02.xml
index 0b3c346476..0b3c346476 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n03.xml
index bda1b60fd0..bda1b60fd0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n04.xml
index f562a9bebf..f562a9bebf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n05.xml
index 5d6508e352..5d6508e352 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n06.xml
index 40c935a9fe..40c935a9fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n07.xml
index 3039964101..3039964101 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n08.xml
index 5806f2e81a..5806f2e81a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n09.xml
index 831891b545..831891b545 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n10.xml
index e31b5a9097..e31b5a9097 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n11.xml
index 6789aa35aa..6789aa35aa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n12.xml
index 5580423b21..5580423b21 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n13.xml
index e56d749cfc..e56d749cfc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n14.xml
index 8138a38d78..8138a38d78 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n15.xml
index 0a6a2b2b6e..0a6a2b2b6e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n16.xml
index b050ffb741..b050ffb741 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n17.xml
index 6f0d2d8327..6f0d2d8327 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n18.xml
index 85f194fb0f..85f194fb0f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n19.xml
index e66a949372..e66a949372 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n19.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n20.xml
index 8dda9e7be2..8dda9e7be2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n20.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n21.xml
index c6ff85d559..c6ff85d559 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n21.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n22.xml
index a5ef26afc1..a5ef26afc1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n22.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n23.xml
index b96f0c2b91..b96f0c2b91 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n23.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n23.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n24.xml
index 3b5d5d9691..3b5d5d9691 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n24.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n25.xml
index 21814b10d2..21814b10d2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n25.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n25.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n26.xml
index 72303c440e..72303c440e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n26.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n26.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n27.xml
index d70058412c..d70058412c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n27.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n27.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n28.xml
index 330d295a48..330d295a48 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n28.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n28.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Entries
index b6cd89f9fd..b6cd89f9fd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Repository
index 79a34aa60a..79a34aa60a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an01.xml
index 4b3180ab22..4b3180ab22 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an02.xml
index e94acbbe45..e94acbbe45 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an03.xml
index 4617b5645c..4617b5645c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an04.xml
index d334a16a07..d334a16a07 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an05.xml
index 229d20756d..229d20756d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an06.xml
index 5b0b33783a..5b0b33783a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an07.xml
index db80e5dbfe..db80e5dbfe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an08.xml
index 5955614e99..5955614e99 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an09.xml
index 40e327e536..40e327e536 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an10.xml
index 3d23068c8a..3d23068c8a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an11.xml
index b6ea599dc7..b6ea599dc7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an12.xml
index 489ec9453c..489ec9453c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an13.xml
index 4d47af69f1..4d47af69f1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an14.xml
index c9a2c644dd..c9a2c644dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an15.xml
index 4300c287c2..4300c287c2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an16.xml
index f9e0949570..f9e0949570 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an17.xml
index 6cb589b0b6..6cb589b0b6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an18.xml
index 0fe52c9770..0fe52c9770 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an19.xml
index cfdaa64f56..cfdaa64f56 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an19.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an20.xml
index a4155b517e..a4155b517e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an20.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an21.xml
index 620e15c41b..620e15c41b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an21.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an22.xml
index 7ffd2ab810..7ffd2ab810 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an22.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an23.xml
index 145642dac3..145642dac3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an23.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an23.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an24.xml
index 2b78981a45..2b78981a45 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an24.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an25.xml
index 5fdb671e60..5fdb671e60 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an25.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an25.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an26.xml
index a0e3eb568f..a0e3eb568f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an26.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an26.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an27.xml
index a751974244..a751974244 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an27.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an27.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an28.xml
index 9b98706d2e..9b98706d2e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an28.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an28.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Entries
index 78716f52d1..78716f52d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Repository
index fa2f35e8fa..fa2f35e8fa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n01.xml
index a3edcf06b2..a3edcf06b2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n02.xml
index fce14de084..fce14de084 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n03.xml
index 4aa5a4b364..4aa5a4b364 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n04.xml
index 1bbffdf534..1bbffdf534 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n05.xml
index 0ff04f2d86..0ff04f2d86 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n06.xml
index e95a058370..e95a058370 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Entries
index 7d820498ac..7d820498ac 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Repository
index 58229dc5c5..58229dc5c5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.dtd
index 9f4e46d786..9f4e46d786 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.xml
index 8d443429cb..8d443429cb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.dtd
index 0589dad520..0589dad520 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.xml
index 7b12ef2547..7b12ef2547 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.dtd
index 5c0f91d829..5c0f91d829 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.xml
index 446b8600eb..446b8600eb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.ent
index 2928170a35..2928170a35 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.xml
index 6989693604..6989693604 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.ent
index eba7e8e490..eba7e8e490 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.xml
index ad88167589..ad88167589 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.ent
index fd7a76646c..fd7a76646c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.xml
index 4dafc6d5c2..4dafc6d5c2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.dtd
index ba49e131b1..ba49e131b1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.xml
index 9358976808..9358976808 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.dtd
index 21e3d6ae63..21e3d6ae63 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.xml
index a2c6d3f800..a2c6d3f800 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.dtd
index a34ab702a0..a34ab702a0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.xml
index d81f9690d1..d81f9690d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.ent
index 2bd3d295e5..2bd3d295e5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.xml
index 7ecef85385..7ecef85385 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.ent
index 54dd853901..54dd853901 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.xml
index 44a51a53cf..44a51a53cf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.ent
index 761f7904e3..761f7904e3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.xml
index 6d99f811fd..6d99f811fd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.dtd
index 808bcc52c4..808bcc52c4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.ent
index 87c52c7416..87c52c7416 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.xml
index b80583c963..b80583c963 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.dtd
index f23c4c4f0d..f23c4c4f0d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.xml
index efad31468c..efad31468c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.dtd
index 3bc9c3001a..3bc9c3001a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.ent
index 32e0bd8af0..32e0bd8af0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.xml
index 2d6bb7a114..2d6bb7a114 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.ent
index 4cb0f1eb4e..4cb0f1eb4e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.xml
index e6d0eea805..e6d0eea805 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.ent
index e5d6d8f599..e5d6d8f599 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.xml
index d470e8bf7a..d470e8bf7a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.ent
index 939d9bdc6e..939d9bdc6e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.xml
index e9e31e7b7e..e9e31e7b7e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.dtd
index 42c3c44151..42c3c44151 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.ent
index 819e3bede4..819e3bede4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.xml
index 6559711cee..6559711cee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.dtd
index 71aa0e7cbc..71aa0e7cbc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.ent
index 4517dfcfaf..4517dfcfaf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.xml
index 730e3a97b5..730e3a97b5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.dtd
index 138fd50952..138fd50952 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.ent
index 4517dfcfaf..4517dfcfaf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.xml
index 8347923881..8347923881 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Entries
index ed3017bb3e..ed3017bb3e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Repository
index bb294bfda3..bb294bfda3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Entries
index d1cab55a76..d1cab55a76 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Repository
index 214b610f92..214b610f92 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v01.xml
index f55970e447..f55970e447 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v02.xml
index 128c4a5214..128c4a5214 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v03.xml
index 4f7aabc0f4..4f7aabc0f4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v04.xml
index 348004f132..348004f132 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v05.xml
index bb8ce67e7c..bb8ce67e7c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.ent
index 5edde50c09..5edde50c09 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.xml
index e21b65a2ff..e21b65a2ff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Entries
index 7799e50679..7799e50679 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Repository
index aa8eec08af..aa8eec08af 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.ent
index 9e7d302db7..9e7d302db7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.xml
index bb199c6315..bb199c6315 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.ent
index 49fa978a95..49fa978a95 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.xml
index 1e4016ea84..1e4016ea84 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.ent
index 3f9891b370..3f9891b370 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.xml
index 838469cf36..838469cf36 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.ent
index 943348b728..943348b728 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.xml
index c91f7ba292..c91f7ba292 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v05.xml
index 147ad514e6..147ad514e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v06.xml
index 926f087d87..926f087d87 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v07.xml
index 58d4d57815..58d4d57815 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v08.xml
index 98d5f4a098..98d5f4a098 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.ent
index 5f97ad4b82..5f97ad4b82 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.xml
index 6588aa88fe..6588aa88fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Entries
index a68bdbd784..a68bdbd784 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Repository
index 461fb90957..461fb90957 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v01.xml
index 3fed632c66..3fed632c66 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v02.xml
index 3fed632c66..3fed632c66 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v03.xml
index d52534db03..d52534db03 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v04.xml
index d52534db03..d52534db03 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v05.xml
index 976f241144..976f241144 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v06.xml
index 976f241144..976f241144 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v07.xml
index 976f241144..976f241144 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v08.xml
index e163aade1f..e163aade1f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v09.xml
index e163aade1f..e163aade1f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Entries
index 1265ae5a82..1265ae5a82 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Repository
index 5dc25dcd73..5dc25dcd73 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/ibm04v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/ibm04v01.xml
index bde882fb1c..bde882fb1c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/ibm04v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/ibm04v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Entries
index 326056b090..326056b090 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Repository
index d5df5dd2ed..d5df5dd2ed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/ibm04av01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/ibm04av01.xml
index 5bde28ec53..5bde28ec53 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/ibm04av01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/ibm04av01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Entries
index 41ef6c1681..41ef6c1681 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Repository
index d8fe4e1504..d8fe4e1504 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v01.xml
index 2a38052bd8..2a38052bd8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v02.xml
index e788d4670d..e788d4670d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v03.xml
index 729d2141d8..729d2141d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v04.xml
index 5833679d6a..5833679d6a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v05.xml
index c1b2f1372d..c1b2f1372d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Entries
index ac114c7460..ac114c7460 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Repository
index ce08b017d1..ce08b017d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/ibm07v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/ibm07v01.xml
index f9085fe9f5..f9085fe9f5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/ibm07v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/ibm07v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Entries
index 4d25ccca6a..4d25ccca6a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Repository
index cd4e508ce4..cd4e508ce4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.dtd
index 9ae6169f3d..9ae6169f3d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.xml
index 2f03d44e7b..2f03d44e7b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.dtd
index dc36b6b636..dc36b6b636 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.xml
index d303f398b5..d303f398b5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.dtd
index 05a67aea57..05a67aea57 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.xml
index 2b2cc810ae..2b2cc810ae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.ent
index 8d86d6a26e..8d86d6a26e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.xml
index 0d2a4cd04a..0d2a4cd04a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.ent
index 4391744380..4391744380 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.xml
index 75dfe9b86a..75dfe9b86a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.ent
index cf3f2d547d..cf3f2d547d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.xml
index d0d499daf9..d0d499daf9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.dtd
index df6388e385..df6388e385 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.xml
index a3667b9edc..a3667b9edc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.dtd
index a610166780..a610166780 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.xml
index 0ffa57ab27..0ffa57ab27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.dtd
index 44c2564a6c..44c2564a6c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.xml
index d955fe34cb..d955fe34cb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.ent
index 4b2573ba5a..4b2573ba5a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.xml
index 2a19ceba0a..2a19ceba0a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.ent
index 8b9b9d9349..8b9b9d9349 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.xml
index 9819fc6d30..9819fc6d30 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.ent
index 3f4cc25e67..3f4cc25e67 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.xml
index d9d639e336..d9d639e336 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.dtd
index e40682d095..e40682d095 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.xml
index 3b79a6a083..3b79a6a083 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.dtd
index 6cc72c254f..6cc72c254f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.xml
index 23fdd40346..23fdd40346 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.dtd
index 8a1db69f4c..8a1db69f4c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.xml
index 12f6ee9275..12f6ee9275 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.ent
index 88d27c7455..88d27c7455 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.xml
index a1099c212a..a1099c212a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.ent
index 6733c33def..6733c33def 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.xml
index 87b3a34d56..87b3a34d56 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.ent
index 2cfc23280c..2cfc23280c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.xml
index 9841115d91..9841115d91 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.dtd
index 8dfe8e4056..8dfe8e4056 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.xml
index 2ffe4f5b07..2ffe4f5b07 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.dtd
index fe003dffd5..fe003dffd5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.xml
index 875443b086..875443b086 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.dtd
index 0f94c7c779..0f94c7c779 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.xml
index 9df7ca0bcc..9df7ca0bcc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.ent
index 4d91f6ba0a..4d91f6ba0a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.xml
index f9865b08dd..f9865b08dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.ent
index 1588316354..1588316354 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.xml
index 218cff6621..218cff6621 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.ent
index 830bb2afc8..830bb2afc8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.xml
index 2191ab17e5..2191ab17e5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.dtd
index eabbbc96c2..eabbbc96c2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.xml
index cfa805ff12..cfa805ff12 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.dtd
index ca0ef5fe82..ca0ef5fe82 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.xml
index 242ec38a24..242ec38a24 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.dtd
index 698fca1134..698fca1134 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.xml
index 9ccfe5f90a..9ccfe5f90a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.ent
index 5396b2f249..5396b2f249 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.xml
index a8fb35b6ed..a8fb35b6ed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.ent
index 9554e5711f..9554e5711f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.xml
index 4b673abf56..4b673abf56 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.ent
index 97822f7d7a..97822f7d7a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.xml
index 37c9bdb222..37c9bdb222 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Entries
index ba86ca54fd..ba86ca54fd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Repository
index 86eb60e7df..86eb60e7df 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/japanese.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/japanese.xml
index 0fe6e589dc..0fe6e589dc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/japanese.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/japanese.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-euc-jp.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-euc-jp.xml
index d7ee020a9f..d7ee020a9f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-euc-jp.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-euc-jp.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-iso-2022-jp.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-iso-2022-jp.xml
index 0a44566619..0a44566619 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-iso-2022-jp.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-iso-2022-jp.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-little-endian.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-little-endian.xml
index c12e1a1217..c12e1a1217 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-little-endian.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-little-endian.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-shift_jis.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-shift_jis.xml
index 2d167b6475..2d167b6475 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-shift_jis.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-shift_jis.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-16.xml
index e45d113fd6..e45d113fd6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-16.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-8.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-8.xml
index d7f4415e72..d7f4415e72 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-8.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-8.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/spec.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/spec.dtd
index dbe4840654..dbe4840654 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/spec.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/spec.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.dtd
index 19aadcd4e7..19aadcd4e7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.xml
index 887ab5ec30..887ab5ec30 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.dtd
index d69eea54b0..d69eea54b0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.xml
index 9a8e8545ac..9a8e8545ac 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-little-endian.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-little-endian.xml
index 81f72e59e8..81f72e59e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-little-endian.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-little-endian.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.dtd
index 684c848e2f..684c848e2f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.xml
index 742145560d..742145560d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.dtd
index 8259bc2566..8259bc2566 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.dtd
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.xml
index 6c8622aa43..6c8622aa43 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.dtd
index 8fa4368fd8..8fa4368fd8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.xml
index 497f572c0a..497f572c0a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Entries
index 4bb12807a9..4bb12807a9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Repository
index f5f017b129..f5f017b129 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/e2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/e2.xml
index 42a1842a53..42a1842a53 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/e2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/e2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/oasis.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/oasis.xml
index 63eb09d13e..63eb09d13e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/oasis.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/oasis.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail1.xml
index ac7935c852..ac7935c852 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail2.xml
index 74a0b57201..74a0b57201 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail3.xml
index c256e7b7c8..c256e7b7c8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail4.xml
index b42e00dff1..b42e00dff1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass1.xml
index 961dfb3de0..961dfb3de0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass2.xml
index 4198326a3f..4198326a3f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass3.xml
index 5ae90852fa..5ae90852fa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail1.xml
index cf8f3c2f1a..cf8f3c2f1a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail1.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail10.xml
index c61b59a1e8..c61b59a1e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail10.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail11.xml
index 7d3e88a5a8..7d3e88a5a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail11.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail12.xml
index 3c44f45320..3c44f45320 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail12.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail13.xml
index e915948396..e915948396 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail13.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail14.xml
index 5033bbb5f2..5033bbb5f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail14.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail15.xml
index 59055bc246..59055bc246 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail15.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail16.xml
index 794e6084a8..794e6084a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail16.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail17.xml
index d8a1cbae60..d8a1cbae60 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail17.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail18.xml
index 74794cd64a..74794cd64a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail18.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail19.xml
index 410f1de8a5..410f1de8a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail19.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail2.xml
index 036e54577e..036e54577e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail2.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail20.xml
index 4d7b8fce62..4d7b8fce62 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail20.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail21.xml
index 5a57e743d6..5a57e743d6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail21.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail22.xml
index c7c5445991..c7c5445991 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail22.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail23.xml
index ccc3c240e1..ccc3c240e1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail23.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail23.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail24.xml
index 686a249db8..686a249db8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail24.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail25.xml
index 8797df6ced..8797df6ced 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail25.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail25.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail26.xml
index eea3791f4f..eea3791f4f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail26.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail26.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail27.xml
index 0fca1b8f5f..0fca1b8f5f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail27.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail27.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail28.xml
index c5f005d9e2..c5f005d9e2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail28.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail28.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail29.xml
index 5fe733ec97..5fe733ec97 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail29.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail29.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail3.xml
index 932aabcea2..932aabcea2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail3.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail30.xml
index e64f3cbae2..e64f3cbae2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail30.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail30.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail31.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail31.xml
index 4ab577be0e..4ab577be0e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail31.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail31.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail4.xml
index 59d6113ea8..59d6113ea8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail4.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail5.xml
index 6d803b91f9..6d803b91f9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail5.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail6.xml
index 766582990a..766582990a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail6.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail6.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail7.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail7.xml
index 3d56c297b8..3d56c297b8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail7.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail7.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail8.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail8.xml
index e9d6fdf062..e9d6fdf062 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail8.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail8.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail9.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail9.xml
index 2bcea07d09..2bcea07d09 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail9.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail9.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail1.xml
index 7efa07a02b..7efa07a02b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail1.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail10.xml
index 13ec67bb36..13ec67bb36 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail11.xml
index 3675a2db37..3675a2db37 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail12.xml
index 14ad50f205..14ad50f205 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail13.xml
index ab56f252a8..ab56f252a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail14.xml
index 7b6d4abf89..7b6d4abf89 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail15.xml
index 36f03c88d0..36f03c88d0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail16.xml
index 083312da41..083312da41 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail17.xml
index a9f6b3818f..a9f6b3818f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail17.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail17.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail18.xml
index 2a6848ac08..2a6848ac08 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail18.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail18.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail19.xml
index 7c45027aca..7c45027aca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail19.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail19.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail2.xml
index 7725d65941..7725d65941 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail20.xml
index d0d3283f9c..d0d3283f9c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail20.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail21.xml
index a22c457683..a22c457683 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail21.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail22.xml
index 64020a41e8..64020a41e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail22.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail23.xml
index 972073ada7..972073ada7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail23.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail23.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail24.xml
index 256cb77fea..256cb77fea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail24.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail25.xml
index 3b1d4dfc48..3b1d4dfc48 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail25.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail25.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail26.xml
index 5e106e781e..5e106e781e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail26.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail26.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail27.xml
index c0fac5227a..c0fac5227a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail27.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail27.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail28.xml
index 6260c8892d..6260c8892d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail28.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail28.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail29.xml
index 81c4d185ec..81c4d185ec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail29.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail29.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail3.xml
index 3661497004..3661497004 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail4.xml
index ab56c5bd68..ab56c5bd68 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail5.xml
index 4699320d18..4699320d18 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail7.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail7.xml
index 8dd1cee186..8dd1cee186 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail7.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail7.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail8.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail8.xml
index 749a09ccd1..749a09ccd1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail8.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail8.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail9.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail9.xml
index 88c1d39d08..88c1d39d08 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail9.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail9.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03pass1.xml
index 291f23735d..291f23735d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail1.xml
index ef0cd005dd..ef0cd005dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail2.xml
index 2b0623c00e..2b0623c00e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail3.xml
index fdb8de602c..fdb8de602c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04pass1.xml
index 9601869d54..9601869d54 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail1.xml
index 8e1e68b976..8e1e68b976 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail2.xml
index 03424ba57a..03424ba57a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail3.xml
index b42dca0bfe..b42dca0bfe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail4.xml
index 2a0c6c1626..2a0c6c1626 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail5.xml
index 888fd18e13..888fd18e13 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05pass1.xml
index bba8b489d8..bba8b489d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06fail1.xml
index 8e01f85595..8e01f85595 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06pass1.xml
index e86b06ba6d..e86b06ba6d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p07pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p07pass1.xml
index 5ebf6fa91c..5ebf6fa91c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p07pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p07pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail1.xml
index 8931688d0d..8931688d0d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail2.xml
index c0621d71d2..c0621d71d2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08pass1.xml
index a218d1e959..a218d1e959 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.dtd
index f1121119bd..f1121119bd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.xml
index 7bdda60f82..7bdda60f82 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.dtd
index f0aa958566..f0aa958566 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.xml
index f8b1d14222..f8b1d14222 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail3.xml
index f6fbe63ce6..f6fbe63ce6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail4.xml
index 3ad9a69b93..3ad9a69b93 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail5.xml
index efb5be2c8a..efb5be2c8a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.dtd
index 3834889b35..3834889b35 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.xml
index b10c9ed9be..b10c9ed9be 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail1.xml
index 877b04083e..877b04083e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail2.xml
index 191b8eb78b..191b8eb78b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail3.xml
index 2f84129f28..2f84129f28 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10pass1.xml
index 101d89156e..101d89156e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail1.xml
index 50ff72fd62..50ff72fd62 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail2.xml
index d17912b411..d17912b411 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11pass1.xml
index f00024879d..f00024879d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail1.xml
index 5b6b2d6150..5b6b2d6150 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail2.xml
index ed0e3fb128..ed0e3fb128 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail3.xml
index a24fe8bc45..a24fe8bc45 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail4.xml
index 9062d6cdc5..9062d6cdc5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail5.xml
index 3f3169c7e6..3f3169c7e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail6.xml
index d1825c3803..d1825c3803 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail6.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail6.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail7.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail7.xml
index cd2b67dda9..cd2b67dda9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail7.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail7.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12pass1.xml
index a31053e1e9..a31053e1e9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail1.xml
index 359a8d6505..359a8d6505 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail2.xml
index e6f4d52d78..e6f4d52d78 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail3.xml
index 3fa6bc5791..3fa6bc5791 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14pass1.xml
index 7312edd99d..7312edd99d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail1.xml
index d3e444551b..d3e444551b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail2.xml
index ccb5560db2..ccb5560db2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail3.xml
index d4cb48f6b3..d4cb48f6b3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15pass1.xml
index e61a0dd56d..e61a0dd56d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail1.xml
index 9e75452eec..9e75452eec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail2.xml
index c5fda86589..c5fda86589 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail3.xml
index 87dc351d0c..87dc351d0c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass1.xml
index 45adbc081a..45adbc081a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass2.xml
index e3fc5235da..e3fc5235da 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass3.xml
index b7b41ab975..b7b41ab975 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail1.xml
index 823e31adae..823e31adae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail2.xml
index 7909df9248..7909df9248 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail3.xml
index b79e04585b..b79e04585b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18pass1.xml
index 131914569b..131914569b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail1.xml
index b3908a64f9..b3908a64f9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail2.xml
index 81a24fb2f2..81a24fb2f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass1.xml
index e79b34a129..e79b34a129 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass2.xml
index 97e725f5ea..97e725f5ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass3.xml
index f6da3d1b5c..f6da3d1b5c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass4.xml
index 2b3d9241f9..2b3d9241f9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass5.xml
index a5dddbb996..a5dddbb996 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass6.xml
index ecb9de953a..ecb9de953a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass6.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass6.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail1.xml
index 41d8cbaa27..41d8cbaa27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail2.xml
index 7ce91fecbe..7ce91fecbe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail3.xml
index 470fc91e93..470fc91e93 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail4.xml
index 7a403017af..7a403017af 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail5.xml
index c532727c49..c532727c49 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass1.xml
index 97e725f5ea..97e725f5ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass2.xml
index 22545bc26e..22545bc26e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass3.xml
index a55ef5dacf..a55ef5dacf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass4.xml
index 220506d16e..220506d16e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail1.xml
index 381e7ef6c6..381e7ef6c6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail2.xml
index 5b87b6cb1d..5b87b6cb1d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass1.xml
index 97e725f5ea..97e725f5ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass2.xml
index b8b485f091..b8b485f091 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass3.xml
index da4603bfce..da4603bfce 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass4.xml
index 68eed03929..68eed03929 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25fail1.xml
index c39c0afaf3..c39c0afaf3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass1.xml
index 97e725f5ea..97e725f5ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass2.xml
index 2bc303bda4..2bc303bda4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail1.xml
index d96ad45b98..d96ad45b98 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail2.xml
index 6fcc7f4581..6fcc7f4581 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26pass1.xml
index 19cc9341e1..19cc9341e1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27fail1.xml
index 01ee913a66..01ee913a66 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass1.xml
index ce440fd1e6..ce440fd1e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass2.xml
index fd422a6561..fd422a6561 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass3.xml
index 9df310f2f1..9df310f2f1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass4.xml
index 39438727ab..39438727ab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28fail1.xml
index bac9e37870..bac9e37870 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass1.xml
index 8e3cba39ab..8e3cba39ab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass2.xml
index 8e3cba39ab..8e3cba39ab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass3.xml
index a51e7c4ccf..a51e7c4ccf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.dtd
index 370bb88a5b..370bb88a5b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.xml
index c464d87319..c464d87319 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.dtd
index 90980dde31..90980dde31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.xml
index ac100a4cb3..ac100a4cb3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29fail1.xml
index 75c549f218..75c549f218 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29pass1.xml
index ce8cc4bca3..ce8cc4bca3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.dtd
index fa4dcd7297..fa4dcd7297 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.xml
index 0e7cf9e245..0e7cf9e245 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.dtd
index 8c07c46d95..8c07c46d95 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.xml
index f3abf3a936..f3abf3a936 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.dtd
index 65ebd8e46b..65ebd8e46b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.xml
index abfd4f6fc7..abfd4f6fc7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.dtd
index fe121d1f94..fe121d1f94 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.xml
index 471df835ba..471df835ba 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.dtd
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.xml
index 0dd81ce683..0dd81ce683 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.dtd
index 3d619ab4f2..3d619ab4f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.xml
index d61300915f..d61300915f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail1.xml
index bdc7992d94..bdc7992d94 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail2.xml
index 1c1c23d915..1c1c23d915 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail3.xml
index 7c3415bf03..7c3415bf03 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail4.xml
index 15ab0fdbf5..15ab0fdbf5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail5.xml
index be0f8e581f..be0f8e581f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass1.xml
index a55ef5dacf..a55ef5dacf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass2.xml
index 173a58144c..173a58144c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail1.xml
index e06f60eaeb..e06f60eaeb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail2.xml
index 44f3153796..44f3153796 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail3.xml
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail4.xml
index d0bf424922..d0bf424922 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail5.xml
index f5bb421de6..f5bb421de6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass1.xml
index ff29a91370..ff29a91370 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass2.xml
index 5b47e63d1a..5b47e63d1a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail1.xml
index 56b5da2084..56b5da2084 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail2.xml
index 8af5b22c71..8af5b22c71 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail3.xml
index 7da893b762..7da893b762 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail4.xml
index 47e3460674..47e3460674 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass1.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass2.xml
index eb9f65aff5..eb9f65aff5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass3.xml
index a26c13ee85..a26c13ee85 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass4.xml
index c5670e0aaa..c5670e0aaa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail1.xml
index 15a5085546..15a5085546 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail2.xml
index 758ec17a4d..758ec17a4d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail3.xml
index d480150cf4..d480150cf4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass1.xml
index a26c13ee85..a26c13ee85 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass2.xml
index 762a0a1005..762a0a1005 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail1.xml
index 2747d6bf47..2747d6bf47 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail2.xml
index 5afea96d50..5afea96d50 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail3.xml
index 18304688e6..18304688e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass1.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass2.xml
index e8153c5aae..e8153c5aae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail1.xml
index 1098246ce5..1098246ce5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail2.xml
index 82dd031d99..82dd031d99 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail3.xml
index 20ff835f5e..20ff835f5e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43pass1.xml
index b3991f1b11..b3991f1b11 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail1.xml
index a8c16c0d82..a8c16c0d82 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail2.xml
index d433758dae..d433758dae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail3.xml
index 825345e13a..825345e13a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail4.xml
index 78d699ee1a..78d699ee1a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail5.xml
index 1384b130f9..1384b130f9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass1.xml
index ff29a91370..ff29a91370 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass2.xml
index 1ea50d325c..1ea50d325c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass3.xml
index 3852c72fd7..3852c72fd7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass4.xml
index 86095d112a..86095d112a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass5.xml
index 0dd0659988..0dd0659988 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail1.xml
index 4f92984250..4f92984250 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail2.xml
index f61104fb50..f61104fb50 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail3.xml
index c8b30ef4b3..c8b30ef4b3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail4.xml
index c988b2eedf..c988b2eedf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45pass1.xml
index 1589e836ee..1589e836ee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail1.xml
index b39d663ab7..b39d663ab7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail2.xml
index 9ad7be759a..9ad7be759a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail3.xml
index a64a2ae0a5..a64a2ae0a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail4.xml
index 32bc248dc6..32bc248dc6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail5.xml
index f423e4b855..f423e4b855 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail6.xml
index 2d1705fb23..2d1705fb23 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail6.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail6.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46pass1.xml
index 3578370fa9..3578370fa9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail1.xml
index fd803ec7d6..fd803ec7d6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail2.xml
index d9765c4880..d9765c4880 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail3.xml
index 96cf0d7fdd..96cf0d7fdd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail4.xml
index c44c1423dd..c44c1423dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47pass1.xml
index fe21251e89..fe21251e89 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail1.xml
index cf4bf9c2af..cf4bf9c2af 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail2.xml
index 8d3bdfd779..8d3bdfd779 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48pass1.xml
index 0345d436e2..0345d436e2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49fail1.xml
index 53ac58dfcc..53ac58dfcc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49pass1.xml
index eea612e0b2..eea612e0b2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50fail1.xml
index 62ad5453d2..62ad5453d2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50pass1.xml
index 3873b2d671..3873b2d671 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail1.xml
index f73af29fd7..f73af29fd7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail2.xml
index 3cb6f3f615..3cb6f3f615 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail3.xml
index a7f27079b7..a7f27079b7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail4.xml
index 22cc3e0897..22cc3e0897 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail5.xml
index ed00d622a8..ed00d622a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail6.xml
index 78bc1f5c4b..78bc1f5c4b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail6.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail6.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail7.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail7.xml
index 8e68029652..8e68029652 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail7.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail7.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51pass1.xml
index 4f4e64f45c..4f4e64f45c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail1.xml
index 335920f4e1..335920f4e1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail2.xml
index 61d08b0498..61d08b0498 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52pass1.xml
index 9ee428409f..9ee428409f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail1.xml
index d4db095928..d4db095928 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail2.xml
index 59af7c76ed..59af7c76ed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail3.xml
index 6d1a84621e..6d1a84621e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail4.xml
index 87fa394a65..87fa394a65 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail5.xml
index b58ace2a0c..b58ace2a0c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53pass1.xml
index 362cf62c48..362cf62c48 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54fail1.xml
index add01fed22..add01fed22 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54pass1.xml
index 23878614f8..23878614f8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55fail1.xml
index e9dbed1b06..e9dbed1b06 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55pass1.xml
index 362cf62c48..362cf62c48 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail1.xml
index c4ea6972f7..c4ea6972f7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail2.xml
index 98409e1377..98409e1377 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail3.xml
index 612800eeb7..612800eeb7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail4.xml
index e195dc6d25..e195dc6d25 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail5.xml
index 6430c5687a..6430c5687a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56pass1.xml
index b7bbad4171..b7bbad4171 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57fail1.xml
index 139c7e84b1..139c7e84b1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57pass1.xml
index 89e12faeda..89e12faeda 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail1.xml
index aa3f5a2f11..aa3f5a2f11 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail2.xml
index ef548cd83a..ef548cd83a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail3.xml
index 1156eadacc..1156eadacc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail4.xml
index d876dc9d16..d876dc9d16 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail5.xml
index cd7b3525d2..cd7b3525d2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail6.xml
index b4675843b2..b4675843b2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail6.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail6.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail7.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail7.xml
index 99455f8f72..99455f8f72 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail7.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail7.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail8.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail8.xml
index 2bff43b238..2bff43b238 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail8.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail8.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58pass1.xml
index 8a62fb0c47..8a62fb0c47 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail1.xml
index b14517863b..b14517863b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail2.xml
index f347d9f117..f347d9f117 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail3.xml
index 2bf04d10e3..2bf04d10e3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59pass1.xml
index d04d43b4e5..d04d43b4e5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail1.xml
index 05c3811bb8..05c3811bb8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail2.xml
index e99ab7d6ff..e99ab7d6ff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail3.xml
index a1a445a53d..a1a445a53d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail4.xml
index 9ebe2d6c8b..9ebe2d6c8b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail5.xml
index 38df257dcd..38df257dcd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60pass1.xml
index 27939f2be8..27939f2be8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.dtd
index 5010f84733..5010f84733 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.xml
index b54a0c85a8..b54a0c85a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.dtd
index 5fdbf81178..5fdbf81178 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.xml
index 3405a1cf5f..3405a1cf5f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.dtd
index d3886bf6cb..d3886bf6cb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.xml
index 65c9619054..65c9619054 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.dtd
index 50055d0aa3..50055d0aa3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.xml
index ce663557f2..ce663557f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.dtd
index a3c09fe100..a3c09fe100 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.xml
index 568a5fb5aa..568a5fb5aa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.dtd
index b36c8b8e36..b36c8b8e36 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.xml
index 405db6825b..405db6825b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.dtd
index 3b52491127..3b52491127 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.xml
index dd86f4cd9b..dd86f4cd9b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.dtd
index f3bf927d7e..f3bf927d7e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.xml
index 1f1e752f03..1f1e752f03 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.dtd
index 7c779dfd9b..7c779dfd9b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.xml
index cd617c7b63..cd617c7b63 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.dtd
index ef5196b9be..ef5196b9be 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.xml
index 1903de4b96..1903de4b96 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.dtd
index 63c2c586fe..63c2c586fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.xml
index 37d89932aa..37d89932aa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail1.xml
index 6c527254f0..6c527254f0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail2.xml
index f3f95cd4d2..f3f95cd4d2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail3.xml
index f6a5d583fe..f6a5d583fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail4.xml
index bfd802d949..bfd802d949 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail5.xml
index 71e8df0f1e..71e8df0f1e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail6.xml
index 05441677bd..05441677bd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail6.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail6.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66pass1.xml
index 4ccf4e7f51..4ccf4e7f51 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail1.xml
index f6b6e75465..f6b6e75465 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail2.xml
index 8734fdc6d8..8734fdc6d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail3.xml
index 1f088ef5f4..1f088ef5f4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68pass1.xml
index 0e70ff643e..0e70ff643e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail1.xml
index b6dba82097..b6dba82097 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail2.xml
index f390e05ac6..f390e05ac6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail3.xml
index 5e6deb198e..5e6deb198e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69pass1.xml
index 34b3efcba4..34b3efcba4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70fail1.xml
index 36b447aff4..36b447aff4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70pass1.xml
index 7525e0a188..7525e0a188 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail1.xml
index e0a10f1d18..e0a10f1d18 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail2.xml
index 4812ef09c1..4812ef09c1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail3.xml
index 06e40f26ed..06e40f26ed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail4.xml
index b9ff089230..b9ff089230 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71pass1.xml
index 3b5f8b9553..3b5f8b9553 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail1.xml
index f54729831f..f54729831f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail2.xml
index c68589c9a4..c68589c9a4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail3.xml
index 6207cfa738..6207cfa738 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail4.xml
index 9b8bc50327..9b8bc50327 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72pass1.xml
index d402513ec1..d402513ec1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail1.xml
index f6de0a9812..f6de0a9812 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail2.xml
index c3abb158b0..c3abb158b0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail3.xml
index 6e7a01ea87..6e7a01ea87 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail4.xml
index c349c76148..c349c76148 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail5.xml
index 58410f706c..58410f706c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73pass1.xml
index 36ba975f59..36ba975f59 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail1.xml
index 241aa23a54..241aa23a54 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail2.xml
index 3958162719..3958162719 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail3.xml
index 3a5cd4a261..3a5cd4a261 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74pass1.xml
index f27f3f2d45..f27f3f2d45 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail1.xml
index b415bd73fd..b415bd73fd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail2.xml
index bafb7d6a0b..bafb7d6a0b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail3.xml
index b10d40e165..b10d40e165 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail4.xml
index 228d2d9dd8..228d2d9dd8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail5.xml
index 51470434ed..51470434ed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail5.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail6.xml
index da20c1b5cb..da20c1b5cb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail6.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail6.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75pass1.xml
index 9eecdd8324..9eecdd8324 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail1.xml
index cce3080be7..cce3080be7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail2.xml
index b00ad764cb..b00ad764cb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail2.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail3.xml
index 45e95920d8..45e95920d8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail3.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail4.xml
index 02c5b12424..02c5b12424 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail4.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76pass1.xml
index 7eea6b1eab..7eea6b1eab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76pass1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76pass1.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/readme.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/readme.html
index 52fc123f20..52fc123f20 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/readme.html
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/readme.html
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Entries
index aef96e912f..aef96e912f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Repository
index 9b23a843fb..9b23a843fb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/cxml.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/cxml.html
index 56dd479ed8..56dd479ed8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/cxml.html
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/cxml.html
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Entries
index 081cd425f2..081cd425f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Repository
index f180fae23c..f180fae23c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr01.xml
index cb2b4e675f..cb2b4e675f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr02.xml
index b9f2461ea5..b9f2461ea5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr03.xml
index b84d1f1fcb..b84d1f1fcb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr04.xml
index cbe62af83a..cbe62af83a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr05.xml
index d459fd924e..d459fd924e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr06.xml
index f652f335fb..f652f335fb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr07.xml
index 57489b3cc0..57489b3cc0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr08.xml
index 3c59fc5416..3c59fc5416 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr09.xml
index f65f5820aa..f65f5820aa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr10.xml
index 04ba586f1c..04ba586f1c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr11.xml
index dcefb0596e..dcefb0596e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr12.xml
index 67b83f9ef8..67b83f9ef8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr13.xml
index a2c81f9e18..a2c81f9e18 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr14.xml
index 0205a0265f..0205a0265f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr15.xml
index 6ce369f35a..6ce369f35a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr15.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr16.xml
index 7b777802d6..7b777802d6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr16.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd01.xml
index f348c16721..f348c16721 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd02.xml
index c4868f9ced..c4868f9ced 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd03.xml
index db87f99a3d..db87f99a3d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd06.xml
index 29de14cd7a..29de14cd7a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el01.xml
index 7adb884f3b..7adb884f3b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el02.xml
index 46453f218f..46453f218f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el03.xml
index ec4fe96f40..ec4fe96f40 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el04.xml
index 58a857998e..58a857998e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el05.xml
index 03355e2913..03355e2913 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el06.xml
index 8473a08a9c..8473a08a9c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/empty.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/empty.xml
index 2fc2410ab4..2fc2410ab4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/empty.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/empty.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id01.xml
index b5dc3245bb..b5dc3245bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id02.xml
index e0e3576cef..e0e3576cef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id03.xml
index 7234bd6376..7234bd6376 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id04.xml
index 101f898600..101f898600 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id05.xml
index d7c6b7b173..d7c6b7b173 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id06.xml
index b260121831..b260121831 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id07.xml
index 959cec64d9..959cec64d9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id08.xml
index fddeb7e881..fddeb7e881 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id09.xml
index 3f096b4835..3f096b4835 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa01.xml
index 714e544102..714e544102 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa02.xml
index c8f551cf39..c8f551cf39 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa04.xml
index 947de49123..947de49123 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa05.xml
index c0bcd0e2e2..c0bcd0e2e2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa06.xml
index 75e6b47cea..75e6b47cea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa07.xml
index df197543e3..df197543e3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa08.xml
index e07ac5958a..e07ac5958a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa09.xml
index 3fec08820c..3fec08820c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa10.xml
index 467e6b8d57..467e6b8d57 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa11.xml
index ad259c4c94..ad259c4c94 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa12.xml
index 9cd4b879ac..9cd4b879ac 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa13.xml
index 5a3a8cfcc5..5a3a8cfcc5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa14.xml
index f3b3ee2092..f3b3ee2092 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional01.xml
index 0d03c0f1cd..0d03c0f1cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional02.xml
index 5f66c66d27..5f66c66d27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional03.xml
index 35c7ad9e4a..35c7ad9e4a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional04.xml
index 8614e248e7..8614e248e7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional05.xml
index 5b6669afce..5b6669afce 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional06.xml
index 44d815108a..44d815108a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional07.xml
index 8745675957..8745675957 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional08.xml
index fb6c545e17..fb6c545e17 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional09.xml
index 91bb7f0fde..91bb7f0fde 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional10.xml
index 3a9703dd3d..3a9703dd3d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional11.xml
index 7aa6a089e1..7aa6a089e1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional12.xml
index 779c5e2623..779c5e2623 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional13.xml
index 5354404604..5354404604 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional14.xml
index b6588dfe8c..b6588dfe8c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional14.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional20.xml
index 24f454ed4c..24f454ed4c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional20.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional21.xml
index af57ff3d47..af57ff3d47 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional21.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional22.xml
index ae9a33c572..ae9a33c572 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional22.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional23.xml
index 75edc24665..75edc24665 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional23.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional23.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional24.xml
index c3233098ef..c3233098ef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional24.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional24.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional25.xml
index 1b0eeb84a1..1b0eeb84a1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional25.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional25.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required00.xml
index e673fdc68b..e673fdc68b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required00.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required00.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required01.xml
index 290d369c01..290d369c01 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required02.xml
index 480f62af13..480f62af13 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/root.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/root.xml
index 60896573a9..60896573a9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/root.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/root.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16b.xml
index 52c7e2d18c..52c7e2d18c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16b.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16b.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16l.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16l.xml
index 2cad40a3c7..2cad40a3c7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16l.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16l.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Entries
index 174092983f..174092983f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Repository
index 95984c5f42..95984c5f42 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist01.xml
index 9b25d73aa1..9b25d73aa1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist02.xml
index 65405ca701..65405ca701 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist03.xml
index a7174c9146..a7174c9146 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist04.xml
index f45d656f63..f45d656f63 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist05.xml
index 1705e80db2..1705e80db2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist06.xml
index 84444b4c9f..84444b4c9f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist07.xml
index 3dd94e5926..3dd94e5926 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist08.xml
index c9e54c6a53..c9e54c6a53 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist09.xml
index a1faf84494..a1faf84494 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist10.xml
index d690200c65..d690200c65 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist11.xml
index 67de117714..67de117714 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond.dtd
index 4b43ef7a05..4b43ef7a05 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond01.xml
index 5028d46e99..5028d46e99 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond02.xml
index ce4e191c32..ce4e191c32 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content01.xml
index 85c27dc874..85c27dc874 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content02.xml
index 1086148a87..1086148a87 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content03.xml
index c4fdff1f81..c4fdff1f81 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.ent
index 65059fdc85..65059fdc85 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.xml
index ee57cb4d80..ee57cb4d80 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd00.xml
index 5c3e9aa236..5c3e9aa236 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd00.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd00.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd01.xml
index 3af805c7b1..3af805c7b1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd02.xml
index da2c6394fc..da2c6394fc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd03.xml
index 6f5234a955..6f5234a955 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd04.xml
index 4acb0c2fee..4acb0c2fee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd05.xml
index 2d4c8cf889..2d4c8cf889 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.dtd
index 7acb91f11f..7acb91f11f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.xml
index 921ed63a4e..921ed63a4e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element00.xml
index 4d7a0110ff..4d7a0110ff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element00.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element00.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element01.xml
index c1796ccbdc..c1796ccbdc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element02.xml
index da038ddae6..da038ddae6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element03.xml
index eb0c93ad49..eb0c93ad49 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element04.xml
index 7f639c22fb..7f639c22fb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding01.xml
index 5ef3915a0c..5ef3915a0c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding02.xml
index b6ebbb4a8e..b6ebbb4a8e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding03.xml
index be6cc1a511..be6cc1a511 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding04.xml
index dbecbcdd11..dbecbcdd11 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding05.xml
index 94edbfbc27..94edbfbc27 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding06.xml
index ee1a699e34..ee1a699e34 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding07.xml
index cd225c577e..cd225c577e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/not-sa03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/not-sa03.xml
index 6f1fb4ba92..6f1fb4ba92 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/not-sa03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/not-sa03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pi.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pi.xml
index c50a0f088c..c50a0f088c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pi.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pi.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid01.xml
index 4df57fd534..4df57fd534 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid02.xml
index c1a0da162c..c1a0da162c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid03.xml
index 55b074c9af..55b074c9af 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid04.xml
index fd268aa07a..fd268aa07a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid05.xml
index a0e8bdd94a..a0e8bdd94a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml01.xml
index 83fa98ccf1..83fa98ccf1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml02.xml
index a22d74086a..a22d74086a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml03.xml
index 78b4aa8e9c..78b4aa8e9c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml04.xml
index 36f863c917..36f863c917 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml05.xml
index 90217955e7..90217955e7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml06.xml
index 8ce6b55680..8ce6b55680 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml07.xml
index 4622b83ba5..4622b83ba5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml07.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml07.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml08.xml
index 5cf457c078..5cf457c078 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml08.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml08.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml09.xml
index d943ce9a9f..d943ce9a9f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml09.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml09.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml10.xml
index ba03a03915..ba03a03915 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml10.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml11.xml
index 6d8e4a2794..6d8e4a2794 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml11.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml12.xml
index e2f0b2e57c..e2f0b2e57c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml12.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml13.xml
index 97e9702eda..97e9702eda 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml13.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/uri01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/uri01.xml
index c15ceb4960..c15ceb4960 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/uri01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/uri01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-error.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-error.xml
index 31656dc1b8..31656dc1b8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-error.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-error.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-invalid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-invalid.xml
index 25464058df..25464058df 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-invalid.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-invalid.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-not-wf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-not-wf.xml
index 1203bc024f..1203bc024f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-not-wf.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-not-wf.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-valid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-valid.xml
index dceefe110d..dceefe110d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-valid.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-valid.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Entries
index cecb2c4024..cecb2c4024 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Repository
index c0debafe50..c0debafe50 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd00.xml
index d92c44bda4..d92c44bda4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd00.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd00.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd01.xml
index b0d6ae4ebd..b0d6ae4ebd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtdtest.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtdtest.dtd
index 56539d0da4..56539d0da4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtdtest.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtdtest.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/element.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/element.xml
index 9f02030aea..9f02030aea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/element.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/element.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.ent
index c75c62943c..c75c62943c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.xml
index d826da98a5..d826da98a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext02.xml
index af5440b7fd..af5440b7fd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa01.xml
index 536cb4b06e..536cb4b06e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa02.xml
index bd938b034e..bd938b034e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa03.xml
index 2a13a005ed..2a13a005ed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa04.xml
index d4e12aa6e6..d4e12aa6e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.dtd
index 23726851aa..23726851aa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.xml
index 4b8bc10e31..4b8bc10e31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/null.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/null.ent
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/null.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/null.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/optional.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/optional.xml
index fe8d482510..fe8d482510 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/optional.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/optional.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Entries
index 469e0ed46a..469e0ed46a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Repository
index b244dd58f6..b244dd58f6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd00.xml
index ef2fc53c2f..ef2fc53c2f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd00.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd00.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd01.xml
index ef2fc53c2f..ef2fc53c2f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/element.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/element.xml
index f1aa64dbab..f1aa64dbab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/element.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/element.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext01.xml
index a8d213463d..a8d213463d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext02.xml
index 90718f8e55..90718f8e55 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa01.xml
index 12ce349ae2..12ce349ae2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa02.xml
index 0f31afb891..0f31afb891 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa03.xml
index 4eba2aa55e..4eba2aa55e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa04.xml
index 70e09f6f20..70e09f6f20 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/notation01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/notation01.xml
index cbb7634d9a..cbb7634d9a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/notation01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/notation01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/optional.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/optional.xml
index d131489085..d131489085 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/optional.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/optional.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe00.xml
index 7d48bbe463..7d48bbe463 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe00.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe00.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe02.xml
index 6bc066028e..6bc066028e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe03.xml
index eed428aa66..eed428aa66 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/required00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/required00.xml
index f06dcb9f2c..f06dcb9f2c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/required00.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/required00.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa01.xml
index 188f8ef629..188f8ef629 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa02.xml
index 10e4c648d5..10e4c648d5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa03.xml
index 4eba2aa55e..4eba2aa55e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa04.xml
index 70e09f6f20..70e09f6f20 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa05.xml
index 931120d7fe..931120d7fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sgml01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sgml01.xml
index 8c31029f02..8c31029f02 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sgml01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sgml01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang01.xml
index 9752885abe..9752885abe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang02.xml
index cdf492e87c..cdf492e87c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang03.xml
index d9d68a44ce..d9d68a44ce 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang04.xml
index cda324b178..cda324b178 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang05.xml
index fa3d57a4db..fa3d57a4db 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang06.xml
index 451e36b0a1..451e36b0a1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.dtd
index 547457cc4b..547457cc4b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.xml
index af706647c8..af706647c8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.dtd
index 59997b71eb..59997b71eb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.ent
index 3f30827c7e..3f30827c7e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.xml
index 8003bbfa99..8003bbfa99 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe02.xml
index 44edb62dd6..44edb62dd6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe03.xml
index 407bd1c5fe..407bd1c5fe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/required00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/required00.xml
index 4c63d36042..4c63d36042 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/required00.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/required00.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa.dtd
index a0733eb88c..a0733eb88c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa01.xml
index 15ed49579f..15ed49579f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa02.xml
index 7a416601fa..7a416601fa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa03.xml
index 194cb82457..194cb82457 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa04.xml
index 79df352fa8..79df352fa8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa05.xml
index 45180bca63..45180bca63 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sgml01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sgml01.xml
index 6cfdfee07d..6cfdfee07d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sgml01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sgml01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang01.xml
index 4490f77530..4490f77530 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang01.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang01.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang02.xml
index 7d2b538921..7d2b538921 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang02.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang02.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang03.xml
index 678f3cc687..678f3cc687 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang03.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang03.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang04.xml
index 6f7cb4a8da..6f7cb4a8da 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang04.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang04.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang05.xml
index 135b9c887a..135b9c887a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang05.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang05.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang06.xml
index dc64fae993..dc64fae993 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang06.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang06.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/testcases.dtd
index ae352379a7..ae352379a7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/testcases.dtd
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/testcases.dtd
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.htm b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.htm
index c85c3d24c3..c85c3d24c3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.htm
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.htm
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.xml
index 0b4986936e..0b4986936e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20020521.htm b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20020521.htm
index 44d28564e0..44d28564e0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20020521.htm
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20020521.htm
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20031030.htm b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20031030.htm
index 5b83c2a327..5b83c2a327 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20031030.htm
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20031030.htm
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf.xml
index 6523e3f16d..6523e3f16d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconf.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.msxsl b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.msxsl
index f33e647d25..f33e647d25 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.msxsl
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.msxsl
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.xsl b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.xsl
index 8a7e54c6dd..8a7e54c6dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.xsl
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.xsl
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries
index 56dc3e5713..56dc3e5713 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository
index e4b881877e..e4b881877e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html
index 2ba0edf6c6..2ba0edf6c6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent
index 4cb848b438..4cb848b438 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml
index 5a3a96d1ab..5a3a96d1ab 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent
index 85e16474a6..85e16474a6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml
index 383553d24f..383553d24f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent
index 116ca79657..116ca79657 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml
index 2f14e839e2..2f14e839e2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries
index 04159c511f..04159c511f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository
index 3df0ffe37c..3df0ffe37c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/022.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent
index 26f2d8beb2..26f2d8beb2 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/022.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml
index b639f2551c..b639f2551c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/022.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries
index 104a6d8a5a..104a6d8a5a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository
index f86b20a1d9..f86b20a1d9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries
index 9692ca4b59..9692ca4b59 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository
index 54370965bc..54370965bc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries
index 1784810501..1784810501 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log
index 818f7c93e6..818f7c93e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository
index 18854d8755..18854d8755 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent
index 378a2074b7..378a2074b7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml
index aa624cbe71..aa624cbe71 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent
index 2cd184a213..2cd184a213 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml
index 9eaf91724f..9eaf91724f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent
index ac292ee2f3..ac292ee2f3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml
index bb60b663ef..bb60b663ef 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries
index 85dc74e395..85dc74e395 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository
index 702914cf3a..702914cf3a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent
index 00096e572e..00096e572e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml
index 36188451ae..36188451ae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml
index dd73174135..dd73174135 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent
index abf1b1a35e..abf1b1a35e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml
index dd01f41126..dd01f41126 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent
index 552e4f520a..552e4f520a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml
index 20cdf6d0e5..20cdf6d0e5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent
index 9a369cef12..9a369cef12 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml
index 383553d24f..383553d24f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent
index 771daf1915..771daf1915 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml
index 2f14e839e2..2f14e839e2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent
index 9e9866d2ad..9e9866d2ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml
index 38897e34ea..38897e34ea 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent
index f8b1cd3dad..f8b1cd3dad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml
index 54351009cd..54351009cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent
index f70eaea9c4..f70eaea9c4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml
index 9aa72898c2..9aa72898c2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent
index 54f3c821b8..54f3c821b8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml
index 963e4c2f75..963e4c2f75 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent
index aae4cc2929..aae4cc2929 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml
index dd40c958c3..dd40c958c3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries
index bfc0687397..bfc0687397 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository
index 031f3dedd2..031f3dedd2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml
index d33ec68dcd..d33ec68dcd 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml
index 0a64d52428..0a64d52428 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml
index e0b8bae4a4..e0b8bae4a4 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml
index e85bc96e56..e85bc96e56 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml
index 7cd44ef10c..7cd44ef10c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml
index 8594c35cc7..8594c35cc7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml
index 286756fdd5..286756fdd5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml
index 29ef40306b..29ef40306b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/008.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml
index 8e3ff7de10..8e3ff7de10 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/009.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml
index a6790846c9..a6790846c9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml
index 57eaf9fc48..57eaf9fc48 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/011.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml
index 1b2539ffa6..1b2539ffa6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/012.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml
index 3540df9143..3540df9143 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/013.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml
index a613115609..a613115609 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/014.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml
index f2baf947b5..f2baf947b5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/015.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml
index 22d4b2e265..22d4b2e265 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/016.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml
index a76f5929e9..a76f5929e9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/017.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml
index 66e204acc4..66e204acc4 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/018.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml
index b835c2d752..b835c2d752 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/019.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml
index b30cfcfc10..b30cfcfc10 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/020.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml
index 1bfa84aa64..1bfa84aa64 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/021.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml
index 44c803bf1b..44c803bf1b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/022.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml
index b877ae2a6b..b877ae2a6b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/023.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml
index cf68f2c073..cf68f2c073 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/024.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml
index 6cba95cd78..6cba95cd78 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/025.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml
index 347984fa73..347984fa73 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/026.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml
index cfafaf0d70..cfafaf0d70 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/027.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml
index 522714993a..522714993a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/028.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml
index 9a8008bc9f..9a8008bc9f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/029.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml
index 25861fa19b..25861fa19b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/030.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml
index f946536f39..f946536f39 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/031.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml
index 75952017ca..75952017ca 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/032.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml
index afd2328402..afd2328402 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/033.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml
index d74a77719b..d74a77719b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/034.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml
index e1fc920522..e1fc920522 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/035.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml
index b8ecb21ba1..b8ecb21ba1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/036.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml
index 2e02662926..2e02662926 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/037.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/038.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml
index 68b2803f82..68b2803f82 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/038.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/039.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml
index 80429e3e40..80429e3e40 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/039.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml
index dc8ba5a434..dc8ba5a434 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/040.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/041.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml
index 30bcdd6bfe..30bcdd6bfe 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/041.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/042.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml
index 4ae50efc7b..4ae50efc7b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/042.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml
index 41824eee4b..41824eee4b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/043.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml
index 3fc232dc37..3fc232dc37 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/044.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml
index 00c10f00bf..00c10f00bf 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/045.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml
index 265cb15301..265cb15301 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/046.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/047.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml
index d18a4a4440..d18a4a4440 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/047.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/048.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml
index 67419c1ed5..67419c1ed5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/048.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/049.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml
index 3cf0e79422..3cf0e79422 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/049.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/050.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/050.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/051.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml
index b52df12cc4..b52df12cc4 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/051.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/052.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml
index 8283895990..8283895990 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/052.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/053.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml
index 9d7f36920f..9d7f36920f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/053.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/054.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml
index eda553c6d3..eda553c6d3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/054.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/055.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml
index cbb3683a9d..cbb3683a9d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/055.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/056.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml
index a681684c58..a681684c58 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/056.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/057.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml
index 848d347120..848d347120 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/057.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/058.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml
index daba266af2..daba266af2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/058.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/059.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml
index 316083dc25..316083dc25 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/059.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/060.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml
index 9a610fd38f..9a610fd38f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/060.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/061.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml
index 59181e706f..59181e706f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/061.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/062.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml
index e62e9cd370..e62e9cd370 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/062.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/063.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml
index 98675b9040..98675b9040 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/063.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/064.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml
index 3888c46b8b..3888c46b8b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/064.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/065.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml
index da9cafd137..da9cafd137 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/065.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/066.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml
index 9c09eb4e5d..9c09eb4e5d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/066.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/067.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml
index 7e0809bd34..7e0809bd34 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/067.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/068.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml
index 53a80a83a8..53a80a83a8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/068.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/069.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml
index 6f891dd5e1..6f891dd5e1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/069.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/070.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml
index faf4b0ae4c..faf4b0ae4c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/070.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/071.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml
index 5bd3908968..5bd3908968 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/071.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/072.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml
index 743ba79429..743ba79429 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/072.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/073.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml
index 2578af42ec..2578af42ec 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/073.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/074.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml
index f8abaeb22c..f8abaeb22c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/074.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/075.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml
index d3dbf50ed6..d3dbf50ed6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/075.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/076.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml
index 60546720e7..60546720e7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/076.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/077.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml
index f8ac23a5a2..f8ac23a5a2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/077.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/078.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml
index 446cd85ef9..446cd85ef9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/078.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/079.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml
index da016fd3b2..da016fd3b2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/079.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/080.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml
index fa4b9e428d..fa4b9e428d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/080.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/081.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml
index d676100e8a..d676100e8a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/081.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/082.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml
index 3217d6f8b4..3217d6f8b4 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/082.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/083.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml
index 469d43fd42..469d43fd42 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/083.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/084.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml
index abbbcdea69..abbbcdea69 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/084.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/085.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml
index ac0aeca3e4..ac0aeca3e4 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/085.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/086.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml
index df6adfd884..df6adfd884 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/086.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/087.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml
index ed49492a7a..ed49492a7a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/087.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/088.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml
index da0a68c401..da0a68c401 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/088.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/089.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml
index 0c6cf404c2..0c6cf404c2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/089.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/090.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml
index 3fb72f3cc0..3fb72f3cc0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/090.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/091.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml
index a61d0914f8..a61d0914f8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/091.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/092.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml
index be5266dada..be5266dada 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/092.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/093.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml
index 4af61bc645..4af61bc645 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/093.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/094.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml
index bdec7a4660..bdec7a4660 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/094.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/095.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml
index 090b8b4eec..090b8b4eec 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/095.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/096.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml
index d806c3b952..d806c3b952 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/096.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/097.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml
index d4def544b0..d4def544b0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/097.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/098.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml
index 9798496aa3..9798496aa3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/098.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/099.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml
index d5be08eff0..d5be08eff0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/099.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/100.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml
index 51e06231c2..51e06231c2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/100.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/101.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml
index afa5a455fc..afa5a455fc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/101.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/102.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml
index 8734adaa6e..8734adaa6e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/102.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/103.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml
index 6c4716798f..6c4716798f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/103.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/104.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml
index dd57396239..dd57396239 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/104.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/105.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml
index 809e705870..809e705870 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/105.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/106.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml
index d32319ef09..d32319ef09 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/106.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/107.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml
index 3dfd8200e2..3dfd8200e2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/107.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/108.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml
index af5cf50d48..af5cf50d48 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/108.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/109.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml
index 5afc03e8db..5afc03e8db 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/109.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/110.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml
index cf54ebe5c0..cf54ebe5c0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/110.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/111.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml
index 84a469f5d1..84a469f5d1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/111.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/112.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml
index 0c5c1a4341..0c5c1a4341 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/112.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/113.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml
index 04fc9d2318..04fc9d2318 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/113.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/114.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml
index 1261ee49e1..1261ee49e1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/114.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/115.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml
index f111dbe153..f111dbe153 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/115.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/116.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml
index 84bb762fdf..84bb762fdf 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/116.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/117.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml
index e4a5e572ef..e4a5e572ef 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/117.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/118.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml
index 494d53d208..494d53d208 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/118.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/119.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml
index aefaa44a1c..aefaa44a1c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/119.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/120.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml
index b7d6ff9ce9..b7d6ff9ce9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/120.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/121.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml
index 2b4adcc6b4..2b4adcc6b4 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/121.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/122.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml
index ef0b057cee..ef0b057cee 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/122.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/123.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml
index 06d65f045b..06d65f045b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/123.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/124.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml
index 3bbe0f91a6..3bbe0f91a6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/124.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/125.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml
index 5f9c22c0c6..5f9c22c0c6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/125.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/126.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml
index 13e74d6d5e..13e74d6d5e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/126.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/127.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml
index a379b9e539..a379b9e539 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/127.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/128.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml
index dd706bb21f..dd706bb21f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/128.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/129.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml
index d4e4461a6d..d4e4461a6d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/129.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/130.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml
index fa7be641f1..fa7be641f1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/130.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/131.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml
index f34ed453b5..f34ed453b5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/131.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/132.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml
index ab6cc416e9..ab6cc416e9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/132.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/133.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml
index d2aa604e9f..d2aa604e9f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/133.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/134.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml
index c8919c5ef8..c8919c5ef8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/134.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/135.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml
index e639e8b6ea..e639e8b6ea 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/135.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/136.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml
index 499e68bcea..499e68bcea 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/136.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/137.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml
index 723b77f776..723b77f776 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/137.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/138.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml
index 16934cc88e..16934cc88e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/138.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/139.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml
index 34df52ed93..34df52ed93 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/139.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/140.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml
index 467d5ed301..467d5ed301 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/140.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/141.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml
index 409d0a7568..409d0a7568 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/141.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/142.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml
index 20e88f88b3..20e88f88b3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/142.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/143.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml
index 0ee1c614f8..0ee1c614f8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/143.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/144.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml
index 437548c0ba..437548c0ba 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/144.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/145.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml
index 71b187a933..71b187a933 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/145.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/146.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml
index d0bfbca723..d0bfbca723 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/146.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/147.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml
index 3b6145615f..3b6145615f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/147.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/148.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml
index 774dce18fd..774dce18fd 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/148.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/149.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml
index 725eea0dec..725eea0dec 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/149.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/150.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml
index 44f6b6df92..44f6b6df92 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/150.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/151.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml
index fecc4f24e3..fecc4f24e3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/151.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/152.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml
index b5c5cb26ae..b5c5cb26ae 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/152.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/153.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml
index 5e2973707e..5e2973707e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/153.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/154.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml
index 96e01d63f5..96e01d63f5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/154.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/155.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml
index 4f16d0f163..4f16d0f163 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/155.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/156.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml
index c6d93fd312..c6d93fd312 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/156.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/157.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml
index 2f058dac3e..2f058dac3e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/157.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/158.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml
index 32b90b722d..32b90b722d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/158.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/159.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml
index 066244cb91..066244cb91 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/159.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/160.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml
index 85424acb1b..85424acb1b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/160.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/161.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml
index 4f8a5b7b6b..4f8a5b7b6b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/161.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/162.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml
index efae4b190e..efae4b190e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/162.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/163.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml
index e14fb76c31..e14fb76c31 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/163.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/164.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml
index 98dd267c21..98dd267c21 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/164.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/165.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml
index 36c04618ef..36c04618ef 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/165.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/166.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml
index ee2ce28630..ee2ce28630 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/166.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/167.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml
index 9bdc6c1278..9bdc6c1278 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/167.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/168.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml
index f83221a3ad..f83221a3ad 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/168.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/169.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml
index 310029b976..310029b976 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/169.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/170.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml
index cfa0aee155..cfa0aee155 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/170.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/171.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml
index 48b5c7d3bc..48b5c7d3bc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/171.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/172.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml
index 6651d4d299..6651d4d299 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/172.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/173.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml
index f9f9f42023..f9f9f42023 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/173.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/174.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml
index 42bef861c6..42bef861c6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/174.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/175.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml
index 69912f36d2..69912f36d2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/175.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml
index 9c8e2e47d1..9c8e2e47d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/177.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml
index 6bc8228879..6bc8228879 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/177.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/178.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml
index e8f2d18eed..e8f2d18eed 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/178.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/179.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml
index e8f1f419db..e8f1f419db 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/179.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/180.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml
index 569d553a8c..569d553a8c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/180.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/181.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml
index 4341d99ee2..4341d99ee2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/181.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/182.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml
index 920f431666..920f431666 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/182.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/183.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml
index 7a5677de54..7a5677de54 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/183.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/184.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml
index 103384a06e..103384a06e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/184.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/185.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent
index e557426454..e557426454 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/185.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/185.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml
index 81d5ef4bcd..81d5ef4bcd 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/185.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/186.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml
index 85b26ec0a2..85b26ec0a2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/186.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries
index aef1bd67df..aef1bd67df 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository
index ede48b429c..ede48b429c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/null.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/null.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html
index fc7310c68e..fc7310c68e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries
index 1784810501..1784810501 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log
index 818f7c93e6..818f7c93e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository
index 48324028e6..48324028e6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/001.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent
index 1cff3fd44f..1cff3fd44f 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/001.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml
index 147d70d2d1..147d70d2d1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/002.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent
index 45f6d8e74e..45f6d8e74e 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/002.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml
index 9eaf91724f..9eaf91724f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/003.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/003.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml
index bb60b663ef..bb60b663ef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/004.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent
index 3436f20001..3436f20001 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/004.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml
index 074498ce19..074498ce19 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/005.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent
index c6e97f821f..c6e97f821f 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/005.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml
index 82a6228205..82a6228205 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/006.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent
index 4df2f0c2ac..4df2f0c2ac 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/006.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml
index 0b326cad4c..0b326cad4c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/007.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent
index ab1d696dd7..ab1d696dd7 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/007.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml
index 825e3b286a..825e3b286a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/008.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent
index c6ca61f9c8..c6ca61f9c8 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/008.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml
index 3c001b6cb3..3c001b6cb3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/009.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent
index 67c3297611..67c3297611 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/009.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml
index a5866e5a77..a5866e5a77 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/010.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/010.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml
index 418e9b0141..418e9b0141 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/011.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent
index b19be3a497..b19be3a497 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/011.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml
index 2ceefa1d21..2ceefa1d21 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/012.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent
index 8eb1fb9c41..8eb1fb9c41 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/012.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml
index 5a8f009b4a..5a8f009b4a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/013.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent
index 7f25c502dd..7f25c502dd 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/013.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml
index 7717c97afe..7717c97afe 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/014.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent
index 470fd6fe44..470fd6fe44 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/014.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml
index 816fd1e796..816fd1e796 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries
index 33a4a0da95..33a4a0da95 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository
index 3753e3a5c9..3753e3a5c9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml
index 0a7acf8ebe..0a7acf8ebe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml
index d4a445e555..d4a445e555 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml
index 0a7acf8ebe..0a7acf8ebe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml
index 6e293aa70e..6e293aa70e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml
index 04b6fc82ee..04b6fc82ee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml
index ab2a74c9d1..ab2a74c9d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml
index ab2a74c9d1..ab2a74c9d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml
index a79dff65fd..a79dff65fd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml
index bf275adb2b..bf275adb2b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml
index 81a251cb4b..81a251cb4b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml
index 524d94ee6b..524d94ee6b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml
index 71c6dc3e8e..71c6dc3e8e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries
index 577936756f..577936756f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository
index 889051e1ae..889051e1ae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/001.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/001.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml
index 2d6f41a137..2d6f41a137 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/002.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent
index 67c3297611..67c3297611 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/002.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml
index 023fce8499..023fce8499 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003-1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent
index 931f3ad6d8..931f3ad6d8 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003-1.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003-2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003-2.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml
index 63a5e8bdfc..63a5e8bdfc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004-1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent
index 40f7ff58a2..40f7ff58a2 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004-1.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004-2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent
index 61def75cb7..61def75cb7 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004-2.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml
index adc9201496..adc9201496 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005-1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent
index ade9599032..ade9599032 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005-1.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005-2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent
index bef50b1f38..bef50b1f38 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005-2.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml
index 6bd44cfee0..6bd44cfee0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/006.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent
index 8f305a82bd..8f305a82bd 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/006.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml
index eb80bb7409..eb80bb7409 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/007.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent
index fbf4ca4947..fbf4ca4947 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/007.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml
index 38897e34ea..38897e34ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/008.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent
index fbf4ca4947..fbf4ca4947 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/008.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml
index bf777a7ff2..bf777a7ff2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/008.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/009.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent
index fbf4ca4947..fbf4ca4947 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/009.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml
index c17562fe68..c17562fe68 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/009.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/010.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent
index 52a28f5deb..52a28f5deb 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/010.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml
index 2786b328f3..2786b328f3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/011.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent
index fbf4ca4947..fbf4ca4947 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/011.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml
index 03b482bbb6..03b482bbb6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/011.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/012.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent
index 7e372e65e9..7e372e65e9 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/012.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml
index 1967edbba7..1967edbba7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/012.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/013.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent
index a3691d9f08..a3691d9f08 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/013.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml
index cf44f2600a..cf44f2600a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/013.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/014.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent
index 6eaf779329..6eaf779329 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/014.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml
index bd08502489..bd08502489 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/014.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/015.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent
index 00d2f30e1d..00d2f30e1d 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/015.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml
index e04e75ffca..e04e75ffca 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/015.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/016.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent
index bf77ef8336..bf77ef8336 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/016.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml
index 4ccf4af350..4ccf4af350 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/016.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/017.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent
index ffd9adde61..ffd9adde61 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/017.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml
index 7fe18f4c7a..7fe18f4c7a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/017.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/018.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent
index 2d46f76fc3..2d46f76fc3 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/018.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml
index 31e90f2405..31e90f2405 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/018.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/019.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent
index d18201a98b..d18201a98b 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/019.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml
index b7a18faba0..b7a18faba0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/019.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/020.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent
index 815291c6d2..815291c6d2 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/020.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml
index d70892f7ad..d70892f7ad 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/020.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/021.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent
index 9f8f2afd2b..9f8f2afd2b 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/021.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml
index 70c28730db..70c28730db 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/021.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/023.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent
index e3268819f7..e3268819f7 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/023.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml
index 1c2484b70b..1c2484b70b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/023.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/024.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent
index aa6d0eccac..aa6d0eccac 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/024.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml
index 96e1ecb61b..96e1ecb61b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/024.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/025.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent
index 389d259eb1..389d259eb1 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/025.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml
index 8fdbc14c47..8fdbc14c47 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/025.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/026.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent
index bdc93af639..bdc93af639 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/026.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml
index 7b109c0913..7b109c0913 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/026.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/027.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent
index 712cce3700..712cce3700 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/027.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml
index d0c8c7abb5..d0c8c7abb5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/027.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/028.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent
index ac249d7b2c..ac249d7b2c 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/028.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml
index 50e5248cbf..50e5248cbf 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/028.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/029.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent
index df94df5560..df94df5560 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/029.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml
index 07e226c1d7..07e226c1d7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/029.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/030.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent
index e3864460df..e3864460df 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/030.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml
index 01fc2be4ca..01fc2be4ca 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/030.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031-1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent
index f7f94ab152..f7f94ab152 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031-1.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031-2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent
index bef50b1f38..bef50b1f38 100755..100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031-2.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml
index c3fe5fca71..c3fe5fca71 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries
index 65ee741d6c..65ee741d6c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository
index b16565a893..b16565a893 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml
index bdc39e2224..bdc39e2224 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml
index d07627d7a3..d07627d7a3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml
index 7293fb63dc..7293fb63dc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml
index 131a32fe69..131a32fe69 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml
index eb3f9674e8..eb3f9674e8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml
index 71c02026e4..71c02026e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml
index 7ac8b2b89d..7ac8b2b89d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml
index 03a6c3f9cd..03a6c3f9cd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries
index 5c3b4ac876..5c3b4ac876 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository
index 221d7aeedf..221d7aeedf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml
index 7fbef49502..7fbef49502 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml
index 2e3f1d81dd..2e3f1d81dd 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml
index c841b81784..c841b81784 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml
index a9c5756933..a9c5756933 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml
index b069efe727..b069efe727 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml
index 39a346342f..39a346342f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml
index cc3dc53166..cc3dc53166 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml
index b3370eb1cc..b3370eb1cc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/008.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml
index 0fa183eccf..0fa183eccf 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/009.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml
index eb64d18590..eb64d18590 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml
index 4cac44b4e4..4cac44b4e4 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/011.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml
index 6ce2a3eae2..6ce2a3eae2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/012.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml
index 2f4aae4e28..2f4aae4e28 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/013.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml
index 47f1f723e3..47f1f723e3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/014.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml
index 861df8a610..861df8a610 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/015.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml
index 66b1973c5d..66b1973c5d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/016.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml
index 827ba963bf..827ba963bf 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/017.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml
index 4570903fee..4570903fee 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/018.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml
index 3e6b74cbf2..3e6b74cbf2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/019.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml
index f749551a1b..f749551a1b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/020.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml
index 13dda8c8a5..13dda8c8a5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/021.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml
index 41d300e950..41d300e950 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/022.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml
index 3837b831ad..3837b831ad 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/023.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml
index b0655c634c..b0655c634c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/024.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml
index ed01f36d89..ed01f36d89 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/025.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml
index 1ba033c1a7..1ba033c1a7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/026.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml
index ee02439051..ee02439051 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/027.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml
index 3d95747913..3d95747913 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/028.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml
index 909f6ff712..909f6ff712 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/029.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml
index 3a7ddaa716..3a7ddaa716 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/030.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml
index a58e05867f..a58e05867f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/031.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml
index be55c8d721..be55c8d721 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/032.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml
index a3f9053868..a3f9053868 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/033.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml
index 7d52f31c0e..7d52f31c0e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/034.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml
index f109a8b782..f109a8b782 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/035.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml
index 8ab2b3fb16..8ab2b3fb16 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/036.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml
index f9b2113940..f9b2113940 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/037.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/038.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml
index d14f41bfe2..d14f41bfe2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/038.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/039.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml
index 0897316e46..0897316e46 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/039.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml
index 12c419b65b..12c419b65b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/040.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/041.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml
index a59f536277..a59f536277 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/041.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/042.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml
index 5d7c650944..5d7c650944 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/042.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml
index a8095dfe28..a8095dfe28 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/043.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml
index bee1d23e1a..bee1d23e1a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/044.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml
index e2567f532d..e2567f532d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/045.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml
index c50a2846f9..c50a2846f9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/046.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/047.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml
index a4c688cf1a..a4c688cf1a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/047.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/048.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml
index c6b2dedbba..c6b2dedbba 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/048.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/049.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml
index c3cc797b59..c3cc797b59 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/049.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/050.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml
index 12303b1af2..12303b1af2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/050.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/051.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml
index 7ae8f6c73a..7ae8f6c73a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/051.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/052.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml
index 3f33a4c760..3f33a4c760 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/052.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/053.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml
index 0d88f28718..0d88f28718 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/053.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/054.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml
index 5d1c88b946..5d1c88b946 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/054.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/055.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml
index da0292c5bc..da0292c5bc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/055.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/056.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml
index 144871b2a3..144871b2a3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/056.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/057.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml
index c1ac849ed1..c1ac849ed1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/057.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/058.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml
index 2ff23b233f..2ff23b233f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/058.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/059.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml
index 2171480ecf..2171480ecf 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/059.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/060.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml
index 6cd6b4386b..6cd6b4386b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/060.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/061.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml
index bbdc152492..bbdc152492 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/061.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/062.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml
index f4ba53090a..f4ba53090a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/062.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/063.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml
index 9668f2da73..9668f2da73 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/063.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/064.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml
index 74a97aa431..74a97aa431 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/064.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/065.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml
index f708f2bc17..f708f2bc17 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/065.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/066.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml
index a27340b9a7..a27340b9a7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/066.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/067.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml
index a0ccf772a5..a0ccf772a5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/067.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/068.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml
index 8ed806b9a3..8ed806b9a3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/068.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/069.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml
index 2437f60530..2437f60530 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/069.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/070.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml
index eef097df76..eef097df76 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/070.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/071.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml
index ebfba230a4..ebfba230a4 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/071.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/072.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml
index 6ef39dc49e..6ef39dc49e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/072.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/073.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml
index 217476d9a9..217476d9a9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/073.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/074.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml
index 8b2354ff73..8b2354ff73 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/074.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/075.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml
index 33c012441a..33c012441a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/075.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/076.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml
index 65b731cf6d..65b731cf6d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/076.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/077.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml
index e5f301eac8..e5f301eac8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/077.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/078.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml
index b31f40f94e..b31f40f94e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/078.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/079.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml
index a3290d6cbb..a3290d6cbb 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/079.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/080.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml
index 3208fa9aa5..3208fa9aa5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/080.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/081.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml
index 51ee1a375c..51ee1a375c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/081.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/082.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml
index d5245ac51a..d5245ac51a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/082.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/083.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml
index 937cfc0bdd..937cfc0bdd 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/083.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/084.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml
index 82760767aa..82760767aa 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/084.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/085.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml
index cf5834f2a5..cf5834f2a5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/085.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/086.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml
index bbc3080db6..bbc3080db6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/086.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/087.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml
index 34797a67d7..34797a67d7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/087.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/088.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml
index f97d96848d..f97d96848d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/088.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml
index 42ffcb6782..42ffcb6782 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/090.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml
index c392c96084..c392c96084 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/090.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/091.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml
index 7343d0f795..7343d0f795 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/091.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/092.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml
index 627b74ecdf..627b74ecdf 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/092.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml
index 300578eb5c..300578eb5c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/094.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml
index 5726e7db6f..5726e7db6f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/094.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/095.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml
index 1fe69596da..1fe69596da 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/095.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/096.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml
index a6f8f43620..a6f8f43620 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/096.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/097.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent
index e06554ace2..e06554ace2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/097.ent
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/097.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml
index c606afa97f..c606afa97f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/097.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/098.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml
index 33a64ce5ae..33a64ce5ae 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/098.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/099.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml
index 1b7214a137..1b7214a137 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/099.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/100.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml
index 5b839e76bc..5b839e76bc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/100.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/101.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml
index f464484bf5..f464484bf5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/101.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/102.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml
index f239ff5fee..f239ff5fee 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/102.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/103.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml
index 1dbbd5bb7c..1dbbd5bb7c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/103.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/104.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml
index 666f43de0f..666f43de0f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/104.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/105.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml
index 6b3af2b847..6b3af2b847 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/105.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/106.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml
index 8757c0a5ae..8757c0a5ae 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/106.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/107.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml
index 3d2c2566a7..3d2c2566a7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/107.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/108.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml
index e919bf229a..e919bf229a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/108.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/109.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml
index 33fa38e13b..33fa38e13b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/109.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/110.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml
index 0c61c65119..0c61c65119 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/110.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/111.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml
index cb56f264b0..cb56f264b0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/111.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/112.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml
index 27b6a4c793..27b6a4c793 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/112.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/113.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml
index d2edd0f01d..d2edd0f01d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/113.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/114.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml
index 52e207096d..52e207096d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/114.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/115.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml
index d939a67010..d939a67010 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/115.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/116.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml
index 55ab49620b..55ab49620b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/116.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/117.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml
index e4f02b14c8..e4f02b14c8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/117.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/118.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml
index fba6c44668..fba6c44668 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/118.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/119.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml
index 876e74730c..876e74730c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/119.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries
index 5d10c3447a..5d10c3447a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository
index 7dcbee54f2..7dcbee54f2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml
index 97cf3e3b86..97cf3e3b86 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml
index 3ea232c21a..3ea232c21a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml
index 97cf3e3b86..97cf3e3b86 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml
index 7293fb63dc..7293fb63dc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml
index 5a0c9831ae..5a0c9831ae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml
index c9c7ec5da8..c9c7ec5da8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml
index ac6b28f97a..ac6b28f97a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml
index 8e216eb99b..8e216eb99b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml
index 4fc76928b2..4fc76928b2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml
index 3b9a2f8d4e..3b9a2f8d4e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml
index a5471011df..a5471011df 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml
index 05d4e2fcf9..05d4e2fcf9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml
index 95ae08a12e..95ae08a12e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml
index a9aa2074ff..a9aa2074ff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml
index de0f566020..de0f566020 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml
index de0f566020..de0f566020 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml
index de0f566020..de0f566020 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml
index 2bcfb06cf1..2bcfb06cf1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml
index 82d117d492..82d117d492 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml
index d79cfe1493..d79cfe1493 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml
index 6f2cd5832e..6f2cd5832e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml
index f683039a80..f683039a80 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml
index e162b76504..e162b76504 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml
index 78028b704b..78028b704b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml
index 7293fb63dc..7293fb63dc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml
index b327ebd67f..b327ebd67f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml
index ced7d02719..ced7d02719 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml
index 7cc53f9ea0..7cc53f9ea0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml
index 33703c7925..33703c7925 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml
index cfeb5a5366..cfeb5a5366 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml
index f5a0484791..f5a0484791 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml
index c4083843d9..c4083843d9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml
index 82d117d492..82d117d492 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml
index f683039a80..f683039a80 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml
index f898cc8c98..f898cc8c98 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml
index 78028b704b..78028b704b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml
index b327ebd67f..b327ebd67f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml
index 7cc53f9ea0..7cc53f9ea0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml
index 33703c7925..33703c7925 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml
index cfeb5a5366..cfeb5a5366 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml
index f5a0484791..f5a0484791 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml
index 7597d31bf9..7597d31bf9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml
index 4bbdad45ed..4bbdad45ed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml
index 4bbdad45ed..4bbdad45ed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml
index 41eed46727..41eed46727 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml
index b07019e90f..b07019e90f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml
index fcab0cd7ff..fcab0cd7ff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml
index fcab0cd7ff..fcab0cd7ff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml
index fcab0cd7ff..fcab0cd7ff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml
index e356e7e4db..e356e7e4db 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml
index a9aa2074ff..a9aa2074ff 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml
index a5471011df..a5471011df 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml
index f5a0484791..f5a0484791 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml
index 41eed46727..41eed46727 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml
index c55a698bbb..c55a698bbb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml
index 87269f79d9..87269f79d9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml
index 631bfde91e..631bfde91e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml
index 636ab4729a..636ab4729a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml
index a20706ee01..a20706ee01 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml
index f898cc8c98..f898cc8c98 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml
index e05cfe6c31..e05cfe6c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml
index f6408de9b8..f6408de9b8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml
index 6e66b8da21..6e66b8da21 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml
index 96495d45c3..96495d45c3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml
index cc3def3336..cc3def3336 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml
index 5aed3d613b..5aed3d613b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml
index 1197d2ff9c..1197d2ff9c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml
index 288f23cdf2..288f23cdf2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml
index cc3def3336..cc3def3336 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml
index c43bdf9b9c..c43bdf9b9c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml
index a92237b4ec..a92237b4ec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml
index cc3def3336..cc3def3336 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml
index c82f47bca8..c82f47bca8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml
index 8e0722abad..8e0722abad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml
index 682b8140ec..682b8140ec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml
index a79dff65fd..a79dff65fd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml
index ced7d02719..ced7d02719 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml
index 31e37a9398..31e37a9398 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml
index 7e8f183484..7e8f183484 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries
index 06b9ee385a..06b9ee385a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository
index 1e172d2e1b..1e172d2e1b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root
index 3c7177e4bb..3c7177e4bb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml
index bf81c88eb9..bf81c88eb9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml
diff --git a/tests/auto/qxmlstream/data/001.ref b/tests/auto/corelib/xml/qxmlstream/data/001.ref
index 82ea8c3dc8..82ea8c3dc8 100644
--- a/tests/auto/qxmlstream/data/001.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/001.ref
diff --git a/tests/auto/qxmlstream/data/001.xml b/tests/auto/corelib/xml/qxmlstream/data/001.xml
index dca5e6705f..dca5e6705f 100644
--- a/tests/auto/qxmlstream/data/001.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/001.xml
diff --git a/tests/auto/qxmlstream/data/002.ref b/tests/auto/corelib/xml/qxmlstream/data/002.ref
index 45271c4502..45271c4502 100644
--- a/tests/auto/qxmlstream/data/002.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/002.ref
diff --git a/tests/auto/qxmlstream/data/002.xml b/tests/auto/corelib/xml/qxmlstream/data/002.xml
index 3749bcbbb7..3749bcbbb7 100644
--- a/tests/auto/qxmlstream/data/002.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/002.xml
diff --git a/tests/auto/qxmlstream/data/003.ref b/tests/auto/corelib/xml/qxmlstream/data/003.ref
index 6de9dccf22..6de9dccf22 100644
--- a/tests/auto/qxmlstream/data/003.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/003.ref
diff --git a/tests/auto/qxmlstream/data/003.xml b/tests/auto/corelib/xml/qxmlstream/data/003.xml
index 66c5cb8191..66c5cb8191 100644
--- a/tests/auto/qxmlstream/data/003.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/003.xml
diff --git a/tests/auto/qxmlstream/data/004.ref b/tests/auto/corelib/xml/qxmlstream/data/004.ref
index 052afffa6c..052afffa6c 100644
--- a/tests/auto/qxmlstream/data/004.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/004.ref
diff --git a/tests/auto/qxmlstream/data/004.xml b/tests/auto/corelib/xml/qxmlstream/data/004.xml
index e7d91d5d33..e7d91d5d33 100644
--- a/tests/auto/qxmlstream/data/004.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/004.xml
diff --git a/tests/auto/qxmlstream/data/005.ref b/tests/auto/corelib/xml/qxmlstream/data/005.ref
index 03269b280a..03269b280a 100644
--- a/tests/auto/qxmlstream/data/005.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/005.ref
diff --git a/tests/auto/qxmlstream/data/005.xml b/tests/auto/corelib/xml/qxmlstream/data/005.xml
index dc9c663649..dc9c663649 100644
--- a/tests/auto/qxmlstream/data/005.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/005.xml
diff --git a/tests/auto/qxmlstream/data/006.ref b/tests/auto/corelib/xml/qxmlstream/data/006.ref
index 53080c298a..53080c298a 100644
--- a/tests/auto/qxmlstream/data/006.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/006.ref
diff --git a/tests/auto/qxmlstream/data/006.xml b/tests/auto/corelib/xml/qxmlstream/data/006.xml
index 80c8bf75d1..80c8bf75d1 100644
--- a/tests/auto/qxmlstream/data/006.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/006.xml
diff --git a/tests/auto/qxmlstream/data/007.ref b/tests/auto/corelib/xml/qxmlstream/data/007.ref
index 8e53d0b9d7..8e53d0b9d7 100644
--- a/tests/auto/qxmlstream/data/007.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/007.ref
diff --git a/tests/auto/qxmlstream/data/007.xml b/tests/auto/corelib/xml/qxmlstream/data/007.xml
index 667bd63d1b..667bd63d1b 100644
--- a/tests/auto/qxmlstream/data/007.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/007.xml
diff --git a/tests/auto/qxmlstream/data/008.ref b/tests/auto/corelib/xml/qxmlstream/data/008.ref
index b0477ea1fa..b0477ea1fa 100644
--- a/tests/auto/qxmlstream/data/008.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/008.ref
diff --git a/tests/auto/qxmlstream/data/008.xml b/tests/auto/corelib/xml/qxmlstream/data/008.xml
index d63bc3c45e..d63bc3c45e 100644
--- a/tests/auto/qxmlstream/data/008.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/008.xml
diff --git a/tests/auto/qxmlstream/data/009.ref b/tests/auto/corelib/xml/qxmlstream/data/009.ref
index 1de530df1c..1de530df1c 100644
--- a/tests/auto/qxmlstream/data/009.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/009.ref
diff --git a/tests/auto/qxmlstream/data/009.xml b/tests/auto/corelib/xml/qxmlstream/data/009.xml
index d67c066ec4..d67c066ec4 100644
--- a/tests/auto/qxmlstream/data/009.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/009.xml
diff --git a/tests/auto/qxmlstream/data/010.ref b/tests/auto/corelib/xml/qxmlstream/data/010.ref
index 217f4963a1..217f4963a1 100644
--- a/tests/auto/qxmlstream/data/010.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/010.ref
diff --git a/tests/auto/qxmlstream/data/010.xml b/tests/auto/corelib/xml/qxmlstream/data/010.xml
index 2216fd6dce..2216fd6dce 100644
--- a/tests/auto/qxmlstream/data/010.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/010.xml
diff --git a/tests/auto/qxmlstream/data/011.ref b/tests/auto/corelib/xml/qxmlstream/data/011.ref
index e3945324eb..e3945324eb 100644
--- a/tests/auto/qxmlstream/data/011.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/011.ref
diff --git a/tests/auto/qxmlstream/data/011.xml b/tests/auto/corelib/xml/qxmlstream/data/011.xml
index f22269b2df..f22269b2df 100644
--- a/tests/auto/qxmlstream/data/011.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/011.xml
diff --git a/tests/auto/qxmlstream/data/012.ref b/tests/auto/corelib/xml/qxmlstream/data/012.ref
index 7a688b103d..7a688b103d 100644
--- a/tests/auto/qxmlstream/data/012.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/012.ref
diff --git a/tests/auto/qxmlstream/data/012.xml b/tests/auto/corelib/xml/qxmlstream/data/012.xml
index 26d9b1bebb..26d9b1bebb 100644
--- a/tests/auto/qxmlstream/data/012.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/012.xml
diff --git a/tests/auto/qxmlstream/data/013.ref b/tests/auto/corelib/xml/qxmlstream/data/013.ref
index 3ac6049d5e..3ac6049d5e 100644
--- a/tests/auto/qxmlstream/data/013.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/013.ref
diff --git a/tests/auto/qxmlstream/data/013.xml b/tests/auto/corelib/xml/qxmlstream/data/013.xml
index e8770ea1cf..e8770ea1cf 100644
--- a/tests/auto/qxmlstream/data/013.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/013.xml
diff --git a/tests/auto/qxmlstream/data/014.ref b/tests/auto/corelib/xml/qxmlstream/data/014.ref
index 8125ea70e1..8125ea70e1 100644
--- a/tests/auto/qxmlstream/data/014.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/014.ref
diff --git a/tests/auto/qxmlstream/data/014.xml b/tests/auto/corelib/xml/qxmlstream/data/014.xml
index 7c8e9fa2a3..7c8e9fa2a3 100644
--- a/tests/auto/qxmlstream/data/014.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/014.xml
diff --git a/tests/auto/qxmlstream/data/015.ref b/tests/auto/corelib/xml/qxmlstream/data/015.ref
index 02e9064f36..02e9064f36 100644
--- a/tests/auto/qxmlstream/data/015.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/015.ref
diff --git a/tests/auto/qxmlstream/data/015.xml b/tests/auto/corelib/xml/qxmlstream/data/015.xml
index 503018e705..503018e705 100644
--- a/tests/auto/qxmlstream/data/015.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/015.xml
diff --git a/tests/auto/qxmlstream/data/016.ref b/tests/auto/corelib/xml/qxmlstream/data/016.ref
index dd97554eb7..dd97554eb7 100644
--- a/tests/auto/qxmlstream/data/016.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/016.ref
diff --git a/tests/auto/qxmlstream/data/016.xml b/tests/auto/corelib/xml/qxmlstream/data/016.xml
index 8a3c44e45d..8a3c44e45d 100644
--- a/tests/auto/qxmlstream/data/016.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/016.xml
diff --git a/tests/auto/qxmlstream/data/017.ref b/tests/auto/corelib/xml/qxmlstream/data/017.ref
index 3701247d96..3701247d96 100644
--- a/tests/auto/qxmlstream/data/017.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/017.ref
diff --git a/tests/auto/qxmlstream/data/017.xml b/tests/auto/corelib/xml/qxmlstream/data/017.xml
index 65e754257d..65e754257d 100644
--- a/tests/auto/qxmlstream/data/017.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/017.xml
diff --git a/tests/auto/qxmlstream/data/018.ref b/tests/auto/corelib/xml/qxmlstream/data/018.ref
index 86b2a61ad6..86b2a61ad6 100644
--- a/tests/auto/qxmlstream/data/018.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/018.ref
diff --git a/tests/auto/qxmlstream/data/018.xml b/tests/auto/corelib/xml/qxmlstream/data/018.xml
index e795466550..e795466550 100644
--- a/tests/auto/qxmlstream/data/018.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/018.xml
diff --git a/tests/auto/qxmlstream/data/019.ref b/tests/auto/corelib/xml/qxmlstream/data/019.ref
index 314efb2b04..314efb2b04 100644
--- a/tests/auto/qxmlstream/data/019.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/019.ref
diff --git a/tests/auto/qxmlstream/data/019.xml b/tests/auto/corelib/xml/qxmlstream/data/019.xml
index c4620bd097..c4620bd097 100644
--- a/tests/auto/qxmlstream/data/019.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/019.xml
diff --git a/tests/auto/qxmlstream/data/020.ref b/tests/auto/corelib/xml/qxmlstream/data/020.ref
index 096a0316e2..096a0316e2 100644
--- a/tests/auto/qxmlstream/data/020.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/020.ref
diff --git a/tests/auto/qxmlstream/data/020.xml b/tests/auto/corelib/xml/qxmlstream/data/020.xml
index 4e5fcad48d..4e5fcad48d 100644
--- a/tests/auto/qxmlstream/data/020.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/020.xml
diff --git a/tests/auto/qxmlstream/data/021.ref b/tests/auto/corelib/xml/qxmlstream/data/021.ref
index 1d8f96b224..1d8f96b224 100644
--- a/tests/auto/qxmlstream/data/021.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/021.ref
diff --git a/tests/auto/qxmlstream/data/021.xml b/tests/auto/corelib/xml/qxmlstream/data/021.xml
index e56c240c42..e56c240c42 100644
--- a/tests/auto/qxmlstream/data/021.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/021.xml
diff --git a/tests/auto/qxmlstream/data/022.ref b/tests/auto/corelib/xml/qxmlstream/data/022.ref
index 620f51dc66..620f51dc66 100644
--- a/tests/auto/qxmlstream/data/022.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/022.ref
diff --git a/tests/auto/qxmlstream/data/022.xml b/tests/auto/corelib/xml/qxmlstream/data/022.xml
index 31984e79bf..31984e79bf 100644
--- a/tests/auto/qxmlstream/data/022.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/022.xml
diff --git a/tests/auto/qxmlstream/data/023.ref b/tests/auto/corelib/xml/qxmlstream/data/023.ref
index 513d85c710..513d85c710 100644
--- a/tests/auto/qxmlstream/data/023.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/023.ref
diff --git a/tests/auto/qxmlstream/data/023.xml b/tests/auto/corelib/xml/qxmlstream/data/023.xml
index 4d695ad38d..4d695ad38d 100644
--- a/tests/auto/qxmlstream/data/023.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/023.xml
diff --git a/tests/auto/qxmlstream/data/024.ref b/tests/auto/corelib/xml/qxmlstream/data/024.ref
index 83c3ac5315..83c3ac5315 100644
--- a/tests/auto/qxmlstream/data/024.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/024.ref
diff --git a/tests/auto/qxmlstream/data/024.xml b/tests/auto/corelib/xml/qxmlstream/data/024.xml
index b68470afa6..b68470afa6 100644
--- a/tests/auto/qxmlstream/data/024.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/024.xml
diff --git a/tests/auto/qxmlstream/data/025.ref b/tests/auto/corelib/xml/qxmlstream/data/025.ref
index 44363e0d61..44363e0d61 100644
--- a/tests/auto/qxmlstream/data/025.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/025.ref
diff --git a/tests/auto/qxmlstream/data/025.xml b/tests/auto/corelib/xml/qxmlstream/data/025.xml
index 1277ab33da..1277ab33da 100644
--- a/tests/auto/qxmlstream/data/025.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/025.xml
diff --git a/tests/auto/qxmlstream/data/026.ref b/tests/auto/corelib/xml/qxmlstream/data/026.ref
index de7b326079..de7b326079 100644
--- a/tests/auto/qxmlstream/data/026.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/026.ref
diff --git a/tests/auto/qxmlstream/data/026.xml b/tests/auto/corelib/xml/qxmlstream/data/026.xml
index 689c75c666..689c75c666 100644
--- a/tests/auto/qxmlstream/data/026.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/026.xml
diff --git a/tests/auto/qxmlstream/data/027.ref b/tests/auto/corelib/xml/qxmlstream/data/027.ref
index dcf5688e9f..dcf5688e9f 100644
--- a/tests/auto/qxmlstream/data/027.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/027.ref
diff --git a/tests/auto/qxmlstream/data/027.xml b/tests/auto/corelib/xml/qxmlstream/data/027.xml
index 1bf048e7f9..1bf048e7f9 100644
--- a/tests/auto/qxmlstream/data/027.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/027.xml
diff --git a/tests/auto/qxmlstream/data/028.ref b/tests/auto/corelib/xml/qxmlstream/data/028.ref
index ed025eb289..ed025eb289 100644
--- a/tests/auto/qxmlstream/data/028.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/028.ref
diff --git a/tests/auto/qxmlstream/data/028.xml b/tests/auto/corelib/xml/qxmlstream/data/028.xml
index e461235571..e461235571 100644
--- a/tests/auto/qxmlstream/data/028.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/028.xml
diff --git a/tests/auto/qxmlstream/data/029.ref b/tests/auto/corelib/xml/qxmlstream/data/029.ref
index 10697d1723..10697d1723 100644
--- a/tests/auto/qxmlstream/data/029.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/029.ref
diff --git a/tests/auto/qxmlstream/data/029.xml b/tests/auto/corelib/xml/qxmlstream/data/029.xml
index 2c05165d9d..2c05165d9d 100644
--- a/tests/auto/qxmlstream/data/029.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/029.xml
diff --git a/tests/auto/qxmlstream/data/030.ref b/tests/auto/corelib/xml/qxmlstream/data/030.ref
index 1e626263a3..1e626263a3 100644
--- a/tests/auto/qxmlstream/data/030.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/030.ref
diff --git a/tests/auto/qxmlstream/data/030.xml b/tests/auto/corelib/xml/qxmlstream/data/030.xml
index db5ab4dbc2..db5ab4dbc2 100644
--- a/tests/auto/qxmlstream/data/030.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/030.xml
diff --git a/tests/auto/qxmlstream/data/031.ref b/tests/auto/corelib/xml/qxmlstream/data/031.ref
index c68e2ecf7f..c68e2ecf7f 100644
--- a/tests/auto/qxmlstream/data/031.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/031.ref
diff --git a/tests/auto/qxmlstream/data/031.xml b/tests/auto/corelib/xml/qxmlstream/data/031.xml
index 2eec6cc6d0..2eec6cc6d0 100644
--- a/tests/auto/qxmlstream/data/031.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/031.xml
diff --git a/tests/auto/qxmlstream/data/032.ref b/tests/auto/corelib/xml/qxmlstream/data/032.ref
index 670afa49fb..670afa49fb 100644
--- a/tests/auto/qxmlstream/data/032.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/032.ref
diff --git a/tests/auto/qxmlstream/data/032.xml b/tests/auto/corelib/xml/qxmlstream/data/032.xml
index 94433263c5..94433263c5 100644
--- a/tests/auto/qxmlstream/data/032.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/032.xml
diff --git a/tests/auto/qxmlstream/data/033.ref b/tests/auto/corelib/xml/qxmlstream/data/033.ref
index ad83323de2..ad83323de2 100644
--- a/tests/auto/qxmlstream/data/033.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/033.ref
diff --git a/tests/auto/qxmlstream/data/033.xml b/tests/auto/corelib/xml/qxmlstream/data/033.xml
index d9ee72807c..d9ee72807c 100644
--- a/tests/auto/qxmlstream/data/033.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/033.xml
diff --git a/tests/auto/qxmlstream/data/034.ref b/tests/auto/corelib/xml/qxmlstream/data/034.ref
index c1aec14057..c1aec14057 100644
--- a/tests/auto/qxmlstream/data/034.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/034.ref
diff --git a/tests/auto/qxmlstream/data/034.xml b/tests/auto/corelib/xml/qxmlstream/data/034.xml
index 4fa2b8dbb0..4fa2b8dbb0 100644
--- a/tests/auto/qxmlstream/data/034.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/034.xml
diff --git a/tests/auto/qxmlstream/data/035.ref b/tests/auto/corelib/xml/qxmlstream/data/035.ref
index e172fc90e1..e172fc90e1 100644
--- a/tests/auto/qxmlstream/data/035.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/035.ref
diff --git a/tests/auto/qxmlstream/data/035.xml b/tests/auto/corelib/xml/qxmlstream/data/035.xml
index 97b14b3106..97b14b3106 100644
--- a/tests/auto/qxmlstream/data/035.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/035.xml
diff --git a/tests/auto/qxmlstream/data/036.ref b/tests/auto/corelib/xml/qxmlstream/data/036.ref
index 158e7361f9..158e7361f9 100644
--- a/tests/auto/qxmlstream/data/036.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/036.ref
diff --git a/tests/auto/qxmlstream/data/036.xml b/tests/auto/corelib/xml/qxmlstream/data/036.xml
index c37894b5d7..c37894b5d7 100644
--- a/tests/auto/qxmlstream/data/036.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/036.xml
diff --git a/tests/auto/qxmlstream/data/037.ref b/tests/auto/corelib/xml/qxmlstream/data/037.ref
index d7e402c5a0..d7e402c5a0 100644
--- a/tests/auto/qxmlstream/data/037.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/037.ref
diff --git a/tests/auto/qxmlstream/data/037.xml b/tests/auto/corelib/xml/qxmlstream/data/037.xml
index 30bc24b5b2..30bc24b5b2 100644
--- a/tests/auto/qxmlstream/data/037.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/037.xml
diff --git a/tests/auto/qxmlstream/data/038.ref b/tests/auto/corelib/xml/qxmlstream/data/038.ref
index 45f16782be..45f16782be 100644
--- a/tests/auto/qxmlstream/data/038.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/038.ref
diff --git a/tests/auto/qxmlstream/data/038.xml b/tests/auto/corelib/xml/qxmlstream/data/038.xml
index 2b20a469e0..2b20a469e0 100644
--- a/tests/auto/qxmlstream/data/038.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/038.xml
diff --git a/tests/auto/qxmlstream/data/039.ref b/tests/auto/corelib/xml/qxmlstream/data/039.ref
index 63ee6b4def..63ee6b4def 100644
--- a/tests/auto/qxmlstream/data/039.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/039.ref
diff --git a/tests/auto/qxmlstream/data/039.xml b/tests/auto/corelib/xml/qxmlstream/data/039.xml
index af7be31dc7..af7be31dc7 100644
--- a/tests/auto/qxmlstream/data/039.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/039.xml
diff --git a/tests/auto/qxmlstream/data/040.ref b/tests/auto/corelib/xml/qxmlstream/data/040.ref
index ee47ca5aa8..ee47ca5aa8 100644
--- a/tests/auto/qxmlstream/data/040.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/040.ref
diff --git a/tests/auto/qxmlstream/data/040.xml b/tests/auto/corelib/xml/qxmlstream/data/040.xml
index cf02e22bfa..cf02e22bfa 100644
--- a/tests/auto/qxmlstream/data/040.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/040.xml
diff --git a/tests/auto/qxmlstream/data/041.ref b/tests/auto/corelib/xml/qxmlstream/data/041.ref
index 3e7ca64208..3e7ca64208 100644
--- a/tests/auto/qxmlstream/data/041.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/041.ref
diff --git a/tests/auto/qxmlstream/data/041.xml b/tests/auto/corelib/xml/qxmlstream/data/041.xml
index 80781e2e2b..80781e2e2b 100644
--- a/tests/auto/qxmlstream/data/041.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/041.xml
diff --git a/tests/auto/qxmlstream/data/042.ref b/tests/auto/corelib/xml/qxmlstream/data/042.ref
index e2fd9c6b7f..e2fd9c6b7f 100644
--- a/tests/auto/qxmlstream/data/042.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/042.ref
diff --git a/tests/auto/qxmlstream/data/042.xml b/tests/auto/corelib/xml/qxmlstream/data/042.xml
index 045dcc23dc..045dcc23dc 100644
--- a/tests/auto/qxmlstream/data/042.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/042.xml
diff --git a/tests/auto/qxmlstream/data/043.ref b/tests/auto/corelib/xml/qxmlstream/data/043.ref
index d147ecd9ec..d147ecd9ec 100644
--- a/tests/auto/qxmlstream/data/043.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/043.ref
diff --git a/tests/auto/qxmlstream/data/043.xml b/tests/auto/corelib/xml/qxmlstream/data/043.xml
index d800e2537b..d800e2537b 100644
--- a/tests/auto/qxmlstream/data/043.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/043.xml
diff --git a/tests/auto/qxmlstream/data/044.ref b/tests/auto/corelib/xml/qxmlstream/data/044.ref
index d147ecd9ec..d147ecd9ec 100644
--- a/tests/auto/qxmlstream/data/044.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/044.ref
diff --git a/tests/auto/qxmlstream/data/044.xml b/tests/auto/corelib/xml/qxmlstream/data/044.xml
index 30922c8d2b..30922c8d2b 100644
--- a/tests/auto/qxmlstream/data/044.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/044.xml
diff --git a/tests/auto/qxmlstream/data/045.ref b/tests/auto/corelib/xml/qxmlstream/data/045.ref
index 0e4d785d40..0e4d785d40 100644
--- a/tests/auto/qxmlstream/data/045.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/045.ref
diff --git a/tests/auto/qxmlstream/data/045.xml b/tests/auto/corelib/xml/qxmlstream/data/045.xml
index 3235470923..3235470923 100644
--- a/tests/auto/qxmlstream/data/045.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/045.xml
diff --git a/tests/auto/qxmlstream/data/046.ref b/tests/auto/corelib/xml/qxmlstream/data/046.ref
index 5019708c8c..5019708c8c 100644
--- a/tests/auto/qxmlstream/data/046.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/046.ref
diff --git a/tests/auto/qxmlstream/data/046.xml b/tests/auto/corelib/xml/qxmlstream/data/046.xml
index 8432a2faaa..8432a2faaa 100644
--- a/tests/auto/qxmlstream/data/046.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/046.xml
diff --git a/tests/auto/qxmlstream/data/047.ref b/tests/auto/corelib/xml/qxmlstream/data/047.ref
index c159d89c76..c159d89c76 100644
--- a/tests/auto/qxmlstream/data/047.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/047.ref
diff --git a/tests/auto/qxmlstream/data/047.xml b/tests/auto/corelib/xml/qxmlstream/data/047.xml
index 36e7b33072..36e7b33072 100644
--- a/tests/auto/qxmlstream/data/047.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/047.xml
diff --git a/tests/auto/qxmlstream/data/048.ref b/tests/auto/corelib/xml/qxmlstream/data/048.ref
index 32e7243cc0..32e7243cc0 100644
--- a/tests/auto/qxmlstream/data/048.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/048.ref
diff --git a/tests/auto/qxmlstream/data/048.xml b/tests/auto/corelib/xml/qxmlstream/data/048.xml
index 2f5d6c8baf..2f5d6c8baf 100644
--- a/tests/auto/qxmlstream/data/048.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/048.xml
diff --git a/tests/auto/qxmlstream/data/051reduced.ref b/tests/auto/corelib/xml/qxmlstream/data/051reduced.ref
index d86fb64970..d86fb64970 100644
--- a/tests/auto/qxmlstream/data/051reduced.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/051reduced.ref
diff --git a/tests/auto/qxmlstream/data/051reduced.xml b/tests/auto/corelib/xml/qxmlstream/data/051reduced.xml
index 0a53b0d503..0a53b0d503 100644
--- a/tests/auto/qxmlstream/data/051reduced.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/051reduced.xml
Binary files differ
diff --git a/tests/auto/qxmlstream/data/1.ref b/tests/auto/corelib/xml/qxmlstream/data/1.ref
index 0288cf0e11..0288cf0e11 100644
--- a/tests/auto/qxmlstream/data/1.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/1.ref
diff --git a/tests/auto/qxmlstream/data/1.xml b/tests/auto/corelib/xml/qxmlstream/data/1.xml
index 3ead71af7a..3ead71af7a 100644
--- a/tests/auto/qxmlstream/data/1.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/1.xml
diff --git a/tests/auto/qxmlstream/data/10.ref b/tests/auto/corelib/xml/qxmlstream/data/10.ref
index 51ffb72ac3..51ffb72ac3 100644
--- a/tests/auto/qxmlstream/data/10.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/10.ref
diff --git a/tests/auto/qxmlstream/data/10.xml b/tests/auto/corelib/xml/qxmlstream/data/10.xml
index 19f9f9e8ff..19f9f9e8ff 100644
--- a/tests/auto/qxmlstream/data/10.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/10.xml
diff --git a/tests/auto/qxmlstream/data/11.ref b/tests/auto/corelib/xml/qxmlstream/data/11.ref
index 60387ac925..60387ac925 100644
--- a/tests/auto/qxmlstream/data/11.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/11.ref
diff --git a/tests/auto/qxmlstream/data/11.xml b/tests/auto/corelib/xml/qxmlstream/data/11.xml
index 619e917419..619e917419 100644
--- a/tests/auto/qxmlstream/data/11.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/11.xml
diff --git a/tests/auto/qxmlstream/data/12.ref b/tests/auto/corelib/xml/qxmlstream/data/12.ref
index ede0967f31..ede0967f31 100644
--- a/tests/auto/qxmlstream/data/12.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/12.ref
diff --git a/tests/auto/qxmlstream/data/12.xml b/tests/auto/corelib/xml/qxmlstream/data/12.xml
index d2265f4ddf..d2265f4ddf 100644
--- a/tests/auto/qxmlstream/data/12.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/12.xml
diff --git a/tests/auto/qxmlstream/data/13.ref b/tests/auto/corelib/xml/qxmlstream/data/13.ref
index 10de0f3328..10de0f3328 100644
--- a/tests/auto/qxmlstream/data/13.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/13.ref
diff --git a/tests/auto/qxmlstream/data/13.xml b/tests/auto/corelib/xml/qxmlstream/data/13.xml
index d0bda97207..d0bda97207 100644
--- a/tests/auto/qxmlstream/data/13.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/13.xml
diff --git a/tests/auto/qxmlstream/data/14.ref b/tests/auto/corelib/xml/qxmlstream/data/14.ref
index 47a1b1ae80..47a1b1ae80 100644
--- a/tests/auto/qxmlstream/data/14.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/14.ref
diff --git a/tests/auto/qxmlstream/data/14.xml b/tests/auto/corelib/xml/qxmlstream/data/14.xml
index 922314beb9..922314beb9 100644
--- a/tests/auto/qxmlstream/data/14.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/14.xml
diff --git a/tests/auto/qxmlstream/data/15.ref b/tests/auto/corelib/xml/qxmlstream/data/15.ref
index 3097f1f84a..3097f1f84a 100644
--- a/tests/auto/qxmlstream/data/15.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/15.ref
diff --git a/tests/auto/qxmlstream/data/15.xml b/tests/auto/corelib/xml/qxmlstream/data/15.xml
index 81f8c2c7ba..81f8c2c7ba 100644
--- a/tests/auto/qxmlstream/data/15.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/15.xml
diff --git a/tests/auto/qxmlstream/data/16.ref b/tests/auto/corelib/xml/qxmlstream/data/16.ref
index 316304541a..316304541a 100644
--- a/tests/auto/qxmlstream/data/16.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/16.ref
diff --git a/tests/auto/qxmlstream/data/16.xml b/tests/auto/corelib/xml/qxmlstream/data/16.xml
index 6a69b9b3f5..6a69b9b3f5 100644
--- a/tests/auto/qxmlstream/data/16.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/16.xml
diff --git a/tests/auto/qxmlstream/data/2.ref b/tests/auto/corelib/xml/qxmlstream/data/2.ref
index 95d68efbd6..95d68efbd6 100644
--- a/tests/auto/qxmlstream/data/2.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/2.ref
diff --git a/tests/auto/qxmlstream/data/2.xml b/tests/auto/corelib/xml/qxmlstream/data/2.xml
index 095ebc63bd..095ebc63bd 100644
--- a/tests/auto/qxmlstream/data/2.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/2.xml
diff --git a/tests/auto/qxmlstream/data/20.ref b/tests/auto/corelib/xml/qxmlstream/data/20.ref
index 364eea62d2..364eea62d2 100644
--- a/tests/auto/qxmlstream/data/20.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/20.ref
diff --git a/tests/auto/qxmlstream/data/20.xml b/tests/auto/corelib/xml/qxmlstream/data/20.xml
index 38a7212b03..38a7212b03 100644
--- a/tests/auto/qxmlstream/data/20.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/20.xml
diff --git a/tests/auto/qxmlstream/data/21.ref b/tests/auto/corelib/xml/qxmlstream/data/21.ref
index 1098c6800f..1098c6800f 100644
--- a/tests/auto/qxmlstream/data/21.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/21.ref
diff --git a/tests/auto/qxmlstream/data/21.xml b/tests/auto/corelib/xml/qxmlstream/data/21.xml
index 7a4c26a1fa..7a4c26a1fa 100644
--- a/tests/auto/qxmlstream/data/21.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/21.xml
diff --git a/tests/auto/qxmlstream/data/22.ref b/tests/auto/corelib/xml/qxmlstream/data/22.ref
index d6d30237e1..d6d30237e1 100644
--- a/tests/auto/qxmlstream/data/22.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/22.ref
diff --git a/tests/auto/qxmlstream/data/22.xml b/tests/auto/corelib/xml/qxmlstream/data/22.xml
index 4b1dbe43ab..4b1dbe43ab 100644
--- a/tests/auto/qxmlstream/data/22.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/22.xml
diff --git a/tests/auto/qxmlstream/data/3.ref b/tests/auto/corelib/xml/qxmlstream/data/3.ref
index cc8b18b7d8..cc8b18b7d8 100644
--- a/tests/auto/qxmlstream/data/3.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/3.ref
diff --git a/tests/auto/qxmlstream/data/3.xml b/tests/auto/corelib/xml/qxmlstream/data/3.xml
index ab4abd3670..ab4abd3670 100644
--- a/tests/auto/qxmlstream/data/3.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/3.xml
diff --git a/tests/auto/qxmlstream/data/4.ref b/tests/auto/corelib/xml/qxmlstream/data/4.ref
index 80f4846070..80f4846070 100644
--- a/tests/auto/qxmlstream/data/4.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/4.ref
diff --git a/tests/auto/qxmlstream/data/4.xml b/tests/auto/corelib/xml/qxmlstream/data/4.xml
index 2791fdca30..2791fdca30 100644
--- a/tests/auto/qxmlstream/data/4.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/4.xml
diff --git a/tests/auto/qxmlstream/data/5.ref b/tests/auto/corelib/xml/qxmlstream/data/5.ref
index 5d073094a7..5d073094a7 100644
--- a/tests/auto/qxmlstream/data/5.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/5.ref
diff --git a/tests/auto/qxmlstream/data/5.xml b/tests/auto/corelib/xml/qxmlstream/data/5.xml
index 5bf7dbc592..5bf7dbc592 100644
--- a/tests/auto/qxmlstream/data/5.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/5.xml
diff --git a/tests/auto/qxmlstream/data/6.ref b/tests/auto/corelib/xml/qxmlstream/data/6.ref
index 3ba92e7d81..3ba92e7d81 100644
--- a/tests/auto/qxmlstream/data/6.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/6.ref
diff --git a/tests/auto/qxmlstream/data/6.xml b/tests/auto/corelib/xml/qxmlstream/data/6.xml
index 8e2778b669..8e2778b669 100644
--- a/tests/auto/qxmlstream/data/6.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/6.xml
diff --git a/tests/auto/qxmlstream/data/7.ref b/tests/auto/corelib/xml/qxmlstream/data/7.ref
index 158eef0291..158eef0291 100644
--- a/tests/auto/qxmlstream/data/7.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/7.ref
diff --git a/tests/auto/qxmlstream/data/7.xml b/tests/auto/corelib/xml/qxmlstream/data/7.xml
index c9abc3a48e..c9abc3a48e 100644
--- a/tests/auto/qxmlstream/data/7.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/7.xml
diff --git a/tests/auto/qxmlstream/data/8.ref b/tests/auto/corelib/xml/qxmlstream/data/8.ref
index d1d4eebcf1..d1d4eebcf1 100644
--- a/tests/auto/qxmlstream/data/8.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/8.ref
diff --git a/tests/auto/qxmlstream/data/8.xml b/tests/auto/corelib/xml/qxmlstream/data/8.xml
index 8b88a9d961..8b88a9d961 100644
--- a/tests/auto/qxmlstream/data/8.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/8.xml
diff --git a/tests/auto/qxmlstream/data/9.ref b/tests/auto/corelib/xml/qxmlstream/data/9.ref
index e20ac827e7..e20ac827e7 100644
--- a/tests/auto/qxmlstream/data/9.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/9.ref
diff --git a/tests/auto/qxmlstream/data/9.xml b/tests/auto/corelib/xml/qxmlstream/data/9.xml
index 40c36f040a..40c36f040a 100644
--- a/tests/auto/qxmlstream/data/9.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/9.xml
diff --git a/tests/auto/qxmlstream/data/books.ref b/tests/auto/corelib/xml/qxmlstream/data/books.ref
index 23a6616d12..23a6616d12 100644
--- a/tests/auto/qxmlstream/data/books.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/books.ref
diff --git a/tests/auto/qxmlstream/data/books.xml b/tests/auto/corelib/xml/qxmlstream/data/books.xml
index 1ea700d6bd..1ea700d6bd 100644
--- a/tests/auto/qxmlstream/data/books.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/books.xml
diff --git a/tests/auto/qxmlstream/data/colonInPI.ref b/tests/auto/corelib/xml/qxmlstream/data/colonInPI.ref
index 61d0e782b7..61d0e782b7 100644
--- a/tests/auto/qxmlstream/data/colonInPI.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/colonInPI.ref
diff --git a/tests/auto/qxmlstream/data/colonInPI.xml b/tests/auto/corelib/xml/qxmlstream/data/colonInPI.xml
index 831618626a..831618626a 100644
--- a/tests/auto/qxmlstream/data/colonInPI.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/colonInPI.xml
diff --git a/tests/auto/qxmlstream/data/doctypeEmptyMarkupDecl.ref b/tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.ref
index ea85e32c1d..ea85e32c1d 100644
--- a/tests/auto/qxmlstream/data/doctypeEmptyMarkupDecl.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.ref
diff --git a/tests/auto/qxmlstream/data/doctypeEmptyMarkupDecl.xml b/tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.xml
index 1c66c0c3bc..1c66c0c3bc 100644
--- a/tests/auto/qxmlstream/data/doctypeEmptyMarkupDecl.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.xml
diff --git a/tests/auto/qxmlstream/data/mixedContent.ref b/tests/auto/corelib/xml/qxmlstream/data/mixedContent.ref
index 5607fd9e50..5607fd9e50 100644
--- a/tests/auto/qxmlstream/data/mixedContent.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/mixedContent.ref
diff --git a/tests/auto/qxmlstream/data/mixedContent.xml b/tests/auto/corelib/xml/qxmlstream/data/mixedContent.xml
index b6f66245a8..b6f66245a8 100644
--- a/tests/auto/qxmlstream/data/mixedContent.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/mixedContent.xml
diff --git a/tests/auto/qxmlstream/data/namespaceCDATA.ref b/tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.ref
index 9734d22276..9734d22276 100644
--- a/tests/auto/qxmlstream/data/namespaceCDATA.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.ref
diff --git a/tests/auto/qxmlstream/data/namespaceCDATA.xml b/tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.xml
index 6475dbcdca..6475dbcdca 100644
--- a/tests/auto/qxmlstream/data/namespaceCDATA.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.xml
diff --git a/tests/auto/qxmlstream/data/namespaces b/tests/auto/corelib/xml/qxmlstream/data/namespaces
index 7cc985b5a9..7cc985b5a9 100644
--- a/tests/auto/qxmlstream/data/namespaces
+++ b/tests/auto/corelib/xml/qxmlstream/data/namespaces
diff --git a/tests/auto/qxmlstream/data/org_module.ref b/tests/auto/corelib/xml/qxmlstream/data/org_module.ref
index 591172aae5..591172aae5 100644
--- a/tests/auto/qxmlstream/data/org_module.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/org_module.ref
diff --git a/tests/auto/qxmlstream/data/org_module.xml b/tests/auto/corelib/xml/qxmlstream/data/org_module.xml
index 44c90c9528..44c90c9528 100644
--- a/tests/auto/qxmlstream/data/org_module.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/org_module.xml
diff --git a/tests/auto/qxmlstream/data/spaceBracket.ref b/tests/auto/corelib/xml/qxmlstream/data/spaceBracket.ref
index fa332856e0..fa332856e0 100644
--- a/tests/auto/qxmlstream/data/spaceBracket.ref
+++ b/tests/auto/corelib/xml/qxmlstream/data/spaceBracket.ref
diff --git a/tests/auto/qxmlstream/data/spaceBracket.xml b/tests/auto/corelib/xml/qxmlstream/data/spaceBracket.xml
index 85b46e84b2..85b46e84b2 100644
--- a/tests/auto/qxmlstream/data/spaceBracket.xml
+++ b/tests/auto/corelib/xml/qxmlstream/data/spaceBracket.xml
diff --git a/tests/auto/qxmlstream/qc14n.h b/tests/auto/corelib/xml/qxmlstream/qc14n.h
index f7c17b5a7a..f7c17b5a7a 100644
--- a/tests/auto/qxmlstream/qc14n.h
+++ b/tests/auto/corelib/xml/qxmlstream/qc14n.h
diff --git a/tests/auto/qxmlstream/qxmlstream.pro b/tests/auto/corelib/xml/qxmlstream/qxmlstream.pro
index 894801d8dc..894801d8dc 100644
--- a/tests/auto/qxmlstream/qxmlstream.pro
+++ b/tests/auto/corelib/xml/qxmlstream/qxmlstream.pro
diff --git a/tests/auto/qxmlstream/setupSuite.sh b/tests/auto/corelib/xml/qxmlstream/setupSuite.sh
index 5d4947e5ae..5d4947e5ae 100755
--- a/tests/auto/qxmlstream/setupSuite.sh
+++ b/tests/auto/corelib/xml/qxmlstream/setupSuite.sh
diff --git a/tests/auto/qxmlstream/tst_qxmlstream.cpp b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp
index 0ddbe990a0..0ddbe990a0 100644
--- a/tests/auto/qxmlstream/tst_qxmlstream.cpp
+++ b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp
diff --git a/tests/auto/corelib/xml/xml.pro b/tests/auto/corelib/xml/xml.pro
new file mode 100644
index 0000000000..53836cb7f0
--- /dev/null
+++ b/tests/auto/corelib/xml/xml.pro
@@ -0,0 +1,3 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qxmlstream
diff --git a/tests/auto/dbus.pro b/tests/auto/dbus/dbus.pro
index cd845d7043..cd845d7043 100644
--- a/tests/auto/dbus.pro
+++ b/tests/auto/dbus/dbus.pro
diff --git a/tests/auto/qdbusabstractadaptor/.gitignore b/tests/auto/dbus/qdbusabstractadaptor/.gitignore
index 201dd9cda0..201dd9cda0 100644
--- a/tests/auto/qdbusabstractadaptor/.gitignore
+++ b/tests/auto/dbus/qdbusabstractadaptor/.gitignore
diff --git a/tests/auto/qdbusabstractadaptor/myobject.h b/tests/auto/dbus/qdbusabstractadaptor/myobject.h
index 2aaaa7ecc5..2aaaa7ecc5 100644
--- a/tests/auto/qdbusabstractadaptor/myobject.h
+++ b/tests/auto/dbus/qdbusabstractadaptor/myobject.h
diff --git a/tests/auto/qdbusabstractadaptor/qdbusabstractadaptor.pro b/tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor.pro
index 480509853f..480509853f 100644
--- a/tests/auto/qdbusabstractadaptor/qdbusabstractadaptor.pro
+++ b/tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor.pro
diff --git a/tests/auto/qdbusabstractadaptor/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp
index a06232c4bd..a06232c4bd 100644
--- a/tests/auto/qdbusabstractadaptor/qmyserver/qmyserver.cpp
+++ b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp
diff --git a/tests/auto/qdbusabstractadaptor/qmyserver/qmyserver.pro b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.pro
index f4fe02c4eb..f4fe02c4eb 100644
--- a/tests/auto/qdbusabstractadaptor/qmyserver/qmyserver.pro
+++ b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.pro
diff --git a/tests/auto/qdbusabstractadaptor/test/test.pro b/tests/auto/dbus/qdbusabstractadaptor/test/test.pro
index 52aa578fd4..52aa578fd4 100644
--- a/tests/auto/qdbusabstractadaptor/test/test.pro
+++ b/tests/auto/dbus/qdbusabstractadaptor/test/test.pro
diff --git a/tests/auto/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
index ff684ff522..ff684ff522 100644
--- a/tests/auto/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
+++ b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
diff --git a/tests/auto/qdbusabstractinterface/com.trolltech.QtDBus.Pinger.xml b/tests/auto/dbus/qdbusabstractinterface/com.trolltech.QtDBus.Pinger.xml
index d945ec9b43..d945ec9b43 100644
--- a/tests/auto/qdbusabstractinterface/com.trolltech.QtDBus.Pinger.xml
+++ b/tests/auto/dbus/qdbusabstractinterface/com.trolltech.QtDBus.Pinger.xml
diff --git a/tests/auto/qdbusabstractinterface/interface.cpp b/tests/auto/dbus/qdbusabstractinterface/interface.cpp
index 849db93084..849db93084 100644
--- a/tests/auto/qdbusabstractinterface/interface.cpp
+++ b/tests/auto/dbus/qdbusabstractinterface/interface.cpp
diff --git a/tests/auto/qdbusabstractinterface/interface.h b/tests/auto/dbus/qdbusabstractinterface/interface.h
index 0fb15fe6c5..0fb15fe6c5 100644
--- a/tests/auto/qdbusabstractinterface/interface.h
+++ b/tests/auto/dbus/qdbusabstractinterface/interface.h
diff --git a/tests/auto/qdbusabstractinterface/pinger.cpp b/tests/auto/dbus/qdbusabstractinterface/pinger.cpp
index 24113fbb1b..24113fbb1b 100644
--- a/tests/auto/qdbusabstractinterface/pinger.cpp
+++ b/tests/auto/dbus/qdbusabstractinterface/pinger.cpp
diff --git a/tests/auto/qdbusabstractinterface/pinger.h b/tests/auto/dbus/qdbusabstractinterface/pinger.h
index 739a14229f..739a14229f 100644
--- a/tests/auto/qdbusabstractinterface/pinger.h
+++ b/tests/auto/dbus/qdbusabstractinterface/pinger.h
diff --git a/tests/auto/qdbusabstractinterface/qdbusabstractinterface.pro b/tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface.pro
index f9077b92cf..f9077b92cf 100644
--- a/tests/auto/qdbusabstractinterface/qdbusabstractinterface.pro
+++ b/tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface.pro
diff --git a/tests/auto/qdbusabstractinterface/qpinger/qpinger.cpp b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp
index 393d6470c8..393d6470c8 100644
--- a/tests/auto/qdbusabstractinterface/qpinger/qpinger.cpp
+++ b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp
diff --git a/tests/auto/qdbusabstractinterface/qpinger/qpinger.pro b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.pro
index 27545bbb0f..27545bbb0f 100644
--- a/tests/auto/qdbusabstractinterface/qpinger/qpinger.pro
+++ b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.pro
diff --git a/tests/auto/qdbusabstractinterface/test/test.pro b/tests/auto/dbus/qdbusabstractinterface/test/test.pro
index 98bcaa70f5..98bcaa70f5 100644
--- a/tests/auto/qdbusabstractinterface/test/test.pro
+++ b/tests/auto/dbus/qdbusabstractinterface/test/test.pro
diff --git a/tests/auto/qdbusabstractinterface/tst_qdbusabstractinterface.cpp b/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
index 994df058fa..994df058fa 100644
--- a/tests/auto/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
+++ b/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
diff --git a/tests/auto/qdbusconnection/.gitignore b/tests/auto/dbus/qdbusconnection/.gitignore
index 2995d60244..2995d60244 100644
--- a/tests/auto/qdbusconnection/.gitignore
+++ b/tests/auto/dbus/qdbusconnection/.gitignore
diff --git a/tests/auto/qdbusconnection/qdbusconnection.pro b/tests/auto/dbus/qdbusconnection/qdbusconnection.pro
index d33ab0d95b..d33ab0d95b 100644
--- a/tests/auto/qdbusconnection/qdbusconnection.pro
+++ b/tests/auto/dbus/qdbusconnection/qdbusconnection.pro
diff --git a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
index 6490bfe973..6490bfe973 100644
--- a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp
+++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
diff --git a/tests/auto/qdbusconnection_no_bus/qdbusconnection_no_bus.pro b/tests/auto/dbus/qdbusconnection_no_bus/qdbusconnection_no_bus.pro
index 86d08ea0d4..86d08ea0d4 100644
--- a/tests/auto/qdbusconnection_no_bus/qdbusconnection_no_bus.pro
+++ b/tests/auto/dbus/qdbusconnection_no_bus/qdbusconnection_no_bus.pro
diff --git a/tests/auto/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp b/tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp
index acd27386f5..acd27386f5 100644
--- a/tests/auto/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp
+++ b/tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp
diff --git a/tests/auto/qdbuscontext/.gitignore b/tests/auto/dbus/qdbuscontext/.gitignore
index 64fff94d76..64fff94d76 100644
--- a/tests/auto/qdbuscontext/.gitignore
+++ b/tests/auto/dbus/qdbuscontext/.gitignore
diff --git a/tests/auto/qdbuscontext/qdbuscontext.pro b/tests/auto/dbus/qdbuscontext/qdbuscontext.pro
index ddd340c37e..ddd340c37e 100644
--- a/tests/auto/qdbuscontext/qdbuscontext.pro
+++ b/tests/auto/dbus/qdbuscontext/qdbuscontext.pro
diff --git a/tests/auto/qdbuscontext/tst_qdbuscontext.cpp b/tests/auto/dbus/qdbuscontext/tst_qdbuscontext.cpp
index 8041708151..8041708151 100644
--- a/tests/auto/qdbuscontext/tst_qdbuscontext.cpp
+++ b/tests/auto/dbus/qdbuscontext/tst_qdbuscontext.cpp
diff --git a/tests/auto/qdbusinterface/.gitignore b/tests/auto/dbus/qdbusinterface/.gitignore
index 98313ecf04..98313ecf04 100644
--- a/tests/auto/qdbusinterface/.gitignore
+++ b/tests/auto/dbus/qdbusinterface/.gitignore
diff --git a/tests/auto/qdbusinterface/myobject.h b/tests/auto/dbus/qdbusinterface/myobject.h
index 3959823a77..3959823a77 100644
--- a/tests/auto/qdbusinterface/myobject.h
+++ b/tests/auto/dbus/qdbusinterface/myobject.h
diff --git a/tests/auto/qdbusinterface/qdbusinterface.pro b/tests/auto/dbus/qdbusinterface/qdbusinterface.pro
index 0aca06ceb4..0aca06ceb4 100644
--- a/tests/auto/qdbusinterface/qdbusinterface.pro
+++ b/tests/auto/dbus/qdbusinterface/qdbusinterface.pro
diff --git a/tests/auto/qdbusinterface/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp
index dd15012222..dd15012222 100644
--- a/tests/auto/qdbusinterface/qmyserver/qmyserver.cpp
+++ b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp
diff --git a/tests/auto/qdbusinterface/qmyserver/qmyserver.pro b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.pro
index f4fe02c4eb..f4fe02c4eb 100644
--- a/tests/auto/qdbusinterface/qmyserver/qmyserver.pro
+++ b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.pro
diff --git a/tests/auto/qdbusinterface/test/test.pro b/tests/auto/dbus/qdbusinterface/test/test.pro
index 2ef7a89c56..2ef7a89c56 100644
--- a/tests/auto/qdbusinterface/test/test.pro
+++ b/tests/auto/dbus/qdbusinterface/test/test.pro
diff --git a/tests/auto/qdbusinterface/tst_qdbusinterface.cpp b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp
index 9156818158..9156818158 100644
--- a/tests/auto/qdbusinterface/tst_qdbusinterface.cpp
+++ b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp
diff --git a/tests/auto/qdbuslocalcalls/.gitignore b/tests/auto/dbus/qdbuslocalcalls/.gitignore
index 15bdea69c0..15bdea69c0 100644
--- a/tests/auto/qdbuslocalcalls/.gitignore
+++ b/tests/auto/dbus/qdbuslocalcalls/.gitignore
diff --git a/tests/auto/qdbuslocalcalls/qdbuslocalcalls.pro b/tests/auto/dbus/qdbuslocalcalls/qdbuslocalcalls.pro
index cef3ddcb28..cef3ddcb28 100644
--- a/tests/auto/qdbuslocalcalls/qdbuslocalcalls.pro
+++ b/tests/auto/dbus/qdbuslocalcalls/qdbuslocalcalls.pro
diff --git a/tests/auto/qdbuslocalcalls/tst_qdbuslocalcalls.cpp b/tests/auto/dbus/qdbuslocalcalls/tst_qdbuslocalcalls.cpp
index c89fd7dde4..c89fd7dde4 100644
--- a/tests/auto/qdbuslocalcalls/tst_qdbuslocalcalls.cpp
+++ b/tests/auto/dbus/qdbuslocalcalls/tst_qdbuslocalcalls.cpp
diff --git a/tests/auto/qdbusmarshall/.gitignore b/tests/auto/dbus/qdbusmarshall/.gitignore
index d227388521..d227388521 100644
--- a/tests/auto/qdbusmarshall/.gitignore
+++ b/tests/auto/dbus/qdbusmarshall/.gitignore
diff --git a/tests/auto/qdbusmarshall/common.h b/tests/auto/dbus/qdbusmarshall/common.h
index 35fe5f1bf7..35fe5f1bf7 100644
--- a/tests/auto/qdbusmarshall/common.h
+++ b/tests/auto/dbus/qdbusmarshall/common.h
diff --git a/tests/auto/qdbusmarshall/dummy.cpp b/tests/auto/dbus/qdbusmarshall/dummy.cpp
index 0b403c3585..0b403c3585 100644
--- a/tests/auto/qdbusmarshall/dummy.cpp
+++ b/tests/auto/dbus/qdbusmarshall/dummy.cpp
diff --git a/tests/auto/qdbusmarshall/qdbusmarshall.pro b/tests/auto/dbus/qdbusmarshall/qdbusmarshall.pro
index 1b6408a2f9..1b6408a2f9 100644
--- a/tests/auto/qdbusmarshall/qdbusmarshall.pro
+++ b/tests/auto/dbus/qdbusmarshall/qdbusmarshall.pro
diff --git a/tests/auto/qdbusmarshall/qpong/qpong.cpp b/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp
index fce6f59344..fce6f59344 100644
--- a/tests/auto/qdbusmarshall/qpong/qpong.cpp
+++ b/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp
diff --git a/tests/auto/qdbusmarshall/qpong/qpong.pro b/tests/auto/dbus/qdbusmarshall/qpong/qpong.pro
index 5cd9acdc1c..5cd9acdc1c 100644
--- a/tests/auto/qdbusmarshall/qpong/qpong.pro
+++ b/tests/auto/dbus/qdbusmarshall/qpong/qpong.pro
diff --git a/tests/auto/qdbusmarshall/test/test.pro b/tests/auto/dbus/qdbusmarshall/test/test.pro
index ba4d99b57d..ba4d99b57d 100644
--- a/tests/auto/qdbusmarshall/test/test.pro
+++ b/tests/auto/dbus/qdbusmarshall/test/test.pro
diff --git a/tests/auto/qdbusmarshall/tst_qdbusmarshall.cpp b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
index cca212e278..cca212e278 100644
--- a/tests/auto/qdbusmarshall/tst_qdbusmarshall.cpp
+++ b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
diff --git a/tests/auto/qdbusmetaobject/.gitignore b/tests/auto/dbus/qdbusmetaobject/.gitignore
index 6696c0def7..6696c0def7 100644
--- a/tests/auto/qdbusmetaobject/.gitignore
+++ b/tests/auto/dbus/qdbusmetaobject/.gitignore
diff --git a/tests/auto/qdbusmetaobject/qdbusmetaobject.pro b/tests/auto/dbus/qdbusmetaobject/qdbusmetaobject.pro
index fa59c06c8e..fa59c06c8e 100644
--- a/tests/auto/qdbusmetaobject/qdbusmetaobject.pro
+++ b/tests/auto/dbus/qdbusmetaobject/qdbusmetaobject.pro
diff --git a/tests/auto/qdbusmetaobject/tst_qdbusmetaobject.cpp b/tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp
index 7711e819a0..7711e819a0 100644
--- a/tests/auto/qdbusmetaobject/tst_qdbusmetaobject.cpp
+++ b/tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp
diff --git a/tests/auto/qdbusmetatype/.gitignore b/tests/auto/dbus/qdbusmetatype/.gitignore
index 75de5c26cf..75de5c26cf 100644
--- a/tests/auto/qdbusmetatype/.gitignore
+++ b/tests/auto/dbus/qdbusmetatype/.gitignore
diff --git a/tests/auto/qdbusmetatype/qdbusmetatype.pro b/tests/auto/dbus/qdbusmetatype/qdbusmetatype.pro
index da8fbec01a..da8fbec01a 100644
--- a/tests/auto/qdbusmetatype/qdbusmetatype.pro
+++ b/tests/auto/dbus/qdbusmetatype/qdbusmetatype.pro
diff --git a/tests/auto/qdbusmetatype/tst_qdbusmetatype.cpp b/tests/auto/dbus/qdbusmetatype/tst_qdbusmetatype.cpp
index 7e1f651a1b..7e1f651a1b 100644
--- a/tests/auto/qdbusmetatype/tst_qdbusmetatype.cpp
+++ b/tests/auto/dbus/qdbusmetatype/tst_qdbusmetatype.cpp
diff --git a/tests/auto/qdbuspendingcall/.gitignore b/tests/auto/dbus/qdbuspendingcall/.gitignore
index a216d5804a..a216d5804a 100644
--- a/tests/auto/qdbuspendingcall/.gitignore
+++ b/tests/auto/dbus/qdbuspendingcall/.gitignore
diff --git a/tests/auto/qdbuspendingcall/qdbuspendingcall.pro b/tests/auto/dbus/qdbuspendingcall/qdbuspendingcall.pro
index 74708c8103..74708c8103 100644
--- a/tests/auto/qdbuspendingcall/qdbuspendingcall.pro
+++ b/tests/auto/dbus/qdbuspendingcall/qdbuspendingcall.pro
diff --git a/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp b/tests/auto/dbus/qdbuspendingcall/tst_qdbuspendingcall.cpp
index 7bdf9c561b..7bdf9c561b 100644
--- a/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
+++ b/tests/auto/dbus/qdbuspendingcall/tst_qdbuspendingcall.cpp
diff --git a/tests/auto/qdbuspendingreply/.gitignore b/tests/auto/dbus/qdbuspendingreply/.gitignore
index d2537acca6..d2537acca6 100644
--- a/tests/auto/qdbuspendingreply/.gitignore
+++ b/tests/auto/dbus/qdbuspendingreply/.gitignore
diff --git a/tests/auto/qdbuspendingreply/qdbuspendingreply.pro b/tests/auto/dbus/qdbuspendingreply/qdbuspendingreply.pro
index c649e4aaf5..c649e4aaf5 100644
--- a/tests/auto/qdbuspendingreply/qdbuspendingreply.pro
+++ b/tests/auto/dbus/qdbuspendingreply/qdbuspendingreply.pro
diff --git a/tests/auto/qdbuspendingreply/tst_qdbuspendingreply.cpp b/tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp
index 18177181fb..18177181fb 100644
--- a/tests/auto/qdbuspendingreply/tst_qdbuspendingreply.cpp
+++ b/tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp
diff --git a/tests/auto/qdbusreply/.gitignore b/tests/auto/dbus/qdbusreply/.gitignore
index 886db18592..886db18592 100644
--- a/tests/auto/qdbusreply/.gitignore
+++ b/tests/auto/dbus/qdbusreply/.gitignore
diff --git a/tests/auto/qdbusreply/qdbusreply.pro b/tests/auto/dbus/qdbusreply/qdbusreply.pro
index c96116c0ab..c96116c0ab 100644
--- a/tests/auto/qdbusreply/qdbusreply.pro
+++ b/tests/auto/dbus/qdbusreply/qdbusreply.pro
diff --git a/tests/auto/qdbusreply/tst_qdbusreply.cpp b/tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp
index 8d18657c56..8d18657c56 100644
--- a/tests/auto/qdbusreply/tst_qdbusreply.cpp
+++ b/tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp
diff --git a/tests/auto/qdbusservicewatcher/qdbusservicewatcher.pro b/tests/auto/dbus/qdbusservicewatcher/qdbusservicewatcher.pro
index 4970f16863..4970f16863 100644
--- a/tests/auto/qdbusservicewatcher/qdbusservicewatcher.pro
+++ b/tests/auto/dbus/qdbusservicewatcher/qdbusservicewatcher.pro
diff --git a/tests/auto/qdbusservicewatcher/tst_qdbusservicewatcher.cpp b/tests/auto/dbus/qdbusservicewatcher/tst_qdbusservicewatcher.cpp
index 99aeefa8ee..99aeefa8ee 100644
--- a/tests/auto/qdbusservicewatcher/tst_qdbusservicewatcher.cpp
+++ b/tests/auto/dbus/qdbusservicewatcher/tst_qdbusservicewatcher.cpp
diff --git a/tests/auto/qdbusthreading/.gitignore b/tests/auto/dbus/qdbusthreading/.gitignore
index 70c71f3ab7..70c71f3ab7 100644
--- a/tests/auto/qdbusthreading/.gitignore
+++ b/tests/auto/dbus/qdbusthreading/.gitignore
diff --git a/tests/auto/qdbusthreading/qdbusthreading.pro b/tests/auto/dbus/qdbusthreading/qdbusthreading.pro
index e239e9861e..e239e9861e 100644
--- a/tests/auto/qdbusthreading/qdbusthreading.pro
+++ b/tests/auto/dbus/qdbusthreading/qdbusthreading.pro
diff --git a/tests/auto/qdbusthreading/tst_qdbusthreading.cpp b/tests/auto/dbus/qdbusthreading/tst_qdbusthreading.cpp
index e37e4c3ae7..e37e4c3ae7 100644
--- a/tests/auto/qdbusthreading/tst_qdbusthreading.cpp
+++ b/tests/auto/dbus/qdbusthreading/tst_qdbusthreading.cpp
diff --git a/tests/auto/qdbustype/qdbustype.pro b/tests/auto/dbus/qdbustype/qdbustype.pro
index 9b6808b562..9b6808b562 100644
--- a/tests/auto/qdbustype/qdbustype.pro
+++ b/tests/auto/dbus/qdbustype/qdbustype.pro
diff --git a/tests/auto/qdbustype/tst_qdbustype.cpp b/tests/auto/dbus/qdbustype/tst_qdbustype.cpp
index 5c46b4684a..5c46b4684a 100644
--- a/tests/auto/qdbustype/tst_qdbustype.cpp
+++ b/tests/auto/dbus/qdbustype/tst_qdbustype.cpp
diff --git a/tests/auto/qdbusxmlparser/.gitignore b/tests/auto/dbus/qdbusxmlparser/.gitignore
index e6a1cd4700..e6a1cd4700 100644
--- a/tests/auto/qdbusxmlparser/.gitignore
+++ b/tests/auto/dbus/qdbusxmlparser/.gitignore
diff --git a/tests/auto/qdbusxmlparser/qdbusxmlparser.pro b/tests/auto/dbus/qdbusxmlparser/qdbusxmlparser.pro
index 0ac0d9e198..0ac0d9e198 100644
--- a/tests/auto/qdbusxmlparser/qdbusxmlparser.pro
+++ b/tests/auto/dbus/qdbusxmlparser/qdbusxmlparser.pro
diff --git a/tests/auto/qdbusxmlparser/tst_qdbusxmlparser.cpp b/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp
index e0f03307f3..e0f03307f3 100644
--- a/tests/auto/qdbusxmlparser/tst_qdbusxmlparser.cpp
+++ b/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp
diff --git a/tests/auto/exceptionsafety_objects/exceptionsafety_objects.pro b/tests/auto/exceptionsafety_objects/exceptionsafety_objects.pro
index 3f773c76f8..d09c349215 100644
--- a/tests/auto/exceptionsafety_objects/exceptionsafety_objects.pro
+++ b/tests/auto/exceptionsafety_objects/exceptionsafety_objects.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
HEADERS += oomsimulator.h 3rdparty/valgrind.h 3rdparty/memcheck.h
SOURCES += tst_exceptionsafety_objects.cpp
diff --git a/tests/auto/gestures/gestures.pro b/tests/auto/gestures/gestures.pro
index da5610f2f6..43ae4a3fa1 100644
--- a/tests/auto/gestures/gestures.pro
+++ b/tests/auto/gestures/gestures.pro
@@ -1,5 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_gestures.cpp
-
-
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/gui.pro b/tests/auto/gui.pro
index 765d522f1c..aad48cddef 100644
--- a/tests/auto/gui.pro
+++ b/tests/auto/gui.pro
@@ -5,28 +5,24 @@
#
TEMPLATE=subdirs
SUBDIRS=\
+ gui \
gestures \
languagechange \
modeltest \
qabstractbutton \
- qabstractitemmodel \
qabstractitemview \
qabstractprintdialog \
qabstractproxymodel \
qabstractscrollarea \
qabstractslider \
qabstractspinbox \
- qabstracttextdocumentlayout \
qaction \
qactiongroup \
qapplication \
qboxlayout \
- qbrush \
qbuttongroup \
qcalendarwidget \
qcheckbox \
- qclipboard \
- qcolor \
qcolordialog \
qcolumnview \
qcommandlinkbutton \
@@ -34,7 +30,6 @@ SUBDIRS=\
qcomplextext \
qdatawidgetmapper \
qdatetimeedit \
- qdesktopservices \
qdesktopwidget \
qdial \
qdialog \
@@ -43,22 +38,15 @@ SUBDIRS=\
qdockwidget \
qdoublespinbox \
qdoublevalidator \
- qdrag \
qerrormessage \
- qfile \
qfiledialog \
qfiledialog2 \
qfileiconprovider \
- qfileopenevent \
qfilesystemmodel \
qfocusframe \
- qfont \
qfontcombobox \
- qfontdatabase \
qfontdialog \
- qfontmetrics \
qformlayout \
- qglyphrun \
qgraphicsanchorlayout \
qgraphicsanchorlayout1 \
qgraphicseffect \
@@ -80,14 +68,8 @@ SUBDIRS=\
qgraphicswidget \
qgridlayout \
qgroupbox \
- qguivariant \
qheaderview \
- qicoimageformat \
- qicon \
qidentityproxymodel \
- qimageiohandler \
- qimagereader \
- qimagewriter \
qinputcontext \
qinputdialog \
qintvalidator \
@@ -95,58 +77,28 @@ SUBDIRS=\
qitemeditorfactory \
qitemselectionmodel \
qitemview \
- qkeysequence \
qlabel \
qlcdnumber \
qlineedit \
- qlist \
qlistview \
qlistwidget \
- qlocale \
- #qlocalsocket \ # FIXME: uses qtscript (QTBUG-19242)
qmacstyle \
qmainwindow \
- qmatrixnxn \
qmdisubwindow \
qmessagebox \
- qmetaobject \
- qmimedata \
- qmouseevent_modal \
- qmovie \
- qvolatileimage \
qnetworkaccessmanager_and_qprogressdialog \
- qpaintengine \
- qpainterpath \
- qpainterpathstroker \
- qpalette \
- qparallelanimationgroup \
- qpathclipper \
- qpauseanimation \
- qpen \
- qpicture \
- qpixmapcache \
- qpixmapfilter \
+ qopengl \
qplaintextedit \
- qpointer \
- qpolygon \
- qprinterinfo \
- qprocess \
qprogressbar \
qprogressdialog \
- qpropertyanimation \
qpushbutton \
- qquaternion \
qradiobutton \
- qrawfont \
qregexpvalidator \
- qregion \
qscrollarea \
qscrollbar \
qscroller \
qsharedpointer_and_qwidget \
- qshortcut \
qsidebar \
- qsignalmapper \
qsizegrip \
qslider \
qsortfilterproxymodel \
@@ -156,52 +108,28 @@ SUBDIRS=\
qstackedwidget \
qstandarditem \
qstandarditemmodel \
- qstatemachine \
- qstatictext \
qstatusbar \
qstringlistmodel \
qstyle \
qstyleoption \
qstylesheetstyle \
- qsyntaxhighlighter \
qsystemtrayicon \
qtabbar \
qtableview \
qtablewidget \
- qtcpsocket \
- qtessellator \
- qtextblock \
- qtextcodec \
- qtextcursor \
- qtextdocumentfragment \
- qtextdocumentlayout \
- qtextformat \
- qtextlayout \
- qtextlist \
- qtextobject \
- qtextpiecetable \
- qtextscriptengine \
- qtextstream \
- qtexttable \
- qtipc \
qtoolbar \
qtoolbox \
qtooltip \
- qtouchevent \
- qtransform \
qtransformedscreen \
- qtranslator \
qtreeview \
qtreewidget \
qtreewidgetitemiterator \
qundogroup \
qundostack \
- qvectornd \
qwidget_window \
qwidgetaction \
qwindowsurface \
qwizard \
- qwmatrix \
qwsembedwidget \
qwsinputmethod \
qwswindowsystem \
@@ -222,12 +150,10 @@ win32:SUBDIRS -= qtextpiecetable
qpixmapcache \
qsidebar \
qstylesheetstyle \
- qtcpsocket \
qtextlayout \
qtextpiecetable \
qtipc \
qtoolbar \
- qstatictext \
symbian:SUBDIRS -= \
qsystemtrayicon \
diff --git a/tests/auto/gui/gui.pro b/tests/auto/gui/gui.pro
new file mode 100644
index 0000000000..d54198467d
--- /dev/null
+++ b/tests/auto/gui/gui.pro
@@ -0,0 +1,9 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ image \
+ kernel \
+ math3d \
+ painting \
+ text \
+ util \
+
diff --git a/tests/auto/gui/image/image.pro b/tests/auto/gui/image/image.pro
new file mode 100644
index 0000000000..fe089f5e75
--- /dev/null
+++ b/tests/auto/gui/image/image.pro
@@ -0,0 +1,18 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qimagereader \
+ qicoimageformat \
+ qpixmap \
+ qpixmapcache \
+ qimage \
+ qpixmapfilter \
+ qimageiohandler \
+ qimagewriter \
+ qmovie \
+ qvolatileimage \
+ qicon \
+ qpicture \
+
+!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ qpixmapcache \
+
diff --git a/tests/auto/qicoimageformat/.gitignore b/tests/auto/gui/image/qicoimageformat/.gitignore
index 9f673c5635..9f673c5635 100644
--- a/tests/auto/qicoimageformat/.gitignore
+++ b/tests/auto/gui/image/qicoimageformat/.gitignore
diff --git a/tests/auto/qicoimageformat/icons/invalid/35floppy.ico b/tests/auto/gui/image/qicoimageformat/icons/invalid/35floppy.ico
index 96087612fb..96087612fb 100644
--- a/tests/auto/qicoimageformat/icons/invalid/35floppy.ico
+++ b/tests/auto/gui/image/qicoimageformat/icons/invalid/35floppy.ico
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/35FLOPPY.ICO b/tests/auto/gui/image/qicoimageformat/icons/valid/35FLOPPY.ICO
index e9551d6390..e9551d6390 100644
--- a/tests/auto/qicoimageformat/icons/valid/35FLOPPY.ICO
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/35FLOPPY.ICO
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/AddPerfMon.ico b/tests/auto/gui/image/qicoimageformat/icons/valid/AddPerfMon.ico
index 3368d3634a..3368d3634a 100644
--- a/tests/auto/qicoimageformat/icons/valid/AddPerfMon.ico
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/AddPerfMon.ico
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/App.ico b/tests/auto/gui/image/qicoimageformat/icons/valid/App.ico
index 03b80a68f8..03b80a68f8 100644
--- a/tests/auto/qicoimageformat/icons/valid/App.ico
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/App.ico
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/Obj_N2_Internal_Mem.ico b/tests/auto/gui/image/qicoimageformat/icons/valid/Obj_N2_Internal_Mem.ico
index 8da119efdd..8da119efdd 100644
--- a/tests/auto/qicoimageformat/icons/valid/Obj_N2_Internal_Mem.ico
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/Obj_N2_Internal_Mem.ico
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/Qt.ico b/tests/auto/gui/image/qicoimageformat/icons/valid/Qt.ico
index fef1dee146..fef1dee146 100644
--- a/tests/auto/qicoimageformat/icons/valid/Qt.ico
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/Qt.ico
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/Status_Play.ico b/tests/auto/gui/image/qicoimageformat/icons/valid/Status_Play.ico
index d05782cce9..d05782cce9 100644
--- a/tests/auto/qicoimageformat/icons/valid/Status_Play.ico
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/Status_Play.ico
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/TIMER01.ICO b/tests/auto/gui/image/qicoimageformat/icons/valid/TIMER01.ICO
index 5563beec8c..5563beec8c 100644
--- a/tests/auto/qicoimageformat/icons/valid/TIMER01.ICO
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/TIMER01.ICO
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/WORLD.ico b/tests/auto/gui/image/qicoimageformat/icons/valid/WORLD.ico
index 7a8ab39f56..7a8ab39f56 100644
--- a/tests/auto/qicoimageformat/icons/valid/WORLD.ico
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/WORLD.ico
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/WORLDH.ico b/tests/auto/gui/image/qicoimageformat/icons/valid/WORLDH.ico
index c2b48f8d99..c2b48f8d99 100644
--- a/tests/auto/qicoimageformat/icons/valid/WORLDH.ico
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/WORLDH.ico
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/abcardWindow.ico b/tests/auto/gui/image/qicoimageformat/icons/valid/abcardWindow.ico
index e78a15c42b..e78a15c42b 100644
--- a/tests/auto/qicoimageformat/icons/valid/abcardWindow.ico
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/abcardWindow.ico
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/semitransparent.ico b/tests/auto/gui/image/qicoimageformat/icons/valid/semitransparent.ico
index 893ceb254c..893ceb254c 100644
--- a/tests/auto/qicoimageformat/icons/valid/semitransparent.ico
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/semitransparent.ico
Binary files differ
diff --git a/tests/auto/qicoimageformat/icons/valid/trolltechlogo_tiny.ico b/tests/auto/gui/image/qicoimageformat/icons/valid/trolltechlogo_tiny.ico
index 3e02a53e58..3e02a53e58 100644
--- a/tests/auto/qicoimageformat/icons/valid/trolltechlogo_tiny.ico
+++ b/tests/auto/gui/image/qicoimageformat/icons/valid/trolltechlogo_tiny.ico
Binary files differ
diff --git a/tests/auto/qicoimageformat/qicoimageformat.pro b/tests/auto/gui/image/qicoimageformat/qicoimageformat.pro
index c150c9af9f..c150c9af9f 100644
--- a/tests/auto/qicoimageformat/qicoimageformat.pro
+++ b/tests/auto/gui/image/qicoimageformat/qicoimageformat.pro
diff --git a/tests/auto/qicoimageformat/tst_qicoimageformat.cpp b/tests/auto/gui/image/qicoimageformat/tst_qicoimageformat.cpp
index 3aace12fdb..3aace12fdb 100644
--- a/tests/auto/qicoimageformat/tst_qicoimageformat.cpp
+++ b/tests/auto/gui/image/qicoimageformat/tst_qicoimageformat.cpp
diff --git a/tests/auto/qicon/.gitignore b/tests/auto/gui/image/qicon/.gitignore
index c101ef9d28..c101ef9d28 100644
--- a/tests/auto/qicon/.gitignore
+++ b/tests/auto/gui/image/qicon/.gitignore
diff --git a/tests/auto/qicon/heart.svg b/tests/auto/gui/image/qicon/heart.svg
index 8c982cd93c..8c982cd93c 100644
--- a/tests/auto/qicon/heart.svg
+++ b/tests/auto/gui/image/qicon/heart.svg
diff --git a/tests/auto/qicon/heart.svgz b/tests/auto/gui/image/qicon/heart.svgz
index 0f0913ffa7..0f0913ffa7 100644
--- a/tests/auto/qicon/heart.svgz
+++ b/tests/auto/gui/image/qicon/heart.svgz
Binary files differ
diff --git a/tests/auto/qicon/icons/testtheme/16x16/actions/appointment-new.png b/tests/auto/gui/image/qicon/icons/testtheme/16x16/actions/appointment-new.png
index 18b7c6781e..18b7c6781e 100644
--- a/tests/auto/qicon/icons/testtheme/16x16/actions/appointment-new.png
+++ b/tests/auto/gui/image/qicon/icons/testtheme/16x16/actions/appointment-new.png
Binary files differ
diff --git a/tests/auto/qicon/icons/testtheme/22x22/actions/appointment-new.png b/tests/auto/gui/image/qicon/icons/testtheme/22x22/actions/appointment-new.png
index d676ffd463..d676ffd463 100644
--- a/tests/auto/qicon/icons/testtheme/22x22/actions/appointment-new.png
+++ b/tests/auto/gui/image/qicon/icons/testtheme/22x22/actions/appointment-new.png
Binary files differ
diff --git a/tests/auto/qicon/icons/testtheme/32x32/actions/appointment-new.png b/tests/auto/gui/image/qicon/icons/testtheme/32x32/actions/appointment-new.png
index 85daef3b0b..85daef3b0b 100644
--- a/tests/auto/qicon/icons/testtheme/32x32/actions/appointment-new.png
+++ b/tests/auto/gui/image/qicon/icons/testtheme/32x32/actions/appointment-new.png
Binary files differ
diff --git a/tests/auto/qicon/icons/testtheme/index.theme b/tests/auto/gui/image/qicon/icons/testtheme/index.theme
index e18736ab43..e18736ab43 100644
--- a/tests/auto/qicon/icons/testtheme/index.theme
+++ b/tests/auto/gui/image/qicon/icons/testtheme/index.theme
diff --git a/tests/auto/qicon/icons/testtheme/scalable/actions/svg-only.svg b/tests/auto/gui/image/qicon/icons/testtheme/scalable/actions/svg-only.svg
index 4cb14f82f0..4cb14f82f0 100644
--- a/tests/auto/qicon/icons/testtheme/scalable/actions/svg-only.svg
+++ b/tests/auto/gui/image/qicon/icons/testtheme/scalable/actions/svg-only.svg
diff --git a/tests/auto/qicon/icons/themeparent/16x16/actions/address-book-new.png b/tests/auto/gui/image/qicon/icons/themeparent/16x16/actions/address-book-new.png
index 2098cfdf36..2098cfdf36 100644
--- a/tests/auto/qicon/icons/themeparent/16x16/actions/address-book-new.png
+++ b/tests/auto/gui/image/qicon/icons/themeparent/16x16/actions/address-book-new.png
Binary files differ
diff --git a/tests/auto/qicon/icons/themeparent/16x16/actions/appointment-new.png b/tests/auto/gui/image/qicon/icons/themeparent/16x16/actions/appointment-new.png
index 18b7c6781e..18b7c6781e 100644
--- a/tests/auto/qicon/icons/themeparent/16x16/actions/appointment-new.png
+++ b/tests/auto/gui/image/qicon/icons/themeparent/16x16/actions/appointment-new.png
Binary files differ
diff --git a/tests/auto/qicon/icons/themeparent/22x22/actions/address-book-new.png b/tests/auto/gui/image/qicon/icons/themeparent/22x22/actions/address-book-new.png
index fad446cd92..fad446cd92 100644
--- a/tests/auto/qicon/icons/themeparent/22x22/actions/address-book-new.png
+++ b/tests/auto/gui/image/qicon/icons/themeparent/22x22/actions/address-book-new.png
Binary files differ
diff --git a/tests/auto/qicon/icons/themeparent/22x22/actions/appointment-new.png b/tests/auto/gui/image/qicon/icons/themeparent/22x22/actions/appointment-new.png
index d676ffd463..d676ffd463 100644
--- a/tests/auto/qicon/icons/themeparent/22x22/actions/appointment-new.png
+++ b/tests/auto/gui/image/qicon/icons/themeparent/22x22/actions/appointment-new.png
Binary files differ
diff --git a/tests/auto/qicon/icons/themeparent/32x32/actions/address-book-new.png b/tests/auto/gui/image/qicon/icons/themeparent/32x32/actions/address-book-new.png
index 420139d307..420139d307 100644
--- a/tests/auto/qicon/icons/themeparent/32x32/actions/address-book-new.png
+++ b/tests/auto/gui/image/qicon/icons/themeparent/32x32/actions/address-book-new.png
Binary files differ
diff --git a/tests/auto/qicon/icons/themeparent/32x32/actions/appointment-new.png b/tests/auto/gui/image/qicon/icons/themeparent/32x32/actions/appointment-new.png
index 85daef3b0b..85daef3b0b 100644
--- a/tests/auto/qicon/icons/themeparent/32x32/actions/appointment-new.png
+++ b/tests/auto/gui/image/qicon/icons/themeparent/32x32/actions/appointment-new.png
Binary files differ
diff --git a/tests/auto/qicon/icons/themeparent/index.theme b/tests/auto/gui/image/qicon/icons/themeparent/index.theme
index e536a0bf2f..e536a0bf2f 100644
--- a/tests/auto/qicon/icons/themeparent/index.theme
+++ b/tests/auto/gui/image/qicon/icons/themeparent/index.theme
diff --git a/tests/auto/qicon/icons/themeparent/scalable/actions/address-book-new.svg b/tests/auto/gui/image/qicon/icons/themeparent/scalable/actions/address-book-new.svg
index 600a82c1b0..600a82c1b0 100644
--- a/tests/auto/qicon/icons/themeparent/scalable/actions/address-book-new.svg
+++ b/tests/auto/gui/image/qicon/icons/themeparent/scalable/actions/address-book-new.svg
diff --git a/tests/auto/qicon/icons/themeparent/scalable/actions/appointment-new.svg b/tests/auto/gui/image/qicon/icons/themeparent/scalable/actions/appointment-new.svg
index 4cb14f82f0..4cb14f82f0 100644
--- a/tests/auto/qicon/icons/themeparent/scalable/actions/appointment-new.svg
+++ b/tests/auto/gui/image/qicon/icons/themeparent/scalable/actions/appointment-new.svg
diff --git a/tests/auto/qicon/image.png b/tests/auto/gui/image/qicon/image.png
index 8d703640c1..8d703640c1 100644
--- a/tests/auto/qicon/image.png
+++ b/tests/auto/gui/image/qicon/image.png
Binary files differ
diff --git a/tests/auto/gui/image/qicon/qicon.pro b/tests/auto/gui/image/qicon/qicon.pro
new file mode 100644
index 0000000000..5ce4fd4c2f
--- /dev/null
+++ b/tests/auto/gui/image/qicon/qicon.pro
@@ -0,0 +1,32 @@
+load(qttest_p4)
+
+QT += widgets
+SOURCES += tst_qicon.cpp
+RESOURCES = tst_qicon.qrc
+
+wince* {
+ QT += xml svg
+ addFiles.files += $$_PRO_FILE_PWD_/*.png
+ addFiles.files += $$_PRO_FILE_PWD_/*.svg
+ addFiles.files += $$_PRO_FILE_PWD_/*.svgz
+ addFiles.files += $$_PRO_FILE_PWD_/tst_qicon.cpp
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+
+ DEPLOYMENT_PLUGIN += qsvg
+ DEFINES += SRCDIR=\\\".\\\"
+} else:symbian {
+ QT += xml svg
+ addFiles.files = *.png tst_qicon.cpp *.svg *.svgz
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ qt_not_deployed {
+ plugins.files = qsvgicon.dll
+ plugins.path = iconengines
+ DEPLOYMENT += plugins
+ }
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD\\\"
+}
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qicon/rect.png b/tests/auto/gui/image/qicon/rect.png
index b5d3ecbddf..b5d3ecbddf 100644
--- a/tests/auto/qicon/rect.png
+++ b/tests/auto/gui/image/qicon/rect.png
Binary files differ
diff --git a/tests/auto/qicon/rect.svg b/tests/auto/gui/image/qicon/rect.svg
index 8eb24727be..8eb24727be 100644
--- a/tests/auto/qicon/rect.svg
+++ b/tests/auto/gui/image/qicon/rect.svg
diff --git a/tests/auto/qicon/trash.svg b/tests/auto/gui/image/qicon/trash.svg
index c44e4c75a2..c44e4c75a2 100644
--- a/tests/auto/qicon/trash.svg
+++ b/tests/auto/gui/image/qicon/trash.svg
diff --git a/tests/auto/qicon/tst_qicon.cpp b/tests/auto/gui/image/qicon/tst_qicon.cpp
index 4c430f9435..4c430f9435 100644
--- a/tests/auto/qicon/tst_qicon.cpp
+++ b/tests/auto/gui/image/qicon/tst_qicon.cpp
diff --git a/tests/auto/qicon/tst_qicon.qrc b/tests/auto/gui/image/qicon/tst_qicon.qrc
index 7925a33c84..7925a33c84 100644
--- a/tests/auto/qicon/tst_qicon.qrc
+++ b/tests/auto/gui/image/qicon/tst_qicon.qrc
diff --git a/tests/auto/qimage/.gitignore b/tests/auto/gui/image/qimage/.gitignore
index d8afbffa72..d8afbffa72 100644
--- a/tests/auto/qimage/.gitignore
+++ b/tests/auto/gui/image/qimage/.gitignore
diff --git a/tests/auto/qimage/images/image.bmp b/tests/auto/gui/image/qimage/images/image.bmp
index 39640e43e9..39640e43e9 100644
--- a/tests/auto/qimage/images/image.bmp
+++ b/tests/auto/gui/image/qimage/images/image.bmp
Binary files differ
diff --git a/tests/auto/qimage/images/image.gif b/tests/auto/gui/image/qimage/images/image.gif
index 2c5a7f87e9..2c5a7f87e9 100644
--- a/tests/auto/qimage/images/image.gif
+++ b/tests/auto/gui/image/qimage/images/image.gif
Binary files differ
diff --git a/tests/auto/qimage/images/image.ico b/tests/auto/gui/image/qimage/images/image.ico
index 7312d20f87..7312d20f87 100644
--- a/tests/auto/qimage/images/image.ico
+++ b/tests/auto/gui/image/qimage/images/image.ico
Binary files differ
diff --git a/tests/auto/qimage/images/image.jpg b/tests/auto/gui/image/qimage/images/image.jpg
index 7611322b1b..7611322b1b 100644
--- a/tests/auto/qimage/images/image.jpg
+++ b/tests/auto/gui/image/qimage/images/image.jpg
Binary files differ
diff --git a/tests/auto/qimage/images/image.pbm b/tests/auto/gui/image/qimage/images/image.pbm
index 67e5efa3e9..67e5efa3e9 100644
--- a/tests/auto/qimage/images/image.pbm
+++ b/tests/auto/gui/image/qimage/images/image.pbm
diff --git a/tests/auto/qimage/images/image.pgm b/tests/auto/gui/image/qimage/images/image.pgm
index 443bf40964..443bf40964 100644
--- a/tests/auto/qimage/images/image.pgm
+++ b/tests/auto/gui/image/qimage/images/image.pgm
diff --git a/tests/auto/qimage/images/image.png b/tests/auto/gui/image/qimage/images/image.png
index 7d4890a7ff..7d4890a7ff 100644
--- a/tests/auto/qimage/images/image.png
+++ b/tests/auto/gui/image/qimage/images/image.png
Binary files differ
diff --git a/tests/auto/qimage/images/image.ppm b/tests/auto/gui/image/qimage/images/image.ppm
index 2a5640e189..2a5640e189 100644
--- a/tests/auto/qimage/images/image.ppm
+++ b/tests/auto/gui/image/qimage/images/image.ppm
diff --git a/tests/auto/qimage/images/image.tif b/tests/auto/gui/image/qimage/images/image.tif
index ee0637cf25..ee0637cf25 100644
--- a/tests/auto/qimage/images/image.tif
+++ b/tests/auto/gui/image/qimage/images/image.tif
Binary files differ
diff --git a/tests/auto/qimage/images/image.xbm b/tests/auto/gui/image/qimage/images/image.xbm
index d0e0fcf2c1..d0e0fcf2c1 100644
--- a/tests/auto/qimage/images/image.xbm
+++ b/tests/auto/gui/image/qimage/images/image.xbm
diff --git a/tests/auto/qimage/images/image.xpm b/tests/auto/gui/image/qimage/images/image.xpm
index 264ba401e6..264ba401e6 100644
--- a/tests/auto/qimage/images/image.xpm
+++ b/tests/auto/gui/image/qimage/images/image.xpm
diff --git a/tests/auto/qimage/qimage.pro b/tests/auto/gui/image/qimage/qimage.pro
index b517bc1237..b517bc1237 100644
--- a/tests/auto/qimage/qimage.pro
+++ b/tests/auto/gui/image/qimage/qimage.pro
diff --git a/tests/auto/gui/image/qimage/tst_qimage.cpp b/tests/auto/gui/image/qimage/tst_qimage.cpp
new file mode 100644
index 0000000000..dce2957ae4
--- /dev/null
+++ b/tests/auto/gui/image/qimage/tst_qimage.cpp
@@ -0,0 +1,2014 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qimage.h>
+#include <qimagereader.h>
+#include <qlist.h>
+#include <qmatrix.h>
+#include <stdio.h>
+
+#include <qpainter.h>
+#include <private/qdrawhelper_p.h>
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR ""
+#endif
+
+Q_DECLARE_METATYPE(QImage::Format)
+Q_DECLARE_METATYPE(Qt::GlobalColor)
+
+class tst_QImage : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QImage();
+
+private slots:
+ void swap();
+ void create();
+ void createInvalidXPM();
+ void createFromUChar();
+ void formatHandlersInput_data();
+ void formatHandlersInput();
+
+ void setAlphaChannel_data();
+ void setAlphaChannel();
+
+ void alphaChannel();
+
+ void convertToFormat_data();
+ void convertToFormat();
+
+ void convertToFormatRgb888ToRGB32();
+
+ void createAlphaMask_data();
+ void createAlphaMask();
+#ifndef QT_NO_IMAGE_HEURISTIC_MASK
+ void createHeuristicMask();
+#endif
+
+ void dotsPerMeterZero();
+
+ void convertToFormatPreserveDotsPrMeter();
+#ifndef QT_NO_IMAGE_TEXT
+ void convertToFormatPreserveText();
+#endif
+
+ void rotate_data();
+ void rotate();
+
+ void copy();
+
+ void setPixel_data();
+ void setPixel();
+
+ void setColorCount();
+ void setColor();
+
+ void rasterClipping();
+
+ void pointOverloads();
+ void destructor();
+ void cacheKey();
+
+ void smoothScale();
+ void smoothScale2();
+ void smoothScale3();
+
+ void smoothScaleBig();
+ void smoothScaleAlpha();
+
+ void transformed_data();
+ void transformed();
+ void transformed2();
+
+ void scaled();
+
+ void paintEngine();
+ void setAlphaChannelWhilePainting();
+
+ void smoothScaledSubImage();
+
+ void nullSize_data();
+ void nullSize();
+
+ void premultipliedAlphaConsistency();
+
+ void compareIndexed();
+
+ void fillColor_data();
+ void fillColor();
+
+ void fillColorWithAlpha();
+
+ void rgbSwapped_data();
+ void rgbSwapped();
+
+ void deepCopyWhenPaintingActive();
+ void scaled_QTBUG19157();
+};
+
+tst_QImage::tst_QImage()
+
+{
+}
+
+void tst_QImage::swap()
+{
+ QImage i1( 16, 16, QImage::Format_RGB32 ), i2( 32, 32, QImage::Format_RGB32 );
+ i1.fill( Qt::white );
+ i2.fill( Qt::black );
+ const qint64 i1k = i1.cacheKey();
+ const qint64 i2k = i2.cacheKey();
+ i1.swap(i2);
+ QCOMPARE(i1.cacheKey(), i2k);
+ QCOMPARE(i1.size(), QSize(32,32));
+ QCOMPARE(i2.cacheKey(), i1k);
+ QCOMPARE(i2.size(), QSize(16,16));
+}
+
+// Test if QImage (or any functions called from QImage) throws an
+// exception when creating an extremely large image.
+// QImage::create() should return "false" in this case.
+void tst_QImage::create()
+{
+ bool cr = true;
+#if !defined(Q_WS_QWS) && !defined(Q_OS_WINCE)
+ QT_TRY {
+#endif
+ //QImage image(7000000, 7000000, 8, 256, QImage::IgnoreEndian);
+ QImage image(7000000, 7000000, QImage::Format_Indexed8);
+ image.setColorCount(256);
+ cr = !image.isNull();
+#if !defined(Q_WS_QWS) && !defined(Q_OS_WINCE)
+ } QT_CATCH (...) {
+ }
+#endif
+ QVERIFY( !cr );
+}
+
+void tst_QImage::createInvalidXPM()
+{
+ QTest::ignoreMessage(QtWarningMsg, "QImage::QImage(), XPM is not supported");
+ const char *xpm[] = {""};
+ QImage invalidXPM(xpm);
+ QVERIFY(invalidXPM.isNull());
+}
+
+void tst_QImage::createFromUChar()
+{
+ uchar data[] = {
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ 0xFF,
+#endif
+ 1,1,1, 0xFF, 2,2,2, 0xFF, 3,3,3, 0xFF, 4,4,4,
+#if Q_BYTE_ORDER != Q_BIG_ENDIAN
+ 0xFF,
+#endif
+ };
+
+ // When the data is const, nothing you do to the image will change the source data.
+ QImage i1((const uchar*)data, 2, 2, 8, QImage::Format_RGB32);
+ QCOMPARE(i1.pixel(0,0), 0xFF010101U);
+ QCOMPARE(i1.pixel(1,0), 0xFF020202U);
+ QCOMPARE(i1.pixel(0,1), 0xFF030303U);
+ QCOMPARE(i1.pixel(1,1), 0xFF040404U);
+ {
+ QImage i(i1);
+ i.setPixel(0,0,5);
+ }
+ QCOMPARE(i1.pixel(0,0), 0xFF010101U);
+ QCOMPARE(*(QRgb*)data, 0xFF010101U);
+ *((QRgb*)i1.bits()) = 7U;
+ QCOMPARE(i1.pixel(0,0), 7U);
+ QCOMPARE(*(QRgb*)data, 0xFF010101U);
+
+ // Changing copies should not change the original image or data.
+ {
+ QImage i(i1);
+ i.setPixel(0,0,5);
+ QCOMPARE(*(QRgb*)data, 0xFF010101U);
+ i1.setPixel(0,0,9);
+ QCOMPARE(i1.pixel(0,0), 0xFF000009U);
+ QCOMPARE(i.pixel(0,0), 0xFF000005U);
+ }
+ QCOMPARE(i1.pixel(0,0), 0xFF000009U);
+
+ // When the data is non-const, nothing you do to copies of the image will change the source data,
+ // but changing the image (here via bits()) will change the source data.
+ QImage i2((uchar*)data, 2, 2, 8, QImage::Format_RGB32);
+ QCOMPARE(i2.pixel(0,0), 0xFF010101U);
+ QCOMPARE(i2.pixel(1,0), 0xFF020202U);
+ QCOMPARE(i2.pixel(0,1), 0xFF030303U);
+ QCOMPARE(i2.pixel(1,1), 0xFF040404U);
+ {
+ QImage i(i2);
+ i.setPixel(0,0,5);
+ }
+ QCOMPARE(i2.pixel(0,0), 0xFF010101U);
+ QCOMPARE(*(QRgb*)data, 0xFF010101U);
+ *((QRgb*)i2.bits()) = 7U;
+ QCOMPARE(i2.pixel(0,0), 7U);
+ QCOMPARE(*(QRgb*)data, 7U);
+
+ // Changing the data will change the image in either case.
+ QImage i3((uchar*)data, 2, 2, 8, QImage::Format_RGB32);
+ QImage i4((const uchar*)data, 2, 2, 8, QImage::Format_RGB32);
+ *(QRgb*)data = 6U;
+ QCOMPARE(i3.pixel(0,0), 6U);
+ QCOMPARE(i4.pixel(0,0), 6U);
+}
+
+void tst_QImage::formatHandlersInput_data()
+{
+ QTest::addColumn<QString>("testFormat");
+ QTest::addColumn<QString>("testFile");
+ #ifdef Q_OS_SYMBIAN
+ const QString prefix = QLatin1String(SRCDIR) + "images/";
+ #else
+ const QString prefix = QLatin1String(SRCDIR) + "/images/";
+ #endif
+
+ // add a new line here when a file is added
+ QTest::newRow("ICO") << "ICO" << prefix + "image.ico";
+ QTest::newRow("PNG") << "PNG" << prefix + "image.png";
+ QTest::newRow("GIF") << "GIF" << prefix + "image.gif";
+ QTest::newRow("BMP") << "BMP" << prefix + "image.bmp";
+ QTest::newRow("JPEG") << "JPEG" << prefix + "image.jpg";
+ QTest::newRow("PBM") << "PBM" << prefix + "image.pbm";
+ QTest::newRow("PGM") << "PGM" << prefix + "image.pgm";
+ QTest::newRow("PPM") << "PPM" << prefix + "image.ppm";
+ QTest::newRow("XBM") << "XBM" << prefix + "image.xbm";
+ QTest::newRow("XPM") << "XPM" << prefix + "image.xpm";
+#if defined QTEST_HAVE_TIFF
+ QTest::newRow("TIFF") << "TIFF" << prefix + "image.tif";
+#endif
+}
+
+void tst_QImage::formatHandlersInput()
+{
+ QFETCH(QString, testFormat);
+ QFETCH(QString, testFile);
+ QList<QByteArray> formats = QImageReader::supportedImageFormats();
+ // qDebug("Image input formats : %s", formats.join(" | ").latin1());
+
+ bool formatSupported = false;
+ for (QList<QByteArray>::Iterator it = formats.begin(); it != formats.end(); ++it) {
+ if (*it == testFormat.toLower()) {
+ formatSupported = true;
+ break;
+ }
+ }
+ if (formatSupported) {
+// qDebug(QImage::imageFormat(testFile));
+ QCOMPARE(testFormat.toLatin1().toLower(), QImageReader::imageFormat(testFile));
+ } else {
+ QString msg = "Format not supported : ";
+ QSKIP(QString(msg + testFormat).toLatin1(), SkipSingle);
+ }
+}
+
+void tst_QImage::setAlphaChannel_data()
+{
+ QTest::addColumn<int>("red");
+ QTest::addColumn<int>("green");
+ QTest::addColumn<int>("blue");
+ QTest::addColumn<int>("alpha");
+ QTest::addColumn<bool>("gray");
+
+ QTest::newRow("red at 0%, gray") << 255 << 0 << 0 << 0 << true;
+ QTest::newRow("red at 25%, gray") << 255 << 0 << 0 << 63 << true;
+ QTest::newRow("red at 50%, gray") << 255 << 0 << 0 << 127 << true;
+ QTest::newRow("red at 100%, gray") << 255 << 0 << 0 << 191 << true;
+ QTest::newRow("red at 0%, 32bit") << 255 << 0 << 0 << 0 << false;
+ QTest::newRow("red at 25%, 32bit") << 255 << 0 << 0 << 63 << false;
+ QTest::newRow("red at 50%, 32bit") << 255 << 0 << 0 << 127 << false;
+ QTest::newRow("red at 100%, 32bit") << 255 << 0 << 0 << 191 << false;
+
+ QTest::newRow("green at 0%, gray") << 0 << 255 << 0 << 0 << true;
+ QTest::newRow("green at 25%, gray") << 0 << 255 << 0 << 63 << true;
+ QTest::newRow("green at 50%, gray") << 0 << 255 << 0 << 127 << true;
+ QTest::newRow("green at 100%, gray") << 0 << 255 << 0 << 191 << true;
+ QTest::newRow("green at 0%, 32bit") << 0 << 255 << 0 << 0 << false;
+ QTest::newRow("green at 25%, 32bit") << 0 << 255 << 0 << 63 << false;
+ QTest::newRow("green at 50%, 32bit") << 0 << 255 << 0 << 127 << false;
+ QTest::newRow("green at 100%, 32bit") << 0 << 255 << 0 << 191 << false;
+
+ QTest::newRow("blue at 0%, gray") << 0 << 0 << 255 << 0 << true;
+ QTest::newRow("blue at 25%, gray") << 0 << 0 << 255 << 63 << true;
+ QTest::newRow("blue at 50%, gray") << 0 << 0 << 255 << 127 << true;
+ QTest::newRow("blue at 100%, gray") << 0 << 0 << 255 << 191 << true;
+ QTest::newRow("blue at 0%, 32bit") << 0 << 0 << 255 << 0 << false;
+ QTest::newRow("blue at 25%, 32bit") << 0 << 0 << 255 << 63 << false;
+ QTest::newRow("blue at 50%, 32bit") << 0 << 0 << 255 << 127 << false;
+ QTest::newRow("blue at 100%, 32bit") << 0 << 0 << 255 << 191 << false;
+}
+
+void tst_QImage::setAlphaChannel()
+{
+ QFETCH(int, red);
+ QFETCH(int, green);
+ QFETCH(int, blue);
+ QFETCH(int, alpha);
+ QFETCH(bool, gray);
+
+ int width = 100;
+ int height = 100;
+
+ QImage image(width, height, QImage::Format_RGB32);
+ image.fill(qRgb(red, green, blue));
+
+ // Create the alpha channel
+ QImage alphaChannel;
+ if (gray) {
+ alphaChannel = QImage(width, height, QImage::Format_Indexed8);
+ alphaChannel.setColorCount(256);
+ for (int i=0; i<256; ++i)
+ alphaChannel.setColor(i, qRgb(i, i, i));
+ alphaChannel.fill(alpha);
+ } else {
+ alphaChannel = QImage(width, height, QImage::Format_ARGB32);
+ alphaChannel.fill(qRgb(alpha, alpha, alpha));
+ }
+
+ image.setAlphaChannel(alphaChannel);
+ image = image.convertToFormat(QImage::Format_ARGB32);
+ QVERIFY(image.format() == QImage::Format_ARGB32);
+
+ // alpha of 0 becomes black at a=0 due to premultiplication
+ QRgb pixel = alpha == 0 ? 0 : qRgba(red, green, blue, alpha);
+ bool allPixelsOK = true;
+ for (int y=0; y<height; ++y) {
+ for (int x=0; x<width; ++x) {
+ allPixelsOK &= image.pixel(x, y) == pixel;
+ }
+ }
+ QVERIFY(allPixelsOK);
+
+ QImage outAlpha = image.alphaChannel();
+ QCOMPARE(outAlpha.size(), image.size());
+
+ bool allAlphaOk = true;
+ for (int y=0; y<height; ++y) {
+ for (int x=0; x<width; ++x) {
+ allAlphaOk &= outAlpha.pixelIndex(x, y) == alpha;
+ }
+ }
+ QVERIFY(allAlphaOk);
+
+}
+
+void tst_QImage::alphaChannel()
+{
+ QImage img(10, 10, QImage::Format_Mono);
+ img.setColor(0, Qt::transparent);
+ img.setColor(1, Qt::black);
+ img.fill(0);
+
+ QPainter p(&img);
+ p.fillRect(2, 2, 6, 6, Qt::black);
+ p.end();
+
+ QCOMPARE(img.alphaChannel(), img.convertToFormat(QImage::Format_ARGB32).alphaChannel());
+}
+
+void tst_QImage::convertToFormat_data()
+{
+ QTest::addColumn<int>("inFormat");
+ QTest::addColumn<uint>("inPixel");
+ QTest::addColumn<int>("resFormat");
+ QTest::addColumn<uint>("resPixel");
+
+ QTest::newRow("red rgb32 -> argb32") << int(QImage::Format_RGB32) << 0xffff0000
+ << int(QImage::Format_ARGB32) << 0xffff0000;
+ QTest::newRow("green rgb32 -> argb32") << int(QImage::Format_RGB32) << 0xff00ff00
+ << int(QImage::Format_ARGB32) << 0xff00ff00;
+ QTest::newRow("blue rgb32 -> argb32") << int(QImage::Format_RGB32) << 0xff0000ff
+ << int(QImage::Format_ARGB32) << 0xff0000ff;
+
+ QTest::newRow("red rgb32 -> rgb16") << int(QImage::Format_RGB32) << 0xffff0000
+ << int(QImage::Format_RGB16) << 0xffff0000;
+ QTest::newRow("green rgb32 -> rgb16") << int(QImage::Format_RGB32) << 0xff00ff00
+ << int(QImage::Format_RGB16) << 0xff00ff00;
+ QTest::newRow("blue rgb32 -> rgb16") << int(QImage::Format_RGB32) << 0xff0000ff
+ << int(QImage::Format_RGB16) << 0xff0000ff;
+ QTest::newRow("funky rgb32 -> rgb16") << int(QImage::Format_RGB32) << 0xfff0c080
+ << int(QImage::Format_RGB16) << 0xfff7c384;
+
+ QTest::newRow("red rgb32 -> argb32_pm") << int(QImage::Format_RGB32) << 0xffff0000
+ << int(QImage::Format_ARGB32_Premultiplied) << 0xffff0000;
+ QTest::newRow("green rgb32 -> argb32_pm") << int(QImage::Format_RGB32) << 0xff00ff00
+ << int(QImage::Format_ARGB32_Premultiplied) <<0xff00ff00;
+ QTest::newRow("blue rgb32 -> argb32_pm") << int(QImage::Format_RGB32) << 0xff0000ff
+ << int(QImage::Format_ARGB32_Premultiplied) << 0xff0000ff;
+
+ QTest::newRow("semired argb32 -> pm") << int(QImage::Format_ARGB32) << 0x7fff0000u
+ << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u;
+ QTest::newRow("semigreen argb32 -> pm") << int(QImage::Format_ARGB32) << 0x7f00ff00u
+ << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u;
+ QTest::newRow("semiblue argb32 -> pm") << int(QImage::Format_ARGB32) << 0x7f0000ffu
+ << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu;
+ QTest::newRow("semiwhite argb32 -> pm") << int(QImage::Format_ARGB32) << 0x7fffffffu
+ << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu;
+ QTest::newRow("semiblack argb32 -> pm") << int(QImage::Format_ARGB32) << 0x7f000000u
+ << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u;
+
+ QTest::newRow("semired pm -> argb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
+ << int(QImage::Format_ARGB32) << 0x7fff0000u;
+ QTest::newRow("semigreen pm -> argb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
+ << int(QImage::Format_ARGB32) << 0x7f00ff00u;
+ QTest::newRow("semiblue pm -> argb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
+ << int(QImage::Format_ARGB32) << 0x7f0000ffu;
+ QTest::newRow("semiwhite pm -> argb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
+ << int(QImage::Format_ARGB32) << 0x7fffffffu;
+ QTest::newRow("semiblack pm -> argb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
+ << int(QImage::Format_ARGB32) << 0x7f000000u;
+
+ QTest::newRow("semired pm -> rgb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
+ << int(QImage::Format_RGB32) << 0xffff0000u;
+ QTest::newRow("semigreen pm -> rgb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
+ << int(QImage::Format_RGB32) << 0xff00ff00u;
+ QTest::newRow("semiblue pm -> rgb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
+ << int(QImage::Format_RGB32) << 0xff0000ffu;
+ QTest::newRow("semiwhite pm -> rgb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
+ << int(QImage::Format_RGB32) << 0xffffffffu;
+ QTest::newRow("semiblack pm -> rgb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
+ << int(QImage::Format_RGB32) << 0xff000000u;
+
+ QTest::newRow("semired argb32 -> rgb32") << int(QImage::Format_ARGB32) << 0x7fff0000u
+ << int(QImage::Format_RGB32) << 0xffff0000u;
+ QTest::newRow("semigreen argb32 -> rgb32") << int(QImage::Format_ARGB32) << 0x7f00ff00u
+ << int(QImage::Format_RGB32) << 0xff00ff00u;
+ QTest::newRow("semiblue argb32 -> rgb32") << int(QImage::Format_ARGB32) << 0x7f0000ffu
+ << int(QImage::Format_RGB32) << 0xff0000ffu;
+ QTest::newRow("semiwhite argb -> rgb32") << int(QImage::Format_ARGB32) << 0x7fffffffu
+ << int(QImage::Format_RGB32) << 0xffffffffu;
+ QTest::newRow("semiblack argb -> rgb32") << int(QImage::Format_ARGB32) << 0x7f000000u
+ << int(QImage::Format_RGB32) << 0xff000000u;
+
+ QTest::newRow("black mono -> rgb32") << int(QImage::Format_Mono) << 0x00000000u
+ << int(QImage::Format_RGB32) << 0xff000000u;
+
+ QTest::newRow("white mono -> rgb32") << int(QImage::Format_Mono) << 0x00000001u
+ << int(QImage::Format_RGB32) << 0xffffffffu;
+ QTest::newRow("red rgb16 -> argb32") << int(QImage::Format_RGB16) << 0xffff0000
+ << int(QImage::Format_ARGB32) << 0xffff0000;
+ QTest::newRow("green rgb16 -> argb32") << int(QImage::Format_RGB16) << 0xff00ff00
+ << int(QImage::Format_ARGB32) << 0xff00ff00;
+ QTest::newRow("blue rgb16 -> argb32") << int(QImage::Format_RGB16) << 0xff0000ff
+ << int(QImage::Format_ARGB32) << 0xff0000ff;
+ QTest::newRow("red rgb16 -> rgb16") << int(QImage::Format_RGB32) << 0xffff0000
+ << int(QImage::Format_RGB16) << 0xffff0000;
+ QTest::newRow("green rgb16 -> rgb16") << int(QImage::Format_RGB32) << 0xff00ff00
+ << int(QImage::Format_RGB16) << 0xff00ff00;
+ QTest::newRow("blue rgb16 -> rgb16") << int(QImage::Format_RGB32) << 0xff0000ff
+ << int(QImage::Format_RGB16) << 0xff0000ff;
+ QTest::newRow("semired argb32 -> rgb16") << int(QImage::Format_ARGB32) << 0x7fff0000u
+ << int(QImage::Format_RGB16) << 0xffff0000;
+ QTest::newRow("semigreen argb32 -> rgb16") << int(QImage::Format_ARGB32) << 0x7f00ff00u
+ << int(QImage::Format_RGB16) << 0xff00ff00;
+ QTest::newRow("semiblue argb32 -> rgb16") << int(QImage::Format_ARGB32) << 0x7f0000ffu
+ << int(QImage::Format_RGB16) << 0xff0000ff;
+ QTest::newRow("semired pm -> rgb16") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
+ << int(QImage::Format_RGB16) << 0xffff0000u;
+
+ QTest::newRow("semigreen pm -> rgb16") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
+ << int(QImage::Format_RGB16) << 0xff00ff00u;
+ QTest::newRow("semiblue pm -> rgb16") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
+ << int(QImage::Format_RGB16) << 0xff0000ffu;
+ QTest::newRow("semiwhite pm -> rgb16") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
+ << int(QImage::Format_RGB16) << 0xffffffffu;
+ QTest::newRow("semiblack pm -> rgb16") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
+ << int(QImage::Format_RGB16) << 0xff000000u;
+
+ QTest::newRow("mono -> mono lsb") << int(QImage::Format_Mono) << 1u
+ << int(QImage::Format_MonoLSB) << 0xffffffffu;
+ QTest::newRow("mono lsb -> mono") << int(QImage::Format_MonoLSB) << 1u
+ << int(QImage::Format_Mono) << 0xffffffffu;
+
+ QTest::newRow("red rgb32 -> rgb666") << int(QImage::Format_RGB32) << 0xffff0000
+ << int(QImage::Format_RGB666) << 0xffff0000;
+ QTest::newRow("green rgb32 -> rgb666") << int(QImage::Format_RGB32) << 0xff00ff00
+ << int(QImage::Format_RGB666) << 0xff00ff00;
+ QTest::newRow("blue rgb32 -> rgb666") << int(QImage::Format_RGB32) << 0xff0000ff
+ << int(QImage::Format_RGB666) << 0xff0000ff;
+
+ QTest::newRow("red rgb16 -> rgb666") << int(QImage::Format_RGB16) << 0xffff0000
+ << int(QImage::Format_RGB666) << 0xffff0000;
+ QTest::newRow("green rgb16 -> rgb666") << int(QImage::Format_RGB16) << 0xff00ff00
+ << int(QImage::Format_RGB666) << 0xff00ff00;
+ QTest::newRow("blue rgb16 -> rgb666") << int(QImage::Format_RGB16) << 0xff0000ff
+ << int(QImage::Format_RGB666) << 0xff0000ff;
+
+ QTest::newRow("red rgb32 -> rgb15") << int(QImage::Format_RGB32) << 0xffff0000
+ << int(QImage::Format_RGB555) << 0xffff0000;
+ QTest::newRow("green rgb32 -> rgb15") << int(QImage::Format_RGB32) << 0xff00ff00
+ << int(QImage::Format_RGB555) << 0xff00ff00;
+ QTest::newRow("blue rgb32 -> rgb15") << int(QImage::Format_RGB32) << 0xff0000ff
+ << int(QImage::Format_RGB555) << 0xff0000ff;
+ QTest::newRow("funky rgb32 -> rgb15") << int(QImage::Format_RGB32) << 0xfff0c080
+ << int(QImage::Format_RGB555) << 0xfff7c684;
+
+ QTest::newRow("red rgb16 -> rgb15") << int(QImage::Format_RGB16) << 0xffff0000
+ << int(QImage::Format_RGB555) << 0xffff0000;
+ QTest::newRow("green rgb16 -> rgb15") << int(QImage::Format_RGB16) << 0xff00ff00
+ << int(QImage::Format_RGB555) << 0xff00ff00;
+ QTest::newRow("blue rgb16 -> rgb15") << int(QImage::Format_RGB16) << 0xff0000ff
+ << int(QImage::Format_RGB555) << 0xff0000ff;
+ QTest::newRow("funky rgb16 -> rgb15") << int(QImage::Format_RGB16) << 0xfff0c080
+ << int(QImage::Format_RGB555) << 0xfff7c684;
+
+ QTest::newRow("red rgb32 -> argb8565") << int(QImage::Format_RGB32) << 0xffff0000
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0xffff0000;
+ QTest::newRow("green rgb32 -> argb8565") << int(QImage::Format_RGB32) << 0xff00ff00
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0xff00ff00;
+ QTest::newRow("blue rgb32 -> argb8565") << int(QImage::Format_RGB32) << 0xff0000ff
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0xff0000ff;
+
+ QTest::newRow("red rgb16 -> argb8565") << int(QImage::Format_RGB16) << 0xffff0000
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0xffff0000;
+ QTest::newRow("green rgb16 -> argb8565") << int(QImage::Format_RGB16) << 0xff00ff00
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0xff00ff00;
+ QTest::newRow("blue rgb16 -> argb8565") << int(QImage::Format_RGB16) << 0xff0000ff
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0xff0000ff;
+
+ QTest::newRow("red argb8565 -> argb32") << int(QImage::Format_ARGB8565_Premultiplied) << 0xffff0000
+ << int(QImage::Format_ARGB32) << 0xffff0000;
+ QTest::newRow("green argb8565 -> argb32") << int(QImage::Format_ARGB8565_Premultiplied) << 0xff00ff00
+ << int(QImage::Format_ARGB32) << 0xff00ff00;
+ QTest::newRow("blue argb8565 -> argb32") << int(QImage::Format_ARGB8565_Premultiplied) << 0xff0000ff
+ << int(QImage::Format_ARGB32) << 0xff0000ff;
+
+ QTest::newRow("semired argb32 -> argb8565") << int(QImage::Format_ARGB32) << 0x7fff0000u
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f7b0000u;
+ QTest::newRow("semigreen argb32 -> argb8565") << int(QImage::Format_ARGB32) << 0x7f00ff00u
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f007d00u;
+ QTest::newRow("semiblue argb32 -> argb8565") << int(QImage::Format_ARGB32) << 0x7f0000ffu
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f00007bu;
+
+ QTest::newRow("semired pm -> argb8565") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f7b0000u;
+ QTest::newRow("semigreen pm -> argb8565") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f007d00u;
+ QTest::newRow("semiblue pm -> argb8565") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f00007bu;
+ QTest::newRow("semiwhite pm -> argb8565") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f7b7d7bu;
+ QTest::newRow("semiblack pm -> argb8565") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
+ << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f000000u;
+
+ QTest::newRow("red rgb666 -> argb32") << int(QImage::Format_RGB666) << 0xffff0000
+ << int(QImage::Format_ARGB32) << 0xffff0000;
+ QTest::newRow("green rgb666 -> argb32") << int(QImage::Format_RGB666) << 0xff00ff00
+ << int(QImage::Format_ARGB32) << 0xff00ff00;
+ QTest::newRow("blue rgb666 -> argb32") << int(QImage::Format_RGB666) << 0xff0000ff
+ << int(QImage::Format_ARGB32) << 0xff0000ff;
+
+ QTest::newRow("semired argb32 -> rgb666") << int(QImage::Format_ARGB32) << 0x7fff0000u
+ << int(QImage::Format_RGB666) << 0xffff0000;
+ QTest::newRow("semigreen argb32 -> rgb666") << int(QImage::Format_ARGB32) << 0x7f00ff00u
+ << int(QImage::Format_RGB666) << 0xff00ff00;
+ QTest::newRow("semiblue argb32 -> rgb666") << int(QImage::Format_ARGB32) << 0x7f0000ffu
+ << int(QImage::Format_RGB666) << 0xff0000ff;
+
+ QTest::newRow("semired pm -> rgb666") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
+ << int(QImage::Format_RGB666) << 0xffff0000u;
+ QTest::newRow("semigreen pm -> rgb666") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
+ << int(QImage::Format_RGB666) << 0xff00ff00u;
+ QTest::newRow("semiblue pm -> rgb666") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
+ << int(QImage::Format_RGB666) << 0xff0000ffu;
+ QTest::newRow("semiwhite pm -> rgb666") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
+ << int(QImage::Format_RGB666) << 0xffffffffu;
+ QTest::newRow("semiblack pm -> rgb666") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
+ << int(QImage::Format_RGB666) << 0xff000000u;
+
+ QTest::newRow("red rgb15 -> argb32") << int(QImage::Format_RGB555) << 0xffff0000
+ << int(QImage::Format_ARGB32) << 0xffff0000;
+ QTest::newRow("green rgb15 -> argb32") << int(QImage::Format_RGB555) << 0xff00ff00
+ << int(QImage::Format_ARGB32) << 0xff00ff00;
+ QTest::newRow("blue rgb15 -> argb32") << int(QImage::Format_RGB555) << 0xff0000ff
+ << int(QImage::Format_ARGB32) << 0xff0000ff;
+
+ QTest::newRow("semired argb32 -> rgb15") << int(QImage::Format_ARGB32) << 0x7fff0000u
+ << int(QImage::Format_RGB555) << 0xffff0000;
+ QTest::newRow("semigreen argb32 -> rgb15") << int(QImage::Format_ARGB32) << 0x7f00ff00u
+ << int(QImage::Format_RGB555) << 0xff00ff00;
+ QTest::newRow("semiblue argb32 -> rgb15") << int(QImage::Format_ARGB32) << 0x7f0000ffu
+ << int(QImage::Format_RGB555) << 0xff0000ff;
+
+ QTest::newRow("semired pm -> rgb15") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
+ << int(QImage::Format_RGB555) << 0xffff0000u;
+ QTest::newRow("semigreen pm -> rgb15") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
+ << int(QImage::Format_RGB555) << 0xff00ff00u;
+ QTest::newRow("semiblue pm -> rgb15") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
+ << int(QImage::Format_RGB555) << 0xff0000ffu;
+ QTest::newRow("semiwhite pm -> rgb15") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
+ << int(QImage::Format_RGB555) << 0xffffffffu;
+ QTest::newRow("semiblack pm -> rgb15") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
+ << int(QImage::Format_RGB555) << 0xff000000u;
+
+
+ QTest::newRow("red rgb32 -> argb8555") << int(QImage::Format_RGB32) << 0xffff0000
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0xffff0000;
+ QTest::newRow("green rgb32 -> argb8555") << int(QImage::Format_RGB32) << 0xff00ff00
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0xff00ff00;
+ QTest::newRow("blue rgb32 -> argb8555") << int(QImage::Format_RGB32) << 0xff0000ff
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0xff0000ff;
+
+ QTest::newRow("red rgb16 -> argb8555") << int(QImage::Format_RGB16) << 0xffff0000
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0xffff0000;
+ QTest::newRow("green rgb16 -> argb8555") << int(QImage::Format_RGB16) << 0xff00ff00
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0xff00ff00;
+ QTest::newRow("blue rgb16 -> argb8555") << int(QImage::Format_RGB16) << 0xff0000ff
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0xff0000ff;
+
+ QTest::newRow("red argb8555 -> argb32") << int(QImage::Format_ARGB8555_Premultiplied) << 0xffff0000
+ << int(QImage::Format_ARGB32) << 0xffff0000;
+ QTest::newRow("green argb8555 -> argb32") << int(QImage::Format_ARGB8555_Premultiplied) << 0xff00ff00
+ << int(QImage::Format_ARGB32) << 0xff00ff00;
+ QTest::newRow("blue argb8555 -> argb32") << int(QImage::Format_ARGB8555_Premultiplied) << 0xff0000ff
+ << int(QImage::Format_ARGB32) << 0xff0000ff;
+
+ QTest::newRow("semired argb32 -> argb8555") << int(QImage::Format_ARGB32) << 0x7fff0000u
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f7b0000u;
+ QTest::newRow("semigreen argb32 -> argb8555") << int(QImage::Format_ARGB32) << 0x7f00ff00u
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f007b00u;
+ QTest::newRow("semiblue argb32 -> argb8555") << int(QImage::Format_ARGB32) << 0x7f0000ffu
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f00007bu;
+
+ QTest::newRow("semired pm -> argb8555") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f7b0000u;
+ QTest::newRow("semigreen pm -> argb8555") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f007b00u;
+ QTest::newRow("semiblue pm -> argb8555") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f00007bu;
+ QTest::newRow("semiwhite pm -> argb8555") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f7b7b7bu;
+ QTest::newRow("semiblack pm -> argb8555") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
+ << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f000000u;
+
+ QTest::newRow("red rgb32 -> rgb888") << int(QImage::Format_RGB32) << 0xffff0000
+ << int(QImage::Format_RGB888) << 0xffff0000;
+ QTest::newRow("green rgb32 -> rgb888") << int(QImage::Format_RGB32) << 0xff00ff00
+ << int(QImage::Format_RGB888) << 0xff00ff00;
+ QTest::newRow("blue rgb32 -> rgb888") << int(QImage::Format_RGB32) << 0xff0000ff
+ << int(QImage::Format_RGB888) << 0xff0000ff;
+
+ QTest::newRow("red rgb16 -> rgb888") << int(QImage::Format_RGB16) << 0xffff0000
+ << int(QImage::Format_RGB888) << 0xffff0000;
+ QTest::newRow("green rgb16 -> rgb888") << int(QImage::Format_RGB16) << 0xff00ff00
+ << int(QImage::Format_RGB888) << 0xff00ff00;
+ QTest::newRow("blue rgb16 -> rgb888") << int(QImage::Format_RGB16) << 0xff0000ff
+ << int(QImage::Format_RGB888) << 0xff0000ff;
+
+ QTest::newRow("red rgb888 -> argb32") << int(QImage::Format_RGB888) << 0xffff0000
+ << int(QImage::Format_ARGB32) << 0xffff0000;
+ QTest::newRow("green rgb888 -> argb32") << int(QImage::Format_RGB888) << 0xff00ff00
+ << int(QImage::Format_ARGB32) << 0xff00ff00;
+ QTest::newRow("blue rgb888 -> argb32") << int(QImage::Format_RGB888) << 0xff0000ff
+ << int(QImage::Format_ARGB32) << 0xff0000ff;
+
+ QTest::newRow("semired argb32 -> rgb888") << int(QImage::Format_ARGB32) << 0x7fff0000u
+ << int(QImage::Format_RGB888) << 0xffff0000;
+ QTest::newRow("semigreen argb32 -> rgb888") << int(QImage::Format_ARGB32) << 0x7f00ff00u
+ << int(QImage::Format_RGB888) << 0xff00ff00;
+ QTest::newRow("semiblue argb32 -> rgb888") << int(QImage::Format_ARGB32) << 0x7f0000ffu
+ << int(QImage::Format_RGB888) << 0xff0000ff;
+
+ QTest::newRow("semired pm -> rgb888") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
+ << int(QImage::Format_RGB888) << 0xffff0000u;
+ QTest::newRow("semigreen pm -> rgb888") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
+ << int(QImage::Format_RGB888) << 0xff00ff00u;
+ QTest::newRow("semiblue pm -> rgb888") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
+ << int(QImage::Format_RGB888) << 0xff0000ffu;
+ QTest::newRow("semiwhite pm -> rgb888") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
+ << int(QImage::Format_RGB888) << 0xffffffffu;
+ QTest::newRow("semiblack pm -> rgb888") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
+ << int(QImage::Format_RGB888) << 0xff000000u;
+}
+
+
+void tst_QImage::convertToFormat()
+{
+ QFETCH(int, inFormat);
+ QFETCH(uint, inPixel);
+ QFETCH(int, resFormat);
+ QFETCH(uint, resPixel);
+
+ QImage src(32, 32, QImage::Format(inFormat));
+
+ if (inFormat == QImage::Format_Mono) {
+ src.setColor(0, qRgba(0,0,0,0xff));
+ src.setColor(1, qRgba(255,255,255,0xff));
+ }
+
+ for (int y=0; y<src.height(); ++y)
+ for (int x=0; x<src.width(); ++x)
+ src.setPixel(x, y, inPixel);
+
+ QImage result = src.convertToFormat(QImage::Format(resFormat));
+
+ QCOMPARE(src.width(), result.width());
+ QCOMPARE(src.height(), result.height());
+
+ bool same = true;
+ for (int y=0; y<result.height(); ++y) {
+ for (int x=0; x<result.width(); ++x) {
+ QRgb pixel = result.pixel(x, y);
+ same &= (pixel == resPixel);
+ if (!same) {
+ printf("expect=%08x, result=%08x\n", resPixel, pixel);
+ y = 100000;
+ break;
+ }
+
+ }
+ }
+ QVERIFY(same);
+
+ // repeat tests converting from an image with nonstandard stride
+
+ int dp = (src.depth() < 8 || result.depth() < 8) ? 8 : 1;
+ QImage src2(src.bits() + (dp*src.depth())/8,
+ src.width() - dp*2,
+ src.height(), src.bytesPerLine(),
+ src.format());
+ if (src.depth() < 8)
+ src2.setColorTable(src.colorTable());
+
+ const QImage result2 = src2.convertToFormat(QImage::Format(resFormat));
+
+ QCOMPARE(src2.width(), result2.width());
+ QCOMPARE(src2.height(), result2.height());
+
+ QImage expected2(result.bits() + (dp*result.depth())/8,
+ result.width() - dp*2,
+ result.height(), result.bytesPerLine(),
+ result.format());
+ if (result.depth() < 8)
+ expected2.setColorTable(result.colorTable());
+
+ result2.save("result2.xpm", "XPM");
+ expected2.save("expected2.xpm", "XPM");
+
+ QCOMPARE(result2, expected2);
+ QFile::remove(QLatin1String("result2.xpm"));
+ QFile::remove(QLatin1String("expected2.xpm"));
+}
+
+void tst_QImage::convertToFormatRgb888ToRGB32()
+{
+ // 545 so width % 4 != 0. This ensure there is padding at the end of the scanlines
+ const int height = 545;
+ const int width = 545;
+ QImage source(width, height, QImage::Format_RGB888);
+ for (int y = 0; y < height; ++y) {
+ uchar *srcPixels = source.scanLine(y);
+ for (int x = 0; x < width * 3; ++x)
+ srcPixels[x] = x;
+ }
+
+ QImage rgb32Image = source.convertToFormat(QImage::Format_RGB888);
+ QCOMPARE(rgb32Image.format(), QImage::Format_RGB888);
+ for (int x = 0; x < width; ++x) {
+ for (int y = 0; y < height; ++y)
+ QCOMPARE(rgb32Image.pixel(x, y), source.pixel(x, y));
+ }
+}
+
+void tst_QImage::createAlphaMask_data()
+{
+ QTest::addColumn<int>("x");
+ QTest::addColumn<int>("y");
+ QTest::addColumn<int>("alpha1");
+ QTest::addColumn<int>("alpha2");
+
+ int alphas[] = { 0, 127, 255 };
+
+ for (unsigned a1 = 0; a1 < sizeof(alphas) / sizeof(int); ++a1) {
+ for (unsigned a2 = 0; a2 < sizeof(alphas) / sizeof(int); ++a2) {
+ if (a1 == a2)
+ continue;
+ for (int x=10; x<18; x+=3) {
+ for (int y=100; y<108; y+=3) {
+ QTest::newRow(qPrintable(QString::fromLatin1("x=%1, y=%2, a1=%3, a2=%4").arg(x).arg(y).arg(alphas[a1]).arg(alphas[a2])))
+ << x << y << alphas[a1] << alphas[a2];
+ }
+ }
+ }
+ }
+}
+
+void tst_QImage::createAlphaMask()
+{
+ QFETCH(int, x);
+ QFETCH(int, y);
+ QFETCH(int, alpha1);
+ QFETCH(int, alpha2);
+
+ QSize size(255, 255);
+ int pixelsInLines = size.width() + size.height() - 1;
+ int pixelsOutofLines = size.width() * size.height() - pixelsInLines;
+
+ // Generate an white image with two lines, horizontal at y and vertical at x.
+ // Lines have alpha of alpha2, rest has alpha of alpha1
+ QImage image(size, QImage::Format_ARGB32);
+ for (int cy=0; cy<image.height(); ++cy) {
+ for (int cx=0; cx<image.width(); ++cx) {
+ int alpha = (y == cy || x == cx) ? alpha2 : alpha1;
+ image.setPixel(cx, cy, qRgba(255, 255, 255, alpha));
+ }
+ }
+
+ QImage mask = image.createAlphaMask(Qt::OrderedAlphaDither);
+
+ // Sanity check...
+ QCOMPARE(mask.width(), image.width());
+ QCOMPARE(mask.height(), image.height());
+
+ // Sum up the number of pixels set for both lines and other area
+ int sumAlpha1 = 0;
+ int sumAlpha2 = 0;
+ for (int cy=0; cy<image.height(); ++cy) {
+ for (int cx=0; cx<image.width(); ++cx) {
+ int *alpha = (y == cy || x == cx) ? &sumAlpha2 : &sumAlpha1;
+ *alpha += mask.pixelIndex(cx, cy);
+ }
+ }
+
+ // Compare the set bits to whats expected for that alpha.
+ const int threshold = 5;
+ QVERIFY(qAbs(sumAlpha1 * 255 / pixelsOutofLines - alpha1) < threshold);
+ QVERIFY(qAbs(sumAlpha2 * 255 / pixelsInLines - alpha2) < threshold);
+}
+
+void tst_QImage::dotsPerMeterZero()
+{
+ QImage img(100, 100, QImage::Format_RGB32);
+ QVERIFY(!img.isNull());
+
+ int defaultDpmX = img.dotsPerMeterX();
+ int defaultDpmY = img.dotsPerMeterY();
+ QVERIFY(defaultDpmX != 0);
+ QVERIFY(defaultDpmY != 0);
+
+ img.setDotsPerMeterX(0);
+ img.setDotsPerMeterY(0);
+
+ QCOMPARE(img.dotsPerMeterX(), defaultDpmX);
+ QCOMPARE(img.dotsPerMeterY(), defaultDpmY);
+}
+
+void tst_QImage::rotate_data()
+{
+ QTest::addColumn<QImage::Format>("format");
+ QTest::addColumn<int>("degrees");
+
+ QVector<int> degrees;
+ degrees << 0 << 90 << 180 << 270;
+
+ foreach (int d, degrees) {
+ QString title = QString("%1 %2").arg(d);
+ QTest::newRow(qPrintable(title.arg("Format_RGB32")))
+ << QImage::Format_RGB32 << d;
+ QTest::newRow(qPrintable(title.arg("Format_ARGB32")))
+ << QImage::Format_ARGB32 << d;
+ QTest::newRow(qPrintable(title.arg("Format_ARGB32_Premultiplied")))
+ << QImage::Format_ARGB32_Premultiplied << d;
+ QTest::newRow(qPrintable(title.arg("Format_RGB16")))
+ << QImage::Format_RGB16 << d;
+ QTest::newRow(qPrintable(title.arg("Format_ARGB8565_Premultiplied")))
+ << QImage::Format_ARGB8565_Premultiplied << d;
+ QTest::newRow(qPrintable(title.arg("Format_RGB666")))
+ << QImage::Format_RGB666 << d;
+ QTest::newRow(qPrintable(title.arg("Format_RGB555")))
+ << QImage::Format_RGB555 << d;
+ QTest::newRow(qPrintable(title.arg("Format_ARGB8555_Premultiplied")))
+ << QImage::Format_ARGB8555_Premultiplied << d;
+ QTest::newRow(qPrintable(title.arg("Format_RGB888")))
+ << QImage::Format_RGB888 << d;
+ QTest::newRow(qPrintable(title.arg("Format_Indexed8")))
+ << QImage::Format_Indexed8 << d;
+ }
+}
+
+void tst_QImage::rotate()
+{
+ QFETCH(QImage::Format, format);
+ QFETCH(int, degrees);
+
+ // test if rotate90 is lossless
+ int w = 54;
+ int h = 13;
+ QImage original(w, h, format);
+ original.fill(qRgb(255,255,255));
+
+ if (format == QImage::Format_Indexed8) {
+ original.setColorCount(256);
+ for (int i = 0; i < 255; ++i)
+ original.setColor(i, qRgb(0, i, i));
+ }
+
+ if (original.colorTable().isEmpty()) {
+ for (int x = 0; x < w; ++x) {
+ original.setPixel(x,0, qRgb(x,0,128));
+ original.setPixel(x,h - 1, qRgb(0,255 - x,128));
+ }
+ for (int y = 0; y < h; ++y) {
+ original.setPixel(0, y, qRgb(y,0,255));
+ original.setPixel(w - 1, y, qRgb(0,255 - y,255));
+ }
+ } else {
+ const int n = original.colorTable().size();
+ for (int x = 0; x < w; ++x) {
+ original.setPixel(x, 0, x % n);
+ original.setPixel(x, h - 1, n - (x % n) - 1);
+ }
+ for (int y = 0; y < h; ++y) {
+ original.setPixel(0, y, y % n);
+ original.setPixel(w - 1, y, n - (y % n) - 1);
+ }
+ }
+
+ // original.save("rotated90_original.png", "png");
+
+ // Initialize the matrix manually (do not use rotate) to avoid rounding errors
+ QMatrix matRotate90;
+ matRotate90.rotate(degrees);
+ QImage dest = original;
+ // And rotate it 4 times, then the image should be identical to the original
+ for (int i = 0; i < 4 ; ++i) {
+ dest = dest.transformed(matRotate90);
+ }
+
+ // Make sure they are similar in format before we compare them.
+ dest = dest.convertToFormat(format);
+
+ // dest.save("rotated90_result.png","png");
+ QCOMPARE(original, dest);
+
+ // Test with QMatrix::rotate 90 also, since we trust that now
+ matRotate90.rotate(degrees);
+ dest = original;
+ // And rotate it 4 times, then the image should be identical to the original
+ for (int i = 0; i < 4 ; ++i) {
+ dest = dest.transformed(matRotate90);
+ }
+
+ // Make sure they are similar in format before we compare them.
+ dest = dest.convertToFormat(format);
+
+ QCOMPARE(original, dest);
+}
+
+void tst_QImage::copy()
+{
+ // Task 99250
+ {
+ QImage img(16,16,QImage::Format_ARGB32);
+ img.copy(QRect(1000,1,1,1));
+ }
+}
+
+void tst_QImage::setPixel_data()
+{
+ QTest::addColumn<int>("format");
+ QTest::addColumn<uint>("value");
+ QTest::addColumn<uint>("expected");
+
+ QTest::newRow("ARGB32 red") << int(QImage::Format_ARGB32)
+ << 0xffff0000 << 0xffff0000;
+ QTest::newRow("ARGB32 green") << int(QImage::Format_ARGB32)
+ << 0xff00ff00 << 0xff00ff00;
+ QTest::newRow("ARGB32 blue") << int(QImage::Format_ARGB32)
+ << 0xff0000ff << 0xff0000ff;
+ QTest::newRow("RGB16 red") << int(QImage::Format_RGB16)
+ << 0xffff0000 << 0xf800u;
+ QTest::newRow("RGB16 green") << int(QImage::Format_RGB16)
+ << 0xff00ff00 << 0x07e0u;
+ QTest::newRow("RGB16 blue") << int(QImage::Format_RGB16)
+ << 0xff0000ff << 0x001fu;
+ QTest::newRow("ARGB8565_Premultiplied red") << int(QImage::Format_ARGB8565_Premultiplied)
+ << 0xffff0000 << 0xffff0000;
+ QTest::newRow("ARGB8565_Premultiplied green") << int(QImage::Format_ARGB8565_Premultiplied)
+ << 0xff00ff00 << 0xff00ff00;
+ QTest::newRow("ARGB8565_Premultiplied blue") << int(QImage::Format_ARGB8565_Premultiplied)
+ << 0xff0000ff << 0xff0000ff;
+ QTest::newRow("RGB666 red") << int(QImage::Format_RGB666)
+ << 0xffff0000 << 0xffff0000;
+ QTest::newRow("RGB666 green") << int(QImage::Format_RGB666)
+ << 0xff00ff00 << 0xff00ff00;;
+ QTest::newRow("RGB666 blue") << int(QImage::Format_RGB666)
+ << 0xff0000ff << 0xff0000ff;
+ QTest::newRow("RGB555 red") << int(QImage::Format_RGB555)
+ << 0xffff0000 << 0x7c00u;
+ QTest::newRow("RGB555 green") << int(QImage::Format_RGB555)
+ << 0xff00ff00 << 0x03e0u;
+ QTest::newRow("RGB555 blue") << int(QImage::Format_RGB555)
+ << 0xff0000ff << 0x001fu;
+ QTest::newRow("ARGB8555_Premultiplied red") << int(QImage::Format_ARGB8555_Premultiplied)
+ << 0xffff0000 << 0xffff0000;
+ QTest::newRow("ARGB8555_Premultiplied green") << int(QImage::Format_ARGB8555_Premultiplied)
+ << 0xff00ff00 << 0xff00ff00;
+ QTest::newRow("ARGB8555_Premultiplied blue") << int(QImage::Format_ARGB8555_Premultiplied)
+ << 0xff0000ff << 0xff0000ff;
+ QTest::newRow("RGB888 red") << int(QImage::Format_RGB888)
+ << 0xffff0000 << 0xffff0000;
+ QTest::newRow("RGB888 green") << int(QImage::Format_RGB888)
+ << 0xff00ff00 << 0xff00ff00;
+ QTest::newRow("RGB888 blue") << int(QImage::Format_RGB888)
+ << 0xff0000ff << 0xff0000ff;
+}
+
+void tst_QImage::setPixel()
+{
+ QFETCH(int, format);
+ QFETCH(uint, value);
+ QFETCH(uint, expected);
+
+ const int w = 13;
+ const int h = 15;
+
+ QImage img(w, h, QImage::Format(format));
+
+ // fill image
+ for (int y = 0; y < h; ++y)
+ for (int x = 0; x < w; ++x)
+ img.setPixel(x, y, value);
+
+ // check pixel values
+ switch (format) {
+ case int(QImage::Format_RGB32):
+ case int(QImage::Format_ARGB32):
+ case int(QImage::Format_ARGB32_Premultiplied):
+ {
+ for (int y = 0; y < h; ++y) {
+ const quint32 *row = (const quint32*)(img.scanLine(y));
+ for (int x = 0; x < w; ++x) {
+ quint32 result = row[x];
+ if (result != expected)
+ printf("[x,y]: %d,%d, expected=%08x, result=%08x\n",
+ x, y, expected, result);
+ QCOMPARE(uint(result), expected);
+ }
+ }
+ break;
+ }
+ case int(QImage::Format_RGB555):
+ case int(QImage::Format_RGB16):
+ {
+ for (int y = 0; y < h; ++y) {
+ const quint16 *row = (const quint16*)(img.scanLine(y));
+ for (int x = 0; x < w; ++x) {
+ quint16 result = row[x];
+ if (result != expected)
+ printf("[x,y]: %d,%d, expected=%04x, result=%04x\n",
+ x, y, expected, result);
+ QCOMPARE(uint(result), expected);
+ }
+ }
+ break;
+ }
+ case int(QImage::Format_RGB666):
+ {
+ for (int y = 0; y < h; ++y) {
+ const qrgb666 *row = (const qrgb666*)(img.scanLine(y));
+ for (int x = 0; x < w; ++x) {
+ quint32 result = row[x];
+ if (result != expected)
+ printf("[x,y]: %d,%d, expected=%04x, result=%04x\n",
+ x, y, expected, result);
+ QCOMPARE(result, expected);
+ }
+ }
+ break;
+ }
+ case int(QImage::Format_ARGB8565_Premultiplied):
+ {
+ for (int y = 0; y < h; ++y) {
+ const qargb8565 *row = (const qargb8565*)(img.scanLine(y));
+ for (int x = 0; x < w; ++x) {
+ quint32 result = row[x];
+ if (result != expected)
+ printf("[x,y]: %d,%d, expected=%04x, result=%04x\n",
+ x, y, expected, result);
+ QCOMPARE(result, expected);
+ }
+ }
+ break;
+ }
+ case int(QImage::Format_ARGB8555_Premultiplied):
+ {
+ for (int y = 0; y < h; ++y) {
+ const qargb8555 *row = (const qargb8555*)(img.scanLine(y));
+ for (int x = 0; x < w; ++x) {
+ quint32 result = row[x];
+ if (result != expected)
+ printf("[x,y]: %d,%d, expected=%04x, result=%04x\n",
+ x, y, expected, result);
+ QCOMPARE(result, expected);
+ }
+ }
+ break;
+ }
+ case int(QImage::Format_RGB888):
+ {
+ for (int y = 0; y < h; ++y) {
+ const qrgb888 *row = (const qrgb888*)(img.scanLine(y));
+ for (int x = 0; x < w; ++x) {
+ qrgb888 result = row[x];
+ if (result != expected)
+ printf("[x,y]: %d,%d, expected=%04x, result=%04x\n",
+ x, y, expected, quint32(result));
+ QCOMPARE(uint(result), expected);
+ }
+ }
+ break;
+ }
+ default:
+ qFatal("Test not implemented for format %d", format);
+ }
+}
+
+void tst_QImage::convertToFormatPreserveDotsPrMeter()
+{
+ QImage img(100, 100, QImage::Format_ARGB32_Premultiplied);
+
+ int dpmx = 123;
+ int dpmy = 234;
+ img.setDotsPerMeterX(dpmx);
+ img.setDotsPerMeterY(dpmy);
+ img.fill(0x12345678);
+
+ img = img.convertToFormat(QImage::Format_RGB32);
+
+ QCOMPARE(img.dotsPerMeterX(), dpmx);
+ QCOMPARE(img.dotsPerMeterY(), dpmy);
+}
+
+#ifndef QT_NO_IMAGE_TEXT
+void tst_QImage::convertToFormatPreserveText()
+{
+ QImage img(100, 100, QImage::Format_ARGB32_Premultiplied);
+
+ img.setText("foo", "bar");
+ img.setText("foo2", "bar2");
+ img.fill(0x12345678);
+
+ QStringList listResult;
+ listResult << "foo" << "foo2";
+ QString result = "foo: bar\n\nfoo2: bar2";
+
+ QImage imgResult1 = img.convertToFormat(QImage::Format_RGB32);
+ QCOMPARE(imgResult1.text(), result);
+ QCOMPARE(imgResult1.textKeys(), listResult);
+
+ QVector<QRgb> colorTable(4);
+ for (int i = 0; i < 4; ++i)
+ colorTable[i] = QRgb(42);
+ QImage imgResult2 = img.convertToFormat(QImage::Format_MonoLSB,
+ colorTable);
+ QCOMPARE(imgResult2.text(), result);
+ QCOMPARE(imgResult2.textKeys(), listResult);
+}
+#endif // QT_NO_IMAGE_TEXT
+
+void tst_QImage::setColorCount()
+{
+ QImage img(0, 0, QImage::Format_Indexed8);
+ QTest::ignoreMessage(QtWarningMsg, "QImage::setColorCount: null image");
+ img.setColorCount(256);
+ QCOMPARE(img.colorCount(), 0);
+}
+
+void tst_QImage::setColor()
+{
+ QImage img(0, 0, QImage::Format_Indexed8);
+ img.setColor(0, qRgba(18, 219, 108, 128));
+ QCOMPARE(img.colorCount(), 0);
+
+ QImage img2(1, 1, QImage::Format_Indexed8);
+ img2.setColor(0, qRgba(18, 219, 108, 128));
+ QCOMPARE(img2.colorCount(), 1);
+}
+
+/* Just some sanity checking that we don't draw outside the buffer of
+ * the image. Hopefully this will create crashes or at least some
+ * random test fails when broken.
+ */
+void tst_QImage::rasterClipping()
+{
+ QImage image(10, 10, QImage::Format_RGB32);
+ image.fill(0xffffffff);
+
+ QPainter p(&image);
+
+ p.drawLine(-1000, 5, 5, 5);
+ p.drawLine(-1000, 5, 1000, 5);
+ p.drawLine(5, 5, 1000, 5);
+
+ p.drawLine(5, -1000, 5, 5);
+ p.drawLine(5, -1000, 5, 1000);
+ p.drawLine(5, 5, 5, 1000);
+
+ p.setBrush(Qt::red);
+
+ p.drawEllipse(3, 3, 4, 4);
+ p.drawEllipse(-100, -100, 210, 210);
+
+ p.drawEllipse(-1000, 0, 2010, 2010);
+ p.drawEllipse(0, -1000, 2010, 2010);
+ p.drawEllipse(-2010, -1000, 2010, 2010);
+ p.drawEllipse(-1000, -2010, 2010, 2010);
+ QVERIFY(true);
+}
+
+// Tests the new QPoint overloads in QImage in Qt 4.2
+void tst_QImage::pointOverloads()
+{
+ QImage image(100, 100, QImage::Format_RGB32);
+ image.fill(0xff00ff00);
+
+ // IsValid
+ QVERIFY(image.valid(QPoint(0, 0)));
+ QVERIFY(image.valid(QPoint(99, 0)));
+ QVERIFY(image.valid(QPoint(0, 99)));
+ QVERIFY(image.valid(QPoint(99, 99)));
+
+ QVERIFY(!image.valid(QPoint(50, -1))); // outside on the top
+ QVERIFY(!image.valid(QPoint(50, 100))); // outside on the bottom
+ QVERIFY(!image.valid(QPoint(-1, 50))); // outside on the left
+ QVERIFY(!image.valid(QPoint(100, 50))); // outside on the right
+
+ // Test the pixel setter
+ image.setPixel(QPoint(10, 10), 0xff0000ff);
+ QCOMPARE(image.pixel(10, 10), 0xff0000ff);
+
+ // pixel getter
+ QCOMPARE(image.pixel(QPoint(10, 10)), 0xff0000ff);
+
+ // pixelIndex()
+ QImage indexed = image.convertToFormat(QImage::Format_Indexed8);
+ QCOMPARE(indexed.pixelIndex(10, 10), indexed.pixelIndex(QPoint(10, 10)));
+}
+
+void tst_QImage::destructor()
+{
+ QPolygon poly(6);
+ poly.setPoint(0,-1455, 1435);
+
+ QImage image(100, 100, QImage::Format_RGB32);
+ QPainter ptPix(&image);
+ ptPix.setPen(Qt::black);
+ ptPix.setBrush(Qt::black);
+ ptPix.drawPolygon(poly, Qt::WindingFill);
+ ptPix.end();
+
+}
+
+
+/* XPM */
+static const char *monoPixmap[] = {
+/* width height ncolors chars_per_pixel */
+"4 4 2 1",
+"x c #000000",
+". c #ffffff",
+/* pixels */
+"xxxx",
+"x..x",
+"x..x",
+"xxxx"
+};
+
+
+#ifndef QT_NO_IMAGE_HEURISTIC_MASK
+void tst_QImage::createHeuristicMask()
+{
+ QImage img(monoPixmap);
+ img = img.convertToFormat(QImage::Format_MonoLSB);
+ QImage mask = img.createHeuristicMask();
+ QImage newMask = mask.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+
+ // line 2
+ QVERIFY(newMask.pixel(0,1) != newMask.pixel(1,1));
+ QVERIFY(newMask.pixel(1,1) == newMask.pixel(2,1));
+ QVERIFY(newMask.pixel(2,1) != newMask.pixel(3,1));
+
+ // line 3
+ QVERIFY(newMask.pixel(0,2) != newMask.pixel(1,2));
+ QVERIFY(newMask.pixel(1,2) == newMask.pixel(2,2));
+ QVERIFY(newMask.pixel(2,2) != newMask.pixel(3,2));
+}
+#endif
+
+void tst_QImage::cacheKey()
+{
+ QImage image1(2, 2, QImage::Format_RGB32);
+ qint64 image1_key = image1.cacheKey();
+ QImage image2 = image1;
+
+ QVERIFY(image2.cacheKey() == image1.cacheKey());
+ image2.detach();
+ QVERIFY(image2.cacheKey() != image1.cacheKey());
+ QVERIFY(image1.cacheKey() == image1_key);
+}
+
+void tst_QImage::smoothScale()
+{
+ unsigned int data[2] = { qRgba(0, 0, 0, 0), qRgba(128, 128, 128, 128) };
+
+ QImage imgX((unsigned char *)data, 2, 1, QImage::Format_ARGB32_Premultiplied);
+ QImage imgY((unsigned char *)data, 1, 2, QImage::Format_ARGB32_Premultiplied);
+
+ QImage scaledX = imgX.scaled(QSize(4, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ QImage scaledY = imgY.scaled(QSize(1, 4), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+
+ uint *scaled[2] = {
+ (unsigned int *)scaledX.bits(),
+ (unsigned int *)scaledY.bits()
+ };
+
+ int expected[4] = { 0, 32, 96, 128 };
+ for (int image = 0; image < 2; ++image) {
+ for (int index = 0; index < 4; ++index) {
+ for (int component = 0; component < 4; ++component) {
+ int pixel = scaled[image][index];
+ int val = (pixel >> (component * 8)) & 0xff;
+
+ QCOMPARE(val, expected[index]);
+ }
+ }
+ }
+}
+
+// test area sampling
+void tst_QImage::smoothScale2()
+{
+ int sizes[] = { 2, 4, 8, 10, 16, 20, 32, 40, 64, 100, 101, 128, 0 };
+ QImage::Format formats[] = { QImage::Format_ARGB32, QImage::Format_RGB32, QImage::Format_Invalid };
+ for (int i = 0; sizes[i] != 0; ++i) {
+ for (int j = 0; formats[j] != QImage::Format_Invalid; ++j) {
+ int size = sizes[i];
+
+ QRgb expected = formats[j] == QImage::Format_ARGB32 ? qRgba(63, 127, 255, 255) : qRgb(63, 127, 255);
+
+ QImage img(size, size, formats[j]);
+ img.fill(expected);
+
+ // scale x down, y down
+ QImage scaled = img.scaled(QSize(1, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ QRgb pixel = scaled.pixel(0, 0);
+ QCOMPARE(qAlpha(pixel), qAlpha(expected));
+ QCOMPARE(qRed(pixel), qRed(expected));
+ QCOMPARE(qGreen(pixel), qGreen(expected));
+ QCOMPARE(qBlue(pixel), qBlue(expected));
+
+ // scale x down, y up
+ scaled = img.scaled(QSize(1, size * 2), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ for (int y = 0; y < scaled.height(); ++y) {
+ pixel = scaled.pixel(0, y);
+ QCOMPARE(qAlpha(pixel), qAlpha(expected));
+ QCOMPARE(qRed(pixel), qRed(expected));
+ QCOMPARE(qGreen(pixel), qGreen(expected));
+ QCOMPARE(qBlue(pixel), qBlue(expected));
+ }
+
+ // scale x up, y down
+ scaled = img.scaled(QSize(size * 2, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ for (int x = 0; x < scaled.width(); ++x) {
+ pixel = scaled.pixel(x, 0);
+ QCOMPARE(qAlpha(pixel), qAlpha(expected));
+ QCOMPARE(qRed(pixel), qRed(expected));
+ QCOMPARE(qGreen(pixel), qGreen(expected));
+ QCOMPARE(qBlue(pixel), qBlue(expected));
+ }
+
+ // scale x up, y up
+ scaled = img.scaled(QSize(size * 2, size * 2), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ for (int y = 0; y < scaled.height(); ++y) {
+ for (int x = 0; x < scaled.width(); ++x) {
+ pixel = scaled.pixel(x, y);
+ QCOMPARE(qAlpha(pixel), qAlpha(expected));
+ QCOMPARE(qRed(pixel), qRed(expected));
+ QCOMPARE(qGreen(pixel), qGreen(expected));
+ QCOMPARE(qBlue(pixel), qBlue(expected));
+ }
+ }
+ }
+ }
+}
+
+static inline int rand8()
+{
+ return int(256. * (qrand() / (RAND_MAX + 1.0)));
+}
+
+// compares img.scale against the bilinear filtering used by QPainter
+void tst_QImage::smoothScale3()
+{
+ QImage img(128, 128, QImage::Format_RGB32);
+ for (int y = 0; y < img.height(); ++y) {
+ for (int x = 0; x < img.width(); ++x) {
+ const int red = rand8();
+ const int green = rand8();
+ const int blue = rand8();
+ const int alpha = 255;
+
+ img.setPixel(x, y, qRgba(red, green, blue, alpha));
+ }
+ }
+
+ qreal scales[2] = { .5, 2 };
+
+ for (int i = 0; i < 2; ++i) {
+ QImage a = img.scaled(img.size() * scales[i], Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ QImage b(a.size(), a.format());
+ b.fill(0x0);
+
+ QPainter p(&b);
+ p.setRenderHint(QPainter::SmoothPixmapTransform);
+ p.scale(scales[i], scales[i]);
+ p.drawImage(0, 0, img);
+ p.end();
+ int err = 0;
+
+ for (int y = 0; y < a.height(); ++y) {
+ for (int x = 0; x < a.width(); ++x) {
+ QRgb ca = a.pixel(x, y);
+ QRgb cb = b.pixel(x, y);
+
+ // tolerate a little bit of rounding errors
+ bool r = true;
+ r &= qAbs(qRed(ca) - qRed(cb)) <= 18;
+ r &= qAbs(qGreen(ca) - qGreen(cb)) <= 18;
+ r &= qAbs(qBlue(ca) - qBlue(cb)) <= 18;
+ if (!r)
+ err++;
+ }
+ }
+ QCOMPARE(err, 0);
+ }
+}
+
+void tst_QImage::smoothScaleBig()
+{
+#if defined(Q_OS_WINCE)
+ int bigValue = 2000;
+#elif defined(Q_OS_SYMBIAN)
+ int bigValue = 2000;
+#else
+ int bigValue = 200000;
+#endif
+ QImage tall(4, bigValue, QImage::Format_ARGB32);
+ tall.fill(0x0);
+
+ QImage wide(bigValue, 4, QImage::Format_ARGB32);
+ wide.fill(0x0);
+
+ QImage tallScaled = tall.scaled(4, tall.height() / 4, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ QImage wideScaled = wide.scaled(wide.width() / 4, 4, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+
+ QCOMPARE(tallScaled.pixel(0, 0), QRgb(0x0));
+ QCOMPARE(wideScaled.pixel(0, 0), QRgb(0x0));
+}
+
+void tst_QImage::smoothScaleAlpha()
+{
+ QImage src(128, 128, QImage::Format_ARGB32_Premultiplied);
+ src.fill(0x0);
+
+ QPainter srcPainter(&src);
+ srcPainter.setPen(Qt::NoPen);
+ srcPainter.setBrush(Qt::white);
+ srcPainter.drawEllipse(QRect(QPoint(), src.size()));
+ srcPainter.end();
+
+ QImage dst(32, 32, QImage::Format_ARGB32_Premultiplied);
+ dst.fill(0xffffffff);
+ QImage expected = dst;
+
+ QPainter dstPainter(&dst);
+ dstPainter.drawImage(0, 0, src.scaled(dst.size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
+ dstPainter.end();
+
+ QCOMPARE(dst, expected);
+}
+
+static int count(const QImage &img, int x, int y, int dx, int dy, QRgb pixel)
+{
+ int i = 0;
+ while (x >= 0 && x < img.width() && y >= 0 && y < img.height()) {
+ i += (img.pixel(x, y) == pixel);
+ x += dx;
+ y += dy;
+ }
+ return i;
+}
+
+const int transformed_image_width = 128;
+const int transformed_image_height = 128;
+
+void tst_QImage::transformed_data()
+{
+ QTest::addColumn<QTransform>("transform");
+
+ {
+ QTransform transform;
+ transform.translate(10.4, 10.4);
+ QTest::newRow("Translate") << transform;
+ }
+ {
+ QTransform transform;
+ transform.scale(1.5, 1.5);
+ QTest::newRow("Scale") << transform;
+ }
+ {
+ QTransform transform;
+ transform.rotate(30);
+ QTest::newRow("Rotate 30") << transform;
+ }
+ {
+ QTransform transform;
+ transform.rotate(90);
+ QTest::newRow("Rotate 90") << transform;
+ }
+ {
+ QTransform transform;
+ transform.rotate(180);
+ QTest::newRow("Rotate 180") << transform;
+ }
+ {
+ QTransform transform;
+ transform.rotate(270);
+ QTest::newRow("Rotate 270") << transform;
+ }
+ {
+ QTransform transform;
+ transform.translate(transformed_image_width/2, transformed_image_height/2);
+ transform.rotate(155, Qt::XAxis);
+ transform.translate(-transformed_image_width/2, -transformed_image_height/2);
+ QTest::newRow("Perspective 1") << transform;
+ }
+ {
+ QTransform transform;
+ transform.rotate(155, Qt::XAxis);
+ transform.translate(-transformed_image_width/2, -transformed_image_height/2);
+ QTest::newRow("Perspective 2") << transform;
+ }
+}
+
+void tst_QImage::transformed()
+{
+ QFETCH(QTransform, transform);
+
+ QImage img(transformed_image_width, transformed_image_height, QImage::Format_ARGB32_Premultiplied);
+ QPainter p(&img);
+ p.fillRect(0, 0, img.width(), img.height(), Qt::red);
+ p.drawRect(0, 0, img.width()-1, img.height()-1);
+ p.end();
+
+ QImage transformed = img.transformed(transform, Qt::SmoothTransformation);
+
+ // all borders should have touched pixels
+
+ QVERIFY(count(transformed, 0, 0, 1, 0, 0x0) < transformed.width());
+ QVERIFY(count(transformed, 0, 0, 0, 1, 0x0) < transformed.height());
+
+ QVERIFY(count(transformed, 0, img.height() - 1, 1, 0, 0x0) < transformed.width());
+ QVERIFY(count(transformed, img.width() - 1, 0, 0, 1, 0x0) < transformed.height());
+
+ QImage transformedPadded(transformed.width() + 2, transformed.height() + 2, img.format());
+ transformedPadded.fill(0x0);
+
+ p.begin(&transformedPadded);
+ p.setRenderHint(QPainter::SmoothPixmapTransform);
+ p.setRenderHint(QPainter::Antialiasing);
+ p.setTransform(transformed.trueMatrix(transform, img.width(), img.height()) * QTransform().translate(1, 1));
+ p.drawImage(0, 0, img);
+ p.end();
+
+ // no borders should have touched pixels since we have a one-pixel padding
+
+ QCOMPARE(count(transformedPadded, 0, 0, 1, 0, 0x0), transformedPadded.width());
+ QCOMPARE(count(transformedPadded, 0, 0, 0, 1, 0x0), transformedPadded.height());
+
+ QCOMPARE(count(transformedPadded, 0, transformedPadded.height() - 1, 1, 0, 0x0), transformedPadded.width());
+ QCOMPARE(count(transformedPadded, transformedPadded.width() - 1, 0, 0, 1, 0x0), transformedPadded.height());
+}
+
+void tst_QImage::transformed2()
+{
+ QImage img(3, 3, QImage::Format_Mono);
+ QPainter p(&img);
+ p.fillRect(0, 0, 3, 3, Qt::white);
+ p.fillRect(0, 0, 3, 3, Qt::Dense4Pattern);
+ p.end();
+
+ QTransform transform;
+ transform.scale(3, 3);
+
+ QImage expected(9, 9, QImage::Format_Mono);
+ p.begin(&expected);
+ p.fillRect(0, 0, 9, 9, Qt::white);
+ p.setBrush(Qt::black);
+ p.setPen(Qt::NoPen);
+ p.drawRect(3, 0, 3, 3);
+ p.drawRect(0, 3, 3, 3);
+ p.drawRect(6, 3, 3, 3);
+ p.drawRect(3, 6, 3, 3);
+ p.end();
+
+ {
+ QImage actual = img.transformed(transform);
+
+ QCOMPARE(actual.format(), expected.format());
+ QCOMPARE(actual.size(), expected.size());
+ QCOMPARE(actual, expected);
+ }
+
+ {
+ transform.rotate(-90);
+ QImage actual = img.transformed(transform);
+
+ QCOMPARE(actual.convertToFormat(QImage::Format_ARGB32_Premultiplied),
+ expected.convertToFormat(QImage::Format_ARGB32_Premultiplied));
+ }
+}
+
+void tst_QImage::scaled()
+{
+ QImage img(102, 3, QImage::Format_Mono);
+ QPainter p(&img);
+ p.fillRect(0, 0, img.width(), img.height(), Qt::white);
+ p.end();
+
+ QImage scaled = img.scaled(1994, 10);
+
+ QImage expected(1994, 10, QImage::Format_Mono);
+ p.begin(&expected);
+ p.fillRect(0, 0, expected.width(), expected.height(), Qt::white);
+ p.end();
+
+ QCOMPARE(scaled, expected);
+}
+
+void tst_QImage::paintEngine()
+{
+ QImage img;
+
+ QPaintEngine *engine;
+ {
+ QImage temp(100, 100, QImage::Format_RGB32);
+ temp.fill(0xff000000);
+
+ QPainter p(&temp);
+ p.fillRect(80,80,10,10,Qt::blue);
+ p.end();
+
+ img = temp;
+
+ engine = temp.paintEngine();
+ }
+
+ {
+ QPainter p(&img);
+
+ p.fillRect(80,10,10,10,Qt::yellow);
+ p.end();
+ }
+
+ QImage expected(100, 100, QImage::Format_RGB32);
+ expected.fill(0xff000000);
+
+ QPainter p(&expected);
+ p.fillRect(80,80,10,10,Qt::blue);
+ p.fillRect(80,10,10,10,Qt::yellow);
+ p.end();
+
+ QCOMPARE(engine, img.paintEngine());
+ QCOMPARE(img, expected);
+}
+
+void tst_QImage::setAlphaChannelWhilePainting()
+{
+ QImage image(100, 100, QImage::Format_ARGB32);
+ image.fill(Qt::black);
+ QPainter p(&image);
+
+ image.setAlphaChannel(image.createMaskFromColor(QColor(Qt::black).rgb(), Qt::MaskInColor));
+}
+
+
+// See task 240047 for details
+void tst_QImage::smoothScaledSubImage()
+{
+ QImage original(128, 128, QImage::Format_RGB32);
+ QPainter p(&original);
+ p.fillRect(0, 0, 64, 128, Qt::black);
+ p.fillRect(64, 0, 64, 128, Qt::white);
+ p.end();
+
+ QImage subimage(((const QImage &) original).bits(), 32, 32, original.bytesPerLine(), QImage::Format_RGB32); // only in the black part of the source...
+
+ QImage scaled = subimage.scaled(8, 8, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+
+ for (int y=0; y<scaled.height(); ++y)
+ for (int x=0; x<scaled.width(); ++x)
+ QCOMPARE(scaled.pixel(x, y), 0xff000000);
+}
+
+void tst_QImage::nullSize_data()
+{
+ QTest::addColumn<QImage>("image");
+ QTest::newRow("null image") << QImage();
+ QTest::newRow("zero-size image") << QImage(0, 0, QImage::Format_RGB32);
+}
+
+void tst_QImage::nullSize()
+{
+ QFETCH(QImage, image);
+ QCOMPARE(image.isNull(), true);
+ QCOMPARE(image.width(), image.size().width());
+ QCOMPARE(image.height(), image.size().height());
+}
+
+void tst_QImage::premultipliedAlphaConsistency()
+{
+ QImage img(256, 1, QImage::Format_ARGB32);
+ for (int x = 0; x < 256; ++x)
+ img.setPixel(x, 0, (x << 24) | 0xffffff);
+
+ QImage converted = img.convertToFormat(QImage::Format_ARGB8565_Premultiplied);
+ QImage pm32 = converted.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+
+ for (int i = 0; i < pm32.width(); ++i) {
+ QRgb pixel = pm32.pixel(i, 0);
+ QVERIFY(qRed(pixel) <= qAlpha(pixel));
+ QVERIFY(qGreen(pixel) <= qAlpha(pixel));
+ QVERIFY(qBlue(pixel) <= qAlpha(pixel));
+ }
+}
+
+void tst_QImage::compareIndexed()
+{
+ QImage img(256, 1, QImage::Format_Indexed8);
+
+ QVector<QRgb> colorTable(256);
+ for (int i = 0; i < 256; ++i)
+ colorTable[i] = qRgb(i, i, i);
+ img.setColorTable(colorTable);
+
+ for (int i = 0; i < 256; ++i) {
+ img.setPixel(i, 0, i);
+ }
+
+ QImage imgInverted(256, 1, QImage::Format_Indexed8);
+ QVector<QRgb> invertedColorTable(256);
+ for (int i = 0; i < 256; ++i)
+ invertedColorTable[255-i] = qRgb(i, i, i);
+ imgInverted.setColorTable(invertedColorTable);
+
+ for (int i = 0; i < 256; ++i) {
+ imgInverted.setPixel(i, 0, (255-i));
+ }
+
+ QCOMPARE(img, imgInverted);
+}
+
+void tst_QImage::fillColor_data()
+{
+ QTest::addColumn<QImage::Format>("format");
+ QTest::addColumn<Qt::GlobalColor>("color");
+ QTest::addColumn<uint>("pixelValue");
+
+ QTest::newRow("Mono, color0") << QImage::Format_Mono << Qt::color0 << 0u;
+ QTest::newRow("Mono, color1") << QImage::Format_Mono << Qt::color1 << 1u;
+
+ QTest::newRow("MonoLSB, color0") << QImage::Format_MonoLSB << Qt::color0 << 0u;
+ QTest::newRow("MonoLSB, color1") << QImage::Format_MonoLSB << Qt::color1 << 1u;
+
+ const char *names[] = {
+ "Indexed8",
+ "RGB32",
+ "ARGB32",
+ "ARGB32pm",
+ "RGB16",
+ "ARGB8565pm",
+ "RGB666",
+ "ARGB6666pm",
+ "RGB555",
+ "ARGB8555pm",
+ "RGB888",
+ "RGB444",
+ "ARGB4444pm",
+ 0
+ };
+
+ QImage::Format formats[] = {
+ QImage::Format_Indexed8,
+ QImage::Format_RGB32,
+ QImage::Format_ARGB32,
+ QImage::Format_ARGB32_Premultiplied,
+ QImage::Format_RGB16,
+ QImage::Format_ARGB8565_Premultiplied,
+ QImage::Format_RGB666,
+ QImage::Format_ARGB6666_Premultiplied,
+ QImage::Format_RGB555,
+ QImage::Format_ARGB8555_Premultiplied,
+ QImage::Format_RGB888,
+ QImage::Format_RGB444,
+ QImage::Format_ARGB4444_Premultiplied
+ };
+
+ for (int i=0; names[i] != 0; ++i) {
+ QByteArray name;
+ name.append(names[i]).append(", ");
+
+ QTest::newRow(QByteArray(name).append("black").constData()) << formats[i] << Qt::black << 0xff000000;
+ QTest::newRow(QByteArray(name).append("white").constData()) << formats[i] << Qt::white << 0xffffffff;
+ QTest::newRow(QByteArray(name).append("red").constData()) << formats[i] << Qt::red << 0xffff0000;
+ QTest::newRow(QByteArray(name).append("green").constData()) << formats[i] << Qt::green << 0xff00ff00;
+ QTest::newRow(QByteArray(name).append("blue").constData()) << formats[i] << Qt::blue << 0xff0000ff;
+ }
+
+ QTest::newRow("RGB16, transparent") << QImage::Format_RGB16 << Qt::transparent << 0xff000000;
+ QTest::newRow("RGB32, transparent") << QImage::Format_RGB32 << Qt::transparent << 0xff000000;
+ QTest::newRow("ARGB32, transparent") << QImage::Format_ARGB32 << Qt::transparent << 0x00000000u;
+ QTest::newRow("ARGB32pm, transparent") << QImage::Format_ARGB32_Premultiplied << Qt::transparent << 0x00000000u;
+}
+
+void tst_QImage::fillColor()
+{
+ QFETCH(QImage::Format, format);
+ QFETCH(Qt::GlobalColor, color);
+ QFETCH(uint, pixelValue);
+
+ QImage image(1, 1, format);
+
+ if (image.depth() == 8) {
+ QVector<QRgb> table;
+ table << 0xff000000;
+ table << 0xffffffff;
+ table << 0xffff0000;
+ table << 0xff00ff00;
+ table << 0xff0000ff;
+ image.setColorTable(table);
+ }
+
+ image.fill(color);
+ if (image.depth() == 1) {
+ QCOMPARE(image.pixelIndex(0, 0), (int) pixelValue);
+ } else {
+ QCOMPARE(image.pixel(0, 0), pixelValue);
+ }
+
+ image.fill(QColor(color));
+ if (image.depth() == 1) {
+ QCOMPARE(image.pixelIndex(0, 0), (int) pixelValue);
+ } else {
+ QCOMPARE(image.pixel(0, 0), pixelValue);
+ }
+}
+
+void tst_QImage::fillColorWithAlpha()
+{
+ QImage argb32(1, 1, QImage::Format_ARGB32);
+ argb32.fill(QColor(255, 0, 0, 127));
+ QCOMPARE(argb32.pixel(0, 0), qRgba(255, 0, 0, 127));
+
+ QImage argb32pm(1, 1, QImage::Format_ARGB32_Premultiplied);
+ argb32pm.fill(QColor(255, 0, 0, 127));
+ QCOMPARE(argb32pm.pixel(0, 0), 0x7f7f0000u);
+}
+
+void tst_QImage::rgbSwapped_data()
+{
+ QTest::addColumn<QImage::Format>("format");
+
+ QTest::newRow("Format_Indexed8") << QImage::Format_Indexed8;
+ QTest::newRow("Format_RGB32") << QImage::Format_RGB32;
+ QTest::newRow("Format_ARGB32") << QImage::Format_ARGB32;
+ QTest::newRow("Format_ARGB32_Premultiplied") << QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("Format_RGB16") << QImage::Format_RGB16;
+ QTest::newRow("Format_ARGB8565_Premultiplied") << QImage::Format_ARGB8565_Premultiplied;
+ QTest::newRow("Format_ARGB6666_Premultiplied") << QImage::Format_ARGB6666_Premultiplied;
+ QTest::newRow("Format_ARGB4444_Premultiplied") << QImage::Format_ARGB4444_Premultiplied;
+ QTest::newRow("Format_RGB666") << QImage::Format_RGB666;
+ QTest::newRow("Format_RGB555") << QImage::Format_RGB555;
+ QTest::newRow("Format_ARGB8555_Premultiplied") << QImage::Format_ARGB8555_Premultiplied;
+ QTest::newRow("Format_RGB888") << QImage::Format_RGB888;
+ QTest::newRow("Format_RGB444") << QImage::Format_RGB444;
+}
+
+void tst_QImage::rgbSwapped()
+{
+ QFETCH(QImage::Format, format);
+
+ QImage image(100, 1, format);
+ image.fill(0);
+
+ QVector<QColor> testColor(image.width());
+
+ for (int i = 0; i < image.width(); ++i)
+ testColor[i] = QColor(i, 10 + i, 20 + i * 2, 30 + i);
+
+ if (format != QImage::Format_Indexed8) {
+ QPainter p(&image);
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ for (int i = 0; i < image.width(); ++i)
+ p.fillRect(QRect(i, 0, 1, 1), testColor[i].rgb());
+ } else {
+ image.setColorCount(image.width());
+ for (int i = 0; i < image.width(); ++i) {
+ image.setColor(0, testColor[i].rgba());
+ image.setPixel(i, 0, i);
+ }
+ }
+
+ QImage imageSwapped = image.rgbSwapped();
+
+ for (int i = 0; i < image.width(); ++i) {
+ QColor referenceColor = QColor(image.pixel(i, 0));
+ QColor swappedColor = QColor(imageSwapped.pixel(i, 0));
+
+ QCOMPARE(swappedColor.alpha(), referenceColor.alpha());
+ QCOMPARE(swappedColor.red(), referenceColor.blue());
+ QCOMPARE(swappedColor.green(), referenceColor.green());
+ QCOMPARE(swappedColor.blue(), referenceColor.red());
+ }
+
+ QImage imageSwappedTwice = imageSwapped.rgbSwapped();
+
+ QCOMPARE(image, imageSwappedTwice);
+
+ QCOMPARE(memcmp(image.constBits(), imageSwappedTwice.constBits(), image.byteCount()), 0);
+}
+
+void tst_QImage::deepCopyWhenPaintingActive()
+{
+ QImage image(64, 64, QImage::Format_ARGB32_Premultiplied);
+ image.fill(0);
+
+ QPainter painter(&image);
+ QImage copy = image;
+
+ painter.setBrush(Qt::black);
+ painter.drawEllipse(image.rect());
+
+ QVERIFY(copy != image);
+}
+
+void tst_QImage::scaled_QTBUG19157()
+{
+ QImage foo(5000, 1, QImage::Format_RGB32);
+ foo = foo.scaled(1024, 1024, Qt::KeepAspectRatio);
+ QVERIFY(!foo.isNull());
+}
+
+QTEST_MAIN(tst_QImage)
+#include "tst_qimage.moc"
diff --git a/tests/auto/qimageiohandler/.gitignore b/tests/auto/gui/image/qimageiohandler/.gitignore
index 6ea7bdb667..6ea7bdb667 100644
--- a/tests/auto/qimageiohandler/.gitignore
+++ b/tests/auto/gui/image/qimageiohandler/.gitignore
diff --git a/tests/auto/qimageiohandler/qimageiohandler.pro b/tests/auto/gui/image/qimageiohandler/qimageiohandler.pro
index 46e5cfb2cf..46e5cfb2cf 100644
--- a/tests/auto/qimageiohandler/qimageiohandler.pro
+++ b/tests/auto/gui/image/qimageiohandler/qimageiohandler.pro
diff --git a/tests/auto/qimageiohandler/tst_qimageiohandler.cpp b/tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp
index dd132302f8..dd132302f8 100644
--- a/tests/auto/qimageiohandler/tst_qimageiohandler.cpp
+++ b/tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp
diff --git a/tests/auto/qimagereader/.gitignore b/tests/auto/gui/image/qimagereader/.gitignore
index fdf03f239d..fdf03f239d 100644
--- a/tests/auto/qimagereader/.gitignore
+++ b/tests/auto/gui/image/qimagereader/.gitignore
diff --git a/tests/auto/qimagereader/baseline/35floppy.png b/tests/auto/gui/image/qimagereader/baseline/35floppy.png
index 56b9b44c47..56b9b44c47 100644
--- a/tests/auto/qimagereader/baseline/35floppy.png
+++ b/tests/auto/gui/image/qimagereader/baseline/35floppy.png
Binary files differ
diff --git a/tests/auto/qimagereader/baseline/connect.png b/tests/auto/gui/image/qimagereader/baseline/connect.png
index 9544bb9c76..9544bb9c76 100644
--- a/tests/auto/qimagereader/baseline/connect.png
+++ b/tests/auto/gui/image/qimagereader/baseline/connect.png
Binary files differ
diff --git a/tests/auto/qimagereader/baseline/kde_favicon.png b/tests/auto/gui/image/qimagereader/baseline/kde_favicon.png
index e19287b49d..e19287b49d 100644
--- a/tests/auto/qimagereader/baseline/kde_favicon.png
+++ b/tests/auto/gui/image/qimagereader/baseline/kde_favicon.png
Binary files differ
diff --git a/tests/auto/qimagereader/baseline/semitransparent.png b/tests/auto/gui/image/qimagereader/baseline/semitransparent.png
index a3ad780699..a3ad780699 100644
--- a/tests/auto/qimagereader/baseline/semitransparent.png
+++ b/tests/auto/gui/image/qimagereader/baseline/semitransparent.png
Binary files differ
diff --git a/tests/auto/qimagereader/images/16bpp.bmp b/tests/auto/gui/image/qimagereader/images/16bpp.bmp
index 74ce63edd4..74ce63edd4 100644
--- a/tests/auto/qimagereader/images/16bpp.bmp
+++ b/tests/auto/gui/image/qimagereader/images/16bpp.bmp
Binary files differ
diff --git a/tests/auto/qimagereader/images/4bpp-rle.bmp b/tests/auto/gui/image/qimagereader/images/4bpp-rle.bmp
index ae71e678fd..ae71e678fd 100644
--- a/tests/auto/qimagereader/images/4bpp-rle.bmp
+++ b/tests/auto/gui/image/qimagereader/images/4bpp-rle.bmp
Binary files differ
diff --git a/tests/auto/qimagereader/images/YCbCr_cmyk.jpg b/tests/auto/gui/image/qimagereader/images/YCbCr_cmyk.jpg
index b8aa9ea609..b8aa9ea609 100644
--- a/tests/auto/qimagereader/images/YCbCr_cmyk.jpg
+++ b/tests/auto/gui/image/qimagereader/images/YCbCr_cmyk.jpg
Binary files differ
diff --git a/tests/auto/qimagereader/images/YCbCr_cmyk.png b/tests/auto/gui/image/qimagereader/images/YCbCr_cmyk.png
index a24db1b13f..a24db1b13f 100644
--- a/tests/auto/qimagereader/images/YCbCr_cmyk.png
+++ b/tests/auto/gui/image/qimagereader/images/YCbCr_cmyk.png
Binary files differ
diff --git a/tests/auto/qimagereader/images/YCbCr_rgb.jpg b/tests/auto/gui/image/qimagereader/images/YCbCr_rgb.jpg
index 8771224cb5..8771224cb5 100644
--- a/tests/auto/qimagereader/images/YCbCr_rgb.jpg
+++ b/tests/auto/gui/image/qimagereader/images/YCbCr_rgb.jpg
Binary files differ
diff --git a/tests/auto/qimagereader/images/away.png b/tests/auto/gui/image/qimagereader/images/away.png
index 0e21a37883..0e21a37883 100644
--- a/tests/auto/qimagereader/images/away.png
+++ b/tests/auto/gui/image/qimagereader/images/away.png
Binary files differ
diff --git a/tests/auto/qimagereader/images/ball.mng b/tests/auto/gui/image/qimagereader/images/ball.mng
index 81544780fd..81544780fd 100644
--- a/tests/auto/qimagereader/images/ball.mng
+++ b/tests/auto/gui/image/qimagereader/images/ball.mng
Binary files differ
diff --git a/tests/auto/qimagereader/images/bat1.gif b/tests/auto/gui/image/qimagereader/images/bat1.gif
index cb6f4f7a8e..cb6f4f7a8e 100644
--- a/tests/auto/qimagereader/images/bat1.gif
+++ b/tests/auto/gui/image/qimagereader/images/bat1.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/bat2.gif b/tests/auto/gui/image/qimagereader/images/bat2.gif
index fbbda4ef76..fbbda4ef76 100644
--- a/tests/auto/qimagereader/images/bat2.gif
+++ b/tests/auto/gui/image/qimagereader/images/bat2.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/beavis.jpg b/tests/auto/gui/image/qimagereader/images/beavis.jpg
index d55504779b..d55504779b 100644
--- a/tests/auto/qimagereader/images/beavis.jpg
+++ b/tests/auto/gui/image/qimagereader/images/beavis.jpg
Binary files differ
diff --git a/tests/auto/qimagereader/images/black.png b/tests/auto/gui/image/qimagereader/images/black.png
index 6c94085ed5..6c94085ed5 100644
--- a/tests/auto/qimagereader/images/black.png
+++ b/tests/auto/gui/image/qimagereader/images/black.png
Binary files differ
diff --git a/tests/auto/qimagereader/images/black.xpm b/tests/auto/gui/image/qimagereader/images/black.xpm
index d7925bf211..d7925bf211 100644
--- a/tests/auto/qimagereader/images/black.xpm
+++ b/tests/auto/gui/image/qimagereader/images/black.xpm
diff --git a/tests/auto/qimagereader/images/colorful.bmp b/tests/auto/gui/image/qimagereader/images/colorful.bmp
index 8ea6f4acd7..8ea6f4acd7 100644
--- a/tests/auto/qimagereader/images/colorful.bmp
+++ b/tests/auto/gui/image/qimagereader/images/colorful.bmp
Binary files differ
diff --git a/tests/auto/qimagereader/images/corrupt-colors.xpm b/tests/auto/gui/image/qimagereader/images/corrupt-colors.xpm
index f8d80edbbc..f8d80edbbc 100644
--- a/tests/auto/qimagereader/images/corrupt-colors.xpm
+++ b/tests/auto/gui/image/qimagereader/images/corrupt-colors.xpm
diff --git a/tests/auto/qimagereader/images/corrupt-data.tif b/tests/auto/gui/image/qimagereader/images/corrupt-data.tif
index d63c688b27..d63c688b27 100644
--- a/tests/auto/qimagereader/images/corrupt-data.tif
+++ b/tests/auto/gui/image/qimagereader/images/corrupt-data.tif
Binary files differ
diff --git a/tests/auto/qimagereader/images/corrupt-pixel-count.xpm b/tests/auto/gui/image/qimagereader/images/corrupt-pixel-count.xpm
index 3a736ff262..3a736ff262 100644
--- a/tests/auto/qimagereader/images/corrupt-pixel-count.xpm
+++ b/tests/auto/gui/image/qimagereader/images/corrupt-pixel-count.xpm
diff --git a/tests/auto/qimagereader/images/corrupt-pixels.xpm b/tests/auto/gui/image/qimagereader/images/corrupt-pixels.xpm
index 21031ee604..21031ee604 100644
--- a/tests/auto/qimagereader/images/corrupt-pixels.xpm
+++ b/tests/auto/gui/image/qimagereader/images/corrupt-pixels.xpm
diff --git a/tests/auto/qimagereader/images/corrupt.bmp b/tests/auto/gui/image/qimagereader/images/corrupt.bmp
index 824190bdeb..824190bdeb 100644
--- a/tests/auto/qimagereader/images/corrupt.bmp
+++ b/tests/auto/gui/image/qimagereader/images/corrupt.bmp
Binary files differ
diff --git a/tests/auto/qimagereader/images/corrupt.gif b/tests/auto/gui/image/qimagereader/images/corrupt.gif
index 07259454c9..07259454c9 100644
--- a/tests/auto/qimagereader/images/corrupt.gif
+++ b/tests/auto/gui/image/qimagereader/images/corrupt.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/corrupt.jpg b/tests/auto/gui/image/qimagereader/images/corrupt.jpg
index 1959662922..1959662922 100644
--- a/tests/auto/qimagereader/images/corrupt.jpg
+++ b/tests/auto/gui/image/qimagereader/images/corrupt.jpg
Binary files differ
diff --git a/tests/auto/qimagereader/images/corrupt.mng b/tests/auto/gui/image/qimagereader/images/corrupt.mng
index 17fd43a5ca..17fd43a5ca 100644
--- a/tests/auto/qimagereader/images/corrupt.mng
+++ b/tests/auto/gui/image/qimagereader/images/corrupt.mng
Binary files differ
diff --git a/tests/auto/qimagereader/images/corrupt.png b/tests/auto/gui/image/qimagereader/images/corrupt.png
index 9d8911c64e..9d8911c64e 100644
--- a/tests/auto/qimagereader/images/corrupt.png
+++ b/tests/auto/gui/image/qimagereader/images/corrupt.png
Binary files differ
diff --git a/tests/auto/qimagereader/images/corrupt.svg b/tests/auto/gui/image/qimagereader/images/corrupt.svg
index 8747df008f..8747df008f 100644
--- a/tests/auto/qimagereader/images/corrupt.svg
+++ b/tests/auto/gui/image/qimagereader/images/corrupt.svg
diff --git a/tests/auto/qimagereader/images/corrupt.svgz b/tests/auto/gui/image/qimagereader/images/corrupt.svgz
index 67fdceee0b..67fdceee0b 100644
--- a/tests/auto/qimagereader/images/corrupt.svgz
+++ b/tests/auto/gui/image/qimagereader/images/corrupt.svgz
Binary files differ
diff --git a/tests/auto/qimagereader/images/corrupt.xbm b/tests/auto/gui/image/qimagereader/images/corrupt.xbm
index 8510634e6d..8510634e6d 100644
--- a/tests/auto/qimagereader/images/corrupt.xbm
+++ b/tests/auto/gui/image/qimagereader/images/corrupt.xbm
diff --git a/tests/auto/qimagereader/images/crash-signed-char.bmp b/tests/auto/gui/image/qimagereader/images/crash-signed-char.bmp
index b35cda6c35..b35cda6c35 100644
--- a/tests/auto/qimagereader/images/crash-signed-char.bmp
+++ b/tests/auto/gui/image/qimagereader/images/crash-signed-char.bmp
Binary files differ
diff --git a/tests/auto/qimagereader/images/earth.gif b/tests/auto/gui/image/qimagereader/images/earth.gif
index 2c229eb110..2c229eb110 100644
--- a/tests/auto/qimagereader/images/earth.gif
+++ b/tests/auto/gui/image/qimagereader/images/earth.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/endless-anim.gif b/tests/auto/gui/image/qimagereader/images/endless-anim.gif
index 00df8da786..00df8da786 100644
--- a/tests/auto/qimagereader/images/endless-anim.gif
+++ b/tests/auto/gui/image/qimagereader/images/endless-anim.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/fire.mng b/tests/auto/gui/image/qimagereader/images/fire.mng
index c6695c8369..c6695c8369 100644
--- a/tests/auto/qimagereader/images/fire.mng
+++ b/tests/auto/gui/image/qimagereader/images/fire.mng
Binary files differ
diff --git a/tests/auto/qimagereader/images/font.bmp b/tests/auto/gui/image/qimagereader/images/font.bmp
index 28b8c66924..28b8c66924 100644
--- a/tests/auto/qimagereader/images/font.bmp
+++ b/tests/auto/gui/image/qimagereader/images/font.bmp
Binary files differ
diff --git a/tests/auto/qimagereader/images/four-frames.gif b/tests/auto/gui/image/qimagereader/images/four-frames.gif
index 6aff2e0af2..6aff2e0af2 100644
--- a/tests/auto/qimagereader/images/four-frames.gif
+++ b/tests/auto/gui/image/qimagereader/images/four-frames.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/gnus.xbm b/tests/auto/gui/image/qimagereader/images/gnus.xbm
index 58d1ac845a..58d1ac845a 100644
--- a/tests/auto/qimagereader/images/gnus.xbm
+++ b/tests/auto/gui/image/qimagereader/images/gnus.xbm
diff --git a/tests/auto/qimagereader/images/grayscale-ref.tif b/tests/auto/gui/image/qimagereader/images/grayscale-ref.tif
index 960531ea86..960531ea86 100644
--- a/tests/auto/qimagereader/images/grayscale-ref.tif
+++ b/tests/auto/gui/image/qimagereader/images/grayscale-ref.tif
Binary files differ
diff --git a/tests/auto/qimagereader/images/grayscale.tif b/tests/auto/gui/image/qimagereader/images/grayscale.tif
index 5f4e11429d..5f4e11429d 100644
--- a/tests/auto/qimagereader/images/grayscale.tif
+++ b/tests/auto/gui/image/qimagereader/images/grayscale.tif
Binary files differ
diff --git a/tests/auto/qimagereader/images/image.pbm b/tests/auto/gui/image/qimagereader/images/image.pbm
index 67e5efa3e9..67e5efa3e9 100644
--- a/tests/auto/qimagereader/images/image.pbm
+++ b/tests/auto/gui/image/qimagereader/images/image.pbm
diff --git a/tests/auto/qimagereader/images/image.pgm b/tests/auto/gui/image/qimagereader/images/image.pgm
index 443bf40964..443bf40964 100644
--- a/tests/auto/qimagereader/images/image.pgm
+++ b/tests/auto/gui/image/qimagereader/images/image.pgm
diff --git a/tests/auto/qimagereader/images/image.png b/tests/auto/gui/image/qimagereader/images/image.png
index 7d4890a7ff..7d4890a7ff 100644
--- a/tests/auto/qimagereader/images/image.png
+++ b/tests/auto/gui/image/qimagereader/images/image.png
Binary files differ
diff --git a/tests/auto/qimagereader/images/image.ppm b/tests/auto/gui/image/qimagereader/images/image.ppm
index 2a5640e189..2a5640e189 100644
--- a/tests/auto/qimagereader/images/image.ppm
+++ b/tests/auto/gui/image/qimagereader/images/image.ppm
diff --git a/tests/auto/qimagereader/images/image_100dpi.tif b/tests/auto/gui/image/qimagereader/images/image_100dpi.tif
index fcf3cd89aa..fcf3cd89aa 100644
--- a/tests/auto/qimagereader/images/image_100dpi.tif
+++ b/tests/auto/gui/image/qimagereader/images/image_100dpi.tif
Binary files differ
diff --git a/tests/auto/qimagereader/images/kollada-noext b/tests/auto/gui/image/qimagereader/images/kollada-noext
index 2abd4bb763..2abd4bb763 100644
--- a/tests/auto/qimagereader/images/kollada-noext
+++ b/tests/auto/gui/image/qimagereader/images/kollada-noext
Binary files differ
diff --git a/tests/auto/qimagereader/images/kollada.png b/tests/auto/gui/image/qimagereader/images/kollada.png
index 2abd4bb763..2abd4bb763 100644
--- a/tests/auto/qimagereader/images/kollada.png
+++ b/tests/auto/gui/image/qimagereader/images/kollada.png
Binary files differ
diff --git a/tests/auto/qimagereader/images/marble.xpm b/tests/auto/gui/image/qimagereader/images/marble.xpm
index 1c08049624..1c08049624 100644
--- a/tests/auto/qimagereader/images/marble.xpm
+++ b/tests/auto/gui/image/qimagereader/images/marble.xpm
diff --git a/tests/auto/qimagereader/images/namedcolors.xpm b/tests/auto/gui/image/qimagereader/images/namedcolors.xpm
index f6485d510e..f6485d510e 100644
--- a/tests/auto/qimagereader/images/namedcolors.xpm
+++ b/tests/auto/gui/image/qimagereader/images/namedcolors.xpm
diff --git a/tests/auto/qimagereader/images/negativeheight.bmp b/tests/auto/gui/image/qimagereader/images/negativeheight.bmp
index 875887acef..875887acef 100644
--- a/tests/auto/qimagereader/images/negativeheight.bmp
+++ b/tests/auto/gui/image/qimagereader/images/negativeheight.bmp
Binary files differ
diff --git a/tests/auto/qimagereader/images/noclearcode.bmp b/tests/auto/gui/image/qimagereader/images/noclearcode.bmp
index 1a5ca9c9bd..1a5ca9c9bd 100644
--- a/tests/auto/qimagereader/images/noclearcode.bmp
+++ b/tests/auto/gui/image/qimagereader/images/noclearcode.bmp
Binary files differ
diff --git a/tests/auto/qimagereader/images/noclearcode.gif b/tests/auto/gui/image/qimagereader/images/noclearcode.gif
index 27784d61b2..27784d61b2 100644
--- a/tests/auto/qimagereader/images/noclearcode.gif
+++ b/tests/auto/gui/image/qimagereader/images/noclearcode.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/nontransparent.xpm b/tests/auto/gui/image/qimagereader/images/nontransparent.xpm
index 00c21ef7d7..00c21ef7d7 100644
--- a/tests/auto/qimagereader/images/nontransparent.xpm
+++ b/tests/auto/gui/image/qimagereader/images/nontransparent.xpm
diff --git a/tests/auto/qimagereader/images/qt-gif-anim.gif b/tests/auto/gui/image/qimagereader/images/qt-gif-anim.gif
index 8bca4a8354..8bca4a8354 100644
--- a/tests/auto/qimagereader/images/qt-gif-anim.gif
+++ b/tests/auto/gui/image/qimagereader/images/qt-gif-anim.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qt-gif-noanim.gif b/tests/auto/gui/image/qimagereader/images/qt-gif-noanim.gif
index b6a854067d..b6a854067d 100644
--- a/tests/auto/qimagereader/images/qt-gif-noanim.gif
+++ b/tests/auto/gui/image/qimagereader/images/qt-gif-noanim.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qt.gif b/tests/auto/gui/image/qimagereader/images/qt.gif
index e0a5a80b13..e0a5a80b13 100644
--- a/tests/auto/qimagereader/images/qt.gif
+++ b/tests/auto/gui/image/qimagereader/images/qt.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qt1.gif b/tests/auto/gui/image/qimagereader/images/qt1.gif
index 0ce910cee0..0ce910cee0 100644
--- a/tests/auto/qimagereader/images/qt1.gif
+++ b/tests/auto/gui/image/qimagereader/images/qt1.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qt2.gif b/tests/auto/gui/image/qimagereader/images/qt2.gif
index 993a315d0f..993a315d0f 100644
--- a/tests/auto/qimagereader/images/qt2.gif
+++ b/tests/auto/gui/image/qimagereader/images/qt2.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qt3.gif b/tests/auto/gui/image/qimagereader/images/qt3.gif
index 7391678a99..7391678a99 100644
--- a/tests/auto/qimagereader/images/qt3.gif
+++ b/tests/auto/gui/image/qimagereader/images/qt3.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qt4.gif b/tests/auto/gui/image/qimagereader/images/qt4.gif
index 41109a9c3f..41109a9c3f 100644
--- a/tests/auto/qimagereader/images/qt4.gif
+++ b/tests/auto/gui/image/qimagereader/images/qt4.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qt5.gif b/tests/auto/gui/image/qimagereader/images/qt5.gif
index 5a3fb54ff5..5a3fb54ff5 100644
--- a/tests/auto/qimagereader/images/qt5.gif
+++ b/tests/auto/gui/image/qimagereader/images/qt5.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qt6.gif b/tests/auto/gui/image/qimagereader/images/qt6.gif
index f22e7c980a..f22e7c980a 100644
--- a/tests/auto/qimagereader/images/qt6.gif
+++ b/tests/auto/gui/image/qimagereader/images/qt6.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qt7.gif b/tests/auto/gui/image/qimagereader/images/qt7.gif
index a315671417..a315671417 100644
--- a/tests/auto/qimagereader/images/qt7.gif
+++ b/tests/auto/gui/image/qimagereader/images/qt7.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qt8.gif b/tests/auto/gui/image/qimagereader/images/qt8.gif
index 2a7d09e859..2a7d09e859 100644
--- a/tests/auto/qimagereader/images/qt8.gif
+++ b/tests/auto/gui/image/qimagereader/images/qt8.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/qtbug13653-no_eoi.jpg b/tests/auto/gui/image/qimagereader/images/qtbug13653-no_eoi.jpg
index 605e8a85da..605e8a85da 100644
--- a/tests/auto/qimagereader/images/qtbug13653-no_eoi.jpg
+++ b/tests/auto/gui/image/qimagereader/images/qtbug13653-no_eoi.jpg
Binary files differ
diff --git a/tests/auto/qimagereader/images/rect.svg b/tests/auto/gui/image/qimagereader/images/rect.svg
index c56549a69a..c56549a69a 100644
--- a/tests/auto/qimagereader/images/rect.svg
+++ b/tests/auto/gui/image/qimagereader/images/rect.svg
diff --git a/tests/auto/qimagereader/images/rect.svgz b/tests/auto/gui/image/qimagereader/images/rect.svgz
index c2e193b989..c2e193b989 100644
--- a/tests/auto/qimagereader/images/rect.svgz
+++ b/tests/auto/gui/image/qimagereader/images/rect.svgz
Binary files differ
diff --git a/tests/auto/qimagereader/images/rgba_adobedeflate_littleendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif
index 78868b0d48..78868b0d48 100644
--- a/tests/auto/qimagereader/images/rgba_adobedeflate_littleendian.tif
+++ b/tests/auto/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif
Binary files differ
diff --git a/tests/auto/qimagereader/images/rgba_lzw_littleendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_lzw_littleendian.tif
index 107eab74e7..107eab74e7 100644
--- a/tests/auto/qimagereader/images/rgba_lzw_littleendian.tif
+++ b/tests/auto/gui/image/qimagereader/images/rgba_lzw_littleendian.tif
Binary files differ
diff --git a/tests/auto/qimagereader/images/rgba_nocompression_bigendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif
index c314bae4c0..c314bae4c0 100644
--- a/tests/auto/qimagereader/images/rgba_nocompression_bigendian.tif
+++ b/tests/auto/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif
Binary files differ
diff --git a/tests/auto/qimagereader/images/rgba_nocompression_littleendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif
index 4f820f6649..4f820f6649 100644
--- a/tests/auto/qimagereader/images/rgba_nocompression_littleendian.tif
+++ b/tests/auto/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif
Binary files differ
diff --git a/tests/auto/qimagereader/images/rgba_packbits_littleendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_packbits_littleendian.tif
index ddeec38fbc..ddeec38fbc 100644
--- a/tests/auto/qimagereader/images/rgba_packbits_littleendian.tif
+++ b/tests/auto/gui/image/qimagereader/images/rgba_packbits_littleendian.tif
Binary files differ
diff --git a/tests/auto/qimagereader/images/rgba_zipdeflate_littleendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif
index 50a3024246..50a3024246 100644
--- a/tests/auto/qimagereader/images/rgba_zipdeflate_littleendian.tif
+++ b/tests/auto/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif
Binary files differ
diff --git a/tests/auto/qimagereader/images/runners.ppm b/tests/auto/gui/image/qimagereader/images/runners.ppm
index fda1c97073..fda1c97073 100644
--- a/tests/auto/qimagereader/images/runners.ppm
+++ b/tests/auto/gui/image/qimagereader/images/runners.ppm
Binary files differ
diff --git a/tests/auto/qimagereader/images/teapot.ppm b/tests/auto/gui/image/qimagereader/images/teapot.ppm
index b8ab85f3a5..b8ab85f3a5 100644
--- a/tests/auto/qimagereader/images/teapot.ppm
+++ b/tests/auto/gui/image/qimagereader/images/teapot.ppm
diff --git a/tests/auto/qimagereader/images/test.ppm b/tests/auto/gui/image/qimagereader/images/test.ppm
index 05d627c0cb..05d627c0cb 100644
--- a/tests/auto/qimagereader/images/test.ppm
+++ b/tests/auto/gui/image/qimagereader/images/test.ppm
diff --git a/tests/auto/qimagereader/images/test.xpm b/tests/auto/gui/image/qimagereader/images/test.xpm
index 5fcf075b7f..5fcf075b7f 100644
--- a/tests/auto/qimagereader/images/test.xpm
+++ b/tests/auto/gui/image/qimagereader/images/test.xpm
diff --git a/tests/auto/qimagereader/images/test32bfv4.bmp b/tests/auto/gui/image/qimagereader/images/test32bfv4.bmp
index 37060373ed..37060373ed 100644
--- a/tests/auto/qimagereader/images/test32bfv4.bmp
+++ b/tests/auto/gui/image/qimagereader/images/test32bfv4.bmp
Binary files differ
diff --git a/tests/auto/qimagereader/images/test32v5.bmp b/tests/auto/gui/image/qimagereader/images/test32v5.bmp
index 8ad3cfa60d..8ad3cfa60d 100644
--- a/tests/auto/qimagereader/images/test32v5.bmp
+++ b/tests/auto/gui/image/qimagereader/images/test32v5.bmp
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff
index 3fcb8a9aca..3fcb8a9aca 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff
index 6f3e9d5297..6f3e9d5297 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff
index aab9cf2596..aab9cf2596 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff
index aad96ffc6c..aad96ffc6c 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff
index 05d23dcb86..05d23dcb86 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff
index 9ffe7fcaa4..9ffe7fcaa4 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff
index eeeb01937e..eeeb01937e 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff
index 87cf2fd774..87cf2fd774 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_1.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_1.tiff
index 3b589b2232..3b589b2232 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_1.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_1.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_2.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_2.tiff
index 9a662239db..9a662239db 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_2.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_2.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_3.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_3.tiff
index eed242388c..eed242388c 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_3.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_3.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_4.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_4.tiff
index 055480e0ca..055480e0ca 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_4.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_4.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_5.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_5.tiff
index b4d0974ec8..b4d0974ec8 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_5.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_5.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_6.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_6.tiff
index 3b1e02af56..3b1e02af56 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_6.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_6.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_7.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_7.tiff
index b752c745c3..b752c745c3 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_7.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_7.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_8.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_8.tiff
index e228d05659..e228d05659 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_8.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_8.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/original_indexed.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_indexed.tiff
index 7507e526a5..7507e526a5 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/original_indexed.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_indexed.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/original_mono.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_mono.tiff
index 8ff9db80f5..8ff9db80f5 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/original_mono.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_mono.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/original_rgb.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_rgb.tiff
index 321ea3ebf5..321ea3ebf5 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/original_rgb.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_rgb.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff
index 2756a82fbb..2756a82fbb 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff
index ae9af0999d..ae9af0999d 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff
index a2f432526b..a2f432526b 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff
index f35bfc4c9c..f35bfc4c9c 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff
index 70e5478065..70e5478065 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff
index b2635fe14f..b2635fe14f 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff
index 1fb0cd9df6..1fb0cd9df6 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff
index 666b1b4c55..666b1b4c55 100644
--- a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff
+++ b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/transparent.xpm b/tests/auto/gui/image/qimagereader/images/transparent.xpm
index 5ddcf0b00e..5ddcf0b00e 100644
--- a/tests/auto/qimagereader/images/transparent.xpm
+++ b/tests/auto/gui/image/qimagereader/images/transparent.xpm
diff --git a/tests/auto/qimagereader/images/trolltech.gif b/tests/auto/gui/image/qimagereader/images/trolltech.gif
index f674369efc..f674369efc 100644
--- a/tests/auto/qimagereader/images/trolltech.gif
+++ b/tests/auto/gui/image/qimagereader/images/trolltech.gif
Binary files differ
diff --git a/tests/auto/qimagereader/images/tst7.bmp b/tests/auto/gui/image/qimagereader/images/tst7.bmp
index 6d3ac9241c..6d3ac9241c 100644
--- a/tests/auto/qimagereader/images/tst7.bmp
+++ b/tests/auto/gui/image/qimagereader/images/tst7.bmp
Binary files differ
diff --git a/tests/auto/qimagereader/images/tst7.png b/tests/auto/gui/image/qimagereader/images/tst7.png
index 96efae4e79..96efae4e79 100644
--- a/tests/auto/qimagereader/images/tst7.png
+++ b/tests/auto/gui/image/qimagereader/images/tst7.png
Binary files differ
diff --git a/tests/auto/qimagereader/images/txts.png b/tests/auto/gui/image/qimagereader/images/txts.png
index 99be1eb4f9..99be1eb4f9 100755
--- a/tests/auto/qimagereader/images/txts.png
+++ b/tests/auto/gui/image/qimagereader/images/txts.png
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/qimagereader.pro b/tests/auto/gui/image/qimagereader/qimagereader.pro
new file mode 100644
index 0000000000..43d587ea48
--- /dev/null
+++ b/tests/auto/gui/image/qimagereader/qimagereader.pro
@@ -0,0 +1,36 @@
+load(qttest_p4)
+SOURCES += tst_qimagereader.cpp
+MOC_DIR=tmp
+QT += widgets widgets-private core-private gui-private network
+RESOURCES += qimagereader.qrc
+!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
+
+win32-msvc:QMAKE_CXXFLAGS -= -Zm200
+win32-msvc:QMAKE_CXXFLAGS += -Zm800
+win32-msvc.net:QMAKE_CXXFLAGS -= -Zm300
+win32-msvc.net:QMAKE_CXXFLAGS += -Zm1100
+
+wince*: {
+ images.files = images
+ images.path = .
+
+ imagePlugins.files = $$QT_BUILD_TREE/plugins/imageformats/*.dll
+ imagePlugins.path = imageformats
+
+ DEPLOYMENT += images imagePlugins
+ DEFINES += SRCDIR=\\\".\\\"
+}
+
+symbian: {
+ images.files = images
+ images.path = .
+
+ DEPLOYMENT += images
+
+ qt_not_deployed {
+ imagePlugins.files = qjpeg.dll qgif.dll qmng.dll
+ imagePlugins.path = imageformats
+
+ DEPLOYMENT += imagePlugins
+ }
+}
diff --git a/tests/auto/qimagereader/qimagereader.qrc b/tests/auto/gui/image/qimagereader/qimagereader.qrc
index 2c70652389..2c70652389 100644
--- a/tests/auto/qimagereader/qimagereader.qrc
+++ b/tests/auto/gui/image/qimagereader/qimagereader.qrc
diff --git a/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp b/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp
new file mode 100644
index 0000000000..ffedc69a7f
--- /dev/null
+++ b/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp
@@ -0,0 +1,2026 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <QBuffer>
+#include <QDebug>
+#include <QFile>
+#include <QImage>
+#include <QImageReader>
+#include <QImageWriter>
+#include <QLabel>
+#include <QPixmap>
+#include <QSet>
+#include <QTcpSocket>
+#include <QTcpServer>
+#include <QTimer>
+
+#include "../../../platformquirks.h"
+
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR "."
+#endif
+
+typedef QMap<QString, QString> QStringMap;
+typedef QList<int> QIntList;
+Q_DECLARE_METATYPE(QImage)
+Q_DECLARE_METATYPE(QRect)
+Q_DECLARE_METATYPE(QSize)
+Q_DECLARE_METATYPE(QColor)
+Q_DECLARE_METATYPE(QStringMap)
+Q_DECLARE_METATYPE(QIntList)
+Q_DECLARE_METATYPE(QIODevice *)
+Q_DECLARE_METATYPE(QImage::Format)
+
+//TESTED_FILES=
+
+class tst_QImageReader : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QImageReader();
+ virtual ~tst_QImageReader();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void getSetCheck();
+ void readImage_data();
+ void readImage();
+ void jpegRgbCmyk();
+
+ void setScaledSize_data();
+ void setScaledSize();
+
+ void setClipRect_data();
+ void setClipRect();
+
+ void setScaledClipRect_data();
+ void setScaledClipRect();
+
+ void imageFormat_data();
+ void imageFormat();
+
+ void blackXPM();
+ void transparentXPM();
+ void multiWordNamedColorXPM();
+
+ void supportedFormats();
+
+ void readFromDevice_data();
+ void readFromDevice();
+
+ void readFromFileAfterJunk_data();
+ void readFromFileAfterJunk();
+
+ void devicePosition_data();
+ void devicePosition();
+
+ void setBackgroundColor_data();
+ void setBackgroundColor();
+
+ void supportsAnimation_data();
+ void supportsAnimation();
+
+ void readFromResources_data();
+ void readFromResources();
+
+ void dotsPerMeter_data();
+ void dotsPerMeter();
+
+ void physicalDpi_data();
+ void physicalDpi();
+
+ void sizeBeforeRead_data();
+ void sizeBeforeRead();
+
+ void sizeBeforeFormat_data();
+ void sizeBeforeFormat();
+
+ void imageFormatBeforeRead_data();
+ void imageFormatBeforeRead();
+
+ void gifHandlerBugs();
+ void animatedGif();
+ void gifImageCount();
+ void gifLoopCount();
+
+ void readCorruptImage_data();
+ void readCorruptImage();
+ void readCorruptBmp();
+
+ void supportsOption_data();
+ void supportsOption();
+
+ void tiffCompression_data();
+ void tiffCompression();
+ void tiffEndianness();
+
+ void tiffOrientation_data();
+ void tiffOrientation();
+
+ void tiffGrayscale();
+
+ void autoDetectImageFormat();
+ void fileNameProbing();
+
+ void pixelCompareWithBaseline_data();
+ void pixelCompareWithBaseline();
+
+ void task255627_setNullScaledSize_data();
+ void task255627_setNullScaledSize();
+
+ void testIgnoresFormatAndExtension_data();
+ void testIgnoresFormatAndExtension();
+
+ void saveFormat_data();
+ void saveFormat();
+
+ void readText_data();
+ void readText();
+
+ void preserveTexts_data();
+ void preserveTexts();
+};
+
+static const QLatin1String prefix(SRCDIR "/images/");
+
+// helper to skip an autotest when the given image format is not supported
+#define SKIP_IF_UNSUPPORTED(format) do { \
+ if (!QByteArray(format).isEmpty() && !QImageReader::supportedImageFormats().contains(format)) \
+ QSKIP("\"" + QByteArray(format) + "\" images are not supported", SkipSingle); \
+} while (0)
+
+// Testing get/set functions
+void tst_QImageReader::getSetCheck()
+{
+ QImageReader obj1;
+ // QIODevice * QImageReader::device()
+ // void QImageReader::setDevice(QIODevice *)
+ QFile *var1 = new QFile;
+ obj1.setDevice(var1);
+
+ //A bit strange but that's the only way to compile under windows.
+ QCOMPARE((QIODevice *) var1, obj1.device());
+ obj1.setDevice((QIODevice *)0);
+ QCOMPARE((QIODevice *) 0,
+ obj1.device());
+ delete var1;
+}
+
+tst_QImageReader::tst_QImageReader()
+{
+}
+
+tst_QImageReader::~tst_QImageReader()
+{
+
+}
+
+void tst_QImageReader::init()
+{
+}
+
+void tst_QImageReader::cleanup()
+{
+}
+
+void tst_QImageReader::readImage_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<bool>("success");
+ QTest::addColumn<QByteArray>("format");
+
+ QTest::newRow("empty") << QString() << false << QByteArray();
+ QTest::newRow("BMP: colorful") << QString("colorful.bmp") << true << QByteArray("bmp");
+ QTest::newRow("BMP: test32bfv4") << QString("test32bfv4.bmp") << true << QByteArray("bmp");
+ QTest::newRow("BMP: test32v5") << QString("test32v5.bmp") << true << QByteArray("bmp");
+ QTest::newRow("BMP: font") << QString("font.bmp") << true << QByteArray("bmp");
+ QTest::newRow("BMP: signed char") << QString("crash-signed-char.bmp") << true << QByteArray("bmp");
+ QTest::newRow("BMP: 4bpp RLE") << QString("4bpp-rle.bmp") << true << QByteArray("bmp");
+ QTest::newRow("BMP: 4bpp uncompressed") << QString("tst7.bmp") << true << QByteArray("bmp");
+ QTest::newRow("BMP: 16bpp") << QString("16bpp.bmp") << true << QByteArray("bmp");
+ QTest::newRow("BMP: negative height") << QString("negativeheight.bmp") << true << QByteArray("bmp");
+ QTest::newRow("XPM: marble") << QString("marble.xpm") << true << QByteArray("xpm");
+ QTest::newRow("PNG: kollada") << QString("kollada.png") << true << QByteArray("png");
+ QTest::newRow("PPM: teapot") << QString("teapot.ppm") << true << QByteArray("ppm");
+ QTest::newRow("PPM: runners") << QString("runners.ppm") << true << QByteArray("ppm");
+ QTest::newRow("PPM: test") << QString("test.ppm") << true << QByteArray("ppm");
+ QTest::newRow("XBM: gnus") << QString("gnus.xbm") << true << QByteArray("xbm");
+
+ QTest::newRow("JPEG: beavis") << QString("beavis.jpg") << true << QByteArray("jpeg");
+ QTest::newRow("JPEG: qtbug13653") << QString("qtbug13653-no_eoi.jpg") << true << QByteArray("jpeg");
+
+ QTest::newRow("GIF: earth") << QString("earth.gif") << true << QByteArray("gif");
+ QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << true << QByteArray("gif");
+
+ QTest::newRow("MNG: ball") << QString("ball.mng") << true << QByteArray("mng");
+ QTest::newRow("MNG: fire") << QString("fire.mng") << true << QByteArray("mng");
+
+ QTest::newRow("SVG: rect") << QString("rect.svg") << true << QByteArray("svg");
+ QTest::newRow("SVGZ: rect") << QString("rect.svgz") << true << QByteArray("svgz");
+}
+
+void tst_QImageReader::readImage()
+{
+ QFETCH(QString, fileName);
+ QFETCH(bool, success);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ for (int i = 0; i < 2; ++i) {
+ QImageReader io(prefix + fileName, i ? QByteArray() : format);
+ if (success) {
+ if (!io.supportsAnimation())
+ QVERIFY(io.imageCount() > 0);
+ } else {
+ QCOMPARE(io.imageCount(), -1);
+ }
+ QImage image = io.read();
+ if (!success) {
+ QVERIFY(image.isNull());
+ return;
+ }
+
+ QVERIFY2(!image.isNull(), io.errorString().toLatin1().constData());
+
+ // No format
+ QImageReader io2(prefix + fileName);
+ QVERIFY2(!io2.read().isNull(), io.errorString().toLatin1().constData());
+
+ // No extension, no format
+ QImageReader io3(prefix + fileName.left(fileName.lastIndexOf(QLatin1Char('.'))));
+ QVERIFY2(!io3.read().isNull(), io.errorString().toLatin1().constData());
+
+ // Read into \a image2
+ QImage image2;
+ QImageReader image2Reader(prefix + fileName, i ? QByteArray() : format);
+ QCOMPARE(image2Reader.format(), format);
+ QVERIFY(image2Reader.read(&image2));
+ if (image2Reader.canRead()) {
+ if (i)
+ QVERIFY(!image2Reader.format().isEmpty());
+ else
+ QCOMPARE(image2Reader.format(), format);
+ } else {
+ if (i)
+ QVERIFY(image2Reader.format().isEmpty());
+ else
+ QVERIFY(!image2Reader.format().isEmpty());
+ }
+ QCOMPARE(image, image2);
+ do {
+ QVERIFY2(!image.isNull(), io.errorString().toLatin1().constData());
+ } while (!(image = io.read()).isNull());
+ }
+}
+
+void tst_QImageReader::jpegRgbCmyk()
+{
+ QImage image1(prefix + QLatin1String("YCbCr_cmyk.jpg"));
+ QImage image2(prefix + QLatin1String("YCbCr_cmyk.png"));
+
+ if (PlatformQuirks::isImageLoaderImprecise()) {
+ // first, do some obvious tests
+ QCOMPARE(image1.height(), image2.height());
+ QCOMPARE(image1.width(), image2.width());
+ QCOMPARE(image1.format(), image2.format());
+ QCOMPARE(image1.format(), QImage::Format_RGB32);
+
+ // compare all the pixels with a slack of 3. This ignores rounding errors in libjpeg/libpng
+ for (int h = 0; h < image1.height(); ++h) {
+ const uchar *s1 = image1.constScanLine(h);
+ const uchar *s2 = image2.constScanLine(h);
+ for (int w = 0; w < image1.width() * 4; ++w) {
+ if (*s1 != *s2) {
+ QVERIFY2(qAbs(*s1 - *s2) <= 3, qPrintable(QString("images differ in line %1, col %2 (image1: %3, image2: %4)").arg(h).arg(w).arg(*s1, 0, 16).arg(*s2, 0, 16)));
+ }
+ s1++;
+ s2++;
+ }
+ }
+ } else {
+ QCOMPARE(image1, image2);
+ }
+}
+
+void tst_QImageReader::setScaledSize_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QSize>("newSize");
+ QTest::addColumn<QByteArray>("format");
+
+ QTest::newRow("BMP: colorful") << "colorful" << QSize(200, 200) << QByteArray("bmp");
+ QTest::newRow("BMP: font") << "font" << QSize(200, 200) << QByteArray("bmp");
+ QTest::newRow("XPM: marble") << "marble" << QSize(200, 200) << QByteArray("xpm");
+ QTest::newRow("PNG: kollada") << "kollada" << QSize(200, 200) << QByteArray("png");
+ QTest::newRow("PPM: teapot") << "teapot" << QSize(200, 200) << QByteArray("ppm");
+ QTest::newRow("PPM: runners") << "runners.ppm" << QSize(400, 400) << QByteArray("ppm");
+ QTest::newRow("PPM: test") << "test.ppm" << QSize(10, 10) << QByteArray("ppm");
+ QTest::newRow("XBM: gnus") << "gnus" << QSize(200, 200) << QByteArray("xbm");
+
+ QTest::newRow("JPEG: beavis A") << "beavis" << QSize(200, 200) << QByteArray("jpeg");
+ QTest::newRow("JPEG: beavis B") << "beavis" << QSize(175, 175) << QByteArray("jpeg");
+ QTest::newRow("JPEG: beavis C") << "beavis" << QSize(100, 100) << QByteArray("jpeg");
+ QTest::newRow("JPEG: beavis D") << "beavis" << QSize(100, 200) << QByteArray("jpeg");
+ QTest::newRow("JPEG: beavis E") << "beavis" << QSize(200, 100) << QByteArray("jpeg");
+ QTest::newRow("JPEG: beavis F") << "beavis" << QSize(87, 87) << QByteArray("jpeg");
+ QTest::newRow("JPEG: beavis G") << "beavis" << QSize(50, 45) << QByteArray("jpeg");
+ QTest::newRow("JPEG: beavis H") << "beavis" << QSize(43, 43) << QByteArray("jpeg");
+ QTest::newRow("JPEG: beavis I") << "beavis" << QSize(25, 25) << QByteArray("jpeg");
+
+ QTest::newRow("GIF: earth") << "earth" << QSize(200, 200) << QByteArray("gif");
+ QTest::newRow("GIF: trolltech") << "trolltech" << QSize(200, 200) << QByteArray("gif");
+
+ QTest::newRow("MNG: ball") << "ball" << QSize(200, 200) << QByteArray("mng");
+ QTest::newRow("MNG: fire") << "fire" << QSize(200, 200) << QByteArray("mng");
+
+ QTest::newRow("SVG: rect") << "rect" << QSize(200, 200) << QByteArray("svg");
+ QTest::newRow("SVGZ: rect") << "rect" << QSize(200, 200) << QByteArray("svgz");
+}
+
+void tst_QImageReader::setScaledSize()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QSize, newSize);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QImageReader reader(prefix + fileName);
+ reader.setScaledSize(newSize);
+ QImage image = reader.read();
+ QVERIFY(!image.isNull());
+
+ QCOMPARE(image.size(), newSize);
+}
+
+void tst_QImageReader::task255627_setNullScaledSize_data()
+{
+ setScaledSize_data();
+}
+
+void tst_QImageReader::task255627_setNullScaledSize()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QImageReader reader(prefix + fileName);
+
+ // set a null size
+ reader.setScaledSize(QSize(0, 0));
+ reader.setQuality(0);
+ QImage image = reader.read();
+ QVERIFY(image.isNull());
+ QCOMPARE(image.size(), QSize(0, 0));
+}
+
+void tst_QImageReader::setClipRect_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QRect>("newRect");
+ QTest::addColumn<QByteArray>("format");
+ QTest::newRow("BMP: colorful") << "colorful" << QRect(0, 0, 50, 50) << QByteArray("bmp");
+ QTest::newRow("BMP: test32bfv4") << "test32bfv4" << QRect(0, 0, 50, 50) << QByteArray("bmp");
+ QTest::newRow("BMP: test32v5") << "test32v5" << QRect(0, 0, 50, 50) << QByteArray("bmp");
+ QTest::newRow("BMP: font") << "font" << QRect(0, 0, 50, 50) << QByteArray("bmp");
+ QTest::newRow("BMP: 4bpp uncompressed") << "tst7.bmp" << QRect(0, 0, 31, 31) << QByteArray("bmp");
+ QTest::newRow("XPM: marble") << "marble" << QRect(0, 0, 50, 50) << QByteArray("xpm");
+ QTest::newRow("PNG: kollada") << "kollada" << QRect(0, 0, 50, 50) << QByteArray("png");
+ QTest::newRow("PPM: teapot") << "teapot" << QRect(0, 0, 50, 50) << QByteArray("ppm");
+ QTest::newRow("PPM: runners") << "runners.ppm" << QRect(0, 0, 50, 50) << QByteArray("ppm");
+ QTest::newRow("PPM: test") << "test.ppm" << QRect(0, 0, 50, 50) << QByteArray("ppm");
+ QTest::newRow("XBM: gnus") << "gnus" << QRect(0, 0, 50, 50) << QByteArray("xbm");
+
+ QTest::newRow("JPEG: beavis") << "beavis" << QRect(0, 0, 50, 50) << QByteArray("jpeg");
+
+ QTest::newRow("GIF: earth") << "earth" << QRect(0, 0, 50, 50) << QByteArray("gif");
+ QTest::newRow("GIF: trolltech") << "trolltech" << QRect(0, 0, 50, 50) << QByteArray("gif");
+
+ QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng");
+ QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng");
+
+ QTest::newRow("SVG: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svg");
+ QTest::newRow("SVGZ: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svgz");
+}
+
+void tst_QImageReader::setClipRect()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QRect, newRect);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QImageReader reader(prefix + fileName);
+ reader.setClipRect(newRect);
+ QImage image = reader.read();
+ QVERIFY(!image.isNull());
+ QCOMPARE(image.rect(), newRect);
+
+ QImageReader originalReader(prefix + fileName);
+ QImage originalImage = originalReader.read();
+ QCOMPARE(originalImage.copy(newRect), image);
+}
+
+void tst_QImageReader::setScaledClipRect_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QRect>("newRect");
+ QTest::addColumn<QByteArray>("format");
+
+ QTest::newRow("BMP: colorful") << "colorful" << QRect(0, 0, 50, 50) << QByteArray("bmp");
+ QTest::newRow("BMP: test32bfv4") << "test32bfv4" << QRect(0, 0, 50, 50) << QByteArray("bmp");
+ QTest::newRow("BMP: test32v5") << "test32v5" << QRect(0, 0, 50, 50) << QByteArray("bmp");
+ QTest::newRow("BMP: font") << "font" << QRect(0, 0, 50, 50) << QByteArray("bmp");
+ QTest::newRow("XPM: marble") << "marble" << QRect(0, 0, 50, 50) << QByteArray("xpm");
+ QTest::newRow("PNG: kollada") << "kollada" << QRect(0, 0, 50, 50) << QByteArray("png");
+ QTest::newRow("PPM: teapot") << "teapot" << QRect(0, 0, 50, 50) << QByteArray("ppm");
+ QTest::newRow("PPM: runners") << "runners.ppm" << QRect(0, 0, 50, 50) << QByteArray("ppm");
+ QTest::newRow("PPM: test") << "test.ppm" << QRect(0, 0, 50, 50) << QByteArray("ppm");
+ QTest::newRow("XBM: gnus") << "gnus" << QRect(0, 0, 50, 50) << QByteArray("xbm");
+
+ QTest::newRow("JPEG: beavis") << "beavis" << QRect(0, 0, 50, 50) << QByteArray("jpeg");
+
+ QTest::newRow("GIF: earth") << "earth" << QRect(0, 0, 50, 50) << QByteArray("gif");
+ QTest::newRow("GIF: trolltech") << "trolltech" << QRect(0, 0, 50, 50) << QByteArray("gif");
+
+ QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng");
+ QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng");
+
+ QTest::newRow("SVG: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svg");
+ QTest::newRow("SVGZ: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svgz");
+}
+
+void tst_QImageReader::setScaledClipRect()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QRect, newRect);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QImageReader reader(prefix + fileName);
+ reader.setScaledSize(QSize(300, 300));
+ reader.setScaledClipRect(newRect);
+ QImage image = reader.read();
+ QVERIFY(!image.isNull());
+ QCOMPARE(image.rect(), newRect);
+
+ QImageReader originalReader(prefix + fileName);
+ originalReader.setScaledSize(QSize(300, 300));
+ QImage originalImage = originalReader.read();
+ QCOMPARE(originalImage.copy(newRect), image);
+}
+
+void tst_QImageReader::imageFormat_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QByteArray>("format");
+ QTest::addColumn<QImage::Format>("imageFormat");
+
+ QTest::newRow("pbm") << QString("image.pbm") << QByteArray("pbm") << QImage::Format_Mono;
+ QTest::newRow("pgm") << QString("image.pgm") << QByteArray("pgm") << QImage::Format_Indexed8;
+ QTest::newRow("ppm-1") << QString("image.ppm") << QByteArray("ppm") << QImage::Format_RGB32;
+ QTest::newRow("ppm-2") << QString("teapot.ppm") << QByteArray("ppm") << QImage::Format_RGB32;
+ QTest::newRow("ppm-3") << QString("runners.ppm") << QByteArray("ppm") << QImage::Format_RGB32;
+ QTest::newRow("ppm-4") << QString("test.ppm") << QByteArray("ppm") << QImage::Format_RGB32;
+
+ QTest::newRow("jpeg-1") << QString("beavis.jpg") << QByteArray("jpeg") << QImage::Format_Indexed8;
+ QTest::newRow("jpeg-2") << QString("YCbCr_cmyk.jpg") << QByteArray("jpeg") << QImage::Format_RGB32;
+ QTest::newRow("jpeg-3") << QString("YCbCr_rgb.jpg") << QByteArray("jpeg") << QImage::Format_RGB32;
+
+ QTest::newRow("gif-1") << QString("earth.gif") << QByteArray("gif") << QImage::Format_Invalid;
+ QTest::newRow("gif-2") << QString("trolltech.gif") << QByteArray("gif") << QImage::Format_Invalid;
+
+ QTest::newRow("xbm") << QString("gnus.xbm") << QByteArray("xbm") << QImage::Format_MonoLSB;
+ QTest::newRow("xpm") << QString("marble.xpm") << QByteArray("xpm") << QImage::Format_Indexed8;
+ QTest::newRow("bmp-1") << QString("colorful.bmp") << QByteArray("bmp") << QImage::Format_Indexed8;
+ QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp") << QImage::Format_Indexed8;
+ QTest::newRow("bmp-3") << QString("test32bfv4.bmp") << QByteArray("bmp") << QImage::Format_RGB32;
+ QTest::newRow("bmp-4") << QString("test32v5.bmp") << QByteArray("bmp") << QImage::Format_RGB32;
+ QTest::newRow("png") << QString("kollada.png") << QByteArray("png") << QImage::Format_ARGB32;
+ QTest::newRow("png-2") << QString("YCbCr_cmyk.png") << QByteArray("png") << QImage::Format_RGB32;
+ QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng") << QImage::Format_Invalid;
+ QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng") << QImage::Format_Invalid;
+ QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg") << QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz") << QImage::Format_ARGB32_Premultiplied;
+}
+
+void tst_QImageReader::imageFormat()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QByteArray, format);
+ QFETCH(QImage::Format, imageFormat);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QCOMPARE(QImageReader::imageFormat(prefix + fileName), format);
+ QImageReader reader(prefix + fileName);
+ QCOMPARE(reader.imageFormat(), imageFormat);
+}
+
+void tst_QImageReader::blackXPM()
+{
+ QImage image(prefix + QLatin1String("black.xpm"));
+ QImage image2(prefix + QLatin1String("black.png"));
+ QCOMPARE(image.pixel(25, 25), qRgb(190, 190, 190));
+ QCOMPARE(image.pixel(25, 25), image2.pixel(25, 25));
+}
+
+void tst_QImageReader::transparentXPM()
+{
+ QImage image(prefix + QLatin1String("nontransparent.xpm"));
+ QImage image2(prefix + QLatin1String("transparent.xpm"));
+ QCOMPARE(image.format(), QImage::Format_RGB32);
+ QCOMPARE(image2.format(), QImage::Format_ARGB32);
+}
+
+void tst_QImageReader::multiWordNamedColorXPM()
+{
+ QImage image(prefix + QLatin1String("namedcolors.xpm"));
+ QCOMPARE(image.pixel(0, 0), qRgb(102, 139, 139)); // pale turquoise 4
+ QCOMPARE(image.pixel(0, 1), qRgb(250, 250, 210)); // light golden rod yellow
+ QCOMPARE(image.pixel(0, 2), qRgb(255, 250, 205)); // lemon chiffon
+}
+
+void tst_QImageReader::supportedFormats()
+{
+ QList<QByteArray> formats = QImageReader::supportedImageFormats();
+ QList<QByteArray> sortedFormats = formats;
+ qSort(sortedFormats);
+
+ // check that the list is sorted
+ QCOMPARE(formats, sortedFormats);
+
+ QSet<QByteArray> formatSet;
+ foreach (QByteArray format, formats)
+ formatSet << format;
+
+ // check that the list does not contain duplicates
+ QCOMPARE(formatSet.size(), formats.size());
+}
+
+void tst_QImageReader::setBackgroundColor_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QColor>("color");
+
+ QTest::newRow("BMP: colorful") << QString("colorful.bmp") << QColor(Qt::white);
+ QTest::newRow("BMP: font") << QString("font.bmp") << QColor(Qt::black);
+ QTest::newRow("BMP: signed char") << QString("crash-signed-char.bmp") << QColor(Qt::red);
+ QTest::newRow("XPM: marble") << QString("marble.xpm") << QColor(Qt::darkRed);
+ QTest::newRow("PNG: kollada") << QString("kollada.png") << QColor(Qt::green);
+ QTest::newRow("PPM: teapot") << QString("teapot.ppm") << QColor(Qt::darkGreen);
+ QTest::newRow("PPM: runners") << QString("runners.ppm") << QColor(Qt::red);
+ QTest::newRow("PPM: test") << QString("test.ppm") << QColor(Qt::white);
+ QTest::newRow("XBM: gnus") << QString("gnus.xbm") << QColor(Qt::blue);
+
+ QTest::newRow("JPEG: beavis") << QString("beavis.jpg") << QColor(Qt::darkBlue);
+
+ QTest::newRow("GIF: earth") << QString("earth.gif") << QColor(Qt::cyan);
+ QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << QColor(Qt::magenta);
+
+ QTest::newRow("MNG: ball") << QString("ball.mng") << QColor(Qt::yellow);
+ QTest::newRow("MNG: fire") << QString("fire.mng") << QColor(Qt::gray);
+
+ QTest::newRow("SVG: rect") << QString("rect.svg") << QColor(Qt::darkGreen);
+ QTest::newRow("SVGZ: rect") << QString("rect.svgz") << QColor(Qt::darkGreen);
+}
+
+void tst_QImageReader::setBackgroundColor()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QColor, color);
+ QImageReader io("images/" + fileName);
+ io.setBackgroundColor(color);
+ if (io.backgroundColor().isValid())
+ QCOMPARE(io.backgroundColor(), color);
+}
+
+void tst_QImageReader::supportsAnimation_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<bool>("success");
+
+ QTest::newRow("BMP: colorful") << QString("colorful.bmp") << false;
+ QTest::newRow("BMP: font") << QString("font.bmp") << false;
+ QTest::newRow("BMP: signed char") << QString("crash-signed-char.bmp") << false;
+ QTest::newRow("BMP: test32bfv4") << QString("test32bfv4.bmp") << false;;
+ QTest::newRow("BMP: test32v5") << QString("test32v5.bmp") << false;
+ QTest::newRow("XPM: marble") << QString("marble.xpm") << false;
+ QTest::newRow("PNG: kollada") << QString("kollada.png") << false;
+ QTest::newRow("PPM: teapot") << QString("teapot.ppm") << false;
+ QTest::newRow("PPM: teapot") << QString("teapot.ppm") << false;
+ QTest::newRow("PPM: runners") << QString("runners.ppm") << false;
+ QTest::newRow("XBM: gnus") << QString("gnus.xbm") << false;
+
+ QTest::newRow("JPEG: beavis") << QString("beavis.jpg") << false;
+
+ QTest::newRow("GIF: earth") << QString("earth.gif") << true;
+ QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << true;
+
+ QTest::newRow("MNG: ball") << QString("ball.mng") << true;
+ QTest::newRow("MNG: fire") << QString("fire.mng") << true;
+
+ QTest::newRow("SVG: rect") << QString("rect.svg") << false;
+ QTest::newRow("SVGZ: rect") << QString("rect.svgz") << false;
+}
+
+void tst_QImageReader::supportsAnimation()
+{
+ QFETCH(QString, fileName);
+ QFETCH(bool, success);
+ QImageReader io(prefix + fileName);
+ QCOMPARE(io.supportsAnimation(), success);
+}
+
+void tst_QImageReader::sizeBeforeRead_data()
+{
+ imageFormat_data();
+}
+
+void tst_QImageReader::sizeBeforeRead()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QImageReader reader(prefix + fileName);
+ QVERIFY(reader.canRead());
+ if (format == "mng") {
+ QCOMPARE(reader.size(), QSize());
+ return;
+ }
+
+ QSize size = reader.size();
+ QVERIFY(reader.canRead());
+ QImage image = reader.read();
+ QVERIFY(!image.isNull());
+ QCOMPARE(size, image.size());
+}
+
+void tst_QImageReader::sizeBeforeFormat_data()
+{
+ imageFormat_data();
+}
+
+void tst_QImageReader::sizeBeforeFormat()
+{
+ QFETCH(QString, fileName);
+
+ QByteArray formatA, formatB;
+
+ {
+ QImageReader reader(prefix + fileName);
+ formatA = reader.format();
+ }
+
+ {
+ QImageReader reader(prefix + fileName);
+ QSize size = reader.size();
+ formatB = reader.format();
+ }
+
+ QCOMPARE(formatA, formatB);
+}
+
+void tst_QImageReader::imageFormatBeforeRead_data()
+{
+ imageFormat_data();
+}
+
+void tst_QImageReader::imageFormatBeforeRead()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QByteArray, format);
+ QFETCH(QImage::Format, imageFormat);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QImageReader reader(fileName);
+ if (reader.supportsOption(QImageIOHandler::ImageFormat)) {
+ QImage::Format fileFormat = reader.imageFormat();
+ QCOMPARE(fileFormat, imageFormat);
+ QSize size = reader.size();
+ QImage image(size, fileFormat);
+ QVERIFY(reader.read(&image));
+ QCOMPARE(image.format(), fileFormat);
+ }
+}
+
+void tst_QImageReader::gifHandlerBugs()
+{
+ SKIP_IF_UNSUPPORTED("gif");
+
+ {
+ QImageReader io(prefix + "trolltech.gif");
+ QVERIFY(io.loopCount() != 1);
+ int count=0;
+ for (; io.canRead(); io.read(), ++count) ;
+ QVERIFY(count == 34);
+ }
+
+ // Task 95166
+ {
+ QImageReader io1(prefix + "bat1.gif");
+ QImageReader io2(prefix + "bat2.gif");
+ QVERIFY(io1.canRead());
+ QVERIFY(io2.canRead());
+ QImage im1 = io1.read();
+ QImage im2 = io2.read();
+ QVERIFY(!im1.isNull());
+ QVERIFY(!im2.isNull());
+ QCOMPARE(im1, im2);
+ }
+
+ // Task 9994
+ {
+ QImageReader io1(prefix + "noclearcode.gif");
+ QImageReader io2(prefix + "noclearcode.bmp");
+ QVERIFY(io1.canRead()); QVERIFY(io2.canRead());
+ QImage im1 = io1.read(); QImage im2 = io2.read();
+ QVERIFY(!im1.isNull()); QVERIFY(!im2.isNull());
+ QCOMPARE(im1.convertToFormat(QImage::Format_ARGB32), im2.convertToFormat(QImage::Format_ARGB32));
+ }
+
+ // Check the undocumented feature.
+ {
+ QImageReader io(prefix + "endless-anim.gif");
+ QVERIFY(io.canRead());
+ QCOMPARE(io.loopCount(), -1);
+ }
+}
+
+void tst_QImageReader::animatedGif()
+{
+ SKIP_IF_UNSUPPORTED("gif");
+
+ QImageReader io(":images/qt.gif");
+ QImage image = io.read();
+ QVERIFY(!image.isNull());
+ int i = 0;
+ while(!image.isNull()){
+ QString frameName = QString(":images/qt%1.gif").arg(++i);
+ QCOMPARE(image, QImage(frameName));
+ image = io.read();
+ }
+}
+
+// http://bugreports.qt.nokia.com/browse/QTBUG-6696
+// Check the count of images in various call orders...
+void tst_QImageReader::gifImageCount()
+{
+ SKIP_IF_UNSUPPORTED("gif");
+
+ // just read every frame... and see how much we got..
+ {
+ QImageReader io(":images/four-frames.gif");
+
+ QVERIFY(io.canRead());
+ QImage blackFrame = io.read();
+
+ QVERIFY(io.canRead());
+ QImage whiteFrame = io.read();
+
+ QVERIFY(io.canRead());
+ QImage greenFrame = io.read();
+
+ QVERIFY(io.imageCount() == 4);
+
+ QVERIFY(io.canRead());
+ QImage blueFrame = io.read();
+
+ QVERIFY(!io.canRead());
+ QImage emptyFrame = io.read();
+
+ QVERIFY(!io.canRead());
+ QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0));
+ QCOMPARE(blackFrame.size(), QSize(64,64));
+
+ QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff));
+ QCOMPARE(whiteFrame.size(), QSize(64,64));
+
+ QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0));
+ QCOMPARE(greenFrame.size(), QSize(64,64));
+
+ QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff));
+ QCOMPARE(blueFrame.size(), QSize(64,64));
+ QVERIFY(emptyFrame.isNull());
+ }
+
+ // Read and get the size
+ {
+ QImageReader io(":images/four-frames.gif");
+
+ QVERIFY(io.canRead());
+ QCOMPARE(io.size(), QSize(64,64));
+
+ QVERIFY(io.canRead());
+ QCOMPARE(io.size(), QSize(64,64));
+ QCOMPARE(io.size(), QSize(64,64));
+ QVERIFY(io.canRead());
+ QImage blackFrame = io.read();
+
+ QVERIFY(io.canRead());
+ QCOMPARE(io.size(), QSize(64,64));
+ QCOMPARE(io.size(), QSize(64,64));
+ QVERIFY(io.canRead());
+ QImage whiteFrame = io.read();
+
+ QVERIFY(io.canRead());
+ QCOMPARE(io.size(), QSize(64,64));
+ QCOMPARE(io.size(), QSize(64,64));
+ QVERIFY(io.canRead());
+ QImage greenFrame = io.read();
+
+ QVERIFY(io.canRead());
+ QCOMPARE(io.size(), QSize(64,64));
+ QCOMPARE(io.size(), QSize(64,64));
+ QVERIFY(io.canRead());
+ QImage blueFrame = io.read();
+
+ QVERIFY(!io.canRead());
+ QCOMPARE(io.size(), QSize());
+ QCOMPARE(io.size(), QSize());
+ QVERIFY(!io.canRead());
+ QImage emptyFrame = io.read();
+
+ QVERIFY(!io.canRead());
+ QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0));
+ QCOMPARE(blackFrame.size(), QSize(64,64));
+
+ QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff));
+ QCOMPARE(whiteFrame.size(), QSize(64,64));
+
+ QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0));
+ QCOMPARE(greenFrame.size(), QSize(64,64));
+
+ QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff));
+ QCOMPARE(blueFrame.size(), QSize(64,64));
+ QVERIFY(emptyFrame.isNull());
+ }
+
+ // Do a Size query as substitute for canRead
+ {
+ QImageReader io(":images/four-frames.gif");
+
+ QCOMPARE(io.size(), QSize(64,64));
+ QCOMPARE(io.size(), QSize(64,64));
+ QImage blackFrame = io.read();
+
+ QCOMPARE(io.size(), QSize(64,64));
+ QCOMPARE(io.size(), QSize(64,64));
+ QImage whiteFrame = io.read();
+
+ QCOMPARE(io.size(), QSize(64,64));
+ QCOMPARE(io.size(), QSize(64,64));
+ QImage greenFrame = io.read();
+
+ QCOMPARE(io.size(), QSize(64,64));
+ QCOMPARE(io.size(), QSize(64,64));
+ QImage blueFrame = io.read();
+
+ QCOMPARE(io.size(), QSize());
+ QVERIFY(!io.canRead());
+ QImage emptyFrame = io.read();
+
+ QVERIFY(!io.canRead());
+ QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0));
+ QCOMPARE(blackFrame.size(), QSize(64,64));
+
+ QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff));
+ QCOMPARE(whiteFrame.size(), QSize(64,64));
+
+ QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0));
+ QCOMPARE(greenFrame.size(), QSize(64,64));
+
+ QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff));
+ QCOMPARE(blueFrame.size(), QSize(64,64));
+ QVERIFY(emptyFrame.isNull());
+ }
+ {
+ QImageReader io(":images/trolltech.gif");
+ QVERIFY(io.imageCount() == 34);
+ QVERIFY(io.size() == QSize(128,64));
+ }
+}
+
+void tst_QImageReader::gifLoopCount()
+{
+ SKIP_IF_UNSUPPORTED("gif");
+
+ {
+ QImageReader io(":images/qt-gif-anim.gif");
+ QCOMPARE(io.loopCount(), -1); // infinite loop
+ }
+ {
+ QImageReader io(":images/qt-gif-noanim.gif");
+ QCOMPARE(io.loopCount(), 0); // no loop
+ }
+}
+
+class Server : public QObject
+{
+ Q_OBJECT
+public:
+ Server(const QByteArray &data) :serverSocket(0)
+ {
+ connect(&server, SIGNAL(newConnection()), this, SLOT(acceptNewConnection()));
+ server.listen();
+ this->data = data;
+ }
+
+public slots:
+ void runTest()
+ {
+ connect(&clientSocket, SIGNAL(connected()), this, SLOT(connected()));
+ clientSocket.connectToHost(QHostAddress::LocalHost, server.serverPort());
+ }
+
+public:
+ inline QTcpSocket *socket() const { return serverSocket; }
+
+signals:
+ void ready();
+
+private slots:
+ void acceptNewConnection()
+ {
+ serverSocket = server.nextPendingConnection();
+ connect(serverSocket, SIGNAL(error(QAbstractSocket::SocketError)),
+ this, SLOT(remoteHostClosed()));
+ }
+
+ void connected()
+ {
+ clientSocket.write(data);
+ clientSocket.disconnectFromHost();
+ }
+
+ void remoteHostClosed()
+ {
+ emit ready();
+ }
+
+private:
+ QTcpServer server;
+ QTcpSocket clientSocket;
+ QTcpSocket *serverSocket;
+ QByteArray data;
+};
+
+void tst_QImageReader::readFromDevice_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QByteArray>("format");
+
+ QTest::newRow("pbm") << QString("image.pbm") << QByteArray("pbm");
+ QTest::newRow("pgm") << QString("image.pgm") << QByteArray("pgm");
+ QTest::newRow("ppm-1") << QString("image.ppm") << QByteArray("ppm");
+ QTest::newRow("ppm-2") << QString("teapot.ppm") << QByteArray("ppm");
+ QTest::newRow("ppm-3") << QString("teapot.ppm") << QByteArray("ppm");
+ QTest::newRow("ppm-4") << QString("runners.ppm") << QByteArray("ppm");
+
+ QTest::newRow("jpeg-1") << QString("beavis.jpg") << QByteArray("jpeg");
+ QTest::newRow("jpeg-2") << QString("YCbCr_cmyk.jpg") << QByteArray("jpeg");
+ QTest::newRow("jpeg-3") << QString("YCbCr_rgb.jpg") << QByteArray("jpeg");
+ QTest::newRow("jpeg-4") << QString("qtbug13653-no_eoi.jpg") << QByteArray("jpeg");
+
+ QTest::newRow("gif-1") << QString("earth.gif") << QByteArray("gif");
+ QTest::newRow("gif-2") << QString("trolltech.gif") << QByteArray("gif");
+
+ QTest::newRow("xbm") << QString("gnus.xbm") << QByteArray("xbm");
+ QTest::newRow("xpm") << QString("marble.xpm") << QByteArray("xpm");
+ QTest::newRow("bmp-1") << QString("colorful.bmp") << QByteArray("bmp");
+ QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp");
+ QTest::newRow("bmp-3") << QString("test32bfv4.bmp") << QByteArray("bmp");
+ QTest::newRow("bmp-4") << QString("test32v5.bmp") << QByteArray("bmp");
+ QTest::newRow("png") << QString("kollada.png") << QByteArray("png");
+
+ QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng");
+ QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng");
+
+ QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg");
+ QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz");
+}
+
+void tst_QImageReader::readFromDevice()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QImage expectedImage(prefix + fileName, format);
+
+ QFile file(prefix + fileName);
+ QVERIFY(file.open(QFile::ReadOnly));
+ QByteArray imageData = file.readAll();
+ QVERIFY(!imageData.isEmpty());
+ {
+ QBuffer buffer;
+ buffer.setData(imageData);
+ QVERIFY(buffer.open(QBuffer::ReadOnly));
+
+ QImageReader reader(&buffer);
+ QVERIFY(reader.canRead());
+ QImage imageReaderImage = reader.read();
+
+ QCOMPARE(imageReaderImage, expectedImage);
+
+ buffer.seek(0);
+
+ QImage image1;
+ QVERIFY(image1.loadFromData((const uchar *)buffer.data().data(),
+ buffer.data().size(), format.data()));
+ QCOMPARE(image1, expectedImage);
+
+ QByteArray throughBase64 = QByteArray::fromBase64(imageData.toBase64());
+ QVERIFY(image1.loadFromData((const uchar *)throughBase64.data(),
+ throughBase64.size(), format.data()));
+ QCOMPARE(image1, expectedImage);
+ }
+
+#if defined (Q_OS_SYMBIAN) && defined (__WINS__)
+ //the emulator hangs in socket write (this is a test bug, it assumes the TCP stack can accept a whole image to its buffers)
+ if(imageData.size() > 16384)
+ QSKIP("image larger than socket buffer (test needs to be rewritten)", SkipSingle);
+#endif
+ Server server(imageData);
+ QEventLoop loop;
+ connect(&server, SIGNAL(ready()), &loop, SLOT(quit()));
+ QTimer::singleShot(0, &server, SLOT(runTest()));
+ QTimer::singleShot(5000, &loop, SLOT(quit()));
+ loop.exec();
+
+ QImageReader reader(server.socket(), format == "xbm" ? "xbm" : "");
+ if (format == "xbm")
+ QVERIFY(!reader.canRead());
+ else
+ QVERIFY(reader.canRead());
+ QImage imageReaderImage = reader.read();
+ QCOMPARE(imageReaderImage, expectedImage);
+}
+
+void tst_QImageReader::readFromFileAfterJunk_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QByteArray>("format");
+
+ QTest::newRow("pbm") << QString("image.pbm") << QByteArray("pbm");
+ QTest::newRow("pgm") << QString("image.pgm") << QByteArray("pgm");
+ QTest::newRow("ppm-1") << QString("image.ppm") << QByteArray("ppm");
+ QTest::newRow("ppm-2") << QString("teapot.ppm") << QByteArray("ppm");
+ QTest::newRow("ppm-3") << QString("teapot.ppm") << QByteArray("ppm");
+ QTest::newRow("ppm-4") << QString("runners.ppm") << QByteArray("ppm");
+
+ QTest::newRow("jpeg-1") << QString("beavis.jpg") << QByteArray("jpeg");
+ QTest::newRow("jpeg-2") << QString("YCbCr_cmyk.jpg") << QByteArray("jpeg");
+ QTest::newRow("jpeg-3") << QString("YCbCr_rgb.jpg") << QByteArray("jpeg");
+
+ QTest::newRow("xbm") << QString("gnus.xbm") << QByteArray("xbm");
+ QTest::newRow("xpm") << QString("marble.xpm") << QByteArray("xpm");
+ QTest::newRow("bmp-1") << QString("colorful.bmp") << QByteArray("bmp");
+ QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp");
+ QTest::newRow("bmp-3") << QString("test32bfv4.bmp") << QByteArray("bmp");
+ QTest::newRow("bmp-4") << QString("test32v5.bmp") << QByteArray("bmp");
+ QTest::newRow("png") << QString("kollada.png") << QByteArray("png");
+ QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg");
+ QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz");
+}
+
+void tst_QImageReader::readFromFileAfterJunk()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QFile::remove("junk");
+ QFile junkFile("junk");
+ QVERIFY(junkFile.open(QFile::WriteOnly));
+
+ QFile imageFile(prefix + fileName);
+ QVERIFY(imageFile.open(QFile::ReadOnly));
+ QByteArray imageData = imageFile.readAll();
+ QVERIFY(!imageData.isNull());
+
+ int iterations = 3;
+ if (format == "ppm" || format == "pbm" || format == "pgm" || format == "svg" || format == "svgz")
+ iterations = 1;
+
+ if (format == "mng" || !QImageWriter::supportedImageFormats().contains(format)) {
+ for (int i = 0; i < iterations; ++i) {
+ junkFile.write("deadbeef", 9);
+ QCOMPARE(junkFile.write(imageData), qint64(imageData.size()));
+ }
+ } else {
+ for (int i = 0; i < iterations; ++i) {
+ QImageWriter writer(&junkFile, format);
+ junkFile.write("deadbeef", 9);
+ QVERIFY(writer.write(QImage(prefix + fileName)));
+ }
+ }
+ junkFile.close();
+ junkFile.open(QFile::ReadOnly);
+
+ for (int i = 0; i < iterations; ++i) {
+ QByteArray ole = junkFile.read(9);
+ junkFile.ungetChar(ole[ole.size() - 1]);
+ char c;
+ junkFile.getChar(&c);
+ QImageReader reader(&junkFile);
+ QVERIFY(reader.canRead());
+ QVERIFY(!reader.read().isNull());
+ }
+}
+
+void tst_QImageReader::devicePosition_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QByteArray>("format");
+
+ QTest::newRow("pbm") << QString("image.pbm") << QByteArray("pbm");
+ QTest::newRow("pgm") << QString("image.pgm") << QByteArray("pgm");
+ QTest::newRow("ppm-1") << QString("image.ppm") << QByteArray("ppm");
+
+ QTest::newRow("jpeg-1") << QString("beavis.jpg") << QByteArray("jpeg");
+ QTest::newRow("jpeg-2") << QString("YCbCr_cmyk.jpg") << QByteArray("jpeg");
+ QTest::newRow("jpeg-3") << QString("YCbCr_rgb.jpg") << QByteArray("jpeg");
+
+ QTest::newRow("gif-1") << QString("earth.gif") << QByteArray("gif");
+
+ QTest::newRow("xbm") << QString("gnus.xbm") << QByteArray("xbm");
+ QTest::newRow("xpm") << QString("marble.xpm") << QByteArray("xpm");
+ QTest::newRow("bmp-1") << QString("colorful.bmp") << QByteArray("bmp");
+ QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp");
+ QTest::newRow("bmp-3") << QString("test32bfv4.bmp") << QByteArray("bmp");
+ QTest::newRow("bmp-4") << QString("test32v5.bmp") << QByteArray("bmp");
+ QTest::newRow("png") << QString("kollada.png") << QByteArray("png");
+ QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg");
+ QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz");
+}
+
+void tst_QImageReader::devicePosition()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QImage expected(prefix + fileName);
+ QVERIFY(!expected.isNull());
+
+ QFile imageFile(prefix + fileName);
+ QVERIFY(imageFile.open(QFile::ReadOnly));
+ QByteArray imageData = imageFile.readAll();
+ QVERIFY(!imageData.isNull());
+ int imageDataSize = imageData.size();
+
+ const char *preStr = "prebeef\n";
+ int preLen = qstrlen(preStr);
+ imageData.prepend(preStr);
+ if (format != "svg" && format != "svgz") // Doesn't handle trailing data
+ imageData.append("\npostbeef");
+ QBuffer buf(&imageData);
+ buf.open(QIODevice::ReadOnly);
+ buf.seek(preLen);
+ QImageReader reader(&buf, format);
+ QCOMPARE(expected, reader.read());
+ if (format != "ppm" &&
+ format != "pgm" &&
+ format != "pbm" &&
+ format != "gif") // Known not to work
+ QCOMPARE(buf.pos(), qint64(preLen+imageDataSize));
+}
+
+
+void tst_QImageReader::readFromResources_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QByteArray>("format");
+ QTest::addColumn<QSize>("size");
+ QTest::addColumn<QString>("message");
+
+ QTest::newRow("corrupt.bmp") << QString("corrupt.bmp")
+ << QByteArray("bmp") << QSize(0, 0)
+ << QString("");
+ QTest::newRow("negativeheight.bmp") << QString("negativeheight.bmp")
+ << QByteArray("bmp") << QSize(127, 64)
+ << QString("");
+ QTest::newRow("font.bmp") << QString("font.bmp")
+ << QByteArray("bmp") << QSize(240, 8)
+ << QString("");
+ QTest::newRow("noclearcode.bmp") << QString("noclearcode.bmp")
+ << QByteArray("bmp") << QSize(29, 18)
+ << QString("");
+ QTest::newRow("colorful.bmp") << QString("colorful.bmp")
+ << QByteArray("bmp") << QSize(320, 200)
+ << QString("");
+ QTest::newRow("16bpp.bmp") << QString("16bpp.bmp")
+ << QByteArray("bmp") << QSize(320, 240)
+ << QString("");
+ QTest::newRow("crash-signed-char.bmp") << QString("crash-signed-char.bmp")
+ << QByteArray("bmp") << QSize(360, 280)
+ << QString("");
+ QTest::newRow("4bpp-rle.bmp") << QString("4bpp-rle.bmp")
+ << QByteArray("bmp") << QSize(640, 480)
+ << QString("");
+ QTest::newRow("test32bfv4.bmp") << QString("test32bfv4.bmp")
+ << QByteArray("bmp") << QSize(373, 156)
+ << QString("");
+ QTest::newRow("test32v5.bmp") << QString("test32v5.bmp")
+ << QByteArray("bmp") << QSize(373, 156)
+ << QString("");
+ QTest::newRow("corrupt.gif") << QString("corrupt.gif")
+ << QByteArray("gif") << QSize(0, 0)
+ << QString("");
+ QTest::newRow("trolltech.gif") << QString("trolltech.gif")
+ << QByteArray("gif") << QSize(128, 64)
+ << QString("");
+ QTest::newRow("noclearcode.gif") << QString("noclearcode.gif")
+ << QByteArray("gif") << QSize(29, 18)
+ << QString("");
+ QTest::newRow("earth.gif") << QString("earth.gif")
+ << QByteArray("gif") << QSize(320, 200)
+ << QString("");
+ QTest::newRow("bat1.gif") << QString("bat1.gif")
+ << QByteArray("gif") << QSize(32, 32)
+ << QString("");
+ QTest::newRow("bat2.gif") << QString("bat2.gif")
+ << QByteArray("gif") << QSize(32, 32)
+ << QString("");
+ QTest::newRow("corrupt.jpg") << QString("corrupt.jpg")
+ << QByteArray("jpg") << QSize(0, 0)
+ << QString("JPEG datastream contains no image");
+ QTest::newRow("beavis.jpg") << QString("beavis.jpg")
+ << QByteArray("jpg") << QSize(350, 350)
+ << QString("");
+ QTest::newRow("YCbCr_cmyk.jpg") << QString("YCbCr_cmyk.jpg")
+ << QByteArray("jpg") << QSize(75, 50)
+ << QString("");
+ QTest::newRow("YCbCr_rgb.jpg") << QString("YCbCr_rgb.jpg")
+ << QByteArray("jpg") << QSize(75, 50)
+ << QString("");
+ QTest::newRow("qtbug13653-no_eoi.jpg") << QString("qtbug13653-no_eoi.jpg")
+ << QByteArray("jpg") << QSize(240, 180)
+ << QString("");
+ QTest::newRow("corrupt.mng") << QString("corrupt.mng")
+ << QByteArray("mng") << QSize(0, 0)
+ << QString("MNG error 901: Application signalled I/O error; chunk IHDR; subcode 0:0");
+ QTest::newRow("fire.mng") << QString("fire.mng")
+ << QByteArray("mng") << QSize(30, 60)
+ << QString("");
+ QTest::newRow("ball.mng") << QString("ball.mng")
+ << QByteArray("mng") << QSize(32, 32)
+ << QString("");
+ QTest::newRow("rect.svg") << QString("rect.svg")
+ << QByteArray("svg") << QSize(105, 137)
+ << QString("");
+ QTest::newRow("rect.svgz") << QString("rect.svgz")
+ << QByteArray("svgz") << QSize(105, 137)
+ << QString("");
+ QTest::newRow("corrupt.svg") << QString("corrupt.svg")
+ << QByteArray("svg") << QSize(0, 0)
+ << QString("");
+ QTest::newRow("corrupt.svgz") << QString("corrupt.svgz")
+ << QByteArray("svgz") << QSize(0, 0)
+ << QString("");
+ QTest::newRow("image.pbm") << QString("image.pbm")
+ << QByteArray("pbm") << QSize(16, 6)
+ << QString("");
+ QTest::newRow("image.pgm") << QString("image.pgm")
+ << QByteArray("pgm") << QSize(24, 7)
+ << QString("");
+ QTest::newRow("corrupt.png") << QString("corrupt.png")
+ << QByteArray("png") << QSize(0, 0)
+ << QString("");
+ QTest::newRow("away.png") << QString("away.png")
+ << QByteArray("png") << QSize(16, 16)
+ << QString("");
+ QTest::newRow("image.png") << QString("image.png")
+ << QByteArray("png") << QSize(22, 22)
+ << QString("");
+ QTest::newRow("kollada.png") << QString("kollada.png")
+ << QByteArray("png") << QSize(436, 160)
+ << QString("");
+ QTest::newRow("black.png") << QString("black.png")
+ << QByteArray("png") << QSize(48, 48)
+ << QString("");
+ QTest::newRow("YCbCr_cmyk.png") << QString("YCbCr_cmyk.png")
+ << QByteArray("png") << QSize(75, 50)
+ << QString("");
+ QTest::newRow("teapot.ppm") << QString("teapot.ppm")
+ << QByteArray("ppm") << QSize(256, 256)
+ << QString("");
+ QTest::newRow("image.ppm") << QString("image.ppm")
+ << QByteArray("ppm") << QSize(4, 4)
+ << QString("");
+ QTest::newRow("runners.ppm") << QString("runners.ppm")
+ << QByteArray("ppm") << QSize(400, 400)
+ << QString("");
+ QTest::newRow("test.ppm") << QString("test.ppm")
+ << QByteArray("ppm") << QSize(10, 10)
+ << QString("");
+ QTest::newRow("gnus.xbm") << QString("gnus.xbm")
+ << QByteArray("xbm") << QSize(271, 273)
+ << QString("");
+ QTest::newRow("corrupt-colors.xpm") << QString("corrupt-colors.xpm")
+ << QByteArray("xpm") << QSize(0, 0)
+ << QString("QImage: XPM color specification is missing: bla9an.n#x");
+ QTest::newRow("corrupt-pixels.xpm") << QString("corrupt-pixels.xpm")
+ << QByteArray("xpm") << QSize(0, 0)
+ << QString("QImage: XPM pixels missing on image line 3");
+ QTest::newRow("corrupt-pixel-count.xpm") << QString("corrupt-pixel-count.xpm")
+ << QByteArray("xpm") << QSize(0, 0)
+ << QString("");
+ QTest::newRow("marble.xpm") << QString("marble.xpm")
+ << QByteArray("xpm") << QSize(240, 240)
+ << QString("");
+ QTest::newRow("test.xpm") << QString("test.xpm")
+ << QByteArray("xpm") << QSize(256, 256)
+ << QString("");
+ QTest::newRow("black.xpm") << QString("black.xpm")
+ << QByteArray("xpm") << QSize(48, 48)
+ << QString("");
+ QTest::newRow("namedcolors.xpm") << QString("namedcolors.xpm")
+ << QByteArray("xpm") << QSize(8, 8)
+ << QString("");
+ QTest::newRow("nontransparent.xpm") << QString("nontransparent.xpm")
+ << QByteArray("xpm") << QSize(8, 8)
+ << QString("");
+ QTest::newRow("transparent.xpm") << QString("transparent.xpm")
+ << QByteArray("xpm") << QSize(8, 8)
+ << QString("");
+}
+
+void tst_QImageReader::readFromResources()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QByteArray, format);
+ QFETCH(QSize, size);
+ QFETCH(QString, message);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ for (int i = 0; i < 2; ++i) {
+ QString file = i ? (":/images/" + fileName) : (prefix + fileName);
+ {
+ // suppress warnings if we expect them
+ if (!message.isEmpty()) {
+ for (int j = 0; j < 5; ++j)
+ QTest::ignoreMessage(QtWarningMsg, message.toLatin1());
+ }
+
+ // 1) full filename, no format
+ QImageReader reader(file);
+ QImage image = reader.read();
+ if (size.isNull())
+ QVERIFY(image.isNull());
+ else
+ QVERIFY(!image.isNull());
+ QCOMPARE(image.size(), size);
+ }
+ {
+ // 2) full filename, with format
+ QImageReader reader(file, format);
+ QImage image = reader.read();
+ if (size.isNull())
+ QVERIFY(image.isNull());
+ else
+ QVERIFY(!image.isNull());
+ QCOMPARE(image.size(), size);
+ }
+ {
+ // 3) full filename, with uppercase format
+ QImageReader reader(file, format.toUpper());
+ QImage image = reader.read();
+ if (size.isNull())
+ QVERIFY(image.isNull());
+ else
+ QVERIFY(!image.isNull());
+ QCOMPARE(image.size(), size);
+ }
+ {
+ // 4) chopped filename, with format
+ QImageReader reader(file.left(file.lastIndexOf(QLatin1Char('.'))), format);
+ QImage image = reader.read();
+ if (size.isNull())
+ QVERIFY(image.isNull());
+ else
+ QVERIFY(!image.isNull());
+ QCOMPARE(image.size(), size);
+ }
+ {
+ // 5) chopped filename, with uppercase format
+ QImageReader reader(file.left(file.lastIndexOf(QLatin1Char('.'))), format.toUpper());
+ QImage image = reader.read();
+ if (size.isNull())
+ QVERIFY(image.isNull());
+ else
+ QVERIFY(!image.isNull());
+ QCOMPARE(image.size(), size);
+ }
+ }
+
+ // Check that the results are identical
+ if (!message.isEmpty()) {
+ QTest::ignoreMessage(QtWarningMsg, message.toLatin1());
+ QTest::ignoreMessage(QtWarningMsg, message.toLatin1());
+ }
+ QCOMPARE(QImageReader(prefix + fileName).read(), QImageReader(":/images/" + fileName).read());
+}
+
+void tst_QImageReader::readCorruptImage_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<bool>("shouldFail");
+ QTest::addColumn<QString>("message");
+ QTest::addColumn<QByteArray>("format");
+ QTest::newRow("corrupt jpeg") << QString("corrupt.jpg") << true
+ << QString("JPEG datastream contains no image")
+ << QByteArray("jpeg");
+ QTest::newRow("corrupt gif") << QString("corrupt.gif") << true << QString("") << QByteArray("gif");
+ QTest::newRow("corrupt mng") << QString("corrupt.mng") << true
+ << QString("MNG error 901: Application signalled I/O error; chunk IHDR; subcode 0:0")
+ << QByteArray("mng");
+ QTest::newRow("corrupt png") << QString("corrupt.png") << true << QString("") << QByteArray("png");
+ QTest::newRow("corrupt bmp") << QString("corrupt.bmp") << true << QString("") << QByteArray("bmp");
+ QTest::newRow("corrupt xpm (colors)") << QString("corrupt-colors.xpm") << true
+ << QString("QImage: XPM color specification is missing: bla9an.n#x")
+ << QByteArray("xpm");
+ QTest::newRow("corrupt xpm (pixels)") << QString("corrupt-pixels.xpm") << true
+ << QString("QImage: XPM pixels missing on image line 3")
+ << QByteArray("xpm");
+ QTest::newRow("corrupt xbm") << QString("corrupt.xbm") << false << QString("") << QByteArray("xbm");
+ QTest::newRow("corrupt tiff") << QString("corrupt-data.tif") << true << QString("") << QByteArray("tiff");
+ QTest::newRow("corrupt svg") << QString("corrupt.svg") << true << QString("") << QByteArray("svg");
+ QTest::newRow("corrupt svgz") << QString("corrupt.svgz") << true << QString("") << QByteArray("svgz");
+}
+
+void tst_QImageReader::readCorruptImage()
+{
+ QFETCH(QString, fileName);
+ QFETCH(bool, shouldFail);
+ QFETCH(QString, message);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ if (!message.isEmpty())
+ QTest::ignoreMessage(QtWarningMsg, message.toLatin1());
+ QImageReader reader(prefix + fileName);
+ QVERIFY(reader.canRead());
+ QCOMPARE(reader.read().isNull(), shouldFail);
+}
+
+void tst_QImageReader::readCorruptBmp()
+{
+ QCOMPARE(QImage(prefix + "tst7.bmp").convertToFormat(QImage::Format_ARGB32_Premultiplied), QImage(prefix + "tst7.png").convertToFormat(QImage::Format_ARGB32_Premultiplied));
+}
+
+void tst_QImageReader::supportsOption_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QIntList>("options");
+
+ QTest::newRow("png") << QString("black.png")
+ << (QIntList() << QImageIOHandler::Gamma
+ << QImageIOHandler::Description
+ << QImageIOHandler::Quality
+ << QImageIOHandler::Size);
+}
+
+void tst_QImageReader::supportsOption()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QIntList, options);
+
+ QSet<QImageIOHandler::ImageOption> allOptions;
+ allOptions << QImageIOHandler::Size
+ << QImageIOHandler::ClipRect
+ << QImageIOHandler::Description
+ << QImageIOHandler::ScaledClipRect
+ << QImageIOHandler::ScaledSize
+ << QImageIOHandler::CompressionRatio
+ << QImageIOHandler::Gamma
+ << QImageIOHandler::Quality
+ << QImageIOHandler::Name
+ << QImageIOHandler::SubType
+ << QImageIOHandler::IncrementalReading
+ << QImageIOHandler::Endianness
+ << QImageIOHandler::Animation
+ << QImageIOHandler::BackgroundColor;
+
+ QImageReader reader(prefix + fileName);
+ for (int i = 0; i < options.size(); ++i) {
+ QVERIFY(reader.supportsOption(QImageIOHandler::ImageOption(options.at(i))));
+ allOptions.remove(QImageIOHandler::ImageOption(options.at(i)));
+ }
+
+ foreach (QImageIOHandler::ImageOption option, allOptions)
+ QVERIFY(!reader.supportsOption(option));
+}
+
+void tst_QImageReader::tiffCompression_data()
+{
+ QTest::addColumn<QString>("uncompressedFile");
+ QTest::addColumn<QString>("compressedFile");
+
+ QTest::newRow("TIFF: adobedeflate") << "rgba_nocompression_littleendian.tif"
+ << "rgba_adobedeflate_littleendian.tif";
+ QTest::newRow("TIFF: lzw") << "rgba_nocompression_littleendian.tif"
+ << "rgba_lzw_littleendian.tif";
+ QTest::newRow("TIFF: packbits") << "rgba_nocompression_littleendian.tif"
+ << "rgba_packbits_littleendian.tif";
+ QTest::newRow("TIFF: zipdeflate") << "rgba_nocompression_littleendian.tif"
+ << "rgba_zipdeflate_littleendian.tif";
+}
+
+void tst_QImageReader::tiffCompression()
+{
+ QFETCH(QString, uncompressedFile);
+ QFETCH(QString, compressedFile);
+
+ SKIP_IF_UNSUPPORTED("tiff");
+
+ QImage uncompressedImage(prefix + uncompressedFile);
+ QImage compressedImage(prefix + compressedFile);
+
+ QCOMPARE(uncompressedImage, compressedImage);
+}
+
+void tst_QImageReader::tiffEndianness()
+{
+ SKIP_IF_UNSUPPORTED("tiff");
+
+ QImage littleEndian(prefix + "rgba_nocompression_littleendian.tif");
+ QImage bigEndian(prefix + "rgba_nocompression_bigendian.tif");
+
+ QCOMPARE(littleEndian, bigEndian);
+}
+
+void tst_QImageReader::tiffOrientation_data()
+{
+ QTest::addColumn<QString>("expected");
+ QTest::addColumn<QString>("oriented");
+ QTest::newRow("Indexed TIFF, orientation1") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_1.tiff";
+ QTest::newRow("Indexed TIFF, orientation2") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_2.tiff";
+ QTest::newRow("Indexed TIFF, orientation3") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_3.tiff";
+ QTest::newRow("Indexed TIFF, orientation4") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_4.tiff";
+ QTest::newRow("Indexed TIFF, orientation5") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_5.tiff";
+ QTest::newRow("Indexed TIFF, orientation6") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_6.tiff";
+ QTest::newRow("Indexed TIFF, orientation7") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_7.tiff";
+ QTest::newRow("Indexed TIFF, orientation8") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_8.tiff";
+
+ QTest::newRow("Mono TIFF, orientation1") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_1.tiff";
+ QTest::newRow("Mono TIFF, orientation2") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_2.tiff";
+ QTest::newRow("Mono TIFF, orientation3") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_3.tiff";
+ QTest::newRow("Mono TIFF, orientation4") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_4.tiff";
+ QTest::newRow("Mono TIFF, orientation5") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_5.tiff";
+ QTest::newRow("Mono TIFF, orientation6") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_6.tiff";
+ QTest::newRow("Mono TIFF, orientation7") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_7.tiff";
+ QTest::newRow("Mono TIFF, orientation8") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_8.tiff";
+
+ QTest::newRow("RGB TIFF, orientation1") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_1.tiff";
+ QTest::newRow("RGB TIFF, orientation2") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_2.tiff";
+ QTest::newRow("RGB TIFF, orientation3") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_3.tiff";
+ QTest::newRow("RGB TIFF, orientation4") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_4.tiff";
+ QTest::newRow("RGB TIFF, orientation5") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_5.tiff";
+ QTest::newRow("RGB TIFF, orientation6") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_6.tiff";
+ QTest::newRow("RGB TIFF, orientation7") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_7.tiff";
+ QTest::newRow("RGB TIFF, orientation8") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_8.tiff";
+}
+
+void tst_QImageReader::tiffOrientation()
+{
+ QFETCH(QString, expected);
+ QFETCH(QString, oriented);
+
+ SKIP_IF_UNSUPPORTED("tiff");
+
+ QImage expectedImage(prefix + expected);
+ QImage orientedImage(prefix + oriented);
+ QCOMPARE(expectedImage, orientedImage);
+}
+
+void tst_QImageReader::tiffGrayscale()
+{
+ SKIP_IF_UNSUPPORTED("tiff");
+
+ QImage actualImage(prefix + "grayscale.tif");
+ QImage expectedImage(prefix + "grayscale-ref.tif");
+
+ QCOMPARE(expectedImage, actualImage.convertToFormat(expectedImage.format()));
+}
+
+void tst_QImageReader::dotsPerMeter_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<int>("expectedDotsPerMeterX");
+ QTest::addColumn<int>("expectedDotsPerMeterY");
+ QTest::addColumn<QByteArray>("format");
+ QTest::newRow("TIFF: 72 dpi") << ("rgba_nocompression_littleendian.tif") << qRound(72 * (100 / 2.54)) << qRound(72 * (100 / 2.54)) << QByteArray("tiff");
+ QTest::newRow("TIFF: 100 dpi") << ("image_100dpi.tif") << qRound(100 * (100 / 2.54)) << qRound(100 * (100 / 2.54)) << QByteArray("tiff");
+}
+
+void tst_QImageReader::dotsPerMeter()
+{
+ QFETCH(QString, fileName);
+ QFETCH(int, expectedDotsPerMeterX);
+ QFETCH(int, expectedDotsPerMeterY);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QImage image(prefix + fileName);
+
+ QCOMPARE(image.dotsPerMeterX(), expectedDotsPerMeterX);
+ QCOMPARE(image.dotsPerMeterY(), expectedDotsPerMeterY);
+}
+
+void tst_QImageReader::physicalDpi_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<int>("expectedPhysicalDpiX");
+ QTest::addColumn<int>("expectedPhysicalDpiY");
+ QTest::addColumn<QByteArray>("format");
+ QTest::newRow("TIFF: 72 dpi") << "rgba_nocompression_littleendian.tif" << 72 << 72 << QByteArray("tiff");
+ QTest::newRow("TIFF: 100 dpi") << "image_100dpi.tif" << 100 << 100 << QByteArray("tiff");
+}
+
+void tst_QImageReader::physicalDpi()
+{
+ QFETCH(QString, fileName);
+ QFETCH(int, expectedPhysicalDpiX);
+ QFETCH(int, expectedPhysicalDpiY);
+ QFETCH(QByteArray, format);
+
+ SKIP_IF_UNSUPPORTED(format);
+
+ QImage image(prefix + fileName);
+
+ QCOMPARE(image.physicalDpiX(), expectedPhysicalDpiX);
+ QCOMPARE(image.physicalDpiY(), expectedPhysicalDpiY);
+}
+
+void tst_QImageReader::autoDetectImageFormat()
+{
+ // Assume PNG is supported :-)
+ {
+ // Disables file name extension probing
+ QImageReader reader(prefix + "kollada");
+ reader.setAutoDetectImageFormat(false);
+ QVERIFY(!reader.canRead());
+ QVERIFY(reader.read().isNull());
+ reader.setAutoDetectImageFormat(true);
+ QVERIFY(reader.canRead());
+ QVERIFY(!reader.read().isNull());
+ }
+ {
+ // Disables detection based on suffix
+ QImageReader reader(prefix + "kollada.png");
+ reader.setAutoDetectImageFormat(false);
+ QVERIFY(!reader.canRead());
+ QVERIFY(reader.read().isNull());
+ reader.setAutoDetectImageFormat(true);
+ QVERIFY(reader.canRead());
+ QVERIFY(!reader.read().isNull());
+ }
+ {
+ // Disables detection based on content
+ QImageReader reader(prefix + "kollada-noext");
+ reader.setAutoDetectImageFormat(false);
+ QVERIFY(!reader.canRead());
+ QVERIFY(reader.read().isNull());
+ reader.setAutoDetectImageFormat(true);
+ QVERIFY(reader.canRead());
+ QVERIFY(!reader.read().isNull());
+ }
+
+ if (QImageReader::supportedImageFormats().contains("jpeg")) {
+ QImageReader io(prefix + "YCbCr_rgb.jpg");
+ io.setAutoDetectImageFormat(false);
+ // This should fail since no format string is given
+ QImage image;
+ QVERIFY(!io.read(&image));
+ }
+ if (QImageReader::supportedImageFormats().contains("jpeg")) {
+ QImageReader io(prefix + "YCbCr_rgb.jpg", "jpg");
+ io.setAutoDetectImageFormat(false);
+ QImage image;
+ QVERIFY(io.read(&image));
+ }
+ {
+ QImageReader io(prefix + "tst7.png");
+ io.setAutoDetectImageFormat(false);
+ // This should fail since no format string is given
+ QImage image;
+ QVERIFY(!io.read(&image));
+ }
+ {
+ QImageReader io(prefix + "tst7.png", "png");
+ io.setAutoDetectImageFormat(false);
+ QImage image;
+ QVERIFY(io.read(&image));
+ }
+}
+
+void tst_QImageReader::fileNameProbing()
+{
+ QString name("doesnotexist.png");
+ QImageReader r;
+ r.setFileName(name); // non-existing / non-readable file
+ QCOMPARE(r.fileName(), name);
+
+ r.size();
+ QCOMPARE(r.fileName(), name);
+ r.read();
+ QCOMPARE(r.fileName(), name);
+}
+
+void tst_QImageReader::pixelCompareWithBaseline_data()
+{
+ QTest::addColumn<QString>("fileName");
+
+ QTest::newRow("floppy (16px,32px - 16 colors)") << "35floppy.ico";
+ QTest::newRow("semitransparent") << "semitransparent.ico";
+ QTest::newRow("slightlybrokenBMPHeader") << "kde_favicon.ico";
+ QTest::newRow("sightlybrokenIconHeader") << "connect.ico";
+}
+
+void tst_QImageReader::pixelCompareWithBaseline()
+{
+ QFETCH(QString, fileName);
+
+ static int enteredCount = 0; // Used for better error diagnostics if something fails. We
+ static int loadFailCount = 0; // don't know if the reason load() fails is that the plugin
+ // does not exist or because of a bug in the plugin. But if at
+ // least one file succeeded we know that the plugin was built.
+ // The other failures are then real failures.
+ QImage icoImg;
+ const QString inputFileName(QString::fromAscii("images/%1").arg(fileName));
+ QFileInfo fi(inputFileName);
+
+ ++enteredCount;
+ // might fail if the plugin does not exist, which is ok.
+ if (icoImg.load(inputFileName)) {
+ icoImg = icoImg.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+ const QString baselineFileName(QString::fromAscii("baseline/%1.png").arg(fi.baseName()));
+#if 0
+ icoImg.save(baselineFileName);
+#else
+ QImage baseImg;
+ QVERIFY(baseImg.load(baselineFileName));
+ baseImg = baseImg.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+ QCOMPARE(int(baseImg.format()), int(icoImg.format()));
+ QCOMPARE(baseImg, icoImg);
+#endif
+ } else {
+ ++loadFailCount;
+ if (enteredCount != loadFailCount) {
+ QFAIL("Plugin is built, but some did not load properly");
+ } else {
+ qWarning("loading failed, check if ico plugin is built");
+ }
+ }
+}
+
+
+void tst_QImageReader::testIgnoresFormatAndExtension_data()
+{
+ QTest::addColumn<QString>("name");
+ QTest::addColumn<QString>("extension");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("black.png") << "black" << "png" << "png";
+ QTest::newRow("black.xpm") << "black" << "xpm" << "xpm";
+ QTest::newRow("colorful.bmp") << "colorful" << "bmp" << "bmp";
+ QTest::newRow("image.ppm") << "image" << "ppm" << "ppm";
+ QTest::newRow("image.pbm") << "image" << "pbm" << "pbm";
+ QTest::newRow("image.pgm") << "image" << "pgm" << "pgm";
+
+ QTest::newRow("bat1.gif") << "bat1" << "gif" << "gif";
+
+ QTest::newRow("beavis.jpg") << "beavis" << "jpg" << "jpeg";
+
+ QTest::newRow("fire.mng") << "fire" << "mng" << "mng";
+
+ QTest::newRow("image_100dpi.tif") << "image_100dpi" << "tif" << "tiff";
+
+ QTest::newRow("rect.svg") << "rect" << "svg" << "svg";
+ QTest::newRow("rect.svgz") << "rect" << "svgz" << "svgz";
+}
+
+
+void tst_QImageReader::testIgnoresFormatAndExtension()
+{
+ QFETCH(QString, name);
+ QFETCH(QString, extension);
+ QFETCH(QString, expected);
+
+ SKIP_IF_UNSUPPORTED(expected.toLatin1());
+
+ QList<QByteArray> formats = QImageReader::supportedImageFormats();
+ QString fileNameBase = prefix + name + ".";
+
+ foreach (const QByteArray &f, formats) {
+ if (f == extension)
+ continue;
+ QFile tmp(QDir::tempPath() + "/" + name + "_" + expected + "." + f);
+
+ QVERIFY(QFile::copy(fileNameBase + extension, QFileInfo(tmp).absoluteFilePath()));
+
+ QString format;
+ QImage image;
+ {
+ // image reader needs to be scoped for the remove() to work..
+ QImageReader r;
+ r.setFileName(QFileInfo(tmp).absoluteFilePath());
+ r.setDecideFormatFromContent(true);
+ format = r.format();
+ r.read(&image);
+ }
+
+ tmp.remove();
+
+ QVERIFY(!image.isNull());
+ QCOMPARE(format, expected);
+ }
+}
+
+
+void tst_QImageReader::saveFormat_data()
+{
+ QTest::addColumn<QImage::Format>("format");
+
+ QTest::newRow("Format_Mono") << QImage::Format_Mono;
+ QTest::newRow("Format_MonoLSB") << QImage::Format_MonoLSB;
+ QTest::newRow("Format_Indexed8") << QImage::Format_Indexed8;
+ QTest::newRow("Format_RGB32") << QImage::Format_RGB32;
+ QTest::newRow("Format_ARGB32") << QImage::Format_ARGB32;
+ QTest::newRow("Format_ARGB32_Premultiplied") << QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("Format_RGB16") << QImage::Format_RGB16;
+ QTest::newRow("Format_ARGB8565_Premultiplied") << QImage::Format_ARGB8565_Premultiplied;
+ QTest::newRow("Format_RGB666") << QImage::Format_RGB666;
+ QTest::newRow("Format_ARGB6666_Premultiplied") << QImage::Format_ARGB6666_Premultiplied;
+ QTest::newRow("Format_RGB555") << QImage::Format_RGB555;
+ QTest::newRow("Format_ARGB8555_Premultiplied") << QImage::Format_ARGB8555_Premultiplied;
+ QTest::newRow("Format_RGB888") << QImage::Format_RGB888;
+ QTest::newRow("Format_RGB444") << QImage::Format_RGB444;
+ QTest::newRow("Format_ARGB4444_Premultiplied") << QImage::Format_ARGB4444_Premultiplied;
+}
+
+void tst_QImageReader::saveFormat()
+{
+ QFETCH(QImage::Format, format);
+
+ QImage orig(":/images/kollada.png");
+
+ QImage converted = orig.convertToFormat(format);
+ QBuffer buf;
+ buf.open(QIODevice::WriteOnly);
+ QVERIFY(converted.save(&buf, "png"));
+ buf.close();
+ QImage stored = QImage::fromData(buf.buffer(), "png");
+
+ stored = stored.convertToFormat(QImage::Format_ARGB32);
+ converted = converted.convertToFormat(QImage::Format_ARGB32);
+ QCOMPARE(stored, converted);
+}
+
+
+void tst_QImageReader::readText_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QString>("key");
+ QTest::addColumn<QString>("text");
+
+ QTest::newRow("png, tEXt before img") << "txts.png" << "Title" << "PNG";
+ QTest::newRow("png, zTXt before img") << "txts.png" << "Comment" << "Some compressed text.";
+ QTest::newRow("png, tEXt after img") << "txts.png" << "Disclaimer" << "For testing only.";
+ QTest::newRow("png, zTXt after img") << "txts.png" << "Description" << "Rendered by Persistence of Vision (tm) Ray Tracer";
+}
+
+
+void tst_QImageReader::readText()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QString, key);
+ QFETCH(QString, text);
+
+ QImage img(prefix + fileName);
+ QVERIFY(img.textKeys().contains(key));
+ QCOMPARE(img.text(key), text);
+}
+
+
+void tst_QImageReader::preserveTexts_data()
+{
+ QTest::addColumn<QString>("text");
+
+ QTest::newRow("Simple") << "simpletext";
+ QTest::newRow("Whitespace") << " A text with whitespace ";
+ QTest::newRow("Newline") << "A text\nwith newlines\n";
+ QTest::newRow("Double newlines") << "A text\n\nwith double newlines\n\n";
+ QTest::newRow("Long") << QString("A rather long text, at least after many repetitions. ").repeated(100);
+ QString latin1set;
+ int c;
+ for(c = 0x20; c <= 0x7e; c++)
+ latin1set.append(QLatin1Char(c));
+ for(c = 0xa0; c <= 0xff; c++)
+ latin1set.append(QLatin1Char(c));
+ QTest::newRow("All Latin1 chars") << latin1set;
+
+#if 0
+ // Depends on iTXt support in libpng
+ QTest::newRow("Multibyte string") << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242\341\233\232\341\232\240");
+#endif
+}
+
+
+void tst_QImageReader::preserveTexts()
+{
+ QFETCH(QString, text);
+ QString key("testkey");
+ QString key2("testkey2");
+ QString text2("Some other text.");
+ QString key3("testkey3");
+ QString text3("Some more other text.");
+
+ QImage img(":/images/kollada.png");
+ img.setText(key, text);
+ img.setText(key2, text2);
+ QBuffer buf;
+ buf.open(QIODevice::WriteOnly);
+ QVERIFY(img.save(&buf, "png"));
+ buf.close();
+ QImage stored = QImage::fromData(buf.buffer(), "png");
+ QCOMPARE(stored.text(key), text);
+ QCOMPARE(stored.text(key2), text2);
+
+ QImage img2(":/images/kollada.png");
+ img2.setText(key3, text3);
+ QBuffer buf2;
+ QImageWriter w(&buf2, "png");
+ w.setText(key, text);
+ w.setText(key2, text2);
+ QVERIFY(w.write(img2));
+ buf2.close();
+ QImageReader r(&buf2, "png");
+ QCOMPARE(r.text(key), text.simplified());
+ QCOMPARE(r.text(key2), text2.simplified());
+ QCOMPARE(r.text(key3), text3.simplified());
+}
+
+
+QTEST_MAIN(tst_QImageReader)
+#include "tst_qimagereader.moc"
diff --git a/tests/auto/qimagewriter/.gitignore b/tests/auto/gui/image/qimagewriter/.gitignore
index 9355bcd1bf..9355bcd1bf 100644
--- a/tests/auto/qimagewriter/.gitignore
+++ b/tests/auto/gui/image/qimagewriter/.gitignore
diff --git a/tests/auto/qimagewriter/images/YCbCr_cmyk.jpg b/tests/auto/gui/image/qimagewriter/images/YCbCr_cmyk.jpg
index b8aa9ea609..b8aa9ea609 100644
--- a/tests/auto/qimagewriter/images/YCbCr_cmyk.jpg
+++ b/tests/auto/gui/image/qimagewriter/images/YCbCr_cmyk.jpg
Binary files differ
diff --git a/tests/auto/qimagewriter/images/YCbCr_rgb.jpg b/tests/auto/gui/image/qimagewriter/images/YCbCr_rgb.jpg
index 8771224cb5..8771224cb5 100644
--- a/tests/auto/qimagewriter/images/YCbCr_rgb.jpg
+++ b/tests/auto/gui/image/qimagewriter/images/YCbCr_rgb.jpg
Binary files differ
diff --git a/tests/auto/qimagewriter/images/beavis.jpg b/tests/auto/gui/image/qimagewriter/images/beavis.jpg
index d55504779b..d55504779b 100644
--- a/tests/auto/qimagewriter/images/beavis.jpg
+++ b/tests/auto/gui/image/qimagewriter/images/beavis.jpg
Binary files differ
diff --git a/tests/auto/qimagewriter/images/colorful.bmp b/tests/auto/gui/image/qimagewriter/images/colorful.bmp
index 8ea6f4acd7..8ea6f4acd7 100644
--- a/tests/auto/qimagewriter/images/colorful.bmp
+++ b/tests/auto/gui/image/qimagewriter/images/colorful.bmp
Binary files differ
diff --git a/tests/auto/qimagewriter/images/earth.gif b/tests/auto/gui/image/qimagewriter/images/earth.gif
index 2c229eb110..2c229eb110 100644
--- a/tests/auto/qimagewriter/images/earth.gif
+++ b/tests/auto/gui/image/qimagewriter/images/earth.gif
Binary files differ
diff --git a/tests/auto/qimagewriter/images/font.bmp b/tests/auto/gui/image/qimagewriter/images/font.bmp
index 28b8c66924..28b8c66924 100644
--- a/tests/auto/qimagewriter/images/font.bmp
+++ b/tests/auto/gui/image/qimagewriter/images/font.bmp
Binary files differ
diff --git a/tests/auto/qimagewriter/images/gnus.xbm b/tests/auto/gui/image/qimagewriter/images/gnus.xbm
index 58d1ac845a..58d1ac845a 100644
--- a/tests/auto/qimagewriter/images/gnus.xbm
+++ b/tests/auto/gui/image/qimagewriter/images/gnus.xbm
diff --git a/tests/auto/qimagewriter/images/kollada.png b/tests/auto/gui/image/qimagewriter/images/kollada.png
index 2abd4bb763..2abd4bb763 100644
--- a/tests/auto/qimagewriter/images/kollada.png
+++ b/tests/auto/gui/image/qimagewriter/images/kollada.png
Binary files differ
diff --git a/tests/auto/qimagewriter/images/marble.xpm b/tests/auto/gui/image/qimagewriter/images/marble.xpm
index e59830bbe9..e59830bbe9 100644
--- a/tests/auto/qimagewriter/images/marble.xpm
+++ b/tests/auto/gui/image/qimagewriter/images/marble.xpm
diff --git a/tests/auto/qimagewriter/images/ship63.pbm b/tests/auto/gui/image/qimagewriter/images/ship63.pbm
index 4da971a2d7..4da971a2d7 100644
--- a/tests/auto/qimagewriter/images/ship63.pbm
+++ b/tests/auto/gui/image/qimagewriter/images/ship63.pbm
Binary files differ
diff --git a/tests/auto/qimagewriter/images/teapot.ppm b/tests/auto/gui/image/qimagewriter/images/teapot.ppm
index b8ab85f3a5..b8ab85f3a5 100644
--- a/tests/auto/qimagewriter/images/teapot.ppm
+++ b/tests/auto/gui/image/qimagewriter/images/teapot.ppm
diff --git a/tests/auto/qimagewriter/images/teapot.tiff b/tests/auto/gui/image/qimagewriter/images/teapot.tiff
index 20845c6e32..20845c6e32 100644
--- a/tests/auto/qimagewriter/images/teapot.tiff
+++ b/tests/auto/gui/image/qimagewriter/images/teapot.tiff
Binary files differ
diff --git a/tests/auto/qimagewriter/images/trolltech.gif b/tests/auto/gui/image/qimagewriter/images/trolltech.gif
index f674369efc..f674369efc 100644
--- a/tests/auto/qimagewriter/images/trolltech.gif
+++ b/tests/auto/gui/image/qimagewriter/images/trolltech.gif
Binary files differ
diff --git a/tests/auto/gui/image/qimagewriter/qimagewriter.pro b/tests/auto/gui/image/qimagewriter/qimagewriter.pro
new file mode 100644
index 0000000000..0fc40d0f0a
--- /dev/null
+++ b/tests/auto/gui/image/qimagewriter/qimagewriter.pro
@@ -0,0 +1,25 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qimagewriter.cpp
+MOC_DIR=tmp
+!contains(QT_CONFIG, no-tiff):DEFINES += QTEST_HAVE_TIFF
+win32-msvc:QMAKE_CXXFLAGS -= -Zm200
+win32-msvc:QMAKE_CXXFLAGS += -Zm800
+
+wince*: {
+ addFiles.files = images\\*.*
+ addFiles.path = images
+ DEPLOYMENT += addFiles
+ DEFINES += SRCDIR=\\\".\\\"
+} else:symbian {
+ addFiles.files = images\\*.*
+ addFiles.path = images
+ DEPLOYMENT += addFiles
+ qt_not_deployed {
+ imagePlugins.files = qjpeg.dll qtiff.dll
+ imagePlugins.path = imageformats
+ DEPLOYMENT += imagePlugins
+ }
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD\\\"
+}
diff --git a/tests/auto/qimagewriter/tst_qimagewriter.cpp b/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp
index b119763723..b119763723 100644
--- a/tests/auto/qimagewriter/tst_qimagewriter.cpp
+++ b/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp
diff --git a/tests/auto/qmovie/.gitignore b/tests/auto/gui/image/qmovie/.gitignore
index 396e8cbc7d..396e8cbc7d 100644
--- a/tests/auto/qmovie/.gitignore
+++ b/tests/auto/gui/image/qmovie/.gitignore
diff --git a/tests/auto/qmovie/animations/comicsecard.gif b/tests/auto/gui/image/qmovie/animations/comicsecard.gif
index f064de065b..f064de065b 100644
--- a/tests/auto/qmovie/animations/comicsecard.gif
+++ b/tests/auto/gui/image/qmovie/animations/comicsecard.gif
Binary files differ
diff --git a/tests/auto/qmovie/animations/corrupt.gif b/tests/auto/gui/image/qmovie/animations/corrupt.gif
index c1545eb0ed..c1545eb0ed 100644
--- a/tests/auto/qmovie/animations/corrupt.gif
+++ b/tests/auto/gui/image/qmovie/animations/corrupt.gif
Binary files differ
diff --git a/tests/auto/qmovie/animations/dutch.mng b/tests/auto/gui/image/qmovie/animations/dutch.mng
index 4917fdee7a..4917fdee7a 100644
--- a/tests/auto/qmovie/animations/dutch.mng
+++ b/tests/auto/gui/image/qmovie/animations/dutch.mng
Binary files differ
diff --git a/tests/auto/qmovie/animations/trolltech.gif b/tests/auto/gui/image/qmovie/animations/trolltech.gif
index df7eb92703..df7eb92703 100644
--- a/tests/auto/qmovie/animations/trolltech.gif
+++ b/tests/auto/gui/image/qmovie/animations/trolltech.gif
Binary files differ
diff --git a/tests/auto/gui/image/qmovie/qmovie.pro b/tests/auto/gui/image/qmovie/qmovie.pro
new file mode 100644
index 0000000000..3e085ceeaf
--- /dev/null
+++ b/tests/auto/gui/image/qmovie/qmovie.pro
@@ -0,0 +1,28 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qmovie.cpp
+MOC_DIR=tmp
+
+!contains(QT_CONFIG, no-gif):DEFINES += QTEST_HAVE_GIF
+!contains(QT_CONFIG, no-jpeg):DEFINES += QTEST_HAVE_JPEG
+!contains(QT_CONFIG, no-mng):DEFINES += QTEST_HAVE_MNG
+
+wince*: {
+ addFiles.files = animations\\*
+ addFiles.path = animations
+ DEPLOYMENT += addFiles
+}
+
+RESOURCES += resources.qrc
+
+symbian: {
+ addFiles.files = animations\\*
+ addFiles.path = animations
+ DEPLOYMENT += addFiles
+
+ qt_not_deployed {
+ imagePlugins.files = qjpeg.dll qgif.dll qmng.dll
+ imagePlugins.path = imageformats
+ DEPLOYMENT += imagePlugins
+ }
+}
diff --git a/tests/auto/qmovie/resources.qrc b/tests/auto/gui/image/qmovie/resources.qrc
index ce459a0e7e..ce459a0e7e 100644
--- a/tests/auto/qmovie/resources.qrc
+++ b/tests/auto/gui/image/qmovie/resources.qrc
diff --git a/tests/auto/qmovie/tst_qmovie.cpp b/tests/auto/gui/image/qmovie/tst_qmovie.cpp
index 15c7f856b1..15c7f856b1 100644
--- a/tests/auto/qmovie/tst_qmovie.cpp
+++ b/tests/auto/gui/image/qmovie/tst_qmovie.cpp
diff --git a/tests/auto/qpicture/.gitignore b/tests/auto/gui/image/qpicture/.gitignore
index 0f391ffb80..0f391ffb80 100644
--- a/tests/auto/qpicture/.gitignore
+++ b/tests/auto/gui/image/qpicture/.gitignore
diff --git a/tests/auto/gui/image/qpicture/qpicture.pro b/tests/auto/gui/image/qpicture/qpicture.pro
new file mode 100644
index 0000000000..eb96b73487
--- /dev/null
+++ b/tests/auto/gui/image/qpicture/qpicture.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qpicture.cpp
+
+
+
diff --git a/tests/auto/qpicture/tst_qpicture.cpp b/tests/auto/gui/image/qpicture/tst_qpicture.cpp
index 8661a2b2d0..8661a2b2d0 100644
--- a/tests/auto/qpicture/tst_qpicture.cpp
+++ b/tests/auto/gui/image/qpicture/tst_qpicture.cpp
diff --git a/tests/auto/qpixmap/.gitignore b/tests/auto/gui/image/qpixmap/.gitignore
index 8d4996f365..8d4996f365 100644
--- a/tests/auto/qpixmap/.gitignore
+++ b/tests/auto/gui/image/qpixmap/.gitignore
diff --git a/tests/auto/qpixmap/convertFromImage/task31722_0/img1.png b/tests/auto/gui/image/qpixmap/convertFromImage/task31722_0/img1.png
index 7991e9fb17..7991e9fb17 100644
--- a/tests/auto/qpixmap/convertFromImage/task31722_0/img1.png
+++ b/tests/auto/gui/image/qpixmap/convertFromImage/task31722_0/img1.png
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromImage/task31722_0/img2.png b/tests/auto/gui/image/qpixmap/convertFromImage/task31722_0/img2.png
index dca6d97dc3..dca6d97dc3 100644
--- a/tests/auto/qpixmap/convertFromImage/task31722_0/img2.png
+++ b/tests/auto/gui/image/qpixmap/convertFromImage/task31722_0/img2.png
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromImage/task31722_1/img1.png b/tests/auto/gui/image/qpixmap/convertFromImage/task31722_1/img1.png
index 31e6e1aaa0..31e6e1aaa0 100644
--- a/tests/auto/qpixmap/convertFromImage/task31722_1/img1.png
+++ b/tests/auto/gui/image/qpixmap/convertFromImage/task31722_1/img1.png
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromImage/task31722_1/img2.png b/tests/auto/gui/image/qpixmap/convertFromImage/task31722_1/img2.png
index 0d48026898..0d48026898 100644
--- a/tests/auto/qpixmap/convertFromImage/task31722_1/img2.png
+++ b/tests/auto/gui/image/qpixmap/convertFromImage/task31722_1/img2.png
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromToHICON/icon_32bpp.ico b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp.ico
index dbb55cd4db..dbb55cd4db 100644
--- a/tests/auto/qpixmap/convertFromToHICON/icon_32bpp.ico
+++ b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp.ico
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromToHICON/icon_32bpp_16x16.png b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_16x16.png
index f23f39818c..f23f39818c 100644
--- a/tests/auto/qpixmap/convertFromToHICON/icon_32bpp_16x16.png
+++ b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_16x16.png
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromToHICON/icon_32bpp_256x256.png b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_256x256.png
index 293f1c5942..293f1c5942 100644
--- a/tests/auto/qpixmap/convertFromToHICON/icon_32bpp_256x256.png
+++ b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_256x256.png
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromToHICON/icon_32bpp_32x32.png b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_32x32.png
index bfdb1fe035..bfdb1fe035 100644
--- a/tests/auto/qpixmap/convertFromToHICON/icon_32bpp_32x32.png
+++ b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_32x32.png
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromToHICON/icon_32bpp_48x48.png b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_48x48.png
index 7dd2d13351..7dd2d13351 100644
--- a/tests/auto/qpixmap/convertFromToHICON/icon_32bpp_48x48.png
+++ b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_32bpp_48x48.png
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromToHICON/icon_8bpp.ico b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp.ico
index 4341a3355e..4341a3355e 100644
--- a/tests/auto/qpixmap/convertFromToHICON/icon_8bpp.ico
+++ b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp.ico
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromToHICON/icon_8bpp_16x16.png b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp_16x16.png
index e9a995e19e..e9a995e19e 100644
--- a/tests/auto/qpixmap/convertFromToHICON/icon_8bpp_16x16.png
+++ b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp_16x16.png
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromToHICON/icon_8bpp_32x32.png b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp_32x32.png
index 41ef57f94d..41ef57f94d 100644
--- a/tests/auto/qpixmap/convertFromToHICON/icon_8bpp_32x32.png
+++ b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp_32x32.png
Binary files differ
diff --git a/tests/auto/qpixmap/convertFromToHICON/icon_8bpp_48x48.png b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp_48x48.png
index 35d60d138b..35d60d138b 100644
--- a/tests/auto/qpixmap/convertFromToHICON/icon_8bpp_48x48.png
+++ b/tests/auto/gui/image/qpixmap/convertFromToHICON/icon_8bpp_48x48.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/designer.png b/tests/auto/gui/image/qpixmap/images/designer.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/designer.png
+++ b/tests/auto/gui/image/qpixmap/images/designer.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_-10_dy_-10_50_50_100_100.png b/tests/auto/gui/image/qpixmap/images/dx_-10_dy_-10_50_50_100_100.png
index a4a19249c7..a4a19249c7 100644
--- a/tests/auto/qpixmap/images/dx_-10_dy_-10_50_50_100_100.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_-10_dy_-10_50_50_100_100.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_-10_dy_-10_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_-10_dy_-10_x_y_w_h.png
index 1506af5a7e..1506af5a7e 100644
--- a/tests/auto/qpixmap/images/dx_-10_dy_-10_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_-10_dy_-10_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_-10_dy_0_50_50_100_100.png b/tests/auto/gui/image/qpixmap/images/dx_-10_dy_0_50_50_100_100.png
index 8500ab1f5c..8500ab1f5c 100644
--- a/tests/auto/qpixmap/images/dx_-10_dy_0_50_50_100_100.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_-10_dy_0_50_50_100_100.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_-10_dy_0_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_-10_dy_0_x_y_w_h.png
index 2145c6124c..2145c6124c 100644
--- a/tests/auto/qpixmap/images/dx_-10_dy_0_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_-10_dy_0_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_-128_dy_-128_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_-128_dy_-128_x_y_w_h.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_-128_dy_-128_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_-128_dy_-128_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_-128_dy_0_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_-128_dy_0_x_y_w_h.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_-128_dy_0_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_-128_dy_0_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_0_dy_-10_50_50_100_100.png b/tests/auto/gui/image/qpixmap/images/dx_0_dy_-10_50_50_100_100.png
index 728ee79153..728ee79153 100644
--- a/tests/auto/qpixmap/images/dx_0_dy_-10_50_50_100_100.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_0_dy_-10_50_50_100_100.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_0_dy_-10_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_0_dy_-10_x_y_w_h.png
index e9d5850db7..e9d5850db7 100644
--- a/tests/auto/qpixmap/images/dx_0_dy_-10_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_0_dy_-10_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_0_dy_-128_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_0_dy_-128_x_y_w_h.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_0_dy_-128_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_0_dy_-128_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_0_dy_0_50_50_100_100.png b/tests/auto/gui/image/qpixmap/images/dx_0_dy_0_50_50_100_100.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_0_dy_0_50_50_100_100.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_0_dy_0_50_50_100_100.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_0_dy_0_null.png b/tests/auto/gui/image/qpixmap/images/dx_0_dy_0_null.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_0_dy_0_null.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_0_dy_0_null.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_0_dy_0_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_0_dy_0_x_y_w_h.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_0_dy_0_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_0_dy_0_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_0_dy_10_50_50_100_100.png b/tests/auto/gui/image/qpixmap/images/dx_0_dy_10_50_50_100_100.png
index 7c09b17830..7c09b17830 100644
--- a/tests/auto/qpixmap/images/dx_0_dy_10_50_50_100_100.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_0_dy_10_50_50_100_100.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_0_dy_10_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_0_dy_10_x_y_w_h.png
index 70a63405e6..70a63405e6 100644
--- a/tests/auto/qpixmap/images/dx_0_dy_10_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_0_dy_10_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_0_dy_128_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_0_dy_128_x_y_w_h.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_0_dy_128_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_0_dy_128_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_0_dy_1_null.png b/tests/auto/gui/image/qpixmap/images/dx_0_dy_1_null.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_0_dy_1_null.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_0_dy_1_null.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_10_dy_0_50_50_100_100.png b/tests/auto/gui/image/qpixmap/images/dx_10_dy_0_50_50_100_100.png
index 85abadaf98..85abadaf98 100644
--- a/tests/auto/qpixmap/images/dx_10_dy_0_50_50_100_100.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_10_dy_0_50_50_100_100.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_10_dy_0_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_10_dy_0_x_y_w_h.png
index 3e03450c01..3e03450c01 100644
--- a/tests/auto/qpixmap/images/dx_10_dy_0_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_10_dy_0_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_10_dy_10_50_50_100_100.png b/tests/auto/gui/image/qpixmap/images/dx_10_dy_10_50_50_100_100.png
index 315fbe087a..315fbe087a 100644
--- a/tests/auto/qpixmap/images/dx_10_dy_10_50_50_100_100.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_10_dy_10_50_50_100_100.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_10_dy_10_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_10_dy_10_x_y_w_h.png
index d91dc71217..d91dc71217 100644
--- a/tests/auto/qpixmap/images/dx_10_dy_10_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_10_dy_10_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_128_dy_0_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_128_dy_0_x_y_w_h.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_128_dy_0_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_128_dy_0_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_128_dy_128_64_64_128_128.png b/tests/auto/gui/image/qpixmap/images/dx_128_dy_128_64_64_128_128.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_128_dy_128_64_64_128_128.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_128_dy_128_64_64_128_128.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_128_dy_128_x_y_w_h.png b/tests/auto/gui/image/qpixmap/images/dx_128_dy_128_x_y_w_h.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_128_dy_128_x_y_w_h.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_128_dy_128_x_y_w_h.png
Binary files differ
diff --git a/tests/auto/qpixmap/images/dx_1_dy_0_null.png b/tests/auto/gui/image/qpixmap/images/dx_1_dy_0_null.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/images/dx_1_dy_0_null.png
+++ b/tests/auto/gui/image/qpixmap/images/dx_1_dy_0_null.png
Binary files differ
diff --git a/tests/auto/qpixmap/loadFromData/designer_argb32.png b/tests/auto/gui/image/qpixmap/loadFromData/designer_argb32.png
index 55d8247cfc..55d8247cfc 100644
--- a/tests/auto/qpixmap/loadFromData/designer_argb32.png
+++ b/tests/auto/gui/image/qpixmap/loadFromData/designer_argb32.png
Binary files differ
diff --git a/tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha.gif b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_no_alpha.gif
index 26a6da33df..26a6da33df 100644
--- a/tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha.gif
+++ b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_no_alpha.gif
Binary files differ
diff --git a/tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha.png b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_no_alpha.png
index 28cd2f06d1..28cd2f06d1 100644
--- a/tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha.png
+++ b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_no_alpha.png
Binary files differ
diff --git a/tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha_animated.gif b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_no_alpha_animated.gif
index 86a3a2e17d..86a3a2e17d 100644
--- a/tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha_animated.gif
+++ b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_no_alpha_animated.gif
Binary files differ
diff --git a/tests/auto/qpixmap/loadFromData/designer_indexed8_with_alpha.gif b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_with_alpha.gif
index 49ec77b39b..49ec77b39b 100644
--- a/tests/auto/qpixmap/loadFromData/designer_indexed8_with_alpha.gif
+++ b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_with_alpha.gif
Binary files differ
diff --git a/tests/auto/qpixmap/loadFromData/designer_indexed8_with_alpha.png b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_with_alpha.png
index 09735a9752..09735a9752 100644
--- a/tests/auto/qpixmap/loadFromData/designer_indexed8_with_alpha.png
+++ b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_with_alpha.png
Binary files differ
diff --git a/tests/auto/qpixmap/loadFromData/designer_indexed8_with_alpha_animated.gif b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_with_alpha_animated.gif
index f813c057d2..f813c057d2 100644
--- a/tests/auto/qpixmap/loadFromData/designer_indexed8_with_alpha_animated.gif
+++ b/tests/auto/gui/image/qpixmap/loadFromData/designer_indexed8_with_alpha_animated.gif
Binary files differ
diff --git a/tests/auto/qpixmap/loadFromData/designer_rgb32.jpg b/tests/auto/gui/image/qpixmap/loadFromData/designer_rgb32.jpg
index 70f39c2154..70f39c2154 100644
--- a/tests/auto/qpixmap/loadFromData/designer_rgb32.jpg
+++ b/tests/auto/gui/image/qpixmap/loadFromData/designer_rgb32.jpg
Binary files differ
diff --git a/tests/auto/qpixmap/loadFromData/designer_rgb32.png b/tests/auto/gui/image/qpixmap/loadFromData/designer_rgb32.png
index bca471d576..bca471d576 100644
--- a/tests/auto/qpixmap/loadFromData/designer_rgb32.png
+++ b/tests/auto/gui/image/qpixmap/loadFromData/designer_rgb32.png
Binary files differ
diff --git a/tests/auto/gui/image/qpixmap/qpixmap.pro b/tests/auto/gui/image/qpixmap/qpixmap.pro
new file mode 100644
index 0000000000..bcd65897d2
--- /dev/null
+++ b/tests/auto/gui/image/qpixmap/qpixmap.pro
@@ -0,0 +1,35 @@
+load(qttest_p4)
+
+QT += core-private gui-private widgets widgets-private
+
+SOURCES += tst_qpixmap.cpp
+wince*|symbian: {
+
+ task31722_0.files = convertFromImage/task31722_0/*.png
+ task31722_0.path = convertFromImage/task31722_0
+
+ task31722_1.files = convertFromImage/task31722_1/*.png
+ task31722_1.path = convertFromImage/task31722_1
+
+ icons.files = convertFromToHICON/*
+ icons.path = convertFromToHICON
+
+ loadFromData.files = loadFromData/*
+ loadFromData.path = loadFromData
+
+ DEPLOYMENT += task31722_0 task31722_1 icons loadFromData
+}
+
+wince*: {
+ DEFINES += SRCDIR=\\\".\\\"
+ DEPLOYMENT_PLUGIN += qico
+} else:symbian {
+ LIBS += -lfbscli.dll -lbitgdi.dll -lgdi.dll
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD\\\"
+ win32:LIBS += -lgdi32 -luser32
+}
+
+RESOURCES += qpixmap.qrc
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qpixmap/qpixmap.qrc b/tests/auto/gui/image/qpixmap/qpixmap.qrc
index 99fde61a29..99fde61a29 100644
--- a/tests/auto/qpixmap/qpixmap.qrc
+++ b/tests/auto/gui/image/qpixmap/qpixmap.qrc
diff --git a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
new file mode 100644
index 0000000000..38858e5503
--- /dev/null
+++ b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
@@ -0,0 +1,1787 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qpixmap.h>
+#include <qbitmap.h>
+#include <qimage.h>
+#include <qimagereader.h>
+#include <qmatrix.h>
+#include <qdesktopwidget.h>
+#include <qpaintengine.h>
+#include <qtreewidget.h>
+#include <qsplashscreen.h>
+
+#include <qplatformpixmap_qpa.h>
+#include <private/qdrawhelper_p.h>
+
+#include <QSet>
+
+#ifdef Q_WS_WIN
+#include <windows.h>
+#endif
+
+#ifdef Q_WS_QWS
+#include <qscreen_qws.h>
+#endif
+
+#ifdef Q_OS_SYMBIAN
+#include <e32std.h>
+#include <fbs.h>
+#include <gdi.h>
+#include <bitdev.h>
+#if !defined(QT_NO_OPENVG)
+#include <QtOpenVG/qvg.h>
+#include <QtOpenVG/private/qpixmapdata_vg_p.h>
+#endif
+#endif
+
+#ifdef Q_WS_X11
+#include <QX11Info>
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR ""
+#endif
+Q_DECLARE_METATYPE(QImage::Format)
+
+class tst_QPixmap : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QPixmap();
+ virtual ~tst_QPixmap();
+
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void swap();
+
+ void fromImage_data();
+ void fromImage();
+
+ void fromUninitializedImage_data();
+ void fromUninitializedImage();
+
+ void convertFromImage_data();
+ void convertFromImage();
+
+ void testMetrics();
+
+ void scroll_data();
+ void scroll();
+
+ void fill_data();
+ void fill();
+ void fill_transparent();
+
+ void createMaskFromColor();
+
+ void mask();
+ void bitmapMask();
+ void setGetMask_data();
+ void setGetMask();
+ void cacheKey();
+ void drawBitmap();
+ void grabWidget();
+ void grabWindow();
+ void isNull();
+ void task_246446();
+
+ void convertFromImageNoDetach();
+ void convertFromImageDetach();
+
+#if defined(Q_WS_WIN)
+ void toWinHBITMAP_data();
+ void toWinHBITMAP();
+ void fromWinHBITMAP_data();
+ void fromWinHBITMAP();
+
+ void toWinHICON_data();
+ void toWinHICON();
+ void fromWinHICON_data();
+ void fromWinHICON();
+#endif
+
+#if defined(Q_OS_SYMBIAN)
+ void fromSymbianCFbsBitmap_data();
+ void fromSymbianCFbsBitmap();
+ void toSymbianCFbsBitmap_data();
+ void toSymbianCFbsBitmap();
+#endif
+
+ void onlyNullPixmapsOutsideGuiThread();
+ void refUnref();
+
+ void copy();
+ void depthOfNullObjects();
+
+ void transformed();
+ void transformed2();
+
+ void fromImage_crash();
+
+ void fromData();
+ void loadFromDataNullValues();
+
+ void loadFromDataImage_data();
+ void loadFromDataImage();
+
+ void fromImageReader_data();
+ void fromImageReader();
+
+ void fromImageReaderAnimatedGif_data();
+ void fromImageReaderAnimatedGif();
+
+ void preserveDepth();
+ void splash_crash();
+
+ void toImageDeepCopy();
+
+ void loadAsBitmapOrPixmap();
+
+#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_OPENVG)
+ void vgImageReadBack();
+#endif
+ void scaled_QTBUG19157();
+};
+
+static bool lenientCompare(const QPixmap &actual, const QPixmap &expected)
+{
+ QImage expectedImage = expected.toImage().convertToFormat(QImage::Format_RGB32);
+ QImage actualImage = actual.toImage().convertToFormat(QImage::Format_RGB32);
+
+ if (expectedImage.size() != actualImage.size())
+ return false;
+
+ int size = actual.width() * actual.height();
+
+ int threshold = 2;
+#ifdef Q_WS_X11
+ if (QX11Info::appDepth() == 16)
+ threshold = 10;
+#endif
+
+ QRgb *a = (QRgb *)actualImage.bits();
+ QRgb *e = (QRgb *)expectedImage.bits();
+ for (int i = 0; i < size; ++i) {
+ QColor ca(a[i]);
+ QColor ce(e[i]);
+
+ bool result = true;
+
+ if (qAbs(ca.red() - ce.red()) > threshold)
+ result = false;
+ if (qAbs(ca.green() - ce.green()) > threshold)
+ result = false;
+ if (qAbs(ca.blue() - ce.blue()) > threshold)
+ result = false;
+
+ if (!result)
+ return false;
+ }
+
+ return true;
+}
+
+Q_DECLARE_METATYPE(QImage)
+Q_DECLARE_METATYPE(QPixmap)
+Q_DECLARE_METATYPE(QMatrix)
+Q_DECLARE_METATYPE(QBitmap)
+
+tst_QPixmap::tst_QPixmap()
+{
+}
+
+tst_QPixmap::~tst_QPixmap()
+{
+}
+
+void tst_QPixmap::init()
+{
+}
+
+void tst_QPixmap::cleanup()
+{
+}
+
+void tst_QPixmap::swap()
+{
+ QPixmap p1( 16, 16 ), p2( 32, 32 );
+ p1.fill( Qt::white );
+ p2.fill( Qt::black );
+ const qint64 p1k = p1.cacheKey();
+ const qint64 p2k = p2.cacheKey();
+ p1.swap(p2);
+ QCOMPARE(p1.cacheKey(), p2k);
+ QCOMPARE(p1.size(), QSize(32,32));
+ QCOMPARE(p2.cacheKey(), p1k);
+ QCOMPARE(p2.size(), QSize(16,16));
+}
+
+void tst_QPixmap::fromImage_data()
+{
+ bool is16bit = false;
+#ifdef Q_WS_X11
+ if (QX11Info::appDepth() == 16)
+ is16bit = true;
+#endif
+
+ QTest::addColumn<QImage::Format>("format");
+
+ QTest::newRow("Format_Mono") << QImage::Format_Mono;
+ QTest::newRow("Format_MonoLSB") << QImage::Format_MonoLSB;
+// QTest::newRow("Format_Indexed8") << QImage::Format_Indexed8;
+ if (!is16bit)
+ QTest::newRow("Format_RGB32") << QImage::Format_RGB32;
+ QTest::newRow("Format_ARGB32") << QImage::Format_ARGB32;
+ QTest::newRow("Format_ARGB32_Premultiplied") << QImage::Format_ARGB32_Premultiplied;
+ if (!is16bit)
+ QTest::newRow("Format_RGB16") << QImage::Format_RGB16;
+}
+
+void tst_QPixmap::fromImage()
+{
+ QFETCH(QImage::Format, format);
+
+ QImage image(37, 16, format);
+
+ if (image.colorCount() == 2) {
+ image.setColor(0, QColor(Qt::color0).rgba());
+ image.setColor(1, QColor(Qt::color1).rgba());
+ }
+ image.fill(0x7f7f7f7f);
+
+ const QPixmap pixmap = QPixmap::fromImage(image);
+#ifdef Q_WS_X11
+ if (pixmap.handle()->classId() == QPlatformPixmap::X11Class && !pixmap.x11PictureHandle())
+ QSKIP("Requires XRender support", SkipAll);
+#endif
+ const QImage result = pixmap.toImage();
+ image = image.convertToFormat(result.format());
+ QCOMPARE(result, image);
+}
+
+
+void tst_QPixmap::fromUninitializedImage_data()
+{
+ QTest::addColumn<QImage::Format>("format");
+
+ QTest::newRow("Format_Mono") << QImage::Format_Mono;
+ QTest::newRow("Format_MonoLSB") << QImage::Format_MonoLSB;
+ QTest::newRow("Format_Indexed8") << QImage::Format_Indexed8;
+ QTest::newRow("Format_RGB32") << QImage::Format_RGB32;
+ QTest::newRow("Format_ARGB32") << QImage::Format_ARGB32;
+ QTest::newRow("Format_ARGB32_Premultiplied") << QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("Format_RGB16") << QImage::Format_RGB16;
+}
+
+void tst_QPixmap::fromUninitializedImage()
+{
+ QFETCH(QImage::Format, format);
+
+ QImage image(100, 100, format);
+ QPixmap pix = QPixmap::fromImage(image);
+
+ // it simply shouldn't crash...
+ QVERIFY(true);
+
+}
+
+void tst_QPixmap::convertFromImage_data()
+{
+ QTest::addColumn<QImage>("img1");
+ QTest::addColumn<QImage>("img2");
+#ifdef Q_OS_SYMBIAN
+ const QString prefix = QLatin1String(SRCDIR) + "convertFromImage";
+#else
+ const QString prefix = QLatin1String(SRCDIR) + "/convertFromImage";
+#endif
+ {
+ QImage img1;
+ QImage img2;
+ QVERIFY(img1.load(prefix + "/task31722_0/img1.png"));
+ QVERIFY(img2.load(prefix + "/task31722_0/img2.png"));
+ QVERIFY(img1.load(prefix + "/task31722_0/img1.png"));
+ QVERIFY(img2.load(prefix + "/task31722_0/img2.png"));
+ QTest::newRow("Task 31722 0") << img1 << img2;
+ }
+ {
+ QImage img1;
+ QImage img2;
+ QVERIFY(img1.load(prefix + "/task31722_1/img1.png"));
+ QVERIFY(img2.load(prefix + "/task31722_1/img2.png"));
+ QTest::newRow("Task 31722 1") << img1 << img2;
+ }
+}
+
+void tst_QPixmap::convertFromImage()
+{
+ QFETCH(QImage, img1);
+ QFETCH(QImage, img2);
+
+ QPixmap pix = QPixmap::fromImage(img1);
+ pix = QPixmap::fromImage(img2);
+
+ QPixmap res = QPixmap::fromImage(img2);
+ QVERIFY( pixmapsAreEqual(&pix, &res) );
+}
+
+void tst_QPixmap::scroll_data()
+{
+ QTest::addColumn<QImage>("input");
+ QTest::addColumn<int>("dx");
+ QTest::addColumn<int>("dy");
+ QTest::addColumn<QRect>("rect");
+ QTest::addColumn<QRegion>("exposed");
+ QTest::addColumn<bool>("newPix");
+
+ QImage input(":/images/designer.png");
+
+ // Noop tests
+ QTest::newRow("null") << QImage() << 0 << 0 << QRect() << QRegion() << false;
+ QTest::newRow("dx_0_dy_0_null") << input << 0 << 0 << QRect() << QRegion() << false;
+ QTest::newRow("dx_1_dy_0_null") << input << 1 << 0 << QRect() << QRegion() << false;
+ QTest::newRow("dx_0_dy_1_null") << input << 0 << 1 << QRect() << QRegion() << false;
+ QTest::newRow("dx_0_dy_0_x_y_w_h") << input << 0 << 0 << input.rect() << QRegion() << false;
+
+ QRegion r;
+ // Scroll whole pixmap
+ r = QRegion(); r += QRect(0, 0, 128, 10);
+ QTest::newRow("dx_0_dy_10_x_y_w_h") << input << 0 << 10 << input.rect() << r << true;
+ r = QRegion(); r += QRect(0, 0, 10, 128);
+ QTest::newRow("dx_10_dy_0_x_y_w_h") << input << 10 << 0 << input.rect() << r << true;
+ r = QRegion(); r += QRect(0, 0, 128, 10); r += QRect(0, 10, 10, 118);
+ QTest::newRow("dx_10_dy_10_x_y_w_h") << input << 10 << 10 << input.rect() << r << true;
+ r = QRegion(); r += QRect(118, 0, 10, 128);
+ QTest::newRow("dx_-10_dy_0_x_y_w_h") << input << -10 << 0 << input.rect() << r << true;
+ r = QRegion(); r += QRect(0, 118, 128, 10);
+ QTest::newRow("dx_0_dy_-10_x_y_w_h") << input << 0 << -10 << input.rect() << r << true;
+ r = QRegion(); r += QRect(118, 0, 10, 118); r += QRect(0, 118, 128, 10);
+ QTest::newRow("dx_-10_dy_-10_x_y_w_h") << input << -10 << -10 << input.rect() << r << true;
+
+ // Scroll part of pixmap
+ QTest::newRow("dx_0_dy_0_50_50_100_100") << input << 0 << 0 << QRect(50, 50, 100, 100) << QRegion() << false;
+ r = QRegion(); r += QRect(50, 50, 10, 78);
+ QTest::newRow("dx_10_dy_0_50_50_100_100") << input << 10 << 0 << QRect(50, 50, 100, 100) << r << true;
+ r = QRegion(); r += QRect(50, 50, 78, 10);
+ QTest::newRow("dx_0_dy_10_50_50_100_100") << input << 0 << 10 << QRect(50, 50, 100, 100) << r << true;
+ r = QRegion(); r += QRect(50, 50, 78, 10); r += QRect(50, 60, 10, 68);
+ QTest::newRow("dx_10_dy_10_50_50_100_100") << input << 10 << 10 << QRect(50, 50, 100, 100) << r << true;
+ r = QRegion(); r += QRect(118, 50, 10, 78);
+ QTest::newRow("dx_-10_dy_0_50_50_100_100") << input << -10 << 0 << QRect(50, 50, 100, 100) << r << true;
+ r = QRegion(); r += QRect(50, 118, 78, 10);
+ QTest::newRow("dx_0_dy_-10_50_50_100_100") << input << 0 << -10 << QRect(50, 50, 100, 100) << r << true;
+ r = QRegion(); r += QRect(118, 50, 10, 68); r += QRect(50, 118, 78, 10);
+ QTest::newRow("dx_-10_dy_-10_50_50_100_100") << input << -10 << -10 << QRect(50, 50, 100, 100) << r << true;
+
+ // Scroll away the whole pixmap
+ r = input.rect();
+ QTest::newRow("dx_128_dy_0_x_y_w_h") << input << 128 << 0 << input.rect() << r << false;
+ QTest::newRow("dx_0_dy_128_x_y_w_h") << input << 0 << 128 << input.rect() << r << false;
+ QTest::newRow("dx_128_dy_128_x_y_w_h") << input << 128 << 128 << input.rect() << r << false;
+ QTest::newRow("dx_-128_dy_0_x_y_w_h") << input << -128 << 0 << input.rect() << r << false;
+ QTest::newRow("dx_0_dy_-128_x_y_w_h") << input << 0 << -128 << input.rect() << r << false;
+ QTest::newRow("dx_-128_dy_-128_x_y_w_h") << input << -128 << -128 << input.rect() << r << false;
+
+ // Scroll away part of the pixmap
+ r = QRegion(); r += QRect(64, 64, 64, 64);
+ QTest::newRow("dx_128_dy_128_64_64_128_128") << input << 128 << 128 << QRect(64, 64, 128, 128) << r << false;
+}
+
+void tst_QPixmap::scroll()
+{
+ QFETCH(QImage, input);
+ QFETCH(int, dx);
+ QFETCH(int, dy);
+ QFETCH(QRect, rect);
+ QFETCH(QRegion, exposed);
+ QFETCH(bool, newPix);
+
+ QPixmap pixmap = QPixmap::fromImage(input);
+ QRegion exp;
+ qint64 oldKey = pixmap.cacheKey();
+ pixmap.scroll(dx, dy, rect, &exp);
+ if (!newPix)
+ QCOMPARE(pixmap.cacheKey(), oldKey);
+ else
+ QVERIFY(pixmap.cacheKey() != oldKey);
+
+#if 0
+ // Remember to add to resources.
+ QString fileName = QString("images/%1.png").arg(QTest::currentDataTag());
+ pixmap.toImage().save(fileName);
+#else
+ QString fileName = QString(":/images/%1.png").arg(QTest::currentDataTag());
+#endif
+ QPixmap output(fileName);
+ QVERIFY(input.isNull() == output.isNull());
+ QVERIFY(lenientCompare(pixmap, output));
+ QCOMPARE(exp, exposed);
+}
+
+void tst_QPixmap::fill_data()
+{
+ QTest::addColumn<uint>("pixel");
+ QTest::addColumn<bool>("syscolor");
+ QTest::addColumn<bool>("bitmap");
+ for (int color = Qt::black; color < Qt::darkYellow; ++color)
+ QTest::newRow(QString("syscolor_%1").arg(color).toLatin1())
+ << uint(color) << true << false;
+
+#ifdef Q_WS_QWS
+ if (QScreen::instance()->depth() >= 24) {
+#elif defined (Q_WS_X11)
+ QPixmap pm(1, 1);
+ if (pm.x11PictureHandle()) {
+#elif defined (Q_OS_WINCE)
+ QPixmap pixmap(1,1);
+ if (QPixmap::grabWidget(QApplication::desktop()).depth() >= 24) {
+#else
+ QPixmap pixmap(1, 1); {
+#endif
+ QTest::newRow("alpha_7f_red") << 0x7fff0000u << false << false;
+ QTest::newRow("alpha_3f_blue") << 0x3f0000ffu << false << false;
+ QTest::newRow("alpha_b7_green") << 0xbf00ff00u << false << false;
+ QTest::newRow("alpha_7f_white") << 0x7fffffffu << false << false;
+ QTest::newRow("alpha_3f_white") << 0x3fffffffu << false << false;
+ QTest::newRow("alpha_b7_white") << 0xb7ffffffu << false << false;
+ QTest::newRow("alpha_7f_black") << 0x7f000000u << false << false;
+ QTest::newRow("alpha_3f_black") << 0x3f000000u << false << false;
+ QTest::newRow("alpha_b7_black") << 0xbf000000u << false << false;
+ }
+
+ QTest::newRow("bitmap_color0") << uint(Qt::color0) << true << true;
+ QTest::newRow("bitmap_color1") << uint(Qt::color1) << true << true;
+}
+
+void tst_QPixmap::fill()
+{
+ QFETCH(uint, pixel);
+ QFETCH(bool, syscolor);
+ QFETCH(bool, bitmap);
+
+ QColor color;
+
+ if (syscolor)
+ color = QColor(Qt::GlobalColor(pixel));
+ else
+ color = QColor(qRed(pixel), qGreen(pixel), qBlue(pixel), qAlpha(pixel));
+
+ QColor compareColor = color;
+ if (bitmap && syscolor) {
+ // special case color0 and color1 for bitmaps.
+ if (pixel == Qt::color0)
+ compareColor.setRgb(255, 255, 255);
+ else
+ compareColor.setRgb(0, 0, 0);
+ }
+
+ QPixmap pm;
+
+ if (bitmap)
+ pm = QBitmap(400, 400);
+ else
+ pm = QPixmap(400, 400);
+
+#if defined(Q_WS_X11)
+ if (!bitmap && pm.handle()->classId() == QPlatformPixmap::X11Class && !pm.x11PictureHandle())
+ QSKIP("Requires XRender support", SkipSingle);
+#endif
+
+ pm.fill(color);
+ if (syscolor && !bitmap && pm.depth() < 24) {
+ QSKIP("Test does not work on displays without true color", SkipSingle);
+ }
+
+ QImage image = pm.toImage();
+ if (bitmap && syscolor) {
+ int pixelindex = (pixel == Qt::color0) ? 0 : 1;
+ QCOMPARE(image.pixelIndex(0,0), pixelindex);
+ }
+ QImage::Format format = compareColor.alpha() != 255
+ ? QImage::Format_ARGB32
+ : QImage::Format_RGB32;
+ image = image.convertToFormat(format);
+
+
+ QImage shouldBe(400, 400, format);
+ shouldBe.fill(compareColor.rgba());
+
+ QCOMPARE(image, shouldBe);
+}
+
+void tst_QPixmap::fill_transparent()
+{
+ QPixmap pixmap(10, 10);
+#ifdef Q_WS_X11
+ if (pixmap.handle()->classId() == QPlatformPixmap::X11Class && !pixmap.x11PictureHandle())
+ QSKIP("Requires XRender support", SkipAll);
+#endif
+ pixmap.fill(Qt::transparent);
+ QVERIFY(pixmap.hasAlphaChannel());
+}
+
+void tst_QPixmap::mask()
+{
+ QPixmap pm(100, 100);
+ QBitmap bm(100, 100);
+
+ pm.fill();
+ bm.fill();
+
+ QVERIFY(!pm.isNull());
+ QVERIFY(!bm.isNull());
+ if (!pm.hasAlphaChannel()) {
+ // This would fail if the default pixmap format is
+ // argb32_premultiplied. The mask will be all 1's.
+ // Therefore this is skipped when the alpha channel is present.
+ QVERIFY(pm.mask().isNull());
+ }
+
+ QImage img = bm.toImage();
+ QVERIFY(img.format() == QImage::Format_MonoLSB
+ || img.format() == QImage::Format_Mono);
+
+ pm.setMask(bm);
+ QVERIFY(!pm.mask().isNull());
+
+ bm = QBitmap();
+ // Invalid format here, since isNull() == true
+ QVERIFY(bm.toImage().isNull());
+ QCOMPARE(bm.toImage().format(), QImage::Format_Invalid);
+ pm.setMask(bm);
+ QVERIFY(pm.mask().isNull());
+
+ bm = QBitmap(100, 100);
+ bm.fill();
+ pm.setMask(bm);
+ QVERIFY(!pm.mask().isNull());
+}
+
+void tst_QPixmap::bitmapMask()
+{
+ QImage image(3, 3, QImage::Format_Mono);
+ image.setColor(0, Qt::color0);
+ image.setColor(1, Qt::color1);
+ image.fill(Qt::color0);
+ image.setPixel(1, 1, Qt::color1);
+ image.setPixel(0, 0, Qt::color1);
+
+ QImage image_mask(3, 3, QImage::Format_Mono);
+ image_mask.setColor(0, Qt::color0);
+ image_mask.setColor(1, Qt::color1);
+ image_mask.fill(Qt::color0);
+ image_mask.setPixel(1, 1, Qt::color1);
+ image_mask.setPixel(2, 0, Qt::color1);
+
+ QBitmap pm = QBitmap::fromImage(image);
+ QBitmap pm_mask = QBitmap::fromImage(image_mask);
+ pm.setMask(pm_mask);
+
+ image = pm.toImage();
+ image.setColor(0, Qt::color0);
+ image.setColor(1, Qt::color1);
+ image_mask = pm_mask.toImage();
+ image_mask.setColor(0, Qt::color0);
+ image_mask.setColor(1, Qt::color1);
+
+ QVERIFY(!image.pixel(0, 0));
+ QVERIFY(!image.pixel(2, 0));
+ QVERIFY(image.pixel(1, 1));
+}
+
+void tst_QPixmap::setGetMask_data()
+{
+ QTest::addColumn<QPixmap>("pixmap");
+ QTest::addColumn<QBitmap>("mask");
+ QTest::addColumn<QBitmap>("expected");
+
+ QPixmap pixmap(10, 10);
+ QBitmap mask(10, 10);
+ QPainter p;
+
+ p.begin(&pixmap);
+ p.fillRect(0, 0, 10, 10, QColor(Qt::black));
+ p.end();
+
+ QTest::newRow("nullmask 0") << QPixmap() << QBitmap() << QBitmap();
+ QTest::newRow("nullmask 1") << pixmap << QBitmap() << QBitmap();
+ mask.clear();
+ QTest::newRow("nullmask 2") << pixmap << mask << mask;
+ QTest::newRow("nullmask 3") << QPixmap(QBitmap()) << QBitmap() << QBitmap();
+
+ p.begin(&mask);
+ p.fillRect(1, 1, 5, 5, QColor(Qt::color1));
+ p.end();
+ QTest::newRow("simple mask 0") << pixmap << mask << mask;
+}
+
+void tst_QPixmap::setGetMask()
+{
+ QFETCH(QPixmap, pixmap);
+ QFETCH(QBitmap, mask);
+ QFETCH(QBitmap, expected);
+
+ pixmap.setMask(mask);
+ QBitmap result = pixmap.mask();
+
+ QImage resultImage = result.toImage();
+ QImage expectedImage = expected.toImage();
+ QCOMPARE(resultImage.convertToFormat(expectedImage.format()),
+ expectedImage);
+}
+
+void tst_QPixmap::testMetrics()
+{
+ QPixmap pixmap(100, 100);
+
+ QCOMPARE(pixmap.width(), 100);
+ QCOMPARE(pixmap.height(), 100);
+ QVERIFY(pixmap.depth() >= QPixmap::defaultDepth());
+
+ QBitmap bitmap(100, 100);
+
+ QCOMPARE(bitmap.width(), 100);
+ QCOMPARE(bitmap.height(), 100);
+ QCOMPARE(bitmap.depth(), 1);
+
+ QPixmap null;
+
+ QCOMPARE(null.size().width(), null.width());
+ QCOMPARE(null.size().height(), null.height());
+}
+
+void tst_QPixmap::createMaskFromColor()
+{
+ QImage image(3, 3, QImage::Format_Indexed8);
+ image.setColorCount(10);
+ image.setColor(0, 0xffffffff);
+ image.setColor(1, 0xff000000);
+ image.setColor(2, 0xffff0000);
+ image.setColor(3, 0xff0000ff);
+ image.fill(0);
+ image.setPixel(1, 0, 1);
+ image.setPixel(0, 1, 2);
+ image.setPixel(1, 1, 3);
+
+ QImage im_mask = image.createMaskFromColor(0xffff0000);
+ QCOMPARE((uint) im_mask.pixel(0, 1), QColor(Qt::color0).rgba());
+ QCOMPARE((uint) im_mask.pixel(0, 1), QColor(Qt::color0).rgba());
+
+ QPixmap pixmap = QPixmap::fromImage(image);
+ QBitmap mask = pixmap.createMaskFromColor(Qt::red);
+ QBitmap inv_mask = pixmap.createMaskFromColor(Qt::red, Qt::MaskOutColor);
+ QCOMPARE((uint) mask.toImage().pixel(0, 1), QColor(Qt::color0).rgba());
+ QCOMPARE((uint) inv_mask.toImage().pixel(0, 1), QColor(Qt::color1).rgba());
+}
+
+
+void tst_QPixmap::cacheKey()
+{
+ QPixmap pixmap1(1, 1);
+ QPixmap pixmap2(1, 1);
+ qint64 pixmap1_key = pixmap1.cacheKey();
+
+ QVERIFY(pixmap1.cacheKey() != pixmap2.cacheKey());
+
+ pixmap2 = pixmap1;
+ QVERIFY(pixmap2.cacheKey() == pixmap1.cacheKey());
+
+ pixmap2.detach();
+ QVERIFY(pixmap2.cacheKey() != pixmap1.cacheKey());
+ QVERIFY(pixmap1.cacheKey() == pixmap1_key);
+}
+
+// Test drawing a bitmap on a pixmap.
+void tst_QPixmap::drawBitmap()
+{
+ QBitmap bitmap(10,10);
+ bitmap.fill(Qt::color1);
+
+ QPixmap pixmap(10,10);
+ QPainter painter2(&pixmap);
+ painter2.fillRect(0,0,10,10, QBrush(Qt::green));
+ painter2.setPen(Qt::red);
+ painter2.drawPixmap(0,0,10,10, bitmap);
+ painter2.end();
+
+ QPixmap expected(10, 10);
+ expected.fill(Qt::red);
+
+ QVERIFY(lenientCompare(pixmap, expected));
+}
+
+void tst_QPixmap::grabWidget()
+{
+ for (int opaque = 0; opaque < 2; ++opaque) {
+ QWidget widget;
+ QImage image(128, 128, opaque ? QImage::Format_RGB32 : QImage::Format_ARGB32_Premultiplied);
+ for (int row = 0; row < image.height(); ++row) {
+ QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(row));
+ for (int col = 0; col < image.width(); ++col)
+ line[col] = qRgba(rand() & 255, row, col, opaque ? 255 : 127);
+ }
+
+ QPalette pal = widget.palette();
+ pal.setBrush(QPalette::Window, QBrush(image));
+ widget.setPalette(pal);
+ widget.resize(128, 128);
+
+ QPixmap expected(64, 64);
+ if (!opaque)
+ expected.fill(Qt::transparent);
+
+ QPainter p(&expected);
+ p.translate(-64, -64);
+ p.drawTiledPixmap(0, 0, 128, 128, pal.brush(QPalette::Window).texture(), 0, 0);
+ p.end();
+
+ QPixmap actual = QPixmap::grabWidget(&widget, QRect(64, 64, 64, 64));
+ QVERIFY(lenientCompare(actual, expected));
+
+ actual = QPixmap::grabWidget(&widget, 64, 64);
+ QVERIFY(lenientCompare(actual, expected));
+
+ // Make sure a widget that is not yet shown is grabbed correctly.
+ QTreeWidget widget2;
+ actual = QPixmap::grabWidget(&widget2);
+ widget2.show();
+ expected = QPixmap::grabWidget(&widget2);
+
+ QVERIFY(lenientCompare(actual, expected));
+ }
+}
+
+void tst_QPixmap::grabWindow()
+{
+#ifdef Q_WS_QPA
+ QSKIP("QTBUG-20863 grabWindow is broken on most qpa backends", SkipAll);
+#endif
+#ifdef Q_OS_WINCE
+ // We get out of memory, if the desktop itself is too big.
+ if (QApplication::desktop()->width() <= 480)
+#endif
+ QVERIFY(QPixmap::grabWindow(QApplication::desktop()->winId()).isNull() == false);
+ QWidget w;
+ w.resize(640, 480);
+ w.show();
+ QTest::qWait(100);
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&w);
+#endif
+ QVERIFY(QPixmap::grabWindow(w.winId()).isNull() == false);
+
+ QWidget child(&w);
+ child.setGeometry(50, 50, 100, 100);
+ child.setPalette(Qt::red);
+ child.setAutoFillBackground(true);
+ child.show();
+ QTest::qWait(100);
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&child);
+#endif
+
+ QPixmap grabWindowPixmap = QPixmap::grabWindow(child.winId());
+ QPixmap grabWidgetPixmap = QPixmap::grabWidget(&child);
+ lenientCompare(grabWindowPixmap, grabWidgetPixmap);
+}
+
+void tst_QPixmap::isNull()
+{
+ {
+ QPixmap pixmap(1,1);
+ QVERIFY(pixmap.isNull() == false);
+ }
+ {
+ QPixmap pixmap(0,0);
+ QVERIFY(pixmap.isNull());
+ }
+
+ {
+ QPixmap pixmap(0,1);
+ QVERIFY(pixmap.isNull());
+ }
+ {
+ QPixmap pixmap(1,0);
+ QVERIFY(pixmap.isNull());
+ }
+ {
+ QPixmap pixmap(-1,-1);
+ QVERIFY(pixmap.isNull());
+ }
+ {
+ QPixmap pixmap(-1,5);
+ QVERIFY(pixmap.isNull());
+ }
+}
+
+void tst_QPixmap::convertFromImageNoDetach()
+{
+ QPixmap randomPixmap(10, 10);
+ if (randomPixmap.handle()->classId() != QPlatformPixmap::RasterClass)
+ QSKIP("Test only valid for raster pixmaps", SkipAll);
+
+ //first get the screen format
+ QImage::Format screenFormat = randomPixmap.toImage().format();
+ QVERIFY(screenFormat != QImage::Format_Invalid);
+
+ QImage orig(100,100, screenFormat);
+
+ QPixmap pix = QPixmap::fromImage(orig);
+ QImage copy = pix.toImage();
+
+ QVERIFY(copy.format() == screenFormat);
+
+ const QImage constOrig = orig;
+ const QImage constCopy = copy;
+ QVERIFY(constOrig.bits() == constCopy.bits());
+}
+
+void tst_QPixmap::convertFromImageDetach()
+{
+ QImage img(10,10, QImage::Format_RGB32);
+ img.fill(0);
+ QVERIFY(!img.isNull());
+ QPixmap p = QPixmap::fromImage(img);
+ QVERIFY(p.isDetached());
+ QPixmap copy = p;
+ QVERIFY(!copy.isDetached());
+ QVERIFY(!p.isDetached());
+ img.fill(1);
+ p = QPixmap::fromImage(img);
+ QVERIFY(copy.isDetached());
+}
+
+#if defined(Q_WS_WIN)
+void tst_QPixmap::toWinHBITMAP_data()
+{
+ QTest::addColumn<int>("red");
+ QTest::addColumn<int>("green");
+ QTest::addColumn<int>("blue");
+
+ QTest::newRow("red") << 255 << 0 << 0;
+ QTest::newRow("green") << 0 << 255 << 0;
+ QTest::newRow("blue") << 0 << 0 << 255;
+}
+
+void tst_QPixmap::toWinHBITMAP()
+{
+ QFETCH(int, red);
+ QFETCH(int, green);
+ QFETCH(int, blue);
+
+ QPixmap pm(100, 100);
+ pm.fill(QColor(red, green, blue));
+
+ HBITMAP bitmap = pm.toWinHBITMAP();
+
+ QVERIFY(bitmap != 0);
+
+ // Verify size
+ BITMAP bitmap_info;
+ memset(&bitmap_info, 0, sizeof(BITMAP));
+
+ int res = GetObject(bitmap, sizeof(BITMAP), &bitmap_info);
+ QVERIFY(res);
+
+ QCOMPARE(100, (int) bitmap_info.bmWidth);
+ QCOMPARE(100, (int) bitmap_info.bmHeight);
+
+ HDC display_dc = GetDC(0);
+ HDC bitmap_dc = CreateCompatibleDC(display_dc);
+
+ HBITMAP null_bitmap = (HBITMAP) SelectObject(bitmap_dc, bitmap);
+
+ COLORREF pixel = GetPixel(bitmap_dc, 0, 0);
+ QCOMPARE((int)GetRValue(pixel), red);
+ QCOMPARE((int)GetGValue(pixel), green);
+ QCOMPARE((int)GetBValue(pixel), blue);
+
+ // Clean up
+ SelectObject(bitmap_dc, null_bitmap);
+ DeleteObject(bitmap);
+ DeleteDC(bitmap_dc);
+ ReleaseDC(0, display_dc);
+
+}
+
+void tst_QPixmap::fromWinHBITMAP_data()
+{
+ toWinHBITMAP_data();
+}
+
+void tst_QPixmap::fromWinHBITMAP()
+{
+ QFETCH(int, red);
+ QFETCH(int, green);
+ QFETCH(int, blue);
+
+ HDC display_dc = GetDC(0);
+ HDC bitmap_dc = CreateCompatibleDC(display_dc);
+ HBITMAP bitmap = CreateCompatibleBitmap(display_dc, 100, 100);
+ SelectObject(bitmap_dc, bitmap);
+
+ SelectObject(bitmap_dc, GetStockObject(NULL_PEN));
+ HGDIOBJ old_brush = SelectObject(bitmap_dc, CreateSolidBrush(RGB(red, green, blue)));
+ Rectangle(bitmap_dc, 0, 0, 100, 100);
+
+#ifdef Q_OS_WINCE //the device context has to be deleted before QPixmap::fromWinHBITMAP()
+ DeleteDC(bitmap_dc);
+#endif
+ QPixmap pixmap = QPixmap::fromWinHBITMAP(bitmap);
+ QCOMPARE(pixmap.width(), 100);
+ QCOMPARE(pixmap.height(), 100);
+
+ QImage image = pixmap.toImage();
+ QRgb pixel = image.pixel(0, 0);
+ QCOMPARE(qRed(pixel), red);
+ QCOMPARE(qGreen(pixel), green);
+ QCOMPARE(qBlue(pixel), blue);
+
+ DeleteObject(SelectObject(bitmap_dc, old_brush));
+ DeleteObject(SelectObject(bitmap_dc, bitmap));
+#ifndef Q_OS_WINCE
+ DeleteDC(bitmap_dc);
+#endif
+ ReleaseDC(0, display_dc);
+}
+
+static void compareImages(const QImage &image1, const QImage &image2)
+{
+ QCOMPARE(image1.width(), image2.width());
+ QCOMPARE(image1.height(), image2.height());
+ QCOMPARE(image1.format(), image2.format());
+
+ static const int fuzz = 1;
+
+ for (int y = 0; y < image1.height(); y++)
+ {
+ for (int x = 0; x < image2.width(); x++)
+ {
+ QRgb p1 = image1.pixel(x, y);
+ QRgb p2 = image2.pixel(x, y);
+
+ bool pixelMatches =
+ qAbs(qRed(p1) - qRed(p2)) <= fuzz
+ && qAbs(qGreen(p1) - qGreen(p2)) <= fuzz
+ && qAbs(qBlue(p1) - qBlue(p2)) <= fuzz
+ && qAbs(qAlpha(p1) - qAlpha(p2)) <= fuzz;
+
+ QVERIFY(pixelMatches);
+ }
+ }
+}
+
+void tst_QPixmap::toWinHICON_data()
+{
+ QTest::addColumn<QString>("image");
+ QTest::addColumn<int>("width");
+ QTest::addColumn<int>("height");
+
+ const QString prefix = QLatin1String(SRCDIR) + "/convertFromToHICON";
+
+ QTest::newRow("32bpp_16x16") << prefix + QLatin1String("/icon_32bpp") << 16 << 16;
+ QTest::newRow("32bpp_32x32") << prefix + QLatin1String("/icon_32bpp") << 32 << 32;
+ QTest::newRow("32bpp_48x48") << prefix + QLatin1String("/icon_32bpp") << 48 << 48;
+ QTest::newRow("32bpp_256x256") << prefix + QLatin1String("/icon_32bpp") << 256 << 256;
+
+ QTest::newRow("8bpp_16x16") << prefix + QLatin1String("/icon_8bpp") << 16 << 16;
+ QTest::newRow("8bpp_32x32") << prefix + QLatin1String("/icon_8bpp") << 32 << 32;
+ QTest::newRow("8bpp_48x48") << prefix + QLatin1String("/icon_8bpp") << 48 << 48;
+}
+
+void tst_QPixmap::toWinHICON()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Test shall be enabled for Windows CE shortly.", SkipAll);
+#endif
+
+ QFETCH(int, width);
+ QFETCH(int, height);
+ QFETCH(QString, image);
+
+ QPixmap empty(width, height);
+ empty.fill(Qt::transparent);
+
+ HDC display_dc = GetDC(0);
+ HDC bitmap_dc = CreateCompatibleDC(display_dc);
+ HBITMAP bitmap = empty.toWinHBITMAP(QPixmap::Alpha);
+ SelectObject(bitmap_dc, bitmap);
+
+ QImage imageFromFile(image + QString(QLatin1String("_%1x%2.png")).arg(width).arg(height));
+ imageFromFile = imageFromFile.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+
+ HICON icon = QPixmap::fromImage(imageFromFile).toWinHICON();
+
+ DrawIconEx(bitmap_dc, 0, 0, icon, width, height, 0, 0, DI_NORMAL);
+
+ DestroyIcon(icon);
+ DeleteDC(bitmap_dc);
+
+ QImage imageFromHICON = QPixmap::fromWinHBITMAP(bitmap, QPixmap::Alpha).toImage();
+
+ ReleaseDC(0, display_dc);
+
+ // fuzzy comparison must be used, as the pixel values change slightly during conversion
+ // between QImage::Format_ARGB32 and QImage::Format_ARGB32_Premultiplied, or elsewhere
+
+ // QVERIFY(imageFromHICON == imageFromFile);
+ compareImages(imageFromHICON, imageFromFile);
+}
+
+void tst_QPixmap::fromWinHICON_data()
+{
+ toWinHICON_data();
+}
+
+void tst_QPixmap::fromWinHICON()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Test shall be enabled for Windows CE shortly.", SkipAll);
+
+#else
+ QFETCH(int, width);
+ QFETCH(int, height);
+ QFETCH(QString, image);
+
+ HICON icon = (HICON)LoadImage(0, (wchar_t*)(image + QLatin1String(".ico")).utf16(), IMAGE_ICON, width, height, LR_LOADFROMFILE);
+ QImage imageFromHICON = QPixmap::fromWinHICON(icon).toImage();
+ DestroyIcon(icon);
+
+ QImage imageFromFile(image + QString(QLatin1String("_%1x%2.png")).arg(width).arg(height));
+ imageFromFile = imageFromFile.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+
+ // fuzzy comparison must be used, as the pixel values change slightly during conversion
+ // between QImage::Format_ARGB32 and QImage::Format_ARGB32_Premultiplied, or elsewhere
+
+ // QVERIFY(imageFromHICON == imageFromFile);
+ compareImages(imageFromHICON, imageFromFile);
+#endif
+}
+
+#endif // Q_WS_WIN
+
+#if defined(Q_OS_SYMBIAN)
+Q_DECLARE_METATYPE(TDisplayMode)
+
+void tst_QPixmap::fromSymbianCFbsBitmap_data()
+{
+ QTest::addColumn<TDisplayMode>("format");
+ QTest::addColumn<int>("width");
+ QTest::addColumn<int>("height");
+ QTest::addColumn<QColor>("color");
+
+ const int smallWidth = 20;
+ const int smallHeight = 20;
+ const int largeWidth = 240;
+ const int largeHeight = 320;
+ const int notAlignedWidth = 250;
+ const int notAlignedHeight = 250;
+
+ // Indexed Color Formats - Disabled since images seem to be blank -> no palette?
+// QTest::newRow("EGray2 small") << EGray2 << smallWidth << smallHeight << QColor(Qt::black);
+// QTest::newRow("EGray2 big") << EGray2 << largeWidth << largeHeight << QColor(Qt::black);
+// QTest::newRow("EGray256 small") << EGray256 << smallWidth << smallHeight << QColor(Qt::blue);
+// QTest::newRow("EGray256 big") << EGray256 << largeWidth << largeHeight << QColor(Qt::blue);
+// QTest::newRow("EColor256 small") << EColor256 << smallWidth << smallHeight << QColor(Qt::red);
+// QTest::newRow("EColor256 big") << EColor256 << largeWidth << largeHeight << QColor(Qt::red);
+
+ // Direct Color Formats
+ QTest::newRow("EColor4K small") << EColor4K << smallWidth << smallHeight << QColor(Qt::red);
+ QTest::newRow("EColor4K big") << EColor4K << largeWidth << largeHeight << QColor(Qt::red);
+ QTest::newRow("EColor4K not aligned") << EColor4K << notAlignedWidth << notAlignedHeight << QColor(Qt::red);
+ QTest::newRow("EColor64K small") << EColor64K << smallWidth << smallHeight << QColor(Qt::green);
+ QTest::newRow("EColor64K big") << EColor64K << largeWidth << largeHeight << QColor(Qt::green);
+ QTest::newRow("EColor64K not aligned") << EColor64K << notAlignedWidth << notAlignedHeight << QColor(Qt::green);
+ QTest::newRow("EColor16M small") << EColor16M << smallWidth << smallHeight << QColor(Qt::yellow);
+ QTest::newRow("EColor16M big") << EColor16M << largeWidth << largeHeight << QColor(Qt::yellow);
+ QTest::newRow("EColor16M not aligned") << EColor16M << notAlignedWidth << notAlignedHeight << QColor(Qt::yellow);
+ QTest::newRow("EColor16MU small") << EColor16MU << smallWidth << smallHeight << QColor(Qt::red);
+ QTest::newRow("EColor16MU big") << EColor16MU << largeWidth << largeHeight << QColor(Qt::red);
+ QTest::newRow("EColor16MU not aligned") << EColor16MU << notAlignedWidth << notAlignedHeight << QColor(Qt::red);
+ QTest::newRow("EColor16MA small opaque") << EColor16MA << smallWidth << smallHeight << QColor(255, 255, 0);
+ QTest::newRow("EColor16MA big opaque") << EColor16MA << largeWidth << largeHeight << QColor(255, 255, 0);
+ QTest::newRow("EColor16MA not aligned opaque") << EColor16MA << notAlignedWidth << notAlignedHeight << QColor(255, 255, 0);
+
+ // Semi-transparent Colors - Disabled for now, since the QCOMPARE fails, but visually confirmed to work
+// QTest::newRow("EColor16MA small semi") << EColor16MA << smallWidth << smallHeight << QColor(255, 255, 0, 127);
+// QTest::newRow("EColor16MA big semi") << EColor16MA << largeWidth << largeHeight << QColor(255, 255, 0, 127);
+// QTest::newRow("EColor16MA small trans") << EColor16MA << smallWidth << smallHeight << QColor(255, 255, 0, 0);
+// QTest::newRow("EColor16MA big trans") << EColor16MA << largeWidth << largeHeight << QColor(255, 255, 0, 0);
+
+#if !defined(__SERIES60_31__)
+ QTest::newRow("EColor16MAP small") << EColor16MAP << smallWidth << smallHeight << QColor(Qt::red);
+ QTest::newRow("EColor16MAP big") << EColor16MAP << largeWidth << largeHeight << QColor(Qt::red);
+#endif
+}
+
+void tst_QPixmap::fromSymbianCFbsBitmap()
+{
+ QFETCH(TDisplayMode, format);
+ QFETCH(int, width);
+ QFETCH(int, height);
+ QFETCH(QColor, color);
+ int expectedDepth = TDisplayModeUtils::NumDisplayModeBitsPerPixel(format);
+
+ CFbsBitmap *nativeBitmap = 0;
+ CFbsBitmapDevice *bitmapDevice = 0;
+ CBitmapContext *bitmapContext = 0;
+
+ nativeBitmap = new (ELeave) CFbsBitmap();
+ TInt err = nativeBitmap->Create(TSize(width, height), format);
+ CleanupStack::PushL(nativeBitmap);
+ QVERIFY(err == KErrNone);
+ bitmapDevice = CFbsBitmapDevice::NewL(nativeBitmap);
+ CleanupStack::PushL(bitmapDevice);
+
+ err = bitmapDevice->CreateBitmapContext(bitmapContext);
+ CleanupStack::PushL(bitmapContext);
+ QVERIFY(err == KErrNone);
+ TRgb symbianColor = TRgb(color.red(), color.green(), color.blue(), color.alpha());
+ bitmapContext->SetBrushColor(symbianColor);
+ bitmapContext->Clear();
+
+ __UHEAP_MARK;
+ { // Test the null case
+ CFbsBitmap *bitmap = 0;
+ QPixmap pixmap = QPixmap::fromSymbianCFbsBitmap(bitmap);
+ QVERIFY(pixmap.isNull());
+ }
+ __UHEAP_MARKEND;
+
+ __UHEAP_MARK;
+ { // Test the normal case
+ QPixmap pixmap = QPixmap::fromSymbianCFbsBitmap(nativeBitmap);
+// QCOMPARE(pixmap.depth(), expectedDepth); // Depth is not preserved now
+ QCOMPARE(pixmap.width(), width);
+ QCOMPARE(pixmap.height(), height);
+ QImage image = pixmap.toImage();
+
+ QColor actualColor(image.pixel(1, 1));
+ QCOMPARE(actualColor, color);
+
+ QImage shouldBe(pixmap.width(), pixmap.height(), image.format());
+ if (image.format() == QImage::Format_RGB16)
+ shouldBe.fill(qrgb565(color.rgba()).rawValue());
+ else
+ shouldBe.fill(color.rgba());
+ QCOMPARE(image, shouldBe);
+ }
+ __UHEAP_MARKEND;
+
+ CleanupStack::PopAndDestroy(3);
+}
+
+void tst_QPixmap::toSymbianCFbsBitmap_data()
+{
+ QTest::addColumn<int>("red");
+ QTest::addColumn<int>("green");
+ QTest::addColumn<int>("blue");
+
+ QTest::newRow("red") << 255 << 0 << 0;
+ QTest::newRow("green") << 0 << 255 << 0;
+ QTest::newRow("blue") << 0 << 0 << 255;
+}
+
+void tst_QPixmap::toSymbianCFbsBitmap()
+{
+ QFETCH(int, red);
+ QFETCH(int, green);
+ QFETCH(int, blue);
+
+ QPixmap pm(100, 100);
+ pm.fill(QColor(red, green, blue));
+
+ CFbsBitmap *bitmap = pm.toSymbianCFbsBitmap();
+
+ QVERIFY(bitmap != 0);
+
+ // Verify size
+ QCOMPARE(100, (int) bitmap->SizeInPixels().iWidth);
+ QCOMPARE(100, (int) bitmap->SizeInPixels().iHeight);
+
+ // Verify pixel color
+ TRgb pixel;
+ bitmap->GetPixel(pixel, TPoint(0,0));
+ QCOMPARE((int)pixel.Red(), red);
+ QCOMPARE((int)pixel.Green(), green);
+ QCOMPARE((int)pixel.Blue(), blue);
+
+ // Clean up
+ delete bitmap;
+}
+#endif
+
+void tst_QPixmap::onlyNullPixmapsOutsideGuiThread()
+{
+#ifdef Q_WS_QPA
+ QSKIP("QTBUG-20864 can't determine if threaded pixmaps are available for qpa", SkipAll);
+#endif
+#if !defined(Q_WS_WIN) && !defined(Q_WS_MAC)
+ class Thread : public QThread
+ {
+ public:
+ void run()
+ {
+ QTest::ignoreMessage(QtWarningMsg,
+ "QPixmap: It is not safe to use pixmaps outside the GUI thread");
+ QPixmap pixmap;
+ QVERIFY(pixmap.isNull());
+
+ QTest::ignoreMessage(QtWarningMsg,
+ "QPixmap: It is not safe to use pixmaps outside the GUI thread");
+ QPixmap pixmap1(100, 100);
+ QVERIFY(pixmap1.isNull());
+
+ QTest::ignoreMessage(QtWarningMsg,
+ "QPixmap: It is not safe to use pixmaps outside the GUI thread");
+ QPixmap pixmap2(pixmap1);
+ QVERIFY(pixmap2.isNull());
+ }
+ };
+ Thread thread;
+#if defined(Q_OS_SYMBIAN)
+ thread.setStackSize(0x10000);
+#endif
+ thread.start();
+#if defined(Q_OS_SYMBIAN)
+ QVERIFY(thread.wait(10000));
+#else
+ thread.wait();
+#endif
+
+#endif // !defined(Q_WS_WIN) && !defined(Q_WS_MAC)
+}
+
+void tst_QPixmap::refUnref()
+{
+ // Simple ref/unref
+ {
+ QPixmap p;
+ }
+ {
+ QBitmap b;
+ }
+
+ // Get a copy of a pixmap that goes out of scope
+ {
+ QPixmap b;
+ {
+ QPixmap a(10, 10);
+ a.fill(Qt::color0);
+ b = a;
+ }
+ }
+ {
+ QBitmap mask;
+ {
+ QBitmap bitmap(10, 10);
+ bitmap.fill(Qt::color1);
+ mask = bitmap.mask();
+ }
+ mask.fill(Qt::color0);
+ }
+
+}
+
+void tst_QPixmap::copy()
+{
+ QPixmap src(32, 32);
+ {
+ QPainter p(&src);
+ p.fillRect(0, 0, 32, 32, Qt::red);
+ p.fillRect(10, 10, 10, 10, Qt::blue);
+ }
+
+ QPixmap dest = src.copy(10, 10, 10, 10);
+
+ QPixmap expected(10, 10);
+ expected.fill(Qt::blue);
+ QVERIFY(lenientCompare(dest, expected));
+
+ QPixmap trans;
+ trans.fill(Qt::transparent);
+
+ QPixmap transCopy = trans.copy();
+ QVERIFY(pixmapsAreEqual(&trans, &transCopy));
+}
+
+void tst_QPixmap::depthOfNullObjects()
+{
+ QBitmap b1;
+ QVERIFY(b1.depth() == 0);
+ QPixmap p4;
+ QVERIFY(p4.depth() == 0);
+}
+
+void tst_QPixmap::transformed()
+{
+ QPixmap p1(20, 10);
+ p1.fill(Qt::red);
+ {
+ QPainter p(&p1);
+ p.drawRect(0, 0, p1.width() - 1, p1.height() - 1);
+ }
+
+ QPixmap p2(10, 20);
+ {
+ QPainter p(&p2);
+ p.rotate(90);
+ p.drawPixmap(0, -p1.height(), p1);
+ }
+
+ QPixmap p3(20, 10);
+ {
+ QPainter p(&p3);
+ p.rotate(180);
+ p.drawPixmap(-p1.width(), -p1.height(), p1);
+ }
+
+ QPixmap p4(10, 20);
+ {
+ QPainter p(&p4);
+ p.rotate(270);
+ p.drawPixmap(-p1.width(), 0, p1);
+ }
+
+ QPixmap p1_90 = p1.transformed(QTransform().rotate(90));
+ QPixmap p1_180 = p1.transformed(QTransform().rotate(180));
+ QPixmap p1_270 = p1.transformed(QTransform().rotate(270));
+
+ QVERIFY(lenientCompare(p1_90, p2));
+ QVERIFY(lenientCompare(p1_180, p3));
+ QVERIFY(lenientCompare(p1_270, p4));
+}
+
+void tst_QPixmap::transformed2()
+{
+ QPixmap pm(3, 3);
+ pm.fill(Qt::red);
+ QPainter p(&pm);
+ p.fillRect(0, 0, 3, 3, QBrush(Qt::Dense4Pattern));
+ p.end();
+
+ QTransform transform;
+ transform.rotate(-90);
+ transform.scale(3, 3);
+
+ QPixmap actual = pm.transformed(transform);
+
+ QPixmap expected(9, 9);
+ expected.fill(Qt::red);
+ p.begin(&expected);
+ p.setBrush(Qt::black);
+ p.setPen(Qt::NoPen);
+ p.drawRect(3, 0, 3, 3);
+ p.drawRect(0, 3, 3, 3);
+ p.drawRect(6, 3, 3, 3);
+ p.drawRect(3, 6, 3, 3);
+ p.end();
+
+ QVERIFY(lenientCompare(actual, expected));
+}
+
+void tst_QPixmap::fromImage_crash()
+{
+ QImage *img = new QImage(64, 64, QImage::Format_ARGB32_Premultiplied);
+
+ QPixmap pm = QPixmap::fromImage(*img);
+ QPainter painter(&pm);
+
+ delete img;
+}
+
+//This is testing QPlatformPixmap::createCompatiblePlatformPixmap - see QTBUG-5977
+void tst_QPixmap::splash_crash()
+{
+ QPixmap pix;
+ pix = QPixmap(":/images/designer.png");
+ QSplashScreen splash(pix);
+ splash.show();
+ QCoreApplication::processEvents();
+ splash.close();
+}
+
+void tst_QPixmap::fromData()
+{
+ unsigned char bits[] = { 0xaa, 0x55 };
+
+ QBitmap bm = QBitmap::fromData(QSize(8, 2), bits);
+ QImage img = bm.toImage();
+
+ QSet<QRgb> colors;
+ for (int y = 0; y < img.height(); ++y)
+ for (int x = 0; x < img.width(); ++x)
+ colors << img.pixel(x, y);
+
+ QCOMPARE(colors.size(), 2);
+
+ QCOMPARE(img.pixel(0, 0), QRgb(0xffffffff));
+ QCOMPARE(img.pixel(0, 1), QRgb(0xff000000));
+}
+
+void tst_QPixmap::loadFromDataNullValues()
+{
+ {
+ QPixmap pixmap;
+ pixmap.loadFromData(QByteArray());
+ QVERIFY(pixmap.isNull());
+ }
+ {
+ QPixmap pixmap;
+ pixmap.loadFromData(0, 123);
+ QVERIFY(pixmap.isNull());
+ }
+ {
+ QPixmap pixmap;
+ const uchar bla[] = "bla";
+ pixmap.loadFromData(bla, 0);
+ QVERIFY(pixmap.isNull());
+ }
+}
+
+void tst_QPixmap::loadFromDataImage_data()
+{
+ QTest::addColumn<QString>("imagePath");
+#ifdef Q_OS_SYMBIAN
+ const QString prefix = QLatin1String(SRCDIR) + "loadFromData";
+#else
+ const QString prefix = QLatin1String(SRCDIR) + "/loadFromData";
+#endif
+ QTest::newRow("designer_argb32.png") << prefix + "/designer_argb32.png";
+ // When no extension is provided we try all extensions that has been registered by image providers
+ QTest::newRow("designer_argb32") << prefix + "/designer_argb32.png";
+ QTest::newRow("designer_indexed8_no_alpha.png") << prefix + "/designer_indexed8_no_alpha.png";
+ QTest::newRow("designer_indexed8_with_alpha.png") << prefix + "/designer_indexed8_with_alpha.png";
+ QTest::newRow("designer_rgb32.png") << prefix + "/designer_rgb32.png";
+ QTest::newRow("designer_indexed8_no_alpha.gif") << prefix + "/designer_indexed8_no_alpha.gif";
+ QTest::newRow("designer_indexed8_with_alpha.gif") << prefix + "/designer_indexed8_with_alpha.gif";
+ QTest::newRow("designer_rgb32.jpg") << prefix + "/designer_rgb32.jpg";
+}
+
+void tst_QPixmap::loadFromDataImage()
+{
+ QFETCH(QString, imagePath);
+
+ QImage imageRef(imagePath);
+ QPixmap pixmapWithCopy = QPixmap::fromImage(imageRef);
+
+ QFile file(imagePath);
+ file.open(QIODevice::ReadOnly);
+ QByteArray rawData = file.readAll();
+
+ QPixmap directLoadingPixmap;
+ directLoadingPixmap.loadFromData(rawData);
+
+ QVERIFY(pixmapsAreEqual(&pixmapWithCopy, &directLoadingPixmap));
+}
+
+void tst_QPixmap::fromImageReader_data()
+{
+ QTest::addColumn<QString>("imagePath");
+#ifdef Q_OS_SYMBIAN
+ const QString prefix = QLatin1String(SRCDIR) + "loadFromData";
+#else
+ const QString prefix = QLatin1String(SRCDIR) + "/loadFromData";
+#endif
+ QTest::newRow("designer_argb32.png") << prefix + "/designer_argb32.png";
+ QTest::newRow("designer_indexed8_no_alpha.png") << prefix + "/designer_indexed8_no_alpha.png";
+ QTest::newRow("designer_indexed8_with_alpha.png") << prefix + "/designer_indexed8_with_alpha.png";
+ QTest::newRow("designer_rgb32.png") << prefix + "/designer_rgb32.png";
+ QTest::newRow("designer_indexed8_no_alpha.gif") << prefix + "/designer_indexed8_no_alpha.gif";
+ QTest::newRow("designer_indexed8_with_alpha.gif") << prefix + "/designer_indexed8_with_alpha.gif";
+ QTest::newRow("designer_rgb32.jpg") << prefix + "/designer_rgb32.jpg";
+ QTest::newRow("designer_indexed8_with_alpha_animated") << prefix + "/designer_indexed8_with_alpha_animated.gif";
+ QTest::newRow("designer_indexed8_with_alpha_animated") << prefix + "/designer_indexed8_no_alpha_animated.gif";
+}
+
+void tst_QPixmap::fromImageReader()
+{
+ QFETCH(QString, imagePath);
+
+ QImage imageRef(imagePath);
+ QPixmap pixmapWithCopy = QPixmap::fromImage(imageRef);
+
+ QImageReader imageReader(imagePath);
+
+ QPixmap directLoadingPixmap = QPixmap::fromImageReader(&imageReader);
+
+ QVERIFY(pixmapsAreEqual(&pixmapWithCopy, &directLoadingPixmap));
+}
+
+void tst_QPixmap::fromImageReaderAnimatedGif_data()
+{
+ QTest::addColumn<QString>("imagePath");
+ QTest::newRow("gif with alpha") << QString::fromLatin1("/designer_indexed8_with_alpha_animated.gif");
+ QTest::newRow("gif without alpha") << QString::fromLatin1("/designer_indexed8_no_alpha_animated.gif");
+}
+
+void tst_QPixmap::fromImageReaderAnimatedGif()
+{
+ QFETCH(QString, imagePath);
+#ifdef Q_OS_SYMBIAN
+ const QString prefix = QLatin1String(SRCDIR) + "loadFromData";
+#else
+ const QString prefix = QLatin1String(SRCDIR) + "/loadFromData";
+#endif
+ const QString path = prefix + imagePath;
+
+ QImageReader referenceReader(path);
+ QImageReader pixmapReader(path);
+
+ QVERIFY(referenceReader.canRead());
+ QVERIFY(referenceReader.imageCount() > 1);
+
+ for (int i = 0; i < referenceReader.imageCount(); ++i) {
+ QImage refImage = referenceReader.read();
+ QPixmap refPixmap = QPixmap::fromImage(refImage);
+
+ QPixmap directLoadingPixmap = QPixmap::fromImageReader(&pixmapReader);
+ QVERIFY(pixmapsAreEqual(&refPixmap, &directLoadingPixmap));
+ }
+}
+
+void tst_QPixmap::task_246446()
+{
+ // This crashed without the bugfix in 246446
+ QPixmap pm(10, 10);
+ pm.fill(Qt::transparent); // force 32-bit depth
+ QBitmap bm;
+ pm.setMask(bm);
+ {
+ QPixmap pm2(pm);
+ }
+ QVERIFY(pm.width() == 10);
+ QVERIFY(pm.mask().isNull());
+}
+
+void tst_QPixmap::preserveDepth()
+{
+ QPixmap target(64, 64);
+ target.fill(Qt::transparent);
+
+ QPixmap source(64, 64);
+ source.fill(Qt::white);
+
+ int depth = source.depth();
+
+ QPainter painter(&target);
+ painter.setBrush(source);
+ painter.drawRect(target.rect());
+ painter.end();
+
+ QCOMPARE(depth, source.depth());
+}
+
+void tst_QPixmap::loadAsBitmapOrPixmap()
+{
+ QImage tmp(10, 10, QImage::Format_RGB32);
+ tmp.save("temp_image.png");
+
+ bool ok;
+
+ // Check that we can load the pixmap as a pixmap and that it then turns into a pixmap
+ QPixmap pixmap("temp_image.png");
+ QVERIFY(!pixmap.isNull());
+ QVERIFY(pixmap.depth() > 1);
+ QVERIFY(!pixmap.isQBitmap());
+
+ pixmap = QPixmap();
+ ok = pixmap.load("temp_image.png");
+ QVERIFY(ok);
+ QVERIFY(!pixmap.isNull());
+ QVERIFY(pixmap.depth() > 1);
+ QVERIFY(!pixmap.isQBitmap());
+
+ //now we can try to load it without an extension
+ pixmap = QPixmap();
+ ok = pixmap.load("temp_image");
+ QVERIFY(ok);
+ QVERIFY(!pixmap.isNull());
+ QVERIFY(pixmap.depth() > 1);
+ QVERIFY(!pixmap.isQBitmap());
+
+ // The do the same check for bitmaps..
+ QBitmap bitmap("temp_image.png");
+ QVERIFY(!bitmap.isNull());
+ QVERIFY(bitmap.depth() == 1);
+ QVERIFY(bitmap.isQBitmap());
+
+ bitmap = QBitmap();
+ ok = bitmap.load("temp_image.png");
+ QVERIFY(ok);
+ QVERIFY(!bitmap.isNull());
+ QVERIFY(bitmap.depth() == 1);
+ QVERIFY(bitmap.isQBitmap());
+}
+
+void tst_QPixmap::toImageDeepCopy()
+{
+ QPixmap pixmap(64, 64);
+ pixmap.fill(Qt::white);
+
+ QPainter painter(&pixmap);
+ QImage first = pixmap.toImage();
+
+ painter.setBrush(Qt::black);
+ painter.drawEllipse(pixmap.rect());
+
+ QImage second = pixmap.toImage();
+
+ QVERIFY(first != second);
+}
+
+#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_OPENVG)
+Q_OPENVG_EXPORT VGImage qPixmapToVGImage(const QPixmap& pixmap);
+class FriendlyVGPlatformPixmap : public QVGPlatformPixmap
+{
+public:
+ FriendlyVGPlatformPixmap(PixelType type) : QVGPlatformPixmap(type) { }
+ bool sourceIsNull() { return source.isNull(); }
+ friend QPixmap pixmapFromVGImage(VGImage image);
+};
+QPixmap pixmapFromVGImage(VGImage image)
+{
+ if (image != VG_INVALID_HANDLE) {
+ int w = vgGetParameteri(image, VG_IMAGE_WIDTH);
+ int h = vgGetParameteri(image, VG_IMAGE_HEIGHT);
+ FriendlyVGPlatformPixmap *pd = new FriendlyVGPlatformPixmap(QPlatformPixmap::PixmapType);
+ pd->resize(w, h);
+ pd->vgImage = image;
+ pd->recreate = false;
+ pd->prevSize = QSize(pd->w, pd->h);
+ return QPixmap(pd);
+ }
+ return QPixmap();
+}
+class Content : public QWidget
+{
+public:
+ void paintEvent(QPaintEvent *) {
+ QPainter painter(this);
+ QColor testPixel(qRgb(200, 150, 100));
+ if (pm.isNull()) { // first phase: create a VGImage
+ painter.beginNativePainting();
+ vgimage = vgCreateImage(VG_sARGB_8888_PRE, w, h, VG_IMAGE_QUALITY_FASTER);
+ QImage img(20, 10, QImage::Format_ARGB32_Premultiplied);
+ img.fill(qRgb(0, 0, 0));
+ QPainter p(&img);
+ p.fillRect(0, 0, img.width(), img.height(), testPixel);
+ p.end();
+ vgImageSubData(vgimage, img.bits(), img.bytesPerLine(), VG_sARGB_8888_PRE, 0, 0, img.width(), img.height());
+ // Now the area 0,0 20x10 (in OpenVG coords) is filled with some color.
+ painter.endNativePainting();
+ } else { // second phase: check if readback works
+ painter.drawPixmap(0, 0, pm);
+ // Drawing should not cause readback, this is important for performance;
+ noreadback_ok = static_cast<FriendlyVGPlatformPixmap *>(pm.handle())->sourceIsNull();
+ // However toImage() requires readback.
+ QImage img = pm.toImage();
+ readback_ok = img.width() == pm.width();
+ readback_ok &= img.height() == pm.height();
+ readback_ok &= !static_cast<FriendlyVGPlatformPixmap *>(pm.handle())->sourceIsNull();
+ uint pix = img.pixel(1, 1);
+ content_ok = qRed(pix) == testPixel.red();
+ content_ok &= qGreen(pix) == testPixel.green();
+ content_ok &= qBlue(pix) == testPixel.blue();
+ pix = img.pixel(img.width() - 1, img.height() - 1);
+ content_ok &= qRed(pix) == 0;
+ content_ok &= qGreen(pix) == 0;
+ content_ok &= qBlue(pix) == 0;
+ }
+ }
+ int w;
+ int h;
+ VGImage vgimage;
+ QPixmap pm;
+ bool noreadback_ok;
+ bool readback_ok;
+ bool content_ok;
+};
+void tst_QPixmap::vgImageReadBack()
+{
+ QPixmap tmp(10, 20);
+ if (tmp.handle()->classId() == QPlatformPixmap::OpenVGClass) {
+ Content c;
+ c.w = 50;
+ c.h = 60;
+ c.vgimage = VG_INVALID_HANDLE;
+ c.noreadback_ok = c.readback_ok = c.content_ok = false;
+ c.showFullScreen();
+ QTest::qWaitForWindowShown(&c);
+ QVERIFY(c.vgimage != VG_INVALID_HANDLE);
+ QPixmap pm = pixmapFromVGImage(c.vgimage);
+ QVERIFY(!pm.isNull());
+ QCOMPARE(pm.width(), c.w);
+ QCOMPARE(pm.height(), c.h);
+ QVERIFY(qPixmapToVGImage(pm) == c.vgimage);
+ QVERIFY(static_cast<FriendlyVGPlatformPixmap *>(pm.handle())->sourceIsNull());
+ c.pm = pm;
+ // Make sure the second phase in paintEvent is executed too.
+ c.hide();
+ c.showFullScreen();
+ QTest::qWaitForWindowShown(&c);
+ QVERIFY(c.noreadback_ok);
+ QVERIFY(c.readback_ok);
+ QVERIFY(c.content_ok);
+ } else {
+ QSKIP("Not using openvg graphicssystem", SkipSingle);
+ }
+}
+#endif // Symbian & OpenVG
+
+void tst_QPixmap::scaled_QTBUG19157()
+{
+ QPixmap foo(5000, 1);
+ foo = foo.scaled(1024, 1024, Qt::KeepAspectRatio);
+ QVERIFY(!foo.isNull());
+}
+
+QTEST_MAIN(tst_QPixmap)
+#include "tst_qpixmap.moc"
diff --git a/tests/auto/qpixmapcache/.gitignore b/tests/auto/gui/image/qpixmapcache/.gitignore
index 2bc572c2dd..2bc572c2dd 100644
--- a/tests/auto/qpixmapcache/.gitignore
+++ b/tests/auto/gui/image/qpixmapcache/.gitignore
diff --git a/tests/auto/qpixmapcache/qpixmapcache.pro b/tests/auto/gui/image/qpixmapcache/qpixmapcache.pro
index 1ffafd6c25..1ffafd6c25 100644
--- a/tests/auto/qpixmapcache/qpixmapcache.pro
+++ b/tests/auto/gui/image/qpixmapcache/qpixmapcache.pro
diff --git a/tests/auto/qpixmapcache/tst_qpixmapcache.cpp b/tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp
index 9f7192dc1c..9f7192dc1c 100644
--- a/tests/auto/qpixmapcache/tst_qpixmapcache.cpp
+++ b/tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp
diff --git a/tests/auto/qpixmapfilter/noise.png b/tests/auto/gui/image/qpixmapfilter/noise.png
index 1bebaf528e..1bebaf528e 100644
--- a/tests/auto/qpixmapfilter/noise.png
+++ b/tests/auto/gui/image/qpixmapfilter/noise.png
Binary files differ
diff --git a/tests/auto/gui/image/qpixmapfilter/qpixmapfilter.pro b/tests/auto/gui/image/qpixmapfilter/qpixmapfilter.pro
new file mode 100644
index 0000000000..21e10b7ab9
--- /dev/null
+++ b/tests/auto/gui/image/qpixmapfilter/qpixmapfilter.pro
@@ -0,0 +1,13 @@
+load(qttest_p4)
+
+QT += widgets widgets-private
+QT += gui-private
+
+SOURCES += tst_qpixmapfilter.cpp
+
+wince*: {
+ addFiles.files = noise.png
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+}
+
diff --git a/tests/auto/qpixmapfilter/tst_qpixmapfilter.cpp b/tests/auto/gui/image/qpixmapfilter/tst_qpixmapfilter.cpp
index 5634285ad4..5634285ad4 100644
--- a/tests/auto/qpixmapfilter/tst_qpixmapfilter.cpp
+++ b/tests/auto/gui/image/qpixmapfilter/tst_qpixmapfilter.cpp
diff --git a/tests/auto/gui/image/qvolatileimage/qvolatileimage.pro b/tests/auto/gui/image/qvolatileimage/qvolatileimage.pro
new file mode 100644
index 0000000000..45d80b85f2
--- /dev/null
+++ b/tests/auto/gui/image/qvolatileimage/qvolatileimage.pro
@@ -0,0 +1,10 @@
+load(qttest_p4)
+
+QT += gui-private widgets
+
+SOURCES += tst_qvolatileimage.cpp
+
+symbian {
+ TARGET.EPOCHEAPSIZE = 0x200000 0x800000
+ LIBS += -lfbscli
+}
diff --git a/tests/auto/qvolatileimage/tst_qvolatileimage.cpp b/tests/auto/gui/image/qvolatileimage/tst_qvolatileimage.cpp
index bacca66dcd..bacca66dcd 100644
--- a/tests/auto/qvolatileimage/tst_qvolatileimage.cpp
+++ b/tests/auto/gui/image/qvolatileimage/tst_qvolatileimage.cpp
diff --git a/tests/auto/gui/kernel/kernel.pro b/tests/auto/gui/kernel/kernel.pro
new file mode 100644
index 0000000000..880c3c8613
--- /dev/null
+++ b/tests/auto/gui/kernel/kernel.pro
@@ -0,0 +1,17 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qclipboard \
+ qdrag \
+ qevent \
+ qfileopenevent \
+ qguivariant \
+ qkeysequence \
+ qmouseevent \
+ qmouseevent_modal \
+ qpalette \
+ qshortcut \
+ qtouchevent \
+
+symbian {
+ SUBDIRS += qsoftkeymanager
+}
diff --git a/tests/auto/qclipboard/.gitignore b/tests/auto/gui/kernel/qclipboard/.gitignore
index 4fcf7d55fc..4fcf7d55fc 100644
--- a/tests/auto/qclipboard/.gitignore
+++ b/tests/auto/gui/kernel/qclipboard/.gitignore
diff --git a/tests/auto/gui/kernel/qclipboard/copier/copier.pro b/tests/auto/gui/kernel/qclipboard/copier/copier.pro
new file mode 100644
index 0000000000..d345d33eb5
--- /dev/null
+++ b/tests/auto/gui/kernel/qclipboard/copier/copier.pro
@@ -0,0 +1,10 @@
+TEMPLATE = app
+TARGET =
+DEPENDPATH += .
+INCLUDEPATH += .
+CONFIG -= app_bundle
+QT += widgets
+win32: DESTDIR = ../copier
+# Input
+SOURCES += main.cpp
+
diff --git a/tests/auto/qclipboard/copier/main.cpp b/tests/auto/gui/kernel/qclipboard/copier/main.cpp
index e4417352ff..e4417352ff 100644
--- a/tests/auto/qclipboard/copier/main.cpp
+++ b/tests/auto/gui/kernel/qclipboard/copier/main.cpp
diff --git a/tests/auto/qclipboard/paster/main.cpp b/tests/auto/gui/kernel/qclipboard/paster/main.cpp
index 4df4d7fb45..4df4d7fb45 100644
--- a/tests/auto/qclipboard/paster/main.cpp
+++ b/tests/auto/gui/kernel/qclipboard/paster/main.cpp
diff --git a/tests/auto/gui/kernel/qclipboard/paster/paster.pro b/tests/auto/gui/kernel/qclipboard/paster/paster.pro
new file mode 100644
index 0000000000..d214c9e90a
--- /dev/null
+++ b/tests/auto/gui/kernel/qclipboard/paster/paster.pro
@@ -0,0 +1,11 @@
+TEMPLATE = app
+TARGET =
+DEPENDPATH += .
+INCLUDEPATH += .
+win32: DESTDIR = ../paster
+CONFIG -= app_bundle
+QT += widgets
+# Input
+SOURCES += main.cpp
+
+
diff --git a/tests/auto/qclipboard/qclipboard.pro b/tests/auto/gui/kernel/qclipboard/qclipboard.pro
index 692ca5dd3f..692ca5dd3f 100644
--- a/tests/auto/qclipboard/qclipboard.pro
+++ b/tests/auto/gui/kernel/qclipboard/qclipboard.pro
diff --git a/tests/auto/qclipboard/test/test.pro b/tests/auto/gui/kernel/qclipboard/test/test.pro
index 12c6b6ce4f..12c6b6ce4f 100644
--- a/tests/auto/qclipboard/test/test.pro
+++ b/tests/auto/gui/kernel/qclipboard/test/test.pro
diff --git a/tests/auto/gui/kernel/qclipboard/tst_qclipboard.cpp b/tests/auto/gui/kernel/qclipboard/tst_qclipboard.cpp
new file mode 100644
index 0000000000..4d3bb29e13
--- /dev/null
+++ b/tests/auto/gui/kernel/qclipboard/tst_qclipboard.cpp
@@ -0,0 +1,422 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/QDebug>
+#include <QtWidgets/QApplication>
+#include <QtGui/QClipboard>
+#ifdef Q_WS_MAC
+#include <Carbon/Carbon.h>
+#endif
+#ifdef Q_OS_SYMBIAN
+#include "private/qcore_symbian_p.h"
+#include "txtetext.h"
+#include <baclipb.h>
+#endif
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include "txtclipboard.h"
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QClipboard : public QObject
+{
+ Q_OBJECT
+private slots:
+
+ void copy_exit_paste();
+ void capabiliyFunctions();
+ void modes();
+ void testSignals();
+ void setMimeData();
+ void clearBeforeSetText();
+#ifdef Q_OS_SYMBIAN
+ void pasteCopySymbian();
+ void copyPasteSymbian();
+#endif
+
+private:
+ bool nativeClipboardWorking();
+};
+
+
+bool tst_QClipboard::nativeClipboardWorking()
+{
+#ifdef Q_WS_MAC
+ PasteboardRef pasteboard;
+ OSStatus status = PasteboardCreate(0, &pasteboard);
+ if (status == noErr)
+ CFRelease(pasteboard);
+ return status == noErr;
+#endif
+ return true;
+}
+
+Q_DECLARE_METATYPE(QClipboard::Mode)
+
+/*
+ Tests that the capability functions are implemented on all
+ platforms.
+*/
+void tst_QClipboard::capabiliyFunctions()
+{
+ QClipboard * const clipboard = QApplication::clipboard();
+
+ clipboard->supportsSelection();
+ clipboard->supportsFindBuffer();
+ clipboard->ownsSelection();
+ clipboard->ownsClipboard();
+ clipboard->ownsFindBuffer();
+}
+
+/*
+ Test that text inserted into the clipboard in different modes is
+ kept separate.
+*/
+void tst_QClipboard::modes()
+{
+ QClipboard * const clipboard = QApplication::clipboard();
+
+ if (!nativeClipboardWorking())
+ QSKIP("Native clipboard not working in this setup", SkipAll);
+
+ const QString defaultMode = "default mode text;";
+ clipboard->setText(defaultMode);
+ QCOMPARE(clipboard->text(), defaultMode);
+
+ if (clipboard->supportsSelection()) {
+ const QString selectionMode = "selection mode text";
+ clipboard->setText(selectionMode, QClipboard::Selection);
+ QCOMPARE(clipboard->text(QClipboard::Selection), selectionMode);
+ QCOMPARE(clipboard->text(), defaultMode);
+ }
+
+ if (clipboard->supportsFindBuffer()) {
+ const QString searchMode = "find mode text";
+ clipboard->setText(searchMode, QClipboard::FindBuffer);
+ QCOMPARE(clipboard->text(QClipboard::FindBuffer), searchMode);
+ QCOMPARE(clipboard->text(), defaultMode);
+ }
+}
+
+/*
+ Test that the appropriate signals are emitted when the cliboard
+ contents is changed by calling the qt functions.
+*/
+void tst_QClipboard::testSignals()
+{
+ qRegisterMetaType<QClipboard::Mode>("QClipboard::Mode");
+
+ if (!nativeClipboardWorking())
+ QSKIP("Native clipboard not working in this setup", SkipAll);
+
+ QClipboard * const clipboard = QApplication::clipboard();
+
+ QSignalSpy changedSpy(clipboard, SIGNAL(changed(QClipboard::Mode)));
+ QSignalSpy dataChangedSpy(clipboard, SIGNAL(dataChanged()));
+ QSignalSpy searchChangedSpy(clipboard, SIGNAL(findBufferChanged()));
+ QSignalSpy selectionChangedSpy(clipboard, SIGNAL(selectionChanged()));
+
+ const QString text = "clipboard text;";
+
+ // Test the default mode signal.
+ clipboard->setText(text);
+ QCOMPARE(dataChangedSpy.count(), 1);
+ QCOMPARE(searchChangedSpy.count(), 0);
+ QCOMPARE(selectionChangedSpy.count(), 0);
+ QCOMPARE(changedSpy.count(), 1);
+ QCOMPARE(changedSpy.at(0).count(), 1);
+ QCOMPARE(qVariantValue<QClipboard::Mode>(changedSpy.at(0).at(0)), QClipboard::Clipboard);
+
+ changedSpy.clear();
+
+ // Test the selection mode signal.
+ if (clipboard->supportsSelection()) {
+ clipboard->setText(text, QClipboard::Selection);
+ QCOMPARE(selectionChangedSpy.count(), 1);
+ QCOMPARE(changedSpy.count(), 1);
+ QCOMPARE(changedSpy.at(0).count(), 1);
+ QCOMPARE(qVariantValue<QClipboard::Mode>(changedSpy.at(0).at(0)), QClipboard::Selection);
+ } else {
+ QCOMPARE(selectionChangedSpy.count(), 0);
+ }
+ QCOMPARE(dataChangedSpy.count(), 1);
+ QCOMPARE(searchChangedSpy.count(), 0);
+
+ changedSpy.clear();
+
+ // Test the search mode signal.
+ if (clipboard->supportsFindBuffer()) {
+ clipboard->setText(text, QClipboard::FindBuffer);
+ QCOMPARE(searchChangedSpy.count(), 1);
+ QCOMPARE(changedSpy.count(), 1);
+ QCOMPARE(changedSpy.at(0).count(), 1);
+ QCOMPARE(qVariantValue<QClipboard::Mode>(changedSpy.at(0).at(0)), QClipboard::FindBuffer);
+ } else {
+ QCOMPARE(searchChangedSpy.count(), 0);
+ }
+ QCOMPARE(dataChangedSpy.count(), 1);
+}
+
+/*
+ Test that pasted text remain on the clipboard
+ after a Qt application exits.
+*/
+void tst_QClipboard::copy_exit_paste()
+{
+#ifndef QT_NO_PROCESS
+#if defined Q_WS_X11 || defined Q_WS_QWS || defined (Q_WS_QPA)
+ QSKIP("This test does not make sense on X11 and embedded, copied data disappears from the clipboard when the application exits ", SkipAll);
+ // ### It's still possible to test copy/paste - just keep the apps running
+#elif defined (Q_OS_SYMBIAN) && defined (Q_CC_NOKIAX86)
+ QSKIP("emulator cannot launch multiple processes",SkipAll);
+#endif
+ if (!nativeClipboardWorking())
+ QSKIP("Native clipboard not working in this setup", SkipAll);
+ const QStringList stringArgument = QStringList() << "Test string.";
+ QCOMPARE(QProcess::execute("copier/copier", stringArgument), 0);
+#ifdef Q_WS_MAC
+ // The Pasteboard needs a moment to breathe (at least on older Macs).
+ QTest::qWait(100);
+#endif
+ QCOMPARE(QProcess::execute("paster/paster", stringArgument), 0);
+#endif
+}
+
+void tst_QClipboard::setMimeData()
+{
+ if (!nativeClipboardWorking())
+ QSKIP("Native clipboard not working in this setup", SkipAll);
+ QMimeData *mimeData = new QMimeData;
+ const QString TestName(QLatin1String("tst_QClipboard::setMimeData() mimeData"));
+ mimeData->setObjectName(TestName);
+#if defined(Q_OS_WINCE)
+ // need to set text on CE
+ mimeData->setText(QLatin1String("Qt/CE foo"));
+#endif
+
+ QApplication::clipboard()->setMimeData(mimeData);
+ QCOMPARE(QApplication::clipboard()->mimeData(), (const QMimeData *)mimeData);
+ QCOMPARE(QApplication::clipboard()->mimeData()->objectName(), TestName);
+
+ // set it to the same data again, it shouldn't delete mimeData (and crash as a result)
+ QApplication::clipboard()->setMimeData(mimeData);
+ QCOMPARE(QApplication::clipboard()->mimeData(), (const QMimeData *)mimeData);
+ QCOMPARE(QApplication::clipboard()->mimeData()->objectName(), TestName);
+ QApplication::clipboard()->clear();
+ const QMimeData *appMimeData = QApplication::clipboard()->mimeData();
+ QVERIFY(appMimeData != mimeData || appMimeData->objectName() != TestName);
+
+ // check for crash when using the same mimedata object on several clipboards
+ QMimeData *data = new QMimeData;
+ data->setText("foo");
+
+ QApplication::clipboard()->setMimeData(data, QClipboard::Clipboard);
+ QApplication::clipboard()->setMimeData(data, QClipboard::Selection);
+ QApplication::clipboard()->setMimeData(data, QClipboard::FindBuffer);
+
+ QSignalSpy spySelection(QApplication::clipboard(), SIGNAL(selectionChanged()));
+ QSignalSpy spyData(QApplication::clipboard(), SIGNAL(dataChanged()));
+ QSignalSpy spyFindBuffer(QApplication::clipboard(), SIGNAL(findBufferChanged()));
+
+ QApplication::clipboard()->clear(QClipboard::Clipboard);
+ QApplication::clipboard()->clear(QClipboard::Selection); // used to crash on X11
+ QApplication::clipboard()->clear(QClipboard::FindBuffer);
+
+#if defined(Q_WS_X11)
+ QCOMPARE(spySelection.count(), 1);
+ QCOMPARE(spyData.count(), 1);
+ QCOMPARE(spyFindBuffer.count(), 0);
+#elif defined(Q_WS_MAC)
+ QCOMPARE(spySelection.count(), 0);
+ QCOMPARE(spyData.count(), 1);
+ QCOMPARE(spyFindBuffer.count(), 1);
+#elif defined(Q_WS_WIN)
+ QCOMPARE(spySelection.count(), 0);
+ QCOMPARE(spyData.count(), 1);
+ QCOMPARE(spyFindBuffer.count(), 0);
+#endif
+
+ // an other crash test
+ data = new QMimeData;
+ data->setText("foo");
+
+ QApplication::clipboard()->setMimeData(data, QClipboard::Clipboard);
+ QApplication::clipboard()->setMimeData(data, QClipboard::Selection);
+ QApplication::clipboard()->setMimeData(data, QClipboard::FindBuffer);
+
+ QMimeData *newData = new QMimeData;
+ newData->setText("bar");
+
+ spySelection.clear();
+ spyData.clear();
+ spyFindBuffer.clear();
+
+ QApplication::clipboard()->setMimeData(newData, QClipboard::Clipboard);
+ QApplication::clipboard()->setMimeData(newData, QClipboard::Selection); // used to crash on X11
+ QApplication::clipboard()->setMimeData(newData, QClipboard::FindBuffer);
+
+#if defined(Q_WS_X11)
+ QCOMPARE(spySelection.count(), 1);
+ QCOMPARE(spyData.count(), 1);
+ QCOMPARE(spyFindBuffer.count(), 0);
+#elif defined(Q_WS_MAC)
+ QCOMPARE(spySelection.count(), 0);
+ QCOMPARE(spyData.count(), 1);
+ QCOMPARE(spyFindBuffer.count(), 1);
+#elif defined(Q_WS_WIN)
+ QCOMPARE(spySelection.count(), 0);
+ QCOMPARE(spyData.count(), 1);
+ QCOMPARE(spyFindBuffer.count(), 0);
+#endif
+}
+
+void tst_QClipboard::clearBeforeSetText()
+{
+ QApplication::processEvents();
+
+ if (!nativeClipboardWorking())
+ QSKIP("Native clipboard not working in this setup", SkipAll);
+
+ const QString text = "tst_QClipboard::clearBeforeSetText()";
+
+ // setText() should work after processEvents()
+ QApplication::clipboard()->setText(text);
+ QCOMPARE(QApplication::clipboard()->text(), text);
+ QApplication::processEvents();
+ QCOMPARE(QApplication::clipboard()->text(), text);
+
+ // same with clear()
+ QApplication::clipboard()->clear();
+ QVERIFY(QApplication::clipboard()->text().isEmpty());
+ QApplication::processEvents();
+ QVERIFY(QApplication::clipboard()->text().isEmpty());
+
+ // setText() again
+ QApplication::clipboard()->setText(text);
+ QCOMPARE(QApplication::clipboard()->text(), text);
+ QApplication::processEvents();
+ QCOMPARE(QApplication::clipboard()->text(), text);
+
+ // clear() immediately followed by setText() should still return the text
+ QApplication::clipboard()->clear();
+ QVERIFY(QApplication::clipboard()->text().isEmpty());
+ QApplication::clipboard()->setText(text);
+ QCOMPARE(QApplication::clipboard()->text(), text);
+ QApplication::processEvents();
+ QCOMPARE(QApplication::clipboard()->text(), text);
+}
+
+/*
+ Test that text copied from qt application
+ can be pasted with symbian clipboard
+*/
+#ifdef Q_OS_SYMBIAN
+// ### This test case only makes sense in symbian
+void tst_QClipboard::pasteCopySymbian()
+{
+ if (!nativeClipboardWorking())
+ QSKIP("Native clipboard not working in this setup", SkipAll);
+ const QString string("Test string symbian.");
+ QApplication::clipboard()->setText(string);
+
+ const TInt KPlainTextBegin = 0;
+ RFs fs = qt_s60GetRFs();
+ CClipboard* cb = CClipboard::NewForReadingLC(fs);
+
+ CPlainText* text = CPlainText::NewL();
+ CleanupStack::PushL(text);
+ TInt dataLength = text->PasteFromStoreL(cb->Store(), cb->StreamDictionary(),
+ KPlainTextBegin);
+ if (dataLength == 0) {
+ User::Leave(KErrNotFound);
+ }
+ HBufC* hBuf = HBufC::NewL(dataLength);
+ TPtr buf = hBuf->Des();
+ text->Extract(buf, KPlainTextBegin, dataLength);
+
+ QString storeString = qt_TDesC2QString(buf);
+ CleanupStack::PopAndDestroy(text);
+ CleanupStack::PopAndDestroy(cb);
+
+ QCOMPARE(string, storeString);
+}
+#endif
+
+/*
+ Test that text copied to symbian clipboard
+ can be pasted to qt clipboard
+*/
+#ifdef Q_OS_SYMBIAN
+// ### This test case only makes sense in symbian
+void tst_QClipboard::copyPasteSymbian()
+{
+ if (!nativeClipboardWorking())
+ QSKIP("Native clipboard not working in this setup", SkipAll);
+ const QString string("Test string symbian.");
+ const TInt KPlainTextBegin = 0;
+
+ RFs fs = qt_s60GetRFs();
+ CClipboard* cb = CClipboard::NewForWritingLC(fs);
+ CStreamStore& store = cb->Store();
+ CStreamDictionary& dict = cb->StreamDictionary();
+ RStoreWriteStream symbianStream;
+ TStreamId symbianStId = symbianStream.CreateLC(cb->Store());
+
+ CPlainText* text = CPlainText::NewL();
+ CleanupStack::PushL(text);
+ TPtrC textPtr(qt_QString2TPtrC(string));
+ text->InsertL(KPlainTextBegin, textPtr);
+ text->CopyToStoreL(store, dict, KPlainTextBegin, textPtr.Length());
+ CleanupStack::PopAndDestroy(text);
+ (cb->StreamDictionary()).AssignL(KClipboardUidTypePlainText, symbianStId);
+ cb->CommitL();
+ CleanupStack::PopAndDestroy(2, cb);
+
+ QCOMPARE(QApplication::clipboard()->text(), string);
+}
+#endif
+
+QTEST_MAIN(tst_QClipboard)
+
+#include "tst_qclipboard.moc"
diff --git a/tests/auto/qdrag/.gitignore b/tests/auto/gui/kernel/qdrag/.gitignore
index d210808afe..d210808afe 100644
--- a/tests/auto/qdrag/.gitignore
+++ b/tests/auto/gui/kernel/qdrag/.gitignore
diff --git a/tests/auto/gui/kernel/qdrag/qdrag.pro b/tests/auto/gui/kernel/qdrag/qdrag.pro
new file mode 100644
index 0000000000..d9d645559b
--- /dev/null
+++ b/tests/auto/gui/kernel/qdrag/qdrag.pro
@@ -0,0 +1,9 @@
+############################################################
+# Project file for autotest for file qdrag.h
+############################################################
+
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qdrag.cpp
+
+
diff --git a/tests/auto/qdrag/tst_qdrag.cpp b/tests/auto/gui/kernel/qdrag/tst_qdrag.cpp
index 4d18cefb2c..4d18cefb2c 100644
--- a/tests/auto/qdrag/tst_qdrag.cpp
+++ b/tests/auto/gui/kernel/qdrag/tst_qdrag.cpp
diff --git a/tests/auto/qevent/.gitignore b/tests/auto/gui/kernel/qevent/.gitignore
index 2a3ef2a115..2a3ef2a115 100644
--- a/tests/auto/qevent/.gitignore
+++ b/tests/auto/gui/kernel/qevent/.gitignore
diff --git a/tests/auto/qevent/qevent.pro b/tests/auto/gui/kernel/qevent/qevent.pro
index 6042b6cdc9..6042b6cdc9 100644
--- a/tests/auto/qevent/qevent.pro
+++ b/tests/auto/gui/kernel/qevent/qevent.pro
diff --git a/tests/auto/qevent/tst_qevent.cpp b/tests/auto/gui/kernel/qevent/tst_qevent.cpp
index ae39380883..ae39380883 100644
--- a/tests/auto/qevent/tst_qevent.cpp
+++ b/tests/auto/gui/kernel/qevent/tst_qevent.cpp
diff --git a/tests/auto/gui/kernel/qfileopenevent/qfileopenevent.pro b/tests/auto/gui/kernel/qfileopenevent/qfileopenevent.pro
new file mode 100644
index 0000000000..73724828db
--- /dev/null
+++ b/tests/auto/gui/kernel/qfileopenevent/qfileopenevent.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+QT += widgets
+SUBDIRS = test qfileopeneventexternal
diff --git a/tests/auto/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.cpp b/tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.cpp
index 5d1a6a390f..5d1a6a390f 100644
--- a/tests/auto/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.cpp
+++ b/tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.cpp
diff --git a/tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.pro b/tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.pro
new file mode 100644
index 0000000000..cb61b82e38
--- /dev/null
+++ b/tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.pro
@@ -0,0 +1,10 @@
+TEMPLATE = app
+TARGET = qfileopeneventexternal
+QT += core gui widgets
+SOURCES += qfileopeneventexternal.cpp
+symbian: {
+ RSS_RULES += "embeddability=KAppEmbeddable;"
+ RSS_RULES.datatype_list += "priority = EDataTypePriorityHigh; type = \"application/x-tst_qfileopenevent\";"
+ LIBS += -lapparc \
+ -leikcore -lefsrv -lcone
+}
diff --git a/tests/auto/qfileopenevent/test/test.pro b/tests/auto/gui/kernel/qfileopenevent/test/test.pro
index 3f16dcf6ee..3f16dcf6ee 100644
--- a/tests/auto/qfileopenevent/test/test.pro
+++ b/tests/auto/gui/kernel/qfileopenevent/test/test.pro
diff --git a/tests/auto/qfileopenevent/test/tst_qfileopenevent.cpp b/tests/auto/gui/kernel/qfileopenevent/test/tst_qfileopenevent.cpp
index 69cc4ccc01..69cc4ccc01 100644
--- a/tests/auto/qfileopenevent/test/tst_qfileopenevent.cpp
+++ b/tests/auto/gui/kernel/qfileopenevent/test/tst_qfileopenevent.cpp
diff --git a/tests/auto/qguivariant/.gitignore b/tests/auto/gui/kernel/qguivariant/.gitignore
index ea64ae90a0..ea64ae90a0 100644
--- a/tests/auto/qguivariant/.gitignore
+++ b/tests/auto/gui/kernel/qguivariant/.gitignore
diff --git a/tests/auto/qguivariant/qguivariant.pro b/tests/auto/gui/kernel/qguivariant/qguivariant.pro
index 68082f0037..68082f0037 100644
--- a/tests/auto/qguivariant/qguivariant.pro
+++ b/tests/auto/gui/kernel/qguivariant/qguivariant.pro
diff --git a/tests/auto/qguivariant/tst_qguivariant.cpp b/tests/auto/gui/kernel/qguivariant/tst_qguivariant.cpp
index 988580b874..988580b874 100644
--- a/tests/auto/qguivariant/tst_qguivariant.cpp
+++ b/tests/auto/gui/kernel/qguivariant/tst_qguivariant.cpp
diff --git a/tests/auto/qkeysequence/.gitignore b/tests/auto/gui/kernel/qkeysequence/.gitignore
index e06a7b0f43..e06a7b0f43 100644
--- a/tests/auto/qkeysequence/.gitignore
+++ b/tests/auto/gui/kernel/qkeysequence/.gitignore
diff --git a/tests/auto/qkeysequence/keys_de.qm b/tests/auto/gui/kernel/qkeysequence/keys_de.qm
index 5d7aedd765..5d7aedd765 100644
--- a/tests/auto/qkeysequence/keys_de.qm
+++ b/tests/auto/gui/kernel/qkeysequence/keys_de.qm
Binary files differ
diff --git a/tests/auto/qkeysequence/keys_de.ts b/tests/auto/gui/kernel/qkeysequence/keys_de.ts
index 1db18f1fdd..1db18f1fdd 100644
--- a/tests/auto/qkeysequence/keys_de.ts
+++ b/tests/auto/gui/kernel/qkeysequence/keys_de.ts
diff --git a/tests/auto/gui/kernel/qkeysequence/qkeysequence.pro b/tests/auto/gui/kernel/qkeysequence/qkeysequence.pro
new file mode 100644
index 0000000000..6cfbe459ea
--- /dev/null
+++ b/tests/auto/gui/kernel/qkeysequence/qkeysequence.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+
+QT += widgets widgets-private
+QT += core-private gui-private
+
+SOURCES += tst_qkeysequence.cpp
+
+RESOURCES += qkeysequence.qrc
diff --git a/tests/auto/qkeysequence/qkeysequence.qrc b/tests/auto/gui/kernel/qkeysequence/qkeysequence.qrc
index e224faaddd..e224faaddd 100644
--- a/tests/auto/qkeysequence/qkeysequence.qrc
+++ b/tests/auto/gui/kernel/qkeysequence/qkeysequence.qrc
diff --git a/tests/auto/qkeysequence/qt_de.qm b/tests/auto/gui/kernel/qkeysequence/qt_de.qm
index 595e4d7e8f..595e4d7e8f 100644
--- a/tests/auto/qkeysequence/qt_de.qm
+++ b/tests/auto/gui/kernel/qkeysequence/qt_de.qm
Binary files differ
diff --git a/tests/auto/qkeysequence/tst_qkeysequence.cpp b/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp
index 5753fb8df4..5753fb8df4 100644
--- a/tests/auto/qkeysequence/tst_qkeysequence.cpp
+++ b/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp
diff --git a/tests/auto/qmouseevent/.gitignore b/tests/auto/gui/kernel/qmouseevent/.gitignore
index 17cd6be116..17cd6be116 100644
--- a/tests/auto/qmouseevent/.gitignore
+++ b/tests/auto/gui/kernel/qmouseevent/.gitignore
diff --git a/tests/auto/gui/kernel/qmouseevent/qmouseevent.pro b/tests/auto/gui/kernel/qmouseevent/qmouseevent.pro
new file mode 100644
index 0000000000..58cebd3d06
--- /dev/null
+++ b/tests/auto/gui/kernel/qmouseevent/qmouseevent.pro
@@ -0,0 +1,3 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qmouseevent.cpp
diff --git a/tests/auto/qmouseevent/tst_qmouseevent.cpp b/tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp
index 5998aa0c08..5998aa0c08 100644
--- a/tests/auto/qmouseevent/tst_qmouseevent.cpp
+++ b/tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp
diff --git a/tests/auto/qmouseevent_modal/.gitignore b/tests/auto/gui/kernel/qmouseevent_modal/.gitignore
index e15c9eb18c..e15c9eb18c 100644
--- a/tests/auto/qmouseevent_modal/.gitignore
+++ b/tests/auto/gui/kernel/qmouseevent_modal/.gitignore
diff --git a/tests/auto/gui/kernel/qmouseevent_modal/qmouseevent_modal.pro b/tests/auto/gui/kernel/qmouseevent_modal/qmouseevent_modal.pro
new file mode 100644
index 0000000000..2f28de2675
--- /dev/null
+++ b/tests/auto/gui/kernel/qmouseevent_modal/qmouseevent_modal.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qmouseevent_modal.cpp
+
+
+
diff --git a/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp b/tests/auto/gui/kernel/qmouseevent_modal/tst_qmouseevent_modal.cpp
index 7006feeeb8..7006feeeb8 100644
--- a/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp
+++ b/tests/auto/gui/kernel/qmouseevent_modal/tst_qmouseevent_modal.cpp
diff --git a/tests/auto/qpalette/.gitignore b/tests/auto/gui/kernel/qpalette/.gitignore
index 3c1aebac19..3c1aebac19 100644
--- a/tests/auto/qpalette/.gitignore
+++ b/tests/auto/gui/kernel/qpalette/.gitignore
diff --git a/tests/auto/gui/kernel/qpalette/qpalette.pro b/tests/auto/gui/kernel/qpalette/qpalette.pro
new file mode 100644
index 0000000000..4b240e5f9c
--- /dev/null
+++ b/tests/auto/gui/kernel/qpalette/qpalette.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qpalette.cpp
+
+
+
diff --git a/tests/auto/qpalette/tst_qpalette.cpp b/tests/auto/gui/kernel/qpalette/tst_qpalette.cpp
index b63b8bf7b0..b63b8bf7b0 100644
--- a/tests/auto/qpalette/tst_qpalette.cpp
+++ b/tests/auto/gui/kernel/qpalette/tst_qpalette.cpp
diff --git a/tests/auto/qshortcut/.gitignore b/tests/auto/gui/kernel/qshortcut/.gitignore
index 3a17eb18e3..3a17eb18e3 100644
--- a/tests/auto/qshortcut/.gitignore
+++ b/tests/auto/gui/kernel/qshortcut/.gitignore
diff --git a/tests/auto/gui/kernel/qshortcut/qshortcut.pro b/tests/auto/gui/kernel/qshortcut/qshortcut.pro
new file mode 100644
index 0000000000..3f68d2377e
--- /dev/null
+++ b/tests/auto/gui/kernel/qshortcut/qshortcut.pro
@@ -0,0 +1,11 @@
+load(qttest_p4)
+
+# Project Configuration ----------------------------------------------
+INCLUDEPATH += ../
+
+# Normal Test Files --------------------------------------------------
+QT += widgets
+HEADERS +=
+SOURCES += tst_qshortcut.cpp
+
+
diff --git a/tests/auto/qshortcut/tst_qshortcut.cpp b/tests/auto/gui/kernel/qshortcut/tst_qshortcut.cpp
index d761b19542..d761b19542 100644
--- a/tests/auto/qshortcut/tst_qshortcut.cpp
+++ b/tests/auto/gui/kernel/qshortcut/tst_qshortcut.cpp
diff --git a/tests/auto/gui/kernel/qtouchevent/qtouchevent.pro b/tests/auto/gui/kernel/qtouchevent/qtouchevent.pro
new file mode 100644
index 0000000000..55f99b6cdd
--- /dev/null
+++ b/tests/auto/gui/kernel/qtouchevent/qtouchevent.pro
@@ -0,0 +1,3 @@
+SOURCES=tst_qtouchevent.cpp
+TARGET=tst_qtouchevent
+QT += testlib widgets
diff --git a/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp b/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
new file mode 100644
index 0000000000..401f79cbc2
--- /dev/null
+++ b/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
@@ -0,0 +1,1398 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the $MODULE$ of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+#include <QtTest>
+
+class tst_QTouchEventWidget : public QWidget
+{
+public:
+ QList<QTouchEvent::TouchPoint> touchBeginPoints, touchUpdatePoints, touchEndPoints;
+ bool seenTouchBegin, seenTouchUpdate, seenTouchEnd;
+ bool acceptTouchBegin, acceptTouchUpdate, acceptTouchEnd;
+ bool deleteInTouchBegin, deleteInTouchUpdate, deleteInTouchEnd;
+
+ tst_QTouchEventWidget()
+ : QWidget()
+ {
+ reset();
+ }
+
+ void reset()
+ {
+ touchBeginPoints.clear();
+ touchUpdatePoints.clear();
+ touchEndPoints.clear();
+ seenTouchBegin = seenTouchUpdate = seenTouchEnd = false;
+ acceptTouchBegin = acceptTouchUpdate = acceptTouchEnd = true;
+ deleteInTouchBegin = deleteInTouchUpdate = deleteInTouchEnd = false;
+ }
+
+ bool event(QEvent *event)
+ {
+ switch (event->type()) {
+ case QEvent::TouchBegin:
+ if (seenTouchBegin) qWarning("TouchBegin: already seen a TouchBegin");
+ if (seenTouchUpdate) qWarning("TouchBegin: TouchUpdate cannot happen before TouchBegin");
+ if (seenTouchEnd) qWarning("TouchBegin: TouchEnd cannot happen before TouchBegin");
+ seenTouchBegin = !seenTouchBegin && !seenTouchUpdate && !seenTouchEnd;
+ touchBeginPoints = static_cast<QTouchEvent *>(event)->touchPoints();
+ event->setAccepted(acceptTouchBegin);
+ if (deleteInTouchBegin)
+ delete this;
+ break;
+ case QEvent::TouchUpdate:
+ if (!seenTouchBegin) qWarning("TouchUpdate: have not seen TouchBegin");
+ if (seenTouchEnd) qWarning("TouchUpdate: TouchEnd cannot happen before TouchUpdate");
+ seenTouchUpdate = seenTouchBegin && !seenTouchEnd;
+ touchUpdatePoints = static_cast<QTouchEvent *>(event)->touchPoints();
+ event->setAccepted(acceptTouchUpdate);
+ if (deleteInTouchUpdate)
+ delete this;
+ break;
+ case QEvent::TouchEnd:
+ if (!seenTouchBegin) qWarning("TouchEnd: have not seen TouchBegin");
+ if (seenTouchEnd) qWarning("TouchEnd: already seen a TouchEnd");
+ seenTouchEnd = seenTouchBegin && !seenTouchEnd;
+ touchEndPoints = static_cast<QTouchEvent *>(event)->touchPoints();
+ event->setAccepted(acceptTouchEnd);
+ if (deleteInTouchEnd)
+ delete this;
+ break;
+ default:
+ return QWidget::event(event);
+ }
+ return true;
+ }
+};
+
+class tst_QTouchEventGraphicsItem : public QGraphicsItem
+{
+public:
+ QList<QTouchEvent::TouchPoint> touchBeginPoints, touchUpdatePoints, touchEndPoints;
+ bool seenTouchBegin, seenTouchUpdate, seenTouchEnd;
+ int touchBeginCounter, touchUpdateCounter, touchEndCounter;
+ bool acceptTouchBegin, acceptTouchUpdate, acceptTouchEnd;
+ bool deleteInTouchBegin, deleteInTouchUpdate, deleteInTouchEnd;
+ tst_QTouchEventGraphicsItem **weakpointer;
+
+ tst_QTouchEventGraphicsItem()
+ : QGraphicsItem(), weakpointer(0)
+ {
+ reset();
+ }
+
+ ~tst_QTouchEventGraphicsItem()
+ {
+ if (weakpointer)
+ *weakpointer = 0;
+ }
+
+ void reset()
+ {
+ touchBeginPoints.clear();
+ touchUpdatePoints.clear();
+ touchEndPoints.clear();
+ seenTouchBegin = seenTouchUpdate = seenTouchEnd = false;
+ touchBeginCounter = touchUpdateCounter = touchEndCounter = 0;
+ acceptTouchBegin = acceptTouchUpdate = acceptTouchEnd = true;
+ deleteInTouchBegin = deleteInTouchUpdate = deleteInTouchEnd = false;
+ }
+
+ QRectF boundingRect() const { return QRectF(0, 0, 10, 10); }
+ void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) { }
+
+ bool sceneEvent(QEvent *event)
+ {
+ switch (event->type()) {
+ case QEvent::TouchBegin:
+ if (seenTouchBegin) qWarning("TouchBegin: already seen a TouchBegin");
+ if (seenTouchUpdate) qWarning("TouchBegin: TouchUpdate cannot happen before TouchBegin");
+ if (seenTouchEnd) qWarning("TouchBegin: TouchEnd cannot happen before TouchBegin");
+ seenTouchBegin = !seenTouchBegin && !seenTouchUpdate && !seenTouchEnd;
+ ++touchBeginCounter;
+ touchBeginPoints = static_cast<QTouchEvent *>(event)->touchPoints();
+ event->setAccepted(acceptTouchBegin);
+ if (deleteInTouchBegin)
+ delete this;
+ break;
+ case QEvent::TouchUpdate:
+ if (!seenTouchBegin) qWarning("TouchUpdate: have not seen TouchBegin");
+ if (seenTouchEnd) qWarning("TouchUpdate: TouchEnd cannot happen before TouchUpdate");
+ seenTouchUpdate = seenTouchBegin && !seenTouchEnd;
+ ++touchUpdateCounter;
+ touchUpdatePoints = static_cast<QTouchEvent *>(event)->touchPoints();
+ event->setAccepted(acceptTouchUpdate);
+ if (deleteInTouchUpdate)
+ delete this;
+ break;
+ case QEvent::TouchEnd:
+ if (!seenTouchBegin) qWarning("TouchEnd: have not seen TouchBegin");
+ if (seenTouchEnd) qWarning("TouchEnd: already seen a TouchEnd");
+ seenTouchEnd = seenTouchBegin && !seenTouchEnd;
+ ++touchEndCounter;
+ touchEndPoints = static_cast<QTouchEvent *>(event)->touchPoints();
+ event->setAccepted(acceptTouchEnd);
+ if (deleteInTouchEnd)
+ delete this;
+ break;
+ default:
+ return QGraphicsItem::sceneEvent(event);
+ }
+ return true;
+ }
+};
+
+class tst_QTouchEvent : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QTouchEvent() { }
+ ~tst_QTouchEvent() { }
+
+private slots:
+ void touchDisabledByDefault();
+ void touchEventAcceptedByDefault();
+ void touchBeginPropagatesWhenIgnored();
+ void touchUpdateAndEndNeverPropagate();
+ void basicRawEventTranslation();
+ void multiPointRawEventTranslationOnTouchScreen();
+ void multiPointRawEventTranslationOnTouchPad();
+ void deleteInEventHandler();
+ void deleteInRawEventTranslation();
+ void crashInQGraphicsSceneAfterNotHandlingTouchBegin();
+ void touchBeginWithGraphicsWidget();
+};
+
+void tst_QTouchEvent::touchDisabledByDefault()
+{
+ // QWidget
+ {
+ // the widget attribute is not enabled by default
+ QWidget widget;
+ QVERIFY(!widget.testAttribute(Qt::WA_AcceptTouchEvents));
+
+ // events should not be accepted since they are not enabled
+ QList<QTouchEvent::TouchPoint> touchPoints;
+ touchPoints.append(QTouchEvent::TouchPoint(0));
+ QTouchEvent touchEvent(QEvent::TouchBegin,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointPressed,
+ touchPoints);
+ bool res = QApplication::sendEvent(&widget, &touchEvent);
+ QVERIFY(!res);
+ QVERIFY(!touchEvent.isAccepted());
+ }
+
+ // QGraphicsView
+ {
+ QGraphicsScene scene;
+ tst_QTouchEventGraphicsItem item;
+ QGraphicsView view(&scene);
+ scene.addItem(&item);
+ item.setPos(100, 100);
+ view.resize(200, 200);
+ view.fitInView(scene.sceneRect());
+
+ // touch events are not accepted by default
+ QVERIFY(!item.acceptTouchEvents());
+
+ // compose an event to the scene that is over the item
+ QTouchEvent::TouchPoint touchPoint(0);
+ touchPoint.setState(Qt::TouchPointPressed);
+ touchPoint.setPos(view.mapFromScene(item.mapToScene(item.boundingRect().center())));
+ touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
+ touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
+ QTouchEvent touchEvent(QEvent::TouchBegin,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointPressed,
+ (QList<QTouchEvent::TouchPoint>() << touchPoint));
+ bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
+ QVERIFY(!res);
+ QVERIFY(!touchEvent.isAccepted());
+ QVERIFY(!item.seenTouchBegin);
+ }
+}
+
+void tst_QTouchEvent::touchEventAcceptedByDefault()
+{
+ // QWidget
+ {
+ // enabling touch events should automatically accept touch events
+ QWidget widget;
+ widget.setAttribute(Qt::WA_AcceptTouchEvents);
+
+ // QWidget handles touch event by converting them into a mouse event, so the event is both
+ // accepted and handled (res == true)
+ QList<QTouchEvent::TouchPoint> touchPoints;
+ touchPoints.append(QTouchEvent::TouchPoint(0));
+ QTouchEvent touchEvent(QEvent::TouchBegin,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointPressed,
+ touchPoints);
+ bool res = QApplication::sendEvent(&widget, &touchEvent);
+ QVERIFY(res);
+ QVERIFY(touchEvent.isAccepted());
+
+ // tst_QTouchEventWidget does handle, sending succeeds
+ tst_QTouchEventWidget touchWidget;
+ touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
+ touchEvent.ignore();
+ res = QApplication::sendEvent(&touchWidget, &touchEvent);
+ QVERIFY(res);
+ QVERIFY(touchEvent.isAccepted());
+ }
+
+ // QGraphicsView
+ {
+ QGraphicsScene scene;
+ tst_QTouchEventGraphicsItem item;
+ QGraphicsView view(&scene);
+ scene.addItem(&item);
+ item.setPos(100, 100);
+ view.resize(200, 200);
+ view.fitInView(scene.sceneRect());
+
+ // enabling touch events on the item also enables events on the viewport
+ item.setAcceptTouchEvents(true);
+ QVERIFY(view.viewport()->testAttribute(Qt::WA_AcceptTouchEvents));
+
+ // compose an event to the scene that is over the item
+ QTouchEvent::TouchPoint touchPoint(0);
+ touchPoint.setState(Qt::TouchPointPressed);
+ touchPoint.setPos(view.mapFromScene(item.mapToScene(item.boundingRect().center())));
+ touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
+ touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
+ QTouchEvent touchEvent(QEvent::TouchBegin,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointPressed,
+ (QList<QTouchEvent::TouchPoint>() << touchPoint));
+ bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
+ QVERIFY(res);
+ QVERIFY(touchEvent.isAccepted());
+ QVERIFY(item.seenTouchBegin);
+ }
+}
+
+void tst_QTouchEvent::touchBeginPropagatesWhenIgnored()
+{
+ // QWidget
+ {
+ tst_QTouchEventWidget window, child, grandchild;
+ child.setParent(&window);
+ grandchild.setParent(&child);
+
+ // all widgets accept touch events, grandchild ignores, so child sees the event, but not window
+ window.setAttribute(Qt::WA_AcceptTouchEvents);
+ child.setAttribute(Qt::WA_AcceptTouchEvents);
+ grandchild.setAttribute(Qt::WA_AcceptTouchEvents);
+ grandchild.acceptTouchBegin = false;
+
+ QList<QTouchEvent::TouchPoint> touchPoints;
+ touchPoints.append(QTouchEvent::TouchPoint(0));
+ QTouchEvent touchEvent(QEvent::TouchBegin,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointPressed,
+ touchPoints);
+ bool res = QApplication::sendEvent(&grandchild, &touchEvent);
+ QVERIFY(res);
+ QVERIFY(touchEvent.isAccepted());
+ QVERIFY(grandchild.seenTouchBegin);
+ QVERIFY(child.seenTouchBegin);
+ QVERIFY(!window.seenTouchBegin);
+
+ // disable touch on grandchild. even though it doesn't accept it, child should still get the
+ // TouchBegin
+ grandchild.reset();
+ child.reset();
+ window.reset();
+ grandchild.setAttribute(Qt::WA_AcceptTouchEvents, false);
+
+ touchEvent.ignore();
+ res = QApplication::sendEvent(&grandchild, &touchEvent);
+ QVERIFY(res);
+ QVERIFY(touchEvent.isAccepted());
+ QVERIFY(!grandchild.seenTouchBegin);
+ QVERIFY(child.seenTouchBegin);
+ QVERIFY(!window.seenTouchBegin);
+ }
+
+ // QGraphicsView
+ {
+ QGraphicsScene scene;
+ tst_QTouchEventGraphicsItem root, child, grandchild;
+ QGraphicsView view(&scene);
+ scene.addItem(&root);
+ root.setPos(100, 100);
+ child.setParentItem(&root);
+ grandchild.setParentItem(&child);
+ view.resize(200, 200);
+ view.fitInView(scene.sceneRect());
+
+ // all items accept touch events, grandchild ignores, so child sees the event, but not root
+ root.setAcceptTouchEvents(true);
+ child.setAcceptTouchEvents(true);
+ grandchild.setAcceptTouchEvents(true);
+ grandchild.acceptTouchBegin = false;
+
+ // compose an event to the scene that is over the grandchild
+ QTouchEvent::TouchPoint touchPoint(0);
+ touchPoint.setState(Qt::TouchPointPressed);
+ touchPoint.setPos(view.mapFromScene(grandchild.mapToScene(grandchild.boundingRect().center())));
+ touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
+ touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
+ QTouchEvent touchEvent(QEvent::TouchBegin,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointPressed,
+ (QList<QTouchEvent::TouchPoint>() << touchPoint));
+ bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
+ QVERIFY(res);
+ QVERIFY(touchEvent.isAccepted());
+ QVERIFY(grandchild.seenTouchBegin);
+ QVERIFY(child.seenTouchBegin);
+ QVERIFY(!root.seenTouchBegin);
+ }
+
+ // QGraphicsView
+ {
+ QGraphicsScene scene;
+ tst_QTouchEventGraphicsItem root, child, grandchild;
+ QGraphicsView view(&scene);
+ scene.addItem(&root);
+ root.setPos(100, 100);
+ child.setParentItem(&root);
+ grandchild.setParentItem(&child);
+ view.resize(200, 200);
+ view.fitInView(scene.sceneRect());
+
+ // leave touch disabled on grandchild. even though it doesn't accept it, child should
+ // still get the TouchBegin
+ root.setAcceptTouchEvents(true);
+ child.setAcceptTouchEvents(true);
+
+ // compose an event to the scene that is over the grandchild
+ QTouchEvent::TouchPoint touchPoint(0);
+ touchPoint.setState(Qt::TouchPointPressed);
+ touchPoint.setPos(view.mapFromScene(grandchild.mapToScene(grandchild.boundingRect().center())));
+ touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
+ touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
+ QTouchEvent touchEvent(QEvent::TouchBegin,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointPressed,
+ (QList<QTouchEvent::TouchPoint>() << touchPoint));
+ bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
+ QVERIFY(res);
+ QVERIFY(touchEvent.isAccepted());
+ QVERIFY(!grandchild.seenTouchBegin);
+ QVERIFY(child.seenTouchBegin);
+ QVERIFY(!root.seenTouchBegin);
+ }
+}
+
+void tst_QTouchEvent::touchUpdateAndEndNeverPropagate()
+{
+ // QWidget
+ {
+ tst_QTouchEventWidget window, child;
+ child.setParent(&window);
+
+ window.setAttribute(Qt::WA_AcceptTouchEvents);
+ child.setAttribute(Qt::WA_AcceptTouchEvents);
+ child.acceptTouchUpdate = false;
+ child.acceptTouchEnd = false;
+
+ QList<QTouchEvent::TouchPoint> touchPoints;
+ touchPoints.append(QTouchEvent::TouchPoint(0));
+ QTouchEvent touchBeginEvent(QEvent::TouchBegin,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointPressed,
+ touchPoints);
+ bool res = QApplication::sendEvent(&child, &touchBeginEvent);
+ QVERIFY(res);
+ QVERIFY(touchBeginEvent.isAccepted());
+ QVERIFY(child.seenTouchBegin);
+ QVERIFY(!window.seenTouchBegin);
+
+ // send the touch update to the child, but ignore it, it doesn't propagate
+ QTouchEvent touchUpdateEvent(QEvent::TouchUpdate,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointMoved,
+ touchPoints);
+ res = QApplication::sendEvent(&child, &touchUpdateEvent);
+ QVERIFY(res);
+ QVERIFY(!touchUpdateEvent.isAccepted());
+ QVERIFY(child.seenTouchUpdate);
+ QVERIFY(!window.seenTouchUpdate);
+
+ // send the touch end, same thing should happen as with touch update
+ QTouchEvent touchEndEvent(QEvent::TouchEnd,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointReleased,
+ touchPoints);
+ res = QApplication::sendEvent(&child, &touchEndEvent);
+ QVERIFY(res);
+ QVERIFY(!touchEndEvent.isAccepted());
+ QVERIFY(child.seenTouchEnd);
+ QVERIFY(!window.seenTouchEnd);
+ }
+
+ // QGraphicsView
+ {
+ QGraphicsScene scene;
+ tst_QTouchEventGraphicsItem root, child, grandchild;
+ QGraphicsView view(&scene);
+ scene.addItem(&root);
+ root.setPos(100, 100);
+ child.setParentItem(&root);
+ grandchild.setParentItem(&child);
+ view.resize(200, 200);
+ view.fitInView(scene.sceneRect());
+
+ root.setAcceptTouchEvents(true);
+ child.setAcceptTouchEvents(true);
+ child.acceptTouchUpdate = false;
+ child.acceptTouchEnd = false;
+
+ // compose an event to the scene that is over the child
+ QTouchEvent::TouchPoint touchPoint(0);
+ touchPoint.setState(Qt::TouchPointPressed);
+ touchPoint.setPos(view.mapFromScene(grandchild.mapToScene(grandchild.boundingRect().center())));
+ touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
+ touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
+ QTouchEvent touchBeginEvent(QEvent::TouchBegin,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointPressed,
+ (QList<QTouchEvent::TouchPoint>() << touchPoint));
+ bool res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
+ QVERIFY(res);
+ QVERIFY(touchBeginEvent.isAccepted());
+ QVERIFY(child.seenTouchBegin);
+ QVERIFY(!root.seenTouchBegin);
+
+ // send the touch update to the child, but ignore it, it doesn't propagate
+ touchPoint.setState(Qt::TouchPointMoved);
+ QTouchEvent touchUpdateEvent(QEvent::TouchUpdate,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointMoved,
+ (QList<QTouchEvent::TouchPoint>() << touchPoint));
+ res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
+ QVERIFY(res);
+ // the scene accepts the event, since it found an item to send the event to
+ QVERIFY(!touchUpdateEvent.isAccepted());
+ QVERIFY(child.seenTouchUpdate);
+ QVERIFY(!root.seenTouchUpdate);
+
+ // send the touch end, same thing should happen as with touch update
+ touchPoint.setState(Qt::TouchPointReleased);
+ QTouchEvent touchEndEvent(QEvent::TouchEnd,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointReleased,
+ (QList<QTouchEvent::TouchPoint>() << touchPoint));
+ res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
+ QVERIFY(res);
+ // the scene accepts the event, since it found an item to send the event to
+ QVERIFY(!touchEndEvent.isAccepted());
+ QVERIFY(child.seenTouchEnd);
+ QVERIFY(!root.seenTouchEnd);
+ }
+}
+
+QPointF normalized(const QPointF &pos, const QRectF &rect)
+{
+ return QPointF(pos.x() / rect.width(), pos.y() / rect.height());
+}
+
+void tst_QTouchEvent::basicRawEventTranslation()
+{
+ tst_QTouchEventWidget touchWidget;
+ touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
+ touchWidget.setGeometry(100, 100, 400, 300);
+
+ QPointF pos = touchWidget.rect().center();
+ QPointF screenPos = touchWidget.mapToGlobal(pos.toPoint());
+ QPointF delta(10, 10);
+ QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
+
+ QTouchEvent::TouchPoint rawTouchPoint;
+ rawTouchPoint.setId(0);
+
+ // this should be translated to a TouchBegin
+ rawTouchPoint.setState(Qt::TouchPointPressed);
+ rawTouchPoint.setScreenPos(screenPos);
+ rawTouchPoint.setNormalizedPos(normalized(rawTouchPoint.pos(), screenGeometry));
+ qt_translateRawTouchEvent(&touchWidget,
+ QTouchEvent::TouchScreen,
+ QList<QTouchEvent::TouchPoint>() << rawTouchPoint);
+ QVERIFY(touchWidget.seenTouchBegin);
+ QVERIFY(!touchWidget.seenTouchUpdate);
+ QVERIFY(!touchWidget.seenTouchEnd);
+ QCOMPARE(touchWidget.touchBeginPoints.count(), 1);
+ QTouchEvent::TouchPoint touchBeginPoint = touchWidget.touchBeginPoints.first();
+ QCOMPARE(touchBeginPoint.id(), rawTouchPoint.id());
+ QCOMPARE(touchBeginPoint.state(), rawTouchPoint.state());
+ QCOMPARE(touchBeginPoint.pos(), pos);
+ QCOMPARE(touchBeginPoint.startPos(), pos);
+ QCOMPARE(touchBeginPoint.lastPos(), pos);
+ QCOMPARE(touchBeginPoint.scenePos(), rawTouchPoint.screenPos());
+ QCOMPARE(touchBeginPoint.startScenePos(), rawTouchPoint.screenPos());
+ QCOMPARE(touchBeginPoint.lastScenePos(), rawTouchPoint.screenPos());
+ QCOMPARE(touchBeginPoint.screenPos(), rawTouchPoint.screenPos());
+ QCOMPARE(touchBeginPoint.startScreenPos(), rawTouchPoint.screenPos());
+ QCOMPARE(touchBeginPoint.lastScreenPos(), rawTouchPoint.screenPos());
+ QCOMPARE(touchBeginPoint.normalizedPos(), rawTouchPoint.normalizedPos());
+ QCOMPARE(touchBeginPoint.startNormalizedPos(), touchBeginPoint.normalizedPos());
+ QCOMPARE(touchBeginPoint.lastNormalizedPos(), touchBeginPoint.normalizedPos());
+ QCOMPARE(touchBeginPoint.rect(), QRectF(pos, QSizeF(0, 0)));
+ QCOMPARE(touchBeginPoint.screenRect(), QRectF(rawTouchPoint.screenPos(), QSizeF(0, 0)));
+ QCOMPARE(touchBeginPoint.sceneRect(), touchBeginPoint.screenRect());
+ QCOMPARE(touchBeginPoint.pressure(), qreal(1.));
+
+ // moving the point should translate to TouchUpdate
+ rawTouchPoint.setState(Qt::TouchPointMoved);
+ rawTouchPoint.setScreenPos(screenPos + delta);
+ rawTouchPoint.setNormalizedPos(normalized(rawTouchPoint.pos(), screenGeometry));
+ qt_translateRawTouchEvent(&touchWidget,
+ QTouchEvent::TouchScreen,
+ QList<QTouchEvent::TouchPoint>() << rawTouchPoint);
+ QVERIFY(touchWidget.seenTouchBegin);
+ QVERIFY(touchWidget.seenTouchUpdate);
+ QVERIFY(!touchWidget.seenTouchEnd);
+ QCOMPARE(touchWidget.touchUpdatePoints.count(), 1);
+ QTouchEvent::TouchPoint touchUpdatePoint = touchWidget.touchUpdatePoints.first();
+ QCOMPARE(touchUpdatePoint.id(), rawTouchPoint.id());
+ QCOMPARE(touchUpdatePoint.state(), rawTouchPoint.state());
+ QCOMPARE(touchUpdatePoint.pos(), pos + delta);
+ QCOMPARE(touchUpdatePoint.startPos(), pos);
+ QCOMPARE(touchUpdatePoint.lastPos(), pos);
+ QCOMPARE(touchUpdatePoint.scenePos(), rawTouchPoint.screenPos());
+ QCOMPARE(touchUpdatePoint.startScenePos(), screenPos);
+ QCOMPARE(touchUpdatePoint.lastScenePos(), screenPos);
+ QCOMPARE(touchUpdatePoint.screenPos(), rawTouchPoint.screenPos());
+ QCOMPARE(touchUpdatePoint.startScreenPos(), screenPos);
+ QCOMPARE(touchUpdatePoint.lastScreenPos(), screenPos);
+ QCOMPARE(touchUpdatePoint.normalizedPos(), rawTouchPoint.normalizedPos());
+ QCOMPARE(touchUpdatePoint.startNormalizedPos(), touchBeginPoint.normalizedPos());
+ QCOMPARE(touchUpdatePoint.lastNormalizedPos(), touchBeginPoint.normalizedPos());
+ QCOMPARE(touchUpdatePoint.rect(), QRectF(pos + delta, QSizeF(0, 0)));
+ QCOMPARE(touchUpdatePoint.screenRect(), QRectF(rawTouchPoint.screenPos(), QSizeF(0, 0)));
+ QCOMPARE(touchUpdatePoint.sceneRect(), touchUpdatePoint.screenRect());
+ QCOMPARE(touchUpdatePoint.pressure(), qreal(1.));
+
+ // releasing the point translates to TouchEnd
+ rawTouchPoint.setState(Qt::TouchPointReleased);
+ rawTouchPoint.setScreenPos(screenPos + delta + delta);
+ rawTouchPoint.setNormalizedPos(normalized(rawTouchPoint.pos(), screenGeometry));
+ qt_translateRawTouchEvent(&touchWidget,
+ QTouchEvent::TouchScreen,
+ QList<QTouchEvent::TouchPoint>() << rawTouchPoint);
+ QVERIFY(touchWidget.seenTouchBegin);
+ QVERIFY(touchWidget.seenTouchUpdate);
+ QVERIFY(touchWidget.seenTouchEnd);
+ QCOMPARE(touchWidget.touchEndPoints.count(), 1);
+ QTouchEvent::TouchPoint touchEndPoint = touchWidget.touchEndPoints.first();
+ QCOMPARE(touchEndPoint.id(), rawTouchPoint.id());
+ QCOMPARE(touchEndPoint.state(), rawTouchPoint.state());
+ QCOMPARE(touchEndPoint.pos(), pos + delta + delta);
+ QCOMPARE(touchEndPoint.startPos(), pos);
+ QCOMPARE(touchEndPoint.lastPos(), pos + delta);
+ QCOMPARE(touchEndPoint.scenePos(), rawTouchPoint.screenPos());
+ QCOMPARE(touchEndPoint.startScenePos(), screenPos);
+ QCOMPARE(touchEndPoint.lastScenePos(), screenPos + delta);
+ QCOMPARE(touchEndPoint.screenPos(), rawTouchPoint.screenPos());
+ QCOMPARE(touchEndPoint.startScreenPos(), screenPos);
+ QCOMPARE(touchEndPoint.lastScreenPos(), screenPos + delta);
+ QCOMPARE(touchEndPoint.normalizedPos(), rawTouchPoint.normalizedPos());
+ QCOMPARE(touchEndPoint.startNormalizedPos(), touchBeginPoint.normalizedPos());
+ QCOMPARE(touchEndPoint.lastNormalizedPos(), touchUpdatePoint.normalizedPos());
+ QCOMPARE(touchEndPoint.rect(), QRectF(pos + delta + delta, QSizeF(0, 0)));
+ QCOMPARE(touchEndPoint.screenRect(), QRectF(rawTouchPoint.screenPos(), QSizeF(0, 0)));
+ QCOMPARE(touchEndPoint.sceneRect(), touchEndPoint.screenRect());
+ QCOMPARE(touchEndPoint.pressure(), qreal(0.));
+}
+
+void tst_QTouchEvent::multiPointRawEventTranslationOnTouchScreen()
+{
+ tst_QTouchEventWidget touchWidget;
+ touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
+ touchWidget.setGeometry(100, 100, 400, 300);
+
+ tst_QTouchEventWidget leftWidget;
+ leftWidget.setParent(&touchWidget);
+ leftWidget.setAttribute(Qt::WA_AcceptTouchEvents);
+ leftWidget.setGeometry(0, 100, 100, 100);
+ leftWidget.show();
+
+ tst_QTouchEventWidget rightWidget;
+ rightWidget.setParent(&touchWidget);
+ rightWidget.setAttribute(Qt::WA_AcceptTouchEvents);
+ rightWidget.setGeometry(300, 100, 100, 100);
+ rightWidget.show();
+
+ QPointF leftPos = leftWidget.rect().center();
+ QPointF rightPos = rightWidget.rect().center();
+ QPointF centerPos = touchWidget.rect().center();
+ QPointF leftScreenPos = leftWidget.mapToGlobal(leftPos.toPoint());
+ QPointF rightScreenPos = rightWidget.mapToGlobal(rightPos.toPoint());
+ QPointF centerScreenPos = touchWidget.mapToGlobal(centerPos.toPoint());
+ QPointF delta(10, 10);
+ QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
+
+ QList<QTouchEvent::TouchPoint> rawTouchPoints;
+ rawTouchPoints.append(QTouchEvent::TouchPoint(0));
+ rawTouchPoints.append(QTouchEvent::TouchPoint(1));
+
+ // generate TouchBegins on both leftWidget and rightWidget
+ rawTouchPoints[0].setState(Qt::TouchPointPressed);
+ rawTouchPoints[0].setScreenPos(leftScreenPos);
+ rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
+ rawTouchPoints[1].setState(Qt::TouchPointPressed);
+ rawTouchPoints[1].setScreenPos(rightScreenPos);
+ rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
+ qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
+ QVERIFY(!touchWidget.seenTouchBegin);
+ QVERIFY(!touchWidget.seenTouchUpdate);
+ QVERIFY(!touchWidget.seenTouchEnd);
+ QVERIFY(leftWidget.seenTouchBegin);
+ QVERIFY(!leftWidget.seenTouchUpdate);
+ QVERIFY(!leftWidget.seenTouchEnd);
+ QVERIFY(rightWidget.seenTouchBegin);
+ QVERIFY(!rightWidget.seenTouchUpdate);
+ QVERIFY(!rightWidget.seenTouchEnd);
+ QCOMPARE(leftWidget.touchBeginPoints.count(), 1);
+ QCOMPARE(rightWidget.touchBeginPoints.count(), 1);
+ {
+ QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchBeginPoints.first();
+ QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
+ QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
+ QCOMPARE(leftTouchPoint.pos(), leftPos);
+ QCOMPARE(leftTouchPoint.startPos(), leftPos);
+ QCOMPARE(leftTouchPoint.lastPos(), leftPos);
+ QCOMPARE(leftTouchPoint.scenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.screenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScreenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.rect(), QRectF(leftPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.sceneRect(), QRectF(leftScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.screenRect(), QRectF(leftScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.pressure(), qreal(1.));
+
+ QTouchEvent::TouchPoint rightTouchPoint = rightWidget.touchBeginPoints.first();
+ QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
+ QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
+ QCOMPARE(rightTouchPoint.pos(), rightPos);
+ QCOMPARE(rightTouchPoint.startPos(), rightPos);
+ QCOMPARE(rightTouchPoint.lastPos(), rightPos);
+ QCOMPARE(rightTouchPoint.scenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.screenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScreenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.rect(), QRectF(rightPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.sceneRect(), QRectF(rightScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.screenRect(), QRectF(rightScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.pressure(), qreal(1.));
+ }
+
+ // generate TouchUpdates on both leftWidget and rightWidget
+ rawTouchPoints[0].setState(Qt::TouchPointMoved);
+ rawTouchPoints[0].setScreenPos(centerScreenPos);
+ rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
+ rawTouchPoints[1].setState(Qt::TouchPointMoved);
+ rawTouchPoints[1].setScreenPos(centerScreenPos);
+ rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
+ qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
+ QVERIFY(!touchWidget.seenTouchBegin);
+ QVERIFY(!touchWidget.seenTouchUpdate);
+ QVERIFY(!touchWidget.seenTouchEnd);
+ QVERIFY(leftWidget.seenTouchBegin);
+ QVERIFY(leftWidget.seenTouchUpdate);
+ QVERIFY(!leftWidget.seenTouchEnd);
+ QVERIFY(rightWidget.seenTouchBegin);
+ QVERIFY(rightWidget.seenTouchUpdate);
+ QVERIFY(!rightWidget.seenTouchEnd);
+ QCOMPARE(leftWidget.touchUpdatePoints.count(), 1);
+ QCOMPARE(rightWidget.touchUpdatePoints.count(), 1);
+ {
+ QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchUpdatePoints.first();
+ QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
+ QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
+ QCOMPARE(leftTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
+ QCOMPARE(leftTouchPoint.startPos(), leftPos);
+ QCOMPARE(leftTouchPoint.lastPos(), leftPos);
+ QCOMPARE(leftTouchPoint.scenePos(), centerScreenPos);
+ QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.screenPos(), centerScreenPos);
+ QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScreenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.pressure(), qreal(1.));
+
+ QTouchEvent::TouchPoint rightTouchPoint = rightWidget.touchUpdatePoints.first();
+ QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
+ QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
+ QCOMPARE(rightTouchPoint.pos(), QPointF(rightWidget.mapFromParent(centerPos.toPoint())));
+ QCOMPARE(rightTouchPoint.startPos(), rightPos);
+ QCOMPARE(rightTouchPoint.lastPos(), rightPos);
+ QCOMPARE(rightTouchPoint.scenePos(), centerScreenPos);
+ QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.screenPos(), centerScreenPos);
+ QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScreenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.rect(), QRectF(rightWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.pressure(), qreal(1.));
+ }
+
+ // generate TouchEnds on both leftWidget and rightWidget
+ rawTouchPoints[0].setState(Qt::TouchPointReleased);
+ rawTouchPoints[0].setScreenPos(centerScreenPos);
+ rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
+ rawTouchPoints[1].setState(Qt::TouchPointReleased);
+ rawTouchPoints[1].setScreenPos(centerScreenPos);
+ rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
+ qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
+ QVERIFY(!touchWidget.seenTouchBegin);
+ QVERIFY(!touchWidget.seenTouchUpdate);
+ QVERIFY(!touchWidget.seenTouchEnd);
+ QVERIFY(leftWidget.seenTouchBegin);
+ QVERIFY(leftWidget.seenTouchUpdate);
+ QVERIFY(leftWidget.seenTouchEnd);
+ QVERIFY(rightWidget.seenTouchBegin);
+ QVERIFY(rightWidget.seenTouchUpdate);
+ QVERIFY(rightWidget.seenTouchEnd);
+ QCOMPARE(leftWidget.touchEndPoints.count(), 1);
+ QCOMPARE(rightWidget.touchEndPoints.count(), 1);
+ {
+ QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchEndPoints.first();
+ QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
+ QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
+ QCOMPARE(leftTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
+ QCOMPARE(leftTouchPoint.startPos(), leftPos);
+ QCOMPARE(leftTouchPoint.lastPos(), leftTouchPoint.pos());
+ QCOMPARE(leftTouchPoint.scenePos(), centerScreenPos);
+ QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScenePos(), leftTouchPoint.scenePos());
+ QCOMPARE(leftTouchPoint.screenPos(), centerScreenPos);
+ QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScreenPos(), leftTouchPoint.screenPos());
+ QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.pressure(), qreal(0.));
+
+ QTouchEvent::TouchPoint rightTouchPoint = rightWidget.touchEndPoints.first();
+ QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
+ QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
+ QCOMPARE(rightTouchPoint.pos(), QPointF(rightWidget.mapFromParent(centerPos.toPoint())));
+ QCOMPARE(rightTouchPoint.startPos(), rightPos);
+ QCOMPARE(rightTouchPoint.lastPos(), rightTouchPoint.pos());
+ QCOMPARE(rightTouchPoint.scenePos(), centerScreenPos);
+ QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScenePos(), rightTouchPoint.scenePos());
+ QCOMPARE(rightTouchPoint.screenPos(), centerScreenPos);
+ QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScreenPos(), rightTouchPoint.screenPos());
+ QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.rect(), QRectF(rightWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.pressure(), qreal(0.));
+ }
+}
+
+void tst_QTouchEvent::multiPointRawEventTranslationOnTouchPad()
+{
+ tst_QTouchEventWidget touchWidget;
+ touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
+ touchWidget.setGeometry(100, 100, 400, 300);
+
+ tst_QTouchEventWidget leftWidget;
+ leftWidget.setParent(&touchWidget);
+ leftWidget.setAttribute(Qt::WA_AcceptTouchEvents);
+ leftWidget.setGeometry(0, 100, 100, 100);
+ leftWidget.show();
+
+ tst_QTouchEventWidget rightWidget;
+ rightWidget.setParent(&touchWidget);
+ rightWidget.setAttribute(Qt::WA_AcceptTouchEvents);
+ rightWidget.setGeometry(300, 100, 100, 100);
+ rightWidget.show();
+
+ QPointF leftPos = leftWidget.rect().center();
+ QPointF rightPos = rightWidget.rect().center();
+ QPointF centerPos = touchWidget.rect().center();
+ QPointF leftScreenPos = leftWidget.mapToGlobal(leftPos.toPoint());
+ QPointF rightScreenPos = rightWidget.mapToGlobal(rightPos.toPoint());
+ QPointF centerScreenPos = touchWidget.mapToGlobal(centerPos.toPoint());
+ QPointF delta(10, 10);
+ QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
+
+ QList<QTouchEvent::TouchPoint> rawTouchPoints;
+ rawTouchPoints.append(QTouchEvent::TouchPoint(0));
+ rawTouchPoints.append(QTouchEvent::TouchPoint(1));
+
+ // generate TouchBegin on leftWidget only
+ rawTouchPoints[0].setState(Qt::TouchPointPressed);
+ rawTouchPoints[0].setScreenPos(leftScreenPos);
+ rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
+ rawTouchPoints[1].setState(Qt::TouchPointPressed);
+ rawTouchPoints[1].setScreenPos(rightScreenPos);
+ rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
+ qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchPad, rawTouchPoints);
+ QVERIFY(!touchWidget.seenTouchBegin);
+ QVERIFY(!touchWidget.seenTouchUpdate);
+ QVERIFY(!touchWidget.seenTouchEnd);
+ QVERIFY(leftWidget.seenTouchBegin);
+ QVERIFY(!leftWidget.seenTouchUpdate);
+ QVERIFY(!leftWidget.seenTouchEnd);
+ QVERIFY(!rightWidget.seenTouchBegin);
+ QVERIFY(!rightWidget.seenTouchUpdate);
+ QVERIFY(!rightWidget.seenTouchEnd);
+ QCOMPARE(leftWidget.touchBeginPoints.count(), 2);
+ QCOMPARE(rightWidget.touchBeginPoints.count(), 0);
+ {
+ QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchBeginPoints.at(0);
+ QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
+ QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
+ QCOMPARE(leftTouchPoint.pos(), leftPos);
+ QCOMPARE(leftTouchPoint.startPos(), leftPos);
+ QCOMPARE(leftTouchPoint.lastPos(), leftPos);
+ QCOMPARE(leftTouchPoint.scenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.screenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScreenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.rect(), QRectF(leftPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.sceneRect(), QRectF(leftScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.screenRect(), QRectF(leftScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.pressure(), qreal(1.));
+
+ QTouchEvent::TouchPoint rightTouchPoint = leftWidget.touchBeginPoints.at(1);
+ QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
+ QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
+ QCOMPARE(rightTouchPoint.pos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
+ QCOMPARE(rightTouchPoint.startPos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
+ QCOMPARE(rightTouchPoint.lastPos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
+ QCOMPARE(rightTouchPoint.scenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.screenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScreenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.rect(), QRectF(leftWidget.mapFromGlobal(rightScreenPos.toPoint()), QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.sceneRect(), QRectF(rightScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.screenRect(), QRectF(rightScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.pressure(), qreal(1.));
+ }
+
+ // generate TouchUpdate on leftWidget
+ rawTouchPoints[0].setState(Qt::TouchPointMoved);
+ rawTouchPoints[0].setScreenPos(centerScreenPos);
+ rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
+ rawTouchPoints[1].setState(Qt::TouchPointMoved);
+ rawTouchPoints[1].setScreenPos(centerScreenPos);
+ rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
+ qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchPad, rawTouchPoints);
+ QVERIFY(!touchWidget.seenTouchBegin);
+ QVERIFY(!touchWidget.seenTouchUpdate);
+ QVERIFY(!touchWidget.seenTouchEnd);
+ QVERIFY(leftWidget.seenTouchBegin);
+ QVERIFY(leftWidget.seenTouchUpdate);
+ QVERIFY(!leftWidget.seenTouchEnd);
+ QVERIFY(!rightWidget.seenTouchBegin);
+ QVERIFY(!rightWidget.seenTouchUpdate);
+ QVERIFY(!rightWidget.seenTouchEnd);
+ QCOMPARE(leftWidget.touchUpdatePoints.count(), 2);
+ QCOMPARE(rightWidget.touchUpdatePoints.count(), 0);
+ {
+ QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchUpdatePoints.at(0);
+ QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
+ QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
+ QCOMPARE(leftTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
+ QCOMPARE(leftTouchPoint.startPos(), leftPos);
+ QCOMPARE(leftTouchPoint.lastPos(), leftPos);
+ QCOMPARE(leftTouchPoint.scenePos(), centerScreenPos);
+ QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.screenPos(), centerScreenPos);
+ QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScreenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.pressure(), qreal(1.));
+
+ QTouchEvent::TouchPoint rightTouchPoint = leftWidget.touchUpdatePoints.at(1);
+ QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
+ QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
+ QCOMPARE(rightTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
+ QCOMPARE(rightTouchPoint.startPos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
+ QCOMPARE(rightTouchPoint.lastPos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
+ QCOMPARE(rightTouchPoint.scenePos(), centerScreenPos);
+ QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.screenPos(), centerScreenPos);
+ QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScreenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.pressure(), qreal(1.));
+ }
+
+ // generate TouchEnd on leftWidget
+ rawTouchPoints[0].setState(Qt::TouchPointReleased);
+ rawTouchPoints[0].setScreenPos(centerScreenPos);
+ rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
+ rawTouchPoints[1].setState(Qt::TouchPointReleased);
+ rawTouchPoints[1].setScreenPos(centerScreenPos);
+ rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
+ qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchPad, rawTouchPoints);
+ QVERIFY(!touchWidget.seenTouchBegin);
+ QVERIFY(!touchWidget.seenTouchUpdate);
+ QVERIFY(!touchWidget.seenTouchEnd);
+ QVERIFY(leftWidget.seenTouchBegin);
+ QVERIFY(leftWidget.seenTouchUpdate);
+ QVERIFY(leftWidget.seenTouchEnd);
+ QVERIFY(!rightWidget.seenTouchBegin);
+ QVERIFY(!rightWidget.seenTouchUpdate);
+ QVERIFY(!rightWidget.seenTouchEnd);
+ QCOMPARE(leftWidget.touchEndPoints.count(), 2);
+ QCOMPARE(rightWidget.touchEndPoints.count(), 0);
+ {
+ QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchEndPoints.at(0);
+ QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
+ QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
+ QCOMPARE(leftTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
+ QCOMPARE(leftTouchPoint.startPos(), leftPos);
+ QCOMPARE(leftTouchPoint.lastPos(), leftTouchPoint.pos());
+ QCOMPARE(leftTouchPoint.scenePos(), centerScreenPos);
+ QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScenePos(), leftTouchPoint.scenePos());
+ QCOMPARE(leftTouchPoint.screenPos(), centerScreenPos);
+ QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
+ QCOMPARE(leftTouchPoint.lastScreenPos(), leftTouchPoint.screenPos());
+ QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
+ QCOMPARE(leftTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(leftTouchPoint.pressure(), qreal(0.));
+
+ QTouchEvent::TouchPoint rightTouchPoint = leftWidget.touchEndPoints.at(1);
+ QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
+ QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
+ QCOMPARE(rightTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
+ QCOMPARE(rightTouchPoint.startPos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
+ QCOMPARE(rightTouchPoint.lastPos(), rightTouchPoint.pos());
+ QCOMPARE(rightTouchPoint.scenePos(), centerScreenPos);
+ QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScenePos(), rightTouchPoint.scenePos());
+ QCOMPARE(rightTouchPoint.screenPos(), centerScreenPos);
+ QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
+ QCOMPARE(rightTouchPoint.lastScreenPos(), rightTouchPoint.screenPos());
+ QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
+ QCOMPARE(rightTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
+ QCOMPARE(rightTouchPoint.pressure(), qreal(0.));
+ }
+}
+
+void tst_QTouchEvent::deleteInEventHandler()
+{
+ // QWidget
+ {
+ QWidget window;
+ tst_QTouchEventWidget *child1, *child2, *child3;
+ child1 = new tst_QTouchEventWidget;
+ child2 = new tst_QTouchEventWidget;
+ child3 = new tst_QTouchEventWidget;
+ child1->setParent(&window);
+ child2->setParent(&window);
+ child3->setParent(&window);
+ child1->setAttribute(Qt::WA_AcceptTouchEvents);
+ child2->setAttribute(Qt::WA_AcceptTouchEvents);
+ child3->setAttribute(Qt::WA_AcceptTouchEvents);
+ child1->deleteInTouchBegin = true;
+ child2->deleteInTouchUpdate = true;
+ child3->deleteInTouchEnd = true;
+
+ QList<QTouchEvent::TouchPoint> touchPoints;
+ touchPoints.append(QTouchEvent::TouchPoint(0));
+ QTouchEvent touchBeginEvent(QEvent::TouchBegin,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointPressed,
+ touchPoints);
+ QTouchEvent touchUpdateEvent(QEvent::TouchUpdate,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointStationary,
+ touchPoints);
+ QTouchEvent touchEndEvent(QEvent::TouchEnd,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointReleased,
+ touchPoints);
+ QWeakPointer<QWidget> p;
+ bool res;
+
+ touchBeginEvent.ignore();
+ p = child1;
+ res = QApplication::sendEvent(child1, &touchBeginEvent);
+ // event is handled, but widget should be deleted
+ QVERIFY(res && touchBeginEvent.isAccepted() && p.isNull());
+
+ touchBeginEvent.ignore();
+ p = child2;
+ res = QApplication::sendEvent(child2, &touchBeginEvent);
+ QVERIFY(res && touchBeginEvent.isAccepted() && !p.isNull());
+ touchUpdateEvent.ignore();
+ res = QApplication::sendEvent(child2, &touchUpdateEvent);
+ QVERIFY(res && touchUpdateEvent.isAccepted() && p.isNull());
+
+ touchBeginEvent.ignore();
+ p = child3;
+ res = QApplication::sendEvent(child3, &touchBeginEvent);
+ QVERIFY(res && touchBeginEvent.isAccepted() && !p.isNull());
+ touchUpdateEvent.ignore();
+ res = QApplication::sendEvent(child3, &touchUpdateEvent);
+ QVERIFY(res && touchUpdateEvent.isAccepted() && !p.isNull());
+ touchEndEvent.ignore();
+ res = QApplication::sendEvent(child3, &touchEndEvent);
+ QVERIFY(res && touchEndEvent.isAccepted() && p.isNull());
+ }
+
+ // QGraphicsView
+ {
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ tst_QTouchEventGraphicsItem *root, *child1, *child2, *child3;
+ root = new tst_QTouchEventGraphicsItem;
+ child1 = new tst_QTouchEventGraphicsItem;
+ child2 = new tst_QTouchEventGraphicsItem;
+ child3 = new tst_QTouchEventGraphicsItem;
+ child1->setParentItem(root);
+ child2->setParentItem(root);
+ child3->setParentItem(root);
+ child1->setZValue(1.);
+ child2->setZValue(0.);
+ child3->setZValue(-1.);
+ child1->setAcceptTouchEvents(true);
+ child2->setAcceptTouchEvents(true);
+ child3->setAcceptTouchEvents(true);
+ child1->deleteInTouchBegin = true;
+ child2->deleteInTouchUpdate = true;
+ child3->deleteInTouchEnd = true;
+
+ scene.addItem(root);
+ view.resize(200, 200);
+ view.fitInView(scene.sceneRect());
+
+ QTouchEvent::TouchPoint touchPoint(0);
+ touchPoint.setState(Qt::TouchPointPressed);
+ touchPoint.setPos(view.mapFromScene(child1->mapToScene(child1->boundingRect().center())));
+ touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
+ touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
+ QList<QTouchEvent::TouchPoint> touchPoints;
+ touchPoints.append(touchPoint);
+ QTouchEvent touchBeginEvent(QEvent::TouchBegin,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointPressed,
+ touchPoints);
+ touchPoints[0].setState(Qt::TouchPointMoved);
+ QTouchEvent touchUpdateEvent(QEvent::TouchUpdate,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointMoved,
+ touchPoints);
+ touchPoints[0].setState(Qt::TouchPointReleased);
+ QTouchEvent touchEndEvent(QEvent::TouchEnd,
+ QTouchEvent::TouchScreen,
+ Qt::NoModifier,
+ Qt::TouchPointReleased,
+ touchPoints);
+ bool res;
+
+ child1->weakpointer = &child1;
+ touchBeginEvent.ignore();
+ res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
+ QVERIFY(res && touchBeginEvent.isAccepted() && !child1);
+ touchUpdateEvent.ignore();
+ res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
+ QVERIFY(res && touchUpdateEvent.isAccepted() && !child1);
+ touchEndEvent.ignore();
+ res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
+ QVERIFY(res && touchUpdateEvent.isAccepted() && !child1);
+
+ child2->weakpointer = &child2;
+ touchBeginEvent.ignore();
+ res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
+ QVERIFY(res && touchBeginEvent.isAccepted() && child2);
+ touchUpdateEvent.ignore();
+ res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
+ QVERIFY(res && !touchUpdateEvent.isAccepted() && !child2);
+ touchEndEvent.ignore();
+ res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
+ QVERIFY(res && !touchUpdateEvent.isAccepted() && !child2);
+
+ child3->weakpointer = &child3;
+ res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
+ QVERIFY(res && touchBeginEvent.isAccepted() && child3);
+ res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
+ QVERIFY(res && !touchUpdateEvent.isAccepted() && child3);
+ res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
+ QVERIFY(res && !touchEndEvent.isAccepted() && !child3);
+
+ delete root;
+ }
+}
+
+void tst_QTouchEvent::deleteInRawEventTranslation()
+{
+ tst_QTouchEventWidget touchWidget;
+ touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
+ touchWidget.setGeometry(100, 100, 300, 300);
+
+ tst_QTouchEventWidget *leftWidget = new tst_QTouchEventWidget;
+ leftWidget->setParent(&touchWidget);
+ leftWidget->setAttribute(Qt::WA_AcceptTouchEvents);
+ leftWidget->setGeometry(0, 100, 100, 100);
+ leftWidget->deleteInTouchBegin = true;
+ leftWidget->show();
+
+ tst_QTouchEventWidget *centerWidget = new tst_QTouchEventWidget;
+ centerWidget->setParent(&touchWidget);
+ centerWidget->setAttribute(Qt::WA_AcceptTouchEvents);
+ centerWidget->setGeometry(100, 100, 100, 100);
+ centerWidget->deleteInTouchUpdate = true;
+ centerWidget->show();
+
+ tst_QTouchEventWidget *rightWidget = new tst_QTouchEventWidget;
+ rightWidget->setParent(&touchWidget);
+ rightWidget->setAttribute(Qt::WA_AcceptTouchEvents);
+ rightWidget->setGeometry(200, 100, 100, 100);
+ rightWidget->deleteInTouchEnd = true;
+ rightWidget->show();
+
+ QPointF leftPos = leftWidget->rect().center();
+ QPointF centerPos = centerWidget->rect().center();
+ QPointF rightPos = rightWidget->rect().center();
+ QPointF leftScreenPos = leftWidget->mapToGlobal(leftPos.toPoint());
+ QPointF centerScreenPos = centerWidget->mapToGlobal(centerPos.toPoint());
+ QPointF rightScreenPos = rightWidget->mapToGlobal(rightPos.toPoint());
+ QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
+
+ QWeakPointer<QWidget> pl = leftWidget, pc = centerWidget, pr = rightWidget;
+
+ QList<QTouchEvent::TouchPoint> rawTouchPoints;
+ rawTouchPoints.append(QTouchEvent::TouchPoint(0));
+ rawTouchPoints.append(QTouchEvent::TouchPoint(1));
+ rawTouchPoints.append(QTouchEvent::TouchPoint(2));
+ rawTouchPoints[0].setState(Qt::TouchPointPressed);
+ rawTouchPoints[0].setScreenPos(leftScreenPos);
+ rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
+ rawTouchPoints[1].setState(Qt::TouchPointPressed);
+ rawTouchPoints[1].setScreenPos(centerScreenPos);
+ rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
+ rawTouchPoints[2].setState(Qt::TouchPointPressed);
+ rawTouchPoints[2].setScreenPos(rightScreenPos);
+ rawTouchPoints[2].setNormalizedPos(normalized(rawTouchPoints[2].pos(), screenGeometry));
+
+ // generate begin events on all widgets, the left widget should die
+ qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
+ QVERIFY(pl.isNull() && !pc.isNull() && !pr.isNull());
+
+ // generate update events on all widget, the center widget should die
+ rawTouchPoints[0].setState(Qt::TouchPointMoved);
+ rawTouchPoints[1].setState(Qt::TouchPointMoved);
+ rawTouchPoints[2].setState(Qt::TouchPointMoved);
+ qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
+
+ // generate end events on all widget, the right widget should die
+ rawTouchPoints[0].setState(Qt::TouchPointReleased);
+ rawTouchPoints[1].setState(Qt::TouchPointReleased);
+ rawTouchPoints[2].setState(Qt::TouchPointReleased);
+ qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
+}
+
+void tst_QTouchEvent::crashInQGraphicsSceneAfterNotHandlingTouchBegin()
+{
+ QGraphicsRectItem *rect = new QGraphicsRectItem(0, 0, 100, 100);
+ rect->setAcceptTouchEvents(true);
+
+ QGraphicsRectItem *mainRect = new QGraphicsRectItem(0, 0, 100, 100, rect);
+ mainRect->setBrush(Qt::lightGray);
+
+ QGraphicsRectItem *button = new QGraphicsRectItem(-20, -20, 40, 40, mainRect);
+ button->setPos(50, 50);
+ button->setBrush(Qt::darkGreen);
+
+ QGraphicsView view;
+ QGraphicsScene scene;
+ scene.addItem(rect);
+ scene.setSceneRect(0,0,100,100);
+ view.setScene(&scene);
+
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QPoint centerPos = view.mapFromScene(rect->boundingRect().center());
+ // Touch the button
+ QTest::touchEvent(view.viewport()).press(0, centerPos, static_cast<QWindow *>(0));
+ QTest::touchEvent(view.viewport()).release(0, centerPos, static_cast<QWindow *>(0));
+ // Touch outside of the button
+ QTest::touchEvent(view.viewport()).press(0, view.mapFromScene(QPoint(10, 10)), static_cast<QWindow *>(0));
+ QTest::touchEvent(view.viewport()).release(0, view.mapFromScene(QPoint(10, 10)), static_cast<QWindow *>(0));
+}
+
+void tst_QTouchEvent::touchBeginWithGraphicsWidget()
+{
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ tst_QTouchEventGraphicsItem *root;
+ root = new tst_QTouchEventGraphicsItem;
+ root->setAcceptTouchEvents(true);
+ scene.addItem(root);
+
+ QGraphicsWidget *glassWidget = new QGraphicsWidget;
+ glassWidget->setMinimumSize(100, 100);
+ scene.addItem(glassWidget);
+
+ view.resize(200, 200);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ view.fitInView(scene.sceneRect());
+
+ QTest::touchEvent(static_cast<QWindow *>(0))
+ .press(0, view.mapFromScene(root->mapToScene(3,3)), view.viewport());
+ QTest::touchEvent(static_cast<QWindow *>(0))
+ .stationary(0)
+ .press(1, view.mapFromScene(root->mapToScene(6,6)), view.viewport());
+ QTest::touchEvent(static_cast<QWindow *>(0))
+ .release(0, view.mapFromScene(root->mapToScene(3,3)), view.viewport())
+ .release(1, view.mapFromScene(root->mapToScene(6,6)), view.viewport());
+
+ QCOMPARE(root->touchBeginCounter, 1);
+ QCOMPARE(root->touchUpdateCounter, 1);
+ QCOMPARE(root->touchEndCounter, 1);
+ QCOMPARE(root->touchUpdatePoints.size(), 2);
+
+ root->reset();
+ glassWidget->setWindowFlags(Qt::Window); // make the glassWidget a panel
+
+ QTest::touchEvent(static_cast<QWindow *>(0))
+ .press(0, view.mapFromScene(root->mapToScene(3,3)), view.viewport());
+ QTest::touchEvent(static_cast<QWindow *>(0))
+ .stationary(0)
+ .press(1, view.mapFromScene(root->mapToScene(6,6)), view.viewport());
+ QTest::touchEvent(static_cast<QWindow *>(0))
+ .release(0, view.mapFromScene(root->mapToScene(3,3)), view.viewport())
+ .release(1, view.mapFromScene(root->mapToScene(6,6)), view.viewport());
+
+ QCOMPARE(root->touchBeginCounter, 0);
+ QCOMPARE(root->touchUpdateCounter, 0);
+ QCOMPARE(root->touchEndCounter, 0);
+
+
+ delete root;
+ delete glassWidget;
+}
+
+QTEST_MAIN(tst_QTouchEvent)
+
+#include "tst_qtouchevent.moc"
diff --git a/tests/auto/gui/math3d/math3d.pro b/tests/auto/gui/math3d/math3d.pro
new file mode 100644
index 0000000000..d977afa6e0
--- /dev/null
+++ b/tests/auto/gui/math3d/math3d.pro
@@ -0,0 +1,6 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qquaternion \
+ qvectornd \
+ qmatrixnxn \
+
diff --git a/tests/auto/qmatrixnxn/qmatrixnxn.pro b/tests/auto/gui/math3d/qmatrixnxn/qmatrixnxn.pro
index cf6e4a128e..cf6e4a128e 100644
--- a/tests/auto/qmatrixnxn/qmatrixnxn.pro
+++ b/tests/auto/gui/math3d/qmatrixnxn/qmatrixnxn.pro
diff --git a/tests/auto/qmatrixnxn/tst_qmatrixnxn.cpp b/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp
index 98a559af85..98a559af85 100644
--- a/tests/auto/qmatrixnxn/tst_qmatrixnxn.cpp
+++ b/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp
diff --git a/tests/auto/qquaternion/qquaternion.pro b/tests/auto/gui/math3d/qquaternion/qquaternion.pro
index 6f740cfd42..6f740cfd42 100644
--- a/tests/auto/qquaternion/qquaternion.pro
+++ b/tests/auto/gui/math3d/qquaternion/qquaternion.pro
diff --git a/tests/auto/qquaternion/tst_qquaternion.cpp b/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp
index 7bc50efeeb..7bc50efeeb 100644
--- a/tests/auto/qquaternion/tst_qquaternion.cpp
+++ b/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp
diff --git a/tests/auto/qvectornd/qvectornd.pro b/tests/auto/gui/math3d/qvectornd/qvectornd.pro
index 6346199444..6346199444 100644
--- a/tests/auto/qvectornd/qvectornd.pro
+++ b/tests/auto/gui/math3d/qvectornd/qvectornd.pro
diff --git a/tests/auto/qvectornd/tst_qvectornd.cpp b/tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp
index 37c1949dc2..37c1949dc2 100644
--- a/tests/auto/qvectornd/tst_qvectornd.cpp
+++ b/tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp
diff --git a/tests/auto/gui/painting/painting.pro b/tests/auto/gui/painting/painting.pro
new file mode 100644
index 0000000000..62230eeac7
--- /dev/null
+++ b/tests/auto/gui/painting/painting.pro
@@ -0,0 +1,21 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qpainterpath \
+ qpainterpathstroker \
+ qcolor \
+ qbrush \
+ qregion \
+ qpainter \
+ qpathclipper \
+ qprinterinfo \
+ qpen \
+ qpaintengine \
+ qtransform \
+ qwmatrix \
+ qprinter \
+ qpolygon \
+
+!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ qpathclipper \
+
+
diff --git a/tests/auto/qbrush/.gitignore b/tests/auto/gui/painting/qbrush/.gitignore
index e9321a18bd..e9321a18bd 100644
--- a/tests/auto/qbrush/.gitignore
+++ b/tests/auto/gui/painting/qbrush/.gitignore
diff --git a/tests/auto/gui/painting/qbrush/qbrush.pro b/tests/auto/gui/painting/qbrush/qbrush.pro
new file mode 100644
index 0000000000..1c3efd46be
--- /dev/null
+++ b/tests/auto/gui/painting/qbrush/qbrush.pro
@@ -0,0 +1,3 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qbrush.cpp
diff --git a/tests/auto/qbrush/tst_qbrush.cpp b/tests/auto/gui/painting/qbrush/tst_qbrush.cpp
index 9ee679e0f7..9ee679e0f7 100644
--- a/tests/auto/qbrush/tst_qbrush.cpp
+++ b/tests/auto/gui/painting/qbrush/tst_qbrush.cpp
diff --git a/tests/auto/qcolor/.gitignore b/tests/auto/gui/painting/qcolor/.gitignore
index 92f91eb54e..92f91eb54e 100644
--- a/tests/auto/qcolor/.gitignore
+++ b/tests/auto/gui/painting/qcolor/.gitignore
diff --git a/tests/auto/qcolor/qcolor.pro b/tests/auto/gui/painting/qcolor/qcolor.pro
index b9d437ef7c..b9d437ef7c 100644
--- a/tests/auto/qcolor/qcolor.pro
+++ b/tests/auto/gui/painting/qcolor/qcolor.pro
diff --git a/tests/auto/qcolor/tst_qcolor.cpp b/tests/auto/gui/painting/qcolor/tst_qcolor.cpp
index 2b6896ae5d..2b6896ae5d 100644
--- a/tests/auto/qcolor/tst_qcolor.cpp
+++ b/tests/auto/gui/painting/qcolor/tst_qcolor.cpp
diff --git a/tests/auto/qpaintengine/.gitignore b/tests/auto/gui/painting/qpaintengine/.gitignore
index e55942ea9f..e55942ea9f 100644
--- a/tests/auto/qpaintengine/.gitignore
+++ b/tests/auto/gui/painting/qpaintengine/.gitignore
diff --git a/tests/auto/qpaintengine/qpaintengine.pro b/tests/auto/gui/painting/qpaintengine/qpaintengine.pro
index e37c1668ac..e37c1668ac 100644
--- a/tests/auto/qpaintengine/qpaintengine.pro
+++ b/tests/auto/gui/painting/qpaintengine/qpaintengine.pro
diff --git a/tests/auto/qpaintengine/tst_qpaintengine.cpp b/tests/auto/gui/painting/qpaintengine/tst_qpaintengine.cpp
index ba9cc62a3d..ba9cc62a3d 100644
--- a/tests/auto/qpaintengine/tst_qpaintengine.cpp
+++ b/tests/auto/gui/painting/qpaintengine/tst_qpaintengine.cpp
diff --git a/tests/auto/qpainter/.gitignore b/tests/auto/gui/painting/qpainter/.gitignore
index 33e0dbe945..33e0dbe945 100644
--- a/tests/auto/qpainter/.gitignore
+++ b/tests/auto/gui/painting/qpainter/.gitignore
diff --git a/tests/auto/qpainter/drawEllipse/10x10SizeAt0x0.png b/tests/auto/gui/painting/qpainter/drawEllipse/10x10SizeAt0x0.png
index f2ab9a776d..f2ab9a776d 100644
--- a/tests/auto/qpainter/drawEllipse/10x10SizeAt0x0.png
+++ b/tests/auto/gui/painting/qpainter/drawEllipse/10x10SizeAt0x0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawEllipse/10x10SizeAt100x100.png b/tests/auto/gui/painting/qpainter/drawEllipse/10x10SizeAt100x100.png
index b1c755b5b0..b1c755b5b0 100644
--- a/tests/auto/qpainter/drawEllipse/10x10SizeAt100x100.png
+++ b/tests/auto/gui/painting/qpainter/drawEllipse/10x10SizeAt100x100.png
Binary files differ
diff --git a/tests/auto/qpainter/drawEllipse/10x10SizeAt200x200.png b/tests/auto/gui/painting/qpainter/drawEllipse/10x10SizeAt200x200.png
index 0e30498da5..0e30498da5 100644
--- a/tests/auto/qpainter/drawEllipse/10x10SizeAt200x200.png
+++ b/tests/auto/gui/painting/qpainter/drawEllipse/10x10SizeAt200x200.png
Binary files differ
diff --git a/tests/auto/qpainter/drawEllipse/13x100SizeAt0x0.png b/tests/auto/gui/painting/qpainter/drawEllipse/13x100SizeAt0x0.png
index f00796a3ad..f00796a3ad 100644
--- a/tests/auto/qpainter/drawEllipse/13x100SizeAt0x0.png
+++ b/tests/auto/gui/painting/qpainter/drawEllipse/13x100SizeAt0x0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawEllipse/13x100SizeAt100x100.png b/tests/auto/gui/painting/qpainter/drawEllipse/13x100SizeAt100x100.png
index a9a1a8a536..a9a1a8a536 100644
--- a/tests/auto/qpainter/drawEllipse/13x100SizeAt100x100.png
+++ b/tests/auto/gui/painting/qpainter/drawEllipse/13x100SizeAt100x100.png
Binary files differ
diff --git a/tests/auto/qpainter/drawEllipse/13x100SizeAt200x200.png b/tests/auto/gui/painting/qpainter/drawEllipse/13x100SizeAt200x200.png
index 0e30498da5..0e30498da5 100644
--- a/tests/auto/qpainter/drawEllipse/13x100SizeAt200x200.png
+++ b/tests/auto/gui/painting/qpainter/drawEllipse/13x100SizeAt200x200.png
Binary files differ
diff --git a/tests/auto/qpainter/drawEllipse/200x200SizeAt0x0.png b/tests/auto/gui/painting/qpainter/drawEllipse/200x200SizeAt0x0.png
index 67db116b90..67db116b90 100644
--- a/tests/auto/qpainter/drawEllipse/200x200SizeAt0x0.png
+++ b/tests/auto/gui/painting/qpainter/drawEllipse/200x200SizeAt0x0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawEllipse/200x200SizeAt100x100.png b/tests/auto/gui/painting/qpainter/drawEllipse/200x200SizeAt100x100.png
index 7d32afa4a8..7d32afa4a8 100644
--- a/tests/auto/qpainter/drawEllipse/200x200SizeAt100x100.png
+++ b/tests/auto/gui/painting/qpainter/drawEllipse/200x200SizeAt100x100.png
Binary files differ
diff --git a/tests/auto/qpainter/drawEllipse/200x200SizeAt200x200.png b/tests/auto/gui/painting/qpainter/drawEllipse/200x200SizeAt200x200.png
index 0e30498da5..0e30498da5 100644
--- a/tests/auto/qpainter/drawEllipse/200x200SizeAt200x200.png
+++ b/tests/auto/gui/painting/qpainter/drawEllipse/200x200SizeAt200x200.png
Binary files differ
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/dst.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/dst.xbm
index e645a0b86b..e645a0b86b 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/dst.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/dst.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_AndNotROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_AndNotROP.xbm
index 303c799264..303c799264 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_AndNotROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_AndNotROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_AndROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_AndROP.xbm
index 31333de879..31333de879 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_AndROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_AndROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_ClearROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_ClearROP.xbm
index 9cc25ea147..9cc25ea147 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_ClearROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_ClearROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_CopyROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_CopyROP.xbm
index 869844dcee..869844dcee 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_CopyROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_CopyROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NandROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NandROP.xbm
index d058484fa8..d058484fa8 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NandROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NandROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NopROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NopROP.xbm
index 3a2bc23468..3a2bc23468 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NopROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NopROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NorROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NorROP.xbm
index c74be41bbd..c74be41bbd 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NorROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NorROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotAndROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotAndROP.xbm
index 0cf8c3a82c..0cf8c3a82c 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotAndROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotAndROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotCopyROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotCopyROP.xbm
index 65474e16c5..65474e16c5 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotCopyROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotCopyROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotOrROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotOrROP.xbm
index 144d8995b6..144d8995b6 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotOrROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotOrROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotROP.xbm
index ccb3d36fb4..ccb3d36fb4 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotXorROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotXorROP.xbm
index 4be8f51a80..4be8f51a80 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_NotXorROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_NotXorROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_OrNotROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_OrNotROP.xbm
index d53fbe00e1..d53fbe00e1 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_OrNotROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_OrNotROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_OrROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_OrROP.xbm
index 06b51fcc68..06b51fcc68 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_OrROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_OrROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_SetROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_SetROP.xbm
index ab42472bb0..ab42472bb0 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_SetROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_SetROP.xbm
diff --git a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_XorROP.xbm b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_XorROP.xbm
index 5ac892dd0b..5ac892dd0b 100644
--- a/tests/auto/qpainter/drawLine_rop_bitmap/res/res_XorROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawLine_rop_bitmap/res/res_XorROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop/dst1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/dst1.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/dst1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/dst1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/dst2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/dst2.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/dst2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/dst2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/dst3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/dst3.png
index 8a3d28f3ed..8a3d28f3ed 100644
--- a/tests/auto/qpainter/drawPixmap_rop/dst3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/dst3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP0.png
index fe017ac1ab..fe017ac1ab 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP1.png
index 82d938c023..82d938c023 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP2.png
index 2b67b928e4..2b67b928e4 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP3.png
index c95b5a10ba..c95b5a10ba 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP4.png
index bbe2a24530..bbe2a24530 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP5.png
index 0158278b84..0158278b84 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP6.png
index aa1f403075..aa1f403075 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP7.png
index 8605b64d93..8605b64d93 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndNotROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndNotROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP0.png
index ebf8244eee..ebf8244eee 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP1.png
index 88568bc330..88568bc330 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP2.png
index 0ed6de2865..0ed6de2865 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP3.png
index c2ff341e6b..c2ff341e6b 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP4.png
index e08c9acbe2..e08c9acbe2 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP5.png
index e9d7a57333..e9d7a57333 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP6.png
index 01438a195c..01438a195c 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP7.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_AndROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_AndROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP0.png
index cff8926587..cff8926587 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP1.png
index cff8926587..cff8926587 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP2.png
index cff8926587..cff8926587 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP3.png
index cff8926587..cff8926587 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP4.png
index cff8926587..cff8926587 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP5.png
index cff8926587..cff8926587 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP6.png
index cff8926587..cff8926587 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP7.png
index cff8926587..cff8926587 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_ClearROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_ClearROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP0.png
index 587623d3e8..587623d3e8 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP1.png
index 10e7ae59d5..10e7ae59d5 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP2.png
index 5c14136eb4..5c14136eb4 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP3.png
index 207f52564b..207f52564b 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP4.png
index 6981cee080..6981cee080 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP5.png
index 8b8de9892a..8b8de9892a 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP6.png
index 9825c0539f..9825c0539f 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP7.png
index 00968ffd06..00968ffd06 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_CopyROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_CopyROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP0.png
index 8d26638c03..8d26638c03 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP1.png
index f5b33589ba..f5b33589ba 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP2.png
index adc4ee3701..adc4ee3701 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP3.png
index dccc94c43b..dccc94c43b 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP4.png
index 4d207e7968..4d207e7968 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP5.png
index aa93d4d4a4..aa93d4d4a4 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP6.png
index ad320f950b..ad320f950b 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP7.png
index 8605b64d93..8605b64d93 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NandROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NandROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP0.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP1.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP2.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP3.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP4.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP5.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP6.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP7.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NopROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NopROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP0.png
index 3e33bb1078..3e33bb1078 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP1.png
index ce2b6f4e15..ce2b6f4e15 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP2.png
index 9eddc9840b..9eddc9840b 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP3.png
index 4ea9669dd3..4ea9669dd3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP4.png
index c64e0a5630..c64e0a5630 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP5.png
index 1fe3def383..1fe3def383 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP6.png
index 9c294b04d9..9c294b04d9 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP7.png
index cff8926587..cff8926587 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NorROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NorROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP0.png
index 01c694cdcc..01c694cdcc 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP1.png
index 4b11aa9c41..4b11aa9c41 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP2.png
index accbe42112..accbe42112 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP3.png
index 3c58d4fac7..3c58d4fac7 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP4.png
index 3b0a41c396..3b0a41c396 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP5.png
index 045ef33012..045ef33012 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP6.png
index 3a83725938..3a83725938 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP7.png
index cff8926587..cff8926587 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotAndROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotAndROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP0.png
index 7c51fc16fa..7c51fc16fa 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP1.png
index 8f519e8c52..8f519e8c52 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP2.png
index a0f9f60653..a0f9f60653 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP3.png
index 95931a4317..95931a4317 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP4.png
index f825d523b0..f825d523b0 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP5.png
index 245a27ea2f..245a27ea2f 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP6.png
index b32020675b..b32020675b 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP7.png
index cff8926587..cff8926587 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotCopyROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotCopyROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP0.png
index 3622f3a2b1..3622f3a2b1 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP1.png
index e31793e4a3..e31793e4a3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP2.png
index 8e8237548b..8e8237548b 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP3.png
index f4b98914b4..f4b98914b4 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP4.png
index b14fdba341..b14fdba341 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP5.png
index 129d7f3dc6..129d7f3dc6 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP6.png
index d894c5cb68..d894c5cb68 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP7.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotOrROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotOrROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP0.png
index 8605b64d93..8605b64d93 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP1.png
index 8605b64d93..8605b64d93 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP2.png
index 8605b64d93..8605b64d93 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP3.png
index 8605b64d93..8605b64d93 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP4.png
index 8605b64d93..8605b64d93 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP5.png
index 8605b64d93..8605b64d93 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP6.png
index 8605b64d93..8605b64d93 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP7.png
index 8605b64d93..8605b64d93 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP0.png
index b1e61504cd..b1e61504cd 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP1.png
index 8cf29cde81..8cf29cde81 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP2.png
index 99fedf8c04..99fedf8c04 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP3.png
index bc220f546e..bc220f546e 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP4.png
index f48e8b9f4d..f48e8b9f4d 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP5.png
index c5e3c0fc63..c5e3c0fc63 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP6.png
index 13bb69f91b..13bb69f91b 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP7.png
index 4a7ca7f9b3..4a7ca7f9b3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_NotXorROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_NotXorROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP0.png
index 85b964301d..85b964301d 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP1.png
index d92bf16044..d92bf16044 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP2.png
index bb81c5abe8..bb81c5abe8 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP3.png
index 9378f166cd..9378f166cd 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP4.png
index 2ea026eb6c..2ea026eb6c 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP5.png
index 8366d37eda..8366d37eda 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP6.png
index 39c36d1b52..39c36d1b52 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP7.png
index 00968ffd06..00968ffd06 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrNotROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrNotROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP0.png
index beb2bc35b8..beb2bc35b8 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP1.png
index 6ed17a72ed..6ed17a72ed 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP2.png
index 9e0b63c220..9e0b63c220 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP3.png
index 6471b4aaa4..6471b4aaa4 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP4.png
index c158ea0d01..c158ea0d01 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP5.png
index eb3deacc86..eb3deacc86 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP6.png
index 51948b0ac9..51948b0ac9 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP7.png
index 00968ffd06..00968ffd06 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_OrROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_OrROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP0.png
index 00968ffd06..00968ffd06 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP1.png
index 00968ffd06..00968ffd06 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP2.png
index 00968ffd06..00968ffd06 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP3.png
index 00968ffd06..00968ffd06 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP4.png
index 00968ffd06..00968ffd06 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP5.png
index 00968ffd06..00968ffd06 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP6.png
index 00968ffd06..00968ffd06 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP7.png
index 00968ffd06..00968ffd06 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_SetROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_SetROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP0.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP0.png
index c2b009cac3..c2b009cac3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP0.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP0.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP1.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP1.png
index 42b0b3c308..42b0b3c308 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP1.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP1.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP2.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP2.png
index bc43614ab3..bc43614ab3 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP2.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP2.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP3.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP3.png
index 7486d4b3f4..7486d4b3f4 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP3.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP3.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP4.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP4.png
index 8098634be4..8098634be4 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP4.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP4.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP5.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP5.png
index 8c5b9feb7c..8c5b9feb7c 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP5.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP5.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP6.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP6.png
index c7e51a1410..c7e51a1410 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP6.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP6.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP7.png b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP7.png
index 8605b64d93..8605b64d93 100644
--- a/tests/auto/qpainter/drawPixmap_rop/res/res_XorROP7.png
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/res/res_XorROP7.png
Binary files differ
diff --git a/tests/auto/qpainter/drawPixmap_rop/src1.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop/src1.xbm
index f088d28c8c..f088d28c8c 100644
--- a/tests/auto/qpainter/drawPixmap_rop/src1.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/src1.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop/src2-mask.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop/src2-mask.xbm
index bd73f9433c..bd73f9433c 100644
--- a/tests/auto/qpainter/drawPixmap_rop/src2-mask.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/src2-mask.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop/src2.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop/src2.xbm
index 40126a9d17..40126a9d17 100644
--- a/tests/auto/qpainter/drawPixmap_rop/src2.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/src2.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop/src3.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop/src3.xbm
index 2f2d5472a4..2f2d5472a4 100644
--- a/tests/auto/qpainter/drawPixmap_rop/src3.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop/src3.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/dst.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/dst.xbm
index 45543c8ebf..45543c8ebf 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/dst.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/dst.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_AndNotROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_AndNotROP.xbm
index 303c799264..303c799264 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_AndNotROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_AndNotROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_AndROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_AndROP.xbm
index 31333de879..31333de879 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_AndROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_AndROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_ClearROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_ClearROP.xbm
index 9cc25ea147..9cc25ea147 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_ClearROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_ClearROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_CopyROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_CopyROP.xbm
index 869844dcee..869844dcee 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_CopyROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_CopyROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NandROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NandROP.xbm
index d058484fa8..d058484fa8 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NandROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NandROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NopROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NopROP.xbm
index 3a2bc23468..3a2bc23468 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NopROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NopROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NorROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NorROP.xbm
index c74be41bbd..c74be41bbd 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NorROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NorROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotAndROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotAndROP.xbm
index 0cf8c3a82c..0cf8c3a82c 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotAndROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotAndROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotCopyROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotCopyROP.xbm
index 65474e16c5..65474e16c5 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotCopyROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotCopyROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotOrROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotOrROP.xbm
index 144d8995b6..144d8995b6 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotOrROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotOrROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotROP.xbm
index ccb3d36fb4..ccb3d36fb4 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotXorROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotXorROP.xbm
index 4be8f51a80..4be8f51a80 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_NotXorROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_NotXorROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_OrNotROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_OrNotROP.xbm
index d53fbe00e1..d53fbe00e1 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_OrNotROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_OrNotROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_OrROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_OrROP.xbm
index 06b51fcc68..06b51fcc68 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_OrROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_OrROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_SetROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_SetROP.xbm
index ab42472bb0..ab42472bb0 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_SetROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_SetROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_XorROP.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_XorROP.xbm
index 5ac892dd0b..5ac892dd0b 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/res/res_XorROP.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/res/res_XorROP.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/src1-mask.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/src1-mask.xbm
index ac9031f1f1..ac9031f1f1 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/src1-mask.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/src1-mask.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/src1.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/src1.xbm
index d883569db2..d883569db2 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/src1.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/src1.xbm
diff --git a/tests/auto/qpainter/drawPixmap_rop_bitmap/src2.xbm b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/src2.xbm
index fb203df28a..fb203df28a 100644
--- a/tests/auto/qpainter/drawPixmap_rop_bitmap/src2.xbm
+++ b/tests/auto/gui/painting/qpainter/drawPixmap_rop_bitmap/src2.xbm
diff --git a/tests/auto/gui/painting/qpainter/qpainter.pro b/tests/auto/gui/painting/qpainter/qpainter.pro
new file mode 100644
index 0000000000..00307d3e58
--- /dev/null
+++ b/tests/auto/gui/painting/qpainter/qpainter.pro
@@ -0,0 +1,20 @@
+load(qttest_p4)
+
+QT += widgets widgets-private printsupport
+
+SOURCES += tst_qpainter.cpp
+wince*|symbian: {
+ addFiles.files = drawEllipse drawLine_rop_bitmap drawPixmap_rop drawPixmap_rop_bitmap task217400.png
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+}
+
+wince* {
+ DEFINES += SRCDIR=\\\".\\\"
+} else:!symbian {
+ DEFINES += SRCDIR=\\\"$$PWD\\\"
+}
+
+
+mac*:CONFIG+=insignificant_test
+contains(QT_CONFIG,xcb):qpa:CONFIG+=insignificant_test # QTBUG-20756 crashes on qpa, xcb
diff --git a/tests/auto/qpainter/task217400.png b/tests/auto/gui/painting/qpainter/task217400.png
index c12a602ba6..c12a602ba6 100644
--- a/tests/auto/qpainter/task217400.png
+++ b/tests/auto/gui/painting/qpainter/task217400.png
Binary files differ
diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
new file mode 100644
index 0000000000..c2c9002023
--- /dev/null
+++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
@@ -0,0 +1,4697 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include "../../../../shared/util.h"
+
+#include <qpainter.h>
+#include <qapplication.h>
+#include <qwidget.h>
+#include <qfontmetrics.h>
+#include <qbitmap.h>
+#include <qimage.h>
+#include <qthread.h>
+#include <limits.h>
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+#include <qprinter.h>
+#include <math.h>
+#endif
+#include <qpaintengine.h>
+#include <qdesktopwidget.h>
+#include <qpixmap.h>
+
+#include <qpainter.h>
+
+#include <qlabel.h>
+
+#include <qqueue.h>
+
+#include <qgraphicsview.h>
+#include <qgraphicsscene.h>
+#include <qgraphicsproxywidget.h>
+#include <qlayout.h>
+#include <qfontdatabase.h>
+
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR "."
+#endif
+
+Q_DECLARE_METATYPE(QGradientStops)
+Q_DECLARE_METATYPE(QLine)
+Q_DECLARE_METATYPE(QRect)
+Q_DECLARE_METATYPE(QSize)
+Q_DECLARE_METATYPE(QPoint)
+Q_DECLARE_METATYPE(QPainterPath)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QPainter : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QPainter();
+ virtual ~tst_QPainter();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void getSetCheck();
+ void qt_format_text_clip();
+ void qt_format_text_boundingRect();
+ void drawPixmap_comp_data();
+ void drawPixmap_comp();
+ void saveAndRestore_data();
+ void saveAndRestore();
+
+ void drawBorderPixmap();
+ void drawPixmapFragments();
+
+ void drawLine_data();
+ void drawLine();
+ void drawLine_clipped();
+ void drawLine_task121143();
+ void drawLine_task216948();
+
+ void drawLine_task190634();
+ void drawLine_task229459();
+ void drawLine_task234891();
+
+ void drawRect_data() { fillData(); }
+ void drawRect();
+ void drawRect2();
+
+ void fillRect();
+ void fillRect2();
+ void fillRect3();
+ void fillRect4();
+
+ void drawEllipse_data();
+ void drawEllipse();
+ void drawClippedEllipse_data();
+ void drawClippedEllipse();
+
+ void drawPath_data();
+ void drawPath();
+ void drawPath2();
+ void drawPath3();
+
+ void drawRoundRect_data() { fillData(); }
+ void drawRoundRect();
+
+ void qimageFormats_data();
+ void qimageFormats();
+ void textOnTransparentImage();
+
+ void initFrom();
+
+ void setWindow();
+
+ void combinedMatrix();
+ void renderHints();
+
+ void disableEnableClipping();
+ void setClipRect();
+ void setEqualClipRegionAndPath_data();
+ void setEqualClipRegionAndPath();
+
+ void clipRectSaveRestore();
+
+ void clippedFillPath_data();
+ void clippedFillPath();
+ void clippedLines_data();
+ void clippedLines();
+ void clippedPolygon_data();
+ void clippedPolygon();
+
+ void clippedText();
+
+ void clipBoundingRect();
+
+ void setOpacity_data();
+ void setOpacity();
+
+ void drawhelper_blend_untransformed_data();
+ void drawhelper_blend_untransformed();
+ void drawhelper_blend_tiled_untransformed_data();
+ void drawhelper_blend_tiled_untransformed();
+
+ void porterDuff_warning();
+
+ void drawhelper_blend_color();
+
+ void childWidgetViewport();
+
+ void fillRect_objectBoundingModeGradient();
+ void fillRect_stretchToDeviceMode();
+ void monoImages();
+
+ void linearGradientSymmetry_data();
+ void linearGradientSymmetry();
+ void gradientInterpolation();
+
+ void fpe_pixmapTransform();
+ void fpe_zeroLengthLines();
+ void fpe_divByZero();
+
+ void fpe_steepSlopes_data();
+ void fpe_steepSlopes();
+ void fpe_rasterizeLine_task232012();
+
+ void fpe_radialGradients();
+
+ void rasterizer_asserts();
+ void rasterizer_negativeCoords();
+
+ void blendOverFlow_data();
+ void blendOverFlow();
+
+ void largeImagePainting_data();
+ void largeImagePainting();
+
+ void imageScaling_task206785();
+
+ void outlineFillConsistency();
+
+ void drawImage_task217400_data();
+ void drawImage_task217400();
+ void drawImage_1x1();
+ void drawImage_task258776();
+ void drawRect_task215378();
+ void drawRect_task247505();
+
+ void drawText_subPixelPositionsInRaster_qtbug5053();
+
+ void drawImage_data();
+ void drawImage();
+
+ void clippedImage();
+
+ void stateResetBetweenQPainters();
+
+ void imageCoordinateLimit();
+ void imageBlending_data();
+ void imageBlending();
+ void imageBlending_clipped();
+
+ void paintOnNullPixmap();
+ void checkCompositionMode();
+
+ void drawPolygon();
+
+ void inactivePainter();
+
+ void extendedBlendModes();
+
+ void zeroOpacity();
+ void clippingBug();
+ void emptyClip();
+
+ void taskQT4444_dontOverflowDashOffset();
+
+ void painterBegin();
+ void setPenColorOnImage();
+ void setPenColorOnPixmap();
+
+ void QTBUG5939_attachPainterPrivate();
+
+ void drawPointScaled();
+
+ void QTBUG14614_gradientCacheRaceCondition();
+ void drawTextOpacity();
+
+ void QTBUG17053_zeroDashPattern();
+
+ void drawTextOutsideGuiThread();
+
+private:
+ void fillData();
+ void setPenColor(QPainter& p);
+ QColor baseColor( int k, int intensity=255 );
+ QImage getResImage( const QString &dir, const QString &addition, const QString &extension );
+ QBitmap getBitmap( const QString &dir, const QString &filename, bool mask );
+};
+
+// Testing get/set functions
+void tst_QPainter::getSetCheck()
+{
+ QImage img(QSize(10, 10), QImage::Format_ARGB32_Premultiplied);
+ QPainter obj1;
+ obj1.begin(&img);
+ // CompositionMode QPainter::compositionMode()
+ // void QPainter::setCompositionMode(CompositionMode)
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_SourceOver));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_SourceOver), obj1.compositionMode());
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_DestinationOver));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_DestinationOver), obj1.compositionMode());
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_Clear));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_Clear), obj1.compositionMode());
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_Source));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_Source), obj1.compositionMode());
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_Destination));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_Destination), obj1.compositionMode());
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_SourceIn));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_SourceIn), obj1.compositionMode());
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_DestinationIn));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_DestinationIn), obj1.compositionMode());
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_SourceOut));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_SourceOut), obj1.compositionMode());
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_DestinationOut));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_DestinationOut), obj1.compositionMode());
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_SourceAtop));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_SourceAtop), obj1.compositionMode());
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_DestinationAtop));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_DestinationAtop), obj1.compositionMode());
+ obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_Xor));
+ QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_Xor), obj1.compositionMode());
+
+ // const QPen & QPainter::pen()
+ // void QPainter::setPen(const QPen &)
+ QPen var3(Qt::red);
+ obj1.setPen(var3);
+ QCOMPARE(var3, obj1.pen());
+ obj1.setPen(QPen());
+ QCOMPARE(QPen(), obj1.pen());
+
+ // const QBrush & QPainter::brush()
+ // void QPainter::setBrush(const QBrush &)
+ QBrush var4(Qt::red);
+ obj1.setBrush(var4);
+ QCOMPARE(var4, obj1.brush());
+ obj1.setBrush(QBrush());
+ QCOMPARE(QBrush(), obj1.brush());
+
+ // const QBrush & QPainter::background()
+ // void QPainter::setBackground(const QBrush &)
+ QBrush var5(Qt::yellow);
+ obj1.setBackground(var5);
+ QCOMPARE(var5, obj1.background());
+ obj1.setBackground(QBrush());
+ QCOMPARE(QBrush(), obj1.background());
+
+ // bool QPainter::matrixEnabled()
+ // void QPainter::setMatrixEnabled(bool)
+ obj1.setMatrixEnabled(false);
+ QCOMPARE(false, obj1.matrixEnabled());
+ obj1.setMatrixEnabled(true);
+ QCOMPARE(true, obj1.matrixEnabled());
+
+ // bool QPainter::viewTransformEnabled()
+ // void QPainter::setViewTransformEnabled(bool)
+ obj1.setViewTransformEnabled(false);
+ QCOMPARE(false, obj1.viewTransformEnabled());
+ obj1.setViewTransformEnabled(true);
+ QCOMPARE(true, obj1.viewTransformEnabled());
+}
+
+Q_DECLARE_METATYPE(QPixmap)
+Q_DECLARE_METATYPE(QPolygon)
+Q_DECLARE_METATYPE(QBrush)
+Q_DECLARE_METATYPE(QPen)
+Q_DECLARE_METATYPE(QFont)
+Q_DECLARE_METATYPE(QColor)
+Q_DECLARE_METATYPE(QRegion)
+
+tst_QPainter::tst_QPainter()
+{
+ // QtTestCase sets this to false, but this turns off alpha pixmaps on Unix.
+ QApplication::setDesktopSettingsAware(TRUE);
+}
+
+tst_QPainter::~tst_QPainter()
+{
+}
+
+void tst_QPainter::init()
+{
+}
+
+void tst_QPainter::cleanup()
+{
+}
+
+/* tests the clipping operations in qt_format_text, making sure
+ the clip rectangle after the call is the same as before
+*/
+void tst_QPainter::qt_format_text_clip()
+{
+ QVERIFY(1);
+ QSKIP( "Needs fixing...", SkipAll);
+
+ QWidget *w = new QWidget( 0 );
+
+ int modes[] = { Qt::AlignVCenter|Qt::TextSingleLine,
+ Qt::AlignVCenter|Qt::TextSingleLine|Qt::TextDontClip,
+ Qt::AlignVCenter|Qt::TextWordWrap,
+ Qt::AlignVCenter|Qt::TextWordWrap|Qt::TextDontClip,
+ 0
+ };
+
+ int *m = modes;
+ while( *m ) {
+ {
+ QPainter p( w );
+ QRegion clipreg = p.clipRegion();
+ bool hasClipping = p.hasClipping();
+ qreal tx = p.matrix().dx();
+ qreal ty = p.matrix().dy();
+
+ p.drawText( 10, 10, 100, 100, *m,
+ "fooo" );
+
+ QVERIFY( clipreg == p.clipRegion() );
+ QVERIFY( hasClipping == p.hasClipping() );
+ QCOMPARE( tx, p.matrix().dx() );
+ QCOMPARE( ty, p.matrix().dy() );
+
+ p.setClipRect( QRect( 5, 5, 50, 50 ) );
+ clipreg = p.clipRegion();
+ hasClipping = p.hasClipping();
+
+ p.drawText( 10, 10, 100, 100, *m,
+ "fooo" );
+
+ QVERIFY( clipreg == p.clipRegion() );
+ QVERIFY( hasClipping == p.hasClipping() );
+ QCOMPARE( tx, p.matrix().dx() );
+ QCOMPARE( ty, p.matrix().dy() );
+ }
+ {
+ QPainter p( w );
+ p.setMatrix( QMatrix( 2, 1, 3, 4, 5, 6 ) );
+ QRegion clipreg = p.clipRegion();
+ bool hasClipping = p.hasClipping();
+ qreal tx = p.matrix().dx();
+ qreal ty = p.matrix().dy();
+
+ p.drawText( 10, 10, 100, 100, *m,
+ "fooo" );
+
+ QVERIFY( clipreg == p.clipRegion() );
+ QVERIFY( hasClipping == p.hasClipping() );
+ QCOMPARE( tx, p.matrix().dx() );
+ QCOMPARE( ty, p.matrix().dy() );
+
+ p.setClipRect( QRect( 5, 5, 50, 50 ) );
+ clipreg = p.clipRegion();
+ hasClipping = p.hasClipping();
+
+ p.drawText( 10, 10, 100, 100, *m,
+ "fooo" );
+
+ QVERIFY( clipreg == p.clipRegion() );
+ QVERIFY( hasClipping == p.hasClipping() );
+ QCOMPARE( tx, p.matrix().dx() );
+ QCOMPARE( ty, p.matrix().dy() );
+ }
+ {
+ QPainter p( w );
+ QRegion clipreg = p.clipRegion();
+ bool hasClipping = p.hasClipping();
+ qreal tx = p.matrix().dx();
+ qreal ty = p.matrix().dy();
+
+ p.drawText( 10, 10, 100, 100, *m,
+ "fooo" );
+
+ QVERIFY( clipreg == p.clipRegion() );
+ QVERIFY( hasClipping == p.hasClipping() );
+ QCOMPARE( tx, p.matrix().dx() );
+ QCOMPARE( ty, p.matrix().dy() );
+
+ p.setClipRect( QRect( 5, 5, 50, 50 ));
+ clipreg = p.clipRegion();
+ hasClipping = p.hasClipping();
+
+ p.drawText( 10, 10, 100, 100, *m,
+ "fooo" );
+
+ QVERIFY( clipreg == p.clipRegion() );
+ QVERIFY( hasClipping == p.hasClipping() );
+ QCOMPARE( tx, p.matrix().dx() );
+ QCOMPARE( ty, p.matrix().dy() );
+ }
+ {
+ QPainter p( w );
+ p.setMatrix( QMatrix( 2, 1, 3, 4, 5, 6 ) );
+ QRegion clipreg = p.clipRegion();
+ bool hasClipping = p.hasClipping();
+ qreal tx = p.matrix().dx();
+ qreal ty = p.matrix().dy();
+
+ p.drawText( 10, 10, 100, 100, *m,
+ "fooo" );
+
+ QVERIFY( clipreg == p.clipRegion() );
+ QVERIFY( hasClipping == p.hasClipping() );
+ QCOMPARE( tx, p.matrix().dx() );
+ QCOMPARE( ty, p.matrix().dy() );
+
+ p.setClipRect(QRect( 5, 5, 50, 50 ));
+ clipreg = p.clipRegion();
+ hasClipping = p.hasClipping();
+
+ p.drawText( 10, 10, 100, 100, *m,
+ "fooo" );
+
+ QVERIFY( clipreg == p.clipRegion() );
+ QVERIFY( hasClipping == p.hasClipping() );
+ QCOMPARE( tx, p.matrix().dx() );
+ QCOMPARE( ty, p.matrix().dy() );
+ }
+ ++m;
+ }
+ delete w;
+}
+
+/* tests the bounding rect calculations in qt_format_text, making sure
+ the bounding rect has a reasonable value.
+*/
+void tst_QPainter::qt_format_text_boundingRect()
+{
+ QVERIFY(1);
+ QSKIP( "Needs fixing...", SkipAll);
+
+ {
+ const char * strings[] = {
+ "a\n\nb",
+ "abc",
+ "a\n \nb",
+ "this is a longer string",
+ "\327\222\327\223\327\233\327\223\327\222\327\233\327\222\327\223\327\233",
+ "aa\327\222\327\233aa",
+ "\327\222\327\223\327\233\327\223\327\222\327\233\327\222\327\223\327\233",
+ "\327\222\327\233aa",
+ "linebreakatend\n",
+ "some text longer than 30 chars with a line break at the end\n",
+ "some text\nwith line breaks\nin the middle\nand at the end\n",
+ "foo\n\n\nfoo",
+ 0
+ };
+
+ int modes[] = { Qt::AlignVCenter|Qt::TextSingleLine,
+ Qt::AlignVCenter|Qt::TextSingleLine|Qt::TextDontClip,
+ Qt::AlignVCenter|Qt::TextWordWrap,
+ Qt::AlignVCenter|Qt::TextWordWrap|Qt::TextDontClip,
+ Qt::AlignLeft,
+ Qt::AlignCenter,
+ Qt::AlignRight,
+ 0
+ };
+
+ QFont f;
+ for(int i = 5; i < 15; ++i) {
+ f.setPointSize(i);
+ QFontMetrics fm(f);
+ const char **str = strings;
+ while( *str ) {
+ int *m = modes;
+ while( *m ) {
+ QRect br = fm.boundingRect( 0, 0, 2000, 100, *m, QString::fromUtf8( *str ) );
+ QVERIFY( br.width() < 800 );
+
+ QRect br2 = fm.boundingRect( br.x(), br.y(), br.width(), br.height(), *m, QString::fromUtf8( *str ) );
+ QCOMPARE( br, br2 );
+#if 0
+ {
+ QPrinter printer;
+ printer.setOutputToFile(TRUE);
+ printer.setOutputFileName("tmp.prn");
+ QPainter p(&printer);
+ QRect pbr = p.fontMetrics().boundingRect( 0, 0, 2000, 100, *m, QString::fromUtf8( *str ) );
+ QCOMPARE(pbr, br);
+ }
+#endif
+#if !defined(QT_NO_PRINTER) && !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ {
+ QPrinter printer(QPrinter::HighResolution);
+ if (printer.printerName().isEmpty()) {
+ QSKIP( "No printers installed, skipping bounding rect test",
+ SkipSingle );
+ break;
+ }
+
+ printer.setOutputFileName("tmp.prn");
+ QPainter p(&printer);
+ QRect pbr = p.fontMetrics().boundingRect( 0, 0, 12000, 600, *m, QString::fromUtf8( *str ) );
+ QVERIFY(pbr.width() > 2*br.width());
+ QVERIFY(pbr.height() > 2*br.height());
+ }
+#endif
+ ++m;
+ }
+ ++str;
+ }
+ }
+ }
+
+ {
+ const char * strings[] = {
+ "a",
+ "a\nb",
+ "a\n\nb",
+ "abc",
+// "a\n \nb",
+ "this is a longer string",
+// "\327\222\327\223\327\233\327\223\327\222\327\233\327\222\327\223\327\233",
+// "aa\327\222\327\233aa",
+// "\327\222\327\223\327\233\327\223\327\222\327\233\327\222\327\223\327\233",
+// "\327\222\327\233aa",
+// "linebreakatend\n",
+// "some text longer than 30 chars with a line break at the end\n",
+// "some text\nwith line breaks\nin the middle\nand at the end\n",
+ "foo\n\n\nfoo",
+ "a\n\n\n\n\nb",
+ "a\n\n\n\n\n\nb",
+// "\347\231\273\351\214\262\346\203\205\345\240\261\343\201\214\350\246\213\343\201\244\343\201\213\343\202\211\343\201\252\343\201\204\343\201\213\347\204\241\345\212\271\343\201\252\343\201\237\343\202\201\343\200\201\nPhotoshop Album \343\202\222\350\265\267\345\213\225\343\201\247\343\201\215\343\201\276\343\201\233\343\202\223\343\200\202\345\206\215\343\202\244\343\203\263\343\202\271\343\203\210\343\203\274\343\203\253\343\201\227\343\201\246\343\201\217\343\201\240\343\201\225\343\201\204\343\200\202"
+// "\347\231\273\351\214\262\346\203\205\345\240\261\343\201\214\350\246\213\343\201\244\343\201\213\343\202\211\343\201\252\343\201\204\343\201\213\347\204\241\345\212\271\343\201\252\343\201\237\343\202\201\343\200\201\n\343\202\222\350\265\267\345\213\225\343\201\247\343\201\215\343\201\276\343\201\233\343\202\223\343\200\202\345\206\215\343\202\244\343\203\263\343\202\271\343\203\210\343\203\274\343\203\253\343\201\227\343\201\246\343\201\217\343\201\240\343\201\225\343\201\204\343\200\202",
+ 0
+ };
+
+ int modes[] = { Qt::AlignVCenter,
+ Qt::AlignLeft,
+ Qt::AlignCenter,
+ Qt::AlignRight,
+ 0
+ };
+
+
+ QFont f;
+ for(int i = 5; i < 15; ++i) {
+ f.setPointSize(i);
+ QFontMetrics fm(f);
+ const char **str = strings;
+ while( *str ) {
+ int *m = modes;
+ while( *m ) {
+ QString s = QString::fromUtf8(*str);
+ QRect br = fm.boundingRect(0, 0, 1000, 1000, *m, s );
+ int lines =
+ s.count("\n");
+ int expectedHeight = fm.height()+lines*fm.lineSpacing();
+ QCOMPARE(br.height(), expectedHeight);
+ ++m;
+ }
+ ++str;
+ }
+ QRect br = fm.boundingRect(0, 0, 100, 0, Qt::TextWordWrap,
+ "A paragraph with gggggggggggggggggggggggggggggggggggg in the middle.");
+ QVERIFY(br.height() >= fm.height()+2*fm.lineSpacing());
+ }
+ }
+}
+
+
+static const char* const maskSource_data[] = {
+"16 13 6 1",
+". c None",
+"d c #000000",
+"# c #999999",
+"c c #cccccc",
+"b c #ffff00",
+"a c #ffffff",
+"...#####........",
+"..#aaaaa#.......",
+".#abcbcba######.",
+".#acbcbcaaaaaa#d",
+".#abcbcbcbcbcb#d",
+"#############b#d",
+"#aaaaaaaaaa##c#d",
+"#abcbcbcbcbbd##d",
+".#abcbcbcbcbcd#d",
+".#acbcbcbcbcbd#d",
+"..#acbcbcbcbb#dd",
+"..#############d",
+"...ddddddddddddd"};
+
+static const char* const maskResult_data[] = {
+"16 13 6 1",
+". c #ff0000",
+"d c #000000",
+"# c #999999",
+"c c #cccccc",
+"b c #ffff00",
+"a c #ffffff",
+"...#####........",
+"..#aaaaa#.......",
+".#abcbcba######.",
+".#acbcbcaaaaaa#d",
+".#abcbcbcbcbcb#d",
+"#############b#d",
+"#aaaaaaaaaa##c#d",
+"#abcbcbcbcbbd##d",
+".#abcbcbcbcbcd#d",
+".#acbcbcbcbcbd#d",
+"..#acbcbcbcbb#dd",
+"..#############d",
+"...ddddddddddddd"};
+
+
+void tst_QPainter::drawPixmap_comp_data()
+{
+ if (qApp->desktop()->depth() < 24) {
+ QSKIP("Test only works on 32 bit displays", SkipAll);
+ return;
+ }
+
+ QTest::addColumn<uint>("dest");
+ QTest::addColumn<uint>("source");
+
+ QTest::newRow("0% on 0%, 1") << 0x00000000u<< 0x00000000u;
+ QTest::newRow("0% on 0%, 2") << 0x00007fffu << 0x00ff007fu;
+
+ QTest::newRow("50% on a=0%") << 0x00000000u << 0x7fff0000u;
+ QTest::newRow("50% on a=50%") << 0x7f000000u << 0x7fff0000u;
+ QTest::newRow("50% on deadbeef") << 0xdeafbeefu << 0x7fff0000u;
+ QTest::newRow("deadbeef on a=0%") << 0x00000000u << 0xdeadbeefu;
+ QTest::newRow("deadbeef on a=50%") << 0x7f000000u << 0xdeadbeefu;
+ QTest::newRow("50% blue on 50% red") << 0x7fff0000u << 0x7f0000ffu;
+ QTest::newRow("50% blue on 50% green") << 0x7f00ff00u << 0x7f0000ffu;
+ QTest::newRow("50% red on 50% green") << 0x7f00ff00u << 0x7fff0000u;
+ QTest::newRow("0% on 50%") << 0x7fff00ffu << 0x00ffffffu;
+ QTest::newRow("100% on deadbeef") << 0xdeafbeefu << 0xffabcdefu;
+ QTest::newRow("100% on a=0%") << 0x00000000u << 0xffabcdefu;
+}
+
+QRgb qt_compose_alpha(QRgb source, QRgb dest)
+{
+ int r1 = qRed(dest), g1 = qGreen(dest), b1 = qBlue(dest), a1 = qAlpha(dest);
+ int r2 = qRed(source), g2 = qGreen(source), b2 = qBlue(source), a2 = qAlpha(source);
+
+ int alpha = qMin(a2 + ((255 - a2) * a1 + 127) / 255, 255);
+ if (alpha == 0)
+ return qRgba(0, 0, 0, 0);
+
+ return qRgba(
+ qMin((r2 * a2 + (255 - a2) * r1 * a1 / 255) / alpha, 255),
+ qMin((g2 * a2 + (255 - a2) * g1 * a1 / 255) / alpha, 255),
+ qMin((b2 * a2 + (255 - a2) * b1 * a1 / 255) / alpha, 255),
+ alpha);
+}
+
+/* Tests that drawing masked pixmaps works
+*/
+void tst_QPainter::drawPixmap_comp()
+{
+#ifdef Q_WS_MAC
+ QSKIP("Mac has other ideas about alpha composition", SkipAll);
+#endif
+
+ QFETCH(uint, dest);
+ QFETCH(uint, source);
+
+ QRgb expected = qt_compose_alpha(source, dest);
+
+ QColor c1(qRed(dest), qGreen(dest), qBlue(dest), qAlpha(dest));
+ QColor c2(qRed(source), qGreen(source), qBlue(source), qAlpha(source));
+
+ QPixmap destPm(10, 10), srcPm(10, 10);
+ destPm.fill(c1);
+ srcPm.fill(c2);
+
+#if defined(Q_WS_X11)
+ if (!destPm.x11PictureHandle())
+ QSKIP("Requires XRender support", SkipAll);
+#endif
+
+ QPainter p(&destPm);
+ p.drawPixmap(0, 0, srcPm);
+ p.end();
+
+ QImage result = destPm.toImage().convertToFormat(QImage::Format_ARGB32);
+ bool different = false;
+ for (int y=0; y<result.height(); ++y)
+ for (int x=0; x<result.width(); ++x) {
+ bool diff;
+ if (qAlpha(expected) == 0) {
+ diff = qAlpha(result.pixel(x, y)) != 0;
+ } else {
+ // Compensate for possible roundoff / platform fudge
+ int off = 1;
+ QRgb pix = result.pixel(x, y);
+ diff = (qAbs(qRed(pix) - qRed(expected)) > off)
+ || (qAbs(qGreen(pix) - qGreen(expected)) > off)
+ || (qAbs(qBlue(pix) - qBlue(expected)) > off)
+ || (qAbs(qAlpha(pix) - qAlpha(expected)) > off);
+ }
+ if (diff && !different)
+ qDebug( "Different at %d,%d pixel [%d,%d,%d,%d] expected [%d,%d,%d,%d]", x, y,
+ qRed(result.pixel(x, y)), qGreen(result.pixel(x, y)),
+ qBlue(result.pixel(x, y)), qAlpha(result.pixel(x, y)),
+ qRed(expected), qGreen(expected), qBlue(expected), qAlpha(expected));
+ different |= diff;
+ }
+
+ QVERIFY(!different);
+}
+
+void tst_QPainter::saveAndRestore_data()
+{
+ QVERIFY(1);
+
+ QTest::addColumn<QFont>("font");
+ QTest::addColumn<QPen>("pen");
+ QTest::addColumn<QBrush>("brush");
+ QTest::addColumn<QColor>("backgroundColor");
+ QTest::addColumn<int>("backgroundMode");
+ QTest::addColumn<QPoint>("brushOrigin");
+ QTest::addColumn<QRegion>("clipRegion");
+ QTest::addColumn<QRect>("window");
+ QTest::addColumn<QRect>("viewport");
+
+ QPixmap pixmap(1, 1);
+ QPainter p(&pixmap);
+ QFont font = p.font();
+ QPen pen = p.pen();
+ QBrush brush = p.brush();
+ QColor backgroundColor = p.background().color();
+ Qt::BGMode backgroundMode = p.backgroundMode();
+ QPoint brushOrigin = p.brushOrigin();
+ QRegion clipRegion = p.clipRegion();
+ QRect window = p.window();
+ QRect viewport = p.viewport();
+
+ QTest::newRow("Original") << font << pen << brush << backgroundColor << int(backgroundMode)
+ << brushOrigin << clipRegion << window << viewport;
+
+ QFont font2 = font;
+ font2.setPointSize( 24 );
+ QTest::newRow("Modified font.pointSize, brush, backgroundColor, backgroundMode")
+ << font2 << pen << QBrush(Qt::red) << QColor(Qt::blue) << int(Qt::TransparentMode)
+ << brushOrigin << clipRegion << window << viewport;
+
+ font2 = font;
+ font2.setPixelSize( 20 );
+ QTest::newRow("Modified font.pixelSize, brushOrigin, pos")
+ << font2 << pen << brush << backgroundColor << int(backgroundMode)
+ << QPoint( 50, 32 ) << clipRegion << window << viewport;
+
+ QTest::newRow("Modified clipRegion, window, viewport")
+ << font << pen << brush << backgroundColor << int(backgroundMode)
+ << brushOrigin << clipRegion.subtracted(QRect(10,10,50,30))
+ << QRect(-500, -500, 500, 500 ) << QRect( 0, 0, 50, 50 );
+}
+
+void tst_QPainter::saveAndRestore()
+{
+ QFETCH( QFont, font );
+ QFETCH( QPen, pen );
+ QFETCH( QBrush, brush );
+ QFETCH( QColor, backgroundColor );
+ QFETCH( int, backgroundMode );
+ QFETCH( QPoint, brushOrigin );
+ QFETCH( QRegion, clipRegion );
+ QFETCH( QRect, window );
+ QFETCH( QRect, viewport );
+
+ QPixmap pixmap(1, 1);
+ QPainter painter(&pixmap);
+
+ QFont font_org = painter.font();
+ QPen pen_org = painter.pen();
+ QBrush brush_org = painter.brush();
+ QColor backgroundColor_org = painter.background().color();
+ Qt::BGMode backgroundMode_org = painter.backgroundMode();
+ QPoint brushOrigin_org = painter.brushOrigin();
+ QRegion clipRegion_org = painter.clipRegion();
+ QRect window_org = painter.window();
+ QRect viewport_org = painter.viewport();
+
+ painter.save();
+ painter.setFont( font );
+ painter.setPen( QPen(pen) );
+ painter.setBrush( brush );
+ painter.setBackground( backgroundColor );
+ painter.setBackgroundMode( (Qt::BGMode)backgroundMode );
+ painter.setBrushOrigin( brushOrigin );
+ painter.setClipRegion( clipRegion );
+ painter.setWindow( window );
+ painter.setViewport( viewport );
+ painter.restore();
+
+ QCOMPARE( painter.font(), font_org );
+ QCOMPARE( painter.font().pointSize(), font_org.pointSize() );
+ QCOMPARE( painter.font().pixelSize(), font_org.pixelSize() );
+ QCOMPARE( painter.pen(), pen_org );
+ QCOMPARE( painter.brush(), brush_org );
+ QCOMPARE( painter.background().color(), backgroundColor_org );
+ QCOMPARE( painter.backgroundMode(), backgroundMode_org );
+ QCOMPARE( painter.brushOrigin(), brushOrigin_org );
+ QCOMPARE( painter.clipRegion(), clipRegion_org );
+ QCOMPARE( painter.window(), window_org );
+ QCOMPARE( painter.viewport(), viewport_org );
+}
+
+/*
+ Helper functions
+*/
+
+QColor tst_QPainter::baseColor( int k, int intensity )
+{
+ int r = ( k & 1 ) * intensity;
+ int g = ( (k>>1) & 1 ) * intensity;
+ int b = ( (k>>2) & 1 ) * intensity;
+ return QColor( r, g, b );
+}
+
+QImage tst_QPainter::getResImage( const QString &dir, const QString &addition, const QString &extension )
+{
+ QImage res;
+ QString resFilename = dir + QString( "/res_%1." ).arg( addition ) + extension;
+ if ( !res.load( resFilename ) ) {
+ QWARN(QString("Could not load result data %s %1").arg(resFilename).toLatin1());
+ return QImage();
+ }
+ return res;
+}
+
+QBitmap tst_QPainter::getBitmap( const QString &dir, const QString &filename, bool mask )
+{
+ QBitmap bm;
+ QString bmFilename = dir + QString( "/%1.xbm" ).arg( filename );
+ if ( !bm.load( bmFilename ) ) {
+ QWARN(QString("Could not load bitmap '%1'").arg(bmFilename).toLatin1());
+ return QBitmap();
+ }
+ if ( mask ) {
+ QBitmap mask;
+ QString maskFilename = dir + QString( "/%1-mask.xbm" ).arg( filename );
+ if ( !mask.load( maskFilename ) ) {
+ QWARN(QString("Could not load mask '%1'").arg(maskFilename).toLatin1());
+ return QBitmap();
+ }
+ bm.setMask( mask );
+ }
+ return bm;
+}
+
+static int getPaintedPixels(const QImage &image, const QColor &background)
+{
+ uint color = background.rgba();
+
+ int pixels = 0;
+
+ for (int y = 0; y < image.height(); ++y)
+ for (int x = 0; x < image.width(); ++x)
+ if (image.pixel(x, y) != color)
+ ++pixels;
+
+ return pixels;
+}
+
+static QRect getPaintedSize(const QImage &image, const QColor &background)
+{
+ // not the fastest but at least it works..
+ int xmin = image.width() + 1;
+ int xmax = -1;
+ int ymin = image.height() +1;
+ int ymax = -1;
+
+ uint color = background.rgba();
+
+ for ( int y = 0; y < image.height(); ++y ) {
+ for ( int x = 0; x < image.width(); ++x ) {
+ QRgb pixel = image.pixel( x, y );
+ if ( pixel != color && x < xmin )
+ xmin = x;
+ if ( pixel != color && x > xmax )
+ xmax = x;
+ if ( pixel != color && y < ymin )
+ ymin = y;
+ if ( pixel != color && y > ymax )
+ ymax = y;
+ }
+ }
+
+ return QRect(xmin, ymin, xmax - xmin + 1, ymax - ymin + 1);
+}
+
+static QRect getPaintedSize(const QPixmap &pm, const QColor &background)
+{
+ return getPaintedSize(pm.toImage(), background);
+}
+
+void tst_QPainter::initFrom()
+{
+ QWidget *widget = new QWidget();
+ QPalette pal = widget->palette();
+ pal.setColor(QPalette::Foreground, QColor(255, 0, 0));
+ pal.setBrush(QPalette::Background, QColor(0, 255, 0));
+ widget->setPalette(pal);
+
+ QFont font = widget->font();
+ font.setPointSize(26);
+ font.setItalic(true);
+ widget->setFont(font);
+
+ QPixmap pm(100, 100);
+ QPainter p(&pm);
+ p.initFrom(widget);
+
+ QCOMPARE(p.font(), font);
+ QCOMPARE(p.pen().color(), pal.color(QPalette::Foreground));
+ QCOMPARE(p.background(), pal.background());
+
+ delete widget;
+}
+
+void tst_QPainter::drawBorderPixmap()
+{
+ QPixmap src(79,79);
+ src.fill(Qt::transparent);
+
+ QImage pm(200,200,QImage::Format_RGB32);
+ QPainter p(&pm);
+ p.setTransform(QTransform(-1,0,0,-1,173.5,153.5));
+ qDrawBorderPixmap(&p, QRect(0,0,75,105), QMargins(39,39,39,39), src, QRect(0,0,79,79), QMargins(39,39,39,39),
+ QTileRules(Qt::StretchTile,Qt::StretchTile), 0);
+}
+
+void tst_QPainter::drawPixmapFragments()
+{
+ QPixmap origPixmap(20, 20);
+ QPixmap resPixmap(20, 20);
+ QPainter::PixmapFragment fragments[4] = { {15, 15, 0, 0, 10, 10, 1, 1, 0, 1},
+ { 5, 15, 10, 0, 10, 10, 1, 1, 0, 1},
+ {15, 5, 0, 10, 10, 10, 1, 1, 0, 1},
+ { 5, 5, 10, 10, 10, 10, 1, 1, 0, 1} };
+ {
+ QPainter p(&origPixmap);
+ p.fillRect(0, 0, 10, 10, Qt::red);
+ p.fillRect(10, 0, 10, 10, Qt::green);
+ p.fillRect(0, 10, 10, 10, Qt::blue);
+ p.fillRect(10, 10, 10, 10, Qt::yellow);
+ }
+ {
+ QPainter p(&resPixmap);
+ p.drawPixmapFragments(fragments, 4, origPixmap);
+ }
+
+ QImage origImage = origPixmap.toImage().convertToFormat(QImage::Format_ARGB32);
+ QImage resImage = resPixmap.toImage().convertToFormat(QImage::Format_ARGB32);
+
+ QVERIFY(resImage.size() == resPixmap.size());
+ QVERIFY(resImage.pixel(5, 5) == origImage.pixel(15, 15));
+ QVERIFY(resImage.pixel(5, 15) == origImage.pixel(15, 5));
+ QVERIFY(resImage.pixel(15, 5) == origImage.pixel(5, 15));
+ QVERIFY(resImage.pixel(15, 15) == origImage.pixel(5, 5));
+
+
+ QPainter::PixmapFragment fragment = QPainter::PixmapFragment::create(QPointF(20, 20), QRectF(30, 30, 2, 2));
+ QVERIFY(fragment.x == 20);
+ QVERIFY(fragment.y == 20);
+ QVERIFY(fragment.sourceLeft == 30);
+ QVERIFY(fragment.sourceTop == 30);
+ QVERIFY(fragment.width == 2);
+ QVERIFY(fragment.height == 2);
+ QVERIFY(fragment.scaleX == 1);
+ QVERIFY(fragment.scaleY == 1);
+ QVERIFY(fragment.rotation == 0);
+ QVERIFY(fragment.opacity == 1);
+}
+
+void tst_QPainter::drawLine_data()
+{
+ QTest::addColumn<QLine>("line");
+
+ QTest::newRow("0-45") << QLine(0, 20, 100, 0);
+ QTest::newRow("45-90") << QLine(0, 100, 20, 0);
+ QTest::newRow("90-135") << QLine(20, 100, 0, 0);
+ QTest::newRow("135-180") << QLine(100, 20, 0, 0);
+ QTest::newRow("180-225") << QLine(100, 0, 0, 20);
+ QTest::newRow("225-270") << QLine(20, 0, 0, 100);
+ QTest::newRow("270-315") << QLine(0, 0, 20, 100);
+ QTest::newRow("315-360") << QLine(0, 0, 100, 20);
+}
+
+void tst_QPainter::drawLine()
+{
+ const int offset = 5;
+ const int epsilon = 1; // allow for one pixel difference
+
+ QFETCH(QLine, line);
+
+ QPixmap pixmapUnclipped(qMin(line.x1(), line.x2())
+ + 2*offset + qAbs(line.dx()),
+ qMin(line.y1(), line.y2())
+ + 2*offset + qAbs(line.dy()));
+
+ { // unclipped
+ pixmapUnclipped.fill(Qt::white);
+ QPainter p(&pixmapUnclipped);
+ p.translate(offset, offset);
+ p.setPen(QPen(Qt::black));
+ p.drawLine(line);
+ p.end();
+
+ const QRect painted = getPaintedSize(pixmapUnclipped, Qt::white);
+
+ QLine l = line;
+ l.translate(offset, offset);
+ QVERIFY(qAbs(painted.width() - qAbs(l.dx())) <= epsilon);
+ QVERIFY(qAbs(painted.height() - qAbs(l.dy())) <= epsilon);
+ QVERIFY(qAbs(painted.top() - qMin(l.y1(), l.y2())) <= epsilon);
+ QVERIFY(qAbs(painted.left() - qMin(l.x1(), l.x2())) <= epsilon);
+ QVERIFY(qAbs(painted.bottom() - qMax(l.y1(), l.y2())) <= epsilon);
+ QVERIFY(qAbs(painted.right() - qMax(l.x1(), l.x2())) <= epsilon);
+ }
+
+ QPixmap pixmapClipped(qMin(line.x1(), line.x2())
+ + 2*offset + qAbs(line.dx()),
+ qMin(line.y1(), line.y2())
+ + 2*offset + qAbs(line.dy()));
+ { // clipped
+ const QRect clip = QRect(line.p1(), line.p2()).normalized();
+
+ pixmapClipped.fill(Qt::white);
+ QPainter p(&pixmapClipped);
+ p.translate(offset, offset);
+ p.setClipRect(clip);
+ p.setPen(QPen(Qt::black));
+ p.drawLine(line);
+ p.end();
+ }
+
+ const QImage unclipped = pixmapUnclipped.toImage();
+ const QImage clipped = pixmapClipped.toImage();
+ QCOMPARE(unclipped, clipped);
+}
+
+void tst_QPainter::drawLine_clipped()
+{
+ QImage image(16, 1, QImage::Format_ARGB32_Premultiplied);
+ image.fill(0x0);
+
+ QPainter p(&image);
+ p.setPen(QPen(Qt::black, 10));
+
+ // this should fill the whole image
+ p.drawLine(-1, -1, 17, 1);
+ p.end();
+
+ for (int x = 0; x < 16; ++x)
+ QCOMPARE(image.pixel(x, 0), 0xff000000);
+}
+
+void tst_QPainter::drawLine_task121143()
+{
+ QPen pen(Qt::black);
+
+ QImage image(5, 5, QImage::Format_ARGB32_Premultiplied);
+ image.fill(0xffffffff);
+ QPainter p(&image);
+ p.setPen(pen);
+ p.drawLine(QLine(0, 0+4, 0+4, 0));
+ p.end();
+
+ QImage expected(5, 5, QImage::Format_ARGB32_Premultiplied);
+ expected.fill(0xffffffff);
+ for (int x = 0; x < 5; ++x)
+ expected.setPixel(x, 5-x-1, pen.color().rgb());
+
+ QCOMPARE(image, expected);
+}
+
+void tst_QPainter::drawLine_task190634()
+{
+ QPen pen(Qt::black, 3);
+
+ QImage image(32, 32, QImage::Format_ARGB32_Premultiplied);
+ QPainter p(&image);
+ p.fillRect(0, 0, image.width(), image.height(), Qt::white);
+
+ p.setPen(pen);
+ p.drawLine(QLineF(2, -1.6, 10, -1.6));
+ p.end();
+
+ const uint *data = reinterpret_cast<uint *>(image.bits());
+
+ for (int i = 0; i < image.width() * image.height(); ++i)
+ QCOMPARE(data[i], 0xffffffff);
+
+ p.begin(&image);
+ p.fillRect(0, 0, image.width(), image.height(), Qt::white);
+
+ p.setPen(pen);
+ p.drawLine(QLineF(-1.6, 2, -1.6, 10));
+ p.end();
+
+ data = reinterpret_cast<uint *>(image.bits());
+
+ for (int i = 0; i < image.width() * image.height(); ++i)
+ QCOMPARE(data[i], 0xffffffff);
+
+ p.begin(&image);
+ p.fillRect(0, 0, image.width(), image.height(), Qt::white);
+
+ p.setPen(pen);
+ p.drawLine( QPoint(2,-2), QPoint(3,-5) );
+ p.end();
+
+ data = reinterpret_cast<uint *>(image.bits());
+
+ for (int i = 0; i < image.width() * image.height(); ++i)
+ QCOMPARE(data[i], 0xffffffff);
+}
+
+void tst_QPainter::drawLine_task229459()
+{
+ QImage image(32, 32, QImage::Format_ARGB32_Premultiplied);
+ image.fill(0x0);
+ QPen pen(Qt::black, 64);
+
+ QPainter p(&image);
+ p.setPen(pen);
+ p.drawLine(-8, -8, 10000000, 10000000);
+ p.end();
+
+ QImage expected = image;
+ expected.fill(0xff000000);
+
+ QCOMPARE(image, expected);
+}
+
+void tst_QPainter::drawLine_task234891()
+{
+ QImage img(100, 1000, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0x0);
+ QImage expected = img;
+
+ QPainter p(&img);
+ p.setPen(QPen(QBrush(QColor(255,0,0)), 6));
+ p.drawLine(QPointF(25000,100),QPointF(30000,105));
+
+ p.setPen(QPen(QBrush(QColor(0,255,0)), 6));
+ p.drawLine(QPointF(30000,150),QPointF(35000,155));
+
+ p.setPen(QPen(QBrush(QColor(0,0,255)), 6));
+ p.drawLine(QPointF(65000,200),QPointF(66000,205));
+
+ QCOMPARE(expected, img);
+}
+
+void tst_QPainter::drawLine_task216948()
+{
+ QImage img(1, 10, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0x0);
+
+ QPainter p(&img);
+ QLine line(10, 0, 10, 10);
+ p.translate(-10, 0);
+ p.drawLine(line);
+ p.end();
+
+ for (int i = 0; i < img.height(); ++i)
+ QCOMPARE(img.pixel(0, i), QColor(Qt::black).rgba());
+}
+
+void tst_QPainter::drawRect()
+{
+ QFETCH(QRect, rect);
+ QFETCH(bool, usePen);
+
+ QPixmap pixmap(rect.x() + rect.width() + 10,
+ rect.y() + rect.height() + 10);
+ {
+ pixmap.fill(Qt::white);
+ QPainter p(&pixmap);
+ p.setPen(usePen ? QPen(Qt::black) : QPen(Qt::NoPen));
+ p.setBrush(Qt::black);
+ p.drawRect(rect);
+ p.end();
+
+ int increment = usePen ? 1 : 0;
+
+ const QRect painted = getPaintedSize(pixmap, Qt::white);
+ QCOMPARE(painted.width(), rect.width() + increment);
+ QCOMPARE(painted.height(), rect.height() + increment);
+ }
+}
+
+void tst_QPainter::drawRect2()
+{
+ QImage image(64, 64, QImage::Format_ARGB32_Premultiplied);
+ {
+ image.fill(0xffffffff);
+
+ QTransform transform(0.368567, 0, 0, 0, 0.368567, 0, 0.0289, 0.0289, 1);
+
+ QPainter p(&image);
+ p.setTransform(transform);
+ p.setBrush(Qt::red);
+ p.setPen(Qt::NoPen);
+ p.drawRect(QRect(14, 14, 39, 39));
+ p.end();
+
+ QRect fill = getPaintedSize(image, Qt::white);
+ image.fill(0xffffffff);
+
+ p.begin(&image);
+ p.setTransform(transform);
+ p.drawRect(QRect(14, 14, 39, 39));
+ p.end();
+
+ QRect stroke = getPaintedSize(image, Qt::white);
+ QCOMPARE(stroke.adjusted(1, 1, 0, 0), fill.adjusted(0, 0, 1, 1));
+ }
+}
+
+void tst_QPainter::fillRect()
+{
+ QImage image(100, 100, QImage::Format_ARGB32_Premultiplied);
+ image.fill(QColor(0, 0, 0, 0).rgba());
+
+ QPainter p(&image);
+
+ p.fillRect(0, 0, 100, 100, QColor(255, 0, 0, 127));
+
+// pixmap.save("bla1.png", "PNG");
+ QCOMPARE(getPaintedSize(image, QColor(0, 0, 0, 0)),
+ QRect(0, 0, 100, 100));
+ QCOMPARE(getPaintedSize(image, QColor(127, 0, 0, 127)).isValid(),
+ QRect().isValid());
+
+ p.setCompositionMode(QPainter::CompositionMode_SourceIn);
+ p.fillRect(50, 0, 50, 100, QColor(0, 0, 255, 255));
+
+ QCOMPARE(getPaintedSize(image, QColor(127, 0, 0, 127)),
+ QRect(50, 0, 50, 100));
+ QCOMPARE(getPaintedSize(image, QColor(0, 0, 127, 127)),
+ QRect(0, 0, 50, 100));
+}
+
+void tst_QPainter::fillRect2()
+{
+ QRgb background = 0x0;
+
+ QImage img(1, 20, QImage::Format_ARGB32_Premultiplied);
+ img.fill(background);
+
+ QPainter p(&img);
+
+ QRectF rect(0, 1, 1.2, 18);
+ p.fillRect(rect, Qt::black);
+
+ p.end();
+
+ QCOMPARE(img.pixel(0, 0), background);
+ QCOMPARE(img.pixel(0, img.height() - 1), background);
+
+ QCOMPARE(img.pixel(0, 1), img.pixel(0, 2));
+ QCOMPARE(img.pixel(0, img.height() - 2), img.pixel(0, img.height() - 3));
+}
+
+void tst_QPainter::fillRect3()
+{
+ QImage img(1, 1, QImage::Format_ARGB32_Premultiplied);
+ img.fill(QColor(Qt::black).rgba());
+
+ QPainter p(&img);
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ p.fillRect(img.rect(), Qt::transparent);
+ p.end();
+
+ QCOMPARE(img.pixel(0, 0), 0U);
+}
+
+void tst_QPainter::fillRect4()
+{
+ QImage image(100, 1, QImage::Format_ARGB32_Premultiplied);
+ image.fill(0x0);
+
+ QImage expected = image;
+ expected.fill(0xffffffff);
+
+ QPainter p(&image);
+ p.scale(1.1, 1);
+ p.setPen(Qt::NoPen);
+
+ for (int i = 0; i < 33; ++i)
+ p.fillRect(QRectF(3 * i, 0, 3, 1), Qt::white);
+
+ p.end();
+
+ QCOMPARE(image, expected);
+}
+
+void tst_QPainter::drawPath_data()
+{
+ QTest::addColumn<QPainterPath>("path");
+ QTest::addColumn<QRect>("expectedBounds");
+ QTest::addColumn<int>("expectedPixels");
+
+ {
+ QPainterPath p;
+ p.addRect(2, 2, 10, 10);
+ QTest::newRow("int-aligned rect") << p << QRect(2, 2, 10, 10) << 10 * 10;
+ }
+
+ {
+ QPainterPath p;
+ p.addRect(2.25, 2.25, 10, 10);
+ QTest::newRow("non-aligned rect") << p << QRect(3, 3, 10, 10) << 10 * 10;
+ }
+
+ {
+ QPainterPath p;
+ p.addRect(2.25, 2.25, 10.5, 10.5);
+ QTest::newRow("non-aligned rect 2") << p << QRect(3, 3, 10, 10) << 10 * 10;
+ }
+
+ {
+ QPainterPath p;
+ p.addRect(2.5, 2.5, 10, 10);
+ QTest::newRow("non-aligned rect 3") << p << QRect(3, 3, 10, 10) << 10 * 10;
+ }
+
+ {
+ QPainterPath p;
+ p.addRect(2, 2, 10, 10);
+ p.addRect(4, 4, 6, 6);
+ QTest::newRow("rect-in-rect") << p << QRect(2, 2, 10, 10) << 10 * 10 - 6 * 6;
+ }
+
+ {
+ QPainterPath p;
+ p.addRect(2, 2, 10, 10);
+ p.addRect(4, 4, 6, 6);
+ p.addRect(6, 6, 2, 2);
+ QTest::newRow("rect-in-rect-in-rect") << p << QRect(2, 2, 10, 10) << 10 * 10 - 6 * 6 + 2 * 2;
+ }
+}
+
+void tst_QPainter::drawPath()
+{
+ QFETCH(QPainterPath, path);
+ QFETCH(QRect, expectedBounds);
+ QFETCH(int, expectedPixels);
+
+ const int offset = 2;
+
+ QImage image(expectedBounds.width() + 2 * offset, expectedBounds.height() + 2 * offset,
+ QImage::Format_ARGB32_Premultiplied);
+ image.fill(QColor(Qt::white).rgb());
+
+ QPainter p(&image);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::black);
+ p.translate(offset - expectedBounds.left(), offset - expectedBounds.top());
+ p.drawPath(path);
+ p.end();
+
+ const QRect paintedBounds = getPaintedSize(image, Qt::white);
+
+ QCOMPARE(paintedBounds.x(), offset);
+ QCOMPARE(paintedBounds.y(), offset);
+ QCOMPARE(paintedBounds.width(), expectedBounds.width());
+ QCOMPARE(paintedBounds.height(), expectedBounds.height());
+
+ if (expectedPixels != -1) {
+ int paintedPixels = getPaintedPixels(image, Qt::white);
+ QCOMPARE(paintedPixels, expectedPixels);
+ }
+}
+
+void tst_QPainter::drawPath2()
+{
+ const int w = 50;
+
+ for (int h = 5; h < 200; ++h) {
+ QPainterPath p1, p2;
+ p1.lineTo(w, 0);
+ p1.lineTo(w, h);
+
+ p2.lineTo(w, h);
+ p2.lineTo(0, h);
+
+ const int offset = 2;
+
+ QImage image(w + 2 * offset, h + 2 * offset,
+ QImage::Format_ARGB32_Premultiplied);
+ image.fill(QColor(Qt::white).rgb());
+
+ QPainter p(&image);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::black);
+ p.translate(offset, offset);
+ p.drawPath(p1);
+ p.end();
+
+ const int p1Pixels = getPaintedPixels(image, Qt::white);
+
+ image.fill(QColor(Qt::white).rgb());
+ p.begin(&image);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::black);
+ p.translate(offset, offset);
+ p.drawPath(p2);
+ p.end();
+
+ const int p2Pixels = getPaintedPixels(image, Qt::white);
+
+ QCOMPARE(p1Pixels + p2Pixels, w * h);
+ }
+}
+
+void tst_QPainter::drawPath3()
+{
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QImage imgA(400, 400, QImage::Format_RGB32);
+#else
+ QImage imgA(100, 100, QImage::Format_RGB32);
+#endif
+ imgA.fill(0xffffff);
+ QImage imgB = imgA;
+
+ QPainterPath path;
+ for (int y = 0; y < imgA.height(); ++y) {
+ for (int x = 0; x < imgA.width(); ++x) {
+ if ((x + y) & 1) {
+ imgA.setPixel(x, y, 0);
+ path.addRect(x, y, 1, 1);
+ }
+ }
+ }
+
+ QPainter p(&imgB);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::black);
+
+ p.drawPath(path);
+ p.end();
+
+ QVERIFY(imgA == imgB);
+
+ imgA.invertPixels();
+ imgB.fill(0xffffff);
+
+ p.begin(&imgB);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::black);
+
+ QRectF rect(0, 0, imgA.width(), imgA.height());
+ path.addRect(rect.adjusted(-10, -10, 10, 10));
+ p.drawPath(path);
+ p.end();
+
+ QVERIFY(imgA == imgB);
+
+ path.setFillRule(Qt::WindingFill);
+ imgB.fill(0xffffff);
+
+ p.begin(&imgB);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::black);
+ QRect clip = rect.adjusted(10, 10, -10, -10).toRect();
+ p.setClipRect(clip);
+ p.drawPath(path);
+ p.end();
+
+ QCOMPARE(getPaintedPixels(imgB, Qt::white), clip.width() * clip.height());
+}
+
+void tst_QPainter::drawEllipse_data()
+{
+ QTest::addColumn<QSize>("size");
+ QTest::addColumn<bool>("usePen");
+
+ // The current drawEllipse algorithm (drawEllipse_midpoint_i in
+ // qpaintengine_raster.cpp) draws ellipses that are too wide if the
+ // ratio between width and hight is too large/small (task 114874). Those
+ // ratios are therefore currently avoided.
+ for (int w = 10; w < 128; w += 7) {
+ for (int h = w/2; h < qMin(2*w, 128); h += 13) {
+ QString s = QString("%1x%2").arg(w).arg(h);
+ QTest::newRow(QString("%1 with pen").arg(s).toLatin1()) << QSize(w, h) << true;
+ QTest::newRow(QString("%1 no pen").arg(s).toLatin1()) << QSize(w, h) << false;
+ }
+ }
+}
+
+void tst_QPainter::drawEllipse()
+{
+ QFETCH(QSize, size);
+ QFETCH(bool, usePen);
+
+ const int offset = 10;
+ QRect rect(QPoint(offset, offset), size);
+
+ QImage image(size.width() + 2 * offset, size.height() + 2 * offset,
+ QImage::Format_ARGB32_Premultiplied);
+ image.fill(QColor(Qt::white).rgb());
+
+ QPainter p(&image);
+ p.setPen(usePen ? QPen(Qt::black) : QPen(Qt::NoPen));
+ p.setBrush(Qt::black);
+ p.drawEllipse(rect);
+ p.end();
+
+ QPixmap pixmap = QPixmap::fromImage(image);
+
+ const QRect painted = getPaintedSize(pixmap, Qt::white);
+
+ QCOMPARE(painted.x(), rect.x());
+ QCOMPARE(painted.y(), rect.y() + (usePen ? 0 : 1));
+ QCOMPARE(painted.width(), size.width() + (usePen ? 1 : 0));
+ QCOMPARE(painted.height(), size.height() + (usePen ? 1 : -1));
+}
+
+void tst_QPainter::drawClippedEllipse_data()
+{
+ QTest::addColumn<QRect>("rect");
+
+ for (int w = 20; w < 128; w += 7) {
+ for (int h = w/2; h < qMin(2*w, 128); h += 13) {
+ QString s = QString("%1x%2").arg(w).arg(h);
+ QTest::newRow(QString("%1 top").arg(s).toLatin1()) << QRect(0, -h/2, w, h);
+ QTest::newRow(QString("%1 topright").arg(s).toLatin1()) << QRect(w/2, -h/2, w, h);
+ QTest::newRow(QString("%1 right").arg(s).toLatin1()) << QRect(w/2, 0, w, h);
+ QTest::newRow(QString("%1 bottomright").arg(s).toLatin1()) << QRect(w/2, h/2, w, h);
+ QTest::newRow(QString("%1 bottom").arg(s).toLatin1()) << QRect(0, h/2, w, h);
+ QTest::newRow(QString("%1 bottomleft").arg(s).toLatin1()) << QRect(-w/2, h/2, w, h);
+ QTest::newRow(QString("%1 left").arg(s).toLatin1()) << QRect(-w/2, 0, w, h);
+ QTest::newRow(QString("%1 topleft").arg(s).toLatin1()) << QRect(-w/2, -h/2, w, h);
+ }
+ }
+}
+
+void tst_QPainter::drawClippedEllipse()
+{
+ QFETCH(QRect, rect);
+ if (sizeof(qreal) != sizeof(double))
+ QSKIP("Test only works for qreal==double", SkipAll);
+ QImage image(rect.width() + 1, rect.height() + 1,
+ QImage::Format_ARGB32_Premultiplied);
+ QRect expected = QRect(rect.x(), rect.y(), rect.width()+1, rect.height()+1)
+ & QRect(0, 0, image.width(), image.height());
+
+
+ image.fill(QColor(Qt::white).rgb());
+ QPainter p(&image);
+ p.drawEllipse(rect);
+ p.end();
+
+ QPixmap pixmap = QPixmap::fromImage(image);
+ const QRect painted = getPaintedSize(pixmap, Qt::white);
+
+ QCOMPARE(painted.x(), expected.x());
+ QCOMPARE(painted.y(), expected.y());
+ QCOMPARE(painted.width(), expected.width());
+ QCOMPARE(painted.height(), expected.height());
+
+}
+
+void tst_QPainter::drawRoundRect()
+{
+ QFETCH(QRect, rect);
+ QFETCH(bool, usePen);
+
+#ifdef Q_WS_MAC
+ if (QTest::currentDataTag() == QByteArray("rect(6, 12, 3, 14) with pen") ||
+ QTest::currentDataTag() == QByteArray("rect(6, 17, 3, 25) with pen") ||
+ QTest::currentDataTag() == QByteArray("rect(10, 6, 10, 3) with pen") ||
+ QTest::currentDataTag() == QByteArray("rect(10, 12, 10, 14) with pen") ||
+ QTest::currentDataTag() == QByteArray("rect(13, 45, 17, 80) with pen") ||
+ QTest::currentDataTag() == QByteArray("rect(13, 50, 17, 91) with pen") ||
+ QTest::currentDataTag() == QByteArray("rect(17, 6, 24, 3) with pen") ||
+ QTest::currentDataTag() == QByteArray("rect(24, 12, 38, 14) with pen"))
+ QSKIP("The Mac paint engine is off-by-one on certain rect sizes", SkipSingle);
+#endif
+ QPixmap pixmap(rect.x() + rect.width() + 10,
+ rect.y() + rect.height() + 10);
+ {
+ pixmap.fill(Qt::white);
+ QPainter p(&pixmap);
+ p.setPen(usePen ? QPen(Qt::black) : QPen(Qt::NoPen));
+ p.setBrush(Qt::black);
+ p.drawRoundRect(rect);
+ p.end();
+
+ int increment = usePen ? 1 : 0;
+
+ const QRect painted = getPaintedSize(pixmap, Qt::white);
+ QCOMPARE(painted.width(), rect.width() + increment);
+ QCOMPARE(painted.height(), rect.height() + increment);
+ }
+}
+
+Q_DECLARE_METATYPE(QImage::Format)
+
+void tst_QPainter::qimageFormats_data()
+{
+ QTest::addColumn<QImage::Format>("format");
+ QTest::newRow("QImage::Format_RGB32") << QImage::Format_RGB32;
+ QTest::newRow("QImage::Format_ARGB32") << QImage::Format_ARGB32;
+ QTest::newRow("QImage::Format_ARGB32_Premultiplied") << QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("QImage::Format_RGB16") << QImage::Format_RGB16;
+ QTest::newRow("Qimage::Format_ARGB8565_Premultiplied") << QImage::Format_ARGB8565_Premultiplied;
+ QTest::newRow("Qimage::Format_RGB666") << QImage::Format_RGB666;
+ QTest::newRow("Qimage::Format_RGB555") << QImage::Format_RGB555;
+ QTest::newRow("Qimage::Format_ARGB8555_Premultiplied") << QImage::Format_ARGB8555_Premultiplied;
+ QTest::newRow("Qimage::Format_RGB888") << QImage::Format_RGB888;
+}
+
+/*
+ Tests that QPainter can paint on various QImage formats.
+*/
+void tst_QPainter::qimageFormats()
+{
+ QFETCH(QImage::Format, format);
+
+ const QSize size(100, 100);
+ QImage image(size, format);
+ image.fill(0);
+
+ const QColor testColor(Qt::red);
+ QPainter p(&image);
+ QVERIFY(p.isActive());
+ p.setBrush(QBrush(testColor));
+ p.drawRect(QRect(QPoint(0,0), size));
+ QCOMPARE(image.pixel(50, 50), testColor.rgb());
+}
+
+void tst_QPainter::fillData()
+{
+ QTest::addColumn<QRect>("rect");
+ QTest::addColumn<bool>("usePen");
+
+ for (int w = 3; w < 50; w += 7) {
+ for (int h = 3; h < 50; h += 11) {
+ int x = w/2 + 5;
+ int y = h/2 + 5;
+ QTest::newRow(QString("rect(%1, %2, %3, %4) with pen").arg(x).arg(y).arg(w).arg(h).toLatin1())
+ << QRect(x, y, w, h) << true;
+ QTest::newRow(QString("rect(%1, %2, %3, %4) no pen").arg(x).arg(y).arg(w).arg(h).toLatin1())
+ << QRect(x, y, w, h) << false;
+ }
+ }
+}
+
+/*
+ Test that drawline works properly after setWindow has been called.
+*/
+void tst_QPainter::setWindow()
+{
+ QPixmap pixmap(600, 600);
+ pixmap.fill(QColor(Qt::white));
+
+ QPainter painter(&pixmap);
+ painter.setWindow(0, 0, 3, 3);
+ painter.drawLine(1, 1, 2, 2);
+
+ const QRect painted = getPaintedSize(pixmap, Qt::white);
+ QVERIFY(195 < painted.y() && painted.y() < 205); // correct value is around 200
+ QVERIFY(195 < painted.height() && painted.height() < 205); // correct value is around 200
+}
+
+void tst_QPainter::combinedMatrix()
+{
+ QPixmap pm(64, 64);
+
+ QPainter p(&pm);
+ p.setWindow(0, 0, 1, 1);
+ p.setViewport(32, 0, 32, 32);
+
+ p.translate(0.5, 0.5);
+
+ QMatrix cm = p.combinedMatrix();
+
+ QPointF pt = QPointF(0, 0) * cm;
+
+ QCOMPARE(pt.x(), 48.0);
+ QCOMPARE(pt.y(), 16.0);
+}
+
+void tst_QPainter::textOnTransparentImage()
+{
+ bool foundPixel = false;
+ QImage image(10, 10, QImage::Format_ARGB32_Premultiplied);
+ image.fill(qRgba(0, 0, 0, 0)); // transparent
+ {
+ QPainter painter(&image);
+ painter.setPen(QColor(255, 255, 255));
+ painter.drawText(0, 10, "W");
+ }
+ for (int x = 0; x < image.width(); ++x)
+ for (int y = 0; y < image.height(); ++y)
+ if (image.pixel(x, y) != 0)
+ foundPixel = true;
+ QVERIFY(foundPixel);
+}
+
+void tst_QPainter::renderHints()
+{
+ QImage img(1, 1, QImage::Format_RGB32);
+
+ QPainter p(&img);
+
+ // Turn off all...
+ p.setRenderHints(QPainter::RenderHints(0xffffffff), false);
+ QCOMPARE(p.renderHints(), QPainter::RenderHints(0));
+
+ // Single set/get
+ p.setRenderHint(QPainter::Antialiasing);
+ QVERIFY(p.renderHints() & QPainter::Antialiasing);
+
+ p.setRenderHint(QPainter::Antialiasing, false);
+ QVERIFY(!(p.renderHints() & QPainter::Antialiasing));
+
+ // Multi set/get
+ p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
+ QVERIFY(p.renderHints() & (QPainter::Antialiasing | QPainter::SmoothPixmapTransform));
+
+ p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, false);
+ QVERIFY(!(p.renderHints() & (QPainter::Antialiasing | QPainter::SmoothPixmapTransform)));
+}
+
+int countPixels(const QImage &img, const QRgb &color)
+{
+ int count = 0;
+ for (int y = 0; y < img.height(); ++y) {
+ for (int x = 0; x < img.width(); ++x) {
+ count += ((img.pixel(x, y) & 0xffffff) == color);
+ }
+ }
+ return count;
+}
+
+template <typename T>
+void testClipping(QImage &img)
+{
+ QPainterPath a, b;
+ a.addRect(QRect(2, 2, 4, 4));
+ b.addRect(QRect(4, 4, 4, 4));
+ QPainter p(&img);
+
+ p.end();
+ img.fill(0x0);
+ p.begin(&img);
+ p.setClipPath(a);
+ p.setClipPath(b, Qt::IntersectClip);
+
+ p.setClipping(false);
+ p.setPen(Qt::NoPen);
+ p.setBrush(QColor(0xff0000));
+ p.drawRect(T(0, 0, 10, 10));
+
+ p.setClipping(true);
+ p.setBrush(QColor(0x00ff00));
+ p.drawRect(T(0, 0, 10, 10));
+
+ QCOMPARE(countPixels(img, 0xff0000), 96);
+ QCOMPARE(countPixels(img, 0x00ff00), 4);
+}
+
+void tst_QPainter::disableEnableClipping()
+{
+ QImage img(10, 10, QImage::Format_RGB32);
+
+ testClipping<QRectF>(img);
+ testClipping<QRect>(img);
+}
+
+void tst_QPainter::setClipRect()
+{
+ QImage img(10, 10, QImage::Format_RGB32);
+ // simple test to let valgrind check for buffer overflow
+ {
+ QPainter p(&img);
+ p.setClipRect(-10, -10, 100, 100);
+ p.fillRect(-10, -10, 100, 100, QBrush(QColor(Qt::red)));
+ }
+
+ // rects with negative width/height
+ {
+ QPainter p(&img);
+ p.setClipRect(QRect(10, 10, -10, 10));
+ QVERIFY(p.clipRegion().isEmpty());
+ p.setClipRect(QRect(10, 10, 10, -10));
+ QVERIFY(p.clipRegion().isEmpty());
+ p.setClipRect(QRectF(10.5, 10.5, -10.5, 10.5));
+ QVERIFY(p.clipRegion().isEmpty());
+ p.setClipRect(QRectF(10.5, 10.5, 10.5, -10.5));
+ QVERIFY(p.clipRegion().isEmpty());
+ }
+}
+
+/*
+ This tests the two different clipping approaches in QRasterPaintEngine,
+ one when using a QRegion and one when using a QPainterPath. They should
+ give equal results.
+*/
+void tst_QPainter::setEqualClipRegionAndPath_data()
+{
+ QTest::addColumn<QSize>("deviceSize");
+ QTest::addColumn<QRegion>("region");
+
+ QTest::newRow("empty") << QSize(100, 100) << QRegion();
+ QTest::newRow("simple rect") << QSize(100, 100)
+ << QRegion(QRect(5, 5, 10, 10));
+
+ QVector<QRect> rects;
+ QRegion region;
+
+ rects << QRect(5, 5, 10, 10) << QRect(20, 20, 10, 10);
+ region.setRects(rects.constData(), rects.size());
+ QTest::newRow("two rects") << QSize(100, 100) << region;
+
+ rects.clear();
+ rects << QRect(5, 5, 10, 10) << QRect(20, 5, 10, 10);
+ region.setRects(rects.constData(), rects.size());
+ QTest::newRow("two x-adjacent rects") << QSize(100, 100) << region;
+
+ rects.clear();
+ rects << QRect(0, 0, 10, 100) << QRect(12, 0, 10, 100);
+ region.setRects(rects.constData(), rects.size());
+ QTest::newRow("two x-adjacent rects 2") << QSize(100, 100) << region;
+
+ rects.clear();
+ rects << QRect(0, 0, 10, 100) << QRect(12, 0, 10, 100);
+ region.setRects(rects.constData(), rects.size());
+ QTest::newRow("two x-adjacent rects 3") << QSize(50, 50) << region;
+
+ rects.clear();
+ rects << QRect(0, 0, 10, 100) << QRect(12, 0, 10, 100);
+ region.setRects(rects.constData(), rects.size());
+ QTest::newRow("two x-adjacent rects 4") << QSize(101, 101) << region;
+
+ region = QRegion(QRect(0, 0, 200, 200), QRegion::Ellipse);
+
+ QTest::newRow("ellipse") << QSize(190, 200) << region;
+
+ region ^= QRect(50, 50, 50, 50);
+ QTest::newRow("ellipse 2") << QSize(200, 200) << region;
+}
+
+void tst_QPainter::setEqualClipRegionAndPath()
+{
+ QFETCH(QSize, deviceSize);
+ QFETCH(QRegion, region);
+
+ QPainterPath path;
+ path.addRegion(region);
+
+ QImage img1(deviceSize.width(), deviceSize.height(),
+ QImage::Format_ARGB32);
+ QImage img2(deviceSize.width(), deviceSize.height(),
+ QImage::Format_ARGB32);
+ img1.fill(0x12345678);
+ img2.fill(0x12345678);
+
+ {
+ QPainter p(&img1);
+ p.setClipRegion(region);
+ p.fillRect(0, 0, img1.width(), img1.height(), QColor(Qt::red));
+ }
+ {
+ QPainter p(&img2);
+ p.setClipPath(path);
+ p.fillRect(0, 0, img2.width(), img2.height(), QColor(Qt::red));
+ }
+
+#if 0
+ if (img1 != img2) {
+ img1.save("setEqualClipRegionAndPath_1.xpm", "XPM");
+ img2.save("setEqualClipRegionAndPath_2.xpm", "XPM");
+ }
+#endif
+ QCOMPARE(img1, img2);
+
+#if 0
+ // rotated
+ img1.fill(0x12345678);
+ img2.fill(0x12345678);
+
+ {
+ QPainter p(&img1);
+ p.rotate(25);
+ p.setClipRegion(region);
+ p.fillRect(0, 0, img1.width(), img1.height(), QColor(Qt::red));
+ }
+ {
+ QPainter p(&img2);
+ p.rotate(25);
+ p.setClipPath(path);
+ p.fillRect(0, 0, img2.width(), img2.height(), QColor(Qt::red));
+ }
+
+#if 1
+ if (img1 != img2) {
+ img1.save("setEqualClipRegionAndPath_1.xpm", "XPM");
+ img2.save("setEqualClipRegionAndPath_2.xpm", "XPM");
+ }
+#endif
+ QCOMPARE(img1, img2);
+#endif
+
+ img1.fill(0x12345678);
+ img2.fill(0x12345678);
+
+ // simple intersectclip
+ img1.fill(0x12345678);
+ img2.fill(0x12345678);
+ {
+ QPainter p(&img1);
+ p.setClipRegion(region);
+ p.setClipRegion(region, Qt::IntersectClip);
+ p.fillRect(0, 0, img1.width(), img1.height(), QColor(Qt::red));
+ }
+ {
+ QPainter p(&img2);
+ p.setClipPath(path);
+ p.setClipPath(path, Qt::IntersectClip);
+ p.fillRect(0, 0, img2.width(), img2.height(), QColor(Qt::red));
+ }
+#if 0
+ if (img1 != img2) {
+ img1.save("setEqualClipRegionAndPath_1.png", "PNG");
+ img2.save("setEqualClipRegionAndPath_2.png", "PNG");
+ }
+#endif
+ QCOMPARE(img1, img2);
+
+ img1.fill(0x12345678);
+ img2.fill(0x12345678);
+ {
+ QPainter p(&img1);
+ p.setClipPath(path);
+ p.setClipRegion(region, Qt::IntersectClip);
+ p.fillRect(0, 0, img1.width(), img1.height(), QColor(Qt::red));
+ }
+ {
+ QPainter p(&img2);
+ p.setClipRegion(region);
+ p.setClipPath(path, Qt::IntersectClip);
+ p.fillRect(0, 0, img2.width(), img2.height(), QColor(Qt::red));
+ }
+#if 0
+ if (img1 != img2) {
+ img1.save("setEqualClipRegionAndPath_1.xpm", "XPM");
+ img2.save("setEqualClipRegionAndPath_2.xpm", "XPM");
+ }
+#endif
+ QCOMPARE(img1, img2);
+
+}
+
+void tst_QPainter::clippedFillPath_data()
+{
+ QTest::addColumn<QSize>("imageSize");
+ QTest::addColumn<QPainterPath>("path");
+ QTest::addColumn<QRect>("clipRect");
+ QTest::addColumn<QBrush>("brush");
+ QTest::addColumn<QPen>("pen");
+
+ QLinearGradient gradient(QPoint(0, 0), QPoint(100, 100));
+ gradient.setColorAt(0, Qt::red);
+ gradient.setColorAt(1, Qt::blue);
+
+
+ QPen pen2(QColor(223, 223, 0, 223));
+ pen2.setWidth(2);
+
+ QPainterPath path;
+ path.addRect(QRect(15, 15, 50, 50));
+ QTest::newRow("simple rect 0") << QSize(100, 100) << path
+ << QRect(15, 15, 49, 49)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("simple rect 1") << QSize(100, 100) << path
+ << QRect(15, 15, 50, 50)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("simple rect 2") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("simple rect 3") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(QColor(Qt::blue))
+ << QPen(Qt::NoPen);
+ QTest::newRow("simple rect 4") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(gradient)
+ << pen2;
+
+ path = QPainterPath();
+ path.addEllipse(QRect(15, 15, 50, 50));
+ QTest::newRow("ellipse 0") << QSize(100, 100) << path
+ << QRect(15, 15, 49, 49)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("ellipse 1") << QSize(100, 100) << path
+ << QRect(15, 15, 50, 50)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("ellipse 2") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("ellipse 3") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(QColor(Qt::blue))
+ << QPen(Qt::NoPen);
+ QTest::newRow("ellipse 4") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(gradient)
+ << pen2;
+
+ path = QPainterPath();
+ path.addRoundRect(QRect(15, 15, 50, 50), 20);
+ QTest::newRow("round rect 0") << QSize(100, 100) << path
+ << QRect(15, 15, 49, 49)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("round rect 1") << QSize(100, 100) << path
+ << QRect(15, 15, 50, 50)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("round rect 2") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("round rect 3") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(QColor(Qt::blue))
+ << QPen(Qt::NoPen);
+ QTest::newRow("round rect 4") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(gradient)
+ << pen2;
+
+ path = QPainterPath();
+ path.moveTo(15, 50);
+ path.cubicTo(40, 50, 40, 15, 65, 50);
+ path.lineTo(15, 50);
+ QTest::newRow("cubic 0") << QSize(100, 100) << path
+ << QRect(15, 15, 49, 49)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("cubic 1") << QSize(100, 100) << path
+ << QRect(15, 15, 50, 50)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("cubic 2") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(Qt::NoBrush)
+ << QPen(Qt::black);
+ QTest::newRow("cubic 3") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(QColor(Qt::blue))
+ << QPen(Qt::NoPen);
+ QTest::newRow("cubic 4") << QSize(100, 100) << path
+ << QRect(15, 15, 51, 51)
+ << QBrush(gradient)
+ << pen2;
+}
+
+void tst_QPainter::clippedFillPath()
+{
+ QFETCH(QSize, imageSize);
+ QFETCH(QPainterPath, path);
+ QFETCH(QRect, clipRect);
+ QPainterPath clipPath;
+ clipPath.addRect(clipRect);
+ QFETCH(QBrush, brush);
+ QFETCH(QPen, pen);
+
+ const int width = imageSize.width();
+ const int height = imageSize.height();
+
+ QImage clippedRect(width, height, QImage::Format_ARGB32_Premultiplied);
+ clippedRect.fill(0x12345678);
+ {
+ QPainter painter(&clippedRect);
+ painter.setPen(pen);
+ painter.setBrush(brush);
+ painter.setClipRect(clipRect);
+ painter.drawPath(path);
+ }
+
+ QImage clippedPath(width, height, QImage::Format_ARGB32_Premultiplied);
+ clippedPath.fill(0x12345678);
+ {
+ QPainter painter(&clippedPath);
+ painter.setPen(pen);
+ painter.setBrush(brush);
+ painter.setClipPath(clipPath);
+ painter.drawPath(path);
+ }
+
+#if 0
+ if (clippedRect != clippedPath) {
+ clippedRect.save(QString("clippedRect.png"), "PNG");
+ clippedPath.save(QString("clippedPath.png"), "PNG");
+ }
+#endif
+ QCOMPARE(clippedRect, clippedPath);
+
+ // repeat with antialiasing
+
+ clippedRect.fill(0x12345678);
+ {
+ QPainter painter(&clippedRect);
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.setPen(pen);
+ painter.setBrush(brush);
+ painter.setClipRect(clipRect);
+ painter.drawPath(path);
+ }
+
+ clippedPath.fill(0x12345678);
+ {
+ QPainter painter(&clippedPath);
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.setPen(pen);
+ painter.setBrush(brush);
+ painter.setClipPath(clipPath);
+ painter.drawPath(path);
+ }
+
+#if 1
+ if (clippedRect != clippedPath) {
+ clippedRect.save(QString("clippedRect.png"), "PNG");
+ clippedPath.save(QString("clippedPath.png"), "PNG");
+ }
+#endif
+ QCOMPARE(clippedRect, clippedPath);
+
+}
+
+void tst_QPainter::clippedLines_data()
+{
+ QTest::addColumn<QSize>("imageSize");
+ QTest::addColumn<QLineF>("line");
+ QTest::addColumn<QRect>("clipRect");
+ QTest::addColumn<QPen>("pen");
+
+ QPen pen2(QColor(223, 223, 0, 223));
+ pen2.setWidth(2);
+
+ QVector<QLineF> lines;
+ lines << QLineF(15, 15, 65, 65)
+ << QLineF(14, 14, 66, 66)
+ << QLineF(16, 16, 64, 64)
+ << QLineF(65, 65, 15, 15)
+ << QLineF(66, 66, 14, 14)
+ << QLineF(64, 64, 14, 14)
+ << QLineF(15, 50, 15, 64)
+ << QLineF(15, 50, 15, 65)
+ << QLineF(15, 50, 15, 66)
+ << QLineF(15, 50, 64, 50)
+ << QLineF(15, 50, 65, 50)
+ << QLineF(15, 50, 66, 50);
+
+ foreach (QLineF line, lines) {
+ QString desc = QString("line (%1, %2, %3, %4) %5").arg(line.x1())
+ .arg(line.y1()).arg(line.x2()).arg(line.y2());
+ QTest::newRow(qPrintable(desc.arg(0))) << QSize(100, 100) << line
+ << QRect(15, 15, 49, 49)
+ << QPen(Qt::black);
+ QTest::newRow(qPrintable(desc.arg(1))) << QSize(100, 100) << line
+ << QRect(15, 15, 50, 50)
+ << QPen(Qt::black);
+ QTest::newRow(qPrintable(desc.arg(2))) << QSize(100, 100) << line
+ << QRect(15, 15, 51, 51)
+ << QPen(Qt::black);
+ QTest::newRow(qPrintable(desc.arg(3))) << QSize(100, 100) << line
+ << QRect(15, 15, 51, 51)
+ << QPen(Qt::NoPen);
+ QTest::newRow(qPrintable(desc.arg(4))) << QSize(100, 100) << line
+ << QRect(15, 15, 51, 51)
+ << pen2;
+ }
+}
+
+void tst_QPainter::clippedLines()
+{
+ QFETCH(QSize, imageSize);
+ QFETCH(QLineF, line);
+ QFETCH(QRect, clipRect);
+ QPainterPath clipPath;
+ clipPath.addRect(clipRect);
+ QFETCH(QPen, pen);
+
+ const int width = imageSize.width();
+ const int height = imageSize.height();
+
+ QImage clippedRect(width, height, QImage::Format_ARGB32_Premultiplied);
+ clippedRect.fill(0x12345678);
+ {
+ QPainter painter(&clippedRect);
+ painter.setPen(pen);
+ painter.setClipRect(clipRect);
+ painter.drawLine(line);
+ painter.drawLine(line.toLine());
+ }
+
+ QImage clippedPath(width, height, QImage::Format_ARGB32_Premultiplied);
+ clippedPath.fill(0x12345678);
+ {
+ QPainter painter(&clippedPath);
+ painter.setPen(pen);
+ painter.setClipPath(clipPath);
+ painter.drawLine(line);
+ painter.drawLine(line.toLine());
+ }
+
+#if 0
+ if (clippedRect != clippedPath) {
+ clippedRect.save(QString("clippedRect.png"), "PNG");
+ clippedPath.save(QString("clippedPath.png"), "PNG");
+ }
+#endif
+ QCOMPARE(clippedRect, clippedPath);
+
+ // repeat with antialiasing
+ clippedRect.fill(0x12345678);
+ {
+ QPainter painter(&clippedRect);
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.setPen(pen);
+ painter.setClipRect(clipRect);
+ painter.drawLine(line);
+ painter.drawLine(line.toLine());
+ }
+
+ clippedPath.fill(0x12345678);
+ {
+ QPainter painter(&clippedPath);
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.setPen(pen);
+ painter.setClipPath(clipPath);
+ painter.drawLine(line);
+ painter.drawLine(line.toLine());
+ }
+
+#if 0
+ if (clippedRect != clippedPath) {
+ clippedRect.save(QString("clippedRect.png"), "PNG");
+ clippedPath.save(QString("clippedPath.png"), "PNG");
+ }
+#endif
+ QCOMPARE(clippedRect, clippedPath);
+}
+
+void tst_QPainter::clippedPolygon_data()
+{
+ clippedFillPath_data();
+};
+
+void tst_QPainter::clippedPolygon()
+{
+ QFETCH(QSize, imageSize);
+ QFETCH(QPainterPath, path);
+ QPolygonF polygon = path.toFillPolygon();
+ QFETCH(QRect, clipRect);
+ QPainterPath clipPath;
+ clipPath.addRect(clipRect);
+ QFETCH(QPen, pen);
+ QFETCH(QBrush, brush);
+
+ const int width = imageSize.width();
+ const int height = imageSize.height();
+
+ QImage clippedRect(width, height, QImage::Format_ARGB32_Premultiplied);
+ clippedRect.fill(0x12345678);
+ {
+ QPainter painter(&clippedRect);
+ painter.setPen(pen);
+ painter.setBrush(brush);
+ painter.setClipRect(clipRect);
+ painter.drawPolygon(polygon);
+ painter.drawPolygon(polygon.toPolygon());
+ }
+
+ QImage clippedPath(width, height, QImage::Format_ARGB32_Premultiplied);
+ clippedPath.fill(0x12345678);
+ {
+ QPainter painter(&clippedPath);
+ painter.setPen(pen);
+ painter.setBrush(brush);
+ painter.setClipRect(clipRect);
+ painter.drawPolygon(polygon);
+ painter.drawPolygon(polygon.toPolygon());
+ }
+
+#if 0
+ if (clippedRect != clippedPath) {
+ clippedRect.save(QString("clippedRect.png"), "PNG");
+ clippedPath.save(QString("clippedPath.png"), "PNG");
+ }
+#endif
+ QCOMPARE(clippedRect, clippedPath);
+
+ // repeat with antialiasing
+
+ clippedRect.fill(0x12345678);
+ {
+ QPainter painter(&clippedRect);
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.setPen(pen);
+ painter.setBrush(brush);
+ painter.setClipRect(clipRect);
+ painter.drawPolygon(polygon);
+ painter.drawPolygon(polygon.toPolygon());
+ }
+
+ clippedPath.fill(0x12345678);
+ {
+ QPainter painter(&clippedPath);
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.setPen(pen);
+ painter.setBrush(brush);
+ painter.setClipRect(clipRect);
+ painter.drawPolygon(polygon);
+ painter.drawPolygon(polygon.toPolygon());
+ }
+
+#if 0
+ if (clippedRect != clippedPath) {
+ clippedRect.save(QString("clippedRect.png"), "PNG");
+ clippedPath.save(QString("clippedPath.png"), "PNG");
+ }
+#endif
+ QCOMPARE(clippedRect, clippedPath);
+}
+
+// this just draws some text that should be clipped in the raster
+// paint engine.
+void tst_QPainter::clippedText()
+{
+ for (char ch = 'A'; ch < 'Z'; ++ch) {
+ //qDebug() << ch;
+ QFont f;
+ f.setPixelSize(24);
+ QFontMetrics metrics(f);
+ QRect textRect = metrics.boundingRect(QChar(ch));
+
+ if (textRect.width() <= 8)
+ continue;
+ if (textRect.height() <= 8)
+ continue;
+
+ QRect imageRect = textRect.adjusted(4, 4, -4, -4);
+
+ QImage image(imageRect.size(), QImage::Format_ARGB32_Premultiplied);
+
+ image.fill(qRgba(255, 255, 255, 255));
+ {
+ QPainter painter(&image);
+ painter.setFont(f);
+ painter.setPen(Qt::black);
+
+ painter.drawText(0, 0, QChar(ch));
+ }
+
+ image.fill(qRgba(255, 255, 255, 255));
+ {
+ QPainter painter(&image);
+ painter.setFont(f);
+ painter.setPen(Qt::black);
+
+ painter.drawText(-imageRect.topLeft(), QChar(ch));
+ }
+
+ bool foundPixel = false;
+ for (int x = 0; x < image.width(); ++x)
+ for (int y = 0; y < image.height(); ++y)
+ if (image.pixel(x, y) != 0)
+ foundPixel = true;
+ // can't QVERIFY(foundPixel) as sometimes all pixels are clipped
+ // away. For example for 'O'
+ // just call /some/ function to prevent the compiler from optimizing
+ // foundPixel away
+ QString::number(foundPixel);
+
+ //image.save(QString("debug") + ch + ".xpm");
+ }
+
+ QVERIFY(true); // reached, don't trigger any valgrind errors
+}
+
+void tst_QPainter::setOpacity_data()
+{
+ QTest::addColumn<QImage::Format>("destFormat");
+ QTest::addColumn<QImage::Format>("srcFormat");
+
+ QTest::newRow("ARGB32P on ARGB32P") << QImage::Format_ARGB32_Premultiplied
+ << QImage::Format_ARGB32_Premultiplied;
+
+ QTest::newRow("ARGB32 on ARGB32") << QImage::Format_ARGB32
+ << QImage::Format_ARGB32;
+
+ QTest::newRow("RGB32 on RGB32") << QImage::Format_RGB32
+ << QImage::Format_RGB32;
+
+ QTest::newRow("RGB16 on RGB16") << QImage::Format_RGB16
+ << QImage::Format_RGB16;
+
+ QTest::newRow("ARGB8565_Premultiplied on ARGB8565_Premultiplied") << QImage::Format_ARGB8565_Premultiplied
+ << QImage::Format_ARGB8565_Premultiplied;
+
+ QTest::newRow("RGB555 on RGB555") << QImage::Format_RGB555
+ << QImage::Format_RGB555;
+
+ QTest::newRow("RGB666 on RGB666") << QImage::Format_RGB666
+ << QImage::Format_RGB666;
+
+ QTest::newRow("ARGB8555_Premultiplied on ARGB8555_Premultiplied") << QImage::Format_ARGB8555_Premultiplied
+ << QImage::Format_ARGB8555_Premultiplied;
+
+ QTest::newRow("RGB888 on RGB888") << QImage::Format_RGB888
+ << QImage::Format_RGB888;
+
+ QTest::newRow("RGB32 on RGB16") << QImage::Format_RGB16
+ << QImage::Format_RGB32;
+
+ QTest::newRow("RGB32 on ARGB8565_Premultiplied") << QImage::Format_ARGB8565_Premultiplied
+ << QImage::Format_RGB32;
+
+ QTest::newRow("RGB32 on RGB666") << QImage::Format_RGB666
+ << QImage::Format_RGB32;
+
+ QTest::newRow("RGB32 on RGB555") << QImage::Format_RGB555
+ << QImage::Format_RGB32;
+
+ QTest::newRow("RGB32 on ARGB8555_Premultiplied") << QImage::Format_ARGB8555_Premultiplied
+ << QImage::Format_RGB32;
+
+ QTest::newRow("RGB32 on RGB888") << QImage::Format_RGB888
+ << QImage::Format_RGB32;
+
+ QTest::newRow("RGB16 on RGB32") << QImage::Format_RGB32
+ << QImage::Format_RGB16;
+
+ QTest::newRow("ARGB8565_Premultiplied on RGB32") << QImage::Format_RGB32
+ << QImage::Format_ARGB8565_Premultiplied;
+
+ QTest::newRow("RGB666 on RGB32") << QImage::Format_RGB32
+ << QImage::Format_RGB666;
+
+ QTest::newRow("RGB555 on RGB32") << QImage::Format_RGB32
+ << QImage::Format_RGB555;
+
+ QTest::newRow("ARGB8555_Premultiplied on RGB32") << QImage::Format_RGB32
+ << QImage::Format_ARGB8555_Premultiplied;
+
+ QTest::newRow("RGB888 on RGB32") << QImage::Format_RGB32
+ << QImage::Format_RGB888;
+
+ QTest::newRow("RGB555 on RGB888") << QImage::Format_RGB888
+ << QImage::Format_RGB555;
+
+ QTest::newRow("RGB666 on RGB888") << QImage::Format_RGB888
+ << QImage::Format_RGB666;
+
+ QTest::newRow("RGB444 on RGB444") << QImage::Format_RGB444
+ << QImage::Format_RGB444;
+}
+
+void tst_QPainter::setOpacity()
+{
+ QFETCH(QImage::Format, destFormat);
+ QFETCH(QImage::Format, srcFormat);
+
+ const QSize imageSize(12, 12);
+ const QRect imageRect(QPoint(0, 0), imageSize);
+ QColor destColor = Qt::black;
+ QColor srcColor = Qt::white;
+
+ QImage dest(imageSize, destFormat);
+ QImage src(imageSize, srcFormat);
+
+ QPainter p;
+ p.begin(&dest);
+ p.fillRect(imageRect, destColor);
+ p.end();
+
+ p.begin(&src);
+ p.fillRect(imageRect, srcColor);
+ p.end();
+
+ p.begin(&dest);
+ p.setOpacity(0.5);
+ p.drawImage(imageRect, src, imageRect);
+ p.end();
+
+ QImage actual = dest.convertToFormat(QImage::Format_RGB32);
+
+ for (int y = 0; y < actual.height(); ++y) {
+ QRgb *p = (QRgb *)actual.scanLine(y);
+ for (int x = 0; x < actual.width(); ++x) {
+ QVERIFY(qAbs(qRed(p[x]) - 127) <= 0xf);
+ QVERIFY(qAbs(qGreen(p[x]) - 127) <= 0xf);
+ QVERIFY(qAbs(qBlue(p[x]) - 127) <= 0xf);
+ }
+ }
+}
+
+void tst_QPainter::drawhelper_blend_untransformed_data()
+{
+ setOpacity_data();
+}
+
+void tst_QPainter::drawhelper_blend_untransformed()
+{
+ QFETCH(QImage::Format, destFormat);
+ QFETCH(QImage::Format, srcFormat);
+
+ const int size = 128;
+ const QSize imageSize(size, size);
+ const QRect paintRect(1, 0, size - 2, size); // needs alignment and tailing
+
+ QColor destColor(127, 127, 127);
+ QColor srcColor(Qt::white);
+
+ QImage dest(imageSize, destFormat);
+ QImage src(imageSize, srcFormat);
+
+ QPainter p;
+ p.begin(&src);
+ p.fillRect(paintRect, srcColor);
+ p.end();
+
+ QList<qreal> opacities = (QList<qreal>() << 0.0 << 0.1 << 0.01 << 0.4
+ << 0.5 << 0.6 << 0.9 << 1.0);
+ foreach (qreal opacity, opacities) {
+ p.begin(&dest);
+ p.fillRect(paintRect, destColor);
+
+ p.setOpacity(opacity);
+ p.drawImage(paintRect, src, paintRect);
+ p.end();
+
+ // sanity check: make sure all pixels are equal
+ QImage expected(size - 2, size, destFormat);
+ p.begin(&expected);
+ p.fillRect(0, 0, expected.width(), expected.height(),
+ QColor(dest.pixel(1, 0)));
+ p.end();
+
+ const QImage subDest(dest.bits() + dest.depth() / 8,
+ dest.width() - 2, dest.height(),
+ dest.bytesPerLine(), dest.format());
+
+ if (dest.format() == QImage::Format_ARGB8565_Premultiplied ||
+ dest.format() == QImage::Format_ARGB8555_Premultiplied) {
+ // Test skipped due to rounding errors...
+ continue;
+ }
+#if 0
+ if (subDest != expected) {
+ qDebug() << "size" << size << "opacity" << opacity;
+ for (int j = 0; j < expected.height(); ++j) {
+ for (int i = 0; i < expected.width(); ++i) {
+ if (expected.pixel(i,j) != subDest.pixel(i,j))
+ qDebug() << i << j << hex << expected.pixel(i, j)
+ << subDest.pixel(i, j);
+ }
+ }
+ }
+#endif
+ QCOMPARE(subDest, expected);
+ }
+}
+
+void tst_QPainter::drawhelper_blend_tiled_untransformed_data()
+{
+ setOpacity_data();
+}
+
+void tst_QPainter::drawhelper_blend_tiled_untransformed()
+{
+ QFETCH(QImage::Format, destFormat);
+ QFETCH(QImage::Format, srcFormat);
+
+ const int size = 128;
+ const QSize imageSize(size, size);
+ const QRect paintRect(1, 0, size - 2, size); // needs alignment and tailing
+
+ QColor destColor(127, 127, 127);
+ QColor srcColor(Qt::white);
+
+ QImage dest(imageSize, destFormat);
+ QImage src(imageSize / 2, srcFormat);
+
+ QPainter p;
+ p.begin(&src);
+ p.fillRect(QRect(QPoint(0, 0), imageSize/ 2), srcColor);
+ p.end();
+
+ const QBrush brush(src);
+
+ QList<qreal> opacities = (QList<qreal>() << 0.0 << 0.1 << 0.01 << 0.4
+ << 0.5 << 0.6 << 0.9 << 1.0);
+ foreach (qreal opacity, opacities) {
+ p.begin(&dest);
+ p.fillRect(paintRect, destColor);
+
+ p.setOpacity(opacity);
+ p.fillRect(paintRect, brush);
+ p.end();
+
+ // sanity check: make sure all pixels are equal
+ QImage expected(size - 2, size, destFormat);
+ p.begin(&expected);
+ p.fillRect(0, 0, expected.width(), expected.height(),
+ QColor(dest.pixel(1, 0)));
+ p.end();
+
+ const QImage subDest(dest.bits() + dest.depth() / 8,
+ dest.width() - 2, dest.height(),
+ dest.bytesPerLine(), dest.format());
+
+ if (dest.format() == QImage::Format_ARGB8565_Premultiplied ||
+ dest.format() == QImage::Format_ARGB8555_Premultiplied) {
+ // Skipping test due to rounding errors. Test needs rewrite
+ continue;
+ }
+#if 0
+ if (subDest != expected) {
+ qDebug() << "size" << size << "opacity" << opacity;
+ for (int j = 0; j < expected.height(); ++j) {
+ for (int i = 0; i < expected.width(); ++i) {
+ if (expected.pixel(i,j) != subDest.pixel(i,j))
+ qDebug() << i << j << hex << expected.pixel(i, j)
+ << subDest.pixel(i, j);
+ }
+ }
+ }
+#endif
+ QCOMPARE(subDest, expected);
+ }
+}
+
+static QPaintEngine::PaintEngineFeatures no_porter_duff()
+{
+ QPaintEngine::PaintEngineFeatures features = QPaintEngine::AllFeatures;
+ return features & ~QPaintEngine::PorterDuff;
+}
+
+class DummyPaintEngine : public QPaintEngine, public QPaintDevice
+{
+public:
+ DummyPaintEngine() : QPaintEngine(no_porter_duff()) {}
+ virtual bool begin(QPaintDevice *) { return true; }
+ virtual bool end() { return true; }
+
+ virtual void updateState(const QPaintEngineState &) {}
+ virtual void drawPixmap(const QRectF &, const QPixmap &, const QRectF &) {}
+
+ virtual Type type() const { return User; }
+
+ virtual QPaintEngine *paintEngine() const { return (QPaintEngine *)this; }
+
+ virtual int metric(PaintDeviceMetric metric) const { Q_UNUSED(metric); return 0; };
+};
+
+static bool success;
+
+void porterDuff_warningChecker(QtMsgType type, const char *msg)
+{
+ if (type == QtWarningMsg && msg == QLatin1String("QPainter::setCompositionMode: PorterDuff modes not supported on device"))
+ success = false;
+}
+
+void tst_QPainter::porterDuff_warning()
+{
+ QtMsgHandler old = qInstallMsgHandler(porterDuff_warningChecker);
+ DummyPaintEngine dummy;
+ QPainter p(&dummy);
+
+ success = true;
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ QVERIFY(success);
+
+ success = true;
+ p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+ QVERIFY(success);
+
+ success = true;
+ p.setCompositionMode(QPainter::CompositionMode_DestinationOver);
+ QVERIFY(!success);
+
+ QVERIFY(qInstallMsgHandler(old) == porterDuff_warningChecker);
+}
+
+class quint24
+{
+public:
+ inline quint24(quint32 v)
+ {
+ data[0] = qBlue(v);
+ data[1] = qGreen(v);
+ data[2] = qRed(v);
+ }
+
+ inline operator quint32 ()
+ {
+ return qRgb(data[2], data[1], data[0]);
+ }
+
+ inline bool operator==(const quint24 &v) const {
+ return (data[0] == v.data[0] && data[1] == v.data[1] && data[2] == v.data[2]);
+ }
+
+ uchar data[3];
+} Q_PACKED;
+
+void tst_QPainter::drawhelper_blend_color()
+{
+ QImage dest(32, 32, QImage::Format_ARGB8555_Premultiplied);
+ dest.fill(0xff000000);
+
+ {
+ QPainter p(&dest);
+ p.fillRect(0, 0, dest.width(), dest.height(), QColor(255, 0, 0, 127));
+ }
+
+ QImage expected(32, 32, QImage::Format_ARGB8555_Premultiplied);
+ expected.fill(0xff3c007f);
+
+ QCOMPARE(dest.pixel(1, 1), expected.pixel(1, 1));
+ QCOMPARE(dest, expected);
+}
+
+class ViewportTestWidget : public QWidget
+{
+public:
+ ViewportTestWidget(QWidget *parent = 0) : QWidget(parent), hasPainted(false) {}
+ QSize sizeHint() const {
+ return QSize(100, 100);
+ }
+
+ QRect viewport;
+ bool hasPainted;
+
+protected:
+ void paintEvent(QPaintEvent *) {
+ hasPainted = true;
+ QPainter p(this);
+ viewport = p.viewport();
+ }
+};
+
+void tst_QPainter::childWidgetViewport()
+{
+ QWidget parent;
+ parent.setAutoFillBackground(true);
+ parent.resize(200, 200);
+ ViewportTestWidget child(&parent);
+ child.setAutoFillBackground(true);
+ parent.show();
+ parent.update();
+ qApp->processEvents();
+
+ if (child.hasPainted) {
+ QCOMPARE(child.viewport, QRect(QPoint(0, 0), child.sizeHint()));
+ } else {
+ qWarning("Failed to ensure that paintEvent has been run. Could not run test.");
+ }
+}
+
+void tst_QPainter::fillRect_objectBoundingModeGradient()
+{
+ QImage a(10, 10, QImage::Format_ARGB32_Premultiplied);
+ a.fill(0x0);
+ QImage b = a;
+
+ QLinearGradient g(QPoint(0, 0), QPoint(0, 1));
+ g.setColorAt(0, Qt::red);
+ g.setColorAt(1, Qt::blue);
+ g.setCoordinateMode(QGradient::ObjectBoundingMode);
+
+ QPainter p(&a);
+ p.fillRect(QRect(0, 0, a.width(), a.height()), g);
+ p.end();
+
+ QPainterPath path;
+ path.addRect(0, 0, a.width(), a.height());
+
+ p.begin(&b);
+ p.fillPath(path, g);
+ p.end();
+
+ QCOMPARE(a, b);
+}
+
+void tst_QPainter::fillRect_stretchToDeviceMode()
+{
+ QImage img(64, 64, QImage::Format_ARGB32_Premultiplied);
+
+ QLinearGradient g(QPoint(0, 0), QPoint(0, 1));
+ g.setCoordinateMode(QGradient::StretchToDeviceMode);
+
+ QPainter p(&img);
+ p.fillRect(img.rect(), g);
+ p.end();
+
+ for (int i = 1; i < img.height(); ++i)
+ QVERIFY(img.pixel(0, i) != img.pixel(0, i-1));
+}
+
+void tst_QPainter::monoImages()
+{
+ Qt::GlobalColor colorPairs[][2] = {
+ { Qt::white, Qt::black },
+ { Qt::color0, Qt::color1 },
+ { Qt::red, Qt::blue }
+ };
+
+ const int numColorPairs = sizeof(colorPairs) / sizeof(QRgb[2]);
+
+ QImage transparent(2, 2, QImage::Format_ARGB32_Premultiplied);
+ transparent.fill(0x0);
+
+ for (int i = 1; i < QImage::NImageFormats; ++i) {
+ for (int j = 0; j < numColorPairs; ++j) {
+ const QImage::Format format = QImage::Format(i);
+ if (format == QImage::Format_Indexed8)
+ continue;
+
+ QImage img(2, 2, format);
+
+ if (img.colorCount() > 0) {
+ img.setColor(0, QColor(colorPairs[j][0]).rgba());
+ img.setColor(1, QColor(colorPairs[j][1]).rgba());
+ }
+
+ img.fill(0x0);
+ QPainter p(&img);
+ p.fillRect(0, 0, 2, 2, colorPairs[j][0]);
+ p.fillRect(0, 0, 1, 1, colorPairs[j][1]);
+ p.fillRect(1, 1, 1, 1, colorPairs[j][1]);
+ p.end();
+
+ QImage original = img;
+
+ p.begin(&img);
+ p.drawImage(0, 0, transparent);
+ p.end();
+
+ // drawing a transparent image on top of another image
+ // should not change the image
+ QCOMPARE(original, img);
+
+ if (img.colorCount() == 0)
+ continue;
+
+ for (int k = 0; k < 2; ++k) {
+ QPainter p(&img);
+ p.fillRect(0, 0, 2, 2, colorPairs[j][k]);
+ p.end();
+
+ QImage argb32p(2, 2, QImage::Format_ARGB32_Premultiplied);
+ p.begin(&argb32p);
+ p.fillRect(0, 0, 2, 2, colorPairs[j][k]);
+ p.end();
+
+ QCOMPARE(argb32p, img.convertToFormat(argb32p.format()));
+
+ // drawing argb32p image on mono image
+ p.begin(&img);
+ p.drawImage(0, 0, argb32p);
+ p.end();
+
+ QCOMPARE(argb32p, img.convertToFormat(argb32p.format()));
+
+ // drawing mono image on argb32p image
+ p.begin(&argb32p);
+ p.drawImage(0, 0, img);
+ p.end();
+
+ QCOMPARE(argb32p, img.convertToFormat(argb32p.format()));
+ }
+ }
+ }
+}
+
+#if !defined(Q_OS_IRIX) && !defined(Q_OS_AIX) && !defined(Q_CC_MSVC) && !defined(Q_OS_SOLARIS) && !defined(Q_OS_SYMBIAN)
+#include <fenv.h>
+
+static const QString fpeExceptionString(int exception)
+{
+#ifdef FE_INEXACT
+ if (exception & FE_INEXACT)
+ return QLatin1String("Inexact result");
+#endif
+ if (exception & FE_UNDERFLOW)
+ return QLatin1String("Underflow");
+ if (exception & FE_OVERFLOW)
+ return QLatin1String("Overflow");
+ if (exception & FE_DIVBYZERO)
+ return QLatin1String("Divide by zero");
+ if (exception & FE_INVALID)
+ return QLatin1String("Invalid operation");
+ return QLatin1String("No exception");
+}
+
+class FpExceptionChecker
+{
+public:
+ FpExceptionChecker(int exceptionMask)
+ : m_exceptionMask(exceptionMask)
+ {
+ feclearexcept(m_exceptionMask);
+ }
+
+ ~FpExceptionChecker()
+ {
+ const int exceptions = fetestexcept(m_exceptionMask);
+ QVERIFY2(!exceptions, qPrintable(QLatin1String("Floating point exception: ") + fpeExceptionString(exceptions)));
+ }
+
+private:
+ int m_exceptionMask;
+};
+
+void fpe_rasterizeLine_task232012()
+{
+ FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
+ QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0x0);
+ QPainter p(&img);
+
+ p.setBrush(Qt::black);
+ p.drawRect(QRectF(0, 0, 5, 0));
+ p.drawRect(QRectF(0, 0, 0, 5));
+}
+
+void fpe_pixmapTransform()
+{
+ FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
+
+ QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
+
+ QPainter p(&img);
+
+ const qreal scaleFactor = 0.001;
+ const int translateDistance = 1000000;
+
+ p.setPen(Qt::red);
+ p.setBrush(QBrush(Qt::red,Qt::Dense6Pattern));
+
+ for (int i = 0; i < 2; ++i) {
+ p.setRenderHint(QPainter::SmoothPixmapTransform, i);
+
+ p.resetTransform();
+ p.scale(1.1, 1.1);
+ p.translate(translateDistance, 0);
+ p.drawRect(-translateDistance, 0, 100, 100);
+
+ p.resetTransform();
+ p.scale(scaleFactor, scaleFactor);
+ p.drawRect(QRectF(0, 0, 1 / scaleFactor, 1 / scaleFactor));
+ }
+}
+
+void fpe_zeroLengthLines()
+{
+ FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
+
+ QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
+
+ QPainter p(&img);
+
+ p.setPen(QPen(Qt::black, 3));
+ p.drawLine(64, 64, 64, 64);
+}
+
+void fpe_divByZero()
+{
+ FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
+
+ QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
+
+ QPainter p(&img);
+
+ p.setRenderHint(QPainter::Antialiasing);
+
+ p.drawRect(QRectF(10, 10, 100, 0));
+ p.drawRect(QRectF(10, 10, 0, 100));
+
+ p.drawRect(QRect(10, 10, 100, 0));
+ p.drawRect(QRect(10, 10, 0, 100));
+
+ p.fillRect(QRectF(10, 10, 100, 0), Qt::black);
+ p.fillRect(QRectF(10, 10, 0, 100), Qt::black);
+
+ p.fillRect(QRect(10, 10, 100, 0), Qt::black);
+ p.fillRect(QRect(10, 10, 0, 100), Qt::black);
+}
+
+void fpe_steepSlopes()
+{
+ FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
+
+ QImage img(1024, 1024, QImage::Format_ARGB32_Premultiplied);
+
+ QFETCH(QTransform, transform);
+ QFETCH(QLineF, line);
+ QFETCH(bool, antialiased);
+
+ QPainter p(&img);
+
+ p.setPen(QPen(Qt::black, 1));
+ p.setRenderHint(QPainter::Antialiasing, antialiased);
+ p.setTransform(transform);
+
+ p.drawLine(line);
+}
+
+void fpe_radialGradients()
+{
+ FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
+
+ QImage img(21, 21, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0);
+
+ double m = img.width() * 0.5;
+
+ QPainter p(&img);
+ p.setRenderHints(QPainter::Antialiasing);
+ p.setPen(Qt::NoPen);
+ p.setBrush(QRadialGradient(m, m, m));
+ p.drawEllipse(img.rect());
+}
+
+#define FPE_TEST(x) \
+void tst_QPainter::x() \
+{ \
+ ::x(); \
+}
+#else
+#define FPE_TEST(x) \
+void tst_QPainter::x() \
+{ \
+ QSKIP("Floating point exception checking (fenv.h) not available", SkipAll); \
+}
+#endif
+
+FPE_TEST(fpe_rasterizeLine_task232012)
+FPE_TEST(fpe_pixmapTransform)
+FPE_TEST(fpe_zeroLengthLines)
+FPE_TEST(fpe_divByZero)
+FPE_TEST(fpe_steepSlopes)
+FPE_TEST(fpe_radialGradients)
+
+void tst_QPainter::fpe_steepSlopes_data()
+{
+ QTest::addColumn<QTransform>("transform");
+ QTest::addColumn<QLineF>("line");
+ QTest::addColumn<bool>("antialiased");
+
+ {
+ const qreal dsin = 0.000014946676875461832484392500630665523431162000633776187896728515625;
+ const qreal dcos = 0.9999999998882984630910186751862056553363800048828125;
+
+ const QTransform transform = QTransform(QMatrix(dcos, dsin, -dsin, dcos, 64, 64));
+ const QLineF line(2, 2, 2, 6);
+
+ QTest::newRow("task 207147 aa") << transform << line << true;
+ QTest::newRow("task 207147 no aa") << transform << line << false;
+ }
+
+ {
+ QTransform transform;
+ transform.rotate(0.0000001);
+ const QLineF line(5, 5, 10, 5);
+
+ QTest::newRow("task 166702 aa") << transform << line << true;
+ QTest::newRow("task 166702 no aa") << transform << line << false;
+ }
+
+ {
+ const QTransform transform;
+ const QLineF line(2.5, 2.5, 2.5 + 1/256., 60000.5);
+
+ QTest::newRow("steep line aa") << transform << line << true;
+ QTest::newRow("steep line no aa") << transform << line << false;
+ }
+
+ {
+ const QTransform transform;
+ const QLineF line(2.5, 2.5, 2.5 + 1/256., 1024);
+
+ QTest::newRow("steep line 2 aa") << transform << line << true;
+ QTest::newRow("steep line 2 no aa") << transform << line << false;
+ }
+
+ {
+ const QTransform transform;
+ const QLineF line(2.5, 2.5, 2.5 + 1/64., 1024);
+
+ QTest::newRow("steep line 3 aa") << transform << line << true;
+ QTest::newRow("steep line 3 no aa") << transform << line << false;
+ }
+}
+
+qreal randf()
+{
+ return rand() / (RAND_MAX + 1.0);
+}
+
+QPointF randInRect(const QRectF &rect)
+{
+ const qreal x = rect.left() + rect.width() * randf();
+ const qreal y = rect.top() + rect.height() * randf();
+
+ return QPointF(x, y);
+}
+
+void tst_QPainter::rasterizer_asserts()
+{
+ QImage img(64, 64, QImage::Format_ARGB32_Premultiplied);
+
+ QRectF middle(QPointF(0, 0), img.size());
+ QRectF left = middle.translated(-middle.width(), 0);
+ QRectF right = middle.translated(middle.width(), 0);
+
+ QPainter p(&img);
+ img.fill(Qt::white);
+ p.setCompositionMode(QPainter::CompositionMode_Destination);
+ for (int i = 0; i < 100000; ++i) {
+ QPainterPath path;
+ path.moveTo(randInRect(middle));
+ path.lineTo(randInRect(left));
+ path.lineTo(randInRect(right));
+
+ p.fillPath(path, Qt::black);
+ }
+}
+
+void tst_QPainter::rasterizer_negativeCoords()
+{
+ QImage img(64, 64, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0x0);
+
+ QImage original = img;
+
+ QPainter p(&img);
+ p.rotate(90);
+ p.fillRect(0, 0, 70, 50, Qt::black);
+
+ // image should not have changed
+ QCOMPARE(img.pixel(0, 0), 0x0U);
+ QCOMPARE(img, original);
+}
+
+void tst_QPainter::blendOverFlow_data()
+{
+ QTest::addColumn<QImage::Format>("format");
+ QTest::addColumn<int>("width");
+ QTest::addColumn<int>("height");
+
+ QImage::Format format = QImage::Format_ARGB8555_Premultiplied;
+ QTest::newRow("555,1,1") << format << 1 << 1;
+ QTest::newRow("555,2,2") << format << 2 << 2;
+ QTest::newRow("555,10,10") << format << 10 << 10;
+
+ format = QImage::Format_ARGB8565_Premultiplied;
+ QTest::newRow("565,1,1") << format << 1 << 1;
+ QTest::newRow("565,2,2") << format << 2 << 2;
+ QTest::newRow("565,10,10") << format << 10 << 10;
+}
+
+void tst_QPainter::blendOverFlow()
+{
+ QFETCH(QImage::Format, format);
+ QFETCH(int, width);
+ QFETCH(int, height);
+
+ QImage dest(width, height, format);
+ QImage src(width, height, format);
+
+ {
+ QPainter p(&dest);
+ p.fillRect(0, 0, width, height, Qt::green);
+ }
+ QImage expected = dest;
+
+ {
+ QPainter p(&src);
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ p.fillRect(0, 0, width, height, QColor(0, 255, 0, 6));
+ }
+
+ {
+ QPainter p(&dest);
+ p.drawImage(0, 0, src);
+ }
+
+ QCOMPARE(dest.pixel(0, 0), expected.pixel(0, 0));
+ QCOMPARE(dest, expected);
+}
+
+void tst_QPainter::largeImagePainting_data()
+{
+ QTest::addColumn<int>("width");
+ QTest::addColumn<int>("height");
+ QTest::addColumn<bool>("antialiased");
+
+ QTest::newRow("tall") << 1 << 32767 << false;
+ QTest::newRow("tall aa") << 1 << 32767 << true;
+ QTest::newRow("wide") << 32767 << 1 << false;
+ QTest::newRow("wide aa") << 32767 << 1 << true;
+}
+
+void tst_QPainter::largeImagePainting()
+{
+ QPainterPath path;
+ path.addRect(0, 0, 1, 1);
+ path.addRect(2, 0, 1, 1);
+ path.addRect(0, 2, 1, 1);
+
+ QFETCH(int, width);
+ QFETCH(int, height);
+ QFETCH(bool, antialiased);
+
+ QImage img(width, height, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0x0);
+
+ QPainter p(&img);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::white);
+
+ p.setRenderHint(QPainter::Antialiasing, antialiased);
+
+ for (int i = 0; i < img.width(); i += 4) {
+ p.drawPath(path);
+ p.translate(4, 0);
+ }
+
+ p.resetMatrix();
+
+ for (int i = 4; i < img.height(); i += 4) {
+ p.translate(0, 4);
+ p.drawPath(path);
+ }
+
+ for (int i = 0; i < img.width(); ++i) {
+ if (i % 2)
+ QCOMPARE(img.pixel(i, 0), 0x0U);
+ else
+ QCOMPARE(img.pixel(i, 0), 0xffffffffU);
+ }
+
+ for (int i = 1; i < img.height(); ++i) {
+ if (i % 2)
+ QCOMPARE(img.pixel(0, i), 0x0U);
+ else
+ QCOMPARE(img.pixel(0, i), 0xffffffffU);
+ }
+}
+
+void tst_QPainter::imageScaling_task206785()
+{
+ QImage src(32, 2, QImage::Format_ARGB32_Premultiplied);
+ src.fill(0xffffffff);
+
+ QImage dst(128, 128, QImage::Format_ARGB32_Premultiplied);
+
+ QImage expected(128, 128, QImage::Format_ARGB32_Premultiplied);
+ expected.fill(0xffffffff);
+
+ for (int i = 1; i < 5; ++i) {
+ qreal scale = i / qreal(5);
+
+ dst.fill(0xff000000);
+
+ QPainter p(&dst);
+ p.scale(dst.width() / qreal(src.width()), scale);
+
+ for (int y = 0; y * scale < dst.height(); ++y)
+ p.drawImage(0, y, src);
+
+ p.end();
+
+ QCOMPARE(dst, expected);
+ }
+}
+
+#define FOR_EACH_NEIGHBOR_8 for (int dx = -1; dx <= 1; ++dx) for (int dy = -1; dy <= 1; ++dy) if (dx != 0 || dy != 0)
+#define FOR_EACH_NEIGHBOR_4 for (int dx = -1; dx <= 1; ++dx) for (int dy = -1; dy <= 1; ++dy) if ((dx == 0) != (dy == 0))
+
+uint qHash(const QPoint &point)
+{
+ return qHash(qMakePair(point.x(), point.y()));
+}
+
+bool verifyOutlineFillConsistency(const QImage &img, QRgb outside, QRgb inside, QRgb outline)
+{
+ if (img.pixel(img.width() / 2, img.height() / 2) != inside)
+ return false;
+
+ int x = img.width() / 2;
+ int y = img.height() / 2;
+
+ while (img.pixel(++x, y) == inside)
+ ;
+
+ if (img.pixel(x, y) != outline)
+ return false;
+
+ QQueue<QPoint> discovered;
+ discovered.enqueue(QPoint(x, y));
+
+ QVector<bool> visited(img.width() * img.height());
+ visited.fill(false);
+
+ while (!discovered.isEmpty()) {
+ QPoint p = discovered.dequeue();
+ QRgb pixel = img.pixel(p.x(), p.y());
+
+ bool &v = visited[p.y() * img.width() + p.x()];
+ if (v)
+ continue;
+ v = true;
+
+ if (pixel == outline) {
+ FOR_EACH_NEIGHBOR_8 {
+ QPoint x(p.x() + dx, p.y() + dy);
+ discovered.enqueue(x);
+ }
+ } else {
+ FOR_EACH_NEIGHBOR_4 {
+ if ((dx == 0) == (dy == 0))
+ continue;
+ QRgb neighbor = img.pixel(p.x() + dx, p.y() + dy);
+ if ((pixel == inside && neighbor == outside) ||
+ (pixel == outside && neighbor == inside))
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+#undef FOR_EACH_NEIGHBOR_8
+#undef FOR_EACH_NEIGHBOR_4
+
+void tst_QPainter::outlineFillConsistency()
+{
+ QSKIP("currently broken...", SkipAll);
+ return;
+
+ QImage dst(256, 256, QImage::Format_ARGB32_Premultiplied);
+
+ QPolygonF poly;
+ poly << QPointF(5, -100) << QPointF(-70, 20) << QPointF(95, 25);
+
+ QPen pen(Qt::red);
+ QBrush brush(Qt::black);
+
+ QRgb background = 0xffffffff;
+ for (int i = 0; i < 360; ++i) {
+ dst.fill(background);
+
+ QPainter p(&dst);
+ p.translate(dst.width() / 2, dst.height() / 2);
+
+ QPolygonF copy = poly;
+ for (int j = 0; j < copy.size(); ++j)
+ copy[j] = QTransform().rotate(i).map(copy[j]);
+
+ p.setPen(pen);
+ p.setBrush(brush);
+ p.drawPolygon(copy);
+ p.end();
+
+#if 0
+ if (!verifyOutlineFillConsistency(dst, background, p.brush().color().rgba(), p.pen().color().rgba()))
+ dst.save(QString("outlineFillConsistency-%1.png").arg(i));
+#endif
+
+ QVERIFY(verifyOutlineFillConsistency(dst, background, brush.color().rgba(), pen.color().rgba()));
+ }
+}
+
+void tst_QPainter::drawImage_task217400_data()
+{
+ QTest::addColumn<QImage::Format>("format");
+
+ QTest::newRow("444") << QImage::Format_ARGB4444_Premultiplied;
+ QTest::newRow("555") << QImage::Format_ARGB8555_Premultiplied;
+ QTest::newRow("565") << QImage::Format_ARGB8565_Premultiplied;
+// QTest::newRow("666") << QImage::Format_ARGB6666_Premultiplied;
+ QTest::newRow("888p") << QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("888") << QImage::Format_ARGB32;
+}
+
+void tst_QPainter::drawImage_task217400()
+{
+ QFETCH(QImage::Format, format);
+
+ const QImage src = QImage(QString(SRCDIR) + "/task217400.png")
+ .convertToFormat(format);
+ QVERIFY(!src.isNull());
+
+ QImage expected(src.size(), format);
+ {
+ QPainter p(&expected);
+ p.fillRect(0, 0, expected.width(), expected.height(), Qt::white);
+ p.drawImage(0, 0, src);
+ }
+
+ for (int i = 1; i <= 4; ++i) {
+ QImage dest(src.width() + i, src.height(), format);
+ {
+ QPainter p(&dest);
+ p.fillRect(0, 0, dest.width(), dest.height(), Qt::white);
+ p.drawImage(i, 0, src);
+ }
+
+ const QImage result = dest.copy(i, 0, src.width(), src.height());
+
+#if 0
+ if (result != expected) {
+ qDebug("i=%i", i);
+ result.save("result.png");
+ expected.save("expected.png");
+ }
+#endif
+ QCOMPARE(result, expected);
+ }
+}
+
+void tst_QPainter::drawImage_task258776()
+{
+ QImage src(16, 16, QImage::Format_RGB888);
+ QImage dest(33, 33, QImage::Format_RGB888);
+ src.fill(0x00ff00);
+ dest.fill(0x0000ff);
+
+ QPainter painter(&dest);
+ painter.drawImage(QRectF(0.499, 0.499, 32, 32), src, QRectF(0, 0, 16, 16));
+ painter.end();
+
+ QImage expected(33, 33, QImage::Format_RGB32);
+ expected.fill(0xff0000);
+
+ painter.begin(&expected);
+ painter.drawImage(QRectF(0, 0, 32, 32), src);
+ painter.end();
+
+ dest = dest.convertToFormat(QImage::Format_RGB32);
+
+ dest.save("dest.png");
+ expected.save("expected.png");
+ QCOMPARE(dest, expected);
+}
+
+void tst_QPainter::clipRectSaveRestore()
+{
+ QImage img(64, 64, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0x0);
+
+ QPainter p(&img);
+ p.setClipRect(QRect(0, 0, 10, 10));
+ p.save();
+ p.setClipRect(QRect(5, 5, 5, 5), Qt::IntersectClip);
+ p.restore();
+ p.fillRect(0, 0, 64, 64, Qt::black);
+ p.end();
+
+ QCOMPARE(img.pixel(0, 0), QColor(Qt::black).rgba());
+}
+
+void tst_QPainter::clippedImage()
+{
+ QImage img(16, 16, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0x0);
+
+ QImage src(16, 16, QImage::Format_RGB32);
+ src.fill(QColor(Qt::red).rgba());
+
+ QPainter p(&img);
+ p.setClipRect(QRect(1, 1, 14, 14));
+ p.drawImage(0, 0, src);
+ p.end();
+
+ QCOMPARE(img.pixel(0, 0), 0x0U);
+ QCOMPARE(img.pixel(1, 1), src.pixel(1, 1));
+}
+
+void tst_QPainter::stateResetBetweenQPainters()
+{
+ QImage img(16, 16, QImage::Format_ARGB32);
+
+ {
+ QPainter p(&img);
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ p.fillRect(0, 0, 16, 16, Qt::red);
+ }
+
+ {
+ QPainter p2(&img);
+ p2.fillRect(0, 0, 16, 16, QColor(0, 0, 255, 63));
+ }
+
+ img.save("foo.png");
+
+ QVERIFY(img.pixel(0, 0) != qRgba(0, 0, 255, 63));
+ QVERIFY(qRed(img.pixel(0, 0)) > 0); // We didn't erase the red channel...
+ QVERIFY(qBlue(img.pixel(0, 0)) < 255); // We blended the blue channel
+}
+
+void tst_QPainter::drawRect_task215378()
+{
+ QImage img(11, 11, QImage::Format_ARGB32_Premultiplied);
+ img.fill(QColor(Qt::white).rgba());
+
+ QPainter p(&img);
+ p.setPen(QColor(127, 127, 127, 127));
+ p.drawRect(0, 0, 10, 10);
+ p.end();
+
+ QCOMPARE(img.pixel(0, 0), img.pixel(1, 0));
+ QCOMPARE(img.pixel(0, 0), img.pixel(0, 1));
+ QVERIFY(img.pixel(0, 0) != img.pixel(1, 1));
+}
+
+void tst_QPainter::drawRect_task247505()
+{
+ QImage a(10, 10, QImage::Format_ARGB32_Premultiplied);
+ a.fill(0);
+ QImage b = a;
+
+ QPainter p(&a);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::black);
+ p.drawRect(QRectF(10, 0, -10, 10));
+ p.end();
+ p.begin(&b);
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::black);
+ p.drawRect(QRectF(0, 0, 10, 10));
+ p.end();
+
+ QCOMPARE(a, b);
+}
+
+void tst_QPainter::drawImage_data()
+{
+ QTest::addColumn<int>("x");
+ QTest::addColumn<int>("y");
+ QTest::addColumn<int>("w");
+ QTest::addColumn<int>("h");
+ QTest::addColumn<QImage::Format>("srcFormat");
+ QTest::addColumn<QImage::Format>("dstFormat");
+
+ for (int srcFormat = QImage::Format_Mono; srcFormat < QImage::NImageFormats; ++srcFormat) {
+ for (int dstFormat = QImage::Format_Mono; dstFormat < QImage::NImageFormats; ++dstFormat) {
+ if (dstFormat == QImage::Format_Indexed8)
+ continue;
+ for (int odd_x = 0; odd_x <= 1; ++odd_x) {
+ for (int odd_width = 0; odd_width <= 1; ++odd_width) {
+ QString description =
+ QString("srcFormat %1, dstFormat %2, odd x: %3, odd width: %4")
+ .arg(srcFormat).arg(dstFormat).arg(odd_x).arg(odd_width);
+
+ QTest::newRow(qPrintable(description)) << (10 + odd_x) << 10 << (20 + odd_width) << 20
+ << QImage::Format(srcFormat)
+ << QImage::Format(dstFormat);
+ }
+ }
+ }
+ }
+}
+
+bool verifyImage(const QImage &img, int x, int y, int w, int h, uint background)
+{
+ int imgWidth = img.width();
+ int imgHeight = img.height();
+ for (int i = 0; i < imgHeight; ++i) {
+ for (int j = 0; j < imgWidth; ++j) {
+ uint pixel = img.pixel(j, i);
+ bool outside = j < x || j >= (x + w) || i < y || i >= (y + h);
+ if (outside != (pixel == background)) {
+ //printf("%d %d, expected %x, got %x, outside: %d\n", x, y, background, pixel, outside);
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+void tst_QPainter::drawImage()
+{
+ QFETCH(int, x);
+ QFETCH(int, y);
+ QFETCH(int, w);
+ QFETCH(int, h);
+ QFETCH(QImage::Format, srcFormat);
+ QFETCH(QImage::Format, dstFormat);
+
+ QImage dst(40, 40, QImage::Format_RGB32);
+ dst.fill(0xffffffff);
+
+ dst = dst.convertToFormat(dstFormat);
+ uint background = dst.pixel(0, 0);
+
+ QImage src(w, h, QImage::Format_RGB32);
+ src.fill(0xff000000);
+ src = src.convertToFormat(srcFormat);
+
+ QPainter p(&dst);
+ p.drawImage(x, y, src);
+ p.end();
+
+ QVERIFY(verifyImage(dst, x, y, w, h, background));
+}
+
+void tst_QPainter::imageCoordinateLimit()
+{
+ QImage img(64, 40000, QImage::Format_MonoLSB);
+ QPainter p(&img);
+ p.drawText(10, 36000, QLatin1String("foo"));
+ p.setPen(QPen(Qt::black, 2));
+ p.drawLine(10, 0, 60, 40000);
+
+ p.setRenderHint(QPainter::Antialiasing);
+ p.drawLine(10, 0, 60, 40000);
+}
+
+
+void tst_QPainter::imageBlending_data()
+{
+ QTest::addColumn<QImage::Format>("sourceFormat");
+ QTest::addColumn<QImage::Format>("destFormat");
+ QTest::addColumn<int>("error");
+
+ int error_rgb565 = ((1<<3) + (1<<2) + (1<<3));
+ QTest::newRow("rgb565_on_rgb565") << QImage::Format_RGB16
+ << QImage::Format_RGB16
+ << 0;
+ QTest::newRow("argb8565_on_rgb565") << QImage::Format_ARGB8565_Premultiplied
+ << QImage::Format_RGB16
+ << error_rgb565;
+
+ QTest::newRow("rgb32_on_rgb565") << QImage::Format_RGB32
+ << QImage::Format_RGB16
+ << error_rgb565;
+
+ QTest::newRow("argb32pm_on_rgb565") << QImage::Format_ARGB32_Premultiplied
+ << QImage::Format_RGB16
+ << error_rgb565;
+}
+
+int diffColor(quint32 ap, quint32 bp)
+{
+ int a = qAlpha(ap) - qAlpha(bp);
+ int r = qRed(ap) - qRed(bp);
+ int b = qBlue(ap) - qBlue(bp);
+ int g = qBlue(ap) - qBlue(bp);
+
+ return qAbs(a) + qAbs(r) + qAbs(g) + qAbs(b);
+}
+
+// this test assumes premultiplied pixels...
+
+void tst_QPainter::imageBlending()
+{
+ QFETCH(QImage::Format, sourceFormat);
+ QFETCH(QImage::Format, destFormat);
+ QFETCH(int, error);
+
+ QImage dest;
+ {
+ QImage orig_dest(6, 6, QImage::Format_ARGB32_Premultiplied);
+ orig_dest.fill(0);
+ QPainter p(&orig_dest);
+ p.fillRect(0, 0, 6, 3, QColor::fromRgbF(1, 0, 0));
+ p.fillRect(3, 0, 3, 6, QColor::fromRgbF(0, 0, 1, 0.5));
+ p.end();
+ dest = orig_dest.convertToFormat(destFormat);
+
+ // An image like this: (r = red, m = magenta, b = light alpha blue, 0 = transparent)
+ // r r r m m m
+ // r r r m m m
+ // r r r m m m
+ // 0 0 0 b b b
+ // 0 0 0 b b b
+ // 0 0 0 b b b
+ }
+
+ QImage source;
+ {
+ QImage orig_source(6, 6, QImage::Format_ARGB32_Premultiplied);
+ orig_source.fill(0);
+ QPainter p(&orig_source);
+ p.fillRect(1, 1, 4, 4, QColor::fromRgbF(0, 1, 0, 0.5));
+ p.fillRect(2, 2, 2, 2, QColor::fromRgbF(0, 1, 0));
+ p.end();
+ source = orig_source.convertToFormat(sourceFormat);
+
+ // An image like this: (0 = transparent, . = green at 0.5 alpha, g = opaque green.
+ // 0 0 0 0 0 0
+ // 0 . . . . 0
+ // 0 . g g . 0
+ // 0 . g g . 0
+ // 0 . . . . 0
+ // 0 0 0 0 0 0
+ }
+
+ QPainter p(&dest);
+ p.drawImage(0, 0, source);
+ p.end();
+
+ // resulting image:
+ // r r r m m m
+ // r r. r. m. m. m
+ // r r. g g m. m
+ // 0 . g g b. b
+ // 0 . . b. b. b
+ // 0 0 0 b b b
+
+ // the g pixels, always green..
+ QVERIFY(diffColor(dest.pixel(2, 2), 0xff00ff00) <= error); // g
+
+ if (source.hasAlphaChannel()) {
+ QVERIFY(diffColor(dest.pixel(0, 0), 0xffff0000) <= error); // r
+ QVERIFY(diffColor(dest.pixel(5, 0), 0xff7f007f) <= error); // m
+ QVERIFY(diffColor(dest.pixel(1, 1), 0xff7f7f00) <= error); // r.
+ QVERIFY(diffColor(dest.pixel(4, 1), 0xff3f7f3f) <= error); // m.
+ if (dest.hasAlphaChannel()) {
+ QVERIFY(diffColor(dest.pixel(1, 3), 0x7f007f00) <= error); // .
+ QVERIFY(diffColor(dest.pixel(4, 3), 0x7f007f3f) <= error); // b.
+ QVERIFY(diffColor(dest.pixel(4, 3), 0x7f007f3f) <= error); // b.
+ QVERIFY(diffColor(dest.pixel(4, 4), 0x7f00007f) <= error); // b
+ QVERIFY(diffColor(dest.pixel(4, 0), 0) <= 0); // 0
+ }
+ } else {
+ QVERIFY(diffColor(dest.pixel(0, 0), 0xff000000) <= 0);
+ QVERIFY(diffColor(dest.pixel(1, 1), 0xff007f00) <= error);
+ }
+}
+
+void tst_QPainter::imageBlending_clipped()
+{
+ QImage src(20, 20, QImage::Format_RGB16);
+ QPainter p(&src);
+ p.fillRect(src.rect(), Qt::red);
+ p.end();
+
+ QImage dst(40, 20, QImage::Format_RGB16);
+ p.begin(&dst);
+ p.fillRect(dst.rect(), Qt::white);
+ p.end();
+
+ QImage expected = dst;
+
+ p.begin(&dst);
+ p.setClipRect(QRect(23, 0, 20, 20));
+
+ // should be completely clipped
+ p.drawImage(QRectF(3, 0, 20, 20), src);
+ p.end();
+
+ // dst should be left unchanged
+ QCOMPARE(dst, expected);
+}
+
+void tst_QPainter::paintOnNullPixmap()
+{
+ QPixmap pix(16, 16);
+
+ QPixmap textPixmap;
+ QPainter p(&textPixmap);
+ p.drawPixmap(10, 10, pix);
+ p.end();
+
+ QPixmap textPixmap2(16,16);
+ p.begin(&textPixmap2);
+ p.end();
+}
+
+void tst_QPainter::checkCompositionMode()
+{
+ QImage refImage(50,50,QImage::Format_ARGB32);
+ QPainter painter(&refImage);
+ painter.fillRect(QRect(0,0,50,50),Qt::blue);
+
+ QImage testImage(50,50,QImage::Format_ARGB32);
+ QPainter p(&testImage);
+ p.fillRect(QRect(0,0,50,50),Qt::red);
+ p.save();
+ p.setCompositionMode(QPainter::CompositionMode_SourceOut);
+ p.restore();
+ p.fillRect(QRect(0,0,50,50),Qt::blue);
+
+ QCOMPARE(refImage.pixel(20,20),testImage.pixel(20,20));
+}
+
+static QLinearGradient inverseGradient(QLinearGradient g)
+{
+ QLinearGradient g2 = g;
+
+ QGradientStops stops = g.stops();
+
+ QGradientStops inverse;
+ foreach (QGradientStop stop, stops)
+ inverse << QGradientStop(1 - stop.first, stop.second);
+
+ g2.setStops(inverse);
+ return g2;
+}
+
+void tst_QPainter::linearGradientSymmetry_data()
+{
+ QTest::addColumn<QGradientStops>("stops");
+
+ if (sizeof(qreal) != sizeof(float)) {
+ QGradientStops stops;
+ stops << qMakePair(qreal(0.0), QColor(Qt::blue));
+ stops << qMakePair(qreal(0.2), QColor(220, 220, 220, 0));
+ stops << qMakePair(qreal(0.6), QColor(Qt::red));
+ stops << qMakePair(qreal(0.9), QColor(220, 220, 220, 255));
+ stops << qMakePair(qreal(1.0), QColor(Qt::black));
+ QTest::newRow("multiple stops") << stops;
+ }
+
+ {
+ QGradientStops stops;
+ stops << qMakePair(qreal(0.0), QColor(Qt::blue));
+ stops << qMakePair(qreal(1.0), QColor(Qt::black));
+ QTest::newRow("two stops") << stops;
+ }
+
+ if (sizeof(qreal) != sizeof(float)) {
+ QGradientStops stops;
+ stops << qMakePair(qreal(0.3), QColor(Qt::blue));
+ stops << qMakePair(qreal(0.6), QColor(Qt::black));
+ QTest::newRow("two stops 2") << stops;
+ }
+}
+
+void tst_QPainter::linearGradientSymmetry()
+{
+#ifdef Q_WS_QWS
+ QSKIP("QWS has limited resolution in the gradient color table", SkipAll);
+#else
+ QFETCH(QGradientStops, stops);
+
+ QImage a(64, 8, QImage::Format_ARGB32_Premultiplied);
+ QImage b(64, 8, QImage::Format_ARGB32_Premultiplied);
+
+ a.fill(0);
+ b.fill(0);
+
+ QLinearGradient gradient(QRectF(b.rect()).topLeft(), QRectF(b.rect()).topRight());
+ gradient.setStops(stops);
+
+ QPainter pa(&a);
+ pa.fillRect(a.rect(), gradient);
+ pa.end();
+
+ QPainter pb(&b);
+ pb.fillRect(b.rect(), inverseGradient(gradient));
+ pb.end();
+
+ b = b.mirrored(true);
+ QCOMPARE(a, b);
+#endif
+}
+
+void tst_QPainter::gradientInterpolation()
+{
+ QImage image(256, 8, QImage::Format_ARGB32_Premultiplied);
+ QPainter painter;
+
+ QLinearGradient gradient(QRectF(image.rect()).topLeft(), QRectF(image.rect()).topRight());
+ gradient.setColorAt(0.0, QColor(255, 0, 0, 0));
+ gradient.setColorAt(1.0, Qt::blue);
+
+ image.fill(0);
+ painter.begin(&image);
+ painter.fillRect(image.rect(), gradient);
+ painter.end();
+
+ const QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(3));
+
+ for (int i = 0; i < 256; ++i) {
+ QCOMPARE(qAlpha(line[i]), qBlue(line[i])); // bright blue
+ QVERIFY(qAbs(qAlpha(line[i]) - i) < 3); // linear alpha
+ QCOMPARE(qRed(line[i]), 0); // no red component
+ QCOMPARE(qGreen(line[i]), 0); // no green component
+ }
+
+ gradient.setInterpolationMode(QGradient::ComponentInterpolation);
+
+ image.fill(0);
+ painter.begin(&image);
+ painter.fillRect(image.rect(), gradient);
+ painter.end();
+
+ for (int i = 1; i < 256; ++i) {
+ if (i < 128) {
+ QVERIFY(qRed(line[i]) >= qBlue(line[i])); // red is dominant
+ } else {
+ QVERIFY(qRed(line[i]) <= qBlue(line[i])); // blue is dominant
+ }
+ QVERIFY((qRed(line[i]) - 0.5) * (qAlpha(line[i - 1]) - 0.5) <= (qRed(line[i - 1]) + 0.5) * (qAlpha(line[i]) + 0.5)); // decreasing red
+ QVERIFY((qBlue(line[i]) + 0.5) * (qAlpha(line[i - 1]) + 0.5) >= (qBlue(line[i - 1]) - 0.5) * (qAlpha(line[i]) - 0.5)); // increasing blue
+ QVERIFY(qAbs(qAlpha(line[i]) - i) < 3); // linear alpha
+ QCOMPARE(qGreen(line[i]), 0); // no green component
+ }
+}
+
+void tst_QPainter::drawPolygon()
+{
+ QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
+
+ QPainterPathStroker stroker;
+ stroker.setWidth(1.5);
+
+ QPainterPath path;
+ path.moveTo(2, 34);
+ path.lineTo(34, 2);
+
+ QPolygonF poly = stroker.createStroke(path).toFillPolygon();
+
+ img.fill(0xffffffff);
+ QPainter p(&img);
+ p.setRenderHint(QPainter::Antialiasing);
+ p.setBrush(Qt::red);
+ p.setPen(Qt::NoPen);
+ p.drawPolygon(poly);
+ p.translate(64, 64);
+ p.drawPolygon(poly);
+ p.end();
+
+ QImage a = img.copy();
+
+ img.fill(0xffffffff);
+ p.begin(&img);
+ p.setRenderHint(QPainter::Antialiasing);
+ p.setBrush(Qt::red);
+ p.setPen(Qt::NoPen);
+ p.translate(64, 64);
+ p.drawPolygon(poly);
+ p.resetTransform();
+ p.drawPolygon(poly);
+ p.end();
+
+ QCOMPARE(a, img);
+}
+
+void tst_QPainter::inactivePainter()
+{
+ // This test succeeds if it doesn't segfault.
+
+ QPainter p;
+ QPainterPath path;
+ QRegion region(QRect(20, 20, 60, 40));
+ QPolygonF polygon(QVector<QPointF>() << QPointF(0, 0) << QPointF(12, 0) << QPointF(8, 6));
+ path.addPolygon(polygon);
+
+ p.save();
+ p.restore();
+
+ p.background();
+ p.setBackground(QBrush(Qt::blue));
+
+ p.brush();
+ p.setBrush(Qt::red);
+ p.setBrush(Qt::NoBrush);
+ p.setBrush(QBrush(Qt::white, Qt::DiagCrossPattern));
+
+ p.backgroundMode();
+ p.setBackgroundMode(Qt::OpaqueMode);
+
+ p.boundingRect(QRectF(0, 0, 100, 20), Qt::AlignCenter, QLatin1String("Hello, World!"));
+ p.boundingRect(QRect(0, 0, 100, 20), Qt::AlignCenter, QLatin1String("Hello, World!"));
+
+ p.brushOrigin();
+ p.setBrushOrigin(QPointF(12, 34));
+ p.setBrushOrigin(QPoint(12, 34));
+
+ p.clipPath();
+ p.clipRegion();
+ p.hasClipping();
+ p.setClipPath(path);
+ p.setClipRect(QRectF(42, 42, 42, 42));
+ p.setClipRect(QRect(42, 42, 42, 42));
+ p.setClipRegion(region);
+ p.setClipping(true);
+
+ p.combinedMatrix();
+ p.combinedTransform();
+
+ p.compositionMode();
+ p.setCompositionMode(QPainter::CompositionMode_Plus);
+
+ p.device();
+ p.deviceMatrix();
+ p.deviceTransform();
+
+ p.font();
+ p.setFont(QFont(QLatin1String("Times"), 24));
+
+ p.fontInfo();
+ p.fontMetrics();
+
+ p.layoutDirection();
+ p.setLayoutDirection(Qt::RightToLeft);
+
+ p.opacity();
+ p.setOpacity(0.75);
+
+ p.pen();
+ p.setPen(QPen(Qt::red));
+ p.setPen(Qt::green);
+ p.setPen(Qt::NoPen);
+
+ p.renderHints();
+ p.setRenderHint(QPainter::Antialiasing, true);
+ p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, false);
+
+ p.resetMatrix();
+ p.resetTransform();
+ p.rotate(1);
+ p.scale(2, 2);
+ p.shear(-1, 1);
+ p.translate(3, 14);
+
+ p.viewTransformEnabled();
+ p.setViewTransformEnabled(true);
+
+ p.viewport();
+ p.setViewport(QRect(10, 10, 620, 460));
+
+ p.window();
+ p.setWindow(QRect(10, 10, 620, 460));
+
+ p.worldMatrix();
+ p.setWorldMatrix(QMatrix().translate(43, 21), true);
+ p.setWorldMatrixEnabled(true);
+
+ p.transform();
+ p.setTransform(QTransform().translate(12, 34), true);
+
+ p.worldTransform();
+ p.setWorldTransform(QTransform().scale(0.5, 0.5), true);
+}
+
+bool testCompositionMode(int src, int dst, int expected, QPainter::CompositionMode op, qreal opacity = 1.0)
+{
+ // The test image needs to be large enough to test SIMD code
+ const QSize imageSize(100, 100);
+
+ QImage actual(imageSize, QImage::Format_ARGB32_Premultiplied);
+ actual.fill(QColor(dst, dst, dst).rgb());
+
+ QPainter p(&actual);
+ p.setCompositionMode(op);
+ p.setOpacity(opacity);
+ p.fillRect(QRect(QPoint(), imageSize), QColor(src, src, src));
+ p.end();
+
+ if (qRed(actual.pixel(0, 0)) != expected) {
+ qDebug("Fail: mode %d, src[%d] dst [%d] actual [%d] expected [%d]", op,
+ src, dst, qRed(actual.pixel(0, 0)), expected);
+ return false;
+ } else {
+ QImage refImage(imageSize, QImage::Format_ARGB32_Premultiplied);
+ refImage.fill(QColor(expected, expected, expected).rgb());
+ return actual == refImage;
+ }
+}
+
+void tst_QPainter::extendedBlendModes()
+{
+ QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Plus));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Plus));
+ QVERIFY(testCompositionMode(127, 128, 255, QPainter::CompositionMode_Plus));
+ QVERIFY(testCompositionMode(127, 0, 127, QPainter::CompositionMode_Plus));
+ QVERIFY(testCompositionMode( 0, 127, 127, QPainter::CompositionMode_Plus));
+ QVERIFY(testCompositionMode(255, 0, 255, QPainter::CompositionMode_Plus));
+ QVERIFY(testCompositionMode( 0, 255, 255, QPainter::CompositionMode_Plus));
+ QVERIFY(testCompositionMode(128, 128, 255, QPainter::CompositionMode_Plus));
+
+ QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Plus, 0.3));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Plus, 0.3));
+ QVERIFY(testCompositionMode(127, 128, 165, QPainter::CompositionMode_Plus, 0.3));
+ QVERIFY(testCompositionMode(127, 0, 37, QPainter::CompositionMode_Plus, 0.3));
+ QVERIFY(testCompositionMode( 0, 127, 127, QPainter::CompositionMode_Plus, 0.3));
+ QVERIFY(testCompositionMode(255, 0, 75, QPainter::CompositionMode_Plus, 0.3));
+ QVERIFY(testCompositionMode( 0, 255, 255, QPainter::CompositionMode_Plus, 0.3));
+ QVERIFY(testCompositionMode(128, 128, 166, QPainter::CompositionMode_Plus, 0.3));
+ QVERIFY(testCompositionMode(186, 200, 255, QPainter::CompositionMode_Plus, 0.3));
+
+ QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Multiply));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Multiply));
+ QVERIFY(testCompositionMode(127, 255, 127, QPainter::CompositionMode_Multiply));
+ QVERIFY(testCompositionMode(255, 127, 127, QPainter::CompositionMode_Multiply));
+ QVERIFY(testCompositionMode( 63, 255, 63, QPainter::CompositionMode_Multiply));
+ QVERIFY(testCompositionMode(255, 63, 63, QPainter::CompositionMode_Multiply));
+ QVERIFY(testCompositionMode(127, 127, 63, QPainter::CompositionMode_Multiply));
+
+ QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Screen));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Screen));
+ QVERIFY(testCompositionMode( 63, 255, 255, QPainter::CompositionMode_Screen));
+ QVERIFY(testCompositionMode(255, 63, 255, QPainter::CompositionMode_Screen));
+ QVERIFY(testCompositionMode( 63, 0, 63, QPainter::CompositionMode_Screen));
+ QVERIFY(testCompositionMode( 0, 63, 63, QPainter::CompositionMode_Screen));
+ QVERIFY(testCompositionMode(127, 127, 191, QPainter::CompositionMode_Screen));
+
+ QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Overlay));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Overlay));
+ QVERIFY(testCompositionMode( 63, 63, 31, QPainter::CompositionMode_Overlay));
+ QVERIFY(testCompositionMode( 63, 255, 255, QPainter::CompositionMode_Overlay));
+
+ QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Darken));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Darken));
+ QVERIFY(testCompositionMode( 63, 63, 63, QPainter::CompositionMode_Darken));
+ QVERIFY(testCompositionMode( 63, 255, 63, QPainter::CompositionMode_Darken));
+ QVERIFY(testCompositionMode(255, 63, 63, QPainter::CompositionMode_Darken));
+ QVERIFY(testCompositionMode( 63, 127, 63, QPainter::CompositionMode_Darken));
+ QVERIFY(testCompositionMode(127, 63, 63, QPainter::CompositionMode_Darken));
+
+ QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Lighten));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Lighten));
+ QVERIFY(testCompositionMode( 63, 63, 63, QPainter::CompositionMode_Lighten));
+ QVERIFY(testCompositionMode( 63, 255, 255, QPainter::CompositionMode_Lighten));
+ QVERIFY(testCompositionMode(255, 63, 255, QPainter::CompositionMode_Lighten));
+ QVERIFY(testCompositionMode( 63, 127, 127, QPainter::CompositionMode_Lighten));
+ QVERIFY(testCompositionMode(127, 63, 127, QPainter::CompositionMode_Lighten));
+
+ QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_ColorDodge));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_ColorDodge));
+ QVERIFY(testCompositionMode( 63, 127, 169, QPainter::CompositionMode_ColorDodge));
+ QVERIFY(testCompositionMode(191, 127, 255, QPainter::CompositionMode_ColorDodge));
+ QVERIFY(testCompositionMode(127, 191, 255, QPainter::CompositionMode_ColorDodge));
+
+ QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_ColorBurn));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_ColorBurn));
+ QVERIFY(testCompositionMode(127, 127, 0, QPainter::CompositionMode_ColorBurn));
+ QVERIFY(testCompositionMode(128, 128, 2, QPainter::CompositionMode_ColorBurn));
+ QVERIFY(testCompositionMode(191, 127, 84, QPainter::CompositionMode_ColorBurn));
+
+ QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_HardLight));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_HardLight));
+ QVERIFY(testCompositionMode(127, 127, 127, QPainter::CompositionMode_HardLight));
+ QVERIFY(testCompositionMode( 63, 63, 31, QPainter::CompositionMode_HardLight));
+ QVERIFY(testCompositionMode(127, 63, 63, QPainter::CompositionMode_HardLight));
+
+ QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_SoftLight));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_SoftLight));
+ QVERIFY(testCompositionMode(127, 127, 126, QPainter::CompositionMode_SoftLight));
+ QVERIFY(testCompositionMode( 63, 63, 39, QPainter::CompositionMode_SoftLight));
+ QVERIFY(testCompositionMode(127, 63, 62, QPainter::CompositionMode_SoftLight));
+
+ QVERIFY(testCompositionMode(255, 255, 0, QPainter::CompositionMode_Difference));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Difference));
+ QVERIFY(testCompositionMode(255, 0, 255, QPainter::CompositionMode_Difference));
+ QVERIFY(testCompositionMode(127, 127, 0, QPainter::CompositionMode_Difference));
+ QVERIFY(testCompositionMode(127, 128, 1, QPainter::CompositionMode_Difference));
+ QVERIFY(testCompositionMode(127, 63, 64, QPainter::CompositionMode_Difference));
+ QVERIFY(testCompositionMode( 0, 127, 127, QPainter::CompositionMode_Difference));
+
+ QVERIFY(testCompositionMode(255, 255, 0, QPainter::CompositionMode_Exclusion));
+ QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Exclusion));
+ QVERIFY(testCompositionMode(255, 0, 255, QPainter::CompositionMode_Exclusion));
+ QVERIFY(testCompositionMode(127, 127, 127, QPainter::CompositionMode_Exclusion));
+ QVERIFY(testCompositionMode( 63, 127, 127, QPainter::CompositionMode_Exclusion));
+ QVERIFY(testCompositionMode( 63, 63, 95, QPainter::CompositionMode_Exclusion));
+ QVERIFY(testCompositionMode(191, 191, 96, QPainter::CompositionMode_Exclusion));
+}
+
+void tst_QPainter::zeroOpacity()
+{
+ QImage source(1, 1, QImage::Format_ARGB32_Premultiplied);
+ source.fill(0xffffffff);
+
+ QImage target(1, 1, QImage::Format_RGB32);
+ target.fill(0xff000000);
+
+ QPainter p(&target);
+ p.setOpacity(0.0);
+ p.drawImage(0, 0, source);
+ p.end();
+
+ QCOMPARE(target.pixel(0, 0), 0xff000000);
+}
+
+void tst_QPainter::clippingBug()
+{
+ QImage img(32, 32, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0);
+
+ QImage expected = img;
+ QPainter p(&expected);
+ p.fillRect(1, 1, 30, 30, Qt::red);
+ p.end();
+
+ QPainterPath path;
+ path.addRect(1, 1, 30, 30);
+ path.addRect(1, 1, 30, 30);
+ path.addRect(1, 1, 30, 30);
+
+ p.begin(&img);
+ p.setClipPath(path);
+ p.fillRect(0, 0, 32, 32, Qt::red);
+ p.end();
+
+ QCOMPARE(img, expected);
+}
+
+void tst_QPainter::emptyClip()
+{
+ QImage img(64, 64, QImage::Format_ARGB32_Premultiplied);
+ QPainter p(&img);
+ p.setRenderHints(QPainter::Antialiasing);
+ p.setClipRect(0, 32, 64, 0);
+ p.fillRect(0, 0, 64, 64, Qt::white);
+
+ QPainterPath path;
+ path.lineTo(64, 0);
+ path.lineTo(64, 64);
+ path.lineTo(40, 64);
+ path.lineTo(40, 80);
+ path.lineTo(0, 80);
+
+ p.fillPath(path, Qt::green);
+}
+
+void tst_QPainter::drawImage_1x1()
+{
+ QImage source(1, 1, QImage::Format_ARGB32_Premultiplied);
+ source.fill(0xffffffff);
+
+ QImage img(32, 32, QImage::Format_ARGB32_Premultiplied);
+ img.fill(0xff000000);
+ QPainter p(&img);
+ p.drawImage(QRectF(0.9, 0.9, 32, 32), source);
+ p.end();
+
+ QImage expected = img;
+ expected.fill(0xff000000);
+ p.begin(&expected);
+ p.fillRect(1, 1, 31, 31, Qt::white);
+ p.end();
+
+ QCOMPARE(img, expected);
+}
+
+void tst_QPainter::taskQT4444_dontOverflowDashOffset()
+{
+ QPainter p;
+
+ QPen pen;
+ pen.setWidth(2);
+ pen.setStyle(Qt::DashDotLine);
+
+ QPointF point[4];
+ point[0] = QPointF(182.50868749707968,347.78457234212630);
+ point[1] = QPointF(182.50868749707968,107.22501998401277);
+ point[2] = QPointF(182.50868749707968,107.22501998401277);
+ point[3] = QPointF(520.46600762283651,107.22501998401277);
+
+ QImage crashImage(QSize(1000, 120), QImage::Format_ARGB32_Premultiplied);
+ p.begin(&crashImage);
+ p.setPen(pen);
+ p.drawLines(point, 2);
+ p.end();
+
+ QVERIFY(true); // Don't crash
+}
+
+void tst_QPainter::painterBegin()
+{
+ QImage nullImage;
+ QImage indexed8Image(16, 16, QImage::Format_Indexed8);
+ QImage rgb32Image(16, 16, QImage::Format_RGB32);
+ QImage argb32Image(16, 16, QImage::Format_ARGB32_Premultiplied);
+
+ QPainter p;
+
+ // Painting on null image should fail.
+ QVERIFY(!p.begin(&nullImage));
+
+ // Check that the painter is not messed up by using it on another image.
+ QVERIFY(p.begin(&rgb32Image));
+ QVERIFY(p.end());
+
+ // If painting on indexed8 image fails, the painter state should still be OK.
+ if (p.begin(&indexed8Image))
+ QVERIFY(p.end());
+ QVERIFY(p.begin(&rgb32Image));
+ QVERIFY(p.end());
+
+ // Try opening a painter on the two different images.
+ QVERIFY(p.begin(&rgb32Image));
+ QVERIFY(!p.begin(&argb32Image));
+ QVERIFY(p.end());
+
+ // Try opening two painters on the same image.
+ QVERIFY(p.begin(&rgb32Image));
+ QPainter q;
+ QVERIFY(!q.begin(&rgb32Image));
+ QVERIFY(!q.end());
+ QVERIFY(p.end());
+
+ // Try ending an inactive painter.
+ QVERIFY(!p.end());
+}
+
+void tst_QPainter::setPenColor(QPainter& p)
+{
+ p.setPen(Qt::NoPen);
+
+ // Setting color, then style
+ // Should work even though the pen is "NoPen with color", temporarily.
+ QPen newPen(p.pen());
+ newPen.setColor(Qt::red);
+ QCOMPARE(p.pen().style(), newPen.style());
+ QCOMPARE(p.pen().style(), Qt::NoPen);
+ p.setPen(newPen);
+
+ QCOMPARE(p.pen().color().name(), QString("#ff0000"));
+
+ QPen newPen2(p.pen());
+ newPen2.setStyle(Qt::SolidLine);
+ p.setPen(newPen2);
+
+ QCOMPARE(p.pen().color().name(), QString("#ff0000"));
+}
+
+void tst_QPainter::setPenColorOnImage()
+{
+ QImage img(QSize(10, 10), QImage::Format_ARGB32_Premultiplied);
+ QPainter p(&img);
+ setPenColor(p);
+}
+
+void tst_QPainter::setPenColorOnPixmap()
+{
+ QPixmap pix(10, 10);
+ QPainter p(&pix);
+ setPenColor(p);
+}
+
+class TestProxy : public QGraphicsProxyWidget
+{
+public:
+ TestProxy() : QGraphicsProxyWidget() {}
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+ {
+ QGraphicsProxyWidget::paint(painter, option, widget);
+ deviceTransform = painter->deviceTransform();
+ }
+ QTransform deviceTransform;
+};
+
+class TestWidget : public QWidget
+{
+Q_OBJECT
+public:
+ TestWidget() : QWidget(), painted(false) {}
+ void paintEvent(QPaintEvent *)
+ {
+ QPainter p(this);
+ deviceTransform = p.deviceTransform();
+ worldTransform = p.worldTransform();
+ painted = true;
+ }
+ QTransform deviceTransform;
+ QTransform worldTransform;
+ bool painted;
+};
+
+void tst_QPainter::QTBUG5939_attachPainterPrivate()
+{
+ QWidget *w = new QWidget();
+ QGraphicsScene *scene = new QGraphicsScene();
+ QGraphicsView *view = new QGraphicsView(scene, w);
+ view->move(50 ,50);
+ TestProxy *proxy = new TestProxy();
+ TestWidget *widget = new TestWidget();
+ proxy->setWidget(widget);
+ scene->addItem(proxy);
+ proxy->rotate(45);
+ w->resize(scene->sceneRect().size().toSize());
+
+ w->show();
+ QTRY_VERIFY(widget->painted);
+
+ QVERIFY(widget->worldTransform.isIdentity());
+ QCOMPARE(widget->deviceTransform, proxy->deviceTransform);
+}
+
+void tst_QPainter::clipBoundingRect()
+{
+ QPixmap pix(500, 500);
+
+ QPainter p(&pix);
+
+ // Test a basic rectangle
+ p.setClipRect(100, 100, 200, 100);
+ QVERIFY(p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
+ QVERIFY(!p.clipBoundingRect().contains(QRectF(50, 50, 300, 200)));
+ p.setClipRect(120, 120, 20, 20, Qt::IntersectClip);
+ QVERIFY(p.clipBoundingRect().contains(QRect(120, 120, 20, 20)));
+ QVERIFY(!p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
+
+ // Test a basic float rectangle
+ p.setClipRect(QRectF(100, 100, 200, 100));
+ QVERIFY(p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
+ QVERIFY(!p.clipBoundingRect().contains(QRectF(50, 50, 300, 200)));
+ p.setClipRect(QRectF(120, 120, 20, 20), Qt::IntersectClip);
+ QVERIFY(p.clipBoundingRect().contains(QRect(120, 120, 20, 20)));
+ QVERIFY(!p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
+
+ // Test a basic path + region
+ QPainterPath path;
+ path.addRect(100, 100, 200, 100);
+ p.setClipPath(path);
+ QVERIFY(p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
+ QVERIFY(!p.clipBoundingRect().contains(QRectF(50, 50, 300, 200)));
+ p.setClipRegion(QRegion(120, 120, 20, 20), Qt::IntersectClip);
+ QVERIFY(p.clipBoundingRect().contains(QRect(120, 120, 20, 20)));
+ QVERIFY(!p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
+
+ p.setClipRect(0, 0, 500, 500);
+ p.translate(250, 250);
+ for (int i=0; i<360; ++i) {
+ p.rotate(1);
+ p.setClipRect(-100, -100, 200, 200, Qt::IntersectClip);
+ }
+ QVERIFY(p.clipBoundingRect().contains(QRectF(-100, -100, 200, 200)));
+ QVERIFY(!p.clipBoundingRect().contains(QRectF(-250, -250, 500, 500)));
+
+}
+
+void tst_QPainter::drawText_subPixelPositionsInRaster_qtbug5053()
+{
+#if !defined(Q_WS_MAC) || !defined(QT_MAC_USE_COCOA)
+ QSKIP("Only Mac/Cocoa supports sub pixel positions in raster engine currently", SkipAll);
+#endif
+ QFontMetricsF fm(qApp->font());
+
+ QImage baseLine(fm.width(QChar::fromLatin1('e')), fm.height(), QImage::Format_RGB32);
+ baseLine.fill(Qt::white);
+ {
+ QPainter p(&baseLine);
+ p.drawText(0, fm.ascent(), QString::fromLatin1("e"));
+ }
+
+ bool foundDifferentRasterization = false;
+ for (int i=1; i<12; ++i) {
+ QImage comparison(baseLine.size(), QImage::Format_RGB32);
+ comparison.fill(Qt::white);
+
+ {
+ QPainter p(&comparison);
+ p.drawText(QPointF(i / 12.0, fm.ascent()), QString::fromLatin1("e"));
+ }
+
+ if (comparison != baseLine) {
+ foundDifferentRasterization = true;
+ break;
+ }
+ }
+
+ QVERIFY(foundDifferentRasterization);
+}
+
+void tst_QPainter::drawPointScaled()
+{
+ QImage image(32, 32, QImage::Format_RGB32);
+ image.fill(0xffffffff);
+
+ QPainter p(&image);
+
+ p.scale(0.1, 0.1);
+
+ QPen pen;
+ pen.setWidth(1000);
+ pen.setColor(Qt::red);
+
+ p.setPen(pen);
+ p.drawPoint(0, 0);
+ p.end();
+
+ QCOMPARE(image.pixel(16, 16), 0xffff0000);
+}
+
+class GradientProducer : public QThread
+{
+protected:
+ void run();
+};
+
+void GradientProducer::run()
+{
+ QImage image(1, 1, QImage::Format_RGB32);
+ QPainter p(&image);
+
+ for (int i = 0; i < 1000; ++i) {
+ QLinearGradient g;
+ g.setColorAt(0, QColor(i % 256, 0, 0));
+ g.setColorAt(1, Qt::white);
+
+ p.fillRect(image.rect(), g);
+ }
+}
+
+void tst_QPainter::QTBUG14614_gradientCacheRaceCondition()
+{
+ const int threadCount = 16;
+ GradientProducer producers[threadCount];
+ for (int i = 0; i < threadCount; ++i)
+ producers[i].start();
+ for (int i = 0; i < threadCount; ++i)
+ producers[i].wait();
+}
+
+void tst_QPainter::drawTextOpacity()
+{
+ QImage image(32, 32, QImage::Format_RGB32);
+ image.fill(0xffffffff);
+
+ QPainter p(&image);
+ p.setPen(QColor("#6F6F6F"));
+ p.setOpacity(0.5);
+ p.drawText(5, 30, QLatin1String("Qt"));
+ p.end();
+
+ QImage copy = image;
+ image.fill(0xffffffff);
+
+ p.begin(&image);
+ p.setPen(QColor("#6F6F6F"));
+ p.drawLine(-10, -10, -1, -1);
+ p.setOpacity(0.5);
+ p.drawText(5, 30, QLatin1String("Qt"));
+ p.end();
+
+ QCOMPARE(image, copy);
+}
+
+void tst_QPainter::QTBUG17053_zeroDashPattern()
+{
+ QImage image(32, 32, QImage::Format_RGB32);
+ image.fill(0xffffffff);
+
+ QImage original = image;
+
+ QVector<qreal> pattern;
+ pattern << qreal(0) << qreal(0);
+
+ QPainter p(&image);
+ QPen pen(Qt::black, 2.0);
+ pen.setDashPattern(pattern);
+
+ p.setPen(pen);
+ p.drawLine(0, 0, image.width(), image.height());
+
+ QCOMPARE(image, original);
+}
+
+class TextDrawerThread : public QThread
+{
+public:
+ void run();
+ QImage rendering;
+};
+
+void TextDrawerThread::run()
+{
+ rendering = QImage(100, 100, QImage::Format_ARGB32_Premultiplied);
+ rendering.fill(0);
+ QPainter p(&rendering);
+ p.fillRect(10, 10, 100, 100, Qt::blue);
+ p.setPen(Qt::green);
+ p.drawText(20, 20, "some text");
+ p.end();
+}
+
+void tst_QPainter::drawTextOutsideGuiThread()
+{
+ if (!QFontDatabase::supportsThreadedFontRendering())
+ QSKIP("No threaded font rendering", SkipAll);
+
+ QImage referenceRendering(100, 100, QImage::Format_ARGB32_Premultiplied);
+ referenceRendering.fill(0);
+ QPainter p(&referenceRendering);
+ p.fillRect(10, 10, 100, 100, Qt::blue);
+ p.setPen(Qt::green);
+ p.drawText(20, 20, "some text");
+ p.end();
+
+ TextDrawerThread t;
+ t.start();
+ t.wait();
+
+ QCOMPARE(referenceRendering, t.rendering);
+}
+
+QTEST_MAIN(tst_QPainter)
+
+#include "tst_qpainter.moc"
diff --git a/tests/auto/qpainter/utils/createImages/createImages.pro b/tests/auto/gui/painting/qpainter/utils/createImages/createImages.pro
index ce2d341e92..ce2d341e92 100644
--- a/tests/auto/qpainter/utils/createImages/createImages.pro
+++ b/tests/auto/gui/painting/qpainter/utils/createImages/createImages.pro
diff --git a/tests/auto/qpainter/utils/createImages/main.cpp b/tests/auto/gui/painting/qpainter/utils/createImages/main.cpp
index 418c385717..418c385717 100644
--- a/tests/auto/qpainter/utils/createImages/main.cpp
+++ b/tests/auto/gui/painting/qpainter/utils/createImages/main.cpp
diff --git a/tests/auto/qpainterpath/.gitignore b/tests/auto/gui/painting/qpainterpath/.gitignore
index 4e0e797989..4e0e797989 100644
--- a/tests/auto/qpainterpath/.gitignore
+++ b/tests/auto/gui/painting/qpainterpath/.gitignore
diff --git a/tests/auto/qpainterpath/qpainterpath.pro b/tests/auto/gui/painting/qpainterpath/qpainterpath.pro
index 9708222c99..9708222c99 100644
--- a/tests/auto/qpainterpath/qpainterpath.pro
+++ b/tests/auto/gui/painting/qpainterpath/qpainterpath.pro
diff --git a/tests/auto/qpainterpath/tst_qpainterpath.cpp b/tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp
index 33315adc06..33315adc06 100644
--- a/tests/auto/qpainterpath/tst_qpainterpath.cpp
+++ b/tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp
diff --git a/tests/auto/qpainterpathstroker/.gitignore b/tests/auto/gui/painting/qpainterpathstroker/.gitignore
index e171c5da31..e171c5da31 100644
--- a/tests/auto/qpainterpathstroker/.gitignore
+++ b/tests/auto/gui/painting/qpainterpathstroker/.gitignore
diff --git a/tests/auto/qpainterpathstroker/qpainterpathstroker.pro b/tests/auto/gui/painting/qpainterpathstroker/qpainterpathstroker.pro
index b6f62a2eee..b6f62a2eee 100644
--- a/tests/auto/qpainterpathstroker/qpainterpathstroker.pro
+++ b/tests/auto/gui/painting/qpainterpathstroker/qpainterpathstroker.pro
diff --git a/tests/auto/qpainterpathstroker/tst_qpainterpathstroker.cpp b/tests/auto/gui/painting/qpainterpathstroker/tst_qpainterpathstroker.cpp
index 288263e5d7..288263e5d7 100644
--- a/tests/auto/qpainterpathstroker/tst_qpainterpathstroker.cpp
+++ b/tests/auto/gui/painting/qpainterpathstroker/tst_qpainterpathstroker.cpp
diff --git a/tests/auto/qpathclipper/.gitignore b/tests/auto/gui/painting/qpathclipper/.gitignore
index a689eef0f6..a689eef0f6 100644
--- a/tests/auto/qpathclipper/.gitignore
+++ b/tests/auto/gui/painting/qpathclipper/.gitignore
diff --git a/tests/auto/qpathclipper/pathcompare.h b/tests/auto/gui/painting/qpathclipper/pathcompare.h
index d80c189665..d80c189665 100644
--- a/tests/auto/qpathclipper/pathcompare.h
+++ b/tests/auto/gui/painting/qpathclipper/pathcompare.h
diff --git a/tests/auto/qpathclipper/paths.cpp b/tests/auto/gui/painting/qpathclipper/paths.cpp
index 950c34614e..950c34614e 100644
--- a/tests/auto/qpathclipper/paths.cpp
+++ b/tests/auto/gui/painting/qpathclipper/paths.cpp
diff --git a/tests/auto/qpathclipper/paths.h b/tests/auto/gui/painting/qpathclipper/paths.h
index 89ef785857..89ef785857 100644
--- a/tests/auto/qpathclipper/paths.h
+++ b/tests/auto/gui/painting/qpathclipper/paths.h
diff --git a/tests/auto/gui/painting/qpathclipper/qpathclipper.pro b/tests/auto/gui/painting/qpathclipper/qpathclipper.pro
new file mode 100644
index 0000000000..85f4a58dcd
--- /dev/null
+++ b/tests/auto/gui/painting/qpathclipper/qpathclipper.pro
@@ -0,0 +1,11 @@
+load(qttest_p4)
+INCLUDEPATH += .
+HEADERS += paths.h
+SOURCES += tst_qpathclipper.cpp paths.cpp
+QT += gui-private
+
+requires(contains(QT_CONFIG,private_tests))
+
+unix:!mac:!symbian:LIBS+=-lm
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qpathclipper/tst_qpathclipper.cpp b/tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp
index 57a56b2d1a..57a56b2d1a 100644
--- a/tests/auto/qpathclipper/tst_qpathclipper.cpp
+++ b/tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp
diff --git a/tests/auto/qpen/.gitignore b/tests/auto/gui/painting/qpen/.gitignore
index a9187367dc..a9187367dc 100644
--- a/tests/auto/qpen/.gitignore
+++ b/tests/auto/gui/painting/qpen/.gitignore
diff --git a/tests/auto/qpen/qpen.pro b/tests/auto/gui/painting/qpen/qpen.pro
index 53bd5e2b6e..53bd5e2b6e 100644
--- a/tests/auto/qpen/qpen.pro
+++ b/tests/auto/gui/painting/qpen/qpen.pro
diff --git a/tests/auto/qpen/tst_qpen.cpp b/tests/auto/gui/painting/qpen/tst_qpen.cpp
index 64d725bc50..64d725bc50 100644
--- a/tests/auto/qpen/tst_qpen.cpp
+++ b/tests/auto/gui/painting/qpen/tst_qpen.cpp
diff --git a/tests/auto/qpolygon/.gitignore b/tests/auto/gui/painting/qpolygon/.gitignore
index 7c9d48c848..7c9d48c848 100644
--- a/tests/auto/qpolygon/.gitignore
+++ b/tests/auto/gui/painting/qpolygon/.gitignore
diff --git a/tests/auto/gui/painting/qpolygon/qpolygon.pro b/tests/auto/gui/painting/qpolygon/qpolygon.pro
new file mode 100644
index 0000000000..186b704d17
--- /dev/null
+++ b/tests/auto/gui/painting/qpolygon/qpolygon.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qpolygon.cpp
+
+unix:!mac:!symbian:LIBS+=-lm
+
+
diff --git a/tests/auto/qpolygon/tst_qpolygon.cpp b/tests/auto/gui/painting/qpolygon/tst_qpolygon.cpp
index f47073a048..f47073a048 100644
--- a/tests/auto/qpolygon/tst_qpolygon.cpp
+++ b/tests/auto/gui/painting/qpolygon/tst_qpolygon.cpp
diff --git a/tests/auto/qprinter/.gitignore b/tests/auto/gui/painting/qprinter/.gitignore
index 85de0e9675..85de0e9675 100644
--- a/tests/auto/qprinter/.gitignore
+++ b/tests/auto/gui/painting/qprinter/.gitignore
diff --git a/tests/auto/gui/painting/qprinter/qprinter.pro b/tests/auto/gui/painting/qprinter/qprinter.pro
new file mode 100644
index 0000000000..da02bdd7d6
--- /dev/null
+++ b/tests/auto/gui/painting/qprinter/qprinter.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT += printsupport widgets
+SOURCES += tst_qprinter.cpp
+
+mac*:CONFIG+=insignificant_test
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/gui/painting/qprinter/tst_qprinter.cpp b/tests/auto/gui/painting/qprinter/tst_qprinter.cpp
new file mode 100644
index 0000000000..a6b6895981
--- /dev/null
+++ b/tests/auto/gui/painting/qprinter/tst_qprinter.cpp
@@ -0,0 +1,1044 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <qprinter.h>
+#include <qpagesetupdialog.h>
+#include <qpainter.h>
+#include <qprintdialog.h>
+#include <qprinterinfo.h>
+#include <qvariant.h>
+#include <qpainter.h>
+#include <qprintengine.h>
+
+#include <math.h>
+
+#ifdef Q_WS_WIN
+#include <windows.h>
+#endif
+
+Q_DECLARE_METATYPE(QRect)
+
+QT_FORWARD_DECLARE_CLASS(QPrinter)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#ifndef QT_NO_PRINTER
+
+class tst_QPrinter : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QPrinter();
+ virtual ~tst_QPrinter();
+
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void getSetCheck();
+// Add your testfunctions and testdata create functions here
+ void testPageSize();
+ void testPageRectAndPaperRect();
+ void testPageRectAndPaperRect_data();
+ void testSetOptions();
+ void testMargins_data();
+ void testMargins();
+ void testNonExistentPrinter();
+ void testPageSetupDialog();
+ void testMulitpleSets_data();
+ void testMulitpleSets();
+ void testPageMargins_data();
+ void testPageMargins();
+ void changingOutputFormat();
+ void outputFormatFromSuffix();
+ void setGetPaperSize();
+ void valuePreservation();
+ void errorReporting();
+ void testCustomPageSizes();
+ void printDialogCompleter();
+
+ void testCopyCount();
+ void testCurrentPage();
+
+ void taskQTBUG4497_reusePrinterOnDifferentFiles();
+ void testPdfTitle();
+
+private:
+};
+
+// Testing get/set functions
+void tst_QPrinter::getSetCheck()
+{
+ QPrinter obj1;
+ // OutputFormat QPrinter::outputFormat()
+ // void QPrinter::setOutputFormat(OutputFormat)
+ obj1.setOutputFormat(QPrinter::OutputFormat(QPrinter::PdfFormat));
+ QCOMPARE(QPrinter::OutputFormat(QPrinter::PdfFormat), obj1.outputFormat());
+
+ // bool QPrinter::collateCopies()
+ // void QPrinter::setCollateCopies(bool)
+ obj1.setCollateCopies(false);
+ QCOMPARE(false, obj1.collateCopies());
+ obj1.setCollateCopies(true);
+ QCOMPARE(true, obj1.collateCopies());
+
+ obj1.setColorMode(QPrinter::GrayScale);
+ QCOMPARE(obj1.colorMode(), QPrinter::GrayScale);
+ obj1.setColorMode(QPrinter::Color);
+ QCOMPARE(obj1.colorMode(), QPrinter::Color);
+
+ obj1.setCreator(QString::fromLatin1("RandomQtUser"));
+ QCOMPARE(obj1.creator(), QString::fromLatin1("RandomQtUser"));
+
+ obj1.setDocName(QString::fromLatin1("RandomQtDocument"));
+ QCOMPARE(obj1.docName(), QString::fromLatin1("RandomQtDocument"));
+
+ obj1.setDoubleSidedPrinting(true);
+ QCOMPARE(obj1.doubleSidedPrinting(), true);
+ obj1.setDoubleSidedPrinting(false);
+ QCOMPARE(obj1.doubleSidedPrinting(), false);
+
+ obj1.setFromTo(1, 4);
+ QCOMPARE(obj1.fromPage(), 1);
+ QCOMPARE(obj1.toPage(), 4);
+
+ obj1.setFullPage(true);
+ QCOMPARE(obj1.fullPage(), true);
+ obj1.setFullPage(false);
+ QCOMPARE(obj1.fullPage(), false);
+
+ obj1.setOrientation(QPrinter::Landscape);
+ QCOMPARE(obj1.orientation(), QPrinter::Landscape);
+ obj1.setOrientation(QPrinter::Portrait);
+ QCOMPARE(obj1.orientation(), QPrinter::Portrait);
+
+ obj1.setOutputFileName(QString::fromLatin1("RandomQtName"));
+ QCOMPARE(obj1.outputFileName(), QString::fromLatin1("RandomQtName"));
+
+ obj1.setPageOrder(QPrinter::FirstPageFirst);
+ QCOMPARE(obj1.pageOrder(), QPrinter::FirstPageFirst);
+ obj1.setPageOrder(QPrinter::LastPageFirst);
+ QCOMPARE(obj1.pageOrder(), QPrinter::LastPageFirst);
+
+ obj1.setPaperSource(QPrinter::Cassette);
+ QCOMPARE(obj1.paperSource(), QPrinter::Cassette);
+ obj1.setPaperSource(QPrinter::Middle);
+ QCOMPARE(obj1.paperSource(), QPrinter::Middle);
+
+#ifdef Q_OS_UNIX
+ obj1.setPrintProgram(QString::fromLatin1("/bin/true"));
+ QCOMPARE(obj1.printProgram(), QString::fromLatin1("/bin/true"));
+
+ obj1.setPrinterSelectionOption(QString::fromLatin1("--option"));
+ QCOMPARE(obj1.printerSelectionOption(), QString::fromLatin1("--option"));
+#endif
+
+ obj1.setPrinterName(QString::fromLatin1("myPrinter"));
+ QCOMPARE(obj1.printerName(), QString::fromLatin1("myPrinter"));
+
+ // bool QPrinter::fontEmbeddingEnabled()
+ // void QPrinter::setFontEmbeddingEnabled(bool)
+ obj1.setFontEmbeddingEnabled(false);
+ QCOMPARE(false, obj1.fontEmbeddingEnabled());
+ obj1.setFontEmbeddingEnabled(true);
+ QCOMPARE(true, obj1.fontEmbeddingEnabled());
+
+ // PageSize QPrinter::pageSize()
+ // void QPrinter::setPageSize(PageSize)
+ obj1.setPageSize(QPrinter::PageSize(QPrinter::A4));
+ QCOMPARE(QPrinter::PageSize(QPrinter::A4), obj1.pageSize());
+ obj1.setPageSize(QPrinter::PageSize(QPrinter::Letter));
+ QCOMPARE(QPrinter::PageSize(QPrinter::Letter), obj1.pageSize());
+ obj1.setPageSize(QPrinter::PageSize(QPrinter::Legal));
+ QCOMPARE(QPrinter::PageSize(QPrinter::Legal), obj1.pageSize());
+
+ // PrintRange QPrinter::printRange()
+ // void QPrinter::setPrintRange(PrintRange)
+ obj1.setPrintRange(QPrinter::PrintRange(QPrinter::AllPages));
+ QCOMPARE(QPrinter::PrintRange(QPrinter::AllPages), obj1.printRange());
+ obj1.setPrintRange(QPrinter::PrintRange(QPrinter::Selection));
+ QCOMPARE(QPrinter::PrintRange(QPrinter::Selection), obj1.printRange());
+ obj1.setPrintRange(QPrinter::PrintRange(QPrinter::PageRange));
+ QCOMPARE(QPrinter::PrintRange(QPrinter::PageRange), obj1.printRange());
+}
+
+tst_QPrinter::tst_QPrinter()
+{
+}
+
+tst_QPrinter::~tst_QPrinter()
+{
+}
+
+// initTestCase will be executed once before the first testfunction is executed.
+void tst_QPrinter::initTestCase()
+{
+// TODO: Add testcase generic initialization code here.
+// suggestion:
+// testWidget = new QPrinter(0,"testWidget");
+// testWidget->setFixedSize(200, 200);
+// qApp->setMainWidget(testWidget);
+// testWidget->show();
+}
+
+// cleanupTestCase will be executed once after the last testfunction is executed.
+void tst_QPrinter::cleanupTestCase()
+{
+// TODO: Add testcase generic cleanup code here.
+// suggestion:
+// testWidget->hide();
+// qApp->setMainWidget(0);
+// delete testWidget;
+}
+
+// init() will be executed immediately before each testfunction is run.
+void tst_QPrinter::init()
+{
+// TODO: Add testfunction specific initialization code here.
+}
+
+// cleanup() will be executed immediately after each testfunction is run.
+void tst_QPrinter::cleanup()
+{
+// TODO: Add testfunction specific cleanup code here.
+}
+
+#define MYCOMPARE(a, b) QCOMPARE(QVariant((int)a), QVariant((int)b))
+
+void tst_QPrinter::testPageSetupDialog()
+{
+ // Make sure this doesn't crash at least
+ {
+ QPrinter printer;
+ QPageSetupDialog dialog(&printer);
+ }
+}
+
+void tst_QPrinter::testPageSize()
+{
+#if defined (Q_WS_WIN)
+ QPrinter prn;
+
+ prn.setPageSize(QPrinter::Letter);
+ MYCOMPARE(prn.pageSize(), QPrinter::Letter);
+ MYCOMPARE(prn.winPageSize(), DMPAPER_LETTER);
+
+ prn.setPageSize(QPrinter::A4);
+ MYCOMPARE(prn.pageSize(), QPrinter::A4);
+ MYCOMPARE(prn.winPageSize(), DMPAPER_A4);
+
+ prn.setWinPageSize(DMPAPER_LETTER);
+ MYCOMPARE(prn.winPageSize(), DMPAPER_LETTER);
+ MYCOMPARE(prn.pageSize(), QPrinter::Letter);
+
+ prn.setWinPageSize(DMPAPER_A4);
+ MYCOMPARE(prn.winPageSize(), DMPAPER_A4);
+ MYCOMPARE(prn.pageSize(), QPrinter::A4);
+#else
+ QSKIP("QPrinter::winPageSize() does not exist for nonwindows platforms", SkipAll);
+#endif
+}
+
+void tst_QPrinter::testPageRectAndPaperRect_data()
+{
+ QTest::addColumn<int>("orientation");
+ QTest::addColumn<bool>("withPainter");
+ QTest::addColumn<int>("resolution");
+ QTest::addColumn<bool>("doPaperRect");
+
+ // paperrect
+ QTest::newRow("paperRect0") << int(QPrinter::Portrait) << true << 300 << true;
+ QTest::newRow("paperRect1") << int(QPrinter::Portrait) << false << 300 << true;
+ QTest::newRow("paperRect2") << int(QPrinter::Landscape) << true << 300 << true;
+ QTest::newRow("paperRect3") << int(QPrinter::Landscape) << false << 300 << true;
+ QTest::newRow("paperRect4") << int(QPrinter::Portrait) << true << 600 << true;
+ QTest::newRow("paperRect5") << int(QPrinter::Portrait) << false << 600 << true;
+ QTest::newRow("paperRect6") << int(QPrinter::Landscape) << true << 600 << true;
+ QTest::newRow("paperRect7") << int(QPrinter::Landscape) << false << 600 << true;
+ QTest::newRow("paperRect8") << int(QPrinter::Portrait) << true << 1200 << true;
+ QTest::newRow("paperRect9") << int(QPrinter::Portrait) << false << 1200 << true;
+ QTest::newRow("paperRect10") << int(QPrinter::Landscape) << true << 1200 << true;
+ QTest::newRow("paperRect11") << int(QPrinter::Landscape) << false << 1200 << true;
+
+ // page rect
+ QTest::newRow("pageRect0") << int(QPrinter::Portrait) << true << 300 << false;
+ QTest::newRow("pageRect1") << int(QPrinter::Portrait) << false << 300 << false;
+ QTest::newRow("pageRect2") << int(QPrinter::Landscape) << true << 300 << false;
+ QTest::newRow("pageRect3") << int(QPrinter::Landscape) << false << 300 << false;
+ QTest::newRow("pageRect4") << int(QPrinter::Portrait) << true << 600 << false;
+ QTest::newRow("pageRect5") << int(QPrinter::Portrait) << false << 600 << false;
+ QTest::newRow("pageRect6") << int(QPrinter::Landscape) << true << 600 << false;
+ QTest::newRow("pageRect7") << int(QPrinter::Landscape) << false << 600 << false;
+ QTest::newRow("pageRect8") << int(QPrinter::Portrait) << true << 1200 << false;
+ QTest::newRow("pageRect9") << int(QPrinter::Portrait) << false << 1200 << false;
+ QTest::newRow("pageRect10") << int(QPrinter::Landscape) << true << 1200 << false;
+ QTest::newRow("pageRect11") << int(QPrinter::Landscape) << false << 1200 << false;
+}
+
+void tst_QPrinter::testPageRectAndPaperRect()
+{
+ QFETCH(bool, withPainter);
+ QFETCH(int, orientation);
+ QFETCH(int, resolution);
+ QFETCH(bool, doPaperRect);
+
+ QPainter *painter = 0;
+ QPrinter printer(QPrinter::HighResolution);
+ printer.setOrientation(QPrinter::Orientation(orientation));
+ printer.setOutputFileName("silly");
+
+ QRect pageRect = doPaperRect ? printer.paperRect() : printer.pageRect();
+ float inchesX = float(pageRect.width()) / float(printer.resolution());
+ float inchesY = float(pageRect.height()) / float(printer.resolution());
+ printer.setResolution(resolution);
+ if (withPainter)
+ painter = new QPainter(&printer);
+
+ QRect otherRect = doPaperRect ? printer.paperRect() : printer.pageRect();
+ float otherInchesX = float(otherRect.width()) / float(printer.resolution());
+ float otherInchesY = float(otherRect.height()) / float(printer.resolution());
+ if (painter != 0)
+ delete painter;
+
+ QVERIFY(qAbs(otherInchesX - inchesX) < 0.01);
+ QVERIFY(qAbs(otherInchesY - inchesY) < 0.01);
+
+ QVERIFY(printer.orientation() == QPrinter::Portrait || pageRect.width() > pageRect.height());
+ QVERIFY(printer.orientation() != QPrinter::Portrait || pageRect.width() < pageRect.height());
+}
+
+void tst_QPrinter::testSetOptions()
+{
+ QPrinter prn;
+ QPrintDialog dlg(&prn);
+
+ // Verify default values
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), TRUE);
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), FALSE);
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), TRUE);
+
+ dlg.setEnabledOptions(QAbstractPrintDialog::PrintPageRange);
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), FALSE);
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), FALSE);
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), TRUE);
+
+ dlg.setEnabledOptions((QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintSelection
+ | QAbstractPrintDialog::PrintPageRange)));
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), FALSE);
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), TRUE);
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), TRUE);
+
+ dlg.setEnabledOptions(QAbstractPrintDialog::PrintSelection);
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), FALSE);
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), TRUE);
+ MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), FALSE);
+}
+
+void tst_QPrinter::testMargins_data()
+{
+ QTest::addColumn<int>("orientation");
+ QTest::addColumn<bool>("fullpage");
+ QTest::addColumn<int>("pagesize");
+ QTest::addColumn<int>("width");
+ QTest::addColumn<int>("height");
+ QTest::addColumn<bool>("withPainter");
+
+ QTest::newRow("data0") << int(QPrinter::Portrait) << true << int(QPrinter::A4) << 210 << 297 << false;
+ QTest::newRow("data1") << int(QPrinter::Landscape) << true << int(QPrinter::A4) << 297 << 210 << false;
+ QTest::newRow("data2") << int(QPrinter::Landscape) << false << int(QPrinter::A4) << 297 << 210 << false;
+ QTest::newRow("data3") << int(QPrinter::Portrait) << false << int(QPrinter::A4) << 210 << 297 << false;
+ QTest::newRow("data4") << int(QPrinter::Portrait) << true << int(QPrinter::A4) << 210 << 297 << true;
+ QTest::newRow("data5") << int(QPrinter::Landscape) << true << int(QPrinter::A4) << 297 << 210 << true;
+ QTest::newRow("data6") << int(QPrinter::Landscape) << false << int(QPrinter::A4) << 297 << 210 << true;
+ QTest::newRow("data7") << int(QPrinter::Portrait) << false << int(QPrinter::A4) << 210 << 297 << true;
+}
+
+void tst_QPrinter::testMargins()
+{
+ QFETCH(bool, withPainter);
+ QFETCH(int, orientation);
+ QFETCH(int, pagesize);
+ QFETCH(int, width);
+ QFETCH(int, height);
+ QFETCH(bool, fullpage);
+ Q_UNUSED(width);
+ Q_UNUSED(height);
+ QPrinter printer;
+ QPainter *painter = 0;
+ printer.setOutputFileName("silly");
+ printer.setOrientation((QPrinter::Orientation)orientation);
+ printer.setFullPage(fullpage);
+ printer.setPageSize((QPrinter::PageSize)pagesize);
+ if (withPainter)
+ painter = new QPainter(&printer);
+
+ if (painter)
+ delete painter;
+}
+
+void tst_QPrinter::testNonExistentPrinter()
+{
+#if defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_MAC)
+ QSKIP("QPrinter::testNonExistentPrinter() is not relevant for this platform", SkipAll);
+#else
+ QPrinter printer;
+ QPainter painter;
+
+ // Make sure it doesn't crash on setting or getting properties
+ printer.setPrinterName("some non existing printer");
+ printer.setPageSize(QPrinter::A4);
+ printer.setOrientation(QPrinter::Portrait);
+ printer.setFullPage(true);
+ printer.pageSize();
+ printer.orientation();
+ printer.fullPage();
+ printer.setCopyCount(1);
+ printer.printerName();
+
+ // nor metrics
+ QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmWidth), 0);
+ QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmHeight), 0);
+ QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmWidthMM), 0);
+ QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmHeightMM), 0);
+ QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmNumColors), 0);
+ QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmDepth), 0);
+ QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmDpiX), 0);
+ QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmDpiY), 0);
+ QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmPhysicalDpiX), 0);
+ QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmPhysicalDpiY), 0);
+
+ QVERIFY(!painter.begin(&printer));
+#endif
+}
+
+
+void tst_QPrinter::testMulitpleSets_data()
+{
+ QTest::addColumn<int>("resolution");
+ QTest::addColumn<int>("pageSize");
+ QTest::addColumn<int>("widthMMAfter");
+ QTest::addColumn<int>("heightMMAfter");
+
+
+ QTest::newRow("lowRes") << int(QPrinter::ScreenResolution) << int(QPrinter::A4) << 210 << 297;
+ QTest::newRow("lowResLetter") << int(QPrinter::ScreenResolution) << int(QPrinter::Letter) << 216 << 279;
+ QTest::newRow("lowResA5") << int(QPrinter::ScreenResolution) << int(QPrinter::A5) << 148 << 210;
+ QTest::newRow("midRes") << int(QPrinter::PrinterResolution) << int(QPrinter::A4) << 210 << 297;
+ QTest::newRow("midResLetter") << int(QPrinter::PrinterResolution) << int(QPrinter::Letter) << 216 << 279;
+ QTest::newRow("midResA5") << int(QPrinter::PrinterResolution) << int(QPrinter::A5) << 148 << 210;
+ QTest::newRow("highRes") << int(QPrinter::HighResolution) << int(QPrinter::A4) << 210 << 297;
+ QTest::newRow("highResLetter") << int(QPrinter::HighResolution) << int(QPrinter::Letter) << 216 << 279;
+ QTest::newRow("highResA5") << int(QPrinter::HighResolution) << int(QPrinter::A5) << 148 << 210;
+}
+
+static void computePageValue(const QPrinter &printer, int &retWidth, int &retHeight)
+{
+ const double Inch2MM = 25.4;
+
+ double width = double(printer.paperRect().width()) / printer.logicalDpiX() * Inch2MM;
+ double height = double(printer.paperRect().height()) / printer.logicalDpiY() * Inch2MM;
+ retWidth = qRound(width);
+ retHeight = qRound(height);
+}
+
+void tst_QPrinter::testMulitpleSets()
+{
+ // A very simple test, but Mac needs to have its format "validated" if the format is changed
+ // This takes care of that.
+ QFETCH(int, resolution);
+ QFETCH(int, pageSize);
+ QFETCH(int, widthMMAfter);
+ QFETCH(int, heightMMAfter);
+
+
+ QPrinter::PrinterMode mode = QPrinter::PrinterMode(resolution);
+ QPrinter::PageSize printerPageSize = QPrinter::PageSize(pageSize);
+ QPrinter printer(mode);
+ printer.setFullPage(true);
+
+ int paperWidth, paperHeight;
+ //const int Tolerance = 2;
+
+ computePageValue(printer, paperWidth, paperHeight);
+ printer.setPageSize(printerPageSize);
+
+ if (printer.pageSize() != printerPageSize) {
+ QSKIP("Current page size is not supported on this printer", SkipSingle);
+ return;
+ }
+
+ QCOMPARE(printer.widthMM(), widthMMAfter);
+ QCOMPARE(printer.heightMM(), heightMMAfter);
+
+ computePageValue(printer, paperWidth, paperHeight);
+
+ QVERIFY(qAbs(paperWidth - widthMMAfter) <= 2);
+ QVERIFY(qAbs(paperHeight - heightMMAfter) <= 2);
+
+ // Set it again and see if it still works.
+ printer.setPageSize(printerPageSize);
+ QCOMPARE(printer.widthMM(), widthMMAfter);
+ QCOMPARE(printer.heightMM(), heightMMAfter);
+
+ printer.setOrientation(QPrinter::Landscape);
+ computePageValue(printer, paperWidth, paperHeight);
+ QVERIFY(qAbs(paperWidth - heightMMAfter) <= 2);
+ QVERIFY(qAbs(paperHeight - widthMMAfter) <= 2);
+}
+
+void tst_QPrinter::changingOutputFormat()
+{
+#if QT_VERSION < 0x050000
+ QPrinter p;
+ p.setOutputFormat(QPrinter::PostScriptFormat);
+ p.setPageSize(QPrinter::A8);
+ p.setOutputFormat(QPrinter::PdfFormat);
+ QCOMPARE(p.pageSize(), QPrinter::A8);
+#endif
+}
+
+void tst_QPrinter::outputFormatFromSuffix()
+{
+ if (QPrinterInfo::availablePrinters().size() == 0)
+ QSKIP("No printers available.", SkipAll);
+ QPrinter p;
+ QVERIFY(p.outputFormat() == QPrinter::NativeFormat);
+ p.setOutputFileName("test.pdf");
+ QVERIFY(p.outputFormat() == QPrinter::PdfFormat);
+ p.setOutputFileName(QString());
+ QVERIFY(p.outputFormat() == QPrinter::NativeFormat);
+}
+
+void tst_QPrinter::setGetPaperSize()
+{
+ QPrinter p;
+ p.setOutputFormat(QPrinter::PdfFormat);
+ QSizeF size(500, 10);
+ p.setPaperSize(size, QPrinter::Millimeter);
+ QCOMPARE(p.paperSize(QPrinter::Millimeter), size);
+ QSizeF ptSize = p.paperSize(QPrinter::Point);
+ //qDebug() << ptSize;
+ QVERIFY(qAbs(ptSize.width() - size.width() * (72/25.4)) < 1E-4);
+ QVERIFY(qAbs(ptSize.height() - size.height() * (72/25.4)) < 1E-4);
+}
+
+void tst_QPrinter::testPageMargins_data()
+{
+ QTest::addColumn<qreal>("left");
+ QTest::addColumn<qreal>("top");
+ QTest::addColumn<qreal>("right");
+ QTest::addColumn<qreal>("bottom");
+ QTest::addColumn<int>("unit");
+
+ QTest::newRow("data0") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Millimeter);
+ QTest::newRow("data1") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Point);
+ QTest::newRow("data2") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Inch);
+ QTest::newRow("data3") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Pica);
+ QTest::newRow("data4") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Didot);
+ QTest::newRow("data5") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Cicero);
+}
+
+void tst_QPrinter::testPageMargins()
+{
+ QPrinter obj1;
+
+ qreal toMillimeters[6];
+ toMillimeters[QPrinter::Millimeter] = 1;
+ toMillimeters[QPrinter::Point] = 0.352777778;
+ toMillimeters[QPrinter::Inch] = 25.4;
+ toMillimeters[QPrinter::Pica] = 4.23333333;
+ toMillimeters[QPrinter::Didot] = 0.376;
+ toMillimeters[QPrinter::Cicero] = 4.51166667;
+
+ QFETCH(qreal, left);
+ QFETCH(qreal, top);
+ QFETCH(qreal, right);
+ QFETCH(qreal, bottom);
+ QFETCH(int, unit);
+
+ qreal nLeft, nTop, nRight, nBottom;
+
+ obj1.setPageMargins(left, top, right, bottom, static_cast<QPrinter::Unit>(unit));
+
+ qreal tolerance = 0.05;
+
+ obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Millimeter);
+ QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Millimeter]) < tolerance);
+ QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Millimeter]) < tolerance);
+ QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Millimeter]) < tolerance);
+ QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Millimeter]) < tolerance);
+
+ obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Point);
+ QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Point]) < tolerance);
+ QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Point]) < tolerance);
+ QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Point]) < tolerance);
+ QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Point]) < tolerance);
+
+ obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Inch);
+ QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Inch]) < tolerance);
+ QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Inch]) < tolerance);
+ QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Inch]) < tolerance);
+ QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Inch]) < tolerance);
+
+ obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Pica);
+ QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Pica]) < tolerance);
+ QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Pica]) < tolerance);
+ QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Pica]) < tolerance);
+ QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Pica]) < tolerance);
+
+ obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Didot);
+ QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Didot]) < tolerance);
+ QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Didot]) < tolerance);
+ QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Didot]) < tolerance);
+ QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Didot]) < tolerance);
+
+ obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Cicero);
+ QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Cicero]) < tolerance);
+ QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Cicero]) < tolerance);
+ QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Cicero]) < tolerance);
+ QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Cicero]) < tolerance);
+}
+
+void tst_QPrinter::valuePreservation()
+{
+ QPrinter::OutputFormat oldFormat = QPrinter::PdfFormat;
+ QPrinter::OutputFormat newFormat = QPrinter::NativeFormat; // TODO: Correct?
+
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ bool status = printer.collateCopies();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.collateCopies(), status);
+
+ printer.setCollateCopies(!status);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.collateCopies(), !status);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.collateCopies(), !status);
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QPrinter::ColorMode status = printer.colorMode();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.colorMode(), status);
+
+ printer.setColorMode(QPrinter::ColorMode(!status));
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.colorMode(), QPrinter::ColorMode(!status));
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.colorMode(), QPrinter::ColorMode(!status));
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QString status = printer.creator();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.creator(), status);
+
+ status = QString::fromLatin1("Mr. Test");
+ printer.setCreator(status);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.creator(), status);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.creator(), status);
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QString status = printer.docName();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.docName(), status);
+
+ status = QString::fromLatin1("Test document");
+ printer.setDocName(status);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.docName(), status);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.docName(), status);
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ bool status = printer.doubleSidedPrinting();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.doubleSidedPrinting(), status);
+
+ printer.setDoubleSidedPrinting(!status);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.doubleSidedPrinting(), !status);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.doubleSidedPrinting(), !status);
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ bool status = printer.fontEmbeddingEnabled();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.fontEmbeddingEnabled(), status);
+
+ printer.setFontEmbeddingEnabled(!status);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.fontEmbeddingEnabled(), !status);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.fontEmbeddingEnabled(), !status);
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ bool status = printer.fullPage();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.fullPage(), status);
+
+ printer.setFullPage(!status);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.fullPage(), !status);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.fullPage(), !status);
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QPrinter::Orientation status = printer.orientation();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.orientation(), status);
+
+ printer.setOrientation(QPrinter::Orientation(!status));
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.orientation(), QPrinter::Orientation(!status));
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.orientation(), QPrinter::Orientation(!status));
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QString status = printer.outputFileName();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.outputFileName(), status);
+
+ status = QString::fromLatin1("Test file");
+ printer.setOutputFileName(status);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.outputFileName(), status);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.outputFileName(), status);
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QPrinter::PageOrder status = printer.pageOrder();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.pageOrder(), status);
+
+ printer.setPageOrder(QPrinter::PageOrder(!status));
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.pageOrder(), QPrinter::PageOrder(!status));
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.pageOrder(), QPrinter::PageOrder(!status));
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QPrinter::PageSize status = printer.pageSize();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.pageSize(), status);
+
+ printer.setPageSize(QPrinter::B5);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.pageSize(), QPrinter::B5);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.pageSize(), QPrinter::B5);
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QPrinter::PaperSource status = printer.paperSource();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.paperSource(), status);
+
+ printer.setPaperSource(QPrinter::Manual);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.paperSource(), QPrinter::Manual);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.paperSource(), QPrinter::Manual);
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QString status = printer.printProgram();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.printProgram(), status);
+
+ status = QString::fromLatin1("/usr/local/bin/lpr");
+ printer.setPrintProgram(status);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.printProgram(), status);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.printProgram(), status);
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QPrinter::PrintRange status = printer.printRange();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.printRange(), status);
+
+ printer.setPrintRange(QPrinter::PrintRange(!status));
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.printRange(), QPrinter::PrintRange(!status));
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.printRange(), QPrinter::PrintRange(!status));
+ }
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QString status = printer.printerName();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.printerName(), status);
+
+ status = QString::fromLatin1("SuperDuperPrinter");
+ printer.setPrinterName(status);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.printerName(), status);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.printerName(), status);
+ }
+#ifndef Q_OS_WIN
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ QString status = printer.printerSelectionOption();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.printerSelectionOption(), status);
+
+ status = QString::fromLatin1("Optional option");
+ printer.setPrinterSelectionOption(status);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.printerSelectionOption(), status);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.printerSelectionOption(), status);
+ }
+#endif
+ {
+ QPrinter printer;
+ printer.setOutputFormat(oldFormat);
+ int status = printer.resolution();
+ printer.setOutputFormat(newFormat);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.resolution(), status);
+
+ printer.setResolution(status-150);
+ printer.setOutputFormat(newFormat);
+ QCOMPARE(printer.resolution(), status-150);
+ printer.setOutputFormat(oldFormat);
+ QCOMPARE(printer.resolution(), status-150);
+ }
+}
+
+void tst_QPrinter::errorReporting()
+{
+ QPrinter p;
+ p.setOutputFormat(QPrinter::PdfFormat);
+ QCOMPARE(p.isValid(), true);
+ QPainter painter;
+#ifndef Q_WS_WIN
+ // not sure how to choose a never-writable file on windows. But its QFile behavior anyway, so lets rely on it failing elsewhere
+ p.setOutputFileName("/foobar/nonwritable.pdf");
+ QCOMPARE(painter.begin(&p), false); // it should check the output file is writable
+#endif
+ p.setOutputFileName("test.pdf");
+ QCOMPARE(painter.begin(&p), true); // it should check the output
+ QCOMPARE(p.isValid(), true);
+ painter.end();
+}
+
+void tst_QPrinter::testCustomPageSizes()
+{
+ QPrinter p;
+
+ QSizeF customSize(8.5, 11.0);
+ p.setPaperSize(customSize, QPrinter::Inch);
+
+ QSizeF paperSize = p.paperSize(QPrinter::Inch);
+ QCOMPARE(paperSize, customSize);
+
+ QPrinter p2(QPrinter::HighResolution);
+ p2.setPaperSize(customSize, QPrinter::Inch);
+ paperSize = p.paperSize(QPrinter::Inch);
+ QCOMPARE(paperSize, customSize);
+}
+
+void tst_QPrinter::printDialogCompleter()
+{
+#if defined(QT_NO_COMPLETER) || defined(QT_NO_FILEDIALOG)
+ QSKIP("QT_NO_COMPLETER || QT_NO_FILEDIALOG: Auto-complete turned off in QPrinterDialog.", QTest::SkipAll);
+#else
+ QPrintDialog dialog;
+ dialog.printer()->setOutputFileName("file.pdf");
+ dialog.setEnabledOptions(QAbstractPrintDialog::PrintToFile);
+ dialog.show();
+
+ QTest::qWait(100);
+
+ QTest::keyClick(&dialog, Qt::Key_Tab);
+ QTest::keyClick(&dialog, 'P');
+ // The test passes if it doesn't crash.
+#endif
+}
+
+void tst_QPrinter::testCopyCount()
+{
+ QPrinter p;
+ p.setCopyCount(15);
+ QCOMPARE(p.copyCount(), 15);
+}
+
+static void printPage(QPainter *painter)
+{
+ painter->setPen(QPen(Qt::black, 4));
+ painter->drawRect(50, 60, 70, 80);
+}
+
+void tst_QPrinter::taskQTBUG4497_reusePrinterOnDifferentFiles()
+{
+ QPrinter printer;
+ {
+
+ printer.setOutputFileName("out1.ps");
+ QPainter painter(&printer);
+ printPage(&painter);
+
+ }
+ {
+
+ printer.setOutputFileName("out2.ps");
+ QPainter painter(&printer);
+ printPage(&painter);
+
+ }
+ QFile file1("out1.ps");
+ QVERIFY(file1.open(QIODevice::ReadOnly));
+
+ QFile file2("out2.ps");
+ QVERIFY(file2.open(QIODevice::ReadOnly));
+
+ QCOMPARE(file1.readAll(), file2.readAll());
+}
+
+void tst_QPrinter::testCurrentPage()
+{
+ QPrinter printer;
+ printer.setFromTo(1, 10);
+
+ // Test set print range
+ printer.setPrintRange(QPrinter::CurrentPage);
+ QCOMPARE(printer.printRange(), QPrinter::CurrentPage);
+ QCOMPARE(printer.fromPage(), 1);
+ QCOMPARE(printer.toPage(), 10);
+
+ QPrintDialog dialog(&printer);
+
+ // Test default Current Page option to off
+ QCOMPARE(dialog.isOptionEnabled(QPrintDialog::PrintCurrentPage), false);
+
+ // Test enable Current Page option
+ dialog.setOption(QPrintDialog::PrintCurrentPage);
+ QCOMPARE(dialog.isOptionEnabled(QPrintDialog::PrintCurrentPage), true);
+
+}
+
+void tst_QPrinter::testPdfTitle()
+{
+ // Check the document name is represented correctly in produced pdf
+ {
+ QPainter painter;
+ QPrinter printer;
+ // This string is just the UTF-8 encoding of the string: \()f &oslash; hiragana o
+ const char title[]={0x5c, 0x28, 0x29, 0x66, 0xc3, 0xb8, 0xe3, 0x81, 0x8a, 0x00};
+ printer.setOutputFileName("file.pdf");
+ printer.setDocName(QString::fromUtf8(title));
+ painter.begin(&printer);
+ painter.end();
+ }
+ QFile file("file.pdf");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ // The we expect the title to appear in the PDF as:
+ // ASCII('\title (') UTF16(\\\(\)f &oslash; hiragana o) ASCII(')').
+ // which has the following binary representation
+ const char expected[] = {
+ 0x2f, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x20, 0x28, 0xfe,
+ 0xff, 0x00, 0x5c, 0x5c, 0x00, 0x5c, 0x28, 0x00, 0x5c,
+ 0x29, 0x00, 0x66, 0x00, 0xf8, 0x30, 0x4a, 0x29};
+ QVERIFY(file.readAll().contains(QByteArray(expected, 26)));
+}
+
+QTEST_MAIN(tst_QPrinter)
+#include "tst_qprinter.moc"
+
+#else //QT_NO_PRINTER
+
+QTEST_NOOP_MAIN
+
+#endif //QT_NO_PRINTER
diff --git a/tests/auto/qprinterinfo/.gitignore b/tests/auto/gui/painting/qprinterinfo/.gitignore
index fcef7c1997..fcef7c1997 100644
--- a/tests/auto/qprinterinfo/.gitignore
+++ b/tests/auto/gui/painting/qprinterinfo/.gitignore
diff --git a/tests/auto/gui/painting/qprinterinfo/qprinterinfo.pro b/tests/auto/gui/painting/qprinterinfo/qprinterinfo.pro
new file mode 100644
index 0000000000..8c96e2dcb7
--- /dev/null
+++ b/tests/auto/gui/painting/qprinterinfo/qprinterinfo.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+SOURCES += tst_qprinterinfo.cpp
+
+QT += printsupport network
+
+DEFINES += QT_USE_USING_NAMESPACE
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qprinterinfo/tst_qprinterinfo.cpp b/tests/auto/gui/painting/qprinterinfo/tst_qprinterinfo.cpp
index 7e5da4a6f8..7e5da4a6f8 100644
--- a/tests/auto/qprinterinfo/tst_qprinterinfo.cpp
+++ b/tests/auto/gui/painting/qprinterinfo/tst_qprinterinfo.cpp
diff --git a/tests/auto/qregion/.gitignore b/tests/auto/gui/painting/qregion/.gitignore
index 8be21c3736..8be21c3736 100644
--- a/tests/auto/qregion/.gitignore
+++ b/tests/auto/gui/painting/qregion/.gitignore
diff --git a/tests/auto/qregion/qregion.pro b/tests/auto/gui/painting/qregion/qregion.pro
index 8dbb4844a0..8dbb4844a0 100644
--- a/tests/auto/qregion/qregion.pro
+++ b/tests/auto/gui/painting/qregion/qregion.pro
diff --git a/tests/auto/gui/painting/qregion/tst_qregion.cpp b/tests/auto/gui/painting/qregion/tst_qregion.cpp
new file mode 100644
index 0000000000..58d2034e41
--- /dev/null
+++ b/tests/auto/gui/painting/qregion/tst_qregion.cpp
@@ -0,0 +1,1012 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qregion.h>
+
+#include <qbitmap.h>
+#include <qpainter.h>
+#include <qpolygon.h>
+#ifdef Q_WS_X11
+#include <private/qt_x11_p.h>
+#endif
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QRegion : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QRegion();
+
+private slots:
+ void boundingRect();
+ void rects();
+ void swap();
+ void setRects();
+ void ellipseRegion();
+ void polygonRegion();
+ void bitmapRegion();
+ void intersected_data();
+ void intersected();
+ void emptyPolygonRegion_data();
+ void emptyPolygonRegion();
+
+ void intersects_region_data();
+ void intersects_region();
+ void intersects_rect_data();
+ void intersects_rect();
+ void contains_point();
+
+ void operator_plus_data();
+ void operator_plus();
+ void operator_minus_data();
+ void operator_minus();
+ void operator_intersect_data();
+ void operator_intersect();
+ void operator_xor_data();
+ void operator_xor();
+
+ void rectCount_data();
+ void rectCount();
+
+ void isEmpty_data();
+ void isEmpty();
+#if defined(Q_WS_X11) && defined(QT_BUILD_INTERNAL)
+ void clipRectangles();
+#endif
+
+ void regionFromPath();
+
+ void regionToPath_data();
+ void regionToPath();
+};
+
+Q_DECLARE_METATYPE(QPolygon)
+Q_DECLARE_METATYPE(QVector<QRect>)
+Q_DECLARE_METATYPE(QRegion)
+
+tst_QRegion::tst_QRegion()
+{
+}
+
+void tst_QRegion::boundingRect()
+{
+ {
+ QRect rect;
+ QRegion region( rect );
+ QCOMPARE( region.boundingRect(), rect );
+ }
+ {
+ QRect rect( 10, -20, 30, 40 );
+ QRegion region( rect );
+ QCOMPARE( region.boundingRect(), rect );
+ }
+ {
+ QRect rect(15,25,10,10);
+ QRegion region( rect );
+ QCOMPARE( region.boundingRect(), rect );
+ }
+
+}
+
+void tst_QRegion::rects()
+{
+ {
+ QRect rect;
+ QRegion region( rect );
+ QVERIFY( region.isEmpty() );
+ QVERIFY( region.rects().isEmpty() );
+ }
+ {
+ QRect rect( 10, -20, 30, 40 );
+ QRegion region( rect );
+ QCOMPARE( region.rects().count(), 1 );
+ QCOMPARE( region.rects()[0], rect );
+ }
+ {
+ QRect r( QPoint(10, 10), QPoint(40, 40) );
+ QRegion region( r );
+ QVERIFY( region.contains( QPoint(10,10) ) );
+ QVERIFY( region.contains( QPoint(20,40) ) );
+ QVERIFY( region.contains( QPoint(40,20) ) );
+ QVERIFY( !region.contains( QPoint(20,41) ) );
+ QVERIFY( !region.contains( QPoint(41,20) ) );
+ }
+ {
+ QRect r( 10, 10, 30, 30 );
+ QRegion region( r );
+ QVERIFY( region.contains( QPoint(10,10) ) );
+ QVERIFY( region.contains( QPoint(20,39) ) );
+ QVERIFY( region.contains( QPoint(39,20) ) );
+ QVERIFY( !region.contains( QPoint(20,40) ) );
+ QVERIFY( !region.contains( QPoint(40,20) ) );
+ }
+}
+
+void tst_QRegion::swap()
+{
+ QRegion r1(QRect( 0, 0,10,10));
+ QRegion r2(QRect(10,10,10,10));
+ r1.swap(r2);
+ QCOMPARE(r1.rects().front(), QRect(10,10,10,10));
+ QCOMPARE(r2.rects().front(), QRect( 0, 0,10,10));
+}
+
+void tst_QRegion::setRects()
+{
+ {
+ QRegion region;
+ region.setRects( 0, 0 );
+ QVERIFY( region.rects().isEmpty() );
+ }
+ {
+ QRegion region;
+ QRect rect;
+ region.setRects( &rect, 0 );
+ QVERIFY(region.isEmpty());
+ QVERIFY(region == QRegion());
+ QVERIFY(!region.boundingRect().isValid());
+ QVERIFY(region.rects().isEmpty());
+ }
+ {
+ QRegion region;
+ QRect rect;
+ region.setRects( &rect, 1 );
+ QVERIFY( !region.boundingRect().isValid() );
+ QVERIFY( region.rects().isEmpty() );
+ }
+ {
+ QRegion region;
+ QRect rect( 10, -20, 30, 40 );
+ region.setRects( &rect, 1 );
+ QCOMPARE( region.rects().count(), 1 );
+ QCOMPARE( region.rects()[0], rect );
+ }
+}
+
+void tst_QRegion::ellipseRegion()
+{
+ QRegion region(0, 0, 100, 100, QRegion::Ellipse);
+
+ // These should not be inside the circe
+ QVERIFY(!region.contains(QPoint(13, 13)));
+ QVERIFY(!region.contains(QPoint(13, 86)));
+ QVERIFY(!region.contains(QPoint(86, 13)));
+ QVERIFY(!region.contains(QPoint(86, 86)));
+
+ // These should be inside
+ QVERIFY(region.contains(QPoint(16, 16)));
+ QVERIFY(region.contains(QPoint(16, 83)));
+ QVERIFY(region.contains(QPoint(83, 16)));
+ QVERIFY(region.contains(QPoint(83, 83)));
+
+ // ..a..
+ // .. ..
+ // . .
+ // . .
+ // b c
+ // . .
+ // . .
+ // .. ..
+ // ..d..
+ QVERIFY(region.contains(QPoint(50, 0))); // Mid-top (a)
+ QVERIFY(region.contains(QPoint(0, 50))); // Mid-left (b)
+ QVERIFY(region.contains(QPoint(99, 50))); // Mid-right (c)
+ QVERIFY(region.contains(QPoint(50, 99))); // Mid-bottom (d)
+
+ QRect bounds = region.boundingRect();
+ QCOMPARE(bounds.x(), 0);
+ QCOMPARE(bounds.y(), 0);
+ QCOMPARE(bounds.width(), 100);
+ QCOMPARE(bounds.height(), 100);
+}
+
+void tst_QRegion::polygonRegion()
+{
+ QPolygon pa;
+ {
+ QRegion region ( pa );
+ QVERIFY( region.isEmpty() );
+ }
+ {
+ pa.setPoints( 8, 10, 10, // a____________b
+ 40, 10, // | |
+ 40, 20, // |___ ___|
+ 30, 20, // | |
+ 30, 40, // | |
+ 20, 40, // | |
+ 20, 20, // |____c
+ 10, 20 );
+
+ QRegion region ( pa );
+ QVERIFY( !region.isEmpty() );
+
+ // These should not be inside the circle
+ QVERIFY( !region.contains( QPoint( 9, 9 ) ) );
+ QVERIFY( !region.contains( QPoint( 30, 41 ) ) );
+ QVERIFY( !region.contains( QPoint( 41, 10 ) ) );
+ QVERIFY( !region.contains( QPoint( 31, 21 ) ) );
+
+ // These should be inside
+ QVERIFY( region.contains( QPoint( 10, 10 ) ) ); // Upper-left (a)
+
+ }
+}
+
+void tst_QRegion::emptyPolygonRegion_data()
+{
+ QTest::addColumn<QPolygon>("pa");
+ QTest::addColumn<bool>("isEmpty");
+ QTest::addColumn<int>("numRects");
+ QTest::addColumn<QVector<QRect> >("rects");
+
+ QPolygon pa;
+
+
+ QTest::newRow("no points") << pa << true << 0 << QVector<QRect>();
+ pa = QPolygon() << QPoint(10,10);
+ QTest::newRow("one point") << pa << true << 0 << QVector<QRect>();
+ pa = QPolygon() << QPoint(10,10) << QPoint(10,20);
+ QTest::newRow("two points, horizontal") << pa << true << 0 << QVector<QRect>();
+
+ pa = QPolygon() << QPoint(10,10) << QPoint(20,10);
+ QTest::newRow("two points, vertical") << pa << true << 0 << QVector<QRect>();
+
+ pa = QPolygon() << QPoint(10,10) << QPoint(20,20);
+ QTest::newRow("two points, diagonal") << pa << true << 0 << QVector<QRect>();
+
+ pa = QPolygon() << QPoint(10,10) << QPoint(15,15) << QPoint(10,15) << QPoint(10, 10) ;
+ QVector<QRect> v;
+ v << QRect(10,11,1, 1) << QRect(10,12,2,1) << QRect(10,13,3,1) << QRect(10,14,4,1);
+ QTest::newRow("triangle") << pa << false << 4 << v;
+
+ v.clear();
+ v << QRect(10,10,10,10);
+
+ QTest::newRow("rectangle") << QPolygon(QRect(10,10,10,10)) << false << 1 << v;
+
+}
+
+void tst_QRegion::emptyPolygonRegion()
+{
+ QFETCH(QPolygon, pa);
+
+ QRegion r(pa);
+ QTEST(r.isEmpty(), "isEmpty");
+ QTEST(r.rects().count(), "numRects");
+ QTEST(r.rects(), "rects");
+}
+
+
+static const char *circle_xpm[] = {
+ "20 20 2 1",
+ " c #FFFFFF",
+ ". c #000000",
+ " ...... ",
+ " .......... ",
+ " .............. ",
+ " ................ ",
+ " ................ ",
+ " .................. ",
+ " .................. ",
+ "....................",
+ "....................",
+ "....................",
+ "....................",
+ "....................",
+ "....................",
+ " .................. ",
+ " .................. ",
+ " ................ ",
+ " ................ ",
+ " .............. ",
+ " .......... ",
+ " ...... "
+};
+
+void tst_QRegion::bitmapRegion()
+{
+ QBitmap circle;
+ {
+ QRegion region( circle );
+ QVERIFY( region.isEmpty() );
+ }
+ {
+ circle = QPixmap( circle_xpm );
+ QRegion region( circle );
+
+ //// These should not be inside the circe
+ QVERIFY( !region.contains( QPoint( 2, 2 ) ) );
+ QVERIFY( !region.contains( QPoint( 2, 17 ) ) );
+ QVERIFY( !region.contains( QPoint( 17, 2 ) ) );
+ QVERIFY( !region.contains( QPoint( 17, 17 ) ) );
+
+ //// These should be inside
+ QVERIFY( region.contains( QPoint( 3, 3 ) ) );
+ QVERIFY( region.contains( QPoint( 3, 16 ) ) );
+ QVERIFY( region.contains( QPoint( 16, 3 ) ) );
+ QVERIFY( region.contains( QPoint( 16, 16 ) ) );
+
+ QVERIFY( region.contains( QPoint( 0, 10 ) ) ); // Mid-left
+ QVERIFY( region.contains( QPoint( 10, 0 ) ) ); // Mid-top
+ QVERIFY( region.contains( QPoint( 19, 10 ) ) ); // Mid-right
+ QVERIFY( region.contains( QPoint( 10, 19 ) ) ); // Mid-bottom
+ }
+}
+
+void tst_QRegion::intersected_data()
+{
+ QTest::addColumn<QRegion>("r1");
+ QTest::addColumn<QRegion>("r2");
+ QTest::addColumn<bool>("intersects");
+ // QTest::addColumn<QRegion>("intersected");
+
+ QPolygon ps1(8);
+ QPolygon ps2(8);
+ ps1.putPoints(0,8, 20,20, 50,20, 50,100, 70,100, 70,20, 120,20, 120,200, 20, 200);
+ ps2.putPoints(0,8, 100,150, 140,150, 140,160, 160,160, 160,150, 200,150, 200,180, 100,180);
+ QTest::newRow("task30716") << QRegion(ps1) << QRegion(ps2) << true;
+}
+
+void tst_QRegion::intersected()
+{
+ QFETCH(QRegion, r1);
+ QFETCH(QRegion, r2);
+ QFETCH(bool, intersects);
+
+ QRegion interReg = r1.intersected(r2);
+ QVERIFY(interReg.isEmpty() != intersects);
+ // Need a way to test the intersected QRegion is right
+}
+
+void tst_QRegion::intersects_region_data()
+{
+ QTest::addColumn<QRegion>("r1");
+ QTest::addColumn<QRegion>("r2");
+ QTest::addColumn<bool>("intersects");
+
+ QTest::newRow("rect overlap rect") << QRegion(100, 100, 200, 200)
+ << QRegion(200, 200, 200, 200)
+ << true;
+
+ QTest::newRow("rect not overlap rect") << QRegion(100, 100, 200, 200)
+ << QRegion(400, 400, 200, 200)
+ << false;
+
+ QTest::newRow("ellipse overlap ellipse") << QRegion(100, 100, 200, 200, QRegion::Ellipse)
+ << QRegion(200, 200, 200, 200, QRegion::Ellipse)
+ << true;
+
+ QTest::newRow("ellipse not overlap ellipse") << QRegion(100, 100, 200, 200, QRegion::Ellipse)
+ << QRegion(400, 400, 200, 200, QRegion::Ellipse)
+ << false;
+}
+
+void tst_QRegion::intersects_region()
+{
+ QFETCH(QRegion, r1);
+ QFETCH(QRegion, r2);
+ QFETCH(bool, intersects);
+ QCOMPARE(r1.intersects(r2), intersects);
+}
+
+
+void tst_QRegion::intersects_rect_data()
+{
+ QTest::addColumn<QRegion>("region");
+ QTest::addColumn<QRect>("rect");
+ QTest::addColumn<bool>("intersects");
+
+ QTest::newRow("rect overlap rect") << QRegion(100, 100, 200, 200)
+ << QRect(200, 200, 200, 200)
+ << true;
+
+ QTest::newRow("rect not overlap rect") << QRegion(100, 100, 200, 200)
+ << QRect(400, 400, 200, 200)
+ << false;
+
+ QTest::newRow("ellipse overlap rect") << QRegion(100, 100, 200, 200, QRegion::Ellipse)
+ << QRect(200, 200, 200, 200)
+ << true;
+
+ QTest::newRow("ellipse not overlap rect") << QRegion(100, 100, 200, 200, QRegion::Ellipse)
+ << QRect(400, 400, 200, 200)
+ << false;
+}
+
+void tst_QRegion::intersects_rect()
+{
+ QFETCH(QRegion, region);
+ QFETCH(QRect, rect);
+ QFETCH(bool, intersects);
+ QCOMPARE(region.intersects(rect), intersects);
+}
+
+void tst_QRegion::contains_point()
+{
+ QCOMPARE(QRegion().contains(QPoint(1,1)),false);
+ QCOMPARE(QRegion(0,0,2,2).contains(QPoint(1,1)),true);
+}
+
+void tst_QRegion::operator_plus_data()
+{
+ QTest::addColumn<QRegion>("r1");
+ QTest::addColumn<QRegion>("r2");
+ QTest::addColumn<QRegion>("expected");
+
+ QTest::newRow("empty 0") << QRegion() << QRegion() << QRegion();
+ QTest::newRow("empty 1") << QRegion() << QRegion(QRect(10, 10, 10, 10))
+ << QRegion(QRect(10, 10, 10, 10));
+ QTest::newRow("empty 2") << QRegion(QRect(10, 10, 10, 10)) << QRegion()
+ << QRegion(QRect(10, 10, 10, 10));
+
+ QRegion expected;
+ QVector<QRect> rects;
+ rects << QRect(10, 10, 10, 10) << QRect(22, 10, 10, 10);
+ expected.setRects(rects.constData(), rects.size());
+ QTest::newRow("non overlapping") << QRegion(10, 10, 10, 10)
+ << QRegion(22, 10, 10, 10)
+ << expected;
+
+ rects.clear();
+ rects << QRect(50, 0, 50, 2);
+ expected.setRects(rects.constData(), rects.size());
+ QTest::newRow("adjacent y-rects") << QRegion(50, 0, 50, 1)
+ << QRegion(50, 1, 50, 1)
+ << expected;
+
+ rects.clear();
+ rects << QRect(50, 0, 2, 1);
+ expected.setRects(rects.constData(), rects.size());
+ QTest::newRow("adjacent x-rects") << QRegion(50, 0, 1, 1)
+ << QRegion(51, 0, 1, 1)
+ << expected;
+
+ rects.clear();
+ rects << QRect(10, 10, 10, 10) << QRect(10, 20, 5, 10);
+ QRegion r1;
+ r1.setRects(rects.constData(), rects.size());
+ QTest::newRow("double merge") << r1 << QRegion(15, 20, 5, 10)
+ << QRegion(10, 10, 10, 20);
+ rects.clear();
+ rects << QRect(15, 10, 5, 10) << QRect(10, 20, 10, 10);
+ r1.setRects(rects.constData(), rects.size());
+ QTest::newRow("double merge 2") << r1 << QRegion(10, 10, 5, 10)
+ << QRegion(10, 10, 10, 20);
+ QTest::newRow("overlapping x") << QRegion(10, 10, 10, 10)
+ << QRegion(15, 10, 10, 10)
+ << QRegion(10, 10, 15, 10);
+ QTest::newRow("overlapping y") << QRegion(10, 10, 10, 10)
+ << QRegion(10, 15, 10, 10)
+ << QRegion(10, 10, 10, 15);
+ rects.clear();
+ rects << QRect(10, 10, 10, 10) << QRect(10, 20, 5, 10);
+ r1.setRects(rects.constData(), rects.size());
+ rects.clear();
+ rects << QRect(15, 20, 5, 10) << QRect(10, 30, 10, 10);
+ QRegion r2;
+ r2.setRects(rects.constData(), rects.size());
+ QTest::newRow("triple merge") << r1 << r2
+ << QRegion(10, 10, 10, 30);
+
+ rects.clear();
+ rects << QRect(10, 10, 4, 10) << QRect(15, 10, 10, 10);
+ r1.setRects(rects.constData(), rects.size());
+ rects.clear();
+ rects << QRect(15, 20, 10, 10);
+ r2.setRects(rects.constData(), rects.size());
+ rects.clear();
+ rects << QRect(10, 10, 4, 10) << QRect(15, 10, 10, 10)
+ << QRect(15, 20, 10, 10);
+ expected.setRects(rects.constData(), rects.size());
+ QTest::newRow("don't merge y") << r1 << r2 << expected;
+
+ QTest::newRow("equal 1") << QRegion(10, 10, 10, 10)
+ << QRegion(10, 10, 10, 10)
+ << QRegion(10, 10, 10, 10);
+ QTest::newRow("equal 2") << expected << expected << expected;
+}
+
+void tst_QRegion::operator_plus()
+{
+ QFETCH(QRegion, r1);
+ QFETCH(QRegion, r2);
+ QFETCH(QRegion, expected);
+
+ if (r1 + r2 != expected) {
+ qDebug() << "r1 + r2" << (r1 + r2);
+ qDebug() << "expected" << expected;
+ }
+ QCOMPARE(r1 + r2, expected);
+ if (r2.rectCount() == 1) {
+ if (r1 + r2.boundingRect() != expected) {
+ qDebug() << "r1 + QRect(r2)" << (r1 + r2.boundingRect());
+ qDebug() << "expected" << expected;
+ }
+ QCOMPARE(r1 + r2.boundingRect(), expected);
+ }
+
+ if (r2 + r1 != expected) {
+ qDebug() << "r2 + r1" << (r2 + r1);
+ qDebug() << "expected" << expected;
+ }
+ QCOMPARE(r2 + r1, expected);
+ if (r1.rectCount() == 1) {
+ if (r1 + r2.boundingRect() != expected) {
+ qDebug() << "r2 + QRect(r1)" << (r2 + r1.boundingRect());
+ qDebug() << "expected" << expected;
+ }
+ QCOMPARE(r2 + r1.boundingRect(), expected);
+ }
+
+ QRegion result1 = r1;
+ result1 += r2;
+ if (result1 != expected) {
+ qDebug() << "r1 += r2" << result1;
+ qDebug() << "expected" << expected;
+ }
+ QCOMPARE(result1, expected);
+ if (r2.rectCount() == 1) {
+ result1 = r1;
+ result1 += r2.boundingRect();
+ if (result1 != expected) {
+ qDebug() << "r1 += QRect(r2)" << result1;
+ qDebug() << "expected" << expected;
+ }
+ QCOMPARE(result1, expected);
+ }
+
+ QRegion result2 = r2;
+ result2 += r1;
+ if (result2 != expected) {
+ qDebug() << "r2 += r1" << result2;
+ qDebug() << "expected" << expected;
+ }
+ QCOMPARE(result2, expected);
+ if (r1.rectCount() == 1) {
+ result2 = r2;
+ result2 += r1.boundingRect();
+ if (result2 != expected) {
+ qDebug() << "r2 += QRect(r1)" << result2;
+ qDebug() << "expected" << expected;
+ }
+ QCOMPARE(result2, expected);
+ }
+}
+
+void tst_QRegion::operator_minus_data()
+{
+ QTest::addColumn<QRegion>("dest");
+ QTest::addColumn<QRegion>("subtract");
+ QTest::addColumn<QRegion>("expected");
+
+ QTest::newRow("empty 0") << QRegion() << QRegion() << QRegion();
+ QTest::newRow("empty 1") << QRegion() << QRegion(QRect(10, 10, 10, 10))
+ << QRegion();
+ QTest::newRow("empty 2") << QRegion(QRect(10, 10, 10, 10)) << QRegion()
+ << QRegion(QRect(10, 10, 10, 10));
+
+ QRegion dest;
+ QVector<QRect> rects;
+ rects << QRect(10, 10, 10, 10) << QRect(22, 10, 10, 10);
+ dest.setRects(rects.constData(), rects.size());
+ QTest::newRow("simple 1") << dest
+ << QRegion(22, 10, 10, 10)
+ << QRegion(10, 10, 10, 10);
+ QTest::newRow("simple 2") << dest
+ << QRegion(10, 10, 10, 10)
+ << QRegion(22, 10, 10, 10);
+
+ rects.clear();
+ rects << QRect(0, 0, 10, 10) << QRect(15, 0, 10, 10);
+ dest.setRects(rects.constData(), rects.size());
+
+ QRegion minus;
+ rects.clear();
+ rects << QRect(0, 0, 12, 12) << QRect(15, 0, 12, 12);
+ minus.setRects(rects.constData(), rects.size());
+ QTest::newRow("empty 3") << dest << minus << QRegion();
+}
+
+void tst_QRegion::operator_minus()
+{
+ QFETCH(QRegion, dest);
+ QFETCH(QRegion, subtract);
+ QFETCH(QRegion, expected);
+
+ if (dest - subtract != expected) {
+ qDebug() << "dest - subtract" << (dest - subtract);
+ qDebug() << "expected" << expected;
+ };
+ QCOMPARE(dest - subtract, expected);
+
+ dest -= subtract;
+
+ if (dest != expected) {
+ qDebug() << "dest" << dest;
+ qDebug() << "expected" << expected;
+ };
+ QCOMPARE(dest, expected);
+}
+
+void tst_QRegion::operator_intersect_data()
+{
+ QTest::addColumn<QRegion>("r1");
+ QTest::addColumn<QRegion>("r2");
+ QTest::addColumn<QRegion>("expected");
+
+ QTest::newRow("empty 0") << QRegion() << QRegion() << QRegion();
+ QTest::newRow("empty 1") << QRegion() << QRegion(QRect(10, 10, 10, 10))
+ << QRegion();
+ QTest::newRow("empty 2") << QRegion(QRect(10, 10, 10, 10)) << QRegion()
+ << QRegion();
+
+ QRegion dest;
+ QVector<QRect> rects;
+ rects << QRect(10, 10, 10, 10) << QRect(22, 10, 10, 10);
+ dest.setRects(rects.constData(), rects.size());
+ QTest::newRow("simple 1") << dest
+ << QRegion(22, 10, 10, 10)
+ << QRegion(22, 10, 10, 10);
+ QTest::newRow("simple 2") << dest
+ << QRegion(10, 10, 10, 10)
+ << QRegion(10, 10, 10, 10);
+
+ rects.clear();
+ rects << QRect(10, 10, 10, 10) << QRect(10, 20, 15, 10);
+ dest.setRects(rects.constData(), rects.size());
+ QTest::newRow("merge 1") << dest
+ << QRegion(10, 10, 10, 20)
+ << QRegion(10, 10, 10, 20);
+
+ rects.clear();
+ rects << QRect(11, 11, 218, 117) << QRect(11, 128, 218, 27)
+ << QRect(264, 128, 122, 27) << QRect(11, 155, 218, 43)
+ << QRect(11, 198, 218, 27) << QRect(264, 198, 122, 27)
+ << QRect(11, 225, 218, 221);
+ dest.setRects(rects.constData(), rects.size());
+ QTest::newRow("merge 2") << dest << QRegion(11, 11, 218, 458)
+ << QRegion(11, 11, 218, 435);
+
+ rects.clear();
+ rects << QRect(0, 0, 10, 10) << QRect(20, 0, 10, 10);
+ dest.setRects(rects.constData(), rects.size());
+ QTest::newRow("empty 3") << dest << QRegion(11, 0, 5, 5) << QRegion();
+
+ QTest::newRow("extents check") << dest << QRegion(0, 0, 15, 15)
+ << QRegion(0, 0, 10, 10);
+
+ rects.clear();
+ rects << QRect(10, 10, 10, 10) << QRect(10, 20, 10, 10)
+ << QRect(30, 20, 10, 10) << QRect(10, 30, 10, 10);
+ dest.setRects(rects.constData(), rects.size());
+ rects.clear();
+ rects << QRect(10, 10, 10, 10) << QRect(10, 20, 10, 10)
+ << QRect(30, 20, 10, 10);
+ QRegion expected;
+ expected.setRects(rects.constData(), rects.size());
+ QTest::newRow("dont merge") << dest << QRegion(0, 0, 100, 30)
+ << expected;
+}
+
+void tst_QRegion::operator_intersect()
+{
+ QFETCH(QRegion, r1);
+ QFETCH(QRegion, r2);
+ QFETCH(QRegion, expected);
+
+ if ((r1 & r2) != expected) {
+ qDebug() << "r1 & r2" << (r1 & r2);
+ qDebug() << "expected" << expected;
+ }
+ QCOMPARE(r1 & r2, expected);
+
+ if ((r2 & r1) != expected) {
+ qDebug() << "r2 & r1" << (r2 & r1);
+ qDebug() << "expected" << expected;
+ }
+ QCOMPARE(r2 & r1, expected);
+
+ r1 &= r2;
+ QCOMPARE(r1, expected);
+}
+
+void tst_QRegion::operator_xor_data()
+{
+ QTest::addColumn<QRegion>("dest");
+ QTest::addColumn<QRegion>("arg");
+ QTest::addColumn<QRegion>("expected");
+
+ QTest::newRow("empty 0") << QRegion() << QRegion() << QRegion();
+ QTest::newRow("empty 1") << QRegion() << QRegion(QRect(10, 10, 10, 10))
+ << QRegion(QRect(10, 10, 10, 10));
+ QTest::newRow("empty 2") << QRegion(QRect(10, 10, 10, 10)) << QRegion()
+ << QRegion(QRect(10, 10, 10, 10));
+
+ QRegion dest;
+ QVector<QRect> rects;
+ rects << QRect(10, 10, 10, 10) << QRect(22, 10, 10, 10);
+ dest.setRects(rects.constData(), rects.size());
+ QTest::newRow("simple 1") << dest
+ << QRegion(22, 10, 10, 10)
+ << QRegion(10, 10, 10, 10);
+ QTest::newRow("simple 2") << dest
+ << QRegion(10, 10, 10, 10)
+ << QRegion(22, 10, 10, 10);
+ QTest::newRow("simple 3") << dest << dest << QRegion();
+ QTest::newRow("simple 4") << QRegion(10, 10, 10, 10)
+ << QRegion(10, 10, 5, 10)
+ << QRegion(15, 10, 5, 10);
+ QTest::newRow("simple 5") << QRegion(10, 10, 10, 10)
+ << QRegion(10, 10, 10, 5)
+ << QRegion(10, 15, 10, 5);
+
+ const QRegion rgnA(0, 0, 100, 100);
+ const QRegion rgnB(0, 0, 10, 10);
+
+ QTest::newRow("simple 6") << rgnA
+ << rgnA - rgnB
+ << rgnB;
+
+ QTest::newRow("simple 7") << rgnB
+ << rgnA
+ << rgnA - rgnB;
+}
+
+void tst_QRegion::operator_xor()
+{
+ QFETCH(QRegion, dest);
+ QFETCH(QRegion, arg);
+ QFETCH(QRegion, expected);
+
+ QCOMPARE(dest ^ arg, expected);
+ QCOMPARE(dest.xored(arg), expected);
+
+ dest ^= arg;
+ QCOMPARE(dest, expected);
+}
+
+void tst_QRegion::rectCount_data()
+{
+ QTest::addColumn<QRegion>("region");
+ QTest::addColumn<int>("expected");
+
+ QTest::newRow("empty") << QRegion() << 0;
+ QTest::newRow("rect") << QRegion(10, 10, 10, 10) << 1;
+
+ QRegion dest;
+ QVector<QRect> rects;
+ rects << QRect(10, 10, 10, 10) << QRect(22, 10, 10, 10);
+ dest.setRects(rects.constData(), rects.size());
+
+ QTest::newRow("2 rects") << dest << rects.size();
+}
+
+void tst_QRegion::rectCount()
+{
+ QFETCH(QRegion, region);
+ QFETCH(int, expected);
+
+ QCOMPARE(region.rectCount(), expected);
+}
+
+void tst_QRegion::isEmpty_data()
+{
+ QTest::addColumn<QRegion>("region");
+
+ QTest::newRow("QRegion") << QRegion();
+
+ QVector<QRect> rects;
+ rects << QRect(0, 0, 10, 10) << QRect(15, 0, 10, 10);
+ QRegion r1;
+ r1.setRects(rects.constData(), rects.size());
+
+ QRegion r2;
+ rects.clear();
+ rects << QRect(0, 0, 12, 12) << QRect(15, 0, 12, 12);
+ r2.setRects(rects.constData(), rects.size());
+ QTest::newRow("minus") << (r1 - r2);
+}
+
+void tst_QRegion::isEmpty()
+{
+ QFETCH(QRegion, region);
+
+ QVERIFY(region.isEmpty());
+ QCOMPARE(region, QRegion());
+ QCOMPARE(region.rectCount(), 0);
+ QCOMPARE(region.boundingRect(), QRect());
+ QVERIFY(region.rects().isEmpty());
+}
+
+#if defined(Q_WS_X11) && defined(QT_BUILD_INTERNAL)
+void tst_QRegion::clipRectangles()
+{
+ QRegion region(30, 30, 30, 30);
+ int num = 0;
+ qt_getClipRects(region, num);
+ QCOMPARE(num, 1);
+
+ region += QRegion(10, 10, 10, 10);
+ XRectangle *rects2 = static_cast<XRectangle *>(qt_getClipRects(region, num));
+ QCOMPARE(num, 2);
+
+ // Here's the important part (Y-sorted):
+ QCOMPARE(int(rects2[0].y), 10);
+ QCOMPARE(int(rects2[1].y), 30);
+}
+#endif
+
+void tst_QRegion::regionFromPath()
+{
+ {
+ QPainterPath path;
+ path.addRect(0, 0, 10, 10);
+ path.addRect(0, 100, 100, 1000);
+
+ QRegion rgn(path.toFillPolygon().toPolygon());
+ QCOMPARE(rgn.rects().size(), 2);
+ QCOMPARE(rgn.rects().at(0), QRect(0, 0, 10, 10));
+ QCOMPARE(rgn.rects().at(1), QRect(0, 100, 100, 1000));
+
+ QCOMPARE(rgn.boundingRect(), QRect(0, 0, 100, 1100));
+ }
+
+ {
+ QPainterPath path;
+ path.addRect(0, 0, 100, 100);
+ path.addRect(10, 10, 80, 80);
+
+ QRegion rgn(path.toFillPolygon().toPolygon());
+ QCOMPARE(rgn.rects().size(), 4);
+
+ QCOMPARE(rgn.rects().at(0), QRect(0, 0, 100, 10));
+ QCOMPARE(rgn.rects().at(1), QRect(0, 10, 10, 80));
+ QCOMPARE(rgn.rects().at(2), QRect(90, 10, 10, 80));
+ QCOMPARE(rgn.rects().at(3), QRect(0, 90, 100, 10));
+
+ QCOMPARE(rgn.boundingRect(), QRect(0, 0, 100, 100));
+ }
+}
+
+Q_DECLARE_METATYPE(QPainterPath)
+
+void tst_QRegion::regionToPath_data()
+{
+ QTest::addColumn<QPainterPath>("path");
+ {
+ QPainterPath path;
+ path.addRect(QRect(0, 0, 10, 10));
+
+ QTest::newRow("Rectangle") << path;
+ }
+
+ {
+ QPainterPath path;
+ path.addRect(QRect(0, 0, 10, 10));
+ path.addRect(QRect(20, 0, 10, 10));
+
+ QTest::newRow("Two rects") << path;
+ }
+
+ {
+ QPainterPath path;
+ path.addEllipse(QRect(0, 0, 10, 10));
+
+ QTest::newRow("Ellipse") << path;
+ }
+
+ {
+ QPainterPath path;
+ path.addRect(QRect(0, 0, 3, 8));
+ path.addRect(QRect(6, 0, 3, 8));
+ path.addRect(QRect(3, 3, 3, 2));
+ path.addRect(QRect(12, 3, 3, 2));
+
+ QTest::newRow("H-dot") << path;
+ }
+
+ {
+ QPainterPath path;
+ for (int y = 0; y <= 10; ++y) {
+ for (int x = 0; x <= 10; ++x) {
+ if (!(y & 1) || ((x ^ y) & 1))
+ path.addRect(QRect(x, y, 1, 1));
+ }
+ }
+
+ QTest::newRow("Grid") << path;
+ }
+}
+
+#ifdef QT_BUILD_INTERNAL
+QT_BEGIN_NAMESPACE
+extern QPainterPath qt_regionToPath(const QRegion &region);
+QT_END_NAMESPACE
+#endif
+
+void tst_QRegion::regionToPath()
+{
+#ifdef QT_BUILD_INTERNAL
+
+ QFETCH(QPainterPath, path);
+
+ for (int i = 0; i < 360; i += 10) {
+
+ QTransform transform;
+ transform.scale(5, 5);
+ transform.rotate(i);
+
+ QPainterPath mapped = transform.map(path);
+ QRegion region(mapped.toFillPolygon().toPolygon());
+
+ QPainterPath a;
+ a.addRegion(region);
+
+ QPainterPath b = qt_regionToPath(region);
+
+ QRect r = a.boundingRect().toAlignedRect();
+ QImage ia(r.size(), QImage::Format_RGB32);
+ ia.fill(0xffffffff);
+ QImage ib = ia;
+
+ QPainter p(&ia);
+ p.translate(-r.x(), -r.y());
+ p.fillPath(a, Qt::red);
+ p.end();
+ p.begin(&ib);
+ p.translate(-r.x(), -r.y());
+ p.fillPath(b, Qt::red);
+ p.end();
+
+ QCOMPARE(ia, ib);
+ QCOMPARE(a.boundingRect(), b.boundingRect());
+ }
+#endif
+}
+
+QTEST_MAIN(tst_QRegion)
+#include "tst_qregion.moc"
diff --git a/tests/auto/qtransform/.gitignore b/tests/auto/gui/painting/qtransform/.gitignore
index f1da0161e7..f1da0161e7 100644
--- a/tests/auto/qtransform/.gitignore
+++ b/tests/auto/gui/painting/qtransform/.gitignore
diff --git a/tests/auto/qtransform/qtransform.pro b/tests/auto/gui/painting/qtransform/qtransform.pro
index 92bef8ce38..92bef8ce38 100644
--- a/tests/auto/qtransform/qtransform.pro
+++ b/tests/auto/gui/painting/qtransform/qtransform.pro
diff --git a/tests/auto/gui/painting/qtransform/tst_qtransform.cpp b/tests/auto/gui/painting/qtransform/tst_qtransform.cpp
new file mode 100644
index 0000000000..f8319c9e13
--- /dev/null
+++ b/tests/auto/gui/painting/qtransform/tst_qtransform.cpp
@@ -0,0 +1,807 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include "qtransform.h"
+#include <math.h>
+#include <qpolygon.h>
+#include <qdebug.h>
+
+Q_DECLARE_METATYPE(QRect)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QTransform : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QTransform();
+ virtual ~tst_QTransform();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void mapRect_data();
+ void operator_star_qrect_data();
+ void mapToPolygon_data();
+ void mapRect();
+ void operator_star_qrect();
+ void assignments();
+ void mapToPolygon();
+ void translate();
+ void scale();
+ void matrix();
+ void testOffset();
+ void types();
+ void scalarOps();
+ void transform();
+ void mapEmptyPath();
+ void boundingRect();
+ void controlPointRect();
+ void inverted_data();
+ void inverted();
+ void projectivePathMapping();
+ void mapInt();
+ void mapPathWithPoint();
+
+private:
+ void mapping_data();
+};
+
+Q_DECLARE_METATYPE(QTransform)
+Q_DECLARE_METATYPE(QPolygon)
+
+tst_QTransform::tst_QTransform()
+{
+}
+
+tst_QTransform::~tst_QTransform()
+{
+}
+
+void tst_QTransform::init()
+{
+ // No initialisation is required
+}
+
+void tst_QTransform::cleanup()
+{
+ // No cleanup is required.
+}
+
+#if defined(Q_OS_WIN) && !defined(M_PI)
+#define M_PI 3.14159265897932384626433832795f
+#endif
+
+void tst_QTransform::mapRect_data()
+{
+ mapping_data();
+
+ // rotations that are not multiples of 90 degrees. mapRect returns the bounding rect here.
+ qreal deg = -45;
+ QTest::newRow( "rot 45 a" )
+ << QTransform().rotate(deg)
+ << QRect( 0, 0, 10, 10 )
+ << QPolygon( QRect( 0, -7, 14, 14 ) );
+ QTest::newRow( "rot 45 b" )
+ << QTransform().rotate(deg)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( 21, -14, 50, 49 ) );
+ QTest::newRow( "rot 45 c" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 0, 0, 10, 10 )
+ << QPolygon( QRect( 0, -71, 141, 142 ) );
+ QTest::newRow( "rot 45 d" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( 212, -141, 495, 495 ) );
+
+ deg = 45;
+ QTest::newRow( "rot -45 a" )
+ << QTransform().rotate(deg)
+ << QRect( 0, 0, 10, 10 )
+ << QPolygon( QRect( -7, 0, 14, 14 ) );
+ QTest::newRow( "rot -45 b" )
+ << QTransform().rotate(deg)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( -35, 21, 49, 50 ) );
+ QTest::newRow( "rot -45 c" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 0, 0, 10, 10 )
+ << QPolygon( QRect( -71, 0, 142, 141 ) );
+ QTest::newRow( "rot -45 d" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( -354, 212, 495, 495 ) );
+}
+
+void tst_QTransform::operator_star_qrect_data()
+{
+ mapping_data();
+}
+
+void tst_QTransform::mapToPolygon_data()
+{
+ mapping_data();
+}
+
+void tst_QTransform::mapping_data()
+{
+ //create the testtable instance and define the elements
+ QTest::addColumn<QTransform>("matrix");
+ QTest::addColumn<QRect>("src");
+ QTest::addColumn<QPolygon>("res");
+
+ //next we fill it with data
+
+ // identity
+ QTest::newRow( "identity" )
+ << QTransform()
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( 10, 20, 30, 40 ) );
+ // scaling
+ QTest::newRow( "scale 0" )
+ << QTransform().scale(2, 2)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( 20, 40, 60, 80 ) );
+ QTest::newRow( "scale 1" )
+ << QTransform().scale(10, 10)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( 100, 200, 300, 400 ) );
+ // mirroring
+ QTest::newRow( "mirror 0" )
+ << QTransform().scale(-1, 1)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( -40, 20, 30, 40 ) );
+ QTest::newRow( "mirror 1" )
+ << QTransform().scale(1, -1)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( 10, -60, 30, 40 ) );
+ QTest::newRow( "mirror 2" )
+ << QTransform().scale(-1, -1)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( -40, -60, 30, 40 ) );
+ QTest::newRow( "mirror 3" )
+ << QTransform().scale(-2, -2)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( -80, -120, 60, 80 ) );
+ QTest::newRow( "mirror 4" )
+ << QTransform().scale(-10, -10)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( -400, -600, 300, 400 ) );
+ QTest::newRow( "mirror 5" )
+ << QTransform().scale(-1, 1)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon( QRect( -30, 0, 30, 40 ) );
+ QTest::newRow( "mirror 6" )
+ << QTransform().scale(1, -1)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon( QRect( 0, -40, 30, 40 ) );
+ QTest::newRow( "mirror 7" )
+ << QTransform().scale(-1, -1)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon( QRect( -30, -40, 30, 40 ) );
+ QTest::newRow( "mirror 8" )
+ << QTransform().scale(-2, -2)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon( QRect( -60, -80, 60, 80 ) );
+ QTest::newRow( "mirror 9" )
+ << QTransform().scale(-10, -10) << QRect( 0, 0, 30, 40 )
+ << QPolygon( QRect( -300, -400, 300, 400 ) );
+
+ // rotations
+ float deg = 0.;
+ QTest::newRow( "rot 0 a" )
+ << QTransform().rotate(deg)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon ( QRect( 0, 0, 30, 40 ) );
+ deg = 0.00001f;
+ QTest::newRow( "rot 0 b" )
+ << QTransform().rotate(deg)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon ( QRect( 0, 0, 30, 40 ) );
+ deg = 0.;
+ QTest::newRow( "rot 0 c" )
+ << QTransform().rotate(deg)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon ( QRect( 10, 20, 30, 40 ) );
+ deg = 0.00001f;
+ QTest::newRow( "rot 0 d" )
+ << QTransform().rotate(deg)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon ( QRect( 10, 20, 30, 40 ) );
+
+ // rotations
+ deg = -90.f;
+ QTest::newRow( "rotscale 90 a" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon( QRect( 0, -300, 400, 300 ) );
+ deg = -90.00001f;
+ QTest::newRow( "rotscale 90 b" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon( QRect( 0, -300, 400, 300 ) );
+ deg = -90.f;
+ QTest::newRow( "rotscale 90 c" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( 200, -400, 400, 300 ) );
+ deg = -90.00001f;
+ QTest::newRow( "rotscale 90 d" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( 200, -400, 400, 300 ) );
+
+ deg = 180.f;
+ QTest::newRow( "rotscale 180 a" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon( QRect( -300, -400, 300, 400 ) );
+ deg = 180.000001f;
+ QTest::newRow( "rotscale 180 b" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon( QRect( -300, -400, 300, 400 ) );
+ deg = 180.f;
+ QTest::newRow( "rotscale 180 c" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( -400, -600, 300, 400 ) );
+ deg = 180.000001f;
+ QTest::newRow( "rotscale 180 d" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( -400, -600, 300, 400 ) );
+
+ deg = -270.f;
+ QTest::newRow( "rotscale 270 a" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon( QRect( -400, 0, 400, 300 ) );
+ deg = -270.0000001f;
+ QTest::newRow( "rotscale 270 b" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 0, 0, 30, 40 )
+ << QPolygon( QRect( -400, 0, 400, 300 ) );
+ deg = -270.f;
+ QTest::newRow( "rotscale 270 c" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( -600, 100, 400, 300 ) );
+ deg = -270.000001f;
+ QTest::newRow( "rotscale 270 d" )
+ << QTransform().rotate(deg).scale(10, 10)
+ << QRect( 10, 20, 30, 40 )
+ << QPolygon( QRect( -600, 100, 400, 300 ) );
+}
+
+void tst_QTransform::mapRect()
+{
+ QFETCH( QTransform, matrix );
+ QFETCH( QRect, src );
+ QFETCH( QPolygon, res );
+ QRect mapped = matrix.mapRect(src);
+ QCOMPARE( mapped, res.boundingRect().adjusted(0, 0, -1, -1) );
+
+ QRectF r = matrix.mapRect(QRectF(src));
+ QRect ir(r.topLeft().toPoint(), r.bottomRight().toPoint() - QPoint(1, 1));
+ QCOMPARE( mapped, ir );
+}
+
+void tst_QTransform::operator_star_qrect()
+{
+#if 0
+ QFETCH( QTransform, matrix );
+ QFETCH( QRect, src );
+ QFETCH( QPolygon, res );
+
+ QCOMPARE( (matrix * src), QRegion(res) );
+#endif
+}
+
+void tst_QTransform::assignments()
+{
+ QTransform m;
+ m.scale(2, 3);
+ m.rotate(45);
+ m.shear(4, 5);
+
+ QTransform c1(m);
+
+ QCOMPARE(m.m11(), c1.m11());
+ QCOMPARE(m.m12(), c1.m12());
+ QCOMPARE(m.m21(), c1.m21());
+ QCOMPARE(m.m22(), c1.m22());
+ QCOMPARE(m.dx(), c1.dx());
+ QCOMPARE(m.dy(), c1.dy());
+
+ QTransform c2 = m;
+ QCOMPARE(m.m11(), c2.m11());
+ QCOMPARE(m.m12(), c2.m12());
+ QCOMPARE(m.m21(), c2.m21());
+ QCOMPARE(m.m22(), c2.m22());
+ QCOMPARE(m.dx(), c2.dx());
+ QCOMPARE(m.dy(), c2.dy());
+}
+
+
+void tst_QTransform::mapToPolygon()
+{
+ QFETCH( QTransform, matrix );
+ QFETCH( QRect, src );
+ QFETCH( QPolygon, res );
+
+ QPolygon poly = matrix.mapToPolygon(src);
+
+ // don't care about starting point
+ bool equal = false;
+ for (int i = 0; i < poly.size(); ++i) {
+ QPolygon rot;
+ for (int j = i; j < poly.size(); ++j)
+ rot << poly[j];
+ for (int j = 0; j < i; ++j)
+ rot << poly[j];
+ if (rot == res)
+ equal = true;
+ }
+
+ QVERIFY(equal);
+}
+
+
+void tst_QTransform::translate()
+{
+ QTransform m( 1, 2, 3, 4, 5, 6 );
+ QTransform res2( m );
+ QTransform res( 1, 2, 3, 4, 75, 106 );
+ m.translate( 10, 20 );
+ QVERIFY( m == res );
+ m.translate( -10, -20 );
+ QVERIFY( m == res2 );
+ QVERIFY( QTransform::fromTranslate( 0, 0 ).type() == QTransform::TxNone );
+ QVERIFY( QTransform::fromTranslate( 10, 0 ).type() == QTransform::TxTranslate );
+ QVERIFY( QTransform::fromTranslate( -1, 5 ) == QTransform().translate( -1, 5 ));
+ QVERIFY( QTransform::fromTranslate( 0, 0 ) == QTransform());
+}
+
+void tst_QTransform::scale()
+{
+ QTransform m( 1, 2, 3, 4, 5, 6 );
+ QTransform res2( m );
+ QTransform res( 10, 20, 60, 80, 5, 6 );
+ m.scale( 10, 20 );
+ QVERIFY( m == res );
+ m.scale( 1./10., 1./20. );
+ QVERIFY( m == res2 );
+ QVERIFY( QTransform::fromScale( 1, 1 ).type() == QTransform::TxNone );
+ QVERIFY( QTransform::fromScale( 2, 4 ).type() == QTransform::TxScale );
+ QVERIFY( QTransform::fromScale( 2, 4 ) == QTransform().scale( 2, 4 ));
+ QVERIFY( QTransform::fromScale( 1, 1 ) == QTransform());
+}
+
+void tst_QTransform::matrix()
+{
+ QMatrix mat1;
+ mat1.scale(0.3, 0.7);
+ mat1.translate(53.3, 94.4);
+ mat1.rotate(45);
+
+ QMatrix mat2;
+ mat2.rotate(33);
+ mat2.scale(0.6, 0.6);
+ mat2.translate(13.333, 7.777);
+
+ QTransform tran1(mat1);
+ QTransform tran2(mat2);
+ QTransform dummy;
+ dummy.setMatrix(mat1.m11(), mat1.m12(), 0,
+ mat1.m21(), mat1.m22(), 0,
+ mat1.dx(), mat1.dy(), 1);
+
+ QVERIFY(tran1 == dummy);
+ QVERIFY(tran1.inverted() == dummy.inverted());
+ QVERIFY(tran1.inverted() == QTransform(mat1.inverted()));
+ QVERIFY(tran2.inverted() == QTransform(mat2.inverted()));
+
+ QMatrix mat3 = mat1 * mat2;
+ QTransform tran3 = tran1 * tran2;
+ QVERIFY(QTransform(mat3) == tran3);
+
+ /* QMatrix::operator==() doesn't use qFuzzyCompare(), which
+ * on win32-g++ results in a failure. So we work around it by
+ * calling QTranform::operator==(), which performs a fuzzy compare. */
+ QCOMPARE(QTransform(mat3), QTransform(tran3.toAffine()));
+
+ QTransform tranInv = tran1.inverted();
+ QMatrix matInv = mat1.inverted();
+
+ QRect rect(43, 70, 200, 200);
+ QPoint pt(43, 66);
+ QVERIFY(tranInv.map(pt) == matInv.map(pt));
+ QVERIFY(tranInv.map(pt) == matInv.map(pt));
+
+ QPainterPath path;
+ path.moveTo(55, 60);
+ path.lineTo(110, 110);
+ path.quadTo(220, 50, 10, 20);
+ path.closeSubpath();
+ QVERIFY(tranInv.map(path) == matInv.map(path));
+}
+
+void tst_QTransform::testOffset()
+{
+ QTransform trans;
+ const QMatrix &aff = trans.toAffine();
+ QCOMPARE((void*)(&aff), (void*)(&trans));
+}
+
+void tst_QTransform::types()
+{
+ QTransform m1;
+ QCOMPARE(m1.type(), QTransform::TxNone);
+
+ m1.translate(1.0f, 0.0f);
+ QCOMPARE(m1.type(), QTransform::TxTranslate);
+ QCOMPARE(m1.inverted().type(), QTransform::TxTranslate);
+
+ m1.scale(1.0f, 2.0f);
+ QCOMPARE(m1.type(), QTransform::TxScale);
+ QCOMPARE(m1.inverted().type(), QTransform::TxScale);
+
+ m1.rotate(45.0f);
+ QCOMPARE(m1.type(), QTransform::TxRotate);
+ QCOMPARE(m1.inverted().type(), QTransform::TxRotate);
+
+ m1.shear(0.5f, 0.25f);
+ QCOMPARE(m1.type(), QTransform::TxShear);
+ QCOMPARE(m1.inverted().type(), QTransform::TxShear);
+
+ m1.rotate(45.0f, Qt::XAxis);
+ QCOMPARE(m1.type(), QTransform::TxProject);
+ m1.shear(0.5f, 0.25f);
+ QCOMPARE(m1.type(), QTransform::TxProject);
+ m1.rotate(45.0f);
+ QCOMPARE(m1.type(), QTransform::TxProject);
+ m1.scale(1.0f, 2.0f);
+ QCOMPARE(m1.type(), QTransform::TxProject);
+ m1.translate(1.0f, 0.0f);
+ QCOMPARE(m1.type(), QTransform::TxProject);
+
+ QTransform m2(1.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f,
+ -1.0f, -1.0f, 1.0f);
+
+ QCOMPARE(m2.type(), QTransform::TxTranslate);
+ QCOMPARE((m1 * m2).type(), QTransform::TxProject);
+
+ m1 *= QTransform();
+ QCOMPARE(m1.type(), QTransform::TxProject);
+
+ m1 *= QTransform(1.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f,
+ 1.0f, 0.0f, 1.0f);
+ QCOMPARE(m1.type(), QTransform::TxProject);
+
+ m2.reset();
+ QCOMPARE(m2.type(), QTransform::TxNone);
+
+ m2.setMatrix(1.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f);
+ QCOMPARE(m2.type(), QTransform::TxNone);
+
+ m2 *= QTransform();
+ QCOMPARE(m2.type(), QTransform::TxNone);
+
+ m2.setMatrix(2.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f);
+ QCOMPARE(m2.type(), QTransform::TxScale);
+ m2 *= QTransform();
+ QCOMPARE(m2.type(), QTransform::TxScale);
+
+ m2.setMatrix(0.0f, 1.0f, 0.0f,
+ 1.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 1.0f);
+ QCOMPARE(m2.type(), QTransform::TxRotate);
+ m2 *= QTransform();
+ QCOMPARE(m2.type(), QTransform::TxRotate);
+
+ m2.setMatrix(1.0f, 0.0f, 0.5f,
+ 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f);
+ QCOMPARE(m2.type(), QTransform::TxProject);
+ m2 *= QTransform();
+ QCOMPARE(m2.type(), QTransform::TxProject);
+
+ m2.setMatrix(1.0f, 1.0f, 0.0f,
+ 1.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 1.0f);
+ QCOMPARE(m2.type(), QTransform::TxShear);
+
+ m2 *= m2.inverted();
+ QCOMPARE(m2.type(), QTransform::TxNone);
+
+ m2.translate(5.0f, 5.0f);
+ m2.rotate(45.0f);
+ m2.rotate(-45.0f);
+ QCOMPARE(m2.type(), QTransform::TxTranslate);
+
+ m2.scale(2.0f, 3.0f);
+ m2.shear(1.0f, 0.0f);
+ m2.shear(-1.0f, 0.0f);
+ QCOMPARE(m2.type(), QTransform::TxScale);
+
+ m2 *= QTransform(1.0f, 1.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f);
+ QCOMPARE(m2.type(), QTransform::TxShear);
+
+ m2 *= QTransform(1.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f,
+ 1.0f, 0.0f, 1.0f);
+ QCOMPARE(m2.type(), QTransform::TxShear);
+
+ QTransform m3(1.8f, 0.0f, 0.0f,
+ 0.0f, 1.8f, 0.0f,
+ 0.0f, 0.0f, 1.0f);
+
+ QCOMPARE(m3.type(), QTransform::TxScale);
+ m3.translate(5.0f, 5.0f);
+ QCOMPARE(m3.type(), QTransform::TxScale);
+ QCOMPARE(m3.inverted().type(), QTransform::TxScale);
+
+ m3.setMatrix(1.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f);
+ QCOMPARE(m3.type(), QTransform::TxProject);
+
+ m3.setMatrix(0.0f, 2.0f, 0.0f,
+ 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f);
+ QCOMPARE(m3.type(), QTransform::TxProject);
+
+ QTransform m4;
+ m4.scale(5, 5);
+ m4.translate(4, 2);
+ m4.rotate(45);
+
+ QCOMPARE(m4.type(), QTransform::TxRotate);
+
+ QTransform m5;
+ m5.scale(5, 5);
+ m5 = m5.adjoint() / m5.determinant();
+ QCOMPARE(m5.type(), QTransform::TxScale);
+}
+
+
+void tst_QTransform::scalarOps()
+{
+ QTransform t;
+ QCOMPARE(t.m11(), 1.);
+ QCOMPARE(t.m33(), 1.);
+ QCOMPARE(t.m21(), 0.);
+
+ t = QTransform() + 3;
+ QCOMPARE(t.m11(), 4.);
+ QCOMPARE(t.m33(), 4.);
+ QCOMPARE(t.m21(), 3.);
+
+ t = t - 3;
+ QCOMPARE(t.m11(), 1.);
+ QCOMPARE(t.m33(), 1.);
+ QCOMPARE(t.m21(), 0.);
+ QCOMPARE(t.isIdentity(), true);
+
+ t += 3;
+ t = t * 2;
+ QCOMPARE(t.m11(), 8.);
+ QCOMPARE(t.m33(), 8.);
+ QCOMPARE(t.m21(), 6.);
+}
+
+void tst_QTransform::transform()
+{
+ QTransform t;
+ t.rotate(30, Qt::YAxis);
+ t.translate(15, 10);
+ t.scale(2, 2);
+ t.rotate(30);
+ t.shear(0.5, 0.5);
+
+ QTransform a, b, c, d, e;
+ a.rotate(30, Qt::YAxis);
+ b.translate(15, 10);
+ c.scale(2, 2);
+ d.rotate(30);
+ e.shear(0.5, 0.5);
+
+ QVERIFY(qFuzzyCompare(t, e * d * c * b * a));
+}
+
+void tst_QTransform::mapEmptyPath()
+{
+ QPainterPath path;
+ path.moveTo(10, 10);
+ path.lineTo(10, 10);
+ QCOMPARE(QTransform().map(path), path);
+}
+
+void tst_QTransform::boundingRect()
+{
+ QPainterPath path;
+ path.moveTo(10, 10);
+ path.lineTo(10, 10);
+ QCOMPARE(path.boundingRect(), QRectF(10, 10, 0, 0));
+}
+
+void tst_QTransform::controlPointRect()
+{
+ QPainterPath path;
+ path.moveTo(10, 10);
+ path.lineTo(10, 10);
+ QCOMPARE(path.controlPointRect(), QRectF(10, 10, 0, 0));
+}
+
+void tst_QTransform::inverted_data()
+{
+ QTest::addColumn<QTransform>("matrix");
+
+ QTest::newRow("identity")
+ << QTransform();
+
+ QTest::newRow("TxTranslate")
+ << QTransform().translate(200, 10);
+
+ QTest::newRow("TxScale")
+ << QTransform().scale(5, 2);
+
+ QTest::newRow("TxTranslate TxScale")
+ << QTransform().translate(100, -10).scale(40, 2);
+
+ QTest::newRow("TxScale TxTranslate")
+ << QTransform().scale(40, 2).translate(100, -10);
+
+ QTest::newRow("TxRotate")
+ << QTransform().rotate(40, Qt::ZAxis);
+
+ QTest::newRow("TxRotate TxScale")
+ << QTransform().rotate(60, Qt::ZAxis).scale(2, 0.25);
+
+ QTest::newRow("TxScale TxRotate")
+ << QTransform().scale(2, 0.25).rotate(30, Qt::ZAxis);
+
+ QTest::newRow("TxRotate TxScale TxTranslate")
+ << QTransform().rotate(60, Qt::ZAxis).scale(2, 0.25).translate(200, -3000);
+
+ QTest::newRow("TxRotate TxTranslate TxScale")
+ << QTransform().rotate(60, Qt::ZAxis).translate(200, -3000).scale(19, 77);
+
+ QTest::newRow("TxShear")
+ << QTransform().shear(10, 10);
+
+ QTest::newRow("TxShear TxRotate")
+ << QTransform().shear(10, 10).rotate(45, Qt::ZAxis);
+
+ QTest::newRow("TxShear TxRotate TxScale")
+ << QTransform().shear(10, 10).rotate(45, Qt::ZAxis).scale(19, 81);
+
+ QTest::newRow("TxTranslate TxShear TxRotate TxScale")
+ << QTransform().translate(150, -1).shear(10, 10).rotate(45, Qt::ZAxis).scale(19, 81);
+
+ const qreal s = 500000;
+
+ QTransform big;
+ big.scale(s, s);
+
+ QTest::newRow("big") << big;
+
+ QTransform smallTransform;
+ smallTransform.scale(1/s, 1/s);
+
+ QTest::newRow("small") << smallTransform;
+}
+
+void tst_QTransform::inverted()
+{
+ if (sizeof(qreal) != sizeof(double))
+ QSKIP("precision error if qreal is not double", SkipAll);
+
+ QFETCH(QTransform, matrix);
+
+ const QTransform inverted = matrix.inverted();
+
+ QVERIFY(matrix.isIdentity() == inverted.isIdentity());
+ QVERIFY(matrix.type() == inverted.type());
+
+ QVERIFY((matrix * inverted).isIdentity());
+ QVERIFY((inverted * matrix).isIdentity());
+}
+
+void tst_QTransform::projectivePathMapping()
+{
+ QPainterPath path;
+ path.addRect(-50, -50, 100, 100);
+
+ const QRectF view(0, 0, 1024, 1024);
+
+ QVERIFY(view.intersects(path.boundingRect()));
+
+ for (int i = 0; i < 85; i += 5) {
+ QTransform transform;
+ transform.translate(512, 512);
+ transform.rotate(i, Qt::YAxis);
+
+ const QPainterPath mapped = transform.map(path);
+
+ QVERIFY(view.intersects(mapped.boundingRect()));
+ QVERIFY(transform.inverted().mapRect(view).intersects(path.boundingRect()));
+ }
+}
+
+void tst_QTransform::mapInt()
+{
+ int x = 0;
+ int y = 0;
+
+ QTransform::fromTranslate(10, 10).map(x, y, &x, &y);
+
+ QCOMPARE(x, 10);
+ QCOMPARE(y, 10);
+}
+
+void tst_QTransform::mapPathWithPoint()
+{
+ QPainterPath p(QPointF(10, 10));
+ p = QTransform::fromTranslate(10, 10).map(p);
+ QCOMPARE(p.currentPosition(), QPointF(20, 20));
+}
+
+QTEST_APPLESS_MAIN(tst_QTransform)
+
+
+#include "tst_qtransform.moc"
diff --git a/tests/auto/qwmatrix/.gitignore b/tests/auto/gui/painting/qwmatrix/.gitignore
index c983191769..c983191769 100644
--- a/tests/auto/qwmatrix/.gitignore
+++ b/tests/auto/gui/painting/qwmatrix/.gitignore
diff --git a/tests/auto/qwmatrix/qwmatrix.pro b/tests/auto/gui/painting/qwmatrix/qwmatrix.pro
index bab298bc93..bab298bc93 100644
--- a/tests/auto/qwmatrix/qwmatrix.pro
+++ b/tests/auto/gui/painting/qwmatrix/qwmatrix.pro
diff --git a/tests/auto/qwmatrix/tst_qwmatrix.cpp b/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp
index 0e7372d9d8..0e7372d9d8 100644
--- a/tests/auto/qwmatrix/tst_qwmatrix.cpp
+++ b/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp
diff --git a/tests/auto/qabstracttextdocumentlayout/.gitignore b/tests/auto/gui/text/qabstracttextdocumentlayout/.gitignore
index d747466790..d747466790 100644
--- a/tests/auto/qabstracttextdocumentlayout/.gitignore
+++ b/tests/auto/gui/text/qabstracttextdocumentlayout/.gitignore
diff --git a/tests/auto/gui/text/qabstracttextdocumentlayout/qabstracttextdocumentlayout.pro b/tests/auto/gui/text/qabstracttextdocumentlayout/qabstracttextdocumentlayout.pro
new file mode 100644
index 0000000000..22b013e37e
--- /dev/null
+++ b/tests/auto/gui/text/qabstracttextdocumentlayout/qabstracttextdocumentlayout.pro
@@ -0,0 +1,9 @@
+############################################################
+# Project file for autotest for file qabstracttextdocumentlayout.h
+############################################################
+
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qabstracttextdocumentlayout.cpp
+
+
diff --git a/tests/auto/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp b/tests/auto/gui/text/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp
index 90f212e832..90f212e832 100644
--- a/tests/auto/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp
+++ b/tests/auto/gui/text/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp
diff --git a/tests/auto/qcssparser/.gitignore b/tests/auto/gui/text/qcssparser/.gitignore
index 6cc99800e0..6cc99800e0 100644
--- a/tests/auto/qcssparser/.gitignore
+++ b/tests/auto/gui/text/qcssparser/.gitignore
diff --git a/tests/auto/qcssparser/qcssparser.pro b/tests/auto/gui/text/qcssparser/qcssparser.pro
index 16fa265231..16fa265231 100644
--- a/tests/auto/qcssparser/qcssparser.pro
+++ b/tests/auto/gui/text/qcssparser/qcssparser.pro
diff --git a/tests/auto/qcssparser/testdata/scanner/comments/input b/tests/auto/gui/text/qcssparser/testdata/scanner/comments/input
index af2b659a5b..af2b659a5b 100644
--- a/tests/auto/qcssparser/testdata/scanner/comments/input
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/comments/input
diff --git a/tests/auto/qcssparser/testdata/scanner/comments/output b/tests/auto/gui/text/qcssparser/testdata/scanner/comments/output
index 80ede0ba22..80ede0ba22 100644
--- a/tests/auto/qcssparser/testdata/scanner/comments/output
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/comments/output
diff --git a/tests/auto/qcssparser/testdata/scanner/comments2/input b/tests/auto/gui/text/qcssparser/testdata/scanner/comments2/input
index 3135acd78c..3135acd78c 100644
--- a/tests/auto/qcssparser/testdata/scanner/comments2/input
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/comments2/input
diff --git a/tests/auto/qcssparser/testdata/scanner/comments2/output b/tests/auto/gui/text/qcssparser/testdata/scanner/comments2/output
index d1f1259869..d1f1259869 100644
--- a/tests/auto/qcssparser/testdata/scanner/comments2/output
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/comments2/output
diff --git a/tests/auto/qcssparser/testdata/scanner/comments3/input b/tests/auto/gui/text/qcssparser/testdata/scanner/comments3/input
index 8634543a8f..8634543a8f 100644
--- a/tests/auto/qcssparser/testdata/scanner/comments3/input
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/comments3/input
diff --git a/tests/auto/qcssparser/testdata/scanner/comments3/output b/tests/auto/gui/text/qcssparser/testdata/scanner/comments3/output
index af7bad752a..af7bad752a 100644
--- a/tests/auto/qcssparser/testdata/scanner/comments3/output
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/comments3/output
diff --git a/tests/auto/qcssparser/testdata/scanner/comments4/input b/tests/auto/gui/text/qcssparser/testdata/scanner/comments4/input
index 62d039b00c..62d039b00c 100644
--- a/tests/auto/qcssparser/testdata/scanner/comments4/input
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/comments4/input
diff --git a/tests/auto/qcssparser/testdata/scanner/comments4/output b/tests/auto/gui/text/qcssparser/testdata/scanner/comments4/output
index eb86e7bd15..eb86e7bd15 100644
--- a/tests/auto/qcssparser/testdata/scanner/comments4/output
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/comments4/output
diff --git a/tests/auto/qcssparser/testdata/scanner/quotedstring/input b/tests/auto/gui/text/qcssparser/testdata/scanner/quotedstring/input
index deae3a8dab..deae3a8dab 100644
--- a/tests/auto/qcssparser/testdata/scanner/quotedstring/input
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/quotedstring/input
diff --git a/tests/auto/qcssparser/testdata/scanner/quotedstring/output b/tests/auto/gui/text/qcssparser/testdata/scanner/quotedstring/output
index ed52419594..ed52419594 100644
--- a/tests/auto/qcssparser/testdata/scanner/quotedstring/output
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/quotedstring/output
diff --git a/tests/auto/qcssparser/testdata/scanner/simple/input b/tests/auto/gui/text/qcssparser/testdata/scanner/simple/input
index b37e587661..b37e587661 100644
--- a/tests/auto/qcssparser/testdata/scanner/simple/input
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/simple/input
diff --git a/tests/auto/qcssparser/testdata/scanner/simple/output b/tests/auto/gui/text/qcssparser/testdata/scanner/simple/output
index 71c60ec9bf..71c60ec9bf 100644
--- a/tests/auto/qcssparser/testdata/scanner/simple/output
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/simple/output
diff --git a/tests/auto/qcssparser/testdata/scanner/unicode/input b/tests/auto/gui/text/qcssparser/testdata/scanner/unicode/input
index 2c33f7be97..2c33f7be97 100644
--- a/tests/auto/qcssparser/testdata/scanner/unicode/input
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/unicode/input
diff --git a/tests/auto/qcssparser/testdata/scanner/unicode/output b/tests/auto/gui/text/qcssparser/testdata/scanner/unicode/output
index 0829c37e28..0829c37e28 100644
--- a/tests/auto/qcssparser/testdata/scanner/unicode/output
+++ b/tests/auto/gui/text/qcssparser/testdata/scanner/unicode/output
diff --git a/tests/auto/qcssparser/tst_qcssparser.cpp b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
index 1e82431a48..1e82431a48 100644
--- a/tests/auto/qcssparser/tst_qcssparser.cpp
+++ b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
diff --git a/tests/auto/qfont/.gitignore b/tests/auto/gui/text/qfont/.gitignore
index 61aa3df16c..61aa3df16c 100644
--- a/tests/auto/qfont/.gitignore
+++ b/tests/auto/gui/text/qfont/.gitignore
diff --git a/tests/auto/gui/text/qfont/qfont.pro b/tests/auto/gui/text/qfont/qfont.pro
new file mode 100644
index 0000000000..891cb0a093
--- /dev/null
+++ b/tests/auto/gui/text/qfont/qfont.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qfont.cpp
+
+
diff --git a/tests/auto/qfont/tst_qfont.cpp b/tests/auto/gui/text/qfont/tst_qfont.cpp
index a564e71e19..a564e71e19 100644
--- a/tests/auto/qfont/tst_qfont.cpp
+++ b/tests/auto/gui/text/qfont/tst_qfont.cpp
diff --git a/tests/auto/qfontdatabase/.gitignore b/tests/auto/gui/text/qfontdatabase/.gitignore
index 65edf9b279..65edf9b279 100644
--- a/tests/auto/qfontdatabase/.gitignore
+++ b/tests/auto/gui/text/qfontdatabase/.gitignore
diff --git a/tests/auto/qfontdatabase/FreeMono.ttf b/tests/auto/gui/text/qfontdatabase/FreeMono.ttf
index d7ce52ddc7..d7ce52ddc7 100644
--- a/tests/auto/qfontdatabase/FreeMono.ttf
+++ b/tests/auto/gui/text/qfontdatabase/FreeMono.ttf
Binary files differ
diff --git a/tests/auto/qfontdatabase/qfontdatabase.pro b/tests/auto/gui/text/qfontdatabase/qfontdatabase.pro
index e7dfc3c73d..e7dfc3c73d 100644
--- a/tests/auto/qfontdatabase/qfontdatabase.pro
+++ b/tests/auto/gui/text/qfontdatabase/qfontdatabase.pro
diff --git a/tests/auto/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
index 1df61d0a06..1df61d0a06 100644
--- a/tests/auto/qfontdatabase/tst_qfontdatabase.cpp
+++ b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
diff --git a/tests/auto/qfontmetrics/.gitignore b/tests/auto/gui/text/qfontmetrics/.gitignore
index 0b428672a3..0b428672a3 100644
--- a/tests/auto/qfontmetrics/.gitignore
+++ b/tests/auto/gui/text/qfontmetrics/.gitignore
diff --git a/tests/auto/qfontmetrics/qfontmetrics.pro b/tests/auto/gui/text/qfontmetrics/qfontmetrics.pro
index c0dc1abbe6..c0dc1abbe6 100644
--- a/tests/auto/qfontmetrics/qfontmetrics.pro
+++ b/tests/auto/gui/text/qfontmetrics/qfontmetrics.pro
diff --git a/tests/auto/qfontmetrics/testfont.qrc b/tests/auto/gui/text/qfontmetrics/testfont.qrc
index bc0c0b0959..bc0c0b0959 100644
--- a/tests/auto/qfontmetrics/testfont.qrc
+++ b/tests/auto/gui/text/qfontmetrics/testfont.qrc
diff --git a/tests/auto/qfontmetrics/tst_qfontmetrics.cpp b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp
index 982cfc11d9..982cfc11d9 100644
--- a/tests/auto/qfontmetrics/tst_qfontmetrics.cpp
+++ b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp
diff --git a/tests/auto/qfontmetrics/ucs4font.ttf b/tests/auto/gui/text/qfontmetrics/ucs4font.ttf
index 31b6997779..31b6997779 100644
--- a/tests/auto/qfontmetrics/ucs4font.ttf
+++ b/tests/auto/gui/text/qfontmetrics/ucs4font.ttf
Binary files differ
diff --git a/tests/auto/qglyphrun/qglyphrun.pro b/tests/auto/gui/text/qglyphrun/qglyphrun.pro
index 480ad5b9a4..480ad5b9a4 100644
--- a/tests/auto/qglyphrun/qglyphrun.pro
+++ b/tests/auto/gui/text/qglyphrun/qglyphrun.pro
diff --git a/tests/auto/qglyphrun/test.ttf b/tests/auto/gui/text/qglyphrun/test.ttf
index 9043a576ef..9043a576ef 100644
--- a/tests/auto/qglyphrun/test.ttf
+++ b/tests/auto/gui/text/qglyphrun/test.ttf
Binary files differ
diff --git a/tests/auto/qglyphrun/tst_qglyphrun.cpp b/tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp
index e84915428f..e84915428f 100644
--- a/tests/auto/qglyphrun/tst_qglyphrun.cpp
+++ b/tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp
diff --git a/tests/auto/gui/text/qrawfont/qrawfont.pro b/tests/auto/gui/text/qrawfont/qrawfont.pro
new file mode 100644
index 0000000000..1c08299699
--- /dev/null
+++ b/tests/auto/gui/text/qrawfont/qrawfont.pro
@@ -0,0 +1,16 @@
+load(qttest_p4)
+
+QT = core core-private gui gui-private
+
+SOURCES += \
+ tst_qrawfont.cpp
+
+INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/harfbuzz/src
+
+wince*|symbian*: {
+ DEFINES += SRCDIR=\\\"\\\"
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qrawfont/testfont.ttf b/tests/auto/gui/text/qrawfont/testfont.ttf
index d6042d2e58..d6042d2e58 100644
--- a/tests/auto/qrawfont/testfont.ttf
+++ b/tests/auto/gui/text/qrawfont/testfont.ttf
Binary files differ
diff --git a/tests/auto/qrawfont/testfont_bold_italic.ttf b/tests/auto/gui/text/qrawfont/testfont_bold_italic.ttf
index 9f65ac8df7..9f65ac8df7 100644
--- a/tests/auto/qrawfont/testfont_bold_italic.ttf
+++ b/tests/auto/gui/text/qrawfont/testfont_bold_italic.ttf
Binary files differ
diff --git a/tests/auto/qrawfont/tst_qrawfont.cpp b/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp
index 1c18f2f1e8..1c18f2f1e8 100644
--- a/tests/auto/qrawfont/tst_qrawfont.cpp
+++ b/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp
diff --git a/tests/auto/gui/text/qstatictext/qstatictext.pro b/tests/auto/gui/text/qstatictext/qstatictext.pro
new file mode 100644
index 0000000000..a8398dccf9
--- /dev/null
+++ b/tests/auto/gui/text/qstatictext/qstatictext.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT += widgets widgets-private
+QT += core core-private gui gui-private
+SOURCES += tst_qstatictext.cpp
+
+CONFIG += insignificant_test # QTBUG-21290 - crashes on qpa, xcb
diff --git a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp
new file mode 100644
index 0000000000..79cbd692ea
--- /dev/null
+++ b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp
@@ -0,0 +1,870 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtWidgets/QApplication>
+#include <QtGui/QPainter>
+#include <QtGui/QImage>
+
+#include <qstatictext.h>
+#include <qpaintengine.h>
+
+#include <private/qstatictext_p.h>
+#include <private/qapplication_p.h>
+
+// #define DEBUG_SAVE_IMAGE
+
+class tst_QStaticText: public QObject
+{
+ Q_OBJECT
+public:
+ tst_QStaticText() {}
+
+private slots:
+ void initTestCase();
+
+ void init();
+ void cleanup();
+
+ void constructionAndDestruction();
+ void drawToPoint_data();
+ void drawToPoint();
+ void drawToRect_data();
+ void drawToRect();
+ void setFont();
+ void setTextWidth();
+ void prepareToCorrectData();
+ void prepareToWrongData();
+
+ void copyConstructor();
+
+ void translatedPainter();
+ void rotatedPainter();
+ void scaledPainter();
+ void projectedPainter();
+#if 0
+ void rotatedScaledAndTranslatedPainter_data();
+ void rotatedScaledAndTranslatedPainter();
+#endif
+ void transformationChanged();
+
+ void plainTextVsRichText();
+
+ void setPenPlainText();
+ void setPenRichText();
+ void richTextOverridesPen();
+
+ void drawStruckOutText();
+ void drawOverlinedText();
+ void drawUnderlinedText();
+
+ void unprintableCharacter_qtbug12614();
+
+ void underlinedColor_qtbug20159();
+ void textDocumentColor();
+
+private:
+ bool supportsTransformations() const;
+
+ QImage const m_whiteSquare;
+};
+
+void tst_QStaticText::initTestCase()
+{
+ // a "blank" square; we compare against in our testfunctions to verify
+ // that we have actually painted something
+ QPixmap pm(1000, 1000);
+ pm.fill(Qt::white);
+ const_cast<QImage&>(m_whiteSquare) = pm.toImage();
+}
+
+void tst_QStaticText::init()
+{
+}
+
+void tst_QStaticText::cleanup()
+{
+}
+
+void tst_QStaticText::constructionAndDestruction()
+{
+ QStaticText text("My text");
+}
+
+void tst_QStaticText::copyConstructor()
+{
+ QStaticText text(QLatin1String("My text"));
+
+ QTextOption textOption(Qt::AlignRight);
+ text.setTextOption(textOption);
+
+ text.setPerformanceHint(QStaticText::AggressiveCaching);
+ text.setTextWidth(123.456);
+ text.setTextFormat(Qt::PlainText);
+
+ QStaticText copiedText(text);
+ copiedText.setText(QLatin1String("Other text"));
+
+ QCOMPARE(copiedText.textOption().alignment(), Qt::AlignRight);
+ QCOMPARE(copiedText.performanceHint(), QStaticText::AggressiveCaching);
+ QCOMPARE(copiedText.textWidth(), 123.456);
+ QCOMPARE(copiedText.textFormat(), Qt::PlainText);
+
+ QStaticText otherCopiedText(copiedText);
+ otherCopiedText.setTextWidth(789);
+
+ QCOMPARE(otherCopiedText.text(), QString::fromLatin1("Other text"));
+}
+
+Q_DECLARE_METATYPE(QStaticText::PerformanceHint)
+void tst_QStaticText::drawToPoint_data()
+{
+ QTest::addColumn<QStaticText::PerformanceHint>("performanceHint");
+
+ QTest::newRow("Moderate caching") << QStaticText::ModerateCaching;
+ QTest::newRow("Aggressive caching") << QStaticText::AggressiveCaching;
+}
+
+void tst_QStaticText::drawToPoint()
+{
+ QFETCH(QStaticText::PerformanceHint, performanceHint);
+
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawStaticText);
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.setTextFormat(Qt::PlainText);
+ text.setPerformanceHint(performanceHint);
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
+ }
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+
+void tst_QStaticText::drawToRect_data()
+{
+ QTest::addColumn<QStaticText::PerformanceHint>("performanceHint");
+
+ QTest::newRow("Moderate caching") << QStaticText::ModerateCaching;
+ QTest::newRow("Aggressive caching") << QStaticText::AggressiveCaching;
+}
+
+void tst_QStaticText::drawToRect()
+{
+ QFETCH(QStaticText::PerformanceHint, performanceHint);
+
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.drawText(QRectF(11, 12, 10, 500), "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawStaticText);
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.setTextWidth(10),
+ p.setClipRect(QRectF(11, 12, 10, 500));
+ text.setPerformanceHint(performanceHint);
+ text.setTextFormat(Qt::PlainText);
+ p.drawStaticText(QPointF(11, 12), text);
+ }
+
+#if defined(DEBUG_SAVE_IMAGE)
+ imageDrawText.save("drawToRect_imageDrawText.png");
+ imageDrawStaticText.save("drawToRect_imageDrawStaticText.png");
+#endif
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+
+void tst_QStaticText::prepareToCorrectData()
+{
+ QTransform transform;
+ transform.scale(2.0, 2.0);
+ transform.rotate(90, Qt::ZAxis);
+
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.setTransform(transform);
+ p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawStaticText);
+ p.setTransform(transform);
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.prepare(transform, p.font());
+ text.setTextFormat(Qt::PlainText);
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
+ }
+
+#if defined(DEBUG_SAVE_IMAGE)
+ imageDrawText.save("prepareToCorrectData_imageDrawText.png");
+ imageDrawStaticText.save("prepareToCorrectData_imageDrawStaticText.png");
+#endif
+
+#ifdef Q_WS_QPA
+ QEXPECT_FAIL("", "QTBUG-20977 fails on qpa", Abort);
+#endif
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+
+void tst_QStaticText::prepareToWrongData()
+{
+ QTransform transform;
+ transform.scale(2.0, 2.0);
+ transform.rotate(90, Qt::ZAxis);
+
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawStaticText);
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.prepare(transform, p.font());
+ text.setTextFormat(Qt::PlainText);
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
+ }
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+
+
+void tst_QStaticText::setFont()
+{
+ QFont font = QApplication::font();
+ font.setBold(true);
+ font.setPointSize(28);
+
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+
+ p.setFont(font);
+ p.drawText(QRectF(11, 120, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawStaticText);
+
+ QStaticText text;
+ text.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.setTextFormat(Qt::PlainText);
+
+ p.drawStaticText(0, 0, text);
+
+ p.setFont(font);
+ p.drawStaticText(11, 120, text);
+ }
+
+#if defined(DEBUG_SAVE_IMAGE)
+ imageDrawText.save("setFont_imageDrawText.png");
+ imageDrawStaticText.save("setFont_imageDrawStaticText.png");
+#endif
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+
+void tst_QStaticText::setTextWidth()
+{
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.drawText(QRectF(11, 12, 10, 500), "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawStaticText);
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.setTextWidth(10);
+ p.setClipRect(QRectF(11, 12, 10, 500));
+ p.drawStaticText(QPointF(11, 12), text);
+ }
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+
+void tst_QStaticText::translatedPainter()
+{
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.translate(100, 200);
+
+ p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawStaticText);
+ p.translate(100, 200);
+
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.setTextFormat(Qt::PlainText);
+
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
+ }
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+
+bool tst_QStaticText::supportsTransformations() const
+{
+ QPixmap pm(10, 10);
+ QPainter p(&pm);
+ QPaintEngine *engine = p.paintEngine();
+
+ QPaintEngine::Type type = engine->type();
+
+ if (type == QPaintEngine::OpenGL
+#if !defined(Q_WS_WIN) && !defined(Q_WS_X11) && !defined(Q_WS_MAC)
+ || type == QPaintEngine::Raster
+#endif
+ )
+ return false;
+
+ return true;
+}
+
+void tst_QStaticText::rotatedPainter()
+{
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.rotate(30.0);
+ p.drawText(QRectF(0, 0, 1000, 100), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.setTextFormat(Qt::PlainText);
+
+ QPainter p(&imageDrawStaticText);
+ p.rotate(30.0);
+ p.drawStaticText(QPoint(0, 0), text);
+ }
+
+#if defined(DEBUG_SAVE_IMAGE)
+ imageDrawText.save("rotatedPainter_imageDrawText.png");
+ imageDrawStaticText.save("rotatedPainter_imageDrawStaticText.png");
+#endif
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+
+void tst_QStaticText::scaledPainter()
+{
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.scale(2.0, 0.2);
+
+ p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawStaticText);
+ p.scale(2.0, 0.2);
+
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.setTextFormat(Qt::PlainText);
+
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
+ }
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+
+void tst_QStaticText::projectedPainter()
+{
+ QTransform transform;
+ transform.rotate(90, Qt::XAxis);
+
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.setTransform(transform);
+
+ p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawStaticText);
+ p.setTransform(transform);
+
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.setTextFormat(Qt::PlainText);
+
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
+ }
+
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+
+#if 0
+void tst_QStaticText::rotatedScaledAndTranslatedPainter_data()
+{
+ QTest::addColumn<qreal>("offset");
+
+ for (int i=0; i<100; ++i) {
+ qreal offset = 300 + i / 100.;
+ QTest::newRow(QByteArray::number(offset).constData()) << offset;
+ }
+}
+
+void tst_QStaticText::rotatedScaledAndTranslatedPainter()
+{
+ QFETCH(qreal, offset);
+
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.translate(offset, 0);
+ p.rotate(45.0);
+ p.scale(2.0, 2.0);
+ p.translate(100, 200);
+
+ p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawStaticText);
+ p.translate(offset, 0);
+ p.rotate(45.0);
+ p.scale(2.0, 2.0);
+ p.translate(100, 200);
+
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.setTextFormat(Qt::PlainText);
+
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
+ }
+
+#if defined(DEBUG_SAVE_IMAGE)
+ imageDrawText.save("rotatedScaledAndPainter_imageDrawText.png");
+ imageDrawStaticText.save("rotatedScaledAndPainter_imageDrawStaticText.png");
+#endif
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+#endif
+
+void tst_QStaticText::transformationChanged()
+{
+ QPixmap imageDrawText(1000, 1000);
+ imageDrawText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawText);
+ p.rotate(33.0);
+ p.scale(0.5, 0.7);
+
+ p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+
+ p.scale(2.0, 2.5);
+ p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ }
+
+ QPixmap imageDrawStaticText(1000, 1000);
+ imageDrawStaticText.fill(Qt::white);
+ {
+ QPainter p(&imageDrawStaticText);
+ p.rotate(33.0);
+ p.scale(0.5, 0.7);
+
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.setTextFormat(Qt::PlainText);
+
+ p.drawStaticText(QPointF(0, 0), text);
+
+ p.scale(2.0, 2.5);
+ p.drawStaticText(QPointF(0, 0), text);
+ }
+
+#if defined(DEBUG_SAVE_IMAGE)
+ imageDrawText.save("transformationChanged_imageDrawText.png");
+ imageDrawStaticText.save("transformationChanged_imageDrawStaticText.png");
+#endif
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
+}
+
+void tst_QStaticText::plainTextVsRichText()
+{
+ QPixmap imagePlainText(1000, 1000);
+ imagePlainText.fill(Qt::white);
+ {
+ QPainter p(&imagePlainText);
+
+ QStaticText staticText;
+ staticText.setText("FOObar");
+ staticText.setTextFormat(Qt::PlainText);
+
+ p.drawStaticText(10, 10, staticText);
+ }
+
+ QPixmap imageRichText(1000, 1000);
+ imageRichText.fill(Qt::white);
+ {
+ QPainter p(&imageRichText);
+
+ QStaticText staticText;
+ staticText.setText("<html><body>FOObar</body></html>");
+ staticText.setTextFormat(Qt::RichText);
+
+ p.drawStaticText(10, 10, staticText);
+ }
+
+#if defined(DEBUG_SAVE_IMAGE)
+ imagePlainText.save("plainTextVsRichText_imagePlainText.png");
+ imageRichText.save("plainTextVsRichText_imageRichText.png");
+#endif
+
+ QVERIFY(imagePlainText.toImage() != m_whiteSquare);
+ QCOMPARE(imagePlainText, imageRichText);
+}
+
+void tst_QStaticText::setPenPlainText()
+{
+ QFont font = QApplication::font();
+ font.setStyleStrategy(QFont::NoAntialias);
+
+ QFontMetricsF fm(font);
+ QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
+ image.fill(Qt::white);
+ {
+ QPainter p(&image);
+ p.setFont(font);
+ p.setPen(Qt::green);
+
+ QStaticText staticText("XXXXX");
+ staticText.setTextFormat(Qt::PlainText);
+ p.drawStaticText(0, 0, staticText);
+ }
+
+ QImage img = image.toImage();
+ for (int x=0; x<img.width(); ++x) {
+ for (int y=0; y<img.height(); ++y) {
+ QRgb pixel = img.pixel(x, y);
+ QVERIFY(pixel == QColor(Qt::white).rgba()
+ || pixel == QColor(Qt::green).rgba());
+ }
+ }
+}
+
+void tst_QStaticText::setPenRichText()
+{
+ QFont font = QApplication::font();
+ font.setStyleStrategy(QFont::NoAntialias);
+
+ QFontMetricsF fm(font);
+ QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
+ image.fill(Qt::white);
+ {
+ QPainter p(&image);
+ p.setFont(font);
+ p.setPen(Qt::green);
+
+ QStaticText staticText;
+ staticText.setText("<html><body>XXXXX</body></html>");
+ staticText.setTextFormat(Qt::RichText);
+ p.drawStaticText(0, 0, staticText);
+ }
+
+ QImage img = image.toImage();
+ for (int x=0; x<img.width(); ++x) {
+ for (int y=0; y<img.height(); ++y) {
+ QRgb pixel = img.pixel(x, y);
+ QVERIFY(pixel == QColor(Qt::white).rgba()
+ || pixel == QColor(Qt::green).rgba());
+ }
+ }
+}
+
+void tst_QStaticText::richTextOverridesPen()
+{
+ QFont font = QApplication::font();
+ font.setStyleStrategy(QFont::NoAntialias);
+
+ QFontMetricsF fm(font);
+ QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
+ image.fill(Qt::white);
+ {
+ QPainter p(&image);
+ p.setFont(font);
+ p.setPen(Qt::green);
+
+ QStaticText staticText;
+ staticText.setText("<html><body><font color=\"#ff0000\">XXXXX</font></body></html>");
+ staticText.setTextFormat(Qt::RichText);
+ p.drawStaticText(0, 0, staticText);
+ }
+
+ QImage img = image.toImage();
+ for (int x=0; x<img.width(); ++x) {
+ for (int y=0; y<img.height(); ++y) {
+ QRgb pixel = img.pixel(x, y);
+ QVERIFY(pixel == QColor(Qt::white).rgba()
+ || pixel == QColor(Qt::red).rgba());
+ }
+ }
+}
+
+void tst_QStaticText::drawStruckOutText()
+{
+ QPixmap imageDrawText(1000, 1000);
+ QPixmap imageDrawStaticText(1000, 1000);
+
+ imageDrawText.fill(Qt::white);
+ imageDrawStaticText.fill(Qt::white);
+
+ QString s = QString::fromLatin1("Foobar");
+
+ QFont font;
+ font.setStrikeOut(true);
+
+ {
+ QPainter p(&imageDrawText);
+ p.setFont(font);
+ p.drawText(QPointF(50, 50), s);
+ }
+
+ {
+ QPainter p(&imageDrawStaticText);
+ QStaticText text = QStaticText(s);
+ p.setFont(font);
+ p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
+ }
+
+#if defined(DEBUG_SAVE_IMAGE)
+ imageDrawText.save("drawStruckOutText_imageDrawText.png");
+ imageDrawStaticText.save("drawStruckOutText_imageDrawStaticText.png");
+#endif
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+ QCOMPARE(imageDrawText, imageDrawStaticText);
+}
+
+void tst_QStaticText::drawOverlinedText()
+{
+ QPixmap imageDrawText(1000, 1000);
+ QPixmap imageDrawStaticText(1000, 1000);
+
+ imageDrawText.fill(Qt::white);
+ imageDrawStaticText.fill(Qt::white);
+
+ QString s = QString::fromLatin1("Foobar");
+
+ QFont font;
+ font.setOverline(true);
+
+ {
+ QPainter p(&imageDrawText);
+ p.setFont(font);
+ p.drawText(QPointF(50, 50), s);
+ }
+
+ {
+ QPainter p(&imageDrawStaticText);
+ QStaticText text = QStaticText(s);
+ p.setFont(font);
+ p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
+ }
+
+#if defined(DEBUG_SAVE_IMAGE)
+ imageDrawText.save("drawOverlinedText_imageDrawText.png");
+ imageDrawStaticText.save("drawOverlinedText_imageDrawStaticText.png");
+#endif
+
+ QVERIFY(imageDrawText.toImage() != m_whiteSquare);
+ QCOMPARE(imageDrawText, imageDrawStaticText);
+}
+
+void tst_QStaticText::drawUnderlinedText()
+{
+ QPixmap imageDrawText(1000, 1000);
+ QPixmap imageDrawStaticText(1000, 1000);
+
+ imageDrawText.fill(Qt::white);
+ imageDrawStaticText.fill(Qt::white);
+
+ QString s = QString::fromLatin1("Foobar");
+
+ QFont font;
+ font.setUnderline(true);
+
+ {
+ QPainter p(&imageDrawText);
+ p.setFont(font);
+ p.drawText(QPointF(50, 50), s);
+ }
+
+ {
+ QPainter p(&imageDrawStaticText);
+ QStaticText text = QStaticText(s);
+ p.setFont(font);
+ p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
+ }
+
+#if defined(DEBUG_SAVE_IMAGE)
+ imageDrawText.save("drawUnderlinedText_imageDrawText.png");
+ imageDrawStaticText.save("drawUnderlinedText_imageDrawStaticText.png");
+#endif
+
+ QCOMPARE(imageDrawText, imageDrawStaticText);
+}
+
+void tst_QStaticText::unprintableCharacter_qtbug12614()
+{
+ QString s(QChar(0x200B)); // U+200B, ZERO WIDTH SPACE
+
+ QStaticText staticText(s);
+
+ QVERIFY(staticText.size().isValid()); // Force layout. Should not crash.
+}
+
+void tst_QStaticText::underlinedColor_qtbug20159()
+{
+ QString multiScriptText;
+ multiScriptText += QChar(0x0410); // Cyrillic 'A'
+ multiScriptText += QLatin1Char('A');
+
+ QStaticText staticText(multiScriptText);
+
+ QFont font;
+ font.setUnderline(true);
+
+ staticText.prepare(QTransform(), font);
+
+ QStaticTextPrivate *d = QStaticTextPrivate::get(&staticText);
+ QCOMPARE(d->itemCount, 2);
+
+ // The pen should not be marked as dirty when drawing the underline
+ QVERIFY(!d->items[0].color.isValid());
+ QVERIFY(!d->items[1].color.isValid());
+}
+
+void tst_QStaticText::textDocumentColor()
+{
+ QStaticText staticText("A<font color=\"red\">B</font>");
+ staticText.setTextFormat(Qt::RichText);
+ staticText.prepare();
+
+ QStaticTextPrivate *d = QStaticTextPrivate::get(&staticText);
+ QCOMPARE(d->itemCount, 2);
+
+ // The pen should not be marked as dirty when drawing the underline
+ QVERIFY(!d->items[0].color.isValid());
+ QVERIFY(d->items[1].color.isValid());
+
+ QCOMPARE(d->items[1].color, QColor(Qt::red));
+}
+
+QTEST_MAIN(tst_QStaticText)
+#include "tst_qstatictext.moc"
diff --git a/tests/auto/qsyntaxhighlighter/.gitignore b/tests/auto/gui/text/qsyntaxhighlighter/.gitignore
index 3efe6efbe5..3efe6efbe5 100644
--- a/tests/auto/qsyntaxhighlighter/.gitignore
+++ b/tests/auto/gui/text/qsyntaxhighlighter/.gitignore
diff --git a/tests/auto/qsyntaxhighlighter/qsyntaxhighlighter.pro b/tests/auto/gui/text/qsyntaxhighlighter/qsyntaxhighlighter.pro
index 30fb3a5283..30fb3a5283 100644
--- a/tests/auto/qsyntaxhighlighter/qsyntaxhighlighter.pro
+++ b/tests/auto/gui/text/qsyntaxhighlighter/qsyntaxhighlighter.pro
diff --git a/tests/auto/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp b/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp
index 24ade2dc91..24ade2dc91 100644
--- a/tests/auto/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp
+++ b/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp
diff --git a/tests/auto/qtextblock/.gitignore b/tests/auto/gui/text/qtextblock/.gitignore
index 648a522140..648a522140 100644
--- a/tests/auto/qtextblock/.gitignore
+++ b/tests/auto/gui/text/qtextblock/.gitignore
diff --git a/tests/auto/gui/text/qtextblock/qtextblock.pro b/tests/auto/gui/text/qtextblock/qtextblock.pro
new file mode 100644
index 0000000000..d50ef5ca78
--- /dev/null
+++ b/tests/auto/gui/text/qtextblock/qtextblock.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+
+QT += widgets widgets-private
+QT += core-private gui-private
+
+SOURCES += tst_qtextblock.cpp
+
+
+
diff --git a/tests/auto/gui/text/qtextblock/tst_qtextblock.cpp b/tests/auto/gui/text/qtextblock/tst_qtextblock.cpp
new file mode 100644
index 0000000000..b04a6f5559
--- /dev/null
+++ b/tests/auto/gui/text/qtextblock/tst_qtextblock.cpp
@@ -0,0 +1,197 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+
+#define protected public
+#include <qtextdocument.h>
+#undef protected
+#include <qdebug.h>
+#ifndef Q_WS_WIN
+#include <private/qtextdocument_p.h>
+#endif
+
+
+
+#include <qtextobject.h>
+#include <qtextcursor.h>
+
+
+//TESTED_FILES=
+
+QT_FORWARD_DECLARE_CLASS(QTextDocument)
+
+class tst_QTextBlock : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QTextBlock();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void fragmentOverBlockBoundaries();
+ void excludeParagraphSeparatorFragment();
+ void backwardsBlockIterator();
+ void previousBlock_qtbug18026();
+ void removedBlock_qtbug18500();
+
+private:
+ QTextDocument *doc;
+ QTextCursor cursor;
+};
+
+tst_QTextBlock::tst_QTextBlock()
+{}
+
+void tst_QTextBlock::init()
+{
+ doc = new QTextDocument;
+ cursor = QTextCursor(doc);
+}
+
+void tst_QTextBlock::cleanup()
+{
+ cursor = QTextCursor();
+ delete doc;
+ doc = 0;
+}
+
+void tst_QTextBlock::fragmentOverBlockBoundaries()
+{
+ /* this creates two fragments in the piecetable:
+ * 1) 'hello<parag separator here>world'
+ * 2) '<parag separator>'
+ * (they are not united because the former was interested after the latter,
+ * hence their position in the pt buffer is the other way around)
+ */
+ cursor.insertText("Hello");
+ cursor.insertBlock();
+ cursor.insertText("World");
+
+ cursor.movePosition(QTextCursor::Start);
+
+ const QTextDocument *doc = cursor.block().document();
+ QVERIFY(doc);
+ // Block separators are always a fragment of their self. Thus:
+ // |Hello|\b|World|\b|
+#if !defined(Q_WS_WIN) && !defined(Q_WS_S60)
+ QVERIFY(doc->docHandle()->fragmentMap().numNodes() == 4);
+#endif
+ QCOMPARE(cursor.block().text(), QString("Hello"));
+ cursor.movePosition(QTextCursor::NextBlock);
+ QCOMPARE(cursor.block().text(), QString("World"));
+}
+
+void tst_QTextBlock::excludeParagraphSeparatorFragment()
+{
+ QTextCharFormat fmt;
+ fmt.setForeground(Qt::blue);
+ cursor.insertText("Hello", fmt);
+
+ QTextBlock block = doc->begin();
+ QVERIFY(block.isValid());
+
+ QTextBlock::Iterator it = block.begin();
+
+ QTextFragment fragment = it.fragment();
+ QVERIFY(fragment.isValid());
+ QCOMPARE(fragment.text(), QString("Hello"));
+
+ ++it;
+ QVERIFY(it.atEnd());
+ QVERIFY(it == block.end());
+}
+
+void tst_QTextBlock::backwardsBlockIterator()
+{
+ QTextCharFormat fmt;
+
+ fmt.setForeground(Qt::magenta);
+ cursor.insertText("A", fmt);
+
+ fmt.setForeground(Qt::red);
+ cursor.insertText("A", fmt);
+
+ fmt.setForeground(Qt::magenta);
+ cursor.insertText("A", fmt);
+
+ QTextBlock block = doc->begin();
+ QVERIFY(block.isValid());
+
+ QTextBlock::Iterator it = block.begin();
+ QCOMPARE(it.fragment().position(), 0);
+ ++it;
+ QCOMPARE(it.fragment().position(), 1);
+ ++it;
+
+ QCOMPARE(it.fragment().position(), 2);
+
+ --it;
+ QCOMPARE(it.fragment().position(), 1);
+ --it;
+ QCOMPARE(it.fragment().position(), 0);
+}
+
+void tst_QTextBlock::previousBlock_qtbug18026()
+{
+ QTextBlock last = doc->end().previous();
+ QVERIFY(last.isValid());
+}
+
+void tst_QTextBlock::removedBlock_qtbug18500()
+{
+ cursor.insertText("line 1\nline 2\nline 3 \nline 4\n");
+ cursor.setPosition(7);
+ QTextBlock block = cursor.block();
+ cursor.setPosition(21, QTextCursor::KeepAnchor);
+
+ cursor.removeSelectedText();
+ QVERIFY(!block.isValid());
+}
+
+QTEST_MAIN(tst_QTextBlock)
+#include "tst_qtextblock.moc"
diff --git a/tests/auto/qtextcursor/.gitignore b/tests/auto/gui/text/qtextcursor/.gitignore
index b9b1f8e7d6..b9b1f8e7d6 100644
--- a/tests/auto/qtextcursor/.gitignore
+++ b/tests/auto/gui/text/qtextcursor/.gitignore
diff --git a/tests/auto/qtextcursor/qtextcursor.pro b/tests/auto/gui/text/qtextcursor/qtextcursor.pro
index 828b90ca16..828b90ca16 100644
--- a/tests/auto/qtextcursor/qtextcursor.pro
+++ b/tests/auto/gui/text/qtextcursor/qtextcursor.pro
diff --git a/tests/auto/qtextcursor/tst_qtextcursor.cpp b/tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp
index 2b0ba422e0..2b0ba422e0 100644
--- a/tests/auto/qtextcursor/tst_qtextcursor.cpp
+++ b/tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp
diff --git a/tests/auto/qtextdocument/.gitignore b/tests/auto/gui/text/qtextdocument/.gitignore
index c14f0e2422..c14f0e2422 100644
--- a/tests/auto/qtextdocument/.gitignore
+++ b/tests/auto/gui/text/qtextdocument/.gitignore
diff --git a/tests/auto/qtextdocument/common.h b/tests/auto/gui/text/qtextdocument/common.h
index 1eaefdbfbe..1eaefdbfbe 100644
--- a/tests/auto/qtextdocument/common.h
+++ b/tests/auto/gui/text/qtextdocument/common.h
diff --git a/tests/auto/qtextdocument/qtextdocument.pro b/tests/auto/gui/text/qtextdocument/qtextdocument.pro
index 69517589cc..69517589cc 100644
--- a/tests/auto/qtextdocument/qtextdocument.pro
+++ b/tests/auto/gui/text/qtextdocument/qtextdocument.pro
diff --git a/tests/auto/qtextdocument/tst_qtextdocument.cpp b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
index c98a703acc..c98a703acc 100644
--- a/tests/auto/qtextdocument/tst_qtextdocument.cpp
+++ b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
diff --git a/tests/auto/qtextdocumentfragment/.gitignore b/tests/auto/gui/text/qtextdocumentfragment/.gitignore
index 5c569834d3..5c569834d3 100644
--- a/tests/auto/qtextdocumentfragment/.gitignore
+++ b/tests/auto/gui/text/qtextdocumentfragment/.gitignore
diff --git a/tests/auto/qtextdocumentfragment/qtextdocumentfragment.pro b/tests/auto/gui/text/qtextdocumentfragment/qtextdocumentfragment.pro
index e6ddd45f85..e6ddd45f85 100644
--- a/tests/auto/qtextdocumentfragment/qtextdocumentfragment.pro
+++ b/tests/auto/gui/text/qtextdocumentfragment/qtextdocumentfragment.pro
diff --git a/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp b/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
index 68c7a285ef..68c7a285ef 100644
--- a/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
+++ b/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
diff --git a/tests/auto/qtextdocumentlayout/.gitignore b/tests/auto/gui/text/qtextdocumentlayout/.gitignore
index 80671c70d0..80671c70d0 100644
--- a/tests/auto/qtextdocumentlayout/.gitignore
+++ b/tests/auto/gui/text/qtextdocumentlayout/.gitignore
diff --git a/tests/auto/gui/text/qtextdocumentlayout/qtextdocumentlayout.pro b/tests/auto/gui/text/qtextdocumentlayout/qtextdocumentlayout.pro
new file mode 100644
index 0000000000..32b05ce061
--- /dev/null
+++ b/tests/auto/gui/text/qtextdocumentlayout/qtextdocumentlayout.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qtextdocumentlayout.cpp
+
+
diff --git a/tests/auto/qtextdocumentlayout/tst_qtextdocumentlayout.cpp b/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp
index f5c72cd4d0..f5c72cd4d0 100644
--- a/tests/auto/qtextdocumentlayout/tst_qtextdocumentlayout.cpp
+++ b/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp
diff --git a/tests/auto/qtextformat/.gitignore b/tests/auto/gui/text/qtextformat/.gitignore
index 3e3be422fe..3e3be422fe 100644
--- a/tests/auto/qtextformat/.gitignore
+++ b/tests/auto/gui/text/qtextformat/.gitignore
diff --git a/tests/auto/qtextformat/qtextformat.pro b/tests/auto/gui/text/qtextformat/qtextformat.pro
index 30f6e50c61..30f6e50c61 100644
--- a/tests/auto/qtextformat/qtextformat.pro
+++ b/tests/auto/gui/text/qtextformat/qtextformat.pro
diff --git a/tests/auto/qtextformat/tst_qtextformat.cpp b/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp
index b235b112b6..b235b112b6 100644
--- a/tests/auto/qtextformat/tst_qtextformat.cpp
+++ b/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp
diff --git a/tests/auto/qtextlayout/.gitignore b/tests/auto/gui/text/qtextlayout/.gitignore
index 11758969db..11758969db 100644
--- a/tests/auto/qtextlayout/.gitignore
+++ b/tests/auto/gui/text/qtextlayout/.gitignore
diff --git a/tests/auto/qtextlayout/qtextlayout.pro b/tests/auto/gui/text/qtextlayout/qtextlayout.pro
index 6bf0065e4f..6bf0065e4f 100644
--- a/tests/auto/qtextlayout/qtextlayout.pro
+++ b/tests/auto/gui/text/qtextlayout/qtextlayout.pro
diff --git a/tests/auto/qtextlayout/tst_qtextlayout.cpp b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
index 2414ab3e37..2414ab3e37 100644
--- a/tests/auto/qtextlayout/tst_qtextlayout.cpp
+++ b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
diff --git a/tests/auto/qtextlist/.gitignore b/tests/auto/gui/text/qtextlist/.gitignore
index f1c4f6acab..f1c4f6acab 100644
--- a/tests/auto/qtextlist/.gitignore
+++ b/tests/auto/gui/text/qtextlist/.gitignore
diff --git a/tests/auto/qtextlist/qtextlist.pro b/tests/auto/gui/text/qtextlist/qtextlist.pro
index f66fb96dd0..f66fb96dd0 100644
--- a/tests/auto/qtextlist/qtextlist.pro
+++ b/tests/auto/gui/text/qtextlist/qtextlist.pro
diff --git a/tests/auto/qtextlist/tst_qtextlist.cpp b/tests/auto/gui/text/qtextlist/tst_qtextlist.cpp
index 164dd6fc68..164dd6fc68 100644
--- a/tests/auto/qtextlist/tst_qtextlist.cpp
+++ b/tests/auto/gui/text/qtextlist/tst_qtextlist.cpp
diff --git a/tests/auto/qtextobject/.gitignore b/tests/auto/gui/text/qtextobject/.gitignore
index 6a3da09549..6a3da09549 100644
--- a/tests/auto/qtextobject/.gitignore
+++ b/tests/auto/gui/text/qtextobject/.gitignore
diff --git a/tests/auto/gui/text/qtextobject/qtextobject.pro b/tests/auto/gui/text/qtextobject/qtextobject.pro
new file mode 100644
index 0000000000..e87a364ab6
--- /dev/null
+++ b/tests/auto/gui/text/qtextobject/qtextobject.pro
@@ -0,0 +1,9 @@
+############################################################
+# Project file for autotest for file qtextobject.h
+############################################################
+
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qtextobject.cpp
+
+
diff --git a/tests/auto/qtextobject/tst_qtextobject.cpp b/tests/auto/gui/text/qtextobject/tst_qtextobject.cpp
index 0d1773e3fa..0d1773e3fa 100644
--- a/tests/auto/qtextobject/tst_qtextobject.cpp
+++ b/tests/auto/gui/text/qtextobject/tst_qtextobject.cpp
diff --git a/tests/auto/qtextodfwriter/.gitignore b/tests/auto/gui/text/qtextodfwriter/.gitignore
index 791445d7a9..791445d7a9 100644
--- a/tests/auto/qtextodfwriter/.gitignore
+++ b/tests/auto/gui/text/qtextodfwriter/.gitignore
diff --git a/tests/auto/gui/text/qtextodfwriter/qtextodfwriter.pro b/tests/auto/gui/text/qtextodfwriter/qtextodfwriter.pro
new file mode 100644
index 0000000000..25bb5a5ed0
--- /dev/null
+++ b/tests/auto/gui/text/qtextodfwriter/qtextodfwriter.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT += core-private gui-private
+SOURCES += tst_qtextodfwriter.cpp
+
+!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
+symbian:INCLUDEPATH+=$$[QT_INSTALL_PREFIX]/include/QtGui/private
diff --git a/tests/auto/qtextodfwriter/tst_qtextodfwriter.cpp b/tests/auto/gui/text/qtextodfwriter/tst_qtextodfwriter.cpp
index 765afce66e..765afce66e 100644
--- a/tests/auto/qtextodfwriter/tst_qtextodfwriter.cpp
+++ b/tests/auto/gui/text/qtextodfwriter/tst_qtextodfwriter.cpp
diff --git a/tests/auto/qtextpiecetable/.gitignore b/tests/auto/gui/text/qtextpiecetable/.gitignore
index 720b01f79f..720b01f79f 100644
--- a/tests/auto/qtextpiecetable/.gitignore
+++ b/tests/auto/gui/text/qtextpiecetable/.gitignore
diff --git a/tests/auto/gui/text/qtextpiecetable/qtextpiecetable.pro b/tests/auto/gui/text/qtextpiecetable/qtextpiecetable.pro
new file mode 100644
index 0000000000..cfbbe2bca5
--- /dev/null
+++ b/tests/auto/gui/text/qtextpiecetable/qtextpiecetable.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+QT += widgets widgets-private
+QT += core-private gui-private
+SOURCES += tst_qtextpiecetable.cpp
+HEADERS += ../qtextdocument/common.h
+
+requires(!win32)
+requires(contains(QT_CONFIG,private_tests))
+
diff --git a/tests/auto/gui/text/qtextpiecetable/tst_qtextpiecetable.cpp b/tests/auto/gui/text/qtextpiecetable/tst_qtextpiecetable.cpp
new file mode 100644
index 0000000000..ddaf84134d
--- /dev/null
+++ b/tests/auto/gui/text/qtextpiecetable/tst_qtextpiecetable.cpp
@@ -0,0 +1,1155 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#define protected public
+
+#include <qtextdocument.h>
+#undef protected
+#include <private/qtextdocument_p.h>
+#include <qabstracttextdocumentlayout.h>
+#include <qtextobject.h>
+#include <qdebug.h>
+#include <stdlib.h>
+#include <qtextcursor.h>
+#include "../qtextdocument/common.h"
+
+//TESTED_FILES=gui/text/qtextdocument_p.cpp gui/text/qtextdocument_p.h
+
+class tst_QTextPieceTable : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QTextPieceTable();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void insertion1();
+ void insertion2();
+ void insertion3();
+ void insertion4();
+ void insertion5();
+
+ void removal1();
+ void removal2();
+ void removal3();
+ void removal4();
+
+ void undoRedo1();
+ void undoRedo2();
+ void undoRedo3();
+ void undoRedo4();
+ void undoRedo5();
+ void undoRedo6();
+ void undoRedo7();
+ void undoRedo8();
+ void undoRedo9();
+ void undoRedo10();
+ void undoRedo11();
+
+ void checkDocumentChanged();
+ void checkDocumentChanged2();
+ void setBlockFormat();
+
+ void blockInsertion();
+ void blockInsertion2();
+
+ void blockRemoval1();
+ void blockRemoval2();
+ void blockRemoval3();
+ void blockRemoval4();
+ void blockRemoval5();
+
+ void checkBlockSeparation();
+
+ void checkFrames1();
+ void removeFrameDirect();
+ void removeWithChildFrame();
+ void clearWithFrames();
+
+private:
+ QTextDocument *doc;
+ QTextDocumentPrivate *table;
+ int blockFormatIndex;
+ int charFormatIndex;
+};
+
+tst_QTextPieceTable::tst_QTextPieceTable()
+{ doc = 0; table = 0; }
+
+
+void tst_QTextPieceTable::init()
+{
+ doc = new QTextDocument(0);
+ table = doc->docHandle();
+ blockFormatIndex = table->formatCollection()->indexForFormat(QTextBlockFormat());
+ charFormatIndex = table->formatCollection()->indexForFormat(QTextCharFormat());
+}
+
+void tst_QTextPieceTable::cleanup()
+{
+ delete doc;
+ doc = 0;
+}
+
+void tst_QTextPieceTable::insertion1()
+{
+ table->insert(0, "aacc", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("aacc"));
+ table->insert(2, "bb", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("aabbcc"));
+ table->insert(1, "1", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("a1abbcc"));
+ table->insert(6, "d", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("a1abbcdc"));
+ table->insert(8, "z", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("a1abbcdcz"));
+}
+
+void tst_QTextPieceTable::insertion2()
+{
+ table->insert(0, "bb", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("bb"));
+}
+
+void tst_QTextPieceTable::insertion3()
+{
+ QString compare;
+ for (int i = 0; i < 20000; ++i) {
+ int pos = rand() % (i+1);
+ QChar c((unsigned short)(i & 0xff) + 1);
+ QString str;
+ str += c;
+ table->insert(pos, str, charFormatIndex);
+ compare.insert(pos, str);
+ }
+ QVERIFY(table->plainText() == compare);
+}
+
+void tst_QTextPieceTable::insertion4()
+{
+ QString compare;
+ for (int i = 0; i < 20000; ++i) {
+ int pos = rand() % (i+1);
+ QChar c((unsigned short)((i % 26) + (i>25?'A':'a')));
+ QString str;
+ str += c;
+ str += c;
+ table->insert(pos, str, charFormatIndex);
+ compare.insert(pos, str);
+ // if (table->text() != compare) {
+ // qDebug("compare failed: i=%d (current char=%c) insert at %d\nexpected '%s'\ngot '%s'", i, (i % 26) + (i>25?'A':'a'), pos, compare.latin1(), table->text().latin1());
+ // exit(12);
+ // }
+ }
+ QVERIFY(table->plainText() == compare);
+}
+
+void tst_QTextPieceTable::insertion5()
+{
+ QString compare;
+ for (int i = 0; i < 20000; ++i) {
+ int pos = rand() % (i+1);
+ QChar c((unsigned short)((i % 26) + (i>25?'A':'a')));
+ QString str;
+ str += c;
+ str += c;
+ if (c == 'a') {
+ table->insertBlock(pos, blockFormatIndex, charFormatIndex);
+ str = QChar(QChar::ParagraphSeparator);
+ } else {
+ table->insert(pos, str, charFormatIndex);
+ }
+ compare.insert(pos, str);
+ }
+ QVERIFY(table->plainText() == compare);
+ for (QTextBlock it = table->blocksBegin(); it != table->blocksEnd(); it = it.next()) {
+ QTextDocumentPrivate::FragmentIterator fit = table->find(it.position());
+ QVERIFY(fit.position() == it.position());
+ }
+}
+
+void tst_QTextPieceTable::removal1()
+{
+ table->insert(0, "abbccc", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("abbccc"));
+ table->remove(1, 2);
+ QCOMPARE(table->plainText(), QString("accc"));
+ table->insert(1, "1", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("a1ccc"));
+ table->remove(4, 1);
+ QCOMPARE(table->plainText(), QString("a1cc"));
+ table->insert(4, "z", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("a1ccz"));
+}
+
+void tst_QTextPieceTable::removal2()
+{
+ table->insert(0, "bb", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("bb"));
+ table->remove(0, 2);
+ QCOMPARE(table->plainText(), QString(""));
+ table->insertBlock(0, blockFormatIndex, charFormatIndex);
+ QCOMPARE(table->plainText(), QString(QChar(QChar::ParagraphSeparator)));
+ table->remove(0, 1);
+ QCOMPARE(table->plainText(), QString(""));
+
+ table->insert(0, "bb", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("bb"));
+ table->insertBlock(1, blockFormatIndex, charFormatIndex);
+ QCOMPARE(table->plainText(), QString("b") + QString(QChar(QChar::ParagraphSeparator)) + QString("b"));
+ table->remove(1, 1);
+ QCOMPARE(table->plainText(), QString("bb"));
+}
+
+void tst_QTextPieceTable::removal3()
+{
+ QString compare;
+ int l = 0;
+ for (int i = 0; i < 20000; ++i) {
+ bool remove = l && (rand() % 2);
+ int pos = rand() % (remove ? l : (l+1));
+ QChar c((unsigned short)((i % 26) + (i>25?'A':'a')));
+ QString str;
+ str += c;
+ str += c;
+ if (remove && pos < table->length()) {
+ compare.remove(pos, 1);
+ table->remove(pos, 1);
+ } else {
+ compare.insert(pos, str);
+ table->insert(pos, str, charFormatIndex);
+ }
+ l += remove ? -1 : 2;
+ // if (table->text() != compare) {
+ // qDebug("compare failed: i=%d (current char=%c) insert at %d\nexpected '%s'\ngot '%s'", i, (i % 26) + (i>25?'A':'a'), pos, compare.latin1(), table->text().latin1());
+ // exit(12);
+ // }
+ }
+ QVERIFY(table->plainText() == compare);
+}
+
+void tst_QTextPieceTable::removal4()
+{
+ QString compare;
+ int l = 0;
+ for (int i = 0; i < 20000; ++i) {
+ bool remove = l && (rand() % 2);
+ int pos = (l > 1) ? rand() % (remove ? l-1 : l) : 0;
+ QChar c((unsigned short)((i % 26) + (i>25?'A':'a')));
+ QString str;
+ if (c != 'a') {
+ str += c;
+ str += c;
+ } else {
+ str = QChar(QChar::ParagraphSeparator);
+ }
+ if (remove && pos < table->length() - 1) {
+ compare.remove(pos, 1);
+ table->remove(pos, 1);
+ } else {
+ if (str[0] == QChar(QChar::ParagraphSeparator))
+ table->insertBlock(pos, blockFormatIndex, charFormatIndex);
+ else
+ table->insert(pos, str, charFormatIndex);
+ compare.insert(pos, str);
+ }
+ l += remove ? -1 : 2;
+// if (table->plainText() != compare) {
+// qDebug("compare failed: i=%d (current char=%c) insert at %d\nexpected '%s'\ngot '%s'", i, (i % 26) + (i>25?'A':'a'), pos, compare.latin1(), table->plainText().latin1());
+// exit(12);
+// }
+ }
+ QVERIFY(table->plainText() == compare);
+}
+
+void tst_QTextPieceTable::undoRedo1()
+{
+ table->insert(0, "01234567", charFormatIndex);
+ table->insert(0, "a", charFormatIndex);
+ table->insert(1, "b", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("ab01234567"));
+ table->undo();
+ QCOMPARE(table->plainText(), QString("01234567"));
+ table->redo();
+ QCOMPARE(table->plainText(), QString("ab01234567"));
+ table->undo();
+ table->insert(1, "c", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("0c1234567"));
+ table->undo();
+ QCOMPARE(table->plainText(), QString("01234567"));
+ table->undo();
+ QVERIFY(table->plainText().isEmpty());
+}
+
+void tst_QTextPieceTable::undoRedo2()
+{
+ table->insert(0, "01", charFormatIndex);
+ table->insert(1, "a", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("0a1"));
+ table->undo();
+ QCOMPARE(table->plainText(), QString("01"));
+ table->undo();
+ QCOMPARE(table->plainText(), QString(""));
+ table->redo();
+ QCOMPARE(table->plainText(), QString("01"));
+ table->redo();
+ QCOMPARE(table->plainText(), QString("0a1"));
+}
+
+void tst_QTextPieceTable::undoRedo3()
+{
+ table->insert(0, "01", charFormatIndex);
+ table->insert(2, "ab", charFormatIndex);
+ table->remove(2, 1);
+ QCOMPARE(table->plainText(), QString("01b"));
+ table->undo();
+ QCOMPARE(table->plainText(), QString("01ab"));
+ table->undo();
+ QVERIFY(table->plainText().isEmpty());
+ table->redo();
+ QCOMPARE(table->plainText(), QString("01ab"));
+ table->redo();
+ QCOMPARE(table->plainText(), QString("01b"));
+}
+
+void tst_QTextPieceTable::undoRedo4()
+{
+ table->insert(0, "01", charFormatIndex);
+ table->insert(0, "ab", charFormatIndex);
+ table->remove(0, 1);
+ QCOMPARE(table->plainText(), QString("b01"));
+ table->undo();
+ QCOMPARE(table->plainText(), QString("ab01"));
+ table->undo();
+ QCOMPARE(table->plainText(), QString("01"));
+ table->undo();
+ QCOMPARE(table->plainText(), QString(""));
+ table->redo();
+ QCOMPARE(table->plainText(), QString("01"));
+ table->redo();
+ QCOMPARE(table->plainText(), QString("ab01"));
+ table->redo();
+ QCOMPARE(table->plainText(), QString("b01"));
+}
+
+void tst_QTextPieceTable::undoRedo5()
+{
+ table->beginEditBlock();
+ table->insert(0, "01", charFormatIndex);
+ table->remove(1, 1);
+ table->endEditBlock();
+ QCOMPARE(table->plainText(), QString("0"));
+ table->undo();
+ QCOMPARE(table->plainText(), QString(""));
+}
+
+void tst_QTextPieceTable::undoRedo6()
+{
+ // this is essentially a test for the undoStack[undoPosition - 1].block = false in PieceTable::endUndoBlock()
+ QTextDocument doc;
+ QTextCursor cursor(&doc);
+ cursor.insertText("Hello World");
+
+ cursor.insertBlock();
+ cursor.insertText("Hello World2");
+
+ cursor.movePosition(QTextCursor::Start);
+ QTextBlockFormat bfmt;
+ bfmt.setAlignment(Qt::AlignHCenter);
+ cursor.setBlockFormat(bfmt);
+ QVERIFY(cursor.blockFormat().alignment() == Qt::AlignHCenter);
+
+ QTextCursor range = cursor;
+ range.clearSelection();
+ range.movePosition(QTextCursor::Start);
+ range.movePosition(QTextCursor::End, QTextCursor::KeepAnchor);
+
+ QTextCharFormat modifier;
+ modifier.setFontItalic(true);
+ range.mergeCharFormat(modifier);
+
+ cursor.movePosition(QTextCursor::Start);
+ QVERIFY(cursor.blockFormat().alignment() == Qt::AlignHCenter);
+
+ doc.undo();
+
+ QVERIFY(cursor.blockFormat().alignment() == Qt::AlignHCenter);
+}
+
+void tst_QTextPieceTable::undoRedo7()
+{
+ table->insert(0, "a", charFormatIndex);
+ table->insert(1, "b", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("ab"));
+
+ table->undo();
+ QVERIFY(table->plainText().isEmpty());
+}
+
+void tst_QTextPieceTable::undoRedo8()
+{
+ table->insert(0, "a", charFormatIndex);
+ table->insert(1, "b", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("ab"));
+
+ table->remove(0, 1);
+ table->remove(0, 1);
+
+ QVERIFY(table->plainText().isEmpty());
+ table->undo();
+ QCOMPARE(table->plainText(), QString("ab"));
+}
+
+void tst_QTextPieceTable::undoRedo9()
+{
+ table->insert(0, "a", charFormatIndex);
+ table->insert(1, "b", charFormatIndex);
+ QCOMPARE(table->plainText(), QString("ab"));
+
+ table->remove(1, 1);
+ table->remove(0, 1);
+
+ QVERIFY(table->plainText().isEmpty());
+ table->undo();
+ QCOMPARE(table->plainText(), QString("ab"));
+}
+
+void tst_QTextPieceTable::undoRedo10()
+{
+ // testcase for the beginUndoBlock/endUndoBlock calls being surrounded by an if (undoEnabled)
+ QTextCharFormat cf;
+ cf.setForeground(Qt::blue);
+ int cfIdx = table->formatCollection()->indexForFormat(cf);
+
+ QTextBlockFormat f;
+ int idx = table->formatCollection()->indexForFormat(f);
+
+ table->insert(0, "a", cfIdx);
+ table->insertBlock(1, idx, cfIdx);
+ table->insert(1, "b", cfIdx);
+
+ cf.setForeground(Qt::red);
+ int newCfIdx = table->formatCollection()->indexForFormat(cf);
+
+ table->setCharFormat(0, 3, cf, QTextDocumentPrivate::MergeFormat);
+
+ QCOMPARE(table->find(0).value()->format, newCfIdx);
+
+ table->undo();
+
+ QCOMPARE(table->find(0).value()->format, cfIdx);
+}
+
+void tst_QTextPieceTable::undoRedo11()
+{
+ srand(3);
+ const int loops = 20;
+ QString compare;
+ int l = 0;
+ for (int i = 0; i < loops; ++i) {
+ bool remove = l && (rand() % 2);
+ int pos = (l > 1) ? rand() % (remove ? l-1 : l) : 0;
+ QChar c((unsigned short)((i % 26) + (i>25?'A':'a')));
+ QString str;
+ str += c;
+ str += c;
+ if (remove) {
+ compare.remove(pos, 1);
+ table->remove(pos, 1);
+ } else {
+ compare.insert(pos, str);
+ table->insert(pos, str, charFormatIndex);
+ }
+ l += remove ? -1 : 2;
+ }
+ QVERIFY(table->plainText() == compare);
+ for (int i = 0; i < loops; ++i)
+ table->undo();
+ QVERIFY(table->plainText() == QString(""));
+ for (int i = 0; i < loops; ++i)
+ table->redo();
+ QVERIFY(table->plainText() == compare);
+}
+
+
+void tst_QTextPieceTable::checkDocumentChanged()
+{
+ table->enableUndoRedo(false);
+ QTestDocumentLayout *layout = new QTestDocumentLayout(doc);
+ doc->setDocumentLayout(layout);
+
+ // single insert
+ layout->expect(0, 0, 15);
+ table->insert(0, "012345678901234", charFormatIndex);
+ QVERIFY(!layout->error);
+
+ // single remove
+ layout->expect(0, 5, 0);
+ table->remove(0, 5);
+ QVERIFY(!layout->error);
+
+ // symmetric insert/remove
+ layout->expect(0, 0, 0);
+ table->beginEditBlock();
+ table->insert(0, "01234", charFormatIndex);
+ table->remove(0, 5);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ layout->expect(0, 5, 5);
+ table->beginEditBlock();
+ table->remove(0, 5);
+ table->insert(0, "01234", charFormatIndex);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ // replace
+ layout->expect(0, 3, 5);
+ table->beginEditBlock();
+ table->remove(0, 3);
+ table->insert(0, "01234", charFormatIndex);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ layout->expect(0, 0, 2);
+ table->beginEditBlock();
+ table->insert(0, "01234", charFormatIndex);
+ table->remove(0, 3);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ // insert + remove inside insert block
+ layout->expect(0, 0, 2);
+ table->beginEditBlock();
+ table->insert(0, "01234", charFormatIndex);
+ table->remove(1, 3);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ layout->expect(0, 0, 2);
+ table->beginEditBlock();
+ table->insert(0, "01234", charFormatIndex);
+ table->remove(2, 3);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ // insert + remove partly outside
+ layout->expect(0, 1, 0);
+ table->beginEditBlock();
+ table->insert(1, "0", charFormatIndex);
+ table->remove(0, 2);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ layout->expect(0, 1, 1);
+ table->beginEditBlock();
+ table->insert(1, "01", charFormatIndex);
+ table->remove(0, 2);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ layout->expect(0, 1, 2);
+ table->beginEditBlock();
+ table->insert(1, "012", charFormatIndex);
+ table->remove(0, 2);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ layout->expect(1, 1, 0);
+ table->beginEditBlock();
+ table->insert(1, "0", charFormatIndex);
+ table->remove(1, 2);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ layout->expect(1, 1, 1);
+ table->beginEditBlock();
+ table->insert(1, "01", charFormatIndex);
+ table->remove(2, 2);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ layout->expect(1, 1, 2);
+ table->beginEditBlock();
+ table->insert(1, "012", charFormatIndex);
+ table->remove(3, 2);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ // insert + remove non overlapping
+ layout->expect(0, 1, 1);
+ table->beginEditBlock();
+ table->insert(1, "0", charFormatIndex);
+ table->remove(0, 1);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ layout->expect(0, 2, 2);
+ table->beginEditBlock();
+ table->insert(2, "1", charFormatIndex);
+ table->remove(0, 1);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ layout->expect(0, 2, 2);
+ table->beginEditBlock();
+ table->remove(0, 1);
+ table->insert(1, "0", charFormatIndex);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ layout->expect(0, 3, 3);
+ table->beginEditBlock();
+ table->remove(0, 1);
+ table->insert(2, "1", charFormatIndex);
+ table->endEditBlock();
+
+
+ layout->expect(0, 3, 3);
+ QTextCharFormat fmt;
+ fmt.setForeground(Qt::blue);
+ table->beginEditBlock();
+ table->setCharFormat(0, 1, fmt);
+ table->setCharFormat(2, 1, fmt);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+}
+
+void tst_QTextPieceTable::checkDocumentChanged2()
+{
+ QTestDocumentLayout *layout = new QTestDocumentLayout(doc);
+ doc->setDocumentLayout(layout);
+
+ QTextCharFormat fmt;
+ fmt.setForeground(Qt::blue);
+ int anotherCharFormatIndex = table->formatCollection()->indexForFormat(fmt);
+
+ layout->expect(0, 0, 12);
+ table->beginEditBlock();
+ table->insert(0, "0123", charFormatIndex);
+ table->insert(4, "4567", anotherCharFormatIndex);
+ table->insert(8, "8901", charFormatIndex);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+
+ fmt.setFontItalic(true);
+
+ layout->expect(1, 10, 10);
+ table->beginEditBlock();
+ table->setCharFormat(8, 3, fmt);
+ table->setCharFormat(4, 4, fmt);
+ table->setCharFormat(1, 3, fmt);
+ table->endEditBlock();
+ QVERIFY(!layout->error);
+}
+
+void tst_QTextPieceTable::setBlockFormat()
+{
+ QTextBlockFormat bfmt;
+ int index = table->formatCollection()->indexForFormat(bfmt);
+
+ table->insertBlock(0, index, charFormatIndex);
+ table->insertBlock(0, index, charFormatIndex);
+ table->insertBlock(0, index, charFormatIndex);
+
+ QTextBlockFormat newbfmt = bfmt;
+ newbfmt.setAlignment(Qt::AlignRight);
+ index = table->formatCollection()->indexForFormat(bfmt);
+ QTextBlock b = table->blocksFind(1);
+ table->setBlockFormat(b, b, newbfmt);
+
+ QVERIFY(table->blocksFind(0).blockFormat() == bfmt);
+ QVERIFY(table->blocksFind(1).blockFormat() == newbfmt);
+ QVERIFY(table->blocksFind(2).blockFormat() == bfmt);
+}
+
+
+void tst_QTextPieceTable::blockInsertion()
+{
+ QTextBlockFormat fmt;
+ fmt.setTopMargin(100);
+ int idx = table->formatCollection()->indexForFormat(fmt);
+ int charFormat = table->formatCollection()->indexForFormat(QTextCharFormat());
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+
+ table->insertBlock(0, idx, charFormat);
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(1).blockFormat() == fmt);
+
+ table->undo();
+ QVERIFY(table->blockMap().length() == 1);
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+
+ table->redo();
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(1).blockFormat() == fmt);
+}
+
+void tst_QTextPieceTable::blockInsertion2()
+{
+ // caused evil failing assertion in fragmentmap
+ int pos = 0;
+ table->insertBlock(pos, blockFormatIndex, charFormatIndex);
+ pos += 1;
+ table->insert(pos, "a", charFormatIndex);
+ pos += 1;
+
+ pos -= 1;
+ table->insertBlock(pos, blockFormatIndex, charFormatIndex);
+ QCOMPARE(table->blocksFind(0).position(), 0);
+ QCOMPARE(table->blocksFind(1).position(), 1);
+ QCOMPARE(table->blocksFind(2).position(), 2);
+}
+
+/*
+ Tests correct removal behaviour when deleting over block boundaries or complete blocks.
+*/
+
+void tst_QTextPieceTable::blockRemoval1()
+{
+ QTextBlockFormat fmt1;
+ fmt1.setTopMargin(100);
+ QTextBlockFormat fmt2;
+ fmt2.setAlignment(Qt::AlignRight);
+ int idx1 = table->formatCollection()->indexForFormat(fmt1);
+ int idx2 = table->formatCollection()->indexForFormat(fmt2);
+
+ table->insert(0, "0123", charFormatIndex);
+ table->insertBlock(4, idx1, charFormatIndex);
+ table->insert(5, "5678", charFormatIndex);
+ table->insertBlock(9, idx2, charFormatIndex);
+ table->insert(10, "0123", charFormatIndex);
+
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
+ QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 5);
+ QVERIFY(table->blocksFind(11).position() == 10);
+
+ table->beginEditBlock();
+ table->remove(5, 5);
+ table->endEditBlock();
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(4).position() == 0);
+ QVERIFY(table->blocksFind(5).position() == 5);
+
+ table->undo();
+
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
+ QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 5);
+ QVERIFY(table->blocksFind(11).position() == 10);
+
+ table->redo();
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(4).position() == 0);
+ QVERIFY(table->blocksFind(5).position() == 5);
+}
+
+void tst_QTextPieceTable::blockRemoval2()
+{
+ QTextBlockFormat fmt1;
+ fmt1.setTopMargin(100);
+ QTextBlockFormat fmt2;
+ fmt2.setAlignment(Qt::AlignRight);
+ int idx1 = table->formatCollection()->indexForFormat(fmt1);
+ int idx2 = table->formatCollection()->indexForFormat(fmt2);
+
+ table->insert(0, "0123", charFormatIndex);
+ table->insertBlock(4, idx1, charFormatIndex);
+ table->insert(5, "5678", charFormatIndex);
+ table->insertBlock(9, idx2, charFormatIndex);
+ table->insert(10, "0123", charFormatIndex);
+
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
+ QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 5);
+ QVERIFY(table->blocksFind(11).position() == 10);
+
+ table->remove(4, 1);
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(6).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 0);
+
+ table->undo();
+
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
+ QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 5);
+ QVERIFY(table->blocksFind(11).position() == 10);
+
+ table->redo();
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(6).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 0);
+}
+
+void tst_QTextPieceTable::blockRemoval3()
+{
+ QTextBlockFormat fmt1;
+ fmt1.setTopMargin(100);
+ QTextBlockFormat fmt2;
+ fmt2.setAlignment(Qt::AlignRight);
+ int idx1 = table->formatCollection()->indexForFormat(fmt1);
+ int idx2 = table->formatCollection()->indexForFormat(fmt2);
+
+ table->insert(0, "0123", charFormatIndex);
+ table->insertBlock(4, idx1, charFormatIndex);
+ table->insert(5, "5678", charFormatIndex);
+ table->insertBlock(9, idx2, charFormatIndex);
+ table->insert(10, "0123", charFormatIndex);
+
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
+ QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 5);
+ QVERIFY(table->blocksFind(11).position() == 10);
+
+ table->beginEditBlock();
+ table->remove(3, 4);
+ table->endEditBlock();
+
+ QVERIFY(table->blocksFind(1).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(5).position() == 0);
+
+ table->undo();
+
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
+ QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 5);
+ QVERIFY(table->blocksFind(11).position() == 10);
+
+ table->redo();
+ QVERIFY(table->blocksFind(1).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(5).position() == 0);
+}
+
+void tst_QTextPieceTable::blockRemoval4()
+{
+#if 0
+ QTextBlockFormat fmt1;
+ fmt1.setTopMargin(100);
+ QTextBlockFormat fmt2;
+ fmt2.setAlignment(Qt::AlignRight);
+ int idx1 = table->formatCollection()->indexForFormat(fmt1);
+ int idx2 = table->formatCollection()->indexForFormat(fmt2);
+
+ table->insert(0, "0123", charFormatIndex);
+ table->insertBlock(4, idx1, charFormatIndex);
+ table->insert(5, "5678", charFormatIndex);
+ table->insertBlock(9, idx2, charFormatIndex);
+ table->insert(10, "0123", charFormatIndex);
+
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
+ QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 5);
+ QVERIFY(table->blocksFind(11).position() == 10);
+
+ table->remove(3, 7);
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(5).position() == 0);
+ QVERIFY(table->blocksFind(1).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
+
+ table->undo();
+
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
+ QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 5);
+ QVERIFY(table->blocksFind(11).position() == 10);
+
+ table->redo();
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(5).position() == 0);
+ QVERIFY(table->blocksFind(1).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
+#endif
+}
+
+void tst_QTextPieceTable::blockRemoval5()
+{
+ QTextBlockFormat fmt1;
+ fmt1.setTopMargin(100);
+ QTextBlockFormat fmt2;
+ fmt2.setAlignment(Qt::AlignRight);
+ int idx1 = table->formatCollection()->indexForFormat(fmt1);
+ int idx2 = table->formatCollection()->indexForFormat(fmt2);
+
+ table->insert(0, "0123", charFormatIndex);
+ table->insertBlock(4, idx1, charFormatIndex);
+ table->insert(5, "5678", charFormatIndex);
+ table->insertBlock(9, idx2, charFormatIndex);
+ table->insert(10, "0123", charFormatIndex);
+
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
+ QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 5);
+ QVERIFY(table->blocksFind(11).position() == 10);
+
+ table->beginEditBlock();
+ table->remove(3, 8);
+ table->endEditBlock();
+
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(5).position() == 0);
+
+ table->undo();
+
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
+ QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(6).position() == 5);
+ QVERIFY(table->blocksFind(11).position() == 10);
+
+ table->redo();
+ QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
+ QVERIFY(table->blocksFind(1).position() == 0);
+ QVERIFY(table->blocksFind(5).position() == 0);
+}
+
+
+void tst_QTextPieceTable::checkBlockSeparation()
+{
+ table->insertBlock(0, blockFormatIndex, charFormatIndex);
+ table->insertBlock(1, blockFormatIndex, charFormatIndex);
+
+ QVERIFY(table->find(0) != table->find(1));
+}
+
+void tst_QTextPieceTable::checkFrames1()
+{
+ QTextFrameFormat ffmt;
+ table->insert(0, "Hello", charFormatIndex);
+ QPointer<QTextFrame> frame = table->insertFrame(1, 3, ffmt);
+ QTextFrame *root = table->rootFrame();
+
+ QVERIFY(root == frame->parentFrame());
+
+ QVERIFY(root);
+ QVERIFY(root->parentFrame() == 0);
+
+ QVERIFY(root->childFrames().count() == 1);
+ QVERIFY(frame->format() == ffmt);
+ QVERIFY(frame->firstPosition() == 2);
+ QVERIFY(frame->lastPosition() == 4);
+
+
+ QPointer<QTextFrame> frame2 = table->insertFrame(2, 3, ffmt);
+
+ QVERIFY(root->childFrames().count() == 1);
+ QVERIFY(root->childFrames().at(0) == frame);
+ QVERIFY(frame->childFrames().count() == 1);
+ QVERIFY(frame2->childFrames().count() == 0);
+ QVERIFY(frame2->parentFrame() == frame);
+ QVERIFY(frame2->firstPosition() == 3);
+ QVERIFY(frame2->lastPosition() == 4);
+
+ QVERIFY(frame->format() == ffmt);
+ QVERIFY(frame->firstPosition() == 2);
+ QVERIFY(frame->lastPosition() == 6);
+
+ table->removeFrame(frame);
+
+ QVERIFY(root->childFrames().count() == 1);
+ QVERIFY(root->childFrames().at(0) == frame2);
+ QVERIFY(!frame);
+ QVERIFY(frame2->childFrames().count() == 0);
+ QVERIFY(frame2->parentFrame() == root);
+ QVERIFY(frame2->firstPosition() == 2);
+ QVERIFY(frame2->lastPosition() == 3);
+
+ table->undo();
+
+ frame = table->frameAt(2);
+
+ QVERIFY(root->childFrames().count() == 1);
+ QVERIFY(root->childFrames().at(0) == frame);
+ QVERIFY(frame->childFrames().count() == 1);
+ QVERIFY(frame->childFrames().at(0) == frame2);
+ QVERIFY(frame2->childFrames().count() == 0);
+ QVERIFY(frame2->parentFrame() == frame);
+ QVERIFY(frame2->firstPosition() == 3);
+ QVERIFY(frame2->lastPosition() == 4);
+
+ QVERIFY(frame->firstPosition() == 2);
+ QVERIFY(frame->lastPosition() == 6);
+
+ table->undo();
+
+ QVERIFY(root->childFrames().count() == 1);
+ QVERIFY(root->childFrames().at(0) == frame);
+ QVERIFY(frame->childFrames().count() == 0);
+ QVERIFY(!frame2);
+
+ QVERIFY(frame->firstPosition() == 2);
+ QVERIFY(frame->lastPosition() == 4);
+}
+
+void tst_QTextPieceTable::removeFrameDirect()
+{
+ QTextFrameFormat ffmt;
+ table->insert(0, "Hello", charFormatIndex);
+
+ QTextFrame *frame = table->insertFrame(1, 5, ffmt);
+
+ QVERIFY(frame->parentFrame() == table->rootFrame());
+
+ const int start = frame->firstPosition() - 1;
+ const int end = frame->lastPosition();
+ const int length = end - start + 1;
+
+ table->remove(start, length);
+}
+
+void tst_QTextPieceTable::removeWithChildFrame()
+{
+ /*
+ The piecetable layout is:
+
+ ...
+ 1 BeginningOfFrame(first frame)
+ 2 text
+ 3 BeginningOfFrame(second frame)
+ 4 text
+ 5 text
+ 6 EndOfFrame(second frame)
+ 7 text
+ 8 text
+ 9 EndOfFrame(first frame)
+ ...
+
+ The idea is to remove from [2] until [6], basically some trailing text and the second frame.
+ In this case frameAt(2) != frameAt(6), so the assertion in remove() needed an adjustement.
+ */
+ QTextFrameFormat ffmt;
+ table->insert(0, "Hello World", charFormatIndex);
+
+ QTextFrame *frame = table->insertFrame(1, 6, ffmt);
+ QTextFrame *childFrame = table->insertFrame(3, 5, ffmt);
+ Q_UNUSED(frame);
+ Q_UNUSED(childFrame);
+
+ // used to give a failing assertion
+ table->remove(2, 5);
+ QVERIFY(true);
+}
+
+void tst_QTextPieceTable::clearWithFrames()
+{
+ /*
+ The piecetable layout is:
+
+ ...
+ 1 BeginningOfFrame(first frame)
+ 2 text
+ 3 EndOfFrame(first frame)
+ 4 BeginningOfFrame(second frame)
+ 5 text
+ 6 text
+ 7 EndOfFrame(second frame)
+ ...
+
+ The idea is to remove from [1] until [7].
+ */
+ QTextFrameFormat ffmt;
+ table->insert(0, "Hello World", charFormatIndex);
+
+ QTextFrame *firstFrame = table->insertFrame(1, 2, ffmt);
+ QTextFrame *secondFrame = table->insertFrame(4, 6, ffmt);
+
+ const int start = firstFrame->firstPosition() - 1;
+ const int end = secondFrame->lastPosition();
+ const int length = end - start + 1;
+ // used to give a failing assertion
+ table->remove(start, length);
+ QVERIFY(true);
+}
+
+QTEST_MAIN(tst_QTextPieceTable)
+
+
+#include "tst_qtextpiecetable.moc"
+
diff --git a/tests/auto/qtextscriptengine/.gitignore b/tests/auto/gui/text/qtextscriptengine/.gitignore
index e51a335099..e51a335099 100644
--- a/tests/auto/qtextscriptengine/.gitignore
+++ b/tests/auto/gui/text/qtextscriptengine/.gitignore
diff --git a/tests/auto/qtextscriptengine/generate/generate.pro b/tests/auto/gui/text/qtextscriptengine/generate/generate.pro
index 354e0e5cdf..354e0e5cdf 100644
--- a/tests/auto/qtextscriptengine/generate/generate.pro
+++ b/tests/auto/gui/text/qtextscriptengine/generate/generate.pro
diff --git a/tests/auto/qtextscriptengine/generate/main.cpp b/tests/auto/gui/text/qtextscriptengine/generate/main.cpp
index 06caa34b4d..06caa34b4d 100644
--- a/tests/auto/qtextscriptengine/generate/main.cpp
+++ b/tests/auto/gui/text/qtextscriptengine/generate/main.cpp
diff --git a/tests/auto/qtextscriptengine/qtextscriptengine.pro b/tests/auto/gui/text/qtextscriptengine/qtextscriptengine.pro
index 0f5076e2ed..0f5076e2ed 100644
--- a/tests/auto/qtextscriptengine/qtextscriptengine.pro
+++ b/tests/auto/gui/text/qtextscriptengine/qtextscriptengine.pro
diff --git a/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
index cbed675cb7..cbed675cb7 100644
--- a/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp
+++ b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
diff --git a/tests/auto/qtexttable/.gitignore b/tests/auto/gui/text/qtexttable/.gitignore
index 876aa75c0a..876aa75c0a 100644
--- a/tests/auto/qtexttable/.gitignore
+++ b/tests/auto/gui/text/qtexttable/.gitignore
diff --git a/tests/auto/gui/text/qtexttable/qtexttable.pro b/tests/auto/gui/text/qtexttable/qtexttable.pro
new file mode 100644
index 0000000000..611b706fc4
--- /dev/null
+++ b/tests/auto/gui/text/qtexttable/qtexttable.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qtexttable.cpp
+
+
+
diff --git a/tests/auto/qtexttable/tst_qtexttable.cpp b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
index 83343811d8..83343811d8 100644
--- a/tests/auto/qtexttable/tst_qtexttable.cpp
+++ b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
diff --git a/tests/auto/qzip/.gitignore b/tests/auto/gui/text/qzip/.gitignore
index 2d7dfbe70c..2d7dfbe70c 100644
--- a/tests/auto/qzip/.gitignore
+++ b/tests/auto/gui/text/qzip/.gitignore
diff --git a/tests/auto/gui/text/qzip/qzip.pro b/tests/auto/gui/text/qzip/qzip.pro
new file mode 100644
index 0000000000..7631a3e93a
--- /dev/null
+++ b/tests/auto/gui/text/qzip/qzip.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+QT += gui-private
+SOURCES += tst_qzip.cpp
+
+wince*|symbian: {
+ addFiles.files = testdata
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ !symbian:DEFINES += SRCDIR=\\\".\\\"
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD\\\"
+}
diff --git a/tests/auto/qzip/testdata/symlink.zip b/tests/auto/gui/text/qzip/testdata/symlink.zip
index 027f96477a..027f96477a 100644
--- a/tests/auto/qzip/testdata/symlink.zip
+++ b/tests/auto/gui/text/qzip/testdata/symlink.zip
Binary files differ
diff --git a/tests/auto/qzip/testdata/test.zip b/tests/auto/gui/text/qzip/testdata/test.zip
index a57ba4e2a9..a57ba4e2a9 100644
--- a/tests/auto/qzip/testdata/test.zip
+++ b/tests/auto/gui/text/qzip/testdata/test.zip
Binary files differ
diff --git a/tests/auto/qzip/tst_qzip.cpp b/tests/auto/gui/text/qzip/tst_qzip.cpp
index 0955ac069f..0955ac069f 100644
--- a/tests/auto/qzip/tst_qzip.cpp
+++ b/tests/auto/gui/text/qzip/tst_qzip.cpp
diff --git a/tests/auto/gui/text/text.pro b/tests/auto/gui/text/text.pro
new file mode 100644
index 0000000000..5055ab61a3
--- /dev/null
+++ b/tests/auto/gui/text/text.pro
@@ -0,0 +1,33 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qabstracttextdocumentlayout \
+ qcssparser \
+ qfont \
+ qfontdatabase \
+ qfontmetrics \
+ qglyphrun \
+ qrawfont \
+ qstatictext \
+ qsyntaxhighlighter \
+ qtextblock \
+ qtextcursor \
+ qtextdocument \
+ qtextdocumentfragment \
+ qtextdocumentlayout \
+ qtextformat \
+ qtextlayout \
+ qtextlist \
+ qtextobject \
+ qtextpiecetable \
+ qtextscriptengine \
+ qtexttable \
+
+contains(QT_CONFIG, OdfWriter):SUBDIRS += qzip qtextodfwriter
+
+win32:SUBDIRS -= qtextpiecetable
+
+!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ qcssparser \
+ qstatictext \
+ qtextlayout \
+ qtextpiecetable \
diff --git a/tests/auto/qdesktopservices/.gitignore b/tests/auto/gui/util/qdesktopservices/.gitignore
index c7ce852ccd..c7ce852ccd 100644
--- a/tests/auto/qdesktopservices/.gitignore
+++ b/tests/auto/gui/util/qdesktopservices/.gitignore
diff --git a/tests/auto/gui/util/qdesktopservices/qdesktopservices.pro b/tests/auto/gui/util/qdesktopservices/qdesktopservices.pro
new file mode 100644
index 0000000000..0e51ed0459
--- /dev/null
+++ b/tests/auto/gui/util/qdesktopservices/qdesktopservices.pro
@@ -0,0 +1,30 @@
+CONFIG += qttest_p4
+QT += widgets
+
+SOURCES += tst_qdesktopservices.cpp
+TARGET = tst_qdesktopservices
+symbian: {
+ dummy.files = text\\testfile.txt
+ dummy.path = .
+
+ text.files = text\\*
+ text.path = \\data\\others
+
+ image.files = image\\*
+ image.path = \\data\\images
+
+ audio.files = audio\\*
+ audio.path = \\data\\sounds
+
+ video.files = video\\*
+ video.path = \\data\\videos
+
+ install.files = install\\*
+ install.path = \\data\\installs
+
+ DEPLOYMENT += image audio video install
+
+ # These are only needed for manual tests
+ #DEPLOYMENT += dummy text
+ }
+
diff --git a/tests/auto/qdesktopservices/tst_qdesktopservices.cpp b/tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp
index 8bea0a245b..8bea0a245b 100644
--- a/tests/auto/qdesktopservices/tst_qdesktopservices.cpp
+++ b/tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp
diff --git a/tests/auto/gui/util/util.pro b/tests/auto/gui/util/util.pro
new file mode 100644
index 0000000000..91313ab85e
--- /dev/null
+++ b/tests/auto/gui/util/util.pro
@@ -0,0 +1,4 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qdesktopservices \
+
diff --git a/tests/auto/headersclean/headersclean.pro b/tests/auto/headersclean/headersclean.pro
deleted file mode 100644
index 0f976ffb95..0000000000
--- a/tests/auto/headersclean/headersclean.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_headersclean.cpp
-QT = core network xml sql
-CONFIG += uitools
-
-contains(QT_CONFIG,dbus): QT += dbus
-contains(QT_CONFIG,opengl): QT += opengl
-contains(QT_CONFIG,openvg): QT += openvg
-
diff --git a/tests/auto/headersclean/tst_headersclean.cpp b/tests/auto/headersclean/tst_headersclean.cpp
deleted file mode 100644
index 41537776a7..0000000000
--- a/tests/auto/headersclean/tst_headersclean.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#define QT_NO_KEYWORDS
-#define signals int
-#define slots int
-#define emit public:;
-#define foreach public:;
-#define forever public:;
-
-#include <QtCore/QtCore>
-#include <QtTest/QtTest>
-
-#include <QtNetwork/QtNetwork>
-#include <QtXml/QtXml>
-#include <QtSql/QtSql>
-#include <QtGui/QtGui>
-
-#include <QtUiTools/QtUiTools>
-
-#ifndef QT_NO_OPENGL
-#include <QtOpenGL/QtOpenGL>
-#endif
-
-#if !defined(QT_NO_DBUS) && defined(Q_OS_UNIX)
-#include <QtDBus/QtDBus>
-#endif
-
-#ifndef QT_NO_OPENVG
-#include <QtOpenVG/QtOpenVG>
-#endif
-
-class tst_HeadersClean: public QObject
-{
- Q_OBJECT
-public:
- tst_HeadersClean() {}
-};
-
-QTEST_MAIN(tst_HeadersClean)
-#include "tst_headersclean.moc" \ No newline at end of file
diff --git a/tests/auto/host.pro b/tests/auto/host.pro
index ebe9d5661d..045490a352 100644
--- a/tests/auto/host.pro
+++ b/tests/auto/host.pro
@@ -1,12 +1,4 @@
TEMPLATE=subdirs
SUBDIRS=\
- compiler \
- headersclean \
- maketestselftest \
- moc \
- uic \
- qmake \
- rcc \
- #atwrapper \ # QTBUG-19452: This test needs to be reworked or discarded
#uiloader \ # QTBUG-19453: this test has hardcoded machine names etc.
diff --git a/tests/auto/lancelot/lancelot.pro b/tests/auto/lancelot/lancelot.pro
index 67fff1b411..8cb6ce0405 100644
--- a/tests/auto/lancelot/lancelot.pro
+++ b/tests/auto/lancelot/lancelot.pro
@@ -1,5 +1,5 @@
load(qttest_p4)
-QT += xml
+QT += xml widgets
contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2):QT += opengl
SOURCES += tst_lancelot.cpp \
@@ -11,3 +11,5 @@ include($$PWD/../../baselineserver/shared/qbaselinetest.pri)
!symbian:!wince*:DEFINES += SRCDIR=\\\"$$PWD\\\"
linux-g++-maemo:DEFINES += USE_RUNTIME_DIR
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/lancelot/tst_lancelot.cpp b/tests/auto/lancelot/tst_lancelot.cpp
index 256ff29889..79a221fa0e 100644
--- a/tests/auto/lancelot/tst_lancelot.cpp
+++ b/tests/auto/lancelot/tst_lancelot.cpp
@@ -40,7 +40,7 @@
****************************************************************************/
#include <QtTest/QtTest>
-#include <paintcommands.h>
+#include "paintcommands.h"
#include <QPainter>
#include <QLibraryInfo>
#include <baselineprotocol.h>
diff --git a/tests/auto/languagechange/languagechange.pro b/tests/auto/languagechange/languagechange.pro
index f161c50864..c51c42ebe1 100644
--- a/tests/auto/languagechange/languagechange.pro
+++ b/tests/auto/languagechange/languagechange.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
-QT += core-private
+QT += widgets core-private
SOURCES += tst_languagechange.cpp
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/languagechange/tst_languagechange.cpp b/tests/auto/languagechange/tst_languagechange.cpp
index 3a93209ccd..e1663a5830 100644
--- a/tests/auto/languagechange/tst_languagechange.cpp
+++ b/tests/auto/languagechange/tst_languagechange.cpp
@@ -46,10 +46,10 @@
#include <QtCore/QSet>
#include <QtCore/QTranslator>
#include <private/qthread_p.h>
-#include <QtGui/QInputDialog>
-#include <QtGui/QColorDialog>
-#include <QtGui/QFileDialog>
-#include <QtGui/QDesktopWidget>
+#include <QtWidgets/QInputDialog>
+#include <QtWidgets/QColorDialog>
+#include <QtWidgets/QFileDialog>
+#include <QtWidgets/QDesktopWidget>
//TESTED_CLASS=
diff --git a/tests/auto/macgui/macgui.pro b/tests/auto/macgui/macgui.pro
index 8a57a8c54b..3fbe74f7c8 100644
--- a/tests/auto/macgui/macgui.pro
+++ b/tests/auto/macgui/macgui.pro
@@ -7,7 +7,7 @@ INCLUDEPATH += .
SOURCES += tst_macgui.cpp guitest.cpp
HEADERS += guitest.h
-QT = core-private gui-private
+QT = core-private gui-private widgets
requires(mac)
diff --git a/tests/auto/macnativeevents/macnativeevents.pro b/tests/auto/macnativeevents/macnativeevents.pro
index af34942b12..0a0f6c8743 100644
--- a/tests/auto/macnativeevents/macnativeevents.pro
+++ b/tests/auto/macnativeevents/macnativeevents.pro
@@ -7,7 +7,7 @@ TEMPLATE = app
DEPENDPATH += .
INCLUDEPATH += .
LIBS += -framework Carbon
-
+QT += widgets
HEADERS += qnativeevents.h nativeeventlist.h expectedeventlist.h
SOURCES += qnativeevents.cpp qnativeevents_mac.cpp
SOURCES += expectedeventlist.cpp nativeeventlist.cpp
diff --git a/tests/auto/maketestselftest/test/test.pro b/tests/auto/maketestselftest/test/test.pro
deleted file mode 100644
index d9de51e1a3..0000000000
--- a/tests/auto/maketestselftest/test/test.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-load(qttest_p4)
-
-TARGET = ../tst_maketestselftest
-SOURCES += ../tst_maketestselftest.cpp
-QT = core
-
-DEFINES += SRCDIR=\\\"$$PWD/..\\\"
-
-requires(!cross_compile)
-
-win32 {
- CONFIG(debug, debug|release) {
- TARGET = ../../debug/tst_maketestselftest
-} else {
- TARGET = ../../release/tst_maketestselftest
- }
-}
-
diff --git a/tests/auto/maketestselftest/tst_maketestselftest.cpp b/tests/auto/maketestselftest/tst_maketestselftest.cpp
deleted file mode 100644
index 07c68ac7ec..0000000000
--- a/tests/auto/maketestselftest/tst_maketestselftest.cpp
+++ /dev/null
@@ -1,587 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QDir>
-#include <QFile>
-#include <QRegExp>
-#include <QStringList>
-#include <QTest>
-#include <QSet>
-#include <QProcess>
-#include <QDebug>
-
-enum FindSubdirsMode {
- Flat = 0,
- Recursive
-};
-
-class tst_MakeTestSelfTest: public QObject
-{
- Q_OBJECT
-
-private slots:
- void tests_auto_pro();
-
- void tests_pro_files();
- void tests_pro_files_data();
-
- void naming_convention();
- void naming_convention_data();
-
- void make_check();
-
-private:
- QStringList find_subdirs(QString const&, FindSubdirsMode, QString const& = QString());
-
- QSet<QString> all_test_classes;
-};
-
-bool looks_like_testcase(QString const&,QString*);
-bool looks_like_subdirs(QString const&);
-QStringList find_test_class(QString const&);
-
-/*
- Verify that auto.pro only contains other .pro files (and not directories).
- We enforce this so that we can process every .pro file other than auto.pro
- independently and get all the tests.
- If tests were allowed to appear directly in auto.pro, we'd have the problem
- that we need to somehow run these tests from auto.pro while preventing
- recursion into the other .pro files.
-*/
-void tst_MakeTestSelfTest::tests_auto_pro()
-{
- QStringList subdirsList = find_subdirs(SRCDIR "/../auto.pro", Flat);
- if (QTest::currentTestFailed()) {
- return;
- }
-
- foreach (QString const& subdir, subdirsList) {
- QVERIFY2(subdir.endsWith(".pro"), qPrintable(QString(
- "auto.pro contains a subdir `%1'.\n"
- "auto.pro must _only_ contain other .pro files, not actual subdirs.\n"
- "Please move `%1' into some other .pro file referenced by auto.pro."
- ).arg(subdir)));
- }
-}
-
-/* Verify that all tests are listed somewhere in one of the autotest .pro files */
-void tst_MakeTestSelfTest::tests_pro_files()
-{
- static QStringList lines;
-
- if (lines.isEmpty()) {
- QDir dir(SRCDIR "/..");
- QStringList proFiles = dir.entryList(QStringList() << "*.pro");
- foreach (QString const& proFile, proFiles) {
- QString filename = QString("%1/../%2").arg(SRCDIR).arg(proFile);
- QFile file(filename);
- if (!file.open(QIODevice::ReadOnly)) {
- QFAIL(qPrintable(QString("open %1: %2").arg(filename).arg(file.errorString())));
- }
- while (!file.atEnd()) {
- lines << file.readLine().trimmed();
- }
- }
- }
-
- QFETCH(QString, subdir);
- QRegExp re(QString("( |=|^|#)%1( |\\\\|$)").arg(QRegExp::escape(subdir)));
- foreach (const QString& line, lines) {
- if (re.indexIn(line) != -1) {
- return;
- }
- }
-
-
-
- QFAIL(qPrintable(QString(
- "Subdir `%1' is missing from tests/auto/*.pro\n"
- "This means the test won't be compiled or run on any platform.\n"
- "If this is intentional, please put the test name in a comment in one of the .pro files.").arg(subdir))
- );
-
-}
-
-void tst_MakeTestSelfTest::tests_pro_files_data()
-{
- QTest::addColumn<QString>("subdir");
- QDir dir(SRCDIR "/..");
- QStringList subdirs = dir.entryList(QDir::AllDirs|QDir::NoDotAndDotDot);
-
- foreach (const QString& subdir, subdirs) {
- if (subdir == QString::fromLatin1("tmp")
- || subdir.startsWith(".")
- || !dir.exists(subdir + "/" + subdir + ".pro"))
- {
- continue;
- }
- QTest::newRow(qPrintable(subdir)) << subdir;
- }
-}
-
-QString format_list(QStringList const& list)
-{
- if (list.count() == 1) {
- return list.at(0);
- }
- return QString("one of (%1)").arg(list.join(", "));
-}
-
-void tst_MakeTestSelfTest::naming_convention()
-{
- QFETCH(QString, subdir);
- QFETCH(QString, target);
-
- QDir dir(SRCDIR "/../" + subdir);
-
- QStringList cppfiles = dir.entryList(QStringList() << "*.h" << "*.cpp");
- if (cppfiles.isEmpty()) {
- // Common convention is to have test/test.pro and source files in parent dir
- if (dir.dirName() == "test") {
- dir.cdUp();
- cppfiles = dir.entryList(QStringList() << "*.h" << "*.cpp");
- }
-
- if (cppfiles.isEmpty()) {
- QSKIP("Couldn't locate source files for test", SkipSingle);
- }
- }
-
- QStringList possible_test_classes;
- foreach (QString const& file, cppfiles) {
- possible_test_classes << find_test_class(dir.path() + "/" + file);
- }
-
- if (possible_test_classes.isEmpty()) {
- QSKIP(qPrintable(QString("Couldn't locate test class in %1").arg(format_list(cppfiles))), SkipSingle);
- }
-
- QVERIFY2(possible_test_classes.contains(target), qPrintable(QString(
- "TARGET is %1, while test class appears to be %2.\n"
- "TARGET and test class _must_ match so that all testcase names can be accurately "
- "determined even if a test fails to compile or run.")
- .arg(target)
- .arg(format_list(possible_test_classes))
- ));
-
- QVERIFY2(!all_test_classes.contains(target), qPrintable(QString(
- "It looks like there are multiple tests named %1.\n"
- "This makes it impossible to separate results for these tests.\n"
- "Please ensure all tests are uniquely named.")
- .arg(target)
- ));
-
- all_test_classes << target;
-}
-
-void tst_MakeTestSelfTest::naming_convention_data()
-{
- QTest::addColumn<QString>("subdir");
- QTest::addColumn<QString>("target");
-
- foreach (const QString& subdir, find_subdirs(SRCDIR "/../auto.pro", Recursive)) {
- if (QFileInfo(SRCDIR "/../" + subdir).isDir()) {
- QString target;
- if (looks_like_testcase(SRCDIR "/../" + subdir + "/" + QFileInfo(subdir).baseName() + ".pro", &target)) {
- QTest::newRow(qPrintable(subdir)) << subdir << target.toLower();
- }
- }
- }
-}
-
-/*
- Returns true if a .pro file seems to be for an autotest.
- Running qmake to figure this out takes too long.
-*/
-bool looks_like_testcase(QString const& pro_file, QString* target)
-{
- QFile file(pro_file);
- if (!file.open(QIODevice::ReadOnly)) {
- return false;
- }
-
- *target = QString();
-
- bool loaded_qttest = false;
-
- do {
- QByteArray line = file.readLine();
- if (line.isEmpty()) {
- break;
- }
-
- line = line.trimmed();
- line.replace(' ', "");
-
- if (line == "load(qttest_p4)") {
- loaded_qttest = true;
- }
-
- if (line.startsWith("TARGET=")) {
- *target = QString::fromLatin1(line.mid(sizeof("TARGET=")-1));
- if (target->contains('/')) {
- *target = target->right(target->lastIndexOf('/')+1);
- }
- }
-
- if (loaded_qttest && !target->isEmpty()) {
- break;
- }
- } while(1);
-
- if (!loaded_qttest) {
- return false;
- }
-
- if (!target->isEmpty() && !target->startsWith("tst_")) {
- return false;
- }
-
- // If no target was set, default to tst_<dirname>
- if (target->isEmpty()) {
- *target = "tst_" + QFileInfo(pro_file).baseName();
- }
-
- return true;
-}
-
-/*
- Returns true if a .pro file seems to be a subdirs project.
- Running qmake to figure this out takes too long.
-*/
-bool looks_like_subdirs(QString const& pro_file)
-{
- QFile file(pro_file);
- if (!file.open(QIODevice::ReadOnly)) {
- return false;
- }
-
- do {
- QByteArray line = file.readLine();
- if (line.isEmpty()) {
- break;
- }
-
- line = line.trimmed();
- line.replace(' ', "");
-
- if (line == "TEMPLATE=subdirs") {
- return true;
- }
- } while(1);
-
- return false;
-}
-
-/*
- Returns a list of all subdirs in a given .pro file
-*/
-QStringList tst_MakeTestSelfTest::find_subdirs(QString const& pro_file, FindSubdirsMode mode, QString const& prefix)
-{
- QStringList out;
-
- QByteArray features = qgetenv("QMAKEFEATURES");
-
- if (features.isEmpty()) {
- features = SRCDIR "/features";
- }
- else {
- features.prepend(SRCDIR "/features"
-#ifdef Q_OS_WIN32
- ";"
-#else
- ":"
-#endif
- );
- }
-
- QStringList args;
- args << pro_file << "-o" << SRCDIR "/dummy_output" << "CONFIG+=dump_subdirs";
-
- /* Turn on every option there is, to ensure we process every single directory */
- args
- << "QT_CONFIG+=dbus"
- << "QT_CONFIG+=declarative"
- << "QT_CONFIG+=egl"
- << "QT_CONFIG+=multimedia"
- << "QT_CONFIG+=OdfWriter"
- << "QT_CONFIG+=opengl"
- << "QT_CONFIG+=openvg"
- << "QT_CONFIG+=phonon"
- << "QT_CONFIG+=private_tests"
- << "QT_CONFIG+=pulseaudio"
- << "QT_CONFIG+=script"
- << "QT_CONFIG+=svg"
- << "QT_CONFIG+=webkit"
- << "QT_CONFIG+=xmlpatterns"
- << "CONFIG+=mac"
- << "CONFIG+=embedded"
- << "CONFIG+=symbian"
- ;
-
-
-
- QString cmd_with_args = QString("qmake %1").arg(args.join(" "));
-
- QProcess proc;
-
- proc.setProcessChannelMode(QProcess::MergedChannels);
-
- QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
- env.insert("QMAKEFEATURES", features);
- proc.setProcessEnvironment(env);
-
- proc.start("qmake", args);
- if (!proc.waitForStarted(10000)) {
- QTest::qFail(qPrintable(QString("Failed to run qmake: %1\nCommand: %2")
- .arg(proc.errorString())
- .arg(cmd_with_args)),
- __FILE__, __LINE__
- );
- return out;
- }
- if (!proc.waitForFinished(30000)) {
- QTest::qFail(qPrintable(QString("qmake did not finish within 30 seconds\nCommand: %1\nOutput: %2")
- .arg(proc.errorString())
- .arg(cmd_with_args)
- .arg(QString::fromLocal8Bit(proc.readAll()))),
- __FILE__, __LINE__
- );
- return out;
- }
-
- if (proc.exitStatus() != QProcess::NormalExit) {
- QTest::qFail(qPrintable(QString("qmake crashed\nCommand: %1\nOutput: %2")
- .arg(cmd_with_args)
- .arg(QString::fromLocal8Bit(proc.readAll()))),
- __FILE__, __LINE__
- );
- return out;
- }
-
- if (proc.exitCode() != 0) {
- QTest::qFail(qPrintable(QString("qmake exited with code %1\nCommand: %2\nOutput: %3")
- .arg(proc.exitCode())
- .arg(cmd_with_args)
- .arg(QString::fromLocal8Bit(proc.readAll()))),
- __FILE__, __LINE__
- );
- return out;
- }
-
- QList<QByteArray> lines = proc.readAll().split('\n');
- if (!lines.count()) {
- QTest::qFail(qPrintable(QString("qmake seems to have not output anything\nCommand: %1\n")
- .arg(cmd_with_args)),
- __FILE__, __LINE__
- );
- return out;
- }
-
- foreach (QByteArray const& line, lines) {
- static const QByteArray marker = "Project MESSAGE: subdir: ";
- if (line.startsWith(marker)) {
- QString subdir = QString::fromLocal8Bit(line.mid(marker.size()).trimmed());
- out << prefix + subdir;
-
- if (mode == Flat) {
- continue;
- }
-
- // Need full path to subdir
- QString subdir_filepath = subdir;
- subdir_filepath.prepend(QFileInfo(pro_file).path() + "/");
-
- // Add subdirs recursively
- if (subdir.endsWith(".pro") && looks_like_subdirs(subdir_filepath)) {
- // Need full path to .pro file
- out << find_subdirs(subdir_filepath, mode, prefix);
- }
-
- if (QFileInfo(subdir_filepath).isDir()) {
- subdir_filepath += "/" + subdir + ".pro";
- if (looks_like_subdirs(subdir_filepath)) {
- out << find_subdirs(subdir_filepath, mode, prefix + subdir + "/");
- }
- }
- }
- }
-
- return out;
-}
-
-void tst_MakeTestSelfTest::make_check()
-{
- /*
- Run `make check' over the whole tests tree with a custom TESTRUNNER,
- to verify that the TESTRUNNER mechanism works right.
- */
- QString testsDir(SRCDIR "/..");
- QString checktest(SRCDIR "/checktest/checktest");
-
-#if defined(Q_OS_WIN32) || defined(Q_OS_MAC)
- if (qgetenv("RUN_SLOW_TESTS").isEmpty()) {
- QSKIP("This test is too slow to run by default on this OS. Set RUN_SLOW_TESTS=1 to run it.", SkipAll);
- }
-#endif
-
-#ifdef Q_OS_WIN32
- checktest.replace("/", "\\");
- checktest += ".exe";
-#endif
-
- QProcess make;
- make.setWorkingDirectory(testsDir);
-
- QStringList arguments;
- arguments << "-k";
- arguments << "check";
- arguments << QString("TESTRUNNER=%1").arg(checktest);
-
- // find the right make; from externaltests.cpp
- static const char makes[] =
- "nmake.exe\0"
- "mingw32-make.exe\0"
- "gmake\0"
- "make\0"
- ;
-
- bool ok = false;
- for (const char *p = makes; *p; p += strlen(p) + 1) {
- make.start(p, arguments);
- if (make.waitForStarted()) {
- ok = true;
- break;
- }
- }
-
- if (!ok) {
- QFAIL("Could not find the right make tool in PATH");
- }
-
- QVERIFY(make.waitForFinished(1000 * 60 * 10));
- QCOMPARE(make.exitStatus(), QProcess::NormalExit);
-
- int pass = 0;
- QList<QByteArray> out = make.readAllStandardOutput().split('\n');
- QStringList fails;
- foreach (QByteArray line, out) {
- while (line.endsWith("\r")) {
- line.chop(1);
- }
- if (line.startsWith("CHECKTEST FAIL")) {
- fails << QString::fromLocal8Bit(line);
- }
- if (line.startsWith("CHECKTEST PASS")) {
- ++pass;
- }
- }
-
- // We can't check that the exit code of make is 0, because some tests
- // may have failed to compile, but that doesn't mean `make check' is broken.
- // We do assume there are at least this many unbroken tests, though.
- QVERIFY2(fails.count() == 0,
- qPrintable(QString("`make check' doesn't work for %1 tests:\n%2")
- .arg(fails.count()).arg(fails.join("\n")))
- );
- QVERIFY(pass > 50);
-}
-
-QStringList find_test_class(QString const& filename)
-{
- QStringList out;
-
- QFile file(filename);
- if (!file.open(QIODevice::ReadOnly)) {
- return out;
- }
-
- static char const* klass_indicators[] = {
- "QTEST_MAIN(",
- "QTEST_APPLESS_MAIN(",
- "class",
- "staticconstcharklass[]=\"", /* hax0r tests which define their own metaobject */
- 0
- };
-
- do {
- QByteArray line = file.readLine();
- if (line.isEmpty()) {
- break;
- }
-
- line = line.trimmed();
- line.replace(' ', "");
-
- for (int i = 0; klass_indicators[i]; ++i) {
- char const* prefix = klass_indicators[i];
- if (!line.startsWith(prefix)) {
- continue;
- }
- QByteArray klass = line.mid(strlen(prefix));
- if (!klass.startsWith("tst_")) {
- continue;
- }
- for (int j = 0; j < klass.size(); ++j) {
- char c = klass[j];
- if (c == '_'
- || (c >= '0' && c <= '9')
- || (c >= 'A' && c <= 'Z')
- || (c >= 'a' && c <= 'z')) {
- continue;
- }
- else {
- klass.truncate(j);
- break;
- }
- }
- QString klass_str = QString::fromLocal8Bit(klass).toLower();
- if (!out.contains(klass_str))
- out << klass_str;
- break;
- }
- } while(1);
-
- return out;
-}
-
-QTEST_MAIN(tst_MakeTestSelfTest)
-#include "tst_maketestselftest.moc"
diff --git a/tests/auto/moc/moc.pro b/tests/auto/moc/moc.pro
deleted file mode 100644
index 056c6b0958..0000000000
--- a/tests/auto/moc/moc.pro
+++ /dev/null
@@ -1,28 +0,0 @@
-load(qttest_p4)
-
-#exists(/usr/include/boost/spirit.hpp) {
-# message("including boost headers in test")
-# DEFINES += PARSE_BOOST
-# # need to add explicitly so that it ends up in moc's search path
-# INCLUDEPATH += /usr/include
-#}
-
-INCLUDEPATH += testproject/include testproject
-
-DEFINES += SRCDIR=\\\"$$PWD\\\"
-cross_compile: DEFINES += MOC_CROSS_COMPILED
-
-HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-newlines.h oldstyle-casts.h \
- slots-with-void-template.h qinvokable.h namespaced-flags.h trigraphs.h \
- escapes-in-string-literals.h cstyle-enums.h qprivateslots.h gadgetwithnoenums.h \
- dir-in-include-path.h single_function_keyword.h task192552.h task189996.h \
- task234909.h task240368.h pure-virtual-signals.h
-if(*-g++*|*-icc*|*-clang|*-llvm):!irix-*:!win32-*: HEADERS += os9-newlines.h win-newlines.h
-SOURCES += tst_moc.cpp
-
-QT += sql network
-contains(QT_CONFIG, dbus){
- DEFINES += WITH_DBUS
- QT += dbus
-}
-
diff --git a/tests/auto/modeltest/modeltest.pro b/tests/auto/modeltest/modeltest.pro
index f157da0cee..d4a8ba971d 100644
--- a/tests/auto/modeltest/modeltest.pro
+++ b/tests/auto/modeltest/modeltest.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_modeltest.cpp modeltest.cpp dynamictreemodel.cpp
HEADERS += modeltest.h dynamictreemodel.h
diff --git a/tests/auto/nativeimagehandleprovider/nativeimagehandleprovider.pro b/tests/auto/nativeimagehandleprovider/nativeimagehandleprovider.pro
deleted file mode 100644
index 70ea53c369..0000000000
--- a/tests/auto/nativeimagehandleprovider/nativeimagehandleprovider.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-load(qttest_p4)
-
-QT += gui-private
-
-SOURCES += tst_nativeimagehandleprovider.cpp
-symbian {
- LIBS += -lfbscli -lbitgdi
- contains(QT_CONFIG, openvg): QT *= openvg
-}
diff --git a/tests/auto/nativeimagehandleprovider/tst_nativeimagehandleprovider.cpp b/tests/auto/nativeimagehandleprovider/tst_nativeimagehandleprovider.cpp
deleted file mode 100644
index 3d198c7b12..0000000000
--- a/tests/auto/nativeimagehandleprovider/tst_nativeimagehandleprovider.cpp
+++ /dev/null
@@ -1,237 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <QtGui/private/qpixmapdata_p.h>
-#include <QtGui/private/qnativeimagehandleprovider_p.h>
-#include <QScopedPointer>
-#include <QPixmap>
-#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_OPENVG)
-#include <fbs.h>
-#include <bitdev.h>
-#include <QtOpenVG/private/qpixmapdata_vg_p.h>
-#endif
-
-QPixmap pixmapFromNativeImageHandleProvider(QNativeImageHandleProvider *source)
-{
-#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_OPENVG)
- if (!source)
- return QPixmap();
- QScopedPointer<QPixmapData> pd(QPixmapData::create(0, 0, QPixmapData::PixmapType));
- pd->fromNativeType(source, QPixmapData::NativeImageHandleProvider);
- return QPixmap(pd.take());
-#else
- Q_UNUSED(source);
- return QPixmap();
-#endif
-}
-
-class DummyProvider : public QNativeImageHandleProvider
-{
-public:
- void get(void **handle, QString *type);
- void release(void *handle, const QString &type);
-};
-
-void DummyProvider::get(void **handle, QString *type)
-{
- *handle = (void *) 0x12345678;
- *type = "some dummy type";
-}
-
-void DummyProvider::release(void *handle, const QString &type)
-{
- Q_UNUSED(handle);
- Q_UNUSED(type);
-}
-
-#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_OPENVG)
-class BitmapProvider : public QNativeImageHandleProvider
-{
-public:
- BitmapProvider() : bmp(0), refCount(0), w(50), h(60) { }
- void get(void **handle, QString *type);
- void release(void *handle, const QString &type);
-
- CFbsBitmap *bmp;
- int refCount, w, h;
- void *returnedHandle;
- QString returnedType;
-};
-
-void BitmapProvider::get(void **handle, QString *type)
-{
- // There may not be a release() if the get() fails so don't bother with
- // refcounting in such cases.
- if (bmp)
- ++refCount;
- returnedType = QLatin1String("CFbsBitmap");
- returnedHandle = bmp;
- *handle = returnedHandle;
- *type = returnedType;
-}
-
-void BitmapProvider::release(void *handle, const QString &type)
-{
- if (handle == returnedHandle && type == returnedType && returnedHandle) {
- --refCount;
- }
-}
-#endif // symbian & openvg
-
-class tst_NativeImageHandleProvider : public QObject
-{
- Q_OBJECT
-
-public:
- tst_NativeImageHandleProvider() { }
-
-private slots:
- void create();
- void bitmap();
- void hibernate();
-};
-
-void tst_NativeImageHandleProvider::create()
-{
- QPixmap pm = pixmapFromNativeImageHandleProvider(0);
- QVERIFY(pm.isNull());
- QPixmap tmp(10, 20);
- if (tmp.pixmapData()->classId() == QPixmapData::OpenVGClass) {
- // Verify that null pixmap is properly returned when get() provides bogus results.
- DummyProvider prov;
- pm = pixmapFromNativeImageHandleProvider(&prov);
- QVERIFY(pm.isNull());
- pm = QPixmap();
- } else {
- QSKIP("Not openvg, skipping non-trivial tests", SkipSingle);
- }
-}
-
-void tst_NativeImageHandleProvider::bitmap()
-{
-#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_OPENVG)
- QPixmap tmp(10, 20);
- if (tmp.pixmapData()->classId() == QPixmapData::OpenVGClass) {
- BitmapProvider prov;
-
- // This should fail because of null ptr.
- QPixmap pm = pixmapFromNativeImageHandleProvider(&prov);
- QVERIFY(pm.isNull());
- pm = QPixmap();
- QCOMPARE(prov.refCount, 0);
-
- prov.bmp = new CFbsBitmap;
- QCOMPARE(prov.bmp->Create(TSize(prov.w, prov.h), EColor16MAP), KErrNone);
- CFbsBitmapDevice *bitmapDevice = CFbsBitmapDevice::NewL(prov.bmp);
- CBitmapContext *bitmapContext = 0;
- QCOMPARE(bitmapDevice->CreateBitmapContext(bitmapContext), KErrNone);
- TRgb symbianColor = TRgb(255, 200, 100);
- bitmapContext->SetBrushColor(symbianColor);
- bitmapContext->Clear();
- delete bitmapContext;
- delete bitmapDevice;
-
- pm = pixmapFromNativeImageHandleProvider(&prov);
- QVERIFY(!pm.isNull());
- QCOMPARE(pm.width(), prov.w);
- QCOMPARE(pm.height(), prov.h);
- QVERIFY(prov.refCount == 1);
- QImage img = pm.toImage();
- QVERIFY(prov.refCount == 1);
- QRgb pix = img.pixel(QPoint(1, 2));
- QCOMPARE(qRed(pix), symbianColor.Red());
- QCOMPARE(qGreen(pix), symbianColor.Green());
- QCOMPARE(qBlue(pix), symbianColor.Blue());
-
- pm = QPixmap(); // should result in calling release
- QCOMPARE(prov.refCount, 0);
- delete prov.bmp;
- } else {
- QSKIP("Not openvg", SkipSingle);
- }
-#else
- QSKIP("Not applicable", SkipSingle);
-#endif
-}
-
-void tst_NativeImageHandleProvider::hibernate()
-{
-#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_OPENVG)
- QPixmap tmp(10, 20);
- if (tmp.pixmapData()->classId() == QPixmapData::OpenVGClass) {
- BitmapProvider prov;
- prov.bmp = new CFbsBitmap;
- QCOMPARE(prov.bmp->Create(TSize(prov.w, prov.h), EColor16MAP), KErrNone);
-
- QPixmap pm = pixmapFromNativeImageHandleProvider(&prov);
- QCOMPARE(prov.refCount, 1);
-
- QVGPixmapData *vgpd = static_cast<QVGPixmapData *>(pm.pixmapData());
- vgpd->hibernate();
- QCOMPARE(prov.refCount, 0);
-
- // Calling toVGImage() may cause some warnings as we don't have a gui initialized,
- // but the only thing we care about here is get() being called.
- vgpd->toVGImage();
- QCOMPARE(prov.refCount, 1);
-
- pm = QPixmap();
- QCOMPARE(prov.refCount, 0);
- delete prov.bmp;
- } else {
- QSKIP("Not openvg", SkipSingle);
- }
-#else
- QSKIP("Not applicable", SkipSingle);
-#endif
-}
-
-int main(int argc, char *argv[])
-{
- QApplication::setGraphicsSystem("openvg");
- QApplication app(argc, argv);
- tst_NativeImageHandleProvider tc;
- return QTest::qExec(&tc, argc, argv);
-}
-
-#include "tst_nativeimagehandleprovider.moc"
diff --git a/tests/auto/network.pro b/tests/auto/network.pro
index f8dd4123df..21388bc281 100644
--- a/tests/auto/network.pro
+++ b/tests/auto/network.pro
@@ -4,57 +4,6 @@
# been compiled.
TEMPLATE=subdirs
SUBDIRS=\
+ network \
networkselftest \
- qabstractnetworkcache \
- qabstractsocket \
- qauthenticator \
- qeventloop \
- qftp \
- qhostaddress \
- qhostinfo \
- qhttp \
- qhttpnetworkconnection \
- qhttpnetworkreply \
- qhttpsocketengine \
- platformsocketengine \
- qnetworkaccessmanager \
- qnetworkaddressentry \
- qnetworkcachemetadata \
- qnetworkconfiguration \
- qnetworkconfigurationmanager \
- qnetworkcookie \
- qnetworkcookiejar \
- qnetworkdiskcache \
- qnetworkinterface \
- qnetworkproxy \
- qnetworkreply \
- qnetworkrequest \
- qnetworksession \
- qobjectperformance \
- qsocketnotifier \
- qsocks5socketengine \
- qsslcertificate \
- qsslcipher \
- qsslerror \
- qsslkey \
- qsslsocket \
- qsslsocket_onDemandCertificates_member \
- qsslsocket_onDemandCertificates_static \
- qtcpserver \
- qudpsocket \
-# qnetworkproxyfactory \ # Uses a hardcoded proxy configuration
-
-!contains(QT_CONFIG, private_tests): SUBDIRS -= \
- platformsocketengine \
- qauthenticator \
- qhostinfo \
- qhttpnetworkconnection \
- qhttpnetworkreply \
- qhttpsocketengine \
- qnetworkreply \
- qsocketnotifier \
- qsocks5socketengine \
- qsslsocket \
- qsslsocket_onDemandCertificates_member \
- qsslsocket_onDemandCertificates_static \
-
+ qobjectperformance
diff --git a/tests/auto/network/access/access.pro b/tests/auto/network/access/access.pro
new file mode 100644
index 0000000000..53b16f07b8
--- /dev/null
+++ b/tests/auto/network/access/access.pro
@@ -0,0 +1,20 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qnetworkdiskcache \
+ qnetworkcookiejar \
+ qnetworkaccessmanager \
+ qnetworkcookie \
+ qnetworkrequest \
+ qhttpnetworkconnection \
+ qnetworkreply \
+ qnetworkcachemetadata \
+ qftp \
+ qhttpnetworkreply \
+ qhttp \
+ qabstractnetworkcache \
+
+!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ qhttpnetworkconnection \
+ qhttpnetworkreply \
+
+
diff --git a/tests/auto/qabstractnetworkcache/.gitignore b/tests/auto/network/access/qabstractnetworkcache/.gitignore
index 72766dddce..72766dddce 100644
--- a/tests/auto/qabstractnetworkcache/.gitignore
+++ b/tests/auto/network/access/qabstractnetworkcache/.gitignore
diff --git a/tests/auto/qabstractnetworkcache/qabstractnetworkcache.pro b/tests/auto/network/access/qabstractnetworkcache/qabstractnetworkcache.pro
index 4dea3c9c8c..4dea3c9c8c 100644
--- a/tests/auto/qabstractnetworkcache/qabstractnetworkcache.pro
+++ b/tests/auto/network/access/qabstractnetworkcache/qabstractnetworkcache.pro
diff --git a/tests/auto/qabstractnetworkcache/tests/httpcachetest_cachecontrol-expire.cgi b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_cachecontrol-expire.cgi
index 7dc506fc1e..7dc506fc1e 100755
--- a/tests/auto/qabstractnetworkcache/tests/httpcachetest_cachecontrol-expire.cgi
+++ b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_cachecontrol-expire.cgi
diff --git a/tests/auto/qabstractnetworkcache/tests/httpcachetest_cachecontrol.cgi b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_cachecontrol.cgi
index f2edfc161f..f2edfc161f 100755
--- a/tests/auto/qabstractnetworkcache/tests/httpcachetest_cachecontrol.cgi
+++ b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_cachecontrol.cgi
diff --git a/tests/auto/qabstractnetworkcache/tests/httpcachetest_cachecontrol200.cgi b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_cachecontrol200.cgi
index e44d5ed570..e44d5ed570 100755
--- a/tests/auto/qabstractnetworkcache/tests/httpcachetest_cachecontrol200.cgi
+++ b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_cachecontrol200.cgi
diff --git a/tests/auto/qabstractnetworkcache/tests/httpcachetest_etag200.cgi b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_etag200.cgi
index 0966abfdd1..0966abfdd1 100755
--- a/tests/auto/qabstractnetworkcache/tests/httpcachetest_etag200.cgi
+++ b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_etag200.cgi
diff --git a/tests/auto/qabstractnetworkcache/tests/httpcachetest_etag304.cgi b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_etag304.cgi
index 91a4b922bd..91a4b922bd 100755
--- a/tests/auto/qabstractnetworkcache/tests/httpcachetest_etag304.cgi
+++ b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_etag304.cgi
diff --git a/tests/auto/qabstractnetworkcache/tests/httpcachetest_expires200.cgi b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_expires200.cgi
index e18ebc86ad..e18ebc86ad 100755
--- a/tests/auto/qabstractnetworkcache/tests/httpcachetest_expires200.cgi
+++ b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_expires200.cgi
diff --git a/tests/auto/qabstractnetworkcache/tests/httpcachetest_expires304.cgi b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_expires304.cgi
index 1c7de1cd77..1c7de1cd77 100755
--- a/tests/auto/qabstractnetworkcache/tests/httpcachetest_expires304.cgi
+++ b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_expires304.cgi
diff --git a/tests/auto/qabstractnetworkcache/tests/httpcachetest_expires500.cgi b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_expires500.cgi
index 9615c4f0bd..9615c4f0bd 100755
--- a/tests/auto/qabstractnetworkcache/tests/httpcachetest_expires500.cgi
+++ b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_expires500.cgi
diff --git a/tests/auto/qabstractnetworkcache/tests/httpcachetest_lastModified200.cgi b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_lastModified200.cgi
index 5dc219b1e7..5dc219b1e7 100755
--- a/tests/auto/qabstractnetworkcache/tests/httpcachetest_lastModified200.cgi
+++ b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_lastModified200.cgi
diff --git a/tests/auto/qabstractnetworkcache/tests/httpcachetest_lastModified304.cgi b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_lastModified304.cgi
index bdf23bed2f..bdf23bed2f 100755
--- a/tests/auto/qabstractnetworkcache/tests/httpcachetest_lastModified304.cgi
+++ b/tests/auto/network/access/qabstractnetworkcache/tests/httpcachetest_lastModified304.cgi
diff --git a/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp b/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp
new file mode 100644
index 0000000000..244c9b13b5
--- /dev/null
+++ b/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp
@@ -0,0 +1,416 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtNetwork/QtNetwork>
+#include "../../../../shared/util.h"
+#include "../../../network-settings.h"
+
+#ifndef QT_NO_BEARERMANAGEMENT
+#include <QtNetwork/qnetworkconfigmanager.h>
+#include <QtNetwork/qnetworkconfiguration.h>
+#include <QtNetwork/qnetworksession.h>
+#endif
+
+#define TESTFILE QString("http://%1/qtest/cgi-bin/").arg(QtNetworkSettings::serverName())
+
+class tst_QAbstractNetworkCache : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QAbstractNetworkCache();
+ virtual ~tst_QAbstractNetworkCache();
+
+private slots:
+ void initTestCase();
+ void expires_data();
+ void expires();
+ void expiresSynchronous_data();
+ void expiresSynchronous();
+
+ void lastModified_data();
+ void lastModified();
+ void lastModifiedSynchronous_data();
+ void lastModifiedSynchronous();
+
+ void etag_data();
+ void etag();
+ void etagSynchronous_data();
+ void etagSynchronous();
+
+ void cacheControl_data();
+ void cacheControl();
+ void cacheControlSynchronous_data();
+ void cacheControlSynchronous();
+
+ void deleteCache();
+
+private:
+ void check();
+ void checkSynchronous();
+
+#ifndef QT_NO_BEARERMANAGEMENT
+ QNetworkConfigurationManager *netConfMan;
+ QNetworkConfiguration networkConfiguration;
+ QScopedPointer<QNetworkSession> networkSession;
+#endif
+};
+
+class NetworkDiskCache : public QNetworkDiskCache
+{
+ Q_OBJECT
+public:
+ NetworkDiskCache(QObject *parent = 0)
+ : QNetworkDiskCache(parent)
+ , gotData(false)
+ {
+ QString location = QDir::tempPath() + QLatin1String("/tst_qnetworkdiskcache/");
+ setCacheDirectory(location);
+ clear();
+ }
+
+ QIODevice *data(const QUrl &url)
+ {
+ gotData = true;
+ return QNetworkDiskCache::data(url);
+ }
+
+ bool gotData;
+};
+
+
+tst_QAbstractNetworkCache::tst_QAbstractNetworkCache()
+{
+ Q_SET_DEFAULT_IAP
+
+ QCoreApplication::setOrganizationName(QLatin1String("Trolltech"));
+ QCoreApplication::setApplicationName(QLatin1String("autotest_qabstractnetworkcache"));
+ QCoreApplication::setApplicationVersion(QLatin1String("1.0"));
+}
+
+tst_QAbstractNetworkCache::~tst_QAbstractNetworkCache()
+{
+}
+
+static bool AlwaysTrue = true;
+static bool AlwaysFalse = false;
+
+Q_DECLARE_METATYPE(QNetworkRequest::CacheLoadControl)
+
+
+void tst_QAbstractNetworkCache::initTestCase()
+{
+#ifndef QT_NO_BEARERMANAGEMENT
+ netConfMan = new QNetworkConfigurationManager(this);
+ networkConfiguration = netConfMan->defaultConfiguration();
+ networkSession.reset(new QNetworkSession(networkConfiguration));
+ if (!networkSession->isOpen()) {
+ networkSession->open();
+ QVERIFY(networkSession->waitForOpened(30000));
+ }
+#endif
+}
+
+
+void tst_QAbstractNetworkCache::expires_data()
+{
+ QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl");
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<bool>("fetchFromCache");
+
+ QTest::newRow("304-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_expires304.cgi" << AlwaysFalse;
+ QTest::newRow("304-1") << QNetworkRequest::PreferNetwork << "httpcachetest_expires304.cgi" << true;
+ QTest::newRow("304-2") << QNetworkRequest::AlwaysCache << "httpcachetest_expires304.cgi" << AlwaysTrue;
+ QTest::newRow("304-3") << QNetworkRequest::PreferCache << "httpcachetest_expires304.cgi" << true;
+
+ QTest::newRow("500-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_expires500.cgi" << AlwaysFalse;
+ QTest::newRow("500-1") << QNetworkRequest::PreferNetwork << "httpcachetest_expires500.cgi" << true;
+ QTest::newRow("500-2") << QNetworkRequest::AlwaysCache << "httpcachetest_expires500.cgi" << AlwaysTrue;
+ QTest::newRow("500-3") << QNetworkRequest::PreferCache << "httpcachetest_expires500.cgi" << true;
+
+ QTest::newRow("200-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_expires200.cgi" << AlwaysFalse;
+ QTest::newRow("200-1") << QNetworkRequest::PreferNetwork << "httpcachetest_expires200.cgi" << false;
+ QTest::newRow("200-2") << QNetworkRequest::AlwaysCache << "httpcachetest_expires200.cgi" << AlwaysTrue;
+ QTest::newRow("200-3") << QNetworkRequest::PreferCache << "httpcachetest_expires200.cgi" << false;
+}
+
+void tst_QAbstractNetworkCache::expires()
+{
+ check();
+}
+
+void tst_QAbstractNetworkCache::expiresSynchronous_data()
+{
+ expires_data();
+}
+
+void tst_QAbstractNetworkCache::expiresSynchronous()
+{
+ checkSynchronous();
+}
+
+void tst_QAbstractNetworkCache::lastModified_data()
+{
+ QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl");
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<bool>("fetchFromCache");
+
+ QTest::newRow("304-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_lastModified304.cgi" << AlwaysFalse;
+ QTest::newRow("304-1") << QNetworkRequest::PreferNetwork << "httpcachetest_lastModified304.cgi" << true;
+ QTest::newRow("304-2") << QNetworkRequest::AlwaysCache << "httpcachetest_lastModified304.cgi" << AlwaysTrue;
+ QTest::newRow("304-3") << QNetworkRequest::PreferCache << "httpcachetest_lastModified304.cgi" << true;
+
+ QTest::newRow("200-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_lastModified200.cgi" << AlwaysFalse;
+ QTest::newRow("200-1") << QNetworkRequest::PreferNetwork << "httpcachetest_lastModified200.cgi" << false;
+ QTest::newRow("200-2") << QNetworkRequest::AlwaysCache << "httpcachetest_lastModified200.cgi" << AlwaysTrue;
+ QTest::newRow("200-3") << QNetworkRequest::PreferCache << "httpcachetest_lastModified200.cgi" << false;
+}
+
+void tst_QAbstractNetworkCache::lastModified()
+{
+ check();
+}
+
+void tst_QAbstractNetworkCache::lastModifiedSynchronous_data()
+{
+ tst_QAbstractNetworkCache::lastModified_data();
+}
+
+void tst_QAbstractNetworkCache::lastModifiedSynchronous()
+{
+ checkSynchronous();
+}
+
+void tst_QAbstractNetworkCache::etag_data()
+{
+ QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl");
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<bool>("fetchFromCache");
+
+ QTest::newRow("304-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_etag304.cgi" << AlwaysFalse;
+ QTest::newRow("304-1") << QNetworkRequest::PreferNetwork << "httpcachetest_etag304.cgi" << true;
+ QTest::newRow("304-2") << QNetworkRequest::AlwaysCache << "httpcachetest_etag304.cgi" << AlwaysTrue;
+ QTest::newRow("304-3") << QNetworkRequest::PreferCache << "httpcachetest_etag304.cgi" << true;
+
+ QTest::newRow("200-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_etag200.cgi" << AlwaysFalse;
+ QTest::newRow("200-1") << QNetworkRequest::PreferNetwork << "httpcachetest_etag200.cgi" << false;
+ QTest::newRow("200-2") << QNetworkRequest::AlwaysCache << "httpcachetest_etag200.cgi" << AlwaysTrue;
+ QTest::newRow("200-3") << QNetworkRequest::PreferCache << "httpcachetest_etag200.cgi" << false;
+}
+
+void tst_QAbstractNetworkCache::etag()
+{
+ check();
+}
+
+void tst_QAbstractNetworkCache::etagSynchronous_data()
+{
+ tst_QAbstractNetworkCache::etag_data();
+}
+
+void tst_QAbstractNetworkCache::etagSynchronous()
+{
+ checkSynchronous();
+}
+
+void tst_QAbstractNetworkCache::cacheControl_data()
+{
+ QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl");
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<bool>("fetchFromCache");
+ QTest::newRow("200-0") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol.cgi?max-age=-1" << true;
+ QTest::newRow("200-1") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol-expire.cgi" << false;
+
+ QTest::newRow("200-2") << QNetworkRequest::AlwaysNetwork << "httpcachetest_cachecontrol.cgi?no-cache" << AlwaysFalse;
+ QTest::newRow("200-3") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol.cgi?no-cache" << false;
+ QTest::newRow("200-4") << QNetworkRequest::AlwaysCache << "httpcachetest_cachecontrol.cgi?no-cache" << false;
+ QTest::newRow("200-5") << QNetworkRequest::PreferCache << "httpcachetest_cachecontrol.cgi?no-cache" << false;
+
+ QTest::newRow("304-0") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol.cgi?max-age=1000" << true;
+
+ QTest::newRow("304-1") << QNetworkRequest::AlwaysNetwork << "httpcachetest_cachecontrol.cgi?max-age=1000, must-revalidate" << AlwaysFalse;
+ QTest::newRow("304-2") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol.cgi?max-age=1000, must-revalidate" << true;
+ QTest::newRow("304-3") << QNetworkRequest::AlwaysCache << "httpcachetest_cachecontrol.cgi?max-age=1000, must-revalidate" << false;
+ QTest::newRow("304-4") << QNetworkRequest::PreferCache << "httpcachetest_cachecontrol.cgi?max-age=1000, must-revalidate" << true;
+
+ // see QTBUG-7060
+ //QTest::newRow("nokia-boston") << QNetworkRequest::PreferNetwork << "http://waplabdc.nokia-boston.com/browser/users/venkat/cache/Cache_directives/private_1b.asp" << true;
+ QTest::newRow("304-2b") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol200.cgi?private, max-age=1000" << true;
+ QTest::newRow("304-4b") << QNetworkRequest::PreferCache << "httpcachetest_cachecontrol200.cgi?private, max-age=1000" << true;
+}
+
+void tst_QAbstractNetworkCache::cacheControl()
+{
+ check();
+}
+
+void tst_QAbstractNetworkCache::cacheControlSynchronous_data()
+{
+ tst_QAbstractNetworkCache::cacheControl_data();
+}
+
+void tst_QAbstractNetworkCache::cacheControlSynchronous()
+{
+ checkSynchronous();
+}
+
+void tst_QAbstractNetworkCache::check()
+{
+ QFETCH(QNetworkRequest::CacheLoadControl, cacheLoadControl);
+ QFETCH(QString, url);
+ QFETCH(bool, fetchFromCache);
+
+ QNetworkAccessManager manager;
+ NetworkDiskCache *diskCache = new NetworkDiskCache(&manager);
+ manager.setCache(diskCache);
+ QCOMPARE(diskCache->gotData, false);
+
+ QUrl realUrl = url.contains("://") ? url : TESTFILE + url;
+ QNetworkRequest request(realUrl);
+
+ // prime the cache
+ QNetworkReply *reply = manager.get(request);
+ QSignalSpy downloaded1(reply, SIGNAL(finished()));
+ QTRY_COMPARE(downloaded1.count(), 1);
+ QCOMPARE(diskCache->gotData, false);
+ QByteArray goodData = reply->readAll();
+
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, cacheLoadControl);
+
+ // should be in the cache now
+ QNetworkReply *reply2 = manager.get(request);
+ QSignalSpy downloaded2(reply2, SIGNAL(finished()));
+ QTRY_COMPARE(downloaded2.count(), 1);
+
+ QByteArray secondData = reply2->readAll();
+ if (!fetchFromCache && cacheLoadControl == QNetworkRequest::AlwaysCache) {
+ QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError);
+ QCOMPARE(secondData, QByteArray());
+ } else {
+ QCOMPARE(reply2->error(), QNetworkReply::NoError);
+ QCOMPARE(QString(secondData), QString(goodData));
+ QCOMPARE(secondData, goodData);
+ QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ }
+
+ if (fetchFromCache) {
+ QList<QByteArray> rawHeaderList = reply->rawHeaderList();
+ QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList();
+ qSort(rawHeaderList);
+ qSort(rawHeaderList2);
+ }
+ QCOMPARE(diskCache->gotData, fetchFromCache);
+}
+
+void tst_QAbstractNetworkCache::checkSynchronous()
+{
+ QSKIP("not working yet, see QTBUG-15221", SkipAll);
+
+ QFETCH(QNetworkRequest::CacheLoadControl, cacheLoadControl);
+ QFETCH(QString, url);
+ QFETCH(bool, fetchFromCache);
+
+ QNetworkAccessManager manager;
+ NetworkDiskCache *diskCache = new NetworkDiskCache(&manager);
+ manager.setCache(diskCache);
+ QCOMPARE(diskCache->gotData, false);
+
+ QUrl realUrl = url.contains("://") ? url : TESTFILE + url;
+ QNetworkRequest request(realUrl);
+
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ // prime the cache
+ QNetworkReply *reply = manager.get(request);
+ QVERIFY(reply->isFinished()); // synchronous
+ QCOMPARE(diskCache->gotData, false);
+ QByteArray goodData = reply->readAll();
+
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, cacheLoadControl);
+
+ // should be in the cache now
+ QNetworkReply *reply2 = manager.get(request);
+ QVERIFY(reply2->isFinished()); // synchronous
+
+ QByteArray secondData = reply2->readAll();
+ if (!fetchFromCache && cacheLoadControl == QNetworkRequest::AlwaysCache) {
+ QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError);
+ QCOMPARE(secondData, QByteArray());
+ } else {
+ if (reply2->error() != QNetworkReply::NoError)
+ qDebug() << reply2->errorString();
+ QCOMPARE(reply2->error(), QNetworkReply::NoError);
+ QCOMPARE(QString(secondData), QString(goodData));
+ QCOMPARE(secondData, goodData);
+ QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ }
+
+ if (fetchFromCache) {
+ QList<QByteArray> rawHeaderList = reply->rawHeaderList();
+ QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList();
+ qSort(rawHeaderList);
+ qSort(rawHeaderList2);
+ }
+ QCOMPARE(diskCache->gotData, fetchFromCache);
+}
+
+void tst_QAbstractNetworkCache::deleteCache()
+{
+ QNetworkAccessManager manager;
+ NetworkDiskCache *diskCache = new NetworkDiskCache(&manager);
+ manager.setCache(diskCache);
+
+ QString url = "httpcachetest_cachecontrol.cgi?max-age=1000";
+ QNetworkRequest request(QUrl(TESTFILE + url));
+ QNetworkReply *reply = manager.get(request);
+ QSignalSpy downloaded1(reply, SIGNAL(finished()));
+ manager.setCache(0);
+ QTRY_COMPARE(downloaded1.count(), 1);
+}
+
+
+QTEST_MAIN(tst_QAbstractNetworkCache)
+#include "tst_qabstractnetworkcache.moc"
+
diff --git a/tests/auto/qftp/.gitattributes b/tests/auto/network/access/qftp/.gitattributes
index e04709aa2e..e04709aa2e 100644
--- a/tests/auto/qftp/.gitattributes
+++ b/tests/auto/network/access/qftp/.gitattributes
diff --git a/tests/auto/qftp/.gitignore b/tests/auto/network/access/qftp/.gitignore
index 7a4845df05..7a4845df05 100644
--- a/tests/auto/qftp/.gitignore
+++ b/tests/auto/network/access/qftp/.gitignore
diff --git a/tests/auto/qftp/qftp.pro b/tests/auto/network/access/qftp/qftp.pro
index 8f63d6e26e..8f63d6e26e 100644
--- a/tests/auto/qftp/qftp.pro
+++ b/tests/auto/network/access/qftp/qftp.pro
diff --git a/tests/auto/qftp/rfc3252.txt b/tests/auto/network/access/qftp/rfc3252.txt
index b80c61bf0a..b80c61bf0a 100644
--- a/tests/auto/qftp/rfc3252.txt
+++ b/tests/auto/network/access/qftp/rfc3252.txt
diff --git a/tests/auto/network/access/qftp/tst_qftp.cpp b/tests/auto/network/access/qftp/tst_qftp.cpp
new file mode 100644
index 0000000000..117ac92ed7
--- /dev/null
+++ b/tests/auto/network/access/qftp/tst_qftp.cpp
@@ -0,0 +1,2170 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qfile.h>
+#include <qbuffer.h>
+#include "qftp.h"
+#include <qmap.h>
+#include <time.h>
+#include <stdlib.h>
+#include <QNetworkProxy>
+#include <QNetworkConfiguration>
+#include <qnetworkconfigmanager.h>
+#include <QNetworkSession>
+#include <QtNetwork/private/qnetworksession_p.h>
+
+#include "../../../network-settings.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+// Application private dir is default serach path for files, so SRCDIR can be set to empty
+#define SRCDIR ""
+#endif
+
+#ifndef QT_NO_BEARERMANAGEMENT
+Q_DECLARE_METATYPE(QNetworkConfiguration)
+#endif
+
+class tst_QFtp : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QFtp();
+ virtual ~tst_QFtp();
+
+
+public slots:
+ void initTestCase_data();
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void connectToHost_data();
+ void connectToHost();
+ void connectToUnresponsiveHost();
+ void login_data();
+ void login();
+ void close_data();
+ void close();
+
+ void list_data();
+ void list();
+ void cd_data();
+ void cd();
+ void get_data();
+ void get();
+ void put_data();
+ void put();
+ void remove();
+ void mkdir_data();
+ void mkdir();
+ void mkdir2();
+ void rmdir();
+ void rename_data();
+ void rename();
+
+ void commandSequence_data();
+ void commandSequence();
+
+ void abort_data();
+ void abort();
+
+ void bytesAvailable_data();
+ void bytesAvailable();
+
+ void activeMode();
+
+ void proxy_data();
+ void proxy();
+
+ void binaryAscii();
+
+ void doneSignal();
+ void queueMoreCommandsInDoneSlot();
+
+ void qtbug7359Crash();
+
+protected slots:
+ void stateChanged( int );
+ void listInfo( const QUrlInfo & );
+ void readyRead();
+ void dataTransferProgress(qint64, qint64);
+
+ void commandStarted( int );
+ void commandFinished( int, bool );
+ void done( bool );
+ void activeModeDone( bool );
+ void mkdir2Slot(int id, bool error);
+ void cdUpSlot(bool);
+
+private:
+ QFtp *newFtp();
+ void addCommand( QFtp::Command, int );
+ bool fileExists( const QString &host, quint16 port, const QString &user, const QString &password, const QString &file, const QString &cdDir = QString::null );
+ bool dirExists( const QString &host, quint16 port, const QString &user, const QString &password, const QString &cdDir, const QString &dirToCreate );
+
+ void renameInit( const QString &host, const QString &user, const QString &password, const QString &createFile );
+ void renameCleanup( const QString &host, const QString &user, const QString &password, const QString &fileToDelete );
+
+ QFtp *ftp;
+#ifndef QT_NO_BEARERMANAGEMENT
+ QSharedPointer<QNetworkSession> networkSessionExplicit;
+ QSharedPointer<QNetworkSession> networkSessionImplicit;
+#endif
+
+ QList<int> ids; // helper to make sure that all expected signals are emitted
+ int current_id;
+
+ int connectToHost_state;
+ int close_state;
+ int login_state;
+ int cur_state;
+ struct CommandResult
+ {
+ int id;
+ int success;
+ };
+ QMap< QFtp::Command, CommandResult > resultMap;
+ typedef QMap<QFtp::Command,CommandResult>::Iterator ResMapIt;
+
+ int done_success;
+ int commandSequence_success;
+
+ qlonglong bytesAvailable_finishedGet;
+ qlonglong bytesAvailable_finished;
+ qlonglong bytesAvailable_done;
+
+ QList<QUrlInfo> listInfo_i;
+ QByteArray newData_ba;
+ qlonglong bytesTotal;
+ qlonglong bytesDone;
+
+ bool inFileDirExistsFunction;
+
+ QString uniqueExtension;
+};
+
+//#define DUMP_SIGNALS
+
+const int bytesTotal_init = -10;
+const int bytesDone_init = -10;
+
+tst_QFtp::tst_QFtp() :
+ ftp(0)
+{
+}
+
+tst_QFtp::~tst_QFtp()
+{
+}
+
+void tst_QFtp::initTestCase_data()
+{
+ QTest::addColumn<bool>("setProxy");
+ QTest::addColumn<int>("proxyType");
+ QTest::addColumn<bool>("setSession");
+
+ QTest::newRow("WithoutProxy") << false << 0 << false;
+ QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy) << false;
+ //### doesn't work well yet.
+ //QTest::newRow("WithHttpProxy") << true << int(QNetworkProxy::HttpProxy);
+
+#ifndef QT_NO_BEARERMANAGEMENT
+ QTest::newRow("WithoutProxyWithSession") << false << 0 << true;
+ QTest::newRow("WithSocks5ProxyAndSession") << true << int(QNetworkProxy::Socks5Proxy) << true;
+#endif
+}
+
+void tst_QFtp::initTestCase()
+{
+#ifndef QT_NO_BEARERMANAGEMENT
+ QNetworkConfigurationManager manager;
+ networkSessionImplicit = QSharedPointer<QNetworkSession>(new QNetworkSession(manager.defaultConfiguration()));
+ networkSessionImplicit->open();
+ QVERIFY(networkSessionImplicit->waitForOpened(60000)); //there may be user prompt on 1st connect
+#endif
+}
+
+void tst_QFtp::cleanupTestCase()
+{
+#ifndef QT_NO_BEARERMANAGEMENT
+ networkSessionExplicit.clear();
+ networkSessionImplicit.clear();
+#endif
+}
+
+void tst_QFtp::init()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ QFETCH_GLOBAL(int, proxyType);
+ QFETCH_GLOBAL(bool, setSession);
+ if (setProxy) {
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
+ } else if (proxyType == QNetworkProxy::HttpProxy) {
+ QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128));
+ }
+ }
+#ifndef QT_NO_BEARERMANAGEMENT
+ if (setSession) {
+ networkSessionExplicit = networkSessionImplicit;
+ if (!networkSessionExplicit->isOpen()) {
+ networkSessionExplicit->open();
+ QVERIFY(networkSessionExplicit->waitForOpened(30000));
+ }
+ } else {
+ networkSessionExplicit.clear();
+ }
+#endif
+
+ delete ftp;
+ ftp = 0;
+
+ ids.clear();
+ current_id = 0;
+
+ resultMap.clear();
+ connectToHost_state = -1;
+ close_state = -1;
+ login_state = -1;
+ cur_state = QFtp::Unconnected;
+
+ listInfo_i.clear();
+ newData_ba = QByteArray();
+ bytesTotal = bytesTotal_init;
+ bytesDone = bytesDone_init;
+
+ done_success = -1;
+ commandSequence_success = -1;
+
+ bytesAvailable_finishedGet = 1234567890;
+ bytesAvailable_finished = 1234567890;
+ bytesAvailable_done = 1234567890;
+
+ inFileDirExistsFunction = FALSE;
+
+#if !defined(Q_OS_WINCE)
+ srand(time(0));
+ uniqueExtension = QString("%1%2%3").arg((qulonglong)this).arg(rand()).arg((qulonglong)time(0));
+#else
+ srand(0);
+ uniqueExtension = QString("%1%2%3").arg((qulonglong)this).arg(rand()).arg((qulonglong)(0));
+#endif
+}
+
+void tst_QFtp::cleanup()
+{
+ if (ftp) {
+ delete ftp;
+ ftp = 0;
+ }
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
+ }
+
+ delete ftp;
+ ftp = 0;
+#ifndef QT_NO_BEARERMANAGEMENT
+ networkSessionExplicit.clear();
+#endif
+}
+
+void tst_QFtp::connectToHost_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<int>("state");
+
+ QTest::newRow( "ok01" ) << QtNetworkSettings::serverName() << (uint)21 << (int)QFtp::Connected;
+ QTest::newRow( "error01" ) << QtNetworkSettings::serverName() << (uint)2222 << (int)QFtp::Unconnected;
+ QTest::newRow( "error02" ) << QString("foo.bar") << (uint)21 << (int)QFtp::Unconnected;
+}
+
+void tst_QFtp::connectToHost()
+{
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+
+ QTestEventLoop::instance().enterLoop( 61 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ QTEST( connectToHost_state, "state" );
+
+ ResMapIt it = resultMap.find( QFtp::ConnectToHost );
+ QVERIFY( it != resultMap.end() );
+ QFETCH( int, state );
+ if ( state == QFtp::Connected ) {
+ QVERIFY( it.value().success == 1 );
+ } else {
+ QVERIFY( it.value().success == 0 );
+ }
+}
+
+void tst_QFtp::connectToUnresponsiveHost()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ QSKIP( "This test takes too long if we test with proxies too", SkipSingle );
+
+ QString host = "192.0.2.42"; // IP out of TEST-NET, should be unreachable
+ uint port = 21;
+
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+
+ qDebug( "About to connect to host that won't reply (this test takes 60 seconds)" );
+ QTestEventLoop::instance().enterLoop( 61 );
+#ifdef Q_OS_WIN
+ /* On Windows, we do not get a timeout, because Winsock is behaving in a strange way:
+ We issue two "WSAConnect()" calls, after the first, as a result we get WSAEWOULDBLOCK,
+ after the second, we get WSAEISCONN, which means that the socket is connected, which cannot be.
+ However, after some seconds we get a socket error saying that the remote host closed the connection,
+ which can neither be. For this test, that would actually enable us to finish before timout, but handling that case
+ (in void QFtpPI::error(QAbstractSocket::SocketError e)) breaks
+ a lot of other stuff in QFtp, so we just expect this test to fail on Windows.
+ */
+ QEXPECT_FAIL("", "timeout not working due to strange Windows socket behaviour (see source file of this test for explanation)", Abort);
+#else
+ QEXPECT_FAIL("", "QTBUG-20687", Abort);
+#endif
+ QVERIFY2(! QTestEventLoop::instance().timeout(), "Network timeout longer than expected (should have been 60 seconds)");
+
+ QVERIFY( ftp->state() == QFtp::Unconnected);
+ ResMapIt it = resultMap.find( QFtp::ConnectToHost );
+ QVERIFY( it != resultMap.end() );
+ QVERIFY( it.value().success == 0 );
+
+ delete ftp;
+ ftp = 0;
+}
+
+void tst_QFtp::login_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<QString>("user");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<int>("success");
+
+ QTest::newRow( "ok01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << 1;
+ QTest::newRow( "ok02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftp") << QString() << 1;
+ QTest::newRow( "ok03" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftp") << QString("foo") << 1;
+ QTest::newRow( "ok04" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << 1;
+
+ QTest::newRow( "error01" ) << QtNetworkSettings::serverName() << (uint)21 << QString("foo") << QString() << 0;
+ QTest::newRow( "error02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("foo") << QString("bar") << 0;
+}
+
+void tst_QFtp::login()
+{
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+ QFETCH( QString, user );
+ QFETCH( QString, password );
+
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt it = resultMap.find( QFtp::Login );
+ QVERIFY( it != resultMap.end() );
+ QTEST( it.value().success, "success" );
+
+ if ( it.value().success ) {
+ QVERIFY( login_state == QFtp::LoggedIn );
+ } else {
+ QVERIFY( login_state != QFtp::LoggedIn );
+ }
+}
+
+void tst_QFtp::close_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<QString>("user");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<bool>("login");
+
+ QTest::newRow( "login01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << (bool)TRUE;
+ QTest::newRow( "login02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftp") << QString() << (bool)TRUE;
+ QTest::newRow( "login03" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftp") << QString("foo") << (bool)TRUE;
+ QTest::newRow( "login04" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << (bool)TRUE;
+
+ QTest::newRow( "no-login01" ) << QtNetworkSettings::serverName() << (uint)21 << QString("") << QString("") << (bool)FALSE;
+}
+
+void tst_QFtp::close()
+{
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+ QFETCH( QString, user );
+ QFETCH( QString, password );
+ QFETCH( bool, login );
+
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ if ( login )
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ QCOMPARE( close_state, (int)QFtp::Unconnected );
+
+ ResMapIt it = resultMap.find( QFtp::Close );
+ QVERIFY( it != resultMap.end() );
+ QVERIFY( it.value().success == 1 );
+}
+
+void tst_QFtp::list_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<QString>("user");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<QString>("dir");
+ QTest::addColumn<int>("success");
+ QTest::addColumn<QStringList>("entryNames"); // ### we should rather use a QList<QUrlInfo> here
+
+ QStringList flukeRoot;
+ flukeRoot << "pub";
+ flukeRoot << "qtest";
+ QStringList flukeQtest;
+ flukeQtest << "bigfile";
+ flukeQtest << "nonASCII";
+ flukeQtest << "rfc3252";
+ flukeQtest << "rfc3252.txt";
+ flukeQtest << "upload";
+
+ QTest::newRow( "workDir01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString() << 1 << flukeRoot;
+ QTest::newRow( "workDir02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString() << 1 << flukeRoot;
+
+ QTest::newRow( "relPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("qtest") << 1 << flukeQtest;
+ QTest::newRow( "relPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("qtest") << 1 << flukeQtest;
+
+ QTest::newRow( "absPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/qtest") << 1 << flukeQtest;
+ QTest::newRow( "absPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("/var/ftp/qtest") << 1 << flukeQtest;
+
+ QTest::newRow( "nonExist01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("foo") << 1 << QStringList();
+ QTest::newRow( "nonExist02" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/foo") << 1 << QStringList();
+ // ### The microsoft server does not seem to work properly at the moment --
+ // I am also not able to open a data connection with other, non-Qt FTP
+ // clients to it.
+ // QTest::newRow( "nonExist03" ) << "ftp.microsoft.com" << (uint)21 << QString() << QString() << QString("/foo") << 0 << QStringList();
+
+ QStringList susePub;
+ susePub << "README.mirror-policy" << "axp" << "i386" << "ia64" << "install" << "noarch" << "pubring.gpg-build.suse.de" << "update" << "x86_64";
+ QTest::newRow( "epsvNotSupported" ) << QString("ftp.funet.fi") << (uint)21 << QString::fromLatin1("ftp") << QString::fromLatin1("root@") << QString("/pub/Linux/suse/suse") << 1 << susePub;
+}
+
+void tst_QFtp::list()
+{
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+ QFETCH( QString, user );
+ QFETCH( QString, password );
+ QFETCH( QString, dir );
+
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ addCommand( QFtp::List, ftp->list( dir ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt it = resultMap.find( QFtp::List );
+ QVERIFY( it != resultMap.end() );
+ QTEST( it.value().success, "success" );
+ QFETCH( QStringList, entryNames );
+ QCOMPARE( listInfo_i.count(), entryNames.count() );
+ for ( uint i=0; i < (uint) entryNames.count(); i++ ) {
+ QCOMPARE( listInfo_i[i].name(), entryNames[i] );
+ }
+}
+
+void tst_QFtp::cd_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<QString>("user");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<QString>("dir");
+ QTest::addColumn<int>("success");
+ QTest::addColumn<QStringList>("entryNames"); // ### we should rather use a QList<QUrlInfo> here
+
+ QStringList flukeRoot;
+ flukeRoot << "qtest";
+ QStringList flukeQtest;
+ flukeQtest << "bigfile";
+ flukeQtest << "nonASCII";
+ flukeQtest << "rfc3252";
+ flukeQtest << "rfc3252.txt";
+ flukeQtest << "upload";
+
+ QTest::newRow( "relPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("qtest") << 1 << flukeQtest;
+ QTest::newRow( "relPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("qtest") << 1 << flukeQtest;
+
+ QTest::newRow( "absPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/qtest") << 1 << flukeQtest;
+ QTest::newRow( "absPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("/var/ftp/qtest") << 1 << flukeQtest;
+
+ QTest::newRow( "nonExist01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("foo") << 0 << QStringList();
+ QTest::newRow( "nonExist03" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/foo") << 0 << QStringList();
+}
+
+void tst_QFtp::cd()
+{
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+ QFETCH( QString, user );
+ QFETCH( QString, password );
+ QFETCH( QString, dir );
+
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ addCommand( QFtp::Cd, ftp->cd( dir ) );
+ addCommand( QFtp::List, ftp->list() );
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 30 );
+
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() ) {
+ QFAIL( "Network operation timed out" );
+ }
+
+ ResMapIt it = resultMap.find( QFtp::Cd );
+ QVERIFY( it != resultMap.end() );
+ QTEST( it.value().success, "success" );
+ QFETCH( QStringList, entryNames );
+ QCOMPARE( listInfo_i.count(), entryNames.count() );
+ for ( uint i=0; i < (uint) entryNames.count(); i++ ) {
+ QCOMPARE( listInfo_i[i].name(), entryNames[i] );
+ }
+}
+
+void tst_QFtp::get_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<QString>("user");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<int>("success");
+ QTest::addColumn<QByteArray>("res");
+ QTest::addColumn<bool>("useIODevice");
+
+ // ### move this into external testdata
+ QFile file( SRCDIR "rfc3252.txt" );
+ QVERIFY( file.open( QIODevice::ReadOnly ) );
+ QByteArray rfc3252 = file.readAll();
+
+ // test the two get() overloads in one routine
+ for ( int i=0; i<2; i++ ) {
+ QTest::newRow( QString("relPath01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << "qtest/rfc3252" << 1 << rfc3252 << (bool)(i==1);
+ QTest::newRow( QString("relPath02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
+ << "qtest/rfc3252" << 1 << rfc3252 << (bool)(i==1);
+
+ QTest::newRow( QString("absPath01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << "/qtest/rfc3252" << 1 << rfc3252 << (bool)(i==1);
+ QTest::newRow( QString("absPath02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
+ << "/var/ftp/qtest/rfc3252" << 1 << rfc3252 << (bool)(i==1);
+
+ QTest::newRow( QString("nonExist01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << QString("foo") << 0 << QByteArray() << (bool)(i==1);
+ QTest::newRow( QString("nonExist02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << QString("/foo") << 0 << QByteArray() << (bool)(i==1);
+ }
+}
+
+void tst_QFtp::get()
+{
+ // for the overload that takes a QIODevice
+ QByteArray buf_ba;
+ QBuffer buf( &buf_ba );
+
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+ QFETCH( QString, user );
+ QFETCH( QString, password );
+ QFETCH( QString, file );
+ QFETCH( bool, useIODevice );
+
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ if ( useIODevice ) {
+ buf.open( QIODevice::WriteOnly );
+ addCommand( QFtp::Get, ftp->get( file, &buf ) );
+ } else {
+ addCommand( QFtp::Get, ftp->get( file ) );
+ }
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 50 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt it = resultMap.find( QFtp::Get );
+ QVERIFY( it != resultMap.end() );
+ QTEST( it.value().success, "success" );
+ if ( useIODevice ) {
+ QTEST( buf_ba, "res" );
+ } else {
+ QTEST( newData_ba, "res" );
+ }
+ QVERIFY( bytesTotal != bytesTotal_init );
+ if ( bytesTotal != -1 ) {
+ QVERIFY( bytesDone == bytesTotal );
+ }
+ if ( useIODevice ) {
+ if ( bytesDone != bytesDone_init ) {
+ QVERIFY( (int)buf_ba.size() == bytesDone );
+ }
+ } else {
+ if ( bytesDone != bytesDone_init ) {
+ QVERIFY( (int)newData_ba.size() == bytesDone );
+ }
+ }
+}
+
+void tst_QFtp::put_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<QString>("user");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QByteArray>("fileData");
+ QTest::addColumn<bool>("useIODevice");
+ QTest::addColumn<int>("success");
+
+ // ### move this into external testdata
+ QFile file( SRCDIR "rfc3252.txt" );
+ QVERIFY( file.open( QIODevice::ReadOnly ) );
+ QByteArray rfc3252 = file.readAll();
+
+ QByteArray bigData( 10*1024*1024, 0 );
+ bigData.fill( 'A' );
+
+ // test the two put() overloads in one routine
+ for ( int i=0; i<2; i++ ) {
+ QTest::newRow( QString("relPath01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << QString("qtest/upload/rel01_%1") << rfc3252
+ << (bool)(i==1) << 1;
+ /*
+ QTest::newRow( QString("relPath02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
+ << QString("qtest/upload/rel02_%1") << rfc3252
+ << (bool)(i==1) << 1;
+ QTest::newRow( QString("relPath03_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
+ << QString("qtest/upload/rel03_%1") << QByteArray()
+ << (bool)(i==1) << 1;
+ QTest::newRow( QString("relPath04_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
+ << QString("qtest/upload/rel04_%1") << bigData
+ << (bool)(i==1) << 1;
+
+ QTest::newRow( QString("absPath01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << QString("/qtest/upload/abs01_%1") << rfc3252
+ << (bool)(i==1) << 1;
+ QTest::newRow( QString("absPath02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
+ << QString("/srv/ftp/qtest/upload/abs02_%1") << rfc3252
+ << (bool)(i==1) << 1;
+
+ QTest::newRow( QString("nonExist01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << QString("foo") << QByteArray()
+ << (bool)(i==1) << 0;
+ QTest::newRow( QString("nonExist02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << QString("/foo") << QByteArray()
+ << (bool)(i==1) << 0;
+*/
+ }
+}
+
+void tst_QFtp::put()
+{
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+ QFETCH( QString, user );
+ QFETCH( QString, password );
+ QFETCH( QString, file );
+ QFETCH( QByteArray, fileData );
+ QFETCH( bool, useIODevice );
+
+#ifdef Q_OS_WIN
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QSKIP("With socks5 the put() test takes too long time on Windows.", SkipAll);
+ }
+ }
+#endif
+
+ const int timestep = 50;
+
+ if(file.contains('%'))
+ file = file.arg(uniqueExtension);
+
+ // for the overload that takes a QIODevice
+ QBuffer buf_fileData( &fileData );
+ buf_fileData.open( QIODevice::ReadOnly );
+
+ ResMapIt it;
+ //////////////////////////////////////////////////////////////////
+ // upload the file
+ init();
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ if ( useIODevice )
+ addCommand( QFtp::Put, ftp->put( &buf_fileData, file ) );
+ else
+ addCommand( QFtp::Put, ftp->put( fileData, file ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ for(int time = 0; time <= fileData.length() / 20000; time += timestep) {
+ QTestEventLoop::instance().enterLoop( timestep );
+ if(ftp->currentCommand() == QFtp::None)
+ break;
+ }
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ it = resultMap.find( QFtp::Put );
+ QVERIFY( it != resultMap.end() );
+ QTEST( it.value().success, "success" );
+ if ( !it.value().success ) {
+ QVERIFY( !fileExists( host, port, user, password, file ) );
+ return; // the following tests are only meaningful if the file could be put
+ }
+ QVERIFY( bytesTotal == (int)fileData.size() );
+ QVERIFY( bytesDone == bytesTotal );
+
+ QVERIFY( fileExists( host, port, user, password, file ) );
+
+ //////////////////////////////////////////////////////////////////
+ // fetch file to make sure that it is equal to the uploaded file
+ init();
+ ftp = newFtp();
+ QBuffer buf;
+ buf.open( QIODevice::WriteOnly );
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ addCommand( QFtp::Get, ftp->get( file, &buf ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ for(int time = 0; time <= fileData.length() / 20000; time += timestep) {
+ QTestEventLoop::instance().enterLoop( timestep );
+ if(ftp->currentCommand() == QFtp::None)
+ break;
+ }
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ QVERIFY( done_success == 1 );
+ QTEST( buf.buffer(), "fileData" );
+
+ //////////////////////////////////////////////////////////////////
+ // cleanup (i.e. remove the file) -- this also tests the remove command
+ init();
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ addCommand( QFtp::Remove, ftp->remove( file ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( timestep );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ it = resultMap.find( QFtp::Remove );
+ QVERIFY( it != resultMap.end() );
+ QCOMPARE( it.value().success, 1 );
+
+ QVERIFY( !fileExists( host, port, user, password, file ) );
+}
+
+void tst_QFtp::remove()
+{
+ DEPENDS_ON( "put" );
+}
+
+void tst_QFtp::mkdir_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<QString>("user");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<QString>("cdDir");
+ QTest::addColumn<QString>("dirToCreate");
+ QTest::addColumn<int>("success");
+
+ QTest::newRow( "relPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << "qtest/upload" << QString("rel01_%1") << 1;
+ QTest::newRow( "relPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
+ << "qtest/upload" << QString("rel02_%1") << 1;
+ QTest::newRow( "relPath03" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
+ << "qtest/upload" << QString("rel03_%1") << 1;
+
+ QTest::newRow( "absPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << "." << QString("/qtest/upload/abs01_%1") << 1;
+ QTest::newRow( "absPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
+ << "." << QString("/var/ftp/qtest/upload/abs02_%1") << 1;
+
+ // QTest::newRow( "nonExist01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("foo") << 0;
+ QTest::newRow( "nonExist01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << "." << QString("foo") << 0;
+ QTest::newRow( "nonExist02" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
+ << "." << QString("/foo") << 0;
+}
+
+void tst_QFtp::mkdir()
+{
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+ QFETCH( QString, user );
+ QFETCH( QString, password );
+ QFETCH( QString, cdDir );
+ QFETCH( QString, dirToCreate );
+
+ if(dirToCreate.contains('%'))
+ dirToCreate = dirToCreate.arg(uniqueExtension);
+
+ //////////////////////////////////////////////////////////////////
+ // create the directory
+ init();
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ addCommand( QFtp::Cd, ftp->cd( cdDir ) );
+ addCommand( QFtp::Mkdir, ftp->mkdir( dirToCreate ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt it = resultMap.find( QFtp::Mkdir );
+ QVERIFY( it != resultMap.end() );
+ QTEST( it.value().success, "success" );
+ if ( !it.value().success ) {
+ QVERIFY( !dirExists( host, port, user, password, cdDir, dirToCreate ) );
+ return; // the following tests are only meaningful if the dir could be created
+ }
+ QVERIFY( dirExists( host, port, user, password, cdDir, dirToCreate ) );
+
+ //////////////////////////////////////////////////////////////////
+ // create the directory again (should always fail!)
+ init();
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ addCommand( QFtp::Cd, ftp->cd( cdDir ) );
+ addCommand( QFtp::Mkdir, ftp->mkdir( dirToCreate ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ it = resultMap.find( QFtp::Mkdir );
+ QVERIFY( it != resultMap.end() );
+ QCOMPARE( it.value().success, 0 );
+
+ //////////////////////////////////////////////////////////////////
+ // remove the directory
+ init();
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ addCommand( QFtp::Cd, ftp->cd( cdDir ) );
+ addCommand( QFtp::Rmdir, ftp->rmdir( dirToCreate ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ it = resultMap.find( QFtp::Rmdir );
+ QVERIFY( it != resultMap.end() );
+ QCOMPARE( it.value().success, 1 );
+
+ QVERIFY( !dirExists( host, port, user, password, cdDir, dirToCreate ) );
+}
+
+void tst_QFtp::mkdir2()
+{
+ ftp = new QFtp;
+ ftp->connectToHost(QtNetworkSettings::serverName());
+ ftp->login();
+ current_id = ftp->cd("kake/test");
+
+ QEventLoop loop;
+ connect(ftp, SIGNAL(done(bool)), &loop, SLOT(quit()));
+ connect(ftp, SIGNAL(commandFinished(int, bool)), this, SLOT(mkdir2Slot(int, bool)));
+ QTimer::singleShot(5000, &loop, SLOT(quit()));
+
+ QSignalSpy commandStartedSpy(ftp, SIGNAL(commandStarted(int)));
+ QSignalSpy commandFinishedSpy(ftp, SIGNAL(commandFinished(int, bool)));
+
+ loop.exec();
+
+ QCOMPARE(commandStartedSpy.count(), 4); // connect, login, cd, mkdir
+ QCOMPARE(commandFinishedSpy.count(), 4);
+
+ for (int i = 0; i < 4; ++i)
+ QCOMPARE(commandFinishedSpy.at(i).at(0), commandStartedSpy.at(i).at(0));
+
+ QVERIFY(!commandFinishedSpy.at(0).at(1).toBool());
+ QVERIFY(!commandFinishedSpy.at(1).at(1).toBool());
+ QVERIFY(commandFinishedSpy.at(2).at(1).toBool());
+ QVERIFY(commandFinishedSpy.at(3).at(1).toBool());
+
+ delete ftp;
+ ftp = 0;
+}
+
+void tst_QFtp::mkdir2Slot(int id, bool)
+{
+ if (id == current_id)
+ ftp->mkdir("kake/test");
+}
+
+void tst_QFtp::rmdir()
+{
+ DEPENDS_ON( "mkdir" );
+}
+
+void tst_QFtp::rename_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("user");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<QString>("cdDir");
+ QTest::addColumn<QString>("oldfile");
+ QTest::addColumn<QString>("newfile");
+ QTest::addColumn<QString>("createFile");
+ QTest::addColumn<QString>("renamedFile");
+ QTest::addColumn<int>("success");
+
+ QTest::newRow("relPath01") << QtNetworkSettings::serverName() << QString() << QString()
+ << "qtest/upload"
+ << QString("rel_old01_%1") << QString("rel_new01_%1")
+ << QString("qtest/upload/rel_old01_%1") << QString("qtest/upload/rel_new01_%1")
+ << 1;
+ QTest::newRow("relPath02") << QtNetworkSettings::serverName() << QString("ftptest") << "password"
+ << "qtest/upload"
+ << QString("rel_old02_%1") << QString("rel_new02_%1")
+ << QString("qtest/upload/rel_old02_%1") << QString("qtest/upload/rel_new02_%1")
+ << 1;
+ QTest::newRow("relPath03") << QtNetworkSettings::serverName() << QString("ftptest") << "password"
+ << "qtest/upload"
+ << QString("rel_old03_%1")<< QString("rel_new03_%1")
+ << QString("qtest/upload/rel_old03_%1") << QString("qtest/upload/rel_new03_%1")
+ << 1;
+
+ QTest::newRow("absPath01") << QtNetworkSettings::serverName() << QString() << QString()
+ << QString()
+ << QString("/qtest/upload/abs_old01_%1") << QString("/qtest/upload/abs_new01_%1")
+ << QString("/qtest/upload/abs_old01_%1") << QString("/qtest/upload/abs_new01_%1")
+ << 1;
+ QTest::newRow("absPath02") << QtNetworkSettings::serverName() << QString("ftptest") << "password"
+ << QString()
+ << QString("/var/ftp/qtest/upload/abs_old02_%1") << QString("/var/ftp/qtest/upload/abs_new02_%1")
+ << QString("/var/ftp/qtest/upload/abs_old02_%1") << QString("/var/ftp/qtest/upload/abs_new02_%1")
+ << 1;
+
+ QTest::newRow("nonExist01") << QtNetworkSettings::serverName() << QString() << QString()
+ << QString()
+ << QString("foo") << "new_foo"
+ << QString() << QString()
+ << 0;
+ QTest::newRow("nonExist02") << QtNetworkSettings::serverName() << QString() << QString()
+ << QString()
+ << QString("/foo") << QString("/new_foo")
+ << QString() << QString()
+ << 0;
+}
+
+void tst_QFtp::renameInit( const QString &host, const QString &user, const QString &password, const QString &createFile )
+{
+ if ( !createFile.isNull() ) {
+ // upload the file
+ init();
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ addCommand( QFtp::Put, ftp->put( QByteArray(), createFile ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 50 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt it = resultMap.find( QFtp::Put );
+ QVERIFY( it != resultMap.end() );
+ QVERIFY( it.value().success == 1 );
+
+ QVERIFY( fileExists( host, 21, user, password, createFile ) );
+ }
+}
+
+void tst_QFtp::renameCleanup( const QString &host, const QString &user, const QString &password, const QString &fileToDelete )
+{
+ if ( !fileToDelete.isNull() ) {
+ // cleanup (i.e. remove the file)
+ init();
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ addCommand( QFtp::Remove, ftp->remove( fileToDelete ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt it = resultMap.find( QFtp::Remove );
+ QVERIFY( it != resultMap.end() );
+ QVERIFY( it.value().success == 1 );
+
+ QVERIFY( !fileExists( host, 21, user, password, fileToDelete ) );
+ }
+}
+
+void tst_QFtp::rename()
+{
+ QFETCH( QString, host );
+ QFETCH( QString, user );
+ QFETCH( QString, password );
+ QFETCH( QString, cdDir );
+ QFETCH( QString, oldfile );
+ QFETCH( QString, newfile );
+ QFETCH( QString, createFile );
+ QFETCH( QString, renamedFile );
+
+ if(oldfile.contains('%'))
+ oldfile = oldfile.arg(uniqueExtension);
+ if(newfile.contains('%'))
+ newfile = newfile.arg(uniqueExtension);
+ if(createFile.contains('%'))
+ createFile = createFile.arg(uniqueExtension);
+ if(renamedFile.contains('%'))
+ renamedFile = renamedFile.arg(uniqueExtension);
+
+ renameInit( host, user, password, createFile );
+
+ init();
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ if ( !cdDir.isNull() )
+ addCommand( QFtp::Cd, ftp->cd( cdDir ) );
+ addCommand( QFtp::Rename, ftp->rename( oldfile, newfile ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt it = resultMap.find( QFtp::Rename );
+ QVERIFY( it != resultMap.end() );
+ QTEST( it.value().success, "success" );
+
+ if ( it.value().success ) {
+ QVERIFY( !fileExists( host, 21, user, password, oldfile, cdDir ) );
+ QVERIFY( fileExists( host, 21, user, password, newfile, cdDir ) );
+ QVERIFY( fileExists( host, 21, user, password, renamedFile ) );
+ } else {
+ QVERIFY( !fileExists( host, 21, user, password, newfile, cdDir ) );
+ QVERIFY( !fileExists( host, 21, user, password, renamedFile ) );
+ }
+
+ renameCleanup( host, user, password, renamedFile );
+}
+
+/*
+ The commandSequence() test does not test any particular function. It rather
+ tests a sequence of arbitrary commands specified in the test data.
+*/
+class FtpCommand
+{
+public:
+ FtpCommand() :
+ cmd(QFtp::None)
+ { }
+
+ FtpCommand( QFtp::Command command ) :
+ cmd(command)
+ { }
+
+ FtpCommand( QFtp::Command command, const QStringList &arguments ) :
+ cmd(command), args(arguments)
+ { }
+
+ FtpCommand( const FtpCommand &c )
+ { *this = c; }
+
+ FtpCommand &operator=( const FtpCommand &c )
+ {
+ this->cmd = c.cmd;
+ this->args = c.args;
+ return *this;
+ }
+
+ QFtp::Command cmd;
+ QStringList args;
+};
+QDataStream &operator<<( QDataStream &s, const FtpCommand &command )
+{
+ s << (int)command.cmd;
+ s << command.args;
+ return s;
+}
+QDataStream &operator>>( QDataStream &s, FtpCommand &command )
+{
+ int tmp;
+ s >> tmp;
+ command.cmd = (QFtp::Command)tmp;
+ s >> command.args;
+ return s;
+}
+Q_DECLARE_METATYPE(QList<FtpCommand>)
+
+void tst_QFtp::commandSequence_data()
+{
+ // some "constants"
+ QStringList argConnectToHost01;
+ argConnectToHost01 << QtNetworkSettings::serverName() << "21";
+
+ QStringList argLogin01, argLogin02, argLogin03, argLogin04;
+ argLogin01 << QString() << QString();
+ argLogin02 << "ftp" << QString();
+ argLogin03 << "ftp" << "foo";
+ argLogin04 << QString("ftptest") << "password";
+
+ FtpCommand connectToHost01( QFtp::ConnectToHost, argConnectToHost01 );
+ FtpCommand login01( QFtp::Login, argLogin01 );
+ FtpCommand login02( QFtp::Login, argLogin01 );
+ FtpCommand login03( QFtp::Login, argLogin01 );
+ FtpCommand login04( QFtp::Login, argLogin01 );
+ FtpCommand close01( QFtp::Close );
+
+ QTest::addColumn<QList<FtpCommand> >("cmds");
+ QTest::addColumn<int>("success");
+
+ // success data
+ {
+ QList<FtpCommand> cmds;
+ cmds << connectToHost01;
+ QTest::newRow( "simple_ok01" ) << cmds << 1;
+ }
+ {
+ QList<FtpCommand> cmds;
+ cmds << connectToHost01;
+ cmds << login01;
+ QTest::newRow( "simple_ok02" ) << cmds << 1;
+ }
+ {
+ QList<FtpCommand> cmds;
+ cmds << connectToHost01;
+ cmds << login01;
+ cmds << close01;
+ QTest::newRow( "simple_ok03" ) << cmds << 1;
+ }
+ {
+ QList<FtpCommand> cmds;
+ cmds << connectToHost01;
+ cmds << close01;
+ QTest::newRow( "simple_ok04" ) << cmds << 1;
+ }
+ {
+ QList<FtpCommand> cmds;
+ cmds << connectToHost01;
+ cmds << login01;
+ cmds << close01;
+ cmds << connectToHost01;
+ cmds << login02;
+ cmds << close01;
+ QTest::newRow( "connect_twice" ) << cmds << 1;
+ }
+
+ // error data
+ {
+ QList<FtpCommand> cmds;
+ cmds << close01;
+ QTest::newRow( "error01" ) << cmds << 0;
+ }
+ {
+ QList<FtpCommand> cmds;
+ cmds << login01;
+ QTest::newRow( "error02" ) << cmds << 0;
+ }
+ {
+ QList<FtpCommand> cmds;
+ cmds << login01;
+ cmds << close01;
+ QTest::newRow( "error03" ) << cmds << 0;
+ }
+ {
+ QList<FtpCommand> cmds;
+ cmds << connectToHost01;
+ cmds << login01;
+ cmds << close01;
+ cmds << login01;
+ QTest::newRow( "error04" ) << cmds << 0;
+ }
+}
+
+void tst_QFtp::commandSequence()
+{
+ QFETCH( QList<FtpCommand>, cmds );
+
+ ftp = newFtp();
+ QList<FtpCommand>::iterator it;
+ for ( it = cmds.begin(); it != cmds.end(); ++it ) {
+ switch ( (*it).cmd ) {
+ case QFtp::ConnectToHost:
+ {
+ QVERIFY( (*it).args.count() == 2 );
+ uint port;
+ bool portOk;
+ port = (*it).args[1].toUInt( &portOk );
+ QVERIFY( portOk );
+ ids << ftp->connectToHost( (*it).args[0], port );
+ }
+ break;
+ case QFtp::Login:
+ QVERIFY( (*it).args.count() == 2 );
+ ids << ftp->login( (*it).args[0], (*it).args[1] );
+ break;
+ case QFtp::Close:
+ QVERIFY( (*it).args.count() == 0 );
+ ids << ftp->close();
+ break;
+ default:
+ QFAIL( "Error in test: unexpected enum value" );
+ break;
+ }
+ }
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ QTEST( commandSequence_success, "success" );
+}
+
+void tst_QFtp::abort_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QByteArray>("uploadData");
+
+ QTest::newRow( "get_fluke01" ) << QtNetworkSettings::serverName() << (uint)21 << QString("qtest/bigfile") << QByteArray();
+ QTest::newRow( "get_fluke02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("qtest/rfc3252") << QByteArray();
+
+ // Qt/CE and Symbian test environment has to less memory for this test
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QByteArray bigData( 10*1024*1024, 0 );
+#else
+ QByteArray bigData( 1*1024*1024, 0 );
+#endif
+ bigData.fill( 'B' );
+ QTest::newRow( "put_fluke01" ) << QtNetworkSettings::serverName() << (uint)21 << QString("qtest/upload/abort_put") << bigData;
+}
+
+void tst_QFtp::abort()
+{
+ // In case you wonder where the abort() actually happens, look into
+ // tst_QFtp::dataTransferProgress
+ //
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+ QFETCH( QString, file );
+ QFETCH( QByteArray, uploadData );
+
+ QFtp::Command cmd;
+ if ( uploadData.size() == 0 )
+ cmd = QFtp::Get;
+ else
+ cmd = QFtp::Put;
+
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login() );
+ if ( cmd == QFtp::Get )
+ addCommand( cmd, ftp->get( file ) );
+ else
+ addCommand( cmd, ftp->put( uploadData, file ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ for(int time = 0; time <= uploadData.length() / 30000; time += 30) {
+ QTestEventLoop::instance().enterLoop( 50 );
+ if(ftp->currentCommand() == QFtp::None)
+ break;
+ }
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt it = resultMap.find( cmd );
+ QVERIFY( it != resultMap.end() );
+ // ### how to test the abort?
+ if ( it.value().success ) {
+ // The FTP server on fluke is sadly returning a success, even when
+ // the operation was aborted. So we have to use some heuristics.
+ if ( host == QtNetworkSettings::serverName() ) {
+ if ( cmd == QFtp::Get ) {
+ QVERIFY(bytesDone <= bytesTotal);
+ } else {
+ // put commands should always be aborted, since we use really
+ // big data
+ QVERIFY( bytesDone != bytesTotal );
+ }
+ } else {
+ // this could be tested by verifying that no more progress signals are emitted
+ QVERIFY(bytesDone <= bytesTotal);
+ }
+ } else {
+ QVERIFY( bytesDone != bytesTotal );
+ }
+
+ if ( cmd == QFtp::Put ) {
+ //////////////////////////////////////
+ // cleanup (i.e. remove the file)
+ init();
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login() );
+ addCommand( QFtp::Remove, ftp->remove( file ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ it = resultMap.find( QFtp::Remove );
+ QVERIFY( it != resultMap.end() );
+ QVERIFY( it.value().success == 1 );
+ }
+}
+
+void tst_QFtp::bytesAvailable_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<int>("type");
+ QTest::addColumn<qlonglong>("bytesAvailFinishedGet");
+ QTest::addColumn<qlonglong>("bytesAvailFinished");
+ QTest::addColumn<qlonglong>("bytesAvailDone");
+
+ QTest::newRow( "fluke01" ) << QtNetworkSettings::serverName() << QString("qtest/bigfile") << 0 << (qlonglong)519240 << (qlonglong)519240 << (qlonglong)519240;
+ QTest::newRow( "fluke02" ) << QtNetworkSettings::serverName() << QString("qtest/rfc3252") << 0 << (qlonglong)25962 << (qlonglong)25962 << (qlonglong)25962;
+
+ QTest::newRow( "fluke03" ) << QtNetworkSettings::serverName() << QString("qtest/bigfile") << 1 << (qlonglong)519240 << (qlonglong)0 << (qlonglong)0;
+ QTest::newRow( "fluke04" ) << QtNetworkSettings::serverName() << QString("qtest/rfc3252") << 1 << (qlonglong)25962 << (qlonglong)0 << (qlonglong)0;
+}
+
+void tst_QFtp::bytesAvailable()
+{
+ QFETCH( QString, host );
+ QFETCH( QString, file );
+ QFETCH( int, type );
+
+ ftp = newFtp();
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host ) );
+ addCommand( QFtp::Login, ftp->login() );
+ addCommand( QFtp::Get, ftp->get( file ) );
+ if ( type != 0 )
+ addCommand( QFtp::Close, ftp->close() );
+
+ QTestEventLoop::instance().enterLoop( 40 );
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt it = resultMap.find( QFtp::Get );
+ QVERIFY( it != resultMap.end() );
+ QVERIFY( it.value().success );
+
+ QFETCH(qlonglong, bytesAvailFinishedGet);
+ QCOMPARE(bytesAvailable_finishedGet, bytesAvailFinishedGet);
+
+ QFETCH(qlonglong, bytesAvailFinished);
+ QCOMPARE(bytesAvailable_finished, bytesAvailFinished);
+
+ QFETCH(qlonglong, bytesAvailDone);
+ QCOMPARE(bytesAvailable_done, bytesAvailDone);
+
+ ftp->readAll();
+ QVERIFY( ftp->bytesAvailable() == 0 );
+ delete ftp;
+ ftp = 0;
+}
+
+void tst_QFtp::activeMode()
+{
+ QFile file("tst_QFtp_activeMode_inittab");
+ file.open(QIODevice::ReadWrite);
+ QFtp ftp;
+ ftp.setTransferMode(QFtp::Active);
+ ftp.connectToHost(QtNetworkSettings::serverName(), 21);
+ ftp.login();
+ ftp.list();
+ ftp.get("/qtest/rfc3252.txt", &file);
+ connect(&ftp, SIGNAL(done(bool)), SLOT(activeModeDone(bool)));
+ QTestEventLoop::instance().enterLoop(900);
+ QFile::remove("tst_QFtp_activeMode_inittab");
+ QVERIFY(done_success == 1);
+
+}
+
+void tst_QFtp::activeModeDone(bool error)
+{
+ done_success = error ? -1 : 1;
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QFtp::proxy_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<QString>("user");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<QString>("dir");
+ QTest::addColumn<int>("success");
+ QTest::addColumn<QStringList>("entryNames"); // ### we should rather use a QList<QUrlInfo> here
+
+ QStringList flukeRoot;
+ flukeRoot << "qtest";
+ QStringList flukeQtest;
+ flukeQtest << "bigfile";
+ flukeQtest << "nonASCII";
+ flukeQtest << "rfc3252";
+ flukeQtest << "rfc3252.txt";
+ flukeQtest << "upload";
+
+ QTest::newRow( "proxy_relPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("qtest") << 1 << flukeQtest;
+ QTest::newRow( "proxy_relPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("qtest") << 1 << flukeQtest;
+
+ QTest::newRow( "proxy_absPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/qtest") << 1 << flukeQtest;
+ QTest::newRow( "proxy_absPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("/var/ftp/qtest") << 1 << flukeQtest;
+
+ QTest::newRow( "proxy_nonExist01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("foo") << 0 << QStringList();
+ QTest::newRow( "proxy_nonExist03" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/foo") << 0 << QStringList();
+}
+
+void tst_QFtp::proxy()
+{
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+ QFETCH( QString, user );
+ QFETCH( QString, password );
+ QFETCH( QString, dir );
+
+ ftp = newFtp();
+ addCommand( QFtp::SetProxy, ftp->setProxy( QtNetworkSettings::serverName(), 2121 ) );
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ addCommand( QFtp::Cd, ftp->cd( dir ) );
+ addCommand( QFtp::List, ftp->list() );
+
+ QTestEventLoop::instance().enterLoop( 50 );
+
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() ) {
+ QFAIL( "Network operation timed out" );
+ }
+
+ ResMapIt it = resultMap.find( QFtp::Cd );
+ QVERIFY( it != resultMap.end() );
+ QFETCH( int, success );
+ QCOMPARE( it.value().success, success );
+ QFETCH( QStringList, entryNames );
+ QCOMPARE( listInfo_i.count(), entryNames.count() );
+ for ( uint i=0; i < (uint) entryNames.count(); i++ ) {
+ QCOMPARE( listInfo_i[i].name(), entryNames[i] );
+ }
+}
+
+void tst_QFtp::binaryAscii()
+{
+ QString file = "asciifile%1.txt";
+
+ if(file.contains('%'))
+ file = file.arg(uniqueExtension);
+
+ QByteArray putData = "a line of text\r\n";
+
+ init();
+ ftp = newFtp();
+ addCommand(QFtp::ConnectToHost, ftp->connectToHost(QtNetworkSettings::serverName(), 21));
+ addCommand(QFtp::Login, ftp->login("ftptest", "password"));
+ addCommand(QFtp::Cd, ftp->cd("qtest/upload"));
+ addCommand(QFtp::Put, ftp->put(putData, file, QFtp::Ascii));
+ addCommand(QFtp::Close, ftp->close());
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt it = resultMap.find(QFtp::Put);
+ QVERIFY(it != resultMap.end());
+ QVERIFY(it.value().success);
+
+ QByteArray getData;
+ QBuffer getBuf(&getData);
+ getBuf.open(QBuffer::WriteOnly);
+
+ init();
+ ftp = newFtp();
+ addCommand(QFtp::ConnectToHost, ftp->connectToHost(QtNetworkSettings::serverName(), 21));
+ addCommand(QFtp::Login, ftp->login("ftptest", "password"));
+ addCommand(QFtp::Cd, ftp->cd("qtest/upload"));
+ addCommand(QFtp::Get, ftp->get(file, &getBuf, QFtp::Binary));
+ addCommand(QFtp::Close, ftp->close());
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt it2 = resultMap.find(QFtp::Get);
+ QVERIFY(it2 != resultMap.end());
+ QVERIFY(it2.value().success);
+ // most modern ftp servers leave the file as it is by default
+ // (and do not remove the windows line ending), the -1 below could be
+ // deleted in the future
+ QVERIFY(getData.size() == putData.size()-1);
+ //////////////////////////////////////////////////////////////////
+ // cleanup (i.e. remove the file) -- this also tests the remove command
+ init();
+ ftp = newFtp();
+ addCommand(QFtp::ConnectToHost, ftp->connectToHost(QtNetworkSettings::serverName(), 21));
+ addCommand(QFtp::Login, ftp->login("ftptest", "password"));
+ addCommand(QFtp::Cd, ftp->cd("qtest/upload"));
+ addCommand(QFtp::Remove, ftp->remove(file));
+ addCommand(QFtp::Close, ftp->close());
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ it = resultMap.find( QFtp::Remove );
+ QVERIFY( it != resultMap.end() );
+ QCOMPARE( it.value().success, 1 );
+
+ QVERIFY(!fileExists(QtNetworkSettings::serverName(), 21, "ftptest", "password", file));
+}
+
+
+// test QFtp::currentId() and QFtp::currentCommand()
+#define CURRENTCOMMAND_TEST \
+{ \
+ ResMapIt it; \
+ for ( it = resultMap.begin(); it != resultMap.end(); ++it ) { \
+ if ( it.value().id == ftp->currentId() ) { \
+ QVERIFY( it.key() == ftp->currentCommand() ); \
+ } \
+} \
+}
+
+void tst_QFtp::commandStarted( int id )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d:commandStarted( %d )", ftp->currentId(), id );
+#endif
+ // make sure that the commandStarted and commandFinished are nested correctly
+ QVERIFY( current_id == 0 );
+ current_id = id;
+
+ QVERIFY( !ids.isEmpty() );
+ QVERIFY( ids.first() == id );
+ if ( ids.count() > 1 ) {
+ QVERIFY( ftp->hasPendingCommands() );
+ } else {
+ QVERIFY( !ftp->hasPendingCommands() );
+ }
+
+ QVERIFY( ftp->currentId() == id );
+ QVERIFY( cur_state == ftp->state() );
+ CURRENTCOMMAND_TEST;
+
+ QVERIFY( ftp->error() == QFtp::NoError );
+}
+
+void tst_QFtp::commandFinished( int id, bool error )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d:commandFinished( %d, %d ) -- errorString: '%s'",
+ ftp->currentId(), id, (int)error, ftp->errorString().toLatin1().constData() );
+#endif
+ if ( ftp->currentCommand() == QFtp::Get ) {
+ bytesAvailable_finishedGet = ftp->bytesAvailable();
+ }
+ bytesAvailable_finished = ftp->bytesAvailable();
+
+ // make sure that the commandStarted and commandFinished are nested correctly
+ QVERIFY( current_id == id );
+ current_id = 0;
+
+ QVERIFY( !ids.isEmpty() );
+ QVERIFY( ids.first() == id );
+ if ( !error && ids.count() > 1) {
+ QVERIFY( ftp->hasPendingCommands() );
+ } else {
+ QVERIFY( !ftp->hasPendingCommands() );
+ }
+ if ( error ) {
+ QVERIFY( ftp->error() != QFtp::NoError );
+ ids.clear();
+ } else {
+ QVERIFY( ftp->error() == QFtp::NoError );
+ ids.pop_front();
+ }
+
+ QVERIFY( ftp->currentId() == id );
+ QVERIFY( cur_state == ftp->state() );
+ CURRENTCOMMAND_TEST;
+
+ if ( QTest::currentTestFunction() != QLatin1String("commandSequence") ) {
+ ResMapIt it = resultMap.find( ftp->currentCommand() );
+ QVERIFY( it != resultMap.end() );
+ QVERIFY( it.value().success == -1 );
+ if ( error )
+ it.value().success = 0;
+ else
+ it.value().success = 1;
+ }
+}
+
+void tst_QFtp::done( bool error )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d:done( %d )", ftp->currentId(), (int)error );
+#endif
+ bytesAvailable_done = ftp->bytesAvailable();
+
+ QVERIFY( ftp->currentId() == 0 );
+ QVERIFY( current_id == 0 );
+ QVERIFY( ids.isEmpty() );
+ QVERIFY( cur_state == ftp->state() );
+ QVERIFY( !ftp->hasPendingCommands() );
+
+ if ( QTest::currentTestFunction() == QLatin1String("commandSequence") ) {
+ QVERIFY( commandSequence_success == -1 );
+ if ( error )
+ commandSequence_success = 0;
+ else
+ commandSequence_success = 1;
+ }
+ QVERIFY( done_success == -1 );
+ if ( error ) {
+ QVERIFY( ftp->error() != QFtp::NoError );
+ done_success = 0;
+ } else {
+ QVERIFY( ftp->error() == QFtp::NoError );
+ done_success = 1;
+ }
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QFtp::stateChanged( int state )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d: stateChanged( %d )", ftp->currentId(), state );
+#endif
+ QCOMPARE( ftp->currentId(), current_id );
+ CURRENTCOMMAND_TEST;
+
+ QVERIFY( state != cur_state );
+ QCOMPARE( state, (int)ftp->state() );
+ if ( state != QFtp::Unconnected ) {
+ // make sure that the states are always emitted in the right order (for
+ // this, we assume an ordering on the enum values, which they have at
+ // the moment)
+ QVERIFY( cur_state < state );
+
+ // make sure that state changes are only emitted in response to certain
+ // commands
+ switch ( state ) {
+ case QFtp::HostLookup:
+ case QFtp::Connecting:
+ case QFtp::Connected:
+ QCOMPARE( (int)ftp->currentCommand(), (int)QFtp::ConnectToHost );
+ break;
+ case QFtp::LoggedIn:
+ QCOMPARE( (int)ftp->currentCommand(), (int)QFtp::Login );
+ break;
+ case QFtp::Closing:
+ QCOMPARE( (int)ftp->currentCommand(), (int)QFtp::Close );
+ break;
+ default:
+ QWARN( QString("Unexpected state '%1'").arg(state).toLatin1().constData() );
+ break;
+ }
+ }
+ cur_state = state;
+
+ if ( QTest::currentTestFunction() == QLatin1String("connectToHost") ) {
+ switch ( state ) {
+ case QFtp::HostLookup:
+ case QFtp::Connecting:
+ case QFtp::LoggedIn:
+ case QFtp::Closing:
+ // ignore
+ break;
+ case QFtp::Connected:
+ case QFtp::Unconnected:
+ QVERIFY( connectToHost_state == -1 );
+ connectToHost_state = state;
+ break;
+ default:
+ QWARN( QString("Unknown state '%1'").arg(state).toLatin1().constData() );
+ break;
+ }
+ } else if ( QTest::currentTestFunction() == QLatin1String("close") ) {
+ ResMapIt it = resultMap.find( QFtp::Close );
+ if ( it!=resultMap.end() && ftp->currentId()==it.value().id ) {
+ if ( state == QFtp::Closing ) {
+ QVERIFY( close_state == -1 );
+ close_state = state;
+ } else if ( state == QFtp::Unconnected ) {
+ QVERIFY( close_state == QFtp::Closing );
+ close_state = state;
+ }
+ }
+ } else if ( QTest::currentTestFunction() == QLatin1String("login") ) {
+ ResMapIt it = resultMap.find( QFtp::Login );
+ if ( it!=resultMap.end() && ftp->currentId()==it.value().id ) {
+ if ( state == QFtp::LoggedIn ) {
+ QVERIFY( login_state == -1 );
+ login_state = state;
+ }
+ }
+ }
+}
+
+void tst_QFtp::listInfo( const QUrlInfo &i )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d: listInfo( %s )", ftp->currentId(), i.name().toLatin1().constData() );
+#endif
+ QCOMPARE( ftp->currentId(), current_id );
+ if ( ids.count() > 1 ) {
+ QVERIFY( ftp->hasPendingCommands() );
+ } else {
+ QVERIFY( !ftp->hasPendingCommands() );
+ }
+ QVERIFY( cur_state == ftp->state() );
+ CURRENTCOMMAND_TEST;
+
+ if ( QTest::currentTestFunction()==QLatin1String("list") || QTest::currentTestFunction()==QLatin1String("cd") || QTest::currentTestFunction()==QLatin1String("proxy") || inFileDirExistsFunction ) {
+ ResMapIt it = resultMap.find( QFtp::List );
+ QVERIFY( it != resultMap.end() );
+ QVERIFY( ftp->currentId() == it.value().id );
+ listInfo_i << i;
+ }
+}
+
+void tst_QFtp::readyRead()
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d: readyRead(), bytesAvailable == %lu", ftp->currentId(), ftp->bytesAvailable() );
+#endif
+ QCOMPARE( ftp->currentId(), current_id );
+ if ( ids.count() > 1 ) {
+ QVERIFY( ftp->hasPendingCommands() );
+ } else {
+ QVERIFY( !ftp->hasPendingCommands() );
+ }
+ QVERIFY( cur_state == ftp->state() );
+ CURRENTCOMMAND_TEST;
+
+ if ( QTest::currentTestFunction() != QLatin1String("bytesAvailable") ) {
+ int oldSize = newData_ba.size();
+ qlonglong bytesAvail = ftp->bytesAvailable();
+ QByteArray ba = ftp->readAll();
+ QVERIFY( ba.size() == (int) bytesAvail );
+ newData_ba.resize( oldSize + ba.size() );
+ memcpy( newData_ba.data()+oldSize, ba.data(), ba.size() );
+
+ if ( bytesTotal != -1 ) {
+ QVERIFY( (int)newData_ba.size() <= bytesTotal );
+ }
+ QVERIFY( (int)newData_ba.size() == bytesDone );
+ }
+}
+
+void tst_QFtp::dataTransferProgress( qint64 done, qint64 total )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d: dataTransferProgress( %lli, %lli )", ftp->currentId(), done, total );
+#endif
+ QCOMPARE( ftp->currentId(), current_id );
+ if ( ids.count() > 1 ) {
+ QVERIFY( ftp->hasPendingCommands() );
+ } else {
+ QVERIFY( !ftp->hasPendingCommands() );
+ }
+ QVERIFY( cur_state == ftp->state() );
+ CURRENTCOMMAND_TEST;
+
+ if ( bytesTotal == bytesTotal_init ) {
+ bytesTotal = total;
+ } else {
+ QVERIFY( bytesTotal == total );
+ }
+
+ QVERIFY( bytesTotal != bytesTotal_init );
+ QVERIFY( bytesDone <= done );
+ bytesDone = done;
+ if ( bytesTotal != -1 ) {
+ QVERIFY( bytesDone <= bytesTotal );
+ }
+
+ if ( QTest::currentTestFunction() == QLatin1String("abort") ) {
+ // ### it would be nice if we could specify in our testdata when to do
+ // the abort
+ if ( done >= total/100000 ) {
+ if ( ids.count() != 1 ) {
+ // do abort only once
+ int tmpId = ids.first();
+ ids.clear();
+ ids << tmpId;
+ ftp->abort();
+ }
+ }
+ }
+}
+
+
+QFtp *tst_QFtp::newFtp()
+{
+ QFtp *nFtp = new QFtp( this );
+#ifndef QT_NO_BEARERMANAGEMENT
+ if (networkSessionExplicit) {
+ nFtp->setProperty("_q_networksession", QVariant::fromValue(networkSessionExplicit));
+ }
+#endif
+ connect( nFtp, SIGNAL(commandStarted(int)),
+ SLOT(commandStarted(int)) );
+ connect( nFtp, SIGNAL(commandFinished(int,bool)),
+ SLOT(commandFinished(int,bool)) );
+ connect( nFtp, SIGNAL(done(bool)),
+ SLOT(done(bool)) );
+ connect( nFtp, SIGNAL(stateChanged(int)),
+ SLOT(stateChanged(int)) );
+ connect( nFtp, SIGNAL(listInfo(const QUrlInfo&)),
+ SLOT(listInfo(const QUrlInfo&)) );
+ connect( nFtp, SIGNAL(readyRead()),
+ SLOT(readyRead()) );
+ connect( nFtp, SIGNAL(dataTransferProgress(qint64, qint64)),
+ SLOT(dataTransferProgress(qint64, qint64)) );
+
+ return nFtp;
+}
+
+void tst_QFtp::addCommand( QFtp::Command cmd, int id )
+{
+ ids << id;
+ CommandResult res;
+ res.id = id;
+ res.success = -1;
+ resultMap[ cmd ] = res;
+}
+
+bool tst_QFtp::fileExists( const QString &host, quint16 port, const QString &user, const QString &password, const QString &file, const QString &cdDir )
+{
+ init();
+ ftp = newFtp();
+ // ### make these tests work
+ if (ftp->currentId() != 0) {
+ qWarning("ftp->currentId() != 0");
+ return FALSE;
+ }
+
+ if (ftp->state() != QFtp::Unconnected) {
+ qWarning("ftp->state() != QFtp::Unconnected");
+ return FALSE;
+ }
+
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ if ( !cdDir.isNull() )
+ addCommand( QFtp::Cd, ftp->cd( cdDir ) );
+ addCommand( QFtp::List, ftp->list( file ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ inFileDirExistsFunction = TRUE;
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() ) {
+ // ### make this test work
+ qWarning("tst_QFtp::fileExists: Network operation timed out");
+ return FALSE;
+ }
+ inFileDirExistsFunction = FALSE;
+
+ ResMapIt it = resultMap.find( QFtp::ConnectToHost );
+ // ### make these tests work
+ if (it == resultMap.end()) {
+ qWarning("it != resultMap.end()");
+ return FALSE;
+ }
+
+ if (it.value().success == -1) {
+ qWarning("it.value().success != -1");
+ return FALSE;
+ }
+
+ if ( it.value().success == 1 ) {
+ for ( uint i=0; i < (uint) listInfo_i.count(); i++ ) {
+ if ( QFileInfo(listInfo_i[i].name()).fileName() == QFileInfo(file).fileName() )
+ return TRUE;
+ }
+ }
+
+ //this is not a good warning considering sometime this function is used to test that a file does not exist
+ //qWarning("file doesn't exist");
+ return FALSE;
+}
+
+bool tst_QFtp::dirExists( const QString &host, quint16 port, const QString &user, const QString &password, const QString &cdDir, const QString &dirToCreate )
+{
+ init();
+ ftp = newFtp();
+ // ### make these tests work
+ // QCOMPARE( ftp->currentId(), 0 );
+ // QCOMPARE( (int)ftp->state(), (int)QFtp::Unconnected );
+
+ addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
+ addCommand( QFtp::Login, ftp->login( user, password ) );
+ if ( dirToCreate.startsWith( "/" ) )
+ addCommand( QFtp::Cd, ftp->cd( dirToCreate ) );
+ else
+ addCommand( QFtp::Cd, ftp->cd( cdDir + "/" + dirToCreate ) );
+ addCommand( QFtp::Close, ftp->close() );
+
+ inFileDirExistsFunction = TRUE;
+ QTestEventLoop::instance().enterLoop( 30 );
+ delete ftp;
+ ftp = 0;
+ if ( QTestEventLoop::instance().timeout() ) {
+ // ### make this test work
+ // QFAIL( "Network operation timed out" );
+ qWarning("tst_QFtp::dirExists: Network operation timed out");
+ return FALSE;
+ }
+ inFileDirExistsFunction = FALSE;
+
+ ResMapIt it = resultMap.find( QFtp::Cd );
+ // ### make these tests work
+ // QVERIFY( it != resultMap.end() );
+ // QVERIFY( it.value().success != -1 );
+ return it.value().success == 1;
+}
+
+void tst_QFtp::doneSignal()
+{
+ QFtp ftp;
+ QSignalSpy spy(&ftp, SIGNAL(done(bool)));
+
+ ftp.connectToHost(QtNetworkSettings::serverName());
+ ftp.login("anonymous");
+ ftp.list();
+ ftp.close();
+
+ done_success = 0;
+ connect(&ftp, SIGNAL(done(bool)), &(QTestEventLoop::instance()), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(61);
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Network operation timed out");
+
+ QTest::qWait(200);
+
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.first().first().toBool(), false);
+}
+
+void tst_QFtp::queueMoreCommandsInDoneSlot()
+{
+ QSKIP("Task 127050 && 113966", SkipSingle);
+
+ QFtp ftp;
+ QSignalSpy doneSpy(&ftp, SIGNAL(done(bool)));
+ QSignalSpy commandFinishedSpy(&ftp, SIGNAL(commandFinished(int, bool)));
+
+ this->ftp = &ftp;
+ connect(&ftp, SIGNAL(done(bool)), this, SLOT(cdUpSlot(bool)));
+
+ ftp.connectToHost("ftp.qt.nokia.com");
+ ftp.login();
+ ftp.cd("qt");
+ ftp.rmdir("qtest-removedir-noexist");
+
+ while ( ftp.hasPendingCommands() || ftp.currentCommand() != QFtp::None ) {
+ QCoreApplication::instance()->processEvents(QEventLoop::AllEvents
+ | QEventLoop::WaitForMoreEvents);
+ }
+
+ QCOMPARE(doneSpy.count(), 2);
+ QCOMPARE(doneSpy.first().first().toBool(), true);
+ QCOMPARE(doneSpy.last().first().toBool(), false);
+
+ QCOMPARE(commandFinishedSpy.count(), 6);
+ int firstId = commandFinishedSpy.at(0).at(0).toInt();
+ QCOMPARE(commandFinishedSpy.at(0).at(1).toBool(), false);
+ QCOMPARE(commandFinishedSpy.at(1).at(0).toInt(), firstId + 1);
+ QCOMPARE(commandFinishedSpy.at(1).at(1).toBool(), false);
+ QCOMPARE(commandFinishedSpy.at(2).at(0).toInt(), firstId + 2);
+ QCOMPARE(commandFinishedSpy.at(2).at(1).toBool(), false);
+ QCOMPARE(commandFinishedSpy.at(3).at(0).toInt(), firstId + 3);
+ QCOMPARE(commandFinishedSpy.at(3).at(1).toBool(), true);
+ QCOMPARE(commandFinishedSpy.at(4).at(0).toInt(), firstId + 4);
+ QCOMPARE(commandFinishedSpy.at(4).at(1).toBool(), false);
+ QCOMPARE(commandFinishedSpy.at(5).at(0).toInt(), firstId + 5);
+ QCOMPARE(commandFinishedSpy.at(5).at(1).toBool(), false);
+
+ this->ftp = 0;
+}
+
+void tst_QFtp::cdUpSlot(bool error)
+{
+ if (error) {
+ ftp->cd("..");
+ ftp->cd("qt");
+ }
+}
+
+void tst_QFtp::qtbug7359Crash()
+{
+ QFtp ftp;
+ ftp.connectToHost("127.0.0.1");
+
+ QTime t;
+ int elapsed;
+
+ t.start();
+ while ((elapsed = t.elapsed()) < 200)
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 200 - elapsed);
+
+ ftp.close();
+ t.restart();
+ while ((elapsed = t.elapsed()) < 1000)
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000 - elapsed);
+
+ ftp.connectToHost("127.0.0.1");
+
+ t.restart();
+ while ((elapsed = t.elapsed()) < 2000)
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 2000 - elapsed);
+}
+
+QTEST_MAIN(tst_QFtp)
+
+#include "tst_qftp.moc"
diff --git a/tests/auto/qhttp/.gitattributes b/tests/auto/network/access/qhttp/.gitattributes
index e04709aa2e..e04709aa2e 100644
--- a/tests/auto/qhttp/.gitattributes
+++ b/tests/auto/network/access/qhttp/.gitattributes
diff --git a/tests/auto/qhttp/.gitignore b/tests/auto/network/access/qhttp/.gitignore
index 00c1f492cd..00c1f492cd 100644
--- a/tests/auto/qhttp/.gitignore
+++ b/tests/auto/network/access/qhttp/.gitignore
diff --git a/tests/auto/qhttp/dummyserver.h b/tests/auto/network/access/qhttp/dummyserver.h
index 7c14ae2f14..7c14ae2f14 100644
--- a/tests/auto/qhttp/dummyserver.h
+++ b/tests/auto/network/access/qhttp/dummyserver.h
diff --git a/tests/auto/qhttp/qhttp.pro b/tests/auto/network/access/qhttp/qhttp.pro
index f01f60f3d7..f01f60f3d7 100644
--- a/tests/auto/qhttp/qhttp.pro
+++ b/tests/auto/network/access/qhttp/qhttp.pro
diff --git a/tests/auto/qhttp/rfc3252.txt b/tests/auto/network/access/qhttp/rfc3252.txt
index b80c61bf0a..b80c61bf0a 100644
--- a/tests/auto/qhttp/rfc3252.txt
+++ b/tests/auto/network/access/qhttp/rfc3252.txt
diff --git a/tests/auto/qhttp/trolltech b/tests/auto/network/access/qhttp/trolltech
index c155360e8d..c155360e8d 100644
--- a/tests/auto/qhttp/trolltech
+++ b/tests/auto/network/access/qhttp/trolltech
diff --git a/tests/auto/network/access/qhttp/tst_qhttp.cpp b/tests/auto/network/access/qhttp/tst_qhttp.cpp
new file mode 100644
index 0000000000..8875232714
--- /dev/null
+++ b/tests/auto/network/access/qhttp/tst_qhttp.cpp
@@ -0,0 +1,1576 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qbuffer.h>
+#include <qcoreapplication.h>
+#include <qfile.h>
+#include <qhostinfo.h>
+#include <qhttp.h>
+#include <qlist.h>
+#include <qpointer.h>
+#include <qtcpsocket.h>
+#include <qtcpserver.h>
+#include <qauthenticator.h>
+#include <QNetworkProxy>
+#ifndef QT_NO_OPENSSL
+# include <qsslsocket.h>
+#endif
+
+#include "../../../network-settings.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+// And underlying Open C have application private dir in default search path
+#define SRCDIR ""
+#endif
+
+Q_DECLARE_METATYPE(QHttpResponseHeader)
+
+class tst_QHttp : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QHttp();
+ virtual ~tst_QHttp();
+
+
+public slots:
+ void initTestCase_data();
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void constructing();
+ void invalidRequests();
+ void get_data();
+ void get();
+ void head_data();
+ void head();
+ void post_data();
+ void post();
+ void request_data();
+ void request();
+ void authorization_data();
+ void authorization();
+ void proxy_data();
+ void proxy();
+ void proxy2();
+ void proxy3();
+ void postAuthNtlm();
+ void proxyAndSsl();
+ void cachingProxyAndSsl();
+ void reconnect();
+ void setSocket();
+ void unexpectedRemoteClose();
+ void pctEncodedPath();
+ void caseInsensitiveKeys();
+ void emptyBodyInReply();
+ void abortInReadyRead();
+ void abortInResponseHeaderReceived();
+ void nestedEventLoop();
+ void connectionClose();
+
+protected slots:
+ void stateChanged( int );
+ void responseHeaderReceived( const QHttpResponseHeader & );
+ void readyRead( const QHttpResponseHeader& );
+ void dataSendProgress( int, int );
+ void dataReadProgress( int , int );
+
+ void requestStarted( int );
+ void requestFinished( int, bool );
+ void done( bool );
+
+ void reconnect_state(int state);
+ void proxy2_slot();
+ void nestedEventLoop_slot(int id);
+
+ void abortSender();
+ void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth);
+
+private:
+ QHttp *newHttp(bool withAuth = false);
+ void addRequest( QHttpRequestHeader, int );
+ bool headerAreEqual( const QHttpHeader&, const QHttpHeader& );
+
+ QHttp *http;
+
+ struct RequestResult
+ {
+ QHttpRequestHeader req;
+ QHttpResponseHeader resp;
+ int success;
+ };
+ QMap< int, RequestResult > resultMap;
+ typedef QMap<int,RequestResult>::Iterator ResMapIt;
+ QList<int> ids; // helper to make sure that all expected signals are emitted
+
+ int current_id;
+ int cur_state;
+ int done_success;
+
+ QByteArray readyRead_ba;
+
+ int bytesTotalSend;
+ int bytesDoneSend;
+ int bytesTotalRead;
+ int bytesDoneRead;
+
+ int getId;
+ int headId;
+ int postId;
+
+ int reconnect_state_connect_count;
+
+ bool connectionWithAuth;
+ bool proxyAuthCalled;
+};
+
+class ClosingServer: public QTcpServer
+{
+ Q_OBJECT
+public:
+ ClosingServer()
+ {
+ connect(this, SIGNAL(newConnection()), SLOT(handleConnection()));
+ listen();
+ }
+
+public slots:
+ void handleConnection()
+ {
+ delete nextPendingConnection();
+ }
+};
+
+//#define DUMP_SIGNALS
+
+const int bytesTotal_init = -10;
+const int bytesDone_init = -10;
+
+tst_QHttp::tst_QHttp()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+tst_QHttp::~tst_QHttp()
+{
+}
+
+void tst_QHttp::initTestCase_data()
+{
+ QTest::addColumn<bool>("setProxy");
+ QTest::addColumn<int>("proxyType");
+
+ QTest::newRow("WithoutProxy") << false << 0;
+ QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy);
+}
+
+void tst_QHttp::initTestCase()
+{
+}
+
+void tst_QHttp::cleanupTestCase()
+{
+}
+
+void tst_QHttp::init()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
+ }
+ }
+
+ http = 0;
+
+ resultMap.clear();
+ ids.clear();
+
+ current_id = 0;
+ cur_state = QHttp::Unconnected;
+ done_success = -1;
+
+ readyRead_ba = QByteArray();
+
+ getId = -1;
+ headId = -1;
+ postId = -1;
+}
+
+void tst_QHttp::cleanup()
+{
+ delete http;
+ http = 0;
+
+ QCoreApplication::processEvents();
+
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
+ }
+}
+
+void tst_QHttp::constructing()
+{
+ //QHeader
+ {
+ QHttpRequestHeader header;
+ header.addValue("key1", "val1");
+ header.addValue("key2", "val2");
+ header.addValue("key1", "val3");
+ QCOMPARE(header.values().size(), 3);
+ QCOMPARE(header.allValues("key1").size(), 2);
+ QVERIFY(header.hasKey("key2"));
+ QCOMPARE(header.keys().count(), 2);
+
+ }
+
+ {
+ QHttpResponseHeader header(200);
+ }
+}
+
+void tst_QHttp::invalidRequests()
+{
+ QHttp http;
+ http.setHost("localhost"); // we will not actually connect
+
+ QTest::ignoreMessage(QtWarningMsg, "QHttp: empty path requested is invalid -- using '/'");
+ http.get(QString());
+
+ QTest::ignoreMessage(QtWarningMsg, "QHttp: empty path requested is invalid -- using '/'");
+ http.head(QString());
+
+ QTest::ignoreMessage(QtWarningMsg, "QHttp: empty path requested is invalid -- using '/'");
+ http.post(QString(), QByteArray());
+
+ QTest::ignoreMessage(QtWarningMsg, "QHttp: empty path requested is invalid -- using '/'");
+ http.request(QHttpRequestHeader("PROPFIND", QString()));
+}
+
+void tst_QHttp::get_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<int>("success");
+ QTest::addColumn<int>("statusCode");
+ QTest::addColumn<QByteArray>("res");
+ QTest::addColumn<bool>("useIODevice");
+
+ // ### move this into external testdata
+ QFile file( SRCDIR "rfc3252.txt" );
+ QVERIFY( file.open( QIODevice::ReadOnly ) );
+ QByteArray rfc3252 = file.readAll();
+ file.close();
+
+ file.setFileName( SRCDIR "trolltech" );
+ QVERIFY( file.open( QIODevice::ReadOnly ) );
+ QByteArray trolltech = file.readAll();
+ file.close();
+
+ // test the two get() modes in one routine
+ for ( int i=0; i<2; i++ ) {
+ QTest::newRow(QString("path_01_%1").arg(i).toLatin1()) << QtNetworkSettings::serverName() << 80u
+ << QString("/qtest/rfc3252.txt") << 1 << 200 << rfc3252 << (bool)(i==1);
+ QTest::newRow( QString("path_02_%1").arg(i).toLatin1() ) << QString("www.ietf.org") << 80u
+ << QString("/rfc/rfc3252.txt") << 1 << 200 << rfc3252 << (bool)(i==1);
+
+ QTest::newRow( QString("uri_01_%1").arg(i).toLatin1() ) << QtNetworkSettings::serverName() << 80u
+ << QString("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt") << 1 << 200 << rfc3252 << (bool)(i==1);
+ QTest::newRow( QString("uri_02_%1").arg(i).toLatin1() ) << "www.ietf.org" << 80u
+ << QString("http://www.ietf.org/rfc/rfc3252.txt") << 1 << 200 << rfc3252 << (bool)(i==1);
+
+ QTest::newRow( QString("fail_01_%1").arg(i).toLatin1() ) << QString("this-host-will-not-exist.") << 80u
+ << QString("/qtest/rfc3252.txt") << 0 << 0 << QByteArray() << (bool)(i==1);
+
+ QTest::newRow( QString("failprot_01_%1").arg(i).toLatin1() ) << QtNetworkSettings::serverName() << 80u
+ << QString("/t") << 1 << 404 << QByteArray() << (bool)(i==1);
+ QTest::newRow( QString("failprot_02_%1").arg(i).toLatin1() ) << QtNetworkSettings::serverName() << 80u
+ << QString("qtest/rfc3252.txt") << 1 << 400 << QByteArray() << (bool)(i==1);
+
+ // qt.nokia.com/doc uses transfer-encoding=chunked
+ /* qt.nokia.com/doc no longer seams to be using chuncked encodig.
+ QTest::newRow( QString("chunked_01_%1").arg(i).toLatin1() ) << QString("test.troll.no") << 80u
+ << QString("/") << 1 << 200 << trolltech << (bool)(i==1);
+ */
+ QTest::newRow( QString("chunked_02_%1").arg(i).toLatin1() ) << QtNetworkSettings::serverName() << 80u
+ << QString("/qtest/cgi-bin/rfc.cgi") << 1 << 200 << rfc3252 << (bool)(i==1);
+ }
+}
+
+void tst_QHttp::get()
+{
+ // for the overload that takes a QIODevice
+ QByteArray buf_ba;
+ QBuffer buf( &buf_ba );
+
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+ QFETCH( QString, path );
+ QFETCH( bool, useIODevice );
+
+ http = newHttp();
+ QCOMPARE( http->currentId(), 0 );
+ QCOMPARE( (int)http->state(), (int)QHttp::Unconnected );
+
+ addRequest( QHttpRequestHeader(), http->setHost( host, port ) );
+ if ( useIODevice ) {
+ buf.open( QIODevice::WriteOnly );
+ getId = http->get( path, &buf );
+ } else {
+ getId = http->get( path );
+ }
+ addRequest( QHttpRequestHeader(), getId );
+
+ QTestEventLoop::instance().enterLoop( 50 );
+
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt res = resultMap.find( getId );
+ QVERIFY( res != resultMap.end() );
+ if ( res.value().success!=1 && host=="www.ietf.org" ) {
+ // The nightly tests fail from time to time. In order to make them more
+ // stable, add some debug output that might help locate the problem (I
+ // can't reproduce the problem in the non-nightly builds).
+ qDebug( "Error %d: %s", http->error(), http->errorString().toLatin1().constData() );
+ }
+ QTEST( res.value().success, "success" );
+ if ( res.value().success ) {
+ QTEST( res.value().resp.statusCode(), "statusCode" );
+
+ QFETCH( QByteArray, res );
+ if ( res.count() > 0 ) {
+ if ( useIODevice ) {
+ QCOMPARE(buf_ba, res);
+ if ( bytesDoneRead != bytesDone_init )
+ QVERIFY( (int)buf_ba.size() == bytesDoneRead );
+ } else {
+ QCOMPARE(readyRead_ba, res);
+ if ( bytesDoneRead != bytesDone_init )
+ QVERIFY( (int)readyRead_ba.size() == bytesDoneRead );
+ }
+ }
+ QVERIFY( bytesTotalRead != bytesTotal_init );
+ if ( bytesTotalRead > 0 )
+ QVERIFY( bytesDoneRead == bytesTotalRead );
+ } else {
+ QVERIFY( !res.value().resp.isValid() );
+ }
+}
+
+void tst_QHttp::head_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<uint>("port");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<int>("success");
+ QTest::addColumn<int>("statusCode");
+ QTest::addColumn<uint>("contentLength");
+
+ QTest::newRow( "path_01" ) << QtNetworkSettings::serverName() << 80u
+ << QString("/qtest/rfc3252.txt") << 1 << 200 << 25962u;
+
+ QTest::newRow( "path_02" ) << QString("www.ietf.org") << 80u
+ << QString("/rfc/rfc3252.txt") << 1 << 200 << 25962u;
+
+ QTest::newRow( "uri_01" ) << QtNetworkSettings::serverName() << 80u
+ << QString("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt") << 1 << 200 << 25962u;
+
+ QTest::newRow( "uri_02" ) << QString("www.ietf.org") << 80u
+ << QString("http://www.ietf.org/rfc/rfc3252.txt") << 1 << 200 << 25962u;
+
+ QTest::newRow( "fail_01" ) << QString("this-host-will-not-exist.") << 80u
+ << QString("/qtest/rfc3252.txt") << 0 << 0 << 0u;
+
+ QTest::newRow( "failprot_01" ) << QtNetworkSettings::serverName() << 80u
+ << QString("/t") << 1 << 404 << 0u;
+
+ QTest::newRow( "failprot_02" ) << QtNetworkSettings::serverName() << 80u
+ << QString("qtest/rfc3252.txt") << 1 << 400 << 0u;
+
+ /* qt.nokia.com/doc no longer seams to be using chuncked encodig.
+ QTest::newRow( "chunked_01" ) << QString("qt.nokia.com/doc") << 80u
+ << QString("/index.html") << 1 << 200 << 0u;
+ */
+ QTest::newRow( "chunked_02" ) << QtNetworkSettings::serverName() << 80u
+ << QString("/qtest/cgi-bin/rfc.cgi") << 1 << 200 << 0u;
+}
+
+void tst_QHttp::head()
+{
+ QFETCH( QString, host );
+ QFETCH( uint, port );
+ QFETCH( QString, path );
+
+ http = newHttp();
+ QCOMPARE( http->currentId(), 0 );
+ QCOMPARE( (int)http->state(), (int)QHttp::Unconnected );
+
+ addRequest( QHttpRequestHeader(), http->setHost( host, port ) );
+ headId = http->head( path );
+ addRequest( QHttpRequestHeader(), headId );
+
+ QTestEventLoop::instance().enterLoop( 30 );
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt res = resultMap.find( headId );
+ QVERIFY( res != resultMap.end() );
+ if ( res.value().success!=1 && host=="www.ietf.org" ) {
+ // The nightly tests fail from time to time. In order to make them more
+ // stable, add some debug output that might help locate the problem (I
+ // can't reproduce the problem in the non-nightly builds).
+ qDebug( "Error %d: %s", http->error(), http->errorString().toLatin1().constData() );
+ }
+ QTEST( res.value().success, "success" );
+ if ( res.value().success ) {
+ QTEST( res.value().resp.statusCode(), "statusCode" );
+ QTEST( res.value().resp.contentLength(), "contentLength" );
+
+ QCOMPARE( (uint)readyRead_ba.size(), 0u );
+ QVERIFY( bytesTotalRead == bytesTotal_init );
+ QVERIFY( bytesDoneRead == bytesDone_init );
+ } else {
+ QVERIFY( !res.value().resp.isValid() );
+ }
+}
+
+void tst_QHttp::post_data()
+{
+ QTest::addColumn<QString>("source");
+ QTest::addColumn<bool>("useIODevice");
+ QTest::addColumn<bool>("useProxy");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<int>("port");
+ QTest::addColumn<bool>("ssl");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QByteArray>("result");
+
+ QByteArray md5sum;
+ md5sum = "d41d8cd98f00b204e9800998ecf8427e";
+ QTest::newRow("empty-data")
+ << QString() << false << false
+ << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
+ QTest::newRow("empty-device")
+ << QString() << true << false
+ << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
+ QTest::newRow("proxy-empty-data")
+ << QString() << false << true
+ << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
+
+ md5sum = "b3e32ac459b99d3f59318f3ac31e4bee";
+ QTest::newRow("data") << "rfc3252.txt" << false << false
+ << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi"
+ << md5sum;
+ QTest::newRow("device") << "rfc3252.txt" << true << false
+ << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi"
+ << md5sum;
+ QTest::newRow("proxy-data") << "rfc3252.txt" << false << true
+ << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi"
+ << md5sum;
+
+#ifndef QT_NO_OPENSSL
+ md5sum = "d41d8cd98f00b204e9800998ecf8427e";
+ QTest::newRow("empty-data-ssl")
+ << QString() << false << false
+ << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
+ QTest::newRow("empty-device-ssl")
+ << QString() << true << false
+ << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
+ QTest::newRow("proxy-empty-data-ssl")
+ << QString() << false << true
+ << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
+ md5sum = "b3e32ac459b99d3f59318f3ac31e4bee";
+ QTest::newRow("data-ssl") << "rfc3252.txt" << false << false
+ << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi"
+ << md5sum;
+ QTest::newRow("device-ssl") << "rfc3252.txt" << true << false
+ << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi"
+ << md5sum;
+ QTest::newRow("proxy-data-ssl") << "rfc3252.txt" << false << true
+ << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi"
+ << md5sum;
+#endif
+
+ // the following test won't work. See task 185996
+/*
+ QTest::newRow("proxy-device") << "rfc3252.txt" << true << true
+ << QtNetworkSettings::serverName() << 80 << "/qtest/cgi-bin/md5sum.cgi"
+ << md5sum;
+*/
+}
+
+void tst_QHttp::post()
+{
+ QFETCH(QString, source);
+ QFETCH(bool, useIODevice);
+ QFETCH(bool, useProxy);
+ QFETCH(QString, host);
+ QFETCH(int, port);
+ QFETCH(bool, ssl);
+ QFETCH(QString, path);
+
+ http = newHttp(useProxy);
+#ifndef QT_NO_OPENSSL
+ QObject::connect(http, SIGNAL(sslErrors(const QList<QSslError> &)),
+ http, SLOT(ignoreSslErrors()));
+#endif
+ QCOMPARE(http->currentId(), 0);
+ QCOMPARE((int)http->state(), (int)QHttp::Unconnected);
+ if (useProxy)
+ addRequest(QHttpRequestHeader(), http->setProxy(QtNetworkSettings::serverName(), 3129));
+ addRequest(QHttpRequestHeader(), http->setHost(host, (ssl ? QHttp::ConnectionModeHttps : QHttp::ConnectionModeHttp), port));
+
+ // add the POST request
+ QFile file(SRCDIR + source);
+ QBuffer emptyBuffer;
+ QIODevice *dev;
+ if (!source.isEmpty()) {
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ dev = &file;
+ } else {
+ emptyBuffer.open(QIODevice::ReadOnly);
+ dev = &emptyBuffer;
+ }
+
+ if (useIODevice)
+ postId = http->post(path, dev);
+ else
+ postId = http->post(path, dev->readAll());
+ addRequest(QHttpRequestHeader(), postId);
+
+ // run request
+ connect(http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ QTestEventLoop::instance().enterLoop( 30 );
+
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt res = resultMap.find(postId);
+ QVERIFY(res != resultMap.end());
+ QVERIFY(res.value().success);
+ QCOMPARE(res.value().resp.statusCode(), 200);
+ QTEST(readyRead_ba.trimmed(), "result");
+}
+
+void tst_QHttp::request_data()
+{
+ QTest::addColumn<QString>("source");
+ QTest::addColumn<bool>("useIODevice");
+ QTest::addColumn<bool>("useProxy");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<int>("port");
+ QTest::addColumn<QString>("method");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QByteArray>("result");
+
+ QFile source(SRCDIR "rfc3252.txt");
+ if (!source.open(QIODevice::ReadOnly))
+ return;
+
+ QByteArray contents = source.readAll();
+ QByteArray md5sum = QCryptographicHash::hash(contents, QCryptographicHash::Md5).toHex() + '\n';
+ QByteArray emptyMd5sum = "d41d8cd98f00b204e9800998ecf8427e\n";
+
+ QTest::newRow("head") << QString() << false << false << QtNetworkSettings::serverName() << 80
+ << "HEAD" << "/qtest/rfc3252.txt"
+ << QByteArray();
+ QTest::newRow("get") << QString() << false << false << QtNetworkSettings::serverName() << 80
+ << "GET" << "/qtest/rfc3252.txt"
+ << contents;
+ QTest::newRow("post-empty-data") << QString() << false << false
+ << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
+ << emptyMd5sum;
+ QTest::newRow("post-empty-device") << QString() << true << false
+ << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
+ << emptyMd5sum;
+ QTest::newRow("post-data") << "rfc3252.txt" << false << false
+ << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
+ << md5sum;
+ QTest::newRow("post-device") << "rfc3252.txt" << true << false
+ << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
+ << md5sum;
+
+ QTest::newRow("proxy-head") << QString() << false << true << QtNetworkSettings::serverName() << 80
+ << "HEAD" << "/qtest/rfc3252.txt"
+ << QByteArray();
+ QTest::newRow("proxy-get") << QString() << false << true << QtNetworkSettings::serverName() << 80
+ << "GET" << "/qtest/rfc3252.txt"
+ << contents;
+ QTest::newRow("proxy-post-empty-data") << QString() << false << true
+ << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
+ << emptyMd5sum;
+ QTest::newRow("proxy-post-data") << "rfc3252.txt" << false << true
+ << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
+ << md5sum;
+ // the following test won't work. See task 185996
+/*
+ QTest::newRow("proxy-post-device") << "rfc3252.txt" << true << true
+ << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
+ << md5sum;
+*/
+}
+
+void tst_QHttp::request()
+{
+ QFETCH(QString, source);
+ QFETCH(bool, useIODevice);
+ QFETCH(bool, useProxy);
+ QFETCH(QString, host);
+ QFETCH(int, port);
+ QFETCH(QString, method);
+ QFETCH(QString, path);
+
+ http = newHttp(useProxy);
+ QCOMPARE(http->currentId(), 0);
+ QCOMPARE((int)http->state(), (int)QHttp::Unconnected);
+ if (useProxy)
+ addRequest(QHttpRequestHeader(), http->setProxy(QtNetworkSettings::serverName(), 3129));
+ addRequest(QHttpRequestHeader(), http->setHost(host, port));
+
+ QFile file(SRCDIR + source);
+ QBuffer emptyBuffer;
+ QIODevice *dev;
+ if (!source.isEmpty()) {
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ dev = &file;
+ } else {
+ emptyBuffer.open(QIODevice::ReadOnly);
+ dev = &emptyBuffer;
+ }
+
+ // prepare the request
+ QHttpRequestHeader request;
+ request.setRequest(method, path, 1,1);
+ request.addValue("Host", host);
+ int *theId;
+
+ if (method == "POST")
+ theId = &postId;
+ else if (method == "GET")
+ theId = &getId;
+ else if (method == "HEAD")
+ theId = &headId;
+ else
+ QFAIL("You're lazy! Please implement your test!");
+
+ // now send the request
+ if (useIODevice)
+ *theId = http->request(request, dev);
+ else
+ *theId = http->request(request, dev->readAll());
+ addRequest(QHttpRequestHeader(), *theId);
+
+ // run request
+ connect(http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ QTestEventLoop::instance().enterLoop( 30 );
+
+ if ( QTestEventLoop::instance().timeout() )
+ QFAIL( "Network operation timed out" );
+
+ ResMapIt res = resultMap.find(*theId);
+ QVERIFY(res != resultMap.end());
+ QVERIFY(res.value().success);
+ QCOMPARE(res.value().resp.statusCode(), 200);
+ QTEST(readyRead_ba, "result");
+}
+
+void tst_QHttp::authorization_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("user");
+ QTest::addColumn<QString>("pass");
+ QTest::addColumn<int>("result");
+
+ QTest::newRow("correct password") << QtNetworkSettings::serverName()
+ << QString::fromLatin1("/qtest/rfcs-auth/index.html")
+ << QString::fromLatin1("httptest")
+ << QString::fromLatin1("httptest")
+ << 200;
+
+ QTest::newRow("no password") << QtNetworkSettings::serverName()
+ << QString::fromLatin1("/qtest/rfcs-auth/index.html")
+ << QString::fromLatin1("")
+ << QString::fromLatin1("")
+ << 401;
+
+ QTest::newRow("wrong password") << QtNetworkSettings::serverName()
+ << QString::fromLatin1("/qtest/rfcs-auth/index.html")
+ << QString::fromLatin1("maliciu0s")
+ << QString::fromLatin1("h4X0r")
+ << 401;
+}
+
+void tst_QHttp::authorization()
+{
+ QFETCH(QString, host);
+ QFETCH(QString, path);
+ QFETCH(QString, user);
+ QFETCH(QString, pass);
+ QFETCH(int, result);
+
+ QEventLoop loop;
+
+ QHttp http;
+ connect(&http, SIGNAL(done(bool)), &loop, SLOT(quit()));
+
+ if (!user.isEmpty())
+ http.setUser(user, pass);
+ http.setHost(host);
+ int id = http.get(path);
+ Q_UNUSED(id);
+
+ QTimer::singleShot(5000, &loop, SLOT(quit()));
+ loop.exec();
+
+ QCOMPARE(http.lastResponse().statusCode(), result);
+}
+
+void tst_QHttp::proxy_data()
+{
+ QTest::addColumn<QString>("proxyhost");
+ QTest::addColumn<int>("port");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("proxyuser");
+ QTest::addColumn<QString>("proxypass");
+
+ QTest::newRow("qt-test-server") << QtNetworkSettings::serverName() << 3128
+ << QString::fromLatin1("qt.nokia.com") << QString::fromLatin1("/")
+ << QString::fromLatin1("") << QString::fromLatin1("");
+ QTest::newRow("qt-test-server pct") << QtNetworkSettings::serverName() << 3128
+ << QString::fromLatin1("qt.nokia.com") << QString::fromLatin1("/%64eveloper")
+ << QString::fromLatin1("") << QString::fromLatin1("");
+ QTest::newRow("qt-test-server-basic") << QtNetworkSettings::serverName() << 3129
+ << QString::fromLatin1("qt.nokia.com") << QString::fromLatin1("/")
+ << QString::fromLatin1("qsockstest") << QString::fromLatin1("password");
+
+#if 0
+ // NTLM requires sending the same request three times for it to work
+ // the tst_QHttp class is too strict to handle the byte counts sent by dataSendProgress
+ // So don't run this test:
+ QTest::newRow("qt-test-server-ntlm") << QtNetworkSettings::serverName() << 3130
+ << QString::fromLatin1("qt.nokia.com") << QString::fromLatin1("/")
+ << QString::fromLatin1("qsockstest") << QString::fromLatin1("password");
+#endif
+}
+
+void tst_QHttp::proxy()
+{
+ QFETCH(QString, proxyhost);
+ QFETCH(int, port);
+ QFETCH(QString, host);
+ QFETCH(QString, path);
+ QFETCH(QString, proxyuser);
+ QFETCH(QString, proxypass);
+
+ http = newHttp(!proxyuser.isEmpty());
+
+ QCOMPARE(http->currentId(), 0);
+ QCOMPARE((int)http->state(), (int)QHttp::Unconnected);
+
+ addRequest(QHttpRequestHeader(), http->setProxy(proxyhost, port, proxyuser, proxypass));
+ addRequest(QHttpRequestHeader(), http->setHost(host));
+ getId = http->get(path);
+ addRequest(QHttpRequestHeader(), getId);
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Network operation timed out");
+
+ ResMapIt res = resultMap.find(getId);
+ QVERIFY(res != resultMap.end());
+ QVERIFY(res.value().success);
+ QCOMPARE(res.value().resp.statusCode(), 200);
+}
+
+void tst_QHttp::proxy2()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ readyRead_ba.clear();
+
+ QHttp http;
+ http.setProxy(QtNetworkSettings::serverName(), 3128);
+ http.setHost(QtNetworkSettings::serverName());
+ http.get("/index.html");
+ http.get("/index.html");
+
+ connect(&http, SIGNAL(requestFinished(int, bool)),
+ this, SLOT(proxy2_slot()));
+ QTestEventLoop::instance().enterLoop(30);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(readyRead_ba.count("Welcome to qt-test-server"), 2);
+
+ readyRead_ba.clear();
+}
+
+void tst_QHttp::proxy2_slot()
+{
+ QHttp *http = static_cast<QHttp *>(sender());
+ readyRead_ba.append(http->readAll());
+ if (!http->hasPendingRequests())
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QHttp::proxy3()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ readyRead_ba.clear();
+
+ QTcpSocket socket;
+ socket.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128));
+
+ QHttp http;
+ http.setSocket(&socket);
+ http.setHost(QtNetworkSettings::serverName());
+ http.get("/index.html");
+ http.get("/index.html");
+
+ connect(&http, SIGNAL(requestFinished(int, bool)),
+ this, SLOT(proxy2_slot()));
+ QTestEventLoop::instance().enterLoop(30);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(readyRead_ba.count("Welcome to qt-test-server"), 2);
+
+ readyRead_ba.clear();
+}
+
+// test QHttp::currentId() and QHttp::currentRequest()
+#define CURRENTREQUEST_TEST \
+ { \
+ ResMapIt res = resultMap.find( http->currentId() ); \
+ QVERIFY( res != resultMap.end() ); \
+ if ( http->currentId() == getId ) { \
+ QCOMPARE( http->currentRequest().method(), QString("GET") ); \
+ } else if ( http->currentId() == headId ) { \
+ QCOMPARE( http->currentRequest().method(), QString("HEAD") ); \
+ } else if ( http->currentId() == postId ) { \
+ QCOMPARE( http->currentRequest().method(), QString("POST") ); \
+ } else { \
+ QVERIFY( headerAreEqual( http->currentRequest(), res.value().req ) ); \
+ } \
+ }
+
+void tst_QHttp::requestStarted( int id )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d:requestStarted( %d )", http->currentId(), id );
+#endif
+ // make sure that the requestStarted and requestFinished are nested correctly
+ QVERIFY( current_id == 0 );
+ current_id = id;
+
+ QVERIFY( !ids.isEmpty() );
+ QVERIFY( ids.first() == id );
+ if ( ids.count() > 1 ) {
+ QVERIFY( http->hasPendingRequests() );
+ } else {
+ QVERIFY( !http->hasPendingRequests() );
+ }
+
+ QVERIFY( http->currentId() == id );
+ QVERIFY( cur_state == http->state() );
+
+
+
+
+ CURRENTREQUEST_TEST;
+
+ QVERIFY( http->error() == QHttp::NoError );
+}
+
+void tst_QHttp::requestFinished( int id, bool error )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d:requestFinished( %d, %d ) -- errorString: '%s'",
+ http->currentId(), id, (int)error, http->errorString().toAscii().data() );
+#endif
+ // make sure that the requestStarted and requestFinished are nested correctly
+ QVERIFY( current_id == id );
+ current_id = 0;
+
+ QVERIFY( !ids.isEmpty() );
+ QVERIFY( ids.first() == id );
+ if ( ids.count() > 1 ) {
+ QVERIFY( http->hasPendingRequests() );
+ } else {
+ QVERIFY( !http->hasPendingRequests() );
+ }
+
+ if ( error ) {
+ QVERIFY( http->error() != QHttp::NoError );
+ ids.clear();
+ } else {
+ QVERIFY( http->error() == QHttp::NoError );
+ ids.pop_front();
+ }
+
+ QVERIFY( http->currentId() == id );
+ QVERIFY( cur_state == http->state() );
+ CURRENTREQUEST_TEST;
+
+ ResMapIt res = resultMap.find( http->currentId() );
+ QVERIFY( res != resultMap.end() );
+ QVERIFY( res.value().success == -1 );
+ if ( error )
+ res.value().success = 0;
+ else
+ res.value().success = 1;
+}
+
+void tst_QHttp::done( bool error )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d:done( %d )", http->currentId(), (int)error );
+#endif
+ QVERIFY( http->currentId() == 0 );
+ QVERIFY( current_id == 0 );
+ QVERIFY( ids.isEmpty() );
+ QVERIFY( cur_state == http->state() );
+ QVERIFY( !http->hasPendingRequests() );
+
+ QVERIFY( done_success == -1 );
+ if ( error ) {
+ QVERIFY( http->error() != QHttp::NoError );
+ done_success = 0;
+ } else {
+ QVERIFY( http->error() == QHttp::NoError );
+ done_success = 1;
+ }
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QHttp::stateChanged( int state )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d: stateChanged( %d )", http->currentId(), state );
+#endif
+ QCOMPARE( http->currentId(), current_id );
+ if ( ids.count() > 0 )
+ CURRENTREQUEST_TEST;
+
+ QVERIFY( state != cur_state );
+ QVERIFY( state == http->state() );
+ if ( state != QHttp::Unconnected && !connectionWithAuth ) {
+ // make sure that the states are always emitted in the right order (for
+ // this, we assume an ordering on the enum values, which they have at
+ // the moment)
+ // connections with authentication will possibly reconnect, so ignore them
+ QVERIFY( cur_state < state );
+ }
+ cur_state = state;
+
+ if (state == QHttp::Connecting) {
+ bytesTotalSend = bytesTotal_init;
+ bytesDoneSend = bytesDone_init;
+ bytesTotalRead = bytesTotal_init;
+ bytesDoneRead = bytesDone_init;
+ }
+}
+
+void tst_QHttp::responseHeaderReceived( const QHttpResponseHeader &header )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d: responseHeaderReceived(\n---{\n%s}---)", http->currentId(), header.toString().toAscii().data() );
+#endif
+ QCOMPARE( http->currentId(), current_id );
+ if ( ids.count() > 1 ) {
+ QVERIFY( http->hasPendingRequests() );
+ } else {
+ QVERIFY( !http->hasPendingRequests() );
+ }
+ CURRENTREQUEST_TEST;
+
+ resultMap[ http->currentId() ].resp = header;
+}
+
+void tst_QHttp::readyRead( const QHttpResponseHeader & )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d: readyRead()", http->currentId() );
+#endif
+ QCOMPARE( http->currentId(), current_id );
+ if ( ids.count() > 1 ) {
+ QVERIFY( http->hasPendingRequests() );
+ } else {
+ QVERIFY( !http->hasPendingRequests() );
+ }
+ QVERIFY( cur_state == http->state() );
+ CURRENTREQUEST_TEST;
+
+ if ( QTest::currentTestFunction() != QLatin1String("bytesAvailable") ) {
+ int oldSize = readyRead_ba.size();
+ quint64 bytesAvail = http->bytesAvailable();
+ QByteArray ba = http->readAll();
+ QVERIFY( (quint64) ba.size() == bytesAvail );
+ readyRead_ba.resize( oldSize + ba.size() );
+ memcpy( readyRead_ba.data()+oldSize, ba.data(), ba.size() );
+
+ if ( bytesTotalRead > 0 ) {
+ QVERIFY( (int)readyRead_ba.size() <= bytesTotalRead );
+ }
+ QVERIFY( (int)readyRead_ba.size() == bytesDoneRead );
+ }
+}
+
+void tst_QHttp::dataSendProgress( int done, int total )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d: dataSendProgress( %d, %d )", http->currentId(), done, total );
+#endif
+ QCOMPARE( http->currentId(), current_id );
+ if ( ids.count() > 1 ) {
+ QVERIFY( http->hasPendingRequests() );
+ } else {
+ QVERIFY( !http->hasPendingRequests() );
+ }
+ QVERIFY( cur_state == http->state() );
+ CURRENTREQUEST_TEST;
+
+ if ( bytesTotalSend == bytesTotal_init ) {
+ bytesTotalSend = total;
+ } else {
+ QCOMPARE( bytesTotalSend, total );
+ }
+
+ QVERIFY( bytesTotalSend != bytesTotal_init );
+ QVERIFY( bytesDoneSend <= done );
+ bytesDoneSend = done;
+ if ( bytesTotalSend > 0 ) {
+ QVERIFY( bytesDoneSend <= bytesTotalSend );
+ }
+
+ if ( QTest::currentTestFunction() == QLatin1String("abort") ) {
+ // ### it would be nice if we could specify in our testdata when to do
+ // the abort
+ if ( done >= total/100000 ) {
+ if ( ids.count() != 1 ) {
+ // do abort only once
+ int tmpId = ids.first();
+ ids.clear();
+ ids << tmpId;
+ http->abort();
+ }
+ }
+ }
+}
+
+void tst_QHttp::dataReadProgress( int done, int total )
+{
+#if defined( DUMP_SIGNALS )
+ qDebug( "%d: dataReadProgress( %d, %d )", http->currentId(), done, total );
+#endif
+ QCOMPARE( http->currentId(), current_id );
+ if ( ids.count() > 1 ) {
+ QVERIFY( http->hasPendingRequests() );
+ } else {
+ QVERIFY( !http->hasPendingRequests() );
+ }
+ QVERIFY( cur_state == http->state() );
+ CURRENTREQUEST_TEST;
+
+ if ( bytesTotalRead == bytesTotal_init )
+ bytesTotalRead = total;
+ else {
+ QVERIFY( bytesTotalRead == total );
+ }
+
+ QVERIFY( bytesTotalRead != bytesTotal_init );
+ QVERIFY( bytesDoneRead <= done );
+ bytesDoneRead = done;
+ if ( bytesTotalRead > 0 ) {
+ QVERIFY( bytesDoneRead <= bytesTotalRead );
+ }
+
+ if ( QTest::currentTestFunction() == QLatin1String("abort") ) {
+ // ### it would be nice if we could specify in our testdata when to do
+ // the abort
+ if ( done >= total/100000 ) {
+ if ( ids.count() != 1 ) {
+ // do abort only once
+ int tmpId = ids.first();
+ ids.clear();
+ ids << tmpId;
+ http->abort();
+ }
+ }
+ }
+}
+
+
+QHttp *tst_QHttp::newHttp(bool withAuth)
+{
+ QHttp *nHttp = new QHttp( 0 );
+ connect( nHttp, SIGNAL(requestStarted(int)),
+ SLOT(requestStarted(int)) );
+ connect( nHttp, SIGNAL(requestFinished(int,bool)),
+ SLOT(requestFinished(int,bool)) );
+ connect( nHttp, SIGNAL(done(bool)),
+ SLOT(done(bool)) );
+ connect( nHttp, SIGNAL(stateChanged(int)),
+ SLOT(stateChanged(int)) );
+ connect( nHttp, SIGNAL(responseHeaderReceived(const QHttpResponseHeader&)),
+ SLOT(responseHeaderReceived(const QHttpResponseHeader&)) );
+ connect( nHttp, SIGNAL(readyRead(const QHttpResponseHeader&)),
+ SLOT(readyRead(const QHttpResponseHeader&)) );
+ connect( nHttp, SIGNAL(dataSendProgress(int,int)),
+ SLOT(dataSendProgress(int,int)) );
+ connect( nHttp, SIGNAL(dataReadProgress(int,int)),
+ SLOT(dataReadProgress(int,int)) );
+
+ connectionWithAuth = withAuth;
+ return nHttp;
+}
+
+void tst_QHttp::addRequest( QHttpRequestHeader header, int id )
+{
+ ids << id;
+ RequestResult res;
+ res.req = header;
+ res.success = -1;
+ resultMap[ id ] = res;
+}
+
+bool tst_QHttp::headerAreEqual( const QHttpHeader &h1, const QHttpHeader &h2 )
+{
+ if ( !h1.isValid() )
+ return !h2.isValid();
+ if ( !h2.isValid() )
+ return !h1.isValid();
+
+ return h1.toString() == h2.toString();
+}
+
+
+void tst_QHttp::reconnect()
+{
+ reconnect_state_connect_count = 0;
+
+ QHttp http;
+
+ QObject::connect(&http, SIGNAL(stateChanged(int)), this, SLOT(reconnect_state(int)));
+ http.setHost("trolltech.com", 80);
+ http.get("/company/index.html");
+ http.setHost("trolltech.com", 8080);
+ http.get("/company/index.html");
+
+ QTestEventLoop::instance().enterLoop(60);
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Network operation timed out");
+
+ QCOMPARE(reconnect_state_connect_count, 1);
+
+ QTestEventLoop::instance().enterLoop(60);
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Network operation timed out");
+
+ QCOMPARE(reconnect_state_connect_count, 2);
+}
+
+void tst_QHttp::reconnect_state(int state)
+{
+ if (state == QHttp::Connecting) {
+ ++reconnect_state_connect_count;
+ QTestEventLoop::instance().exitLoop();
+ }
+}
+
+void tst_QHttp::setSocket()
+{
+ QHttp *http = new QHttp;
+ QPointer<QTcpSocket> replacementSocket = new QTcpSocket;
+ http->setSocket(replacementSocket);
+ QCoreApplication::processEvents();
+ delete http;
+ QVERIFY(replacementSocket);
+ delete replacementSocket;
+}
+
+class Server : public QTcpServer
+{
+ Q_OBJECT
+public:
+ Server()
+ {
+ connect(this, SIGNAL(newConnection()),
+ this, SLOT(serveConnection()));
+ }
+
+private slots:
+ void serveConnection()
+ {
+ QTcpSocket *socket = nextPendingConnection();
+ socket->write("HTTP/1.1 404 Not found\r\n"
+ "content-length: 4\r\n\r\nabcd");
+ socket->disconnectFromHost();
+ };
+};
+
+void tst_QHttp::unexpectedRemoteClose()
+{
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ // This test doesn't make sense for SOCKS5
+ return;
+ }
+
+ Server server;
+ server.listen();
+ QCoreApplication::instance()->processEvents();
+
+ QEventLoop loop;
+ QTimer::singleShot(3000, &loop, SLOT(quit()));
+
+ QHttp http;
+ QObject::connect(&http, SIGNAL(done(bool)), &loop, SLOT(quit()));
+ QSignalSpy finishedSpy(&http, SIGNAL(requestFinished(int, bool)));
+ QSignalSpy doneSpy(&http, SIGNAL(done(bool)));
+
+ http.setHost("localhost", server.serverPort());
+ http.get("/");
+ http.get("/");
+ http.get("/");
+
+ loop.exec();
+
+ QCOMPARE(finishedSpy.count(), 4);
+ QVERIFY(!finishedSpy.at(1).at(1).toBool());
+ QVERIFY(!finishedSpy.at(2).at(1).toBool());
+ QVERIFY(!finishedSpy.at(3).at(1).toBool());
+ QCOMPARE(doneSpy.count(), 1);
+ QVERIFY(!doneSpy.at(0).at(0).toBool());
+}
+
+void tst_QHttp::pctEncodedPath()
+{
+ QHttpRequestHeader header;
+ header.setRequest("GET", "/index.asp/a=%20&b=%20&c=%20");
+ QCOMPARE(header.toString(), QString("GET /index.asp/a=%20&b=%20&c=%20 HTTP/1.1\r\n\r\n"));
+}
+
+void tst_QHttp::caseInsensitiveKeys()
+{
+ QHttpResponseHeader header("HTTP/1.1 200 OK\r\nContent-Length: 213\r\nX-Been-There: True\r\nLocation: http://www.TrollTech.com/\r\n\r\n");
+ QVERIFY(header.hasKey("Content-Length"));
+ QVERIFY(header.hasKey("X-Been-There"));
+ QVERIFY(header.hasKey("Location"));
+ QVERIFY(header.hasKey("content-length"));
+ QVERIFY(header.hasKey("x-been-there"));
+ QVERIFY(header.hasKey("location"));
+ QCOMPARE(header.value("Content-Length"), QString("213"));
+ QCOMPARE(header.value("X-Been-There"), QString("True"));
+ QCOMPARE(header.value("Location"), QString("http://www.TrollTech.com/"));
+ QCOMPARE(header.value("content-length"), QString("213"));
+ QCOMPARE(header.value("x-been-there"), QString("True"));
+ QCOMPARE(header.value("location"), QString("http://www.TrollTech.com/"));
+ QCOMPARE(header.allValues("location"), QStringList("http://www.TrollTech.com/"));
+
+ header.addValue("Content-Length", "213");
+ header.addValue("Content-Length", "214");
+ header.addValue("Content-Length", "215");
+ qDebug() << header.toString();
+}
+
+void tst_QHttp::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
+{
+ proxyAuthCalled = true;
+ auth->setUser("qsockstest");
+ auth->setPassword("password");
+}
+
+void tst_QHttp::postAuthNtlm()
+{
+ QSKIP("NTLM not working", SkipAll);
+
+ QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName());
+ QByteArray postData("Hello World");
+ QHttp http;
+
+ http.setHost(QtNetworkSettings::serverName());
+ http.setProxy(QtNetworkSettings::serverName(), 3130);
+ http.post("/", postData);
+
+ proxyAuthCalled = false;
+ connect(&http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+
+ QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(3);
+ QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QVERIFY(proxyAuthCalled);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+};
+
+void tst_QHttp::proxyAndSsl()
+{
+#ifdef QT_NO_OPENSSL
+ QSKIP("No OpenSSL support in this platform", SkipAll);
+#else
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QHttp http;
+
+ http.setHost(QtNetworkSettings::serverName(), QHttp::ConnectionModeHttps);
+ http.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129));
+ http.get("/");
+
+ proxyAuthCalled = false;
+ connect(&http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(&http, SIGNAL(sslErrors(QList<QSslError>)),
+ &http, SLOT(ignoreSslErrors()));
+
+ QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(3);
+ QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(proxyAuthCalled);
+
+ QHttpResponseHeader header = http.lastResponse();
+ QVERIFY(header.isValid());
+ QVERIFY(header.statusCode() < 400); // Should be 200, but as long as it's not an error, we're happy
+#endif
+}
+
+void tst_QHttp::cachingProxyAndSsl()
+{
+#ifdef QT_NO_OPENSSL
+ QSKIP("No OpenSSL support in this platform", SkipAll);
+#else
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QHttp http;
+
+ http.setHost(QtNetworkSettings::serverName(), QHttp::ConnectionModeHttps);
+ http.setProxy(QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129));
+ http.get("/");
+
+ proxyAuthCalled = false;
+ connect(&http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+
+ QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(3);
+ QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(!proxyAuthCalled); // NOT called! QHttp should get a socket error
+ QVERIFY(http.state() != QHttp::Connected);
+
+ QHttpResponseHeader header = http.lastResponse();
+ QVERIFY(!header.isValid());
+#endif
+}
+
+void tst_QHttp::emptyBodyInReply()
+{
+ // Note: if this test starts failing, please verify the date on the file
+ // returned by Apache on http://netiks.troll.no/
+ // It is right now hard-coded to the date below
+ QHttp http;
+ http.setHost(QtNetworkSettings::serverName());
+
+ QHttpRequestHeader headers("GET", "/");
+ headers.addValue("If-Modified-Since", "Sun, 16 Nov 2008 12:29:51 GMT");
+ headers.addValue("Host", QtNetworkSettings::serverName());
+ http.request(headers);
+
+ QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // check the reply
+ if (http.lastResponse().statusCode() != 304) {
+ qWarning() << http.lastResponse().statusCode() << qPrintable(http.lastResponse().reasonPhrase());
+ qWarning() << "Last-Modified:" << qPrintable(http.lastResponse().value("last-modified"));
+ QFAIL("Server replied with the wrong status code; see warning output");
+ }
+}
+
+void tst_QHttp::abortSender()
+{
+ QHttp *http = qobject_cast<QHttp *>(sender());
+ if (http)
+ http->abort();
+}
+
+void tst_QHttp::abortInReadyRead()
+{
+ QHttp http;
+ http.setHost(QtNetworkSettings::serverName());
+ http.get("/qtest/bigfile");
+
+ qRegisterMetaType<QHttpResponseHeader>();
+ QSignalSpy spy(&http, SIGNAL(readyRead(QHttpResponseHeader)));
+
+ QObject::connect(&http, SIGNAL(readyRead(QHttpResponseHeader)), this, SLOT(abortSender()));
+ QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QVERIFY2(!QTestEventLoop::instance().timeout(), "Network timeout");
+ QVERIFY(http.state() != QHttp::Connected);
+
+ QCOMPARE(spy.count(), 1);
+}
+
+void tst_QHttp::abortInResponseHeaderReceived()
+{
+ QHttp http;
+ http.setHost(QtNetworkSettings::serverName());
+ http.get("/qtest/bigfile");
+
+ qRegisterMetaType<QHttpResponseHeader>();
+ QSignalSpy spy(&http, SIGNAL(readyRead(QHttpResponseHeader)));
+
+ QObject::connect(&http, SIGNAL(responseHeaderReceived(QHttpResponseHeader)), this, SLOT(abortSender()));
+ QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QVERIFY2(!QTestEventLoop::instance().timeout(), "Network timeout");
+ QVERIFY(http.state() != QHttp::Connected);
+
+ QCOMPARE(spy.count(), 0);
+}
+
+void tst_QHttp::connectionClose()
+{
+ // This was added in response to bug 176822
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QHttp http;
+ ClosingServer server;
+ http.setHost("localhost", QHttp::ConnectionModeHttps, server.serverPort());
+ http.get("/login/gateway/processLogin");
+
+ // another possibility:
+ //http.setHost("nexus.passport.com", QHttp::ConnectionModeHttps, 443);
+ //http.get("/rdr/pprdr.asp");
+
+ QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(900);
+ QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
+void tst_QHttp::nestedEventLoop_slot(int id)
+{
+ if (!ids.contains(id))
+ return;
+ QEventLoop subloop;
+
+ // 16 seconds: fluke times out in 15 seconds, which triggers a QTcpSocket error
+ QTimer::singleShot(16000, &subloop, SLOT(quit()));
+ subloop.exec();
+
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QHttp::nestedEventLoop()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ http = new QHttp;
+ http->setHost(QtNetworkSettings::serverName());
+ int getId = http->get("/");
+
+ ids.clear();
+ ids << getId;
+
+ QSignalSpy spy(http, SIGNAL(requestStarted(int)));
+ QSignalSpy spy2(http, SIGNAL(done(bool)));
+
+ connect(http, SIGNAL(requestFinished(int,bool)), SLOT(nestedEventLoop_slot(int)));
+ QTestEventLoop::instance().enterLoop(20);
+
+ QVERIFY2(!QTestEventLoop::instance().timeout(), "Network timeout");
+
+ // Find out how many signals with the first argument equalling our id were found
+ int spyCount = 0;
+ for (int i = 0; i < spy.count(); ++i)
+ if (spy.at(i).at(0).toInt() == getId)
+ ++spyCount;
+
+ // each signal spied should have been emitted only once
+ QCOMPARE(spyCount, 1);
+ QCOMPARE(spy2.count(), 1);
+}
+
+QTEST_MAIN(tst_QHttp)
+#include "tst_qhttp.moc"
diff --git a/tests/auto/qhttp/webserver/cgi-bin/retrieve_testfile.cgi b/tests/auto/network/access/qhttp/webserver/cgi-bin/retrieve_testfile.cgi
index 7896c505ca..7896c505ca 100755
--- a/tests/auto/qhttp/webserver/cgi-bin/retrieve_testfile.cgi
+++ b/tests/auto/network/access/qhttp/webserver/cgi-bin/retrieve_testfile.cgi
diff --git a/tests/auto/qhttp/webserver/cgi-bin/rfc.cgi b/tests/auto/network/access/qhttp/webserver/cgi-bin/rfc.cgi
index c68688ea31..c68688ea31 100755
--- a/tests/auto/qhttp/webserver/cgi-bin/rfc.cgi
+++ b/tests/auto/network/access/qhttp/webserver/cgi-bin/rfc.cgi
diff --git a/tests/auto/qhttp/webserver/cgi-bin/store_testfile.cgi b/tests/auto/network/access/qhttp/webserver/cgi-bin/store_testfile.cgi
index e950f2af04..e950f2af04 100755
--- a/tests/auto/qhttp/webserver/cgi-bin/store_testfile.cgi
+++ b/tests/auto/network/access/qhttp/webserver/cgi-bin/store_testfile.cgi
diff --git a/tests/auto/qhttp/webserver/index.html b/tests/auto/network/access/qhttp/webserver/index.html
index b80c61bf0a..b80c61bf0a 100644
--- a/tests/auto/qhttp/webserver/index.html
+++ b/tests/auto/network/access/qhttp/webserver/index.html
diff --git a/tests/auto/qhttp/webserver/rfc3252 b/tests/auto/network/access/qhttp/webserver/rfc3252
index b80c61bf0a..b80c61bf0a 100644
--- a/tests/auto/qhttp/webserver/rfc3252
+++ b/tests/auto/network/access/qhttp/webserver/rfc3252
diff --git a/tests/auto/qhttp/webserver/rfc3252.txt b/tests/auto/network/access/qhttp/webserver/rfc3252.txt
index b80c61bf0a..b80c61bf0a 100644
--- a/tests/auto/qhttp/webserver/rfc3252.txt
+++ b/tests/auto/network/access/qhttp/webserver/rfc3252.txt
diff --git a/tests/auto/qhttpnetworkconnection/.gitignore b/tests/auto/network/access/qhttpnetworkconnection/.gitignore
index 4fe208868b..4fe208868b 100644
--- a/tests/auto/qhttpnetworkconnection/.gitignore
+++ b/tests/auto/network/access/qhttpnetworkconnection/.gitignore
diff --git a/tests/auto/qhttpnetworkconnection/qhttpnetworkconnection.pro b/tests/auto/network/access/qhttpnetworkconnection/qhttpnetworkconnection.pro
index 1ce5d8a092..1ce5d8a092 100644
--- a/tests/auto/qhttpnetworkconnection/qhttpnetworkconnection.pro
+++ b/tests/auto/network/access/qhttpnetworkconnection/qhttpnetworkconnection.pro
diff --git a/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
new file mode 100644
index 0000000000..2d30f6bca1
--- /dev/null
+++ b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
@@ -0,0 +1,1131 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include "private/qhttpnetworkconnection_p.h"
+#include "private/qnoncontiguousbytedevice_p.h"
+#include <QAuthenticator>
+
+#include "../../../network-settings.h"
+
+class tst_QHttpNetworkConnection: public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QHttpNetworkConnection();
+
+public Q_SLOTS:
+ void finishedReply();
+ void finishedWithError(QNetworkReply::NetworkError errorCode, const QString &detail);
+ void challenge401(const QHttpNetworkRequest &request, QAuthenticator *authenticator);
+#ifndef QT_NO_OPENSSL
+ void sslErrors(const QList<QSslError> &errors);
+#endif
+private:
+ bool finishedCalled;
+ bool finishedWithErrorCalled;
+ QNetworkReply::NetworkError netErrorCode;
+
+private Q_SLOTS:
+ void init();
+ void cleanup();
+ void initTestCase();
+ void cleanupTestCase();
+
+ void options_data();
+ void options();
+ void get_data();
+ void get();
+ void head_data();
+ void head();
+ void post_data();
+ void post();
+ void put_data();
+ void put();
+ void _delete_data();
+ void _delete();
+ void trace_data();
+ void trace();
+ void _connect_data();
+ void _connect();
+#ifndef QT_NO_COMPRESS
+ void compression_data();
+ void compression();
+#endif
+#ifndef QT_NO_OPENSSL
+ void ignoresslerror_data();
+ void ignoresslerror();
+#endif
+#ifdef QT_NO_OPENSSL
+ void nossl_data();
+ void nossl();
+#endif
+ void get401_data();
+ void get401();
+
+ void getMultiple_data();
+ void getMultiple();
+ void getMultipleWithPipeliningAndMultiplePriorities();
+ void getMultipleWithPriorities();
+
+ void getEmptyWithPipelining();
+
+ void getAndEverythingShouldBePipelined();
+
+ void getAndThenDeleteObject();
+ void getAndThenDeleteObject_data();
+};
+
+tst_QHttpNetworkConnection::tst_QHttpNetworkConnection()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+void tst_QHttpNetworkConnection::initTestCase()
+{
+}
+
+void tst_QHttpNetworkConnection::cleanupTestCase()
+{
+}
+
+void tst_QHttpNetworkConnection::init()
+{
+}
+
+void tst_QHttpNetworkConnection::cleanup()
+{
+}
+
+void tst_QHttpNetworkConnection::options_data()
+{
+ // not tested yet
+}
+
+void tst_QHttpNetworkConnection::options()
+{
+ QEXPECT_FAIL("", "not tested yet", Continue);
+ QVERIFY(false);
+}
+
+void tst_QHttpNetworkConnection::head_data()
+{
+ QTest::addColumn<QString>("protocol");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<ushort>("port");
+ QTest::addColumn<bool>("encrypt");
+ QTest::addColumn<int>("statusCode");
+ QTest::addColumn<QString>("statusString");
+ QTest::addColumn<int>("contentLength");
+
+ QTest::newRow("success-internal") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfc3252.txt" << ushort(80) << false << 200 << "OK" << 25962;
+ QTest::newRow("success-external") << "http://" << "www.ietf.org" << "/rfc/rfc3252.txt" << ushort(80) << false << 200 << "OK" << 25962;
+
+ QTest::newRow("failure-path") << "http://" << QtNetworkSettings::serverName() << "/t" << ushort(80) << false << 404 << "Not Found" << -1;
+ QTest::newRow("failure-protocol") << "" << QtNetworkSettings::serverName() << "/qtest/rfc3252.txt" << ushort(80) << false << 400 << "Bad Request" << -1;
+}
+
+void tst_QHttpNetworkConnection::head()
+{
+ QFETCH(QString, protocol);
+ QFETCH(QString, host);
+ QFETCH(QString, path);
+ QFETCH(ushort, port);
+ QFETCH(bool, encrypt);
+ QFETCH(int, statusCode);
+ QFETCH(QString, statusString);
+ QFETCH(int, contentLength);
+
+ QHttpNetworkConnection connection(host, port, encrypt);
+ QCOMPARE(connection.port(), port);
+ QCOMPARE(connection.hostName(), host);
+ QCOMPARE(connection.isSsl(), encrypt);
+
+ QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Head);
+ QHttpNetworkReply *reply = connection.sendRequest(request);
+
+ QTime stopWatch;
+ stopWatch.start();
+ do {
+ QCoreApplication::instance()->processEvents();
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ } while (!reply->isFinished());
+
+ QCOMPARE(reply->statusCode(), statusCode);
+ QCOMPARE(reply->reasonPhrase(), statusString);
+ // only check it if it is set and expected
+ if (reply->contentLength() != -1 && contentLength != -1)
+ QCOMPARE(reply->contentLength(), qint64(contentLength));
+
+ QVERIFY(reply->isFinished());
+
+ delete reply;
+}
+
+void tst_QHttpNetworkConnection::get_data()
+{
+ QTest::addColumn<QString>("protocol");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<ushort>("port");
+ QTest::addColumn<bool>("encrypt");
+ QTest::addColumn<int>("statusCode");
+ QTest::addColumn<QString>("statusString");
+ QTest::addColumn<int>("contentLength");
+ QTest::addColumn<int>("downloadSize");
+
+ QTest::newRow("success-internal") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfc3252.txt" << ushort(80) << false << 200 << "OK" << 25962 << 25962;
+ QTest::newRow("success-external") << "http://" << "www.ietf.org" << "/rfc/rfc3252.txt" << ushort(80) << false << 200 << "OK" << 25962 << 25962;
+
+ QTest::newRow("failure-path") << "http://" << QtNetworkSettings::serverName() << "/t" << ushort(80) << false << 404 << "Not Found" << -1 << -1;
+ QTest::newRow("failure-protocol") << "" << QtNetworkSettings::serverName() << "/qtest/rfc3252.txt" << ushort(80) << false << 400 << "Bad Request" << -1 << -1;
+}
+
+void tst_QHttpNetworkConnection::get()
+{
+ QFETCH(QString, protocol);
+ QFETCH(QString, host);
+ QFETCH(QString, path);
+ QFETCH(ushort, port);
+ QFETCH(bool, encrypt);
+ QFETCH(int, statusCode);
+ QFETCH(QString, statusString);
+ QFETCH(int, contentLength);
+ QFETCH(int, downloadSize);
+
+ QHttpNetworkConnection connection(host, port, encrypt);
+ QCOMPARE(connection.port(), port);
+ QCOMPARE(connection.hostName(), host);
+ QCOMPARE(connection.isSsl(), encrypt);
+
+ QHttpNetworkRequest request(protocol + host + path);
+ QHttpNetworkReply *reply = connection.sendRequest(request);
+
+ QTime stopWatch;
+ stopWatch.start();
+ forever {
+ QCoreApplication::instance()->processEvents();
+ if (reply->bytesAvailable())
+ break;
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ }
+
+ QCOMPARE(reply->statusCode(), statusCode);
+ QCOMPARE(reply->reasonPhrase(), statusString);
+ // only check it if it is set and expected
+ if (reply->contentLength() != -1 && contentLength != -1)
+ QCOMPARE(reply->contentLength(), qint64(contentLength));
+
+ stopWatch.start();
+ QByteArray ba;
+ do {
+ QCoreApplication::instance()->processEvents();
+ while (reply->bytesAvailable())
+ ba += reply->readAny();
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ } while (!reply->isFinished());
+
+ QVERIFY(reply->isFinished());
+ //do not require server generated error pages to be a fixed size
+ if (downloadSize != -1)
+ QCOMPARE(ba.size(), downloadSize);
+ //but check against content length if it was sent
+ if (reply->contentLength() != -1)
+ QCOMPARE(ba.size(), (int)reply->contentLength());
+
+ delete reply;
+}
+
+void tst_QHttpNetworkConnection::finishedReply()
+{
+ finishedCalled = true;
+}
+
+void tst_QHttpNetworkConnection::finishedWithError(QNetworkReply::NetworkError errorCode, const QString &detail)
+{
+ Q_UNUSED(detail)
+ finishedWithErrorCalled = true;
+ netErrorCode = errorCode;
+}
+
+void tst_QHttpNetworkConnection::put_data()
+{
+
+ QTest::addColumn<QString>("protocol");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<ushort>("port");
+ QTest::addColumn<bool>("encrypt");
+ QTest::addColumn<QString>("data");
+ QTest::addColumn<bool>("succeed");
+
+ QTest::newRow("success-internal") << "http://" << QtNetworkSettings::serverName() << "/dav/file1.txt" << ushort(80) << false << "Hello World\nEnd of file\n"<<true;
+ QTest::newRow("fail-internal") << "http://" << QtNetworkSettings::serverName() << "/dav2/file1.txt" << ushort(80) << false << "Hello World\nEnd of file\n"<<false;
+ QTest::newRow("fail-host") << "http://" << "fluke-nosuchhost.troll.no" << "/dav2/file1.txt" << ushort(80) << false << "Hello World\nEnd of file\n"<<false;
+}
+
+void tst_QHttpNetworkConnection::put()
+{
+ QFETCH(QString, protocol);
+ QFETCH(QString, host);
+ QFETCH(QString, path);
+ QFETCH(ushort, port);
+ QFETCH(bool, encrypt);
+ QFETCH(QString, data);
+ QFETCH(bool, succeed);
+
+ QHttpNetworkConnection connection(host, port, encrypt);
+ QCOMPARE(connection.port(), port);
+ QCOMPARE(connection.hostName(), host);
+ QCOMPARE(connection.isSsl(), encrypt);
+
+ QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Put);
+
+ QByteArray array = data.toLatin1();
+ QNonContiguousByteDevice *bd = QNonContiguousByteDeviceFactory::create(&array);
+ bd->setParent(this);
+ request.setUploadByteDevice(bd);
+
+ finishedCalled = false;
+ finishedWithErrorCalled = false;
+
+ QHttpNetworkReply *reply = connection.sendRequest(request);
+ connect(reply, SIGNAL(finished()), SLOT(finishedReply()));
+ connect(reply, SIGNAL(finishedWithError(QNetworkReply::NetworkError, const QString &)),
+ SLOT(finishedWithError(QNetworkReply::NetworkError, const QString &)));
+
+ QTime stopWatch;
+ stopWatch.start();
+ do {
+ QCoreApplication::instance()->processEvents();
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ } while (!reply->isFinished() && !finishedCalled && !finishedWithErrorCalled);
+
+ if (reply->isFinished()) {
+ QByteArray ba;
+ while (reply->bytesAvailable())
+ ba += reply->readAny();
+ } else if(finishedWithErrorCalled) {
+ if(!succeed) {
+ delete reply;
+ return;
+ } else {
+ QFAIL("Error in PUT");
+ }
+ } else {
+ QFAIL("PUT timed out");
+ }
+
+ int status = reply->statusCode();
+ if (status != 200 && status != 201 && status != 204) {
+ if (succeed) {
+ qDebug()<<"PUT failed, Status Code:" <<status;
+ QFAIL("Error in PUT");
+ }
+ } else {
+ if (!succeed) {
+ qDebug()<<"PUT Should fail, Status Code:" <<status;
+ QFAIL("Error in PUT");
+ }
+ }
+ delete reply;
+}
+
+void tst_QHttpNetworkConnection::post_data()
+{
+ QTest::addColumn<QString>("protocol");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<ushort>("port");
+ QTest::addColumn<bool>("encrypt");
+ QTest::addColumn<QString>("data");
+ QTest::addColumn<int>("statusCode");
+ QTest::addColumn<QString>("statusString");
+ QTest::addColumn<int>("contentLength");
+ QTest::addColumn<int>("downloadSize");
+
+ QTest::newRow("success-internal") << "http://" << QtNetworkSettings::serverName() << "/qtest/cgi-bin/echo.cgi" << ushort(80) << false << "7 bytes" << 200 << "OK" << 7 << 7;
+ QTest::newRow("failure-internal") << "http://" << QtNetworkSettings::serverName() << "/t" << ushort(80) << false << "Hello World" << 404 << "Not Found" << -1 << -1;
+}
+
+void tst_QHttpNetworkConnection::post()
+{
+ QFETCH(QString, protocol);
+ QFETCH(QString, host);
+ QFETCH(QString, path);
+ QFETCH(ushort, port);
+ QFETCH(bool, encrypt);
+ QFETCH(QString, data);
+ QFETCH(int, statusCode);
+ QFETCH(QString, statusString);
+ QFETCH(int, contentLength);
+ QFETCH(int, downloadSize);
+
+ QHttpNetworkConnection connection(host, port, encrypt);
+ QCOMPARE(connection.port(), port);
+ QCOMPARE(connection.hostName(), host);
+ QCOMPARE(connection.isSsl(), encrypt);
+
+ QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Post);
+
+ QByteArray array = data.toLatin1();
+ QNonContiguousByteDevice *bd = QNonContiguousByteDeviceFactory::create(&array);
+ bd->setParent(this);
+ request.setUploadByteDevice(bd);
+
+ QHttpNetworkReply *reply = connection.sendRequest(request);
+
+ QTime stopWatch;
+ stopWatch.start();
+ forever {
+ QCoreApplication::instance()->processEvents();
+ if (reply->bytesAvailable())
+ break;
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ }
+
+ QCOMPARE(reply->statusCode(), statusCode);
+ QCOMPARE(reply->reasonPhrase(), statusString);
+
+ qint64 cLen = reply->contentLength();
+ if (contentLength != -1) {
+ // only check the content length if test expected it to be set
+ if (cLen==-1) {
+ // HTTP 1.1 server may respond with chunked encoding and in that
+ // case contentLength is not present in reply -> verify that it is the case
+ QByteArray transferEnc = reply->headerField("Transfer-Encoding");
+ QCOMPARE(transferEnc, QByteArray("chunked"));
+ } else {
+ QCOMPARE(cLen, qint64(contentLength));
+ }
+ }
+
+ stopWatch.start();
+ QByteArray ba;
+ do {
+ QCoreApplication::instance()->processEvents();
+ while (reply->bytesAvailable())
+ ba += reply->readAny();
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ } while (!reply->isFinished());
+
+ QVERIFY(reply->isFinished());
+ //don't require fixed size for generated error pages
+ if (downloadSize != -1)
+ QCOMPARE(ba.size(), downloadSize);
+ //but do compare with content length if possible
+ if (cLen != -1)
+ QCOMPARE(ba.size(), (int)cLen);
+
+ delete reply;
+}
+
+void tst_QHttpNetworkConnection::_delete_data()
+{
+ // not tested yet
+}
+
+void tst_QHttpNetworkConnection::_delete()
+{
+ QEXPECT_FAIL("", "not tested yet", Continue);
+ QVERIFY(false);
+}
+
+void tst_QHttpNetworkConnection::trace_data()
+{
+ // not tested yet
+}
+
+void tst_QHttpNetworkConnection::trace()
+{
+ QEXPECT_FAIL("", "not tested yet", Continue);
+ QVERIFY(false);
+}
+
+void tst_QHttpNetworkConnection::_connect_data()
+{
+ // not tested yet
+}
+
+void tst_QHttpNetworkConnection::_connect()
+{
+ QEXPECT_FAIL("", "not tested yet", Continue);
+ QVERIFY(false);
+}
+
+void tst_QHttpNetworkConnection::challenge401(const QHttpNetworkRequest &request,
+ QAuthenticator *authenticator)
+{
+ Q_UNUSED(request)
+
+ QHttpNetworkReply *reply = qobject_cast<QHttpNetworkReply*>(sender());
+ if (reply) {
+ QHttpNetworkConnection *c = reply->connection();
+
+ QVariant val = c->property("setCredentials");
+ if (val.toBool()) {
+ QVariant user = c->property("username");
+ QVariant password = c->property("password");
+ authenticator->setUser(user.toString());
+ authenticator->setPassword(password.toString());
+ c->setProperty("setCredentials", false);
+ }
+ }
+}
+
+void tst_QHttpNetworkConnection::get401_data()
+{
+ QTest::addColumn<QString>("protocol");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<ushort>("port");
+ QTest::addColumn<bool>("encrypt");
+ QTest::addColumn<bool>("setCredentials");
+ QTest::addColumn<QString>("username");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<int>("statusCode");
+
+ QTest::newRow("no-credentials") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfcs-auth/index.html" << ushort(80) << false << false << "" << ""<<401;
+ QTest::newRow("invalid-credentials") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfcs-auth/index.html" << ushort(80) << false << true << "test" << "test"<<401;
+ QTest::newRow("valid-credentials") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfcs-auth/index.html" << ushort(80) << false << true << "httptest" << "httptest"<<200;
+ QTest::newRow("digest-authentication-invalid") << "http://" << QtNetworkSettings::serverName() << "/qtest/auth-digest/index.html" << ushort(80) << false << true << "wrong" << "wrong"<<401;
+ QTest::newRow("digest-authentication-valid") << "http://" << QtNetworkSettings::serverName() << "/qtest/auth-digest/index.html" << ushort(80) << false << true << "httptest" << "httptest"<<200;
+}
+
+void tst_QHttpNetworkConnection::get401()
+{
+ QFETCH(QString, protocol);
+ QFETCH(QString, host);
+ QFETCH(QString, path);
+ QFETCH(ushort, port);
+ QFETCH(bool, encrypt);
+ QFETCH(bool, setCredentials);
+ QFETCH(QString, username);
+ QFETCH(QString, password);
+ QFETCH(int, statusCode);
+
+ QHttpNetworkConnection connection(host, port, encrypt);
+ QCOMPARE(connection.port(), port);
+ QCOMPARE(connection.hostName(), host);
+ QCOMPARE(connection.isSsl(), encrypt);
+ connection.setProperty("setCredentials", setCredentials);
+ connection.setProperty("username", username);
+ connection.setProperty("password", password);
+
+ QHttpNetworkRequest request(protocol + host + path);
+ QHttpNetworkReply *reply = connection.sendRequest(request);
+ connect(reply, SIGNAL(authenticationRequired(const QHttpNetworkRequest&, QAuthenticator *)),
+ SLOT(challenge401(const QHttpNetworkRequest&, QAuthenticator *)));
+
+ finishedCalled = false;
+ finishedWithErrorCalled = false;
+
+ connect(reply, SIGNAL(finished()), SLOT(finishedReply()));
+ connect(reply, SIGNAL(finishedWithError(QNetworkReply::NetworkError, const QString &)),
+ SLOT(finishedWithError(QNetworkReply::NetworkError, const QString &)));
+
+ QTime stopWatch;
+ stopWatch.start();
+ forever {
+ QCoreApplication::instance()->processEvents();
+ if (finishedCalled)
+ break;
+ if (finishedWithErrorCalled)
+ break;
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ }
+ QCOMPARE(reply->statusCode(), statusCode);
+ delete reply;
+}
+
+#ifndef QT_NO_COMPRESS
+void tst_QHttpNetworkConnection::compression_data()
+{
+ QTest::addColumn<QString>("protocol");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<ushort>("port");
+ QTest::addColumn<bool>("encrypt");
+ QTest::addColumn<int>("statusCode");
+ QTest::addColumn<QString>("statusString");
+ QTest::addColumn<int>("contentLength");
+ QTest::addColumn<int>("downloadSize");
+ QTest::addColumn<bool>("autoCompress");
+ QTest::addColumn<QString>("contentCoding");
+
+ QTest::newRow("success-autogzip-temp") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfcs/rfc2616.html" << ushort(80) << false << 200 << "OK" << -1 << 418321 << true << "";
+ QTest::newRow("success-nogzip-temp") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfcs/rfc2616.html" << ushort(80) << false << 200 << "OK" << 418321 << 418321 << false << "identity";
+ QTest::newRow("success-manualgzip-temp") << "http://" << QtNetworkSettings::serverName() << "/qtest/deflate/rfc2616.html" << ushort(80) << false << 200 << "OK" << 119124 << 119124 << false << "gzip";
+
+}
+
+void tst_QHttpNetworkConnection::compression()
+{
+ QFETCH(QString, protocol);
+ QFETCH(QString, host);
+ QFETCH(QString, path);
+ QFETCH(ushort, port);
+ QFETCH(bool, encrypt);
+ QFETCH(int, statusCode);
+ QFETCH(QString, statusString);
+ QFETCH(int, contentLength);
+ QFETCH(int, downloadSize);
+ QFETCH(bool, autoCompress);
+ QFETCH(QString, contentCoding);
+
+ QHttpNetworkConnection connection(host, port, encrypt);
+ QCOMPARE(connection.port(), port);
+ QCOMPARE(connection.hostName(), host);
+ QCOMPARE(connection.isSsl(), encrypt);
+
+ QHttpNetworkRequest request(protocol + host + path);
+ if (!autoCompress)
+ request.setHeaderField("Accept-Encoding", contentCoding.toLatin1());
+ QHttpNetworkReply *reply = connection.sendRequest(request);
+ QTime stopWatch;
+ stopWatch.start();
+ forever {
+ QCoreApplication::instance()->processEvents();
+ if (reply->bytesAvailable())
+ break;
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ }
+
+ QCOMPARE(reply->statusCode(), statusCode);
+ QCOMPARE(reply->reasonPhrase(), statusString);
+ bool isLengthOk = (reply->contentLength() == qint64(contentLength)
+ || reply->contentLength() == qint64(downloadSize)
+ || reply->contentLength() == -1); //apache2 does not send content-length for compressed pages
+
+ QVERIFY(isLengthOk);
+
+ stopWatch.start();
+ QByteArray ba;
+ do {
+ QCoreApplication::instance()->processEvents();
+ while (reply->bytesAvailable())
+ ba += reply->readAny();
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ } while (!reply->isFinished());
+
+ QVERIFY(reply->isFinished());
+ QCOMPARE(ba.size(), downloadSize);
+
+ delete reply;
+}
+#endif
+
+#ifndef QT_NO_OPENSSL
+void tst_QHttpNetworkConnection::sslErrors(const QList<QSslError> &errors)
+{
+ Q_UNUSED(errors)
+
+ QHttpNetworkReply *reply = qobject_cast<QHttpNetworkReply*>(sender());
+ if (reply) {
+ QHttpNetworkConnection *connection = reply->connection();
+
+ QVariant val = connection->property("ignoreFromSignal");
+ if (val.toBool())
+ connection->ignoreSslErrors();
+ finishedWithErrorCalled = true;
+ }
+}
+
+void tst_QHttpNetworkConnection::ignoresslerror_data()
+{
+ QTest::addColumn<QString>("protocol");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<ushort>("port");
+ QTest::addColumn<bool>("encrypt");
+ QTest::addColumn<bool>("ignoreInit");
+ QTest::addColumn<bool>("ignoreFromSignal");
+ QTest::addColumn<int>("statusCode");
+
+ // This test will work only if the website has ssl errors.
+ // fluke's certificate is signed by a non-standard authority.
+ // Since we don't introduce that CA into the SSL verification chain,
+ // connecting should fail.
+ QTest::newRow("success-init") << "https://" << QtNetworkSettings::serverName() << "/" << ushort(443) << true << true << false << 200;
+ QTest::newRow("success-fromSignal") << "https://" << QtNetworkSettings::serverName() << "/" << ushort(443) << true << false << true << 200;
+ QTest::newRow("failure") << "https://" << QtNetworkSettings::serverName() << "/" << ushort(443) << true << false << false << 100;
+}
+
+void tst_QHttpNetworkConnection::ignoresslerror()
+{
+ QFETCH(QString, protocol);
+ QFETCH(QString, host);
+ QFETCH(QString, path);
+ QFETCH(ushort, port);
+ QFETCH(bool, encrypt);
+ QFETCH(bool, ignoreInit);
+ QFETCH(bool, ignoreFromSignal);
+ QFETCH(int, statusCode);
+
+ QHttpNetworkConnection connection(host, port, encrypt);
+ QCOMPARE(connection.port(), port);
+ QCOMPARE(connection.hostName(), host);
+ if (ignoreInit)
+ connection.ignoreSslErrors();
+ QCOMPARE(connection.isSsl(), encrypt);
+ connection.setProperty("ignoreFromSignal", ignoreFromSignal);
+
+ QHttpNetworkRequest request(protocol + host + path);
+ QHttpNetworkReply *reply = connection.sendRequest(request);
+ connect(reply, SIGNAL(sslErrors(const QList<QSslError>&)),
+ SLOT(sslErrors(const QList<QSslError>&)));
+
+ finishedWithErrorCalled = false;
+
+ connect(reply, SIGNAL(finished()), SLOT(finishedReply()));
+
+ QTime stopWatch;
+ stopWatch.start();
+ forever {
+ QCoreApplication::instance()->processEvents();
+ if (reply->bytesAvailable())
+ break;
+ if (statusCode == 100 && finishedWithErrorCalled)
+ break;
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ }
+ QCOMPARE(reply->statusCode(), statusCode);
+ delete reply;
+}
+#endif
+
+#ifdef QT_NO_OPENSSL
+Q_DECLARE_METATYPE(QNetworkReply::NetworkError)
+void tst_QHttpNetworkConnection::nossl_data()
+{
+ QTest::addColumn<QString>("protocol");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<ushort>("port");
+ QTest::addColumn<bool>("encrypt");
+ QTest::addColumn<QNetworkReply::NetworkError>("networkError");
+
+ QTest::newRow("protocol-error") << "https://" << QtNetworkSettings::serverName() << "/" << ushort(443) << true <<QNetworkReply::ProtocolUnknownError;
+}
+
+void tst_QHttpNetworkConnection::nossl()
+{
+ QFETCH(QString, protocol);
+ QFETCH(QString, host);
+ QFETCH(QString, path);
+ QFETCH(ushort, port);
+ QFETCH(bool, encrypt);
+ QFETCH(QNetworkReply::NetworkError, networkError);
+
+ QHttpNetworkConnection connection(host, port, encrypt);
+ QCOMPARE(connection.port(), port);
+ QCOMPARE(connection.hostName(), host);
+
+ QHttpNetworkRequest request(protocol + host + path);
+ QHttpNetworkReply *reply = connection.sendRequest(request);
+
+ finishedWithErrorCalled = false;
+ netErrorCode = QNetworkReply::NoError;
+
+ connect(reply, SIGNAL(finished()), SLOT(finishedReply()));
+ connect(reply, SIGNAL(finishedWithError(QNetworkReply::NetworkError, const QString &)),
+ SLOT(finishedWithError(QNetworkReply::NetworkError, const QString &)));
+
+ QTime stopWatch;
+ stopWatch.start();
+ forever {
+ QCoreApplication::instance()->processEvents();
+ if (finishedWithErrorCalled)
+ break;
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ }
+ QCOMPARE(netErrorCode, networkError);
+ delete reply;
+}
+#endif
+
+
+void tst_QHttpNetworkConnection::getMultiple_data()
+{
+ QTest::addColumn<quint16>("connectionCount");
+ QTest::addColumn<bool>("pipeliningAllowed");
+ // send 100 requests. apache will usually force-close after 100 requests in a single tcp connection
+ QTest::addColumn<int>("requestCount");
+
+ QTest::newRow("6 connections, no pipelining, 100 requests") << quint16(6) << false << 100;
+ QTest::newRow("1 connection, no pipelining, 100 requests") << quint16(1) << false << 100;
+ QTest::newRow("6 connections, pipelining allowed, 100 requests") << quint16(6) << true << 100;
+ QTest::newRow("1 connection, pipelining allowed, 100 requests") << quint16(1) << true << 100;
+}
+
+void tst_QHttpNetworkConnection::getMultiple()
+{
+ QFETCH(quint16, connectionCount);
+ QFETCH(bool, pipeliningAllowed);
+ QFETCH(int, requestCount);
+
+ QHttpNetworkConnection connection(connectionCount, QtNetworkSettings::serverName());
+
+ QList<QHttpNetworkRequest*> requests;
+ QList<QHttpNetworkReply*> replies;
+
+ for (int i = 0; i < requestCount; i++) {
+ // depending on what you use the results will vary.
+ // for the "real" results, use a URL that has "internet latency" for you. Then (6 connections, pipelining) will win.
+ // for LAN latency, you will possibly get that (1 connection, no pipelining) is the fastest
+ QHttpNetworkRequest *request = new QHttpNetworkRequest("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
+ // located in Berlin:
+ //QHttpNetworkRequest *request = new QHttpNetworkRequest(QUrl("http://klinsmann.nokia.trolltech.de/~berlin/qtcreatorad.gif"));
+ if (pipeliningAllowed)
+ request->setPipeliningAllowed(true);
+ requests.append(request);
+ QHttpNetworkReply *reply = connection.sendRequest(*request);
+ replies.append(reply);
+ }
+
+ QTime stopWatch;
+ stopWatch.start();
+ int finishedCount = 0;
+ do {
+ QCoreApplication::instance()->processEvents();
+ if (stopWatch.elapsed() >= 60000)
+ break;
+
+ finishedCount = 0;
+ for (int i = 0; i < replies.length(); i++)
+ if (replies.at(i)->isFinished())
+ finishedCount++;
+
+ } while (finishedCount != replies.length());
+
+ // redundant
+ for (int i = 0; i < replies.length(); i++)
+ QVERIFY(replies.at(i)->isFinished());
+
+ qDebug() << "===" << stopWatch.elapsed() << "msec ===";
+
+ qDeleteAll(requests);
+ qDeleteAll(replies);
+}
+
+void tst_QHttpNetworkConnection::getMultipleWithPipeliningAndMultiplePriorities()
+{
+ quint16 requestCount = 100;
+
+ // use 2 connections.
+ QHttpNetworkConnection connection(2, QtNetworkSettings::serverName());
+
+ QList<QHttpNetworkRequest*> requests;
+ QList<QHttpNetworkReply*> replies;
+
+ for (int i = 0; i < requestCount; i++) {
+ QHttpNetworkRequest *request = 0;
+ if (i % 3)
+ request = new QHttpNetworkRequest("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt", QHttpNetworkRequest::Get);
+ else
+ request = new QHttpNetworkRequest("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt", QHttpNetworkRequest::Head);
+
+ if (i % 2 || i % 3)
+ request->setPipeliningAllowed(true);
+
+ if (i % 3)
+ request->setPriority(QHttpNetworkRequest::HighPriority);
+ else if (i % 5)
+ request->setPriority(QHttpNetworkRequest::NormalPriority);
+ else if (i % 7)
+ request->setPriority(QHttpNetworkRequest::LowPriority);
+
+ requests.append(request);
+ QHttpNetworkReply *reply = connection.sendRequest(*request);
+ replies.append(reply);
+ }
+
+ QTime stopWatch;
+ stopWatch.start();
+ int finishedCount = 0;
+ do {
+ QCoreApplication::instance()->processEvents();
+ if (stopWatch.elapsed() >= 60000)
+ break;
+
+ finishedCount = 0;
+ for (int i = 0; i < replies.length(); i++)
+ if (replies.at(i)->isFinished())
+ finishedCount++;
+
+ } while (finishedCount != replies.length());
+
+ int pipelinedCount = 0;
+ for (int i = 0; i < replies.length(); i++) {
+ QVERIFY(replies.at(i)->isFinished());
+ QVERIFY (!(replies.at(i)->request().isPipeliningAllowed() == false
+ && replies.at(i)->isPipeliningUsed()));
+
+ if (replies.at(i)->isPipeliningUsed())
+ pipelinedCount++;
+ }
+
+ // We allow pipelining for every 2nd,3rd,4th,6th,8th,9th,10th etc request.
+ // Assume that half of the requests had been pipelined.
+ // (this is a very relaxed condition, when last measured 79 of 100
+ // requests had been pipelined)
+ QVERIFY(pipelinedCount >= requestCount / 2);
+
+ qDebug() << "===" << stopWatch.elapsed() << "msec ===";
+
+ qDeleteAll(requests);
+ qDeleteAll(replies);
+}
+
+class GetMultipleWithPrioritiesReceiver : public QObject
+{
+ Q_OBJECT
+public:
+ int highPrioReceived;
+ int lowPrioReceived;
+ int requestCount;
+ GetMultipleWithPrioritiesReceiver(int rq) : highPrioReceived(0), lowPrioReceived(0), requestCount(rq) { }
+public Q_SLOTS:
+ void finishedSlot() {
+ QHttpNetworkReply *reply = (QHttpNetworkReply*) sender();
+ if (reply->request().priority() == QHttpNetworkRequest::HighPriority)
+ highPrioReceived++;
+ else if (reply->request().priority() == QHttpNetworkRequest::LowPriority)
+ lowPrioReceived++;
+ else
+ QFAIL("Wrong priority!?");
+
+ QVERIFY(highPrioReceived + 7 >= lowPrioReceived);
+
+ if (highPrioReceived + lowPrioReceived == requestCount)
+ QTestEventLoop::instance().exitLoop();
+ }
+};
+
+void tst_QHttpNetworkConnection::getMultipleWithPriorities()
+{
+ quint16 requestCount = 100;
+ // use 2 connections.
+ QHttpNetworkConnection connection(2, QtNetworkSettings::serverName());
+ GetMultipleWithPrioritiesReceiver receiver(requestCount);
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
+ QList<QHttpNetworkRequest*> requests;
+ QList<QHttpNetworkReply*> replies;
+
+ for (int i = 0; i < requestCount; i++) {
+ QHttpNetworkRequest *request = 0;
+ if (i % 3)
+ request = new QHttpNetworkRequest(url, QHttpNetworkRequest::Get);
+ else
+ request = new QHttpNetworkRequest(url, QHttpNetworkRequest::Head);
+
+ if (i % 2)
+ request->setPriority(QHttpNetworkRequest::HighPriority);
+ else
+ request->setPriority(QHttpNetworkRequest::LowPriority);
+
+ requests.append(request);
+ QHttpNetworkReply *reply = connection.sendRequest(*request);
+ connect(reply, SIGNAL(finished()), &receiver, SLOT(finishedSlot()));
+ replies.append(reply);
+ }
+
+ QTestEventLoop::instance().enterLoop(40);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ qDeleteAll(requests);
+ qDeleteAll(replies);
+}
+
+
+class GetEmptyWithPipeliningReceiver : public QObject
+{
+ Q_OBJECT
+public:
+ int receivedCount;
+ int requestCount;
+ GetEmptyWithPipeliningReceiver(int rq) : receivedCount(0),requestCount(rq) { }
+public Q_SLOTS:
+ void finishedSlot() {
+ QHttpNetworkReply *reply = (QHttpNetworkReply*) sender();
+ Q_UNUSED(reply);
+ receivedCount++;
+
+ if (receivedCount == requestCount)
+ QTestEventLoop::instance().exitLoop();
+ }
+};
+
+void tst_QHttpNetworkConnection::getEmptyWithPipelining()
+{
+ quint16 requestCount = 50;
+ // use 2 connections.
+ QHttpNetworkConnection connection(2, QtNetworkSettings::serverName());
+ GetEmptyWithPipeliningReceiver receiver(requestCount);
+
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/cgi-bin/echo.cgi"); // a get on this = getting an empty file
+ QList<QHttpNetworkRequest*> requests;
+ QList<QHttpNetworkReply*> replies;
+
+ for (int i = 0; i < requestCount; i++) {
+ QHttpNetworkRequest *request = 0;
+ request = new QHttpNetworkRequest(url, QHttpNetworkRequest::Get);
+ request->setPipeliningAllowed(true);
+
+ requests.append(request);
+ QHttpNetworkReply *reply = connection.sendRequest(*request);
+ connect(reply, SIGNAL(finished()), &receiver, SLOT(finishedSlot()));
+ replies.append(reply);
+ }
+
+ QTestEventLoop::instance().enterLoop(20);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ qDeleteAll(requests);
+ qDeleteAll(replies);
+}
+
+class GetAndEverythingShouldBePipelinedReceiver : public QObject
+{
+ Q_OBJECT
+public:
+ int receivedCount;
+ int requestCount;
+ GetAndEverythingShouldBePipelinedReceiver(int rq) : receivedCount(0),requestCount(rq) { }
+public Q_SLOTS:
+ void finishedSlot() {
+ QHttpNetworkReply *reply = (QHttpNetworkReply*) sender();
+ Q_UNUSED(reply);
+ receivedCount++;
+
+ if (receivedCount == requestCount)
+ QTestEventLoop::instance().exitLoop();
+ }
+};
+
+void tst_QHttpNetworkConnection::getAndEverythingShouldBePipelined()
+{
+ quint16 requestCount = 100;
+ // use 1 connection.
+ QHttpNetworkConnection connection(1, QtNetworkSettings::serverName());
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
+ QList<QHttpNetworkRequest*> requests;
+ QList<QHttpNetworkReply*> replies;
+
+ GetAndEverythingShouldBePipelinedReceiver receiver(requestCount);
+
+ for (int i = 0; i < requestCount; i++) {
+ QHttpNetworkRequest *request = 0;
+ request = new QHttpNetworkRequest(url, QHttpNetworkRequest::Get);
+ request->setPipeliningAllowed(true);
+ requests.append(request);
+ QHttpNetworkReply *reply = connection.sendRequest(*request);
+ connect(reply, SIGNAL(finished()), &receiver, SLOT(finishedSlot()));
+ replies.append(reply);
+ }
+ QTestEventLoop::instance().enterLoop(40);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ qDeleteAll(requests);
+ qDeleteAll(replies);
+
+}
+
+
+void tst_QHttpNetworkConnection::getAndThenDeleteObject_data()
+{
+ QTest::addColumn<bool>("replyFirst");
+
+ QTest::newRow("delete-reply-first") << true;
+ QTest::newRow("delete-connection-first") << false;
+}
+
+void tst_QHttpNetworkConnection::getAndThenDeleteObject()
+{
+ // yes, this will leak if the testcase fails. I don't care. It must not fail then :P
+ QHttpNetworkConnection *connection = new QHttpNetworkConnection(QtNetworkSettings::serverName());
+ QHttpNetworkRequest request("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile");
+ QHttpNetworkReply *reply = connection->sendRequest(request);
+ reply->setDownstreamLimited(true);
+
+ QTime stopWatch;
+ stopWatch.start();
+ forever {
+ QCoreApplication::instance()->processEvents();
+ if (reply->bytesAvailable())
+ break;
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ }
+
+ QVERIFY(reply->bytesAvailable());
+ QCOMPARE(reply->statusCode() ,200);
+ QVERIFY(!reply->isFinished()); // must not be finished
+
+ QFETCH(bool, replyFirst);
+
+ if (replyFirst) {
+ delete reply;
+ delete connection;
+ } else {
+ delete connection;
+ delete reply;
+ }
+}
+
+
+
+QTEST_MAIN(tst_QHttpNetworkConnection)
+#include "tst_qhttpnetworkconnection.moc"
diff --git a/tests/auto/qhttpnetworkreply/.gitignore b/tests/auto/network/access/qhttpnetworkreply/.gitignore
index fdd4e2be86..fdd4e2be86 100644
--- a/tests/auto/qhttpnetworkreply/.gitignore
+++ b/tests/auto/network/access/qhttpnetworkreply/.gitignore
diff --git a/tests/auto/qhttpnetworkreply/qhttpnetworkreply.pro b/tests/auto/network/access/qhttpnetworkreply/qhttpnetworkreply.pro
index 8ce9f6f760..8ce9f6f760 100644
--- a/tests/auto/qhttpnetworkreply/qhttpnetworkreply.pro
+++ b/tests/auto/network/access/qhttpnetworkreply/qhttpnetworkreply.pro
diff --git a/tests/auto/qhttpnetworkreply/tst_qhttpnetworkreply.cpp b/tests/auto/network/access/qhttpnetworkreply/tst_qhttpnetworkreply.cpp
index 513b20ec82..513b20ec82 100644
--- a/tests/auto/qhttpnetworkreply/tst_qhttpnetworkreply.cpp
+++ b/tests/auto/network/access/qhttpnetworkreply/tst_qhttpnetworkreply.cpp
diff --git a/tests/auto/qnetworkaccessmanager/qnetworkaccessmanager.pro b/tests/auto/network/access/qnetworkaccessmanager/qnetworkaccessmanager.pro
index 3ccbffbde8..3ccbffbde8 100644
--- a/tests/auto/qnetworkaccessmanager/qnetworkaccessmanager.pro
+++ b/tests/auto/network/access/qnetworkaccessmanager/qnetworkaccessmanager.pro
diff --git a/tests/auto/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp b/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp
index 14804b5187..14804b5187 100644
--- a/tests/auto/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp
+++ b/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp
diff --git a/tests/auto/qnetworkcachemetadata/.gitignore b/tests/auto/network/access/qnetworkcachemetadata/.gitignore
index 76f9e574b1..76f9e574b1 100644
--- a/tests/auto/qnetworkcachemetadata/.gitignore
+++ b/tests/auto/network/access/qnetworkcachemetadata/.gitignore
diff --git a/tests/auto/qnetworkcachemetadata/qnetworkcachemetadata.pro b/tests/auto/network/access/qnetworkcachemetadata/qnetworkcachemetadata.pro
index ae0941e964..ae0941e964 100644
--- a/tests/auto/qnetworkcachemetadata/qnetworkcachemetadata.pro
+++ b/tests/auto/network/access/qnetworkcachemetadata/qnetworkcachemetadata.pro
diff --git a/tests/auto/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp b/tests/auto/network/access/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp
index a5b63bd7d5..a5b63bd7d5 100644
--- a/tests/auto/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp
+++ b/tests/auto/network/access/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp
diff --git a/tests/auto/qnetworkcookie/.gitignore b/tests/auto/network/access/qnetworkcookie/.gitignore
index 90d1081d12..90d1081d12 100644
--- a/tests/auto/qnetworkcookie/.gitignore
+++ b/tests/auto/network/access/qnetworkcookie/.gitignore
diff --git a/tests/auto/qnetworkcookie/qnetworkcookie.pro b/tests/auto/network/access/qnetworkcookie/qnetworkcookie.pro
index 2f31138daf..2f31138daf 100644
--- a/tests/auto/qnetworkcookie/qnetworkcookie.pro
+++ b/tests/auto/network/access/qnetworkcookie/qnetworkcookie.pro
diff --git a/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp b/tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp
index a83f6dda91..a83f6dda91 100644
--- a/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
+++ b/tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp
diff --git a/tests/auto/qnetworkcookiejar/.gitignore b/tests/auto/network/access/qnetworkcookiejar/.gitignore
index 918754a274..918754a274 100644
--- a/tests/auto/qnetworkcookiejar/.gitignore
+++ b/tests/auto/network/access/qnetworkcookiejar/.gitignore
diff --git a/tests/auto/qnetworkcookiejar/qnetworkcookiejar.pro b/tests/auto/network/access/qnetworkcookiejar/qnetworkcookiejar.pro
index 4e5f01745a..4e5f01745a 100644
--- a/tests/auto/qnetworkcookiejar/qnetworkcookiejar.pro
+++ b/tests/auto/network/access/qnetworkcookiejar/qnetworkcookiejar.pro
diff --git a/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
index 1b4256bb00..1b4256bb00 100644
--- a/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
+++ b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
diff --git a/tests/auto/qnetworkdiskcache/.gitignore b/tests/auto/network/access/qnetworkdiskcache/.gitignore
index 37a1ff2a42..37a1ff2a42 100644
--- a/tests/auto/qnetworkdiskcache/.gitignore
+++ b/tests/auto/network/access/qnetworkdiskcache/.gitignore
diff --git a/tests/auto/qnetworkdiskcache/qnetworkdiskcache.pro b/tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro
index c05171dac7..c05171dac7 100644
--- a/tests/auto/qnetworkdiskcache/qnetworkdiskcache.pro
+++ b/tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro
diff --git a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
new file mode 100644
index 0000000000..030eae60a0
--- /dev/null
+++ b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
@@ -0,0 +1,677 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtNetwork/QtNetwork>
+#include <qnetworkdiskcache.h>
+#include "../../../../shared/util.h"
+
+#define EXAMPLE_URL "http://user:pass@www.example.com/#foo"
+//cached objects are organized into these many subdirs
+#define NUM_SUBDIRECTORIES 16
+
+class tst_QNetworkDiskCache : public QObject
+{
+ Q_OBJECT
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void qnetworkdiskcache_data();
+ void qnetworkdiskcache();
+
+ void prepare();
+ void cacheSize();
+ void clear();
+ void data_data();
+ void data();
+ void metaData();
+ void remove();
+ void setCacheDirectory_data();
+ void setCacheDirectory();
+ void updateMetaData();
+ void fileMetaData();
+ void expire();
+
+ void oldCacheVersionFile_data();
+ void oldCacheVersionFile();
+
+ void sync();
+
+ void crashWhenParentingCache();
+};
+
+// FIXME same as in tst_qnetworkreply.cpp .. could be unified
+// Does not work for POST/PUT!
+class MiniHttpServer: public QTcpServer
+{
+ Q_OBJECT
+public:
+ QTcpSocket *client; // always the last one that was received
+ QByteArray dataToTransmit;
+ QByteArray receivedData;
+ bool doClose;
+ bool multiple;
+ int totalConnections;
+
+ MiniHttpServer(const QByteArray &data) : client(0), dataToTransmit(data), doClose(true), multiple(false), totalConnections(0)
+ {
+ listen();
+ connect(this, SIGNAL(newConnection()), this, SLOT(doAccept()));
+ }
+
+public slots:
+ void doAccept()
+ {
+ client = nextPendingConnection();
+ client->setParent(this);
+ ++totalConnections;
+ connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+ }
+
+ void readyReadSlot()
+ {
+ receivedData += client->readAll();
+ int doubleEndlPos = receivedData.indexOf("\r\n\r\n");
+
+ if (doubleEndlPos != -1) {
+ // multiple requests incoming. remove the bytes of the current one
+ if (multiple)
+ receivedData.remove(0, doubleEndlPos+4);
+
+ client->write(dataToTransmit);
+ if (doClose) {
+ client->disconnectFromHost();
+ disconnect(client, 0, this, 0);
+ client = 0;
+ }
+ }
+ }
+};
+
+// Subclass that exposes the protected functions.
+class SubQNetworkDiskCache : public QNetworkDiskCache
+{
+public:
+ ~SubQNetworkDiskCache()
+ {
+ if (!cacheDirectory().isEmpty())
+ clear();
+ }
+
+ QNetworkCacheMetaData call_fileMetaData(QString const &fileName)
+ { return SubQNetworkDiskCache::fileMetaData(fileName); }
+
+ qint64 call_expire()
+ { return SubQNetworkDiskCache::expire(); }
+
+ void setupWithOne(const QUrl &url, const QNetworkCacheMetaData &metaData = QNetworkCacheMetaData())
+ {
+ setCacheDirectory(QDir::tempPath() + "/diskCache");
+
+ QIODevice *d = 0;
+ if (metaData.isValid()) {
+ d = prepare(metaData);
+ } else {
+ QNetworkCacheMetaData m;
+ m.setUrl(url);
+ QNetworkCacheMetaData::RawHeader header("content-type", "text/html");
+ QNetworkCacheMetaData::RawHeaderList list;
+ list.append(header);
+ m.setRawHeaders(list);
+ d = prepare(m);
+ }
+ d->write("Hello World!");
+ insert(d);
+ }
+};
+
+// This will be called before the first test function is executed.
+// It is only called once.
+void tst_QNetworkDiskCache::initTestCase()
+{
+ SubQNetworkDiskCache cache;
+ cache.setCacheDirectory(QDir::tempPath() + "/diskCache");
+ cache.clear();
+ QString s = QDir::tempPath() + "/diskCache/";
+ QDir dir;
+ dir.rmdir(s + "data7"); // the number is the internal cache version
+ dir.rmdir(s + "prepared");
+ dir.rmdir(s);
+ dir.rmdir(s + "http"); // delete directory used by 4.7 and earlier (would make the tests fail)
+}
+
+// This will be called after the last test function is executed.
+// It is only called once.
+void tst_QNetworkDiskCache::cleanupTestCase()
+{
+}
+
+// This will be called before each test function is executed.
+void tst_QNetworkDiskCache::init()
+{
+}
+
+// This will be called after every test function.
+void tst_QNetworkDiskCache::cleanup()
+{
+}
+
+void tst_QNetworkDiskCache::qnetworkdiskcache_data()
+{
+}
+
+void tst_QNetworkDiskCache::qnetworkdiskcache()
+{
+ QUrl url(EXAMPLE_URL);
+ SubQNetworkDiskCache cache;
+ QCOMPARE(cache.cacheDirectory(), QString());
+ QCOMPARE(cache.cacheSize(), qint64(0));
+ cache.clear();
+ QCOMPARE(cache.metaData(QUrl()), QNetworkCacheMetaData());
+ QCOMPARE(cache.remove(QUrl()), false);
+ QCOMPARE(cache.remove(url), false);
+ cache.insert((QIODevice*)0);
+ cache.setCacheDirectory(QString());
+ cache.updateMetaData(QNetworkCacheMetaData());
+ cache.prepare(QNetworkCacheMetaData());
+ QCOMPARE(cache.call_fileMetaData(QString()), QNetworkCacheMetaData());
+
+ // leave one hanging around...
+ QNetworkDiskCache badCache;
+ QNetworkCacheMetaData metaData;
+ metaData.setUrl(url);
+ badCache.prepare(metaData);
+ badCache.setCacheDirectory(QDir::tempPath() + "/diskCache");
+ badCache.prepare(metaData);
+}
+
+void tst_QNetworkDiskCache::prepare()
+{
+ SubQNetworkDiskCache cache;
+ cache.setCacheDirectory(QDir::tempPath() + "/diskCache");
+
+ QUrl url(EXAMPLE_URL);
+ QNetworkCacheMetaData metaData;
+ metaData.setUrl(url);
+
+ cache.prepare(metaData);
+ cache.remove(url);
+}
+
+// public qint64 cacheSize() const
+void tst_QNetworkDiskCache::cacheSize()
+{
+ SubQNetworkDiskCache cache;
+ cache.setCacheDirectory(QDir::tempPath() + "/diskCache");
+ QCOMPARE(cache.cacheSize(), qint64(0));
+
+ QUrl url(EXAMPLE_URL);
+ QNetworkCacheMetaData metaData;
+ metaData.setUrl(url);
+ QIODevice *d = cache.prepare(metaData);
+ cache.insert(d);
+ QVERIFY(cache.cacheSize() > qint64(0));
+
+ cache.clear();
+ QCOMPARE(cache.cacheSize(), qint64(0));
+}
+
+static QStringList countFiles(const QString dir)
+{
+ QStringList list;
+ QDir::Filters filter(QDir::AllEntries | QDir::NoDotAndDotDot);
+ QDirIterator it(dir, filter, QDirIterator::Subdirectories);
+ while (it.hasNext())
+ list.append(it.next());
+ return list;
+}
+
+// public void clear()
+void tst_QNetworkDiskCache::clear()
+{
+ SubQNetworkDiskCache cache;
+ QUrl url(EXAMPLE_URL);
+ cache.setupWithOne(url);
+ QVERIFY(cache.cacheSize() > qint64(0));
+
+ QString cacheDirectory = cache.cacheDirectory();
+ QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 3);
+ cache.clear();
+ QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 2);
+
+ // don't delete files that it didn't create
+ QTemporaryFile file(cacheDirectory + "/XXXXXX");
+ if (file.open()) {
+ QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 3);
+ cache.clear();
+ QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 3);
+ }
+}
+
+Q_DECLARE_METATYPE(QNetworkCacheMetaData)
+void tst_QNetworkDiskCache::data_data()
+{
+ QTest::addColumn<QNetworkCacheMetaData>("data");
+
+ QTest::newRow("null") << QNetworkCacheMetaData();
+
+ QUrl url(EXAMPLE_URL);
+ QNetworkCacheMetaData metaData;
+ metaData.setUrl(url);
+ QNetworkCacheMetaData::RawHeaderList headers;
+ headers.append(QNetworkCacheMetaData::RawHeader("type", "bin"));
+ metaData.setRawHeaders(headers);
+ QTest::newRow("null") << metaData;
+}
+
+// public QIODevice* data(QUrl const& url)
+void tst_QNetworkDiskCache::data()
+{
+ QFETCH(QNetworkCacheMetaData, data);
+ SubQNetworkDiskCache cache;
+ QUrl url(EXAMPLE_URL);
+ cache.setupWithOne(url, data);
+
+ for (int i = 0; i < 3; ++i) {
+ QIODevice *d = cache.data(url);
+ QVERIFY(d);
+ QCOMPARE(d->readAll(), QByteArray("Hello World!"));
+ delete d;
+ }
+}
+
+// public QNetworkCacheMetaData metaData(QUrl const& url)
+void tst_QNetworkDiskCache::metaData()
+{
+ SubQNetworkDiskCache cache;
+
+ QUrl url(EXAMPLE_URL);
+ QNetworkCacheMetaData metaData;
+ metaData.setUrl(url);
+ QNetworkCacheMetaData::RawHeaderList headers;
+ headers.append(QNetworkCacheMetaData::RawHeader("type", "bin"));
+ metaData.setRawHeaders(headers);
+ metaData.setLastModified(QDateTime::currentDateTime());
+ metaData.setExpirationDate(QDateTime::currentDateTime());
+ metaData.setSaveToDisk(true);
+
+ cache.setupWithOne(url, metaData);
+
+ for (int i = 0; i < 3; ++i) {
+ QNetworkCacheMetaData cacheMetaData = cache.metaData(url);
+ QVERIFY(cacheMetaData.isValid());
+ QCOMPARE(metaData, cacheMetaData);
+ }
+}
+
+// public bool remove(QUrl const& url)
+void tst_QNetworkDiskCache::remove()
+{
+ SubQNetworkDiskCache cache;
+ QUrl url(EXAMPLE_URL);
+ cache.setupWithOne(url);
+ QString cacheDirectory = cache.cacheDirectory();
+ QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 3);
+ cache.remove(url);
+ QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 2);
+}
+
+void tst_QNetworkDiskCache::setCacheDirectory_data()
+{
+ QTest::addColumn<QString>("cacheDir");
+ QTest::newRow("null") << QString();
+ QDir dir("foo");
+ QTest::newRow("foo") << dir.absolutePath() + QString("/");
+}
+
+// public void setCacheDirectory(QString const& cacheDir)
+void tst_QNetworkDiskCache::setCacheDirectory()
+{
+ QFETCH(QString, cacheDir);
+
+ SubQNetworkDiskCache cache;
+ cache.setCacheDirectory(cacheDir);
+ QCOMPARE(cache.cacheDirectory(), cacheDir);
+}
+
+// public void updateMetaData(QNetworkCacheMetaData const& metaData)
+void tst_QNetworkDiskCache::updateMetaData()
+{
+ QUrl url(EXAMPLE_URL);
+ SubQNetworkDiskCache cache;
+ cache.setupWithOne(url);
+
+ QNetworkCacheMetaData metaData = cache.metaData(url);
+ metaData.setLastModified(QDateTime::currentDateTime());
+ cache.updateMetaData(metaData);
+ QNetworkCacheMetaData newMetaData = cache.metaData(url);
+ QCOMPARE(newMetaData, metaData);
+}
+
+// protected QNetworkCacheMetaData fileMetaData(QString const& fileName)
+void tst_QNetworkDiskCache::fileMetaData()
+{
+ SubQNetworkDiskCache cache;
+ QUrl url(EXAMPLE_URL);
+ cache.setupWithOne(url);
+
+ url.setPassword(QString());
+ url.setFragment(QString());
+
+ QString cacheDirectory = cache.cacheDirectory();
+ QStringList list = countFiles(cacheDirectory);
+ QCOMPARE(list.count(), NUM_SUBDIRECTORIES + 3);
+ foreach(QString fileName, list) {
+ QFileInfo info(fileName);
+ if (info.isFile()) {
+ QNetworkCacheMetaData metaData = cache.call_fileMetaData(fileName);
+ QCOMPARE(metaData.url(), url);
+ }
+ }
+
+ QTemporaryFile file(cacheDirectory + "/qt_temp.XXXXXX");
+ if (file.open()) {
+ QNetworkCacheMetaData metaData = cache.call_fileMetaData(file.fileName());
+ QVERIFY(!metaData.isValid());
+ }
+}
+
+// protected qint64 expire()
+void tst_QNetworkDiskCache::expire()
+{
+ SubQNetworkDiskCache cache;
+ cache.setCacheDirectory(QDir::tempPath() + "/diskCache");
+ QCOMPARE(cache.call_expire(), (qint64)0);
+ QUrl url(EXAMPLE_URL);
+ cache.setupWithOne(url);
+ QVERIFY(cache.call_expire() > (qint64)0);
+ qint64 limit = (1024 * 1024 / 4) * 5;
+ cache.setMaximumCacheSize(limit);
+
+ qint64 max = cache.maximumCacheSize();
+ QCOMPARE(max, limit);
+ for (int i = 0; i < 10; ++i) {
+ if (i % 3 == 0)
+ QTest::qWait(2000);
+ QNetworkCacheMetaData m;
+ m.setUrl(QUrl("http://www.foo.com/" + QString::number(i)));
+ QIODevice *d = cache.prepare(m);
+ QString bigString;
+ bigString.fill(QLatin1Char('Z'), (1024 * 1024 / 4));
+ d->write(bigString.toLatin1().data());
+ cache.insert(d);
+ QVERIFY(cache.call_expire() < max);
+ }
+
+ QString cacheDirectory = cache.cacheDirectory();
+ QStringList list = countFiles(cacheDirectory);
+ QStringList cacheList;
+ foreach(QString fileName, list) {
+ QFileInfo info(fileName);
+ if (info.isFile()) {
+ QNetworkCacheMetaData metaData = cache.call_fileMetaData(fileName);
+ cacheList.append(metaData.url().toString());
+ }
+ }
+ qSort(cacheList);
+ for (int i = 0; i < cacheList.count(); ++i) {
+ QString fileName = cacheList[i];
+ QCOMPARE(fileName, QString("http://www.foo.com/%1").arg(i + 6));
+ }
+}
+
+void tst_QNetworkDiskCache::oldCacheVersionFile_data()
+{
+ QTest::addColumn<int>("pass");
+ QTest::newRow("0") << 0;
+ QTest::newRow("1") << 1;
+}
+
+void tst_QNetworkDiskCache::oldCacheVersionFile()
+{
+ QFETCH(int, pass);
+ SubQNetworkDiskCache cache;
+ QUrl url(EXAMPLE_URL);
+ cache.setupWithOne(url);
+
+ if (pass == 0) {
+ QString name;
+ {
+ QTemporaryFile file(cache.cacheDirectory() + "/XXXXXX.d");
+ file.setAutoRemove(false);
+ QVERIFY(file.open());
+ QDataStream out(&file);
+ out << qint32(0xe8);
+ out << qint32(2);
+ name = file.fileName();
+ file.close();
+ }
+
+ QVERIFY(QFile::exists(name));
+ QNetworkCacheMetaData metaData = cache.call_fileMetaData(name);
+ QVERIFY(!metaData.isValid());
+ QVERIFY(!QFile::exists(name));
+ } else {
+ QStringList files = countFiles(cache.cacheDirectory());
+ QCOMPARE(files.count(), NUM_SUBDIRECTORIES + 3);
+ // find the file
+ QString cacheFile;
+ foreach (QString file, files) {
+ QFileInfo info(file);
+ if (info.isFile())
+ cacheFile = file;
+ }
+ QVERIFY(QFile::exists(cacheFile));
+
+ QFile file(cacheFile);
+ QVERIFY(file.open(QFile::ReadWrite));
+ QDataStream out(&file);
+ out << qint32(0xe8);
+ out << qint32(2);
+ file.close();
+
+ QIODevice *device = cache.data(url);
+ QVERIFY(!device);
+ QVERIFY(!QFile::exists(cacheFile));
+ }
+}
+
+class Runner : public QThread
+{
+
+public:
+ Runner()
+ : QThread()
+ , other(0)
+ {}
+
+ void run()
+ {
+ QByteArray longString = "Hello World, this is some long string, well not really that long";
+ for (int j = 0; j < 10; ++j)
+ longString += longString;
+ QByteArray longString2 = "Help, I am stuck in an autotest!";
+ QUrl url(EXAMPLE_URL);
+
+ QNetworkCacheMetaData metaData;
+ metaData.setUrl(url);
+ QNetworkCacheMetaData::RawHeaderList headers;
+ headers.append(QNetworkCacheMetaData::RawHeader("type", "bin"));
+ metaData.setRawHeaders(headers);
+ metaData.setLastModified(dt);
+ metaData.setSaveToDisk(true);
+
+ QNetworkCacheMetaData metaData2 = metaData;
+ metaData2.setExpirationDate(dt);
+
+ QNetworkDiskCache cache;
+ cache.setCacheDirectory(QDir::tempPath() + "/diskCache");
+
+ int read = 0;
+
+ int i = 0;
+ for (; i < 5000; ++i) {
+ if (other && other->isFinished())
+ break;
+
+ if (write) {
+ QNetworkCacheMetaData m;
+ if (qrand() % 2 == 0)
+ m = metaData;
+ else
+ m = metaData2;
+
+ if (qrand() % 20 == 1) {
+ //qDebug() << "write update";
+ cache.updateMetaData(m);
+ continue;
+ }
+
+ QIODevice *device = cache.prepare(m);
+ if (qrand() % 20 == 1) {
+ //qDebug() << "write remove";
+ cache.remove(url);
+ continue;
+ }
+ QVERIFY(device);
+ if (qrand() % 2 == 0)
+ device->write(longString);
+ else
+ device->write(longString2);
+ //qDebug() << "write write" << device->size();
+ cache.insert(device);
+ continue;
+ }
+
+ QNetworkCacheMetaData gotMetaData = cache.metaData(url);
+ if (gotMetaData.isValid()) {
+ QVERIFY(gotMetaData == metaData || gotMetaData == metaData2);
+ QIODevice *d = cache.data(url);
+ if (d) {
+ QByteArray x = d->readAll();
+ if (x != longString && x != longString2) {
+ qDebug() << x.length() << QString(x);
+ gotMetaData = cache.metaData(url);
+ qDebug() << (gotMetaData.url().toString())
+ << gotMetaData.lastModified()
+ << gotMetaData.expirationDate()
+ << gotMetaData.saveToDisk();
+ }
+ if (gotMetaData.isValid())
+ QVERIFY(x == longString || x == longString2);
+ read++;
+ delete d;
+ }
+ }
+ if (qrand() % 5 == 1)
+ cache.remove(url);
+ if (qrand() % 5 == 1)
+ cache.clear();
+ sleep(0);
+ }
+ //qDebug() << "read!" << read << i;
+ }
+
+ QDateTime dt;
+ bool write;
+ Runner *other;
+};
+
+void tst_QNetworkDiskCache::crashWhenParentingCache()
+{
+ // the trick here is to not send the complete response
+ // but some data. So we get a readyRead() and it gets tried
+ // to be saved to the cache
+ QByteArray data("HTTP/1.0 200 OK\r\nCache-Control: max-age=300\r\nAge: 1\r\nContent-Length: 5\r\n\r\n123");
+ MiniHttpServer server(data);
+
+ QNetworkAccessManager *manager = new QNetworkAccessManager();
+ QNetworkDiskCache *diskCache = new QNetworkDiskCache(manager); // parent to qnam!
+ // we expect the temp dir to be cleaned at some point anyway
+ diskCache->setCacheDirectory(QString("%1/cacheDir_%2").arg(QDir::tempPath()).arg(QCoreApplication::applicationPid()));
+ manager->setCache(diskCache);
+
+ QUrl url("http://127.0.0.1:" + QString::number(server.serverPort()));
+ QNetworkRequest request(url);
+ // request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork);
+ QNetworkReply *reply = manager->get(request); // new reply is parented to qnam
+
+ // wait for readyRead of reply!
+ connect(reply, SIGNAL(readyRead()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ delete manager; // crashed before..
+}
+
+void tst_QNetworkDiskCache::sync()
+{
+ // This tests would be a nice to have, but is currently not supported.
+ return;
+
+ QTime midnight(0, 0, 0);
+ qsrand(midnight.secsTo(QTime::currentTime()));
+ Runner reader;
+ reader.dt = QDateTime::currentDateTime();
+ reader.write = false;
+
+ Runner writer;
+ writer.dt = reader.dt;
+ writer.write = true;
+
+ writer.other = &reader;
+ reader.other = &writer;
+
+ writer.start();
+ reader.start();
+ writer.wait();
+ reader.wait();
+}
+
+QTEST_MAIN(tst_QNetworkDiskCache)
+#include "tst_qnetworkdiskcache.moc"
+
diff --git a/tests/auto/qnetworkreply/.gitattributes b/tests/auto/network/access/qnetworkreply/.gitattributes
index 80252cfd34..80252cfd34 100644
--- a/tests/auto/qnetworkreply/.gitattributes
+++ b/tests/auto/network/access/qnetworkreply/.gitattributes
diff --git a/tests/auto/qnetworkreply/.gitignore b/tests/auto/network/access/qnetworkreply/.gitignore
index 2797fcd809..2797fcd809 100644
--- a/tests/auto/qnetworkreply/.gitignore
+++ b/tests/auto/network/access/qnetworkreply/.gitignore
diff --git a/tests/auto/qnetworkreply/bigfile b/tests/auto/network/access/qnetworkreply/bigfile
index cb114a2b0e..cb114a2b0e 100644
--- a/tests/auto/qnetworkreply/bigfile
+++ b/tests/auto/network/access/qnetworkreply/bigfile
diff --git a/tests/auto/qnetworkreply/certs/aspiriniks.ca.crt b/tests/auto/network/access/qnetworkreply/certs/aspiriniks.ca.crt
index 36436b6248..36436b6248 100644
--- a/tests/auto/qnetworkreply/certs/aspiriniks.ca.crt
+++ b/tests/auto/network/access/qnetworkreply/certs/aspiriniks.ca.crt
diff --git a/tests/auto/qnetworkreply/certs/fluke.cert b/tests/auto/network/access/qnetworkreply/certs/fluke.cert
index 069fa6b341..069fa6b341 100644
--- a/tests/auto/qnetworkreply/certs/fluke.cert
+++ b/tests/auto/network/access/qnetworkreply/certs/fluke.cert
diff --git a/tests/auto/qnetworkreply/certs/fluke.key b/tests/auto/network/access/qnetworkreply/certs/fluke.key
index 9d1664d609..9d1664d609 100644
--- a/tests/auto/qnetworkreply/certs/fluke.key
+++ b/tests/auto/network/access/qnetworkreply/certs/fluke.key
diff --git a/tests/auto/qnetworkreply/certs/qt-test-server-cacert.pem b/tests/auto/network/access/qnetworkreply/certs/qt-test-server-cacert.pem
index 25bd4046e8..25bd4046e8 100644
--- a/tests/auto/qnetworkreply/certs/qt-test-server-cacert.pem
+++ b/tests/auto/network/access/qnetworkreply/certs/qt-test-server-cacert.pem
diff --git a/tests/auto/qnetworkreply/certs/server.key b/tests/auto/network/access/qnetworkreply/certs/server.key
index 9d1664d609..9d1664d609 100644
--- a/tests/auto/qnetworkreply/certs/server.key
+++ b/tests/auto/network/access/qnetworkreply/certs/server.key
diff --git a/tests/auto/qnetworkreply/certs/server.pem b/tests/auto/network/access/qnetworkreply/certs/server.pem
index 67eb495319..67eb495319 100644
--- a/tests/auto/qnetworkreply/certs/server.pem
+++ b/tests/auto/network/access/qnetworkreply/certs/server.pem
diff --git a/tests/auto/qnetworkreply/echo/echo.pro b/tests/auto/network/access/qnetworkreply/echo/echo.pro
index 74b0bfcab3..74b0bfcab3 100644
--- a/tests/auto/qnetworkreply/echo/echo.pro
+++ b/tests/auto/network/access/qnetworkreply/echo/echo.pro
diff --git a/tests/auto/qnetworkreply/echo/main.cpp b/tests/auto/network/access/qnetworkreply/echo/main.cpp
index a4ddda171a..a4ddda171a 100644
--- a/tests/auto/qnetworkreply/echo/main.cpp
+++ b/tests/auto/network/access/qnetworkreply/echo/main.cpp
diff --git a/tests/auto/qnetworkreply/empty b/tests/auto/network/access/qnetworkreply/empty
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qnetworkreply/empty
+++ b/tests/auto/network/access/qnetworkreply/empty
diff --git a/tests/auto/qnetworkreply/image1.jpg b/tests/auto/network/access/qnetworkreply/image1.jpg
index dba31c1901..dba31c1901 100644
--- a/tests/auto/qnetworkreply/image1.jpg
+++ b/tests/auto/network/access/qnetworkreply/image1.jpg
Binary files differ
diff --git a/tests/auto/qnetworkreply/image2.jpg b/tests/auto/network/access/qnetworkreply/image2.jpg
index 72936e2de6..72936e2de6 100644
--- a/tests/auto/qnetworkreply/image2.jpg
+++ b/tests/auto/network/access/qnetworkreply/image2.jpg
Binary files differ
diff --git a/tests/auto/qnetworkreply/image3.jpg b/tests/auto/network/access/qnetworkreply/image3.jpg
index cede519938..cede519938 100644
--- a/tests/auto/qnetworkreply/image3.jpg
+++ b/tests/auto/network/access/qnetworkreply/image3.jpg
Binary files differ
diff --git a/tests/auto/qnetworkreply/qnetworkreply.pro b/tests/auto/network/access/qnetworkreply/qnetworkreply.pro
index 86d3155c05..86d3155c05 100644
--- a/tests/auto/qnetworkreply/qnetworkreply.pro
+++ b/tests/auto/network/access/qnetworkreply/qnetworkreply.pro
diff --git a/tests/auto/qnetworkreply/qnetworkreply.qrc b/tests/auto/network/access/qnetworkreply/qnetworkreply.qrc
index 85ca6312af..85ca6312af 100644
--- a/tests/auto/qnetworkreply/qnetworkreply.qrc
+++ b/tests/auto/network/access/qnetworkreply/qnetworkreply.qrc
diff --git a/tests/auto/qnetworkreply/resource b/tests/auto/network/access/qnetworkreply/resource
index e9b146042d..e9b146042d 100644
--- a/tests/auto/qnetworkreply/resource
+++ b/tests/auto/network/access/qnetworkreply/resource
diff --git a/tests/auto/qnetworkreply/rfc3252.txt b/tests/auto/network/access/qnetworkreply/rfc3252.txt
index b80c61bf0a..b80c61bf0a 100644
--- a/tests/auto/qnetworkreply/rfc3252.txt
+++ b/tests/auto/network/access/qnetworkreply/rfc3252.txt
diff --git a/tests/auto/qnetworkreply/smb-file.txt b/tests/auto/network/access/qnetworkreply/smb-file.txt
index 73c3ac2c07..73c3ac2c07 100644
--- a/tests/auto/qnetworkreply/smb-file.txt
+++ b/tests/auto/network/access/qnetworkreply/smb-file.txt
diff --git a/tests/auto/qnetworkreply/test/test.pro b/tests/auto/network/access/qnetworkreply/test/test.pro
index dba1c69dbb..dba1c69dbb 100644
--- a/tests/auto/qnetworkreply/test/test.pro
+++ b/tests/auto/network/access/qnetworkreply/test/test.pro
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
new file mode 100644
index 0000000000..dd9fe8ee82
--- /dev/null
+++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -0,0 +1,6342 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/QCryptographicHash>
+#include <QtCore/QDataStream>
+#include <QtCore/QUrl>
+#include <QtCore/QEventLoop>
+#include <QtCore/QFile>
+#include <QtCore/QSharedPointer>
+#include <QtCore/QScopedPointer>
+#include <QtCore/QTemporaryFile>
+#include <QtNetwork/QTcpServer>
+#include <QtNetwork/QTcpSocket>
+#include <QtNetwork/QLocalSocket>
+#include <QtNetwork/QLocalServer>
+#include <QtNetwork/QHostInfo>
+#include <QtNetwork/QFtp>
+#include <QtNetwork/QAbstractNetworkCache>
+#include <QtNetwork/qauthenticator.h>
+#include <QtNetwork/qnetworkaccessmanager.h>
+#include <QtNetwork/qnetworkrequest.h>
+#include <QtNetwork/qnetworkreply.h>
+#include <QtNetwork/qnetworkcookie.h>
+#include <QtNetwork/QHttpPart>
+#include <QtNetwork/QHttpMultiPart>
+#ifndef QT_NO_OPENSSL
+#include <QtNetwork/qsslerror.h>
+#include <QtNetwork/qsslconfiguration.h>
+#endif
+#ifndef QT_NO_BEARERMANAGEMENT
+#include <QtNetwork/qnetworkconfigmanager.h>
+#include <QtNetwork/qnetworkconfiguration.h>
+#include <QtNetwork/qnetworksession.h>
+#endif
+
+#include <time.h>
+
+#include "private/qnetworkaccessmanager_p.h"
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR "."
+#endif
+
+#include "../../../network-settings.h"
+
+Q_DECLARE_METATYPE(QSharedPointer<char>)
+Q_DECLARE_METATYPE(QNetworkReply*)
+Q_DECLARE_METATYPE(QAuthenticator*)
+Q_DECLARE_METATYPE(QNetworkProxy)
+Q_DECLARE_METATYPE(QNetworkProxyQuery)
+Q_DECLARE_METATYPE(QList<QNetworkProxy>)
+Q_DECLARE_METATYPE(QNetworkReply::NetworkError)
+Q_DECLARE_METATYPE(QBuffer*)
+Q_DECLARE_METATYPE(QHttpMultiPart *)
+Q_DECLARE_METATYPE(QList<QFile*>) // for multiparts
+#ifndef QT_NO_OPENSSL
+Q_DECLARE_METATYPE(QSslConfiguration)
+#endif
+
+class QNetworkReplyPtr: public QSharedPointer<QNetworkReply>
+{
+public:
+ inline QNetworkReplyPtr(QNetworkReply *ptr = 0)
+ : QSharedPointer<QNetworkReply>(ptr)
+ { }
+
+ inline operator QNetworkReply *() const { return data(); }
+};
+
+class MyCookieJar;
+class tst_QNetworkReply: public QObject
+{
+ Q_OBJECT
+
+ struct ProxyData {
+ ProxyData(const QNetworkProxy &p, const QByteArray &t, bool auth)
+ : tag(t), proxy(p), requiresAuthentication(auth)
+ { }
+ QByteArray tag;
+ QNetworkProxy proxy;
+ bool requiresAuthentication;
+ };
+
+ static bool seedCreated;
+ static QString createUniqueExtension() {
+ if (!seedCreated) {
+ qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()) + QCoreApplication::applicationPid());
+ seedCreated = true; // not thread-safe, but who cares
+ }
+ QString s = QString("%1-%2-%3").arg(QTime(0,0,0).msecsTo(QTime::currentTime())).arg(QCoreApplication::applicationPid()).arg(qrand());
+ return s;
+ };
+
+ QEventLoop *loop;
+ enum RunSimpleRequestReturn { Timeout = 0, Success, Failure };
+ int returnCode;
+ QString testFileName;
+#if !defined Q_OS_WIN
+ QString wronlyFileName;
+#endif
+ QString uniqueExtension;
+ QList<ProxyData> proxies;
+ QNetworkAccessManager manager;
+ MyCookieJar *cookieJar;
+#ifndef QT_NO_OPENSSL
+ QSslConfiguration storedSslConfiguration;
+ QList<QSslError> storedExpectedSslErrors;
+#endif
+#ifndef QT_NO_BEARERMANAGEMENT
+ QNetworkConfigurationManager *netConfMan;
+ QNetworkConfiguration networkConfiguration;
+ QScopedPointer<QNetworkSession> networkSession;
+#endif
+
+public:
+ tst_QNetworkReply();
+ ~tst_QNetworkReply();
+ QString runSimpleRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request,
+ QNetworkReplyPtr &reply, const QByteArray &data = QByteArray());
+ QString runMultipartRequest(const QNetworkRequest &request, QNetworkReplyPtr &reply,
+ QHttpMultiPart *multiPart, const QByteArray &verb);
+
+ QString runCustomRequest(const QNetworkRequest &request, QNetworkReplyPtr &reply,
+ const QByteArray &verb, QIODevice *data);
+
+public Q_SLOTS:
+ void finished();
+ void gotError();
+ void authenticationRequired(QNetworkReply*,QAuthenticator*);
+ void proxyAuthenticationRequired(const QNetworkProxy &,QAuthenticator*);
+
+#ifndef QT_NO_OPENSSL
+ void sslErrors(QNetworkReply*,const QList<QSslError> &);
+ void storeSslConfiguration();
+ void ignoreSslErrorListSlot(QNetworkReply *reply, const QList<QSslError> &);
+#endif
+
+protected Q_SLOTS:
+ void nestedEventLoops_slot();
+
+private Q_SLOTS:
+ void init();
+ void cleanup();
+ void initTestCase();
+ void cleanupTestCase();
+
+ void stateChecking();
+ void invalidProtocol();
+ void getFromData_data();
+ void getFromData();
+ void getFromFile();
+ void getFromFileSpecial_data();
+ void getFromFileSpecial();
+ void getFromFtp_data();
+ void getFromFtp();
+ void getFromHttp_data();
+ void getFromHttp();
+ void getErrors_data();
+ void getErrors();
+ void putToFile_data();
+ void putToFile();
+ void putToFtp_data();
+ void putToFtp();
+ void putToHttp_data();
+ void putToHttp();
+ void putToHttpSynchronous_data();
+ void putToHttpSynchronous();
+ void putToHttpMultipart_data();
+ void putToHttpMultipart();
+ void postToHttp_data();
+ void postToHttp();
+ void postToHttpSynchronous_data();
+ void postToHttpSynchronous();
+ void postToHttpMultipart_data();
+ void postToHttpMultipart();
+ void deleteFromHttp_data();
+ void deleteFromHttp();
+ void putGetDeleteGetFromHttp_data();
+ void putGetDeleteGetFromHttp();
+ void sendCustomRequestToHttp_data();
+ void sendCustomRequestToHttp();
+ void connectToIPv6Address_data();
+ void connectToIPv6Address();
+
+ void ioGetFromData_data();
+ void ioGetFromData();
+ void ioGetFromFileSpecial_data();
+ void ioGetFromFileSpecial();
+ void ioGetFromFile_data();
+ void ioGetFromFile();
+ void ioGetFromFtp_data();
+ void ioGetFromFtp();
+ void ioGetFromFtpWithReuse();
+ void ioGetFromHttp();
+
+ void ioGetFromBuiltinHttp_data();
+ void ioGetFromBuiltinHttp();
+ void ioGetFromHttpWithReuseParallel();
+ void ioGetFromHttpWithReuseSequential();
+ void ioGetFromHttpWithAuth_data();
+ void ioGetFromHttpWithAuth();
+ void ioGetFromHttpWithAuthSynchronous();
+ void ioGetFromHttpWithProxyAuth();
+ void ioGetFromHttpWithProxyAuthSynchronous();
+ void ioGetFromHttpWithSocksProxy();
+#ifndef QT_NO_OPENSSL
+ void ioGetFromHttpsWithSslErrors();
+ void ioGetFromHttpsWithIgnoreSslErrors();
+ void ioGetFromHttpsWithSslHandshakeError();
+#endif
+ void ioGetFromHttpBrokenServer_data();
+ void ioGetFromHttpBrokenServer();
+ void ioGetFromHttpStatus100_data();
+ void ioGetFromHttpStatus100();
+ void ioGetFromHttpNoHeaders_data();
+ void ioGetFromHttpNoHeaders();
+ void ioGetFromHttpWithCache_data();
+ void ioGetFromHttpWithCache();
+
+ void ioGetWithManyProxies_data();
+ void ioGetWithManyProxies();
+
+ void ioPutToFileFromFile_data();
+ void ioPutToFileFromFile();
+ void ioPutToFileFromSocket_data();
+ void ioPutToFileFromSocket();
+ void ioPutToFileFromLocalSocket_data();
+ void ioPutToFileFromLocalSocket();
+ void ioPutToFileFromProcess_data();
+ void ioPutToFileFromProcess();
+ void ioPutToFtpFromFile_data();
+ void ioPutToFtpFromFile();
+ void ioPutToHttpFromFile_data();
+ void ioPutToHttpFromFile();
+ void ioPostToHttpFromFile_data();
+ void ioPostToHttpFromFile();
+ void ioPostToHttpFromSocket_data();
+ void ioPostToHttpFromSocket();
+ void ioPostToHttpFromSocketSynchronous();
+ void ioPostToHttpFromSocketSynchronous_data();
+ void ioPostToHttpFromMiddleOfFileToEnd();
+ void ioPostToHttpFromMiddleOfFileFiveBytes();
+ void ioPostToHttpFromMiddleOfQBufferFiveBytes();
+ void ioPostToHttpNoBufferFlag();
+ void ioPostToHttpUploadProgress();
+ void ioPostToHttpEmptyUploadProgress();
+
+ void lastModifiedHeaderForFile();
+ void lastModifiedHeaderForHttp();
+
+ void httpCanReadLine();
+
+ void rateControl_data();
+ void rateControl();
+
+ void downloadProgress_data();
+ void downloadProgress();
+ void uploadProgress_data();
+ void uploadProgress();
+
+ void chaining_data();
+ void chaining();
+
+ void receiveCookiesFromHttp_data();
+ void receiveCookiesFromHttp();
+ void receiveCookiesFromHttpSynchronous_data();
+ void receiveCookiesFromHttpSynchronous();
+ void sendCookies_data();
+ void sendCookies();
+ void sendCookiesSynchronous_data();
+ void sendCookiesSynchronous();
+
+ void nestedEventLoops();
+
+ void httpProxyCommands_data();
+ void httpProxyCommands();
+ void httpProxyCommandsSynchronous_data();
+ void httpProxyCommandsSynchronous();
+ void proxyChange();
+ void authorizationError_data();
+ void authorizationError();
+
+ void httpConnectionCount();
+
+ void httpReUsingConnectionSequential_data();
+ void httpReUsingConnectionSequential();
+ void httpReUsingConnectionFromFinishedSlot_data();
+ void httpReUsingConnectionFromFinishedSlot();
+
+ void httpRecursiveCreation();
+
+#ifndef QT_NO_OPENSSL
+ void ioPostToHttpsUploadProgress();
+ void ignoreSslErrorsList_data();
+ void ignoreSslErrorsList();
+ void ignoreSslErrorsListWithSlot_data();
+ void ignoreSslErrorsListWithSlot();
+ void sslConfiguration_data();
+ void sslConfiguration();
+#endif
+
+ void getAndThenDeleteObject_data();
+ void getAndThenDeleteObject();
+
+ void symbianOpenCDataUrlCrash();
+
+ void getFromHttpIntoBuffer_data();
+ void getFromHttpIntoBuffer();
+ void getFromHttpIntoBuffer2_data();
+ void getFromHttpIntoBuffer2();
+ void getFromHttpIntoBufferCanReadLine();
+
+ void ioGetFromHttpWithoutContentLength();
+
+ void ioGetFromHttpBrokenChunkedEncoding();
+ void qtbug12908compressedHttpReply();
+ void compressedHttpReplyBrokenGzip();
+
+ void getFromUnreachableIp();
+
+ void qtbug4121unknownAuthentication();
+
+ void qtbug13431replyThrottling();
+
+ void httpWithNoCredentialUsage();
+
+ void qtbug15311doubleContentLength();
+
+ void qtbug18232gzipContentLengthZero();
+
+ void synchronousRequest_data();
+ void synchronousRequest();
+#ifndef QT_NO_OPENSSL
+ void synchronousRequestSslFailure();
+#endif
+
+ void httpAbort();
+
+ void dontInsertPartialContentIntoTheCache();
+
+ void httpUserAgent();
+
+ // NOTE: This test must be last!
+ void parentingRepliesToTheApp();
+};
+
+bool tst_QNetworkReply::seedCreated = false;
+
+QT_BEGIN_NAMESPACE
+
+namespace QTest {
+ template<>
+ char *toString(const QNetworkReply::NetworkError& code)
+ {
+ const QMetaObject *mo = &QNetworkReply::staticMetaObject;
+ int index = mo->indexOfEnumerator("NetworkError");
+ if (index == -1)
+ return qstrdup("");
+
+ QMetaEnum qme = mo->enumerator(index);
+ return qstrdup(qme.valueToKey(code));
+ }
+
+ template<>
+ char *toString(const QNetworkCookie &cookie)
+ {
+ return qstrdup(cookie.toRawForm());
+ }
+
+ template<>
+ char *toString(const QList<QNetworkCookie> &list)
+ {
+ QString result = "QList(";
+ bool first = true;
+ foreach (QNetworkCookie cookie, list) {
+ if (!first)
+ result += ", ";
+ first = false;
+ result += QString::fromLatin1("QNetworkCookie(%1)").arg(QLatin1String(cookie.toRawForm()));
+ }
+
+ return qstrdup(result.append(')').toLocal8Bit());
+ }
+}
+
+QT_END_NAMESPACE
+
+#define RUN_REQUEST(call) \
+ do { \
+ QString errorMsg = call; \
+ if (!errorMsg.isEmpty()) \
+ QFAIL(qPrintable(errorMsg)); \
+ } while (0);
+
+#ifndef QT_NO_OPENSSL
+static void setupSslServer(QSslSocket* serverSocket)
+{
+ serverSocket->setProtocol(QSsl::AnyProtocol);
+ serverSocket->setLocalCertificate(SRCDIR "/certs/server.pem");
+ serverSocket->setPrivateKey(SRCDIR "/certs/server.key");
+}
+#endif
+
+// Does not work for POST/PUT!
+class MiniHttpServer: public QTcpServer
+{
+ Q_OBJECT
+public:
+ QTcpSocket *client; // always the last one that was received
+ QByteArray dataToTransmit;
+ QByteArray receivedData;
+ QSemaphore ready;
+ bool doClose;
+ bool doSsl;
+ bool ipv6;
+ bool multiple;
+ int totalConnections;
+
+ MiniHttpServer(const QByteArray &data, bool ssl = false, QThread *thread = 0, bool useipv6 = false)
+ : client(0), dataToTransmit(data), doClose(true), doSsl(ssl), ipv6(useipv6),
+ multiple(false), totalConnections(0)
+ {
+ if (useipv6) {
+ listen(QHostAddress::AnyIPv6);
+ } else {
+ listen();
+ }
+ if (thread) {
+ connect(thread, SIGNAL(started()), this, SLOT(threadStartedSlot()));
+ moveToThread(thread);
+ thread->start();
+ ready.acquire();
+ }
+ }
+
+protected:
+ void incomingConnection(int socketDescriptor)
+ {
+ //qDebug() << "incomingConnection" << socketDescriptor << "doSsl:" << doSsl << "ipv6:" << ipv6;
+ if (!doSsl) {
+ client = new QTcpSocket;
+ client->setSocketDescriptor(socketDescriptor);
+ connectSocketSignals();
+ } else {
+#ifndef QT_NO_OPENSSL
+ QSslSocket *serverSocket = new QSslSocket;
+ serverSocket->setParent(this);
+ if (serverSocket->setSocketDescriptor(socketDescriptor)) {
+ connect(serverSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slotSslErrors(QList<QSslError>)));
+ setupSslServer(serverSocket);
+ serverSocket->startServerEncryption();
+ client = serverSocket;
+ connectSocketSignals();
+ } else {
+ delete serverSocket;
+ return;
+ }
+#endif
+ }
+ client->setParent(this);
+ ++totalConnections;
+ }
+private:
+ void connectSocketSignals()
+ {
+ //qDebug() << "connectSocketSignals" << client;
+ connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+ connect(client, SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWrittenSlot()));
+ connect(client, SIGNAL(error(QAbstractSocket::SocketError)),
+ this, SLOT(slotError(QAbstractSocket::SocketError)));
+ }
+
+private slots:
+#ifndef QT_NO_OPENSSL
+ void slotSslErrors(const QList<QSslError>& errors)
+ {
+ qDebug() << "slotSslErrors" << client->errorString() << errors;
+ }
+#endif
+ void slotError(QAbstractSocket::SocketError err)
+ {
+ qDebug() << "slotError" << err << client->errorString();
+ }
+
+public slots:
+ void readyReadSlot()
+ {
+ receivedData += client->readAll();
+ int doubleEndlPos = receivedData.indexOf("\r\n\r\n");
+
+ if (doubleEndlPos != -1) {
+ // multiple requests incoming. remove the bytes of the current one
+ if (multiple)
+ receivedData.remove(0, doubleEndlPos+4);
+
+ // we need to emulate the bytesWrittenSlot call if the data is empty.
+ if (dataToTransmit.size() == 0)
+ QMetaObject::invokeMethod(this, "bytesWrittenSlot", Qt::QueuedConnection);
+ else
+ client->write(dataToTransmit);
+ }
+ }
+
+ void bytesWrittenSlot() {
+ if (doClose && client->bytesToWrite() == 0) {
+ client->disconnectFromHost();
+ disconnect(client, 0, this, 0);
+ }
+ }
+
+ void threadStartedSlot()
+ {
+ ready.release();
+ }
+};
+
+class MyCookieJar: public QNetworkCookieJar
+{
+public:
+ inline QList<QNetworkCookie> allCookies() const
+ { return QNetworkCookieJar::allCookies(); }
+ inline void setAllCookies(const QList<QNetworkCookie> &cookieList)
+ { QNetworkCookieJar::setAllCookies(cookieList); }
+};
+
+class MyProxyFactory: public QNetworkProxyFactory
+{
+public:
+ int callCount;
+ QList<QNetworkProxy> toReturn;
+ QNetworkProxyQuery lastQuery;
+ inline MyProxyFactory() { clear(); }
+
+ inline void clear()
+ {
+ callCount = 0;
+ toReturn = QList<QNetworkProxy>() << QNetworkProxy::DefaultProxy;
+ lastQuery = QNetworkProxyQuery();
+ }
+
+ virtual QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query)
+ {
+ lastQuery = query;
+ ++callCount;
+ return toReturn;
+ }
+};
+
+class MyMemoryCache: public QAbstractNetworkCache
+{
+public:
+ typedef QPair<QNetworkCacheMetaData, QByteArray> CachedContent;
+ typedef QHash<QByteArray, CachedContent> CacheData;
+ CacheData cache;
+
+ MyMemoryCache(QObject *parent) : QAbstractNetworkCache(parent) {}
+
+ QNetworkCacheMetaData metaData(const QUrl &url)
+ {
+ return cache.value(url.toEncoded()).first;
+ }
+
+ void updateMetaData(const QNetworkCacheMetaData &metaData)
+ {
+ cache[metaData.url().toEncoded()].first = metaData;
+ }
+
+ QIODevice *data(const QUrl &url)
+ {
+ CacheData::ConstIterator it = cache.find(url.toEncoded());
+ if (it == cache.constEnd())
+ return 0;
+ QBuffer *io = new QBuffer(this);
+ io->setData(it->second);
+ io->open(QIODevice::ReadOnly);
+ io->seek(0);
+ return io;
+ }
+
+ bool remove(const QUrl &url)
+ {
+ cache.remove(url.toEncoded());
+ return true;
+ }
+
+ qint64 cacheSize() const
+ {
+ qint64 total = 0;
+ foreach (const CachedContent &entry, cache)
+ total += entry.second.size();
+ return total;
+ }
+
+ QIODevice *prepare(const QNetworkCacheMetaData &)
+ {
+ qFatal("%s: Should not have tried to add to the cache", Q_FUNC_INFO);
+ return 0;
+ }
+ void insert(QIODevice *)
+ {
+ qFatal("%s: Should not have tried to add to the cache", Q_FUNC_INFO);
+ }
+
+ void clear() { cache.clear(); }
+};
+Q_DECLARE_METATYPE(MyMemoryCache::CachedContent)
+Q_DECLARE_METATYPE(MyMemoryCache::CacheData)
+
+class MySpyMemoryCache: public QAbstractNetworkCache
+{
+public:
+ MySpyMemoryCache(QObject *parent) : QAbstractNetworkCache(parent) {}
+ ~MySpyMemoryCache()
+ {
+ qDeleteAll(m_buffers);
+ m_buffers.clear();
+ }
+
+ QHash<QUrl, QIODevice*> m_buffers;
+ QList<QUrl> m_insertedUrls;
+
+ QNetworkCacheMetaData metaData(const QUrl &)
+ {
+ return QNetworkCacheMetaData();
+ }
+
+ void updateMetaData(const QNetworkCacheMetaData &)
+ {
+ }
+
+ QIODevice *data(const QUrl &)
+ {
+ return 0;
+ }
+
+ bool remove(const QUrl &url)
+ {
+ delete m_buffers.take(url);
+ return m_insertedUrls.removeAll(url) > 0;
+ }
+
+ qint64 cacheSize() const
+ {
+ return 0;
+ }
+
+ QIODevice *prepare(const QNetworkCacheMetaData &metaData)
+ {
+ QBuffer* buffer = new QBuffer;
+ buffer->open(QIODevice::ReadWrite);
+ buffer->setProperty("url", metaData.url());
+ m_buffers.insert(metaData.url(), buffer);
+ return buffer;
+ }
+
+ void insert(QIODevice *buffer)
+ {
+ QUrl url = buffer->property("url").toUrl();
+ m_insertedUrls << url;
+ delete m_buffers.take(url);
+ }
+
+ void clear() { m_insertedUrls.clear(); }
+};
+
+class DataReader: public QObject
+{
+ Q_OBJECT
+public:
+ qint64 totalBytes;
+ QByteArray data;
+ QIODevice *device;
+ bool accumulate;
+ DataReader(QIODevice *dev, bool acc = true) : totalBytes(0), device(dev), accumulate(acc)
+ {
+ connect(device, SIGNAL(readyRead()), SLOT(doRead()));
+ }
+
+public slots:
+ void doRead()
+ {
+ QByteArray buffer;
+ buffer.resize(device->bytesAvailable());
+ qint64 bytesRead = device->read(buffer.data(), device->bytesAvailable());
+ if (bytesRead == -1) {
+ QTestEventLoop::instance().exitLoop();
+ return;
+ }
+ buffer.truncate(bytesRead);
+ totalBytes += bytesRead;
+
+ if (accumulate)
+ data += buffer;
+ }
+};
+
+
+class SocketPair: public QObject
+{
+ Q_OBJECT
+public:
+ QIODevice *endPoints[2];
+
+ SocketPair(QObject *parent = 0)
+ : QObject(parent)
+ {
+ endPoints[0] = endPoints[1] = 0;
+ }
+
+ bool create()
+ {
+ QTcpServer server;
+ server.listen();
+
+ QTcpSocket *active = new QTcpSocket(this);
+ active->connectToHost("127.0.0.1", server.serverPort());
+#ifndef Q_OS_SYMBIAN
+ // need more time as working with embedded
+ // device and testing from emualtor
+ // things tend to get slower
+ if (!active->waitForConnected(1000))
+ return false;
+
+ if (!server.waitForNewConnection(1000))
+ return false;
+#else
+ if (!active->waitForConnected(100))
+ return false;
+
+ if (!server.waitForNewConnection(100))
+ return false;
+#endif
+ QTcpSocket *passive = server.nextPendingConnection();
+ passive->setParent(this);
+
+ endPoints[0] = active;
+ endPoints[1] = passive;
+ return true;
+ }
+};
+
+// A blocking tcp server (must be used in a thread) which supports SSL.
+class BlockingTcpServer : public QTcpServer
+{
+ Q_OBJECT
+public:
+ BlockingTcpServer(bool ssl) : doSsl(ssl), sslSocket(0) {}
+
+ QTcpSocket* waitForNextConnectionSocket() {
+ waitForNewConnection(-1);
+ if (doSsl) {
+ if (!sslSocket)
+ qFatal("%s: sslSocket should not be null after calling waitForNewConnection()",
+ Q_FUNC_INFO);
+ return sslSocket;
+ } else {
+ //qDebug() << "returning nextPendingConnection";
+ return nextPendingConnection();
+ }
+ }
+ virtual void incomingConnection(int socketDescriptor)
+ {
+#ifndef QT_NO_OPENSSL
+ if (doSsl) {
+ QSslSocket *serverSocket = new QSslSocket;
+ serverSocket->setParent(this);
+ serverSocket->setSocketDescriptor(socketDescriptor);
+ connect(serverSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slotSslErrors(QList<QSslError>)));
+ setupSslServer(serverSocket);
+ serverSocket->startServerEncryption();
+ sslSocket = serverSocket;
+ } else
+#endif
+ {
+ QTcpServer::incomingConnection(socketDescriptor);
+ }
+ }
+private slots:
+
+#ifndef QT_NO_OPENSSL
+ void slotSslErrors(const QList<QSslError>& errors)
+ {
+ qDebug() << "slotSslErrors" << sslSocket->errorString() << errors;
+ }
+#endif
+
+private:
+ const bool doSsl;
+ QTcpSocket* sslSocket;
+};
+
+// This server tries to send data as fast as possible (like most servers)
+// but it measures how fast it was able to send it, which shows at which
+// rate the reader is processing the data.
+class FastSender: public QThread
+{
+ Q_OBJECT
+ QSemaphore ready;
+ qint64 wantedSize;
+ int port;
+ enum Protocol { DebugPipe, ProvidedData };
+ const Protocol protocol;
+ const bool doSsl;
+ const bool fillKernelBuffer;
+public:
+ int transferRate;
+ QWaitCondition cond;
+
+ QByteArray dataToTransmit;
+ int dataIndex;
+
+ // a server that sends debugpipe data
+ FastSender(qint64 size)
+ : wantedSize(size), port(-1), protocol(DebugPipe),
+ doSsl(false), fillKernelBuffer(true), transferRate(-1),
+ dataIndex(0)
+ {
+ start();
+ ready.acquire();
+ }
+
+ // a server that sends the data provided at construction time, useful for HTTP
+ FastSender(const QByteArray& data, bool https, bool fillBuffer)
+ : wantedSize(data.size()), port(-1), protocol(ProvidedData),
+ doSsl(https), fillKernelBuffer(fillBuffer), transferRate(-1),
+ dataToTransmit(data), dataIndex(0)
+ {
+ start();
+ ready.acquire();
+ }
+
+ inline int serverPort() const { return port; }
+
+ int writeNextData(QTcpSocket* socket, qint32 size)
+ {
+ if (protocol == DebugPipe) {
+ QByteArray data;
+ QDataStream stream(&data, QIODevice::WriteOnly);
+ stream << QVariantMap() << QByteArray(size, 'a');
+ socket->write((char*)&size, sizeof size);
+ socket->write(data);
+ dataIndex += size;
+ return size;
+ } else {
+ const QByteArray data = dataToTransmit.mid(dataIndex, size);
+ socket->write(data);
+ dataIndex += data.size();
+ //qDebug() << "wrote" << dataIndex << "/" << dataToTransmit.size();
+ return data.size();
+ }
+ }
+ void writeLastData(QTcpSocket* socket)
+ {
+ if (protocol == DebugPipe) {
+ QByteArray data;
+ QDataStream stream(&data, QIODevice::WriteOnly);
+ stream << QVariantMap() << QByteArray();
+ const qint32 size = data.size();
+ socket->write((char*)&size, sizeof size);
+ socket->write(data);
+ }
+ }
+
+protected:
+ void run()
+ {
+ BlockingTcpServer server(doSsl);
+ server.listen();
+ port = server.serverPort();
+ ready.release();
+
+ QTcpSocket *client = server.waitForNextConnectionSocket();
+
+ // get the "request" packet
+ if (!client->waitForReadyRead(2000)) {
+ qDebug() << "FastSender:" << client->error() << "waiting for \"request\" packet";
+ return;
+ }
+ client->readAll(); // we're not interested in the actual contents (e.g. HTTP request)
+
+ enum { BlockSize = 1024 };
+
+ if (fillKernelBuffer) {
+
+ // write a bunch of bytes to fill up the buffers
+ bool done = false;
+ do {
+ if (writeNextData(client, BlockSize) < BlockSize) {
+ qDebug() << "ERROR: FastSender: not enough data to write in order to fill buffers; or client is reading too fast";
+ return;
+ }
+ while (client->bytesToWrite() > 0) {
+ if (!client->waitForBytesWritten(0)) {
+ done = true;
+ break;
+ }
+ }
+ //qDebug() << "Filling kernel buffer: wrote" << dataIndex << "bytes";
+ } while (!done);
+
+ qDebug() << "FastSender: ok, kernel buffer is full after writing" << dataIndex << "bytes";
+ }
+
+ // Tell the client to start reading
+ emit dataReady();
+
+ // the kernel buffer is full
+ // clean up QAbstractSocket's residue:
+ while (client->bytesToWrite() > 0) {
+ qDebug() << "Still having" << client->bytesToWrite() << "bytes to write, doing that now";
+ if (!client->waitForBytesWritten(2000)) {
+ qDebug() << "ERROR: FastSender:" << client->error() << "cleaning up residue";
+ return;
+ }
+ }
+
+ // now write in "blocking mode", this is where the rate measuring starts
+ QTime timer;
+ timer.start();
+ //const qint64 writtenBefore = dataIndex;
+ //qint64 measuredTotalBytes = wantedSize - writtenBefore;
+ qint64 measuredSentBytes = 0;
+ while (dataIndex < wantedSize) {
+ const int remainingBytes = wantedSize - measuredSentBytes;
+ const int bytesToWrite = qMin(remainingBytes, static_cast<int>(BlockSize));
+ if (bytesToWrite <= 0)
+ qFatal("%s: attempt to write %d bytes", Q_FUNC_INFO, bytesToWrite);
+ measuredSentBytes += writeNextData(client, bytesToWrite);
+
+ while (client->bytesToWrite() > 0) {
+ if (!client->waitForBytesWritten(2000)) {
+ qDebug() << "ERROR: FastSender:" << client->error() << "during blocking write";
+ return;
+ }
+ }
+ /*qDebug() << "FastSender:" << bytesToWrite << "bytes written now;"
+ << measuredSentBytes << "measured bytes" << measuredSentBytes + writtenBefore << "total ("
+ << measuredSentBytes*100/measuredTotalBytes << "% complete);"
+ << timer.elapsed() << "ms elapsed";*/
+ }
+
+ transferRate = measuredSentBytes * 1000 / timer.elapsed();
+ qDebug() << "FastSender: flushed" << measuredSentBytes << "bytes in" << timer.elapsed() << "ms: rate =" << transferRate << "B/s";
+
+ // write a "close connection" packet, if the protocol needs it
+ writeLastData(client);
+ }
+signals:
+ void dataReady();
+};
+
+class RateControlledReader: public QObject
+{
+ Q_OBJECT
+ QIODevice *device;
+ int bytesToRead;
+ int interval;
+ int readBufferSize;
+public:
+ QByteArray data;
+ qint64 totalBytesRead;
+ RateControlledReader(QObject& senderObj, QIODevice *dev, int kbPerSec, int maxBufferSize = 0)
+ : device(dev), readBufferSize(maxBufferSize), totalBytesRead(0)
+ {
+ // determine how often we have to wake up
+ int timesPerSecond;
+ if (readBufferSize == 0) {
+ // The requirement is simply "N KB per seconds"
+ timesPerSecond = 20;
+ bytesToRead = kbPerSec * 1024 / timesPerSecond;
+ } else {
+ // The requirement also includes "<readBufferSize> bytes at a time"
+ bytesToRead = readBufferSize;
+ timesPerSecond = kbPerSec * 1024 / readBufferSize;
+ }
+ interval = 1000 / timesPerSecond; // in ms
+
+ qDebug() << "RateControlledReader: going to read" << bytesToRead
+ << "bytes every" << interval << "ms";
+ qDebug() << "actual read rate will be"
+ << (bytesToRead * 1000 / interval) << "bytes/sec (wanted"
+ << kbPerSec * 1024 << "bytes/sec)";
+
+ // Wait for data to be readyRead
+ bool ok = connect(&senderObj, SIGNAL(dataReady()), this, SLOT(slotDataReady()));
+ if (!ok)
+ qFatal("%s: Cannot connect dataReady signal", Q_FUNC_INFO);
+ }
+
+ void wrapUp()
+ {
+ QByteArray someData = device->read(device->bytesAvailable());
+ data += someData;
+ totalBytesRead += someData.size();
+ qDebug() << "wrapUp: found" << someData.size() << "bytes left. progress" << data.size();
+ //qDebug() << "wrapUp: now bytesAvailable=" << device->bytesAvailable();
+ }
+
+private slots:
+ void slotDataReady()
+ {
+ //qDebug() << "RateControlledReader: ready to go";
+ startTimer(interval);
+ }
+
+protected:
+ void timerEvent(QTimerEvent *)
+ {
+ //qDebug() << "RateControlledReader: timerEvent bytesAvailable=" << device->bytesAvailable();
+ if (readBufferSize > 0 && device->bytesAvailable() > readBufferSize) {
+ // This passes all the time, except in the final flush.
+ //qFatal("%s: Too many bytes available", Q_FUNC_INFO);
+ }
+
+ qint64 bytesRead = 0;
+ QTime stopWatch;
+ stopWatch.start();
+ do {
+ if (device->bytesAvailable() == 0) {
+ if (stopWatch.elapsed() > 20) {
+ qDebug() << "RateControlledReader: Not enough data available for reading, waited too much, timing out";
+ break;
+ }
+ if (!device->waitForReadyRead(5)) {
+ qDebug() << "RateControlledReader: Not enough data available for reading, even after waiting 5ms, bailing out";
+ break;
+ }
+ }
+ QByteArray someData = device->read(bytesToRead - bytesRead);
+ data += someData;
+ bytesRead += someData.size();
+ //qDebug() << "RateControlledReader: successfully read" << someData.size() << "progress:" << data.size();
+ } while (bytesRead < bytesToRead);
+ totalBytesRead += bytesRead;
+
+ if (bytesRead < bytesToRead)
+ qWarning() << "RateControlledReader: WARNING:" << bytesToRead - bytesRead << "bytes not read";
+ }
+};
+
+
+tst_QNetworkReply::tst_QNetworkReply()
+{
+ qRegisterMetaType<QNetworkReply *>(); // for QSignalSpy
+ qRegisterMetaType<QAuthenticator *>();
+ qRegisterMetaType<QNetworkProxy>();
+#ifndef QT_NO_OPENSSL
+ qRegisterMetaType<QList<QSslError> >();
+#endif
+ qRegisterMetaType<QNetworkReply::NetworkError>();
+
+ Q_SET_DEFAULT_IAP
+
+ testFileName = QDir::currentPath() + "/testfile";
+ uniqueExtension = createUniqueExtension();
+ cookieJar = new MyCookieJar;
+ manager.setCookieJar(cookieJar);
+
+ QHostInfo hostInfo = QHostInfo::fromName(QtNetworkSettings::serverName());
+
+ proxies << ProxyData(QNetworkProxy::NoProxy, "", false);
+
+ if (hostInfo.error() == QHostInfo::NoError && !hostInfo.addresses().isEmpty()) {
+ QString proxyserver = hostInfo.addresses().first().toString();
+ proxies << ProxyData(QNetworkProxy(QNetworkProxy::HttpProxy, proxyserver, 3128), "+proxy", false)
+ << ProxyData(QNetworkProxy(QNetworkProxy::HttpProxy, proxyserver, 3129), "+proxyauth", true)
+ // currently unsupported
+ // << ProxyData(QNetworkProxy(QNetworkProxy::HttpProxy, proxyserver, 3130), "+proxyauth-ntlm", true);
+ << ProxyData(QNetworkProxy(QNetworkProxy::Socks5Proxy, proxyserver, 1080), "+socks", false)
+ << ProxyData(QNetworkProxy(QNetworkProxy::Socks5Proxy, proxyserver, 1081), "+socksauth", true);
+ } else {
+ printf("==================================================================\n");
+ printf("Proxy could not be looked up. No proxy will be used while testing!\n");
+ printf("==================================================================\n");
+ }
+}
+
+tst_QNetworkReply::~tst_QNetworkReply()
+{
+}
+
+
+void tst_QNetworkReply::authenticationRequired(QNetworkReply*, QAuthenticator* auth)
+{
+ auth->setUser("httptest");
+ auth->setPassword("httptest");
+}
+
+void tst_QNetworkReply::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator* auth)
+{
+ auth->setUser("qsockstest");
+ auth->setPassword("password");
+}
+
+#ifndef QT_NO_OPENSSL
+void tst_QNetworkReply::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)
+{
+ reply->ignoreSslErrors();
+ QVERIFY(!errors.isEmpty());
+ QVERIFY(!reply->sslConfiguration().isNull());
+}
+
+void tst_QNetworkReply::storeSslConfiguration()
+{
+ storedSslConfiguration = QSslConfiguration();
+ QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
+ if (reply)
+ storedSslConfiguration = reply->sslConfiguration();
+}
+#endif
+
+QString tst_QNetworkReply::runMultipartRequest(const QNetworkRequest &request,
+ QNetworkReplyPtr &reply,
+ QHttpMultiPart *multiPart,
+ const QByteArray &verb)
+{
+ if (verb == "POST")
+ reply = manager.post(request, multiPart);
+ else
+ reply = manager.put(request, multiPart);
+
+ // the code below is copied from tst_QNetworkReply::runSimpleRequest, see below
+ reply->setParent(this);
+ connect(reply, SIGNAL(finished()), SLOT(finished()));
+ connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError()));
+ multiPart->setParent(reply);
+
+ returnCode = Timeout;
+ loop = new QEventLoop;
+ QTimer::singleShot(25000, loop, SLOT(quit()));
+ int code = returnCode == Timeout ? loop->exec() : returnCode;
+ delete loop;
+ loop = 0;
+
+ switch (code) {
+ case Failure:
+ return "Request failed: " + reply->errorString();
+ case Timeout:
+ return "Network timeout";
+ }
+ return QString();
+}
+
+QString tst_QNetworkReply::runSimpleRequest(QNetworkAccessManager::Operation op,
+ const QNetworkRequest &request,
+ QNetworkReplyPtr &reply,
+ const QByteArray &data)
+{
+ switch (op) {
+ case QNetworkAccessManager::HeadOperation:
+ reply = manager.head(request);
+ break;
+
+ case QNetworkAccessManager::GetOperation:
+ reply = manager.get(request);
+ break;
+
+ case QNetworkAccessManager::PutOperation:
+ reply = manager.put(request, data);
+ break;
+
+ case QNetworkAccessManager::PostOperation:
+ reply = manager.post(request, data);
+ break;
+
+ case QNetworkAccessManager::DeleteOperation:
+ reply = manager.deleteResource(request);
+ break;
+
+ default:
+ qFatal("%s: Invalid/unknown operation requested", Q_FUNC_INFO);
+ }
+ reply->setParent(this);
+
+ returnCode = Timeout;
+ int code = Success;
+
+ if (request.attribute(QNetworkRequest::SynchronousRequestAttribute).toBool()) {
+ if (reply->isFinished())
+ code = reply->error() != QNetworkReply::NoError ? Failure : Success;
+ else
+ code = Failure;
+ } else {
+ connect(reply, SIGNAL(finished()), SLOT(finished()));
+ connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError()));
+
+ loop = new QEventLoop;
+ QTimer::singleShot(20000, loop, SLOT(quit()));
+ code = returnCode == Timeout ? loop->exec() : returnCode;
+ delete loop;
+ loop = 0;
+ }
+
+ switch (code) {
+ case Failure:
+ return "Request failed: " + reply->errorString();
+ case Timeout:
+ return "Network timeout";
+ }
+ return QString();
+}
+
+QString tst_QNetworkReply::runCustomRequest(const QNetworkRequest &request,
+ QNetworkReplyPtr &reply,
+ const QByteArray &verb,
+ QIODevice *data)
+{
+ reply = manager.sendCustomRequest(request, verb, data);
+ reply->setParent(this);
+ connect(reply, SIGNAL(finished()), SLOT(finished()));
+ connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError()));
+
+ returnCode = Timeout;
+ loop = new QEventLoop;
+ QTimer::singleShot(20000, loop, SLOT(quit()));
+ int code = returnCode == Timeout ? loop->exec() : returnCode;
+ delete loop;
+ loop = 0;
+
+ switch (code) {
+ case Failure:
+ return "Request failed: " + reply->errorString();
+ case Timeout:
+ return "Network timeout";
+ }
+ return QString();
+}
+
+void tst_QNetworkReply::finished()
+{
+ loop->exit(returnCode = Success);
+}
+
+void tst_QNetworkReply::gotError()
+{
+ loop->exit(returnCode = Failure);
+ disconnect(QObject::sender(), SIGNAL(finished()), this, 0);
+}
+
+void tst_QNetworkReply::initTestCase()
+{
+#if !defined Q_OS_WIN
+ wronlyFileName = QDir::currentPath() + "/write-only";
+ QFile wr(wronlyFileName);
+ QVERIFY(wr.open(QIODevice::WriteOnly | QIODevice::Truncate));
+ wr.setPermissions(QFile::WriteOwner | QFile::WriteUser);
+ wr.close();
+#endif
+
+ QDir::setSearchPaths("srcdir", QStringList() << SRCDIR);
+#ifndef QT_NO_OPENSSL
+ QSslSocket::defaultCaCertificates(); //preload certificates
+#endif
+#ifndef QT_NO_BEARERMANAGEMENT
+ netConfMan = new QNetworkConfigurationManager(this);
+ networkConfiguration = netConfMan->defaultConfiguration();
+ networkSession.reset(new QNetworkSession(networkConfiguration));
+ if (!networkSession->isOpen()) {
+ networkSession->open();
+ QVERIFY(networkSession->waitForOpened(30000));
+ }
+#endif
+}
+
+void tst_QNetworkReply::cleanupTestCase()
+{
+#if !defined Q_OS_WIN
+ QFile::remove(wronlyFileName);
+#endif
+ if (networkSession && networkSession->isOpen()) {
+ networkSession->close();
+ }
+}
+
+void tst_QNetworkReply::init()
+{
+ cleanup();
+}
+
+void tst_QNetworkReply::cleanup()
+{
+ QFile file(testFileName);
+ QVERIFY(!file.exists() || file.remove());
+
+ // clear the internal cache
+ manager.clearAccessCache();
+ manager.setProxy(QNetworkProxy());
+ manager.setCache(0);
+
+ // clear cookies
+ cookieJar->setAllCookies(QList<QNetworkCookie>());
+}
+
+void tst_QNetworkReply::stateChecking()
+{
+ QUrl url = QUrl("file:///");
+ QNetworkRequest req(url); // you can't open this file, I know
+ QNetworkReplyPtr reply = manager.get(req);
+
+ QVERIFY(reply.data());
+ QVERIFY(reply->isOpen());
+ QVERIFY(reply->isReadable());
+ QVERIFY(!reply->isWritable());
+
+ // both behaviours are OK since we might change underlying behaviour again
+ if (!reply->isFinished())
+ QCOMPARE(reply->errorString(), QString("Unknown error"));
+ else
+ QVERIFY(!reply->errorString().isEmpty());
+
+
+ QCOMPARE(reply->manager(), &manager);
+ QCOMPARE(reply->request(), req);
+ QCOMPARE(int(reply->operation()), int(QNetworkAccessManager::GetOperation));
+ // error and not error are OK since we might change underlying behaviour again
+ if (!reply->isFinished())
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->url(), url);
+
+ reply->abort();
+}
+
+void tst_QNetworkReply::invalidProtocol()
+{
+ QUrl url = QUrl::fromEncoded("not-a-known-protocol://foo/bar");
+ QNetworkRequest req(url);
+ QNetworkReplyPtr reply;
+
+ QString errorMsg = "Request failed: Protocol \"not-a-known-protocol\" is unknown";
+ QString result = runSimpleRequest(QNetworkAccessManager::GetOperation, req, reply);
+ QCOMPARE(result, errorMsg);
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::ProtocolUnknownError);
+}
+
+void tst_QNetworkReply::getFromData_data()
+{
+ QTest::addColumn<QString>("request");
+ QTest::addColumn<QByteArray>("expected");
+ QTest::addColumn<QString>("mimeType");
+
+ const QString defaultMimeType("text/plain;charset=US-ASCII");
+
+ //QTest::newRow("empty") << "data:" << QByteArray() << defaultMimeType;
+ QTest::newRow("empty2") << "data:," << QByteArray() << defaultMimeType;
+ QTest::newRow("just-charset_1") << "data:charset=iso-8859-1,"
+ << QByteArray() << "text/plain;charset=iso-8859-1";
+ QTest::newRow("just-charset_2") << "data:charset = iso-8859-1 ,"
+ << QByteArray() << "text/plain;charset = iso-8859-1";
+ //QTest::newRow("just-media") << "data:text/xml" << QByteArray() << "text/xml";
+ QTest::newRow("just-media2") << "data:text/xml," << QByteArray() << "text/xml";
+
+ QTest::newRow("plain_1") << "data:,foo" << QByteArray("foo") << defaultMimeType;
+ QTest::newRow("plain_2") << "data:text/html,Hello World" << QByteArray("Hello World")
+ << "text/html";
+ QTest::newRow("plain_3") << "data:text/html;charset=utf-8,Hello World"
+ << QByteArray("Hello World") << "text/html;charset=utf-8";
+
+ QTest::newRow("pct_1") << "data:,%3Cbody%20contentEditable%3Dtrue%3E%0D%0A"
+ << QByteArray("<body contentEditable=true>\r\n") << defaultMimeType;
+ QTest::newRow("pct_2") << "data:text/html;charset=utf-8,%3Cbody%20contentEditable%3Dtrue%3E%0D%0A"
+ << QByteArray("<body contentEditable=true>\r\n")
+ << "text/html;charset=utf-8";
+
+ QTest::newRow("base64-empty_1") << "data:;base64," << QByteArray() << defaultMimeType;
+ QTest::newRow("base64-empty_2") << "data:charset=utf-8;base64," << QByteArray()
+ << "text/plain;charset=utf-8";
+ QTest::newRow("base64-empty_3") << "data:text/html;charset=utf-8;base64,"
+ << QByteArray() << "text/html;charset=utf-8";
+
+ QTest::newRow("base64_1") << "data:;base64,UXQgaXMgZ3JlYXQh" << QByteArray("Qt is great!")
+ << defaultMimeType;
+ QTest::newRow("base64_2") << "data:charset=utf-8;base64,UXQgaXMgZ3JlYXQh"
+ << QByteArray("Qt is great!") << "text/plain;charset=utf-8";
+ QTest::newRow("base64_3") << "data:text/html;charset=utf-8;base64,UXQgaXMgZ3JlYXQh"
+ << QByteArray("Qt is great!") << "text/html;charset=utf-8";
+
+ QTest::newRow("pct-nul") << "data:,a%00g" << QByteArray("a\0g", 3) << defaultMimeType;
+ QTest::newRow("base64-nul") << "data:;base64,YQBn" << QByteArray("a\0g", 3) << defaultMimeType;
+ QTest::newRow("pct-nonutf8") << "data:,a%E1g" << QByteArray("a\xE1g", 3) << defaultMimeType;
+
+ QTest::newRow("base64")
+ << QString::fromLatin1("data:application/xml;base64,PGUvPg==")
+ << QByteArray("<e/>")
+ << "application/xml";
+
+ QTest::newRow("base64, no media type")
+ << QString::fromLatin1("data:;base64,PGUvPg==")
+ << QByteArray("<e/>")
+ << defaultMimeType;
+
+ QTest::newRow("Percent encoding")
+ << QString::fromLatin1("data:application/xml,%3Ce%2F%3E")
+ << QByteArray("<e/>")
+ << "application/xml";
+
+ QTest::newRow("Percent encoding, no media type")
+ << QString::fromLatin1("data:,%3Ce%2F%3E")
+ << QByteArray("<e/>")
+ << defaultMimeType;
+
+ QTest::newRow("querychars")
+ << QString::fromLatin1("data:,foo?x=0&y=0")
+ << QByteArray("foo?x=0&y=0")
+ << defaultMimeType;
+
+ QTest::newRow("css") << "data:text/css,div%20{%20border-right:%20solid;%20}"
+ << QByteArray("div { border-right: solid; }")
+ << "text/css";
+}
+
+void tst_QNetworkReply::getFromData()
+{
+ QFETCH(QString, request);
+ QFETCH(QByteArray, expected);
+ QFETCH(QString, mimeType);
+
+ QUrl url = QUrl::fromEncoded(request.toLatin1());
+ QNetworkRequest req(url);
+ QNetworkReplyPtr reply;
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, req, reply));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader).toString(), mimeType);
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(expected.size()));
+ QCOMPARE(reply->readAll(), expected);
+}
+
+void tst_QNetworkReply::getFromFile()
+{
+ // create the file:
+ QTemporaryFile file(QDir::currentPath() + "/temp-XXXXXX");
+ file.setAutoRemove(true);
+ QVERIFY(file.open());
+
+ QNetworkRequest request(QUrl::fromLocalFile(file.fileName()));
+ QNetworkReplyPtr reply;
+
+ static const char fileData[] = "This is some data that is in the file.\r\n";
+ QByteArray data = QByteArray::fromRawData(fileData, sizeof fileData - 1);
+ QVERIFY(file.write(data) == data.size());
+ file.flush();
+ QCOMPARE(file.size(), qint64(data.size()));
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), file.size());
+ QCOMPARE(reply->readAll(), data);
+
+ // make the file bigger
+ file.resize(0);
+ const int multiply = (128 * 1024) / (sizeof fileData - 1);
+ for (int i = 0; i < multiply; ++i)
+ file.write(fileData, sizeof fileData - 1);
+ file.flush();
+
+ // run again
+ reply = 0;
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), file.size());
+ QCOMPARE(qint64(reply->readAll().size()), file.size());
+}
+
+void tst_QNetworkReply::getFromFileSpecial_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QString>("url");
+
+ QTest::newRow("resource") << ":/resource" << "qrc:/resource";
+ QTest::newRow("search-path") << "srcdir:/rfc3252.txt" << "srcdir:/rfc3252.txt";
+ QTest::newRow("bigfile-path") << "srcdir:/bigfile" << "srcdir:/bigfile";
+#ifdef Q_OS_WIN
+ QTest::newRow("smb-path") << "srcdir:/smb-file.txt" << "file://" + QtNetworkSettings::winServerName() + "/testshare/test.pri";
+#endif
+}
+
+void tst_QNetworkReply::getFromFileSpecial()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QString, url);
+
+ // open the resource so we can find out its size
+ QFile resource(fileName);
+ QVERIFY(resource.open(QIODevice::ReadOnly));
+
+ QNetworkRequest request;
+ QNetworkReplyPtr reply;
+ request.setUrl(url);
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), resource.size());
+ QCOMPARE(reply->readAll(), resource.readAll());
+}
+
+void tst_QNetworkReply::getFromFtp_data()
+{
+ QTest::addColumn<QString>("referenceName");
+ QTest::addColumn<QString>("url");
+
+ QTest::newRow("rfc3252.txt") << SRCDIR "/rfc3252.txt" << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt";
+ QTest::newRow("bigfile") << SRCDIR "/bigfile" << "ftp://" + QtNetworkSettings::serverName() + "/qtest/bigfile";
+}
+
+void tst_QNetworkReply::getFromFtp()
+{
+ QFETCH(QString, referenceName);
+ QFETCH(QString, url);
+
+ QFile reference(referenceName);
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
+ QCOMPARE(reply->readAll(), reference.readAll());
+}
+
+void tst_QNetworkReply::getFromHttp_data()
+{
+ QTest::addColumn<QString>("referenceName");
+ QTest::addColumn<QString>("url");
+
+ QTest::newRow("success-internal") << SRCDIR "/rfc3252.txt" << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt";
+ QTest::newRow("success-external") << SRCDIR "/rfc3252.txt" << "http://www.ietf.org/rfc/rfc3252.txt";
+ QTest::newRow("bigfile-internal") << SRCDIR "/bigfile" << "http://" + QtNetworkSettings::serverName() + "/qtest/bigfile";
+}
+
+void tst_QNetworkReply::getFromHttp()
+{
+ QFETCH(QString, referenceName);
+ QFETCH(QString, url);
+
+ QFile reference(referenceName);
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(reply->size(), reference.size());
+ // only compare when the header is set.
+ if (reply->header(QNetworkRequest::ContentLengthHeader).isValid())
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
+
+ // We know our internal server is apache..
+ if (qstrcmp(QTest::currentDataTag(), "success-internal") == 0)
+ QVERIFY(reply->header(QNetworkRequest::ServerHeader).toString().contains("Apache"));
+
+ QCOMPARE(reply->readAll(), reference.readAll());
+}
+
+void tst_QNetworkReply::getErrors_data()
+{
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<int>("error");
+ QTest::addColumn<int>("httpStatusCode");
+ QTest::addColumn<bool>("dataIsEmpty");
+
+ // empties
+ QTest::newRow("empty-url") << QString() << int(QNetworkReply::ProtocolUnknownError) << 0 << true;
+ QTest::newRow("empty-scheme-host") << SRCDIR "/rfc3252.txt" << int(QNetworkReply::ProtocolUnknownError) << 0 << true;
+ QTest::newRow("empty-scheme") << "//" + QtNetworkSettings::winServerName() + "/testshare/test.pri"
+ << int(QNetworkReply::ProtocolUnknownError) << 0 << true;
+
+ // file: errors
+ QTest::newRow("file-host") << "file://this-host-doesnt-exist.troll.no/foo.txt"
+#if !defined Q_OS_WIN
+ << int(QNetworkReply::ProtocolInvalidOperationError) << 0 << true;
+#else
+ << int(QNetworkReply::ContentNotFoundError) << 0 << true;
+#endif
+ QTest::newRow("file-no-path") << "file://localhost"
+ << int(QNetworkReply::ContentOperationNotPermittedError) << 0 << true;
+ QTest::newRow("file-is-dir") << QUrl::fromLocalFile(QDir::currentPath()).toString()
+ << int(QNetworkReply::ContentOperationNotPermittedError) << 0 << true;
+ QTest::newRow("file-exist") << QUrl::fromLocalFile(QDir::currentPath() + "/this-file-doesnt-exist.txt").toString()
+ << int(QNetworkReply::ContentNotFoundError) << 0 << true;
+#if !defined Q_OS_WIN && !defined(Q_OS_SYMBIAN)
+ QTest::newRow("file-is-wronly") << QUrl::fromLocalFile(wronlyFileName).toString()
+ << int(QNetworkReply::ContentAccessDenied) << 0 << true;
+#endif
+ if (QFile::exists("/etc/shadow"))
+ QTest::newRow("file-permissions") << "file:/etc/shadow"
+ << int(QNetworkReply::ContentAccessDenied) << 0 << true;
+
+ // ftp: errors
+ QTest::newRow("ftp-host") << "ftp://this-host-doesnt-exist.troll.no/foo.txt"
+ << int(QNetworkReply::HostNotFoundError) << 0 << true;
+ QTest::newRow("ftp-no-path") << "ftp://" + QtNetworkSettings::serverName()
+ << int(QNetworkReply::ContentOperationNotPermittedError) << 0 << true;
+ QTest::newRow("ftp-is-dir") << "ftp://" + QtNetworkSettings::serverName() + "/qtest"
+ << int(QNetworkReply::ContentOperationNotPermittedError) << 0 << true;
+ QTest::newRow("ftp-dir-not-readable") << "ftp://" + QtNetworkSettings::serverName() + "/pub/dir-not-readable/foo.txt"
+ << int(QNetworkReply::ContentAccessDenied) << 0 << true;
+ QTest::newRow("ftp-file-not-readable") << "ftp://" + QtNetworkSettings::serverName() + "/pub/file-not-readable.txt"
+ << int(QNetworkReply::ContentAccessDenied) << 0 << true;
+ QTest::newRow("ftp-exist") << "ftp://" + QtNetworkSettings::serverName() + "/pub/this-file-doesnt-exist.txt"
+ << int(QNetworkReply::ContentNotFoundError) << 0 << true;
+
+ // http: errors
+ QTest::newRow("http-host") << "http://this-host-will-never-exist.troll.no/"
+ << int(QNetworkReply::HostNotFoundError) << 0 << true;
+ QTest::newRow("http-exist") << "http://" + QtNetworkSettings::serverName() + "/this-file-doesnt-exist.txt"
+ << int(QNetworkReply::ContentNotFoundError) << 404 << false;
+ QTest::newRow("http-authentication") << "http://" + QtNetworkSettings::serverName() + "/qtest/rfcs-auth"
+ << int(QNetworkReply::AuthenticationRequiredError) << 401 << false;
+}
+
+void tst_QNetworkReply::getErrors()
+{
+ QFETCH(QString, url);
+ QNetworkRequest request(url);
+
+ QNetworkReplyPtr reply = manager.get(request);
+ reply->setParent(this); // we have expect-fails
+
+ if (!reply->isFinished())
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ // now run the request:
+ connect(reply, SIGNAL(finished()),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ //qDebug() << reply->errorString();
+
+ QFETCH(int, error);
+ QEXPECT_FAIL("ftp-is-dir", "QFtp cannot provide enough detail", Abort);
+ // the line below is not necessary
+ QEXPECT_FAIL("ftp-dir-not-readable", "QFtp cannot provide enough detail", Abort);
+ QCOMPARE(reply->error(), QNetworkReply::NetworkError(error));
+
+ QTEST(reply->readAll().isEmpty(), "dataIsEmpty");
+
+ QVERIFY(reply->isFinished());
+ QVERIFY(!reply->isRunning());
+
+ QFETCH(int, httpStatusCode);
+ if (httpStatusCode != 0) {
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), httpStatusCode);
+ }
+}
+
+static inline QByteArray md5sum(const QByteArray &data)
+{
+ return QCryptographicHash::hash(data, QCryptographicHash::Md5);
+}
+
+void tst_QNetworkReply::putToFile_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<QByteArray>("md5sum");
+
+ QByteArray data;
+ data = "";
+ QTest::newRow("empty") << data << md5sum(data);
+
+ data = "This is a normal message.";
+ QTest::newRow("generic") << data << md5sum(data);
+
+ data = "This is a message to show that Qt rocks!\r\n\n";
+ QTest::newRow("small") << data << md5sum(data);
+
+ data = QByteArray("abcd\0\1\2\abcd",12);
+ QTest::newRow("with-nul") << data << md5sum(data);
+
+ data = QByteArray(4097, '\4');
+ QTest::newRow("4k+1") << data << md5sum(data);
+
+ data = QByteArray(128*1024+1, '\177');
+ QTest::newRow("128k+1") << data << md5sum(data);
+
+ data = QByteArray(2*1024*1024+1, '\177');
+ QTest::newRow("2MB+1") << data << md5sum(data);
+}
+
+void tst_QNetworkReply::putToFile()
+{
+ QFile file(testFileName);
+
+ QUrl url = QUrl::fromLocalFile(file.fileName());
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+
+ QFETCH(QByteArray, data);
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
+ QVERIFY(reply->readAll().isEmpty());
+
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QCOMPARE(file.size(), qint64(data.size()));
+ QByteArray contents = file.readAll();
+ QCOMPARE(contents, data);
+}
+
+void tst_QNetworkReply::putToFtp_data()
+{
+ putToFile_data();
+}
+
+void tst_QNetworkReply::putToFtp()
+{
+ QUrl url("ftp://" + QtNetworkSettings::serverName());
+ url.setPath(QString("/qtest/upload/qnetworkaccess-putToFtp-%1-%2")
+ .arg(QTest::currentDataTag())
+ .arg(uniqueExtension));
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+
+ QFETCH(QByteArray, data);
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
+ QVERIFY(reply->readAll().isEmpty());
+
+ // download the file again from FTP to make sure it was uploaded
+ // correctly
+ QFtp ftp;
+ ftp.connectToHost(url.host());
+ ftp.login();
+ ftp.get(url.path());
+
+ QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QByteArray uploaded = ftp.readAll();
+ QCOMPARE(uploaded.size(), data.size());
+ QCOMPARE(uploaded, data);
+
+ ftp.close();
+ QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+}
+
+void tst_QNetworkReply::putToHttp_data()
+{
+ putToFile_data();
+}
+
+void tst_QNetworkReply::putToHttp()
+{
+ QUrl url("http://" + QtNetworkSettings::serverName());
+ url.setPath(QString("/dav/qnetworkaccess-putToHttp-%1-%2")
+ .arg(QTest::currentDataTag())
+ .arg(uniqueExtension));
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+
+ QFETCH(QByteArray, data);
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); // 201 Created
+
+ // download the file again from HTTP to make sure it was uploaded
+ // correctly. HTTP/0.9 is enough
+ QTcpSocket socket;
+ socket.connectToHost(QtNetworkSettings::serverName(), 80);
+ socket.write("GET " + url.toEncoded(QUrl::RemoveScheme | QUrl::RemoveAuthority) + "\r\n");
+ if (!socket.waitForDisconnected(10000))
+ QFAIL("Network timeout");
+
+ QByteArray uploadedData = socket.readAll();
+ QCOMPARE(uploadedData, data);
+}
+
+void tst_QNetworkReply::putToHttpSynchronous_data()
+{
+ uniqueExtension = createUniqueExtension();
+ putToFile_data();
+}
+
+void tst_QNetworkReply::putToHttpSynchronous()
+{
+ QUrl url("http://" + QtNetworkSettings::serverName());
+ url.setPath(QString("/dav/qnetworkaccess-putToHttp-%1-%2")
+ .arg(QTest::currentDataTag())
+ .arg(uniqueExtension));
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+
+ QFETCH(QByteArray, data);
+
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); // 201 Created
+
+ // download the file again from HTTP to make sure it was uploaded
+ // correctly. HTTP/0.9 is enough
+ QTcpSocket socket;
+ socket.connectToHost(QtNetworkSettings::serverName(), 80);
+ socket.write("GET " + url.toEncoded(QUrl::RemoveScheme | QUrl::RemoveAuthority) + "\r\n");
+ if (!socket.waitForDisconnected(10000))
+ QFAIL("Network timeout");
+
+ QByteArray uploadedData = socket.readAll();
+ QCOMPARE(uploadedData, data);
+}
+
+void tst_QNetworkReply::postToHttp_data()
+{
+ putToFile_data();
+}
+
+void tst_QNetworkReply::postToHttp()
+{
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi");
+
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+ QNetworkReplyPtr reply;
+
+ QFETCH(QByteArray, data);
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QFETCH(QByteArray, md5sum);
+ QByteArray uploadedData = reply->readAll().trimmed();
+ QCOMPARE(uploadedData, md5sum.toHex());
+}
+
+void tst_QNetworkReply::postToHttpSynchronous_data()
+{
+ putToFile_data();
+}
+
+void tst_QNetworkReply::postToHttpSynchronous()
+{
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi");
+
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ QNetworkReplyPtr reply;
+
+ QFETCH(QByteArray, data);
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QFETCH(QByteArray, md5sum);
+ QByteArray uploadedData = reply->readAll().trimmed();
+ QCOMPARE(uploadedData, md5sum.toHex());
+}
+
+void tst_QNetworkReply::postToHttpMultipart_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<QHttpMultiPart *>("multiPart");
+ QTest::addColumn<QByteArray>("expectedReplyData");
+ QTest::addColumn<QByteArray>("contentType");
+
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/multipart.cgi");
+ QByteArray expectedData;
+
+
+ // empty parts
+
+ QHttpMultiPart *emptyMultiPart = new QHttpMultiPart;
+ QTest::newRow("empty") << url << emptyMultiPart << expectedData << QByteArray("mixed");
+
+ QHttpMultiPart *emptyRelatedMultiPart = new QHttpMultiPart;
+ emptyRelatedMultiPart->setContentType(QHttpMultiPart::RelatedType);
+ QTest::newRow("empty-related") << url << emptyRelatedMultiPart << expectedData << QByteArray("related");
+
+ QHttpMultiPart *emptyAlternativeMultiPart = new QHttpMultiPart;
+ emptyAlternativeMultiPart->setContentType(QHttpMultiPart::AlternativeType);
+ QTest::newRow("empty-alternative") << url << emptyAlternativeMultiPart << expectedData << QByteArray("alternative");
+
+
+ // text-only parts
+
+ QHttpPart textPart;
+ textPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain"));
+ textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\""));
+ textPart.setBody("7 bytes");
+ QHttpMultiPart *multiPart1 = new QHttpMultiPart;
+ multiPart1->setContentType(QHttpMultiPart::FormDataType);
+ multiPart1->append(textPart);
+ expectedData = "key: text, value: 7 bytes\n";
+ QTest::newRow("text") << url << multiPart1 << expectedData << QByteArray("form-data");
+
+ QHttpMultiPart *customMultiPart = new QHttpMultiPart;
+ customMultiPart->append(textPart);
+ expectedData = "header: Content-Type, value: 'text/plain'\n"
+ "header: Content-Disposition, value: 'form-data; name=\"text\"'\n"
+ "content: 7 bytes\n"
+ "\n";
+ QTest::newRow("text-custom") << url << customMultiPart << expectedData << QByteArray("custom");
+
+ QHttpPart textPart2;
+ textPart2.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain"));
+ textPart2.setRawHeader("myRawHeader", "myValue");
+ textPart2.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text2\""));
+ textPart2.setBody("some more bytes");
+ textPart2.setBodyDevice((QIODevice *) 1); // test whether setting and unsetting of the device works
+ textPart2.setBodyDevice(0);
+ QHttpMultiPart *multiPart2 = new QHttpMultiPart;
+ multiPart2->setContentType(QHttpMultiPart::FormDataType);
+ multiPart2->append(textPart);
+ multiPart2->append(textPart2);
+ expectedData = "key: text2, value: some more bytes\n"
+ "key: text, value: 7 bytes\n";
+ QTest::newRow("text-text") << url << multiPart2 << expectedData << QByteArray("form-data");
+
+
+ QHttpPart textPart3;
+ textPart3.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain"));
+ textPart3.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text3\""));
+ textPart3.setRawHeader("Content-Location", "http://my.test.location.tld");
+ textPart3.setBody("even more bytes");
+ QHttpMultiPart *multiPart3 = new QHttpMultiPart;
+ multiPart3->setContentType(QHttpMultiPart::AlternativeType);
+ multiPart3->append(textPart);
+ multiPart3->append(textPart2);
+ multiPart3->append(textPart3);
+ expectedData = "header: Content-Type, value: 'text/plain'\n"
+ "header: Content-Disposition, value: 'form-data; name=\"text\"'\n"
+ "content: 7 bytes\n"
+ "\n"
+ "header: Content-Type, value: 'text/plain'\n"
+ "header: myRawHeader, value: 'myValue'\n"
+ "header: Content-Disposition, value: 'form-data; name=\"text2\"'\n"
+ "content: some more bytes\n"
+ "\n"
+ "header: Content-Type, value: 'text/plain'\n"
+ "header: Content-Disposition, value: 'form-data; name=\"text3\"'\n"
+ "header: Content-Location, value: 'http://my.test.location.tld'\n"
+ "content: even more bytes\n\n";
+ QTest::newRow("text-text-text") << url << multiPart3 << expectedData << QByteArray("alternative");
+
+
+
+ // text and image parts
+
+ QHttpPart imagePart11;
+ imagePart11.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
+ imagePart11.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage\""));
+ imagePart11.setRawHeader("Content-Location", "http://my.test.location.tld");
+ imagePart11.setRawHeader("Content-ID", "my@id.tld");
+ QFile *file11 = new QFile(SRCDIR "/image1.jpg");
+ file11->open(QIODevice::ReadOnly);
+ imagePart11.setBodyDevice(file11);
+ QHttpMultiPart *imageMultiPart1 = new QHttpMultiPart(QHttpMultiPart::FormDataType);
+ imageMultiPart1->append(imagePart11);
+ file11->setParent(imageMultiPart1);
+ expectedData = "key: testImage, value: 87ef3bb319b004ba9e5e9c9fa713776e\n"; // md5 sum of file
+ QTest::newRow("image") << url << imageMultiPart1 << expectedData << QByteArray("form-data");
+
+ QHttpPart imagePart21;
+ imagePart21.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
+ imagePart21.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage1\""));
+ imagePart21.setRawHeader("Content-Location", "http://my.test.location.tld");
+ imagePart21.setRawHeader("Content-ID", "my@id.tld");
+ QFile *file21 = new QFile(SRCDIR "/image1.jpg");
+ file21->open(QIODevice::ReadOnly);
+ imagePart21.setBodyDevice(file21);
+ QHttpMultiPart *imageMultiPart2 = new QHttpMultiPart();
+ imageMultiPart2->setContentType(QHttpMultiPart::FormDataType);
+ imageMultiPart2->append(textPart);
+ imageMultiPart2->append(imagePart21);
+ file21->setParent(imageMultiPart2);
+ QHttpPart imagePart22;
+ imagePart22.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
+ imagePart22.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage2\""));
+ QFile *file22 = new QFile(SRCDIR "/image2.jpg");
+ file22->open(QIODevice::ReadOnly);
+ imagePart22.setBodyDevice(file22);
+ imageMultiPart2->append(imagePart22);
+ file22->setParent(imageMultiPart2);
+ expectedData = "key: testImage1, value: 87ef3bb319b004ba9e5e9c9fa713776e\n"
+ "key: text, value: 7 bytes\n"
+ "key: testImage2, value: 483761b893f7fb1bd2414344cd1f3dfb\n";
+ QTest::newRow("text-image-image") << url << imageMultiPart2 << expectedData << QByteArray("form-data");
+
+
+ QHttpPart imagePart31;
+ imagePart31.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
+ imagePart31.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage1\""));
+ imagePart31.setRawHeader("Content-Location", "http://my.test.location.tld");
+ imagePart31.setRawHeader("Content-ID", "my@id.tld");
+ QFile *file31 = new QFile(SRCDIR "/image1.jpg");
+ file31->open(QIODevice::ReadOnly);
+ imagePart31.setBodyDevice(file31);
+ QHttpMultiPart *imageMultiPart3 = new QHttpMultiPart(QHttpMultiPart::FormDataType);
+ imageMultiPart3->append(imagePart31);
+ file31->setParent(imageMultiPart3);
+ QHttpPart imagePart32;
+ imagePart32.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
+ imagePart32.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage2\""));
+ QFile *file32 = new QFile(SRCDIR "/image2.jpg");
+ file32->open(QIODevice::ReadOnly);
+ imagePart32.setBodyDevice(file31); // check that resetting works
+ imagePart32.setBodyDevice(file32);
+ imageMultiPart3->append(imagePart32);
+ file32->setParent(imageMultiPart3);
+ QHttpPart imagePart33;
+ imagePart33.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
+ imagePart33.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage3\""));
+ QFile *file33 = new QFile(SRCDIR "/image3.jpg");
+ file33->open(QIODevice::ReadOnly);
+ imagePart33.setBodyDevice(file33);
+ imageMultiPart3->append(imagePart33);
+ file33->setParent(imageMultiPart3);
+ expectedData = "key: testImage1, value: 87ef3bb319b004ba9e5e9c9fa713776e\n"
+ "key: testImage2, value: 483761b893f7fb1bd2414344cd1f3dfb\n"
+ "key: testImage3, value: ab0eb6fd4fcf8b4436254870b4513033\n";
+ QTest::newRow("3-images") << url << imageMultiPart3 << expectedData << QByteArray("form-data");
+
+
+ // note: nesting multiparts is not working currently; for that, the outputDevice would need to be public
+
+// QHttpPart imagePart41;
+// imagePart41.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
+// QFile *file41 = new QFile(SRCDIR "/image1.jpg");
+// file41->open(QIODevice::ReadOnly);
+// imagePart41.setBodyDevice(file41);
+//
+// QHttpMultiPart *innerMultiPart = new QHttpMultiPart();
+// innerMultiPart->setContentType(QHttpMultiPart::FormDataType);
+// textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant());
+// innerMultiPart->append(textPart);
+// innerMultiPart->append(imagePart41);
+// textPart2.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant());
+// innerMultiPart->append(textPart2);
+//
+// QHttpPart nestedPart;
+// nestedPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"nestedMessage"));
+// nestedPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("multipart/alternative; boundary=\"" + innerMultiPart->boundary() + "\""));
+// innerMultiPart->outputDevice()->open(QIODevice::ReadOnly);
+// nestedPart.setBodyDevice(innerMultiPart->outputDevice());
+//
+// QHttpMultiPart *outerMultiPart = new QHttpMultiPart;
+// outerMultiPart->setContentType(QHttpMultiPart::FormDataType);
+// outerMultiPart->append(textPart);
+// outerMultiPart->append(nestedPart);
+// outerMultiPart->append(textPart2);
+// expectedData = "nothing"; // the CGI.pm module running on the test server does not understand nested multiparts
+// openFiles.clear();
+// openFiles << file41;
+// QTest::newRow("nested") << url << outerMultiPart << expectedData << openFiles;
+
+
+ // test setting large chunks of content with a byte array instead of a device (DISCOURAGED because of high memory consumption,
+ // but we need to test that the behavior is correct)
+ QHttpPart imagePart51;
+ imagePart51.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
+ imagePart51.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage\""));
+ QFile *file51 = new QFile(SRCDIR "/image1.jpg");
+ file51->open(QIODevice::ReadOnly);
+ QByteArray imageData = file51->readAll();
+ file51->close();
+ delete file51;
+ imagePart51.setBody("7 bytes"); // check that resetting works
+ imagePart51.setBody(imageData);
+ QHttpMultiPart *imageMultiPart5 = new QHttpMultiPart;
+ imageMultiPart5->setContentType(QHttpMultiPart::FormDataType);
+ imageMultiPart5->append(imagePart51);
+ expectedData = "key: testImage, value: 87ef3bb319b004ba9e5e9c9fa713776e\n"; // md5 sum of file
+ QTest::newRow("image-as-content") << url << imageMultiPart5 << expectedData << QByteArray("form-data");
+}
+
+void tst_QNetworkReply::postToHttpMultipart()
+{
+ QFETCH(QUrl, url);
+
+ static QSet<QByteArray> boundaries;
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+
+ QFETCH(QHttpMultiPart *, multiPart);
+ QFETCH(QByteArray, expectedReplyData);
+ QFETCH(QByteArray, contentType);
+
+ // hack for testing the setting of the content-type header by hand:
+ if (contentType == "custom") {
+ QByteArray contentType("multipart/custom; boundary=\"" + multiPart->boundary() + "\"");
+ request.setHeader(QNetworkRequest::ContentTypeHeader, contentType);
+ }
+
+ QVERIFY2(! boundaries.contains(multiPart->boundary()), "boundary '" + multiPart->boundary() + "' has been created twice");
+ boundaries.insert(multiPart->boundary());
+
+ RUN_REQUEST(runMultipartRequest(request, reply, multiPart, "POST"));
+ multiPart->deleteLater();
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QVERIFY(multiPart->boundary().count() > 20); // check that there is randomness after the "boundary_.oOo._" string
+ QVERIFY(multiPart->boundary().count() < 70);
+ QByteArray replyData = reply->readAll();
+
+ expectedReplyData.prepend("content type: multipart/" + contentType + "; boundary=\"" + multiPart->boundary() + "\"\n");
+// QEXPECT_FAIL("nested", "the server does not understand nested multipart messages", Continue); // see above
+ QCOMPARE(replyData, expectedReplyData);
+}
+
+void tst_QNetworkReply::putToHttpMultipart_data()
+{
+ postToHttpMultipart_data();
+}
+
+void tst_QNetworkReply::putToHttpMultipart()
+{
+ QSKIP("test server script cannot handle PUT data yet", SkipAll);
+ QFETCH(QUrl, url);
+
+ static QSet<QByteArray> boundaries;
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+
+ QFETCH(QHttpMultiPart *, multiPart);
+ QFETCH(QByteArray, expectedReplyData);
+ QFETCH(QByteArray, contentType);
+
+ // hack for testing the setting of the content-type header by hand:
+ if (contentType == "custom") {
+ QByteArray contentType("multipart/custom; boundary=\"" + multiPart->boundary() + "\"");
+ request.setHeader(QNetworkRequest::ContentTypeHeader, contentType);
+ }
+
+ QVERIFY2(! boundaries.contains(multiPart->boundary()), "boundary '" + multiPart->boundary() + "' has been created twice");
+ boundaries.insert(multiPart->boundary());
+
+ RUN_REQUEST(runMultipartRequest(request, reply, multiPart, "PUT"));
+ multiPart->deleteLater();
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QVERIFY(multiPart->boundary().count() > 20); // check that there is randomness after the "boundary_.oOo._" string
+ QVERIFY(multiPart->boundary().count() < 70);
+ QByteArray replyData = reply->readAll();
+
+ expectedReplyData.prepend("content type: multipart/" + contentType + "; boundary=\"" + multiPart->boundary() + "\"\n");
+// QEXPECT_FAIL("nested", "the server does not understand nested multipart messages", Continue); // see above
+ QCOMPARE(replyData, expectedReplyData);
+}
+
+void tst_QNetworkReply::deleteFromHttp_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<int>("resultCode");
+ QTest::addColumn<QNetworkReply::NetworkError>("error");
+
+ // for status codes to expect, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
+
+ QTest::newRow("405-method-not-allowed") << QUrl("http://" + QtNetworkSettings::serverName() + "/index.html") << 405 << QNetworkReply::ContentOperationNotPermittedError;
+ QTest::newRow("200-ok") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/http-delete.cgi?200-ok") << 200 << QNetworkReply::NoError;
+ QTest::newRow("202-accepted") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/http-delete.cgi?202-accepted") << 202 << QNetworkReply::NoError;
+ QTest::newRow("204-no-content") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/http-delete.cgi?204-no-content") << 204 << QNetworkReply::NoError;
+ QTest::newRow("404-not-found") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/http-delete.cgi?404-not-found") << 404 << QNetworkReply::ContentNotFoundError;
+}
+
+void tst_QNetworkReply::deleteFromHttp()
+{
+ QFETCH(QUrl, url);
+ QFETCH(int, resultCode);
+ QFETCH(QNetworkReply::NetworkError, error);
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+ runSimpleRequest(QNetworkAccessManager::DeleteOperation, request, reply, 0);
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), error);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), resultCode);
+}
+
+void tst_QNetworkReply::putGetDeleteGetFromHttp_data()
+{
+ QTest::addColumn<QUrl>("putUrl");
+ QTest::addColumn<int>("putResultCode");
+ QTest::addColumn<QNetworkReply::NetworkError>("putError");
+ QTest::addColumn<QUrl>("deleteUrl");
+ QTest::addColumn<int>("deleteResultCode");
+ QTest::addColumn<QNetworkReply::NetworkError>("deleteError");
+ QTest::addColumn<QUrl>("get2Url");
+ QTest::addColumn<int>("get2ResultCode");
+ QTest::addColumn<QNetworkReply::NetworkError>("get2Error");
+
+ QUrl url("http://" + QtNetworkSettings::serverName());
+ url.setPath(QString("/dav/qnetworkaccess-putToHttp-%1-%2")
+ .arg(QTest::currentDataTag())
+ .arg(uniqueExtension));
+
+ // first use case: put, get (to check it is there), delete, get (to check it is not there anymore)
+ QTest::newRow("success") << url << 201 << QNetworkReply::NoError << url << 204 << QNetworkReply::NoError << url << 404 << QNetworkReply::ContentNotFoundError;
+
+ QUrl wrongUrl("http://" + QtNetworkSettings::serverName());
+ wrongUrl.setPath(QString("/dav/qnetworkaccess-thisURLisNotAvailable"));
+
+ // second use case: put, get (to check it is there), delete wrong URL, get (to check it is still there)
+ QTest::newRow("delete-error") << url << 201 << QNetworkReply::NoError << wrongUrl << 404 << QNetworkReply::ContentNotFoundError << url << 200 << QNetworkReply::NoError;
+
+}
+
+void tst_QNetworkReply::putGetDeleteGetFromHttp()
+{
+ QFETCH(QUrl, putUrl);
+ QFETCH(int, putResultCode);
+ QFETCH(QNetworkReply::NetworkError, putError);
+ QFETCH(QUrl, deleteUrl);
+ QFETCH(int, deleteResultCode);
+ QFETCH(QNetworkReply::NetworkError, deleteError);
+ QFETCH(QUrl, get2Url);
+ QFETCH(int, get2ResultCode);
+ QFETCH(QNetworkReply::NetworkError, get2Error);
+
+ QNetworkRequest putRequest(putUrl);
+ QNetworkRequest deleteRequest(deleteUrl);
+ QNetworkRequest get2Request(get2Url);
+ QNetworkReplyPtr reply;
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, putRequest, reply, 0));
+ QCOMPARE(reply->error(), putError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), putResultCode);
+
+ runSimpleRequest(QNetworkAccessManager::GetOperation, putRequest, reply, 0);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ runSimpleRequest(QNetworkAccessManager::DeleteOperation, deleteRequest, reply, 0);
+ QCOMPARE(reply->error(), deleteError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), deleteResultCode);
+
+ runSimpleRequest(QNetworkAccessManager::GetOperation, get2Request, reply, 0);
+ QCOMPARE(reply->error(), get2Error);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), get2ResultCode);
+
+}
+
+void tst_QNetworkReply::connectToIPv6Address_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<QNetworkReply::NetworkError>("error");
+ QTest::addColumn<QByteArray>("dataToSend");
+ QTest::addColumn<QByteArray>("hostfield");
+ QTest::newRow("localhost") << QUrl(QByteArray("http://[::1]")) << QNetworkReply::NoError<< QByteArray("localhost") << QByteArray("[::1]");
+ //QTest::newRow("ipv4localhost") << QUrl(QByteArray("http://127.0.0.1")) << QNetworkReply::NoError<< QByteArray("ipv4localhost") << QByteArray("127.0.0.1");
+ //to add more test data here
+}
+
+void tst_QNetworkReply::connectToIPv6Address()
+{
+ QFETCH(QUrl, url);
+ QFETCH(QNetworkReply::NetworkError, error);
+ QFETCH(QByteArray, dataToSend);
+ QFETCH(QByteArray, hostfield);
+
+ QByteArray httpResponse = QByteArray("HTTP/1.0 200 OK\r\nContent-Length: ");
+ httpResponse += QByteArray::number(dataToSend.size());
+ httpResponse += "\r\n\r\n";
+ httpResponse += dataToSend;
+
+ MiniHttpServer server(httpResponse, false, NULL/*thread*/, true/*useipv6*/);
+ server.doClose = true;
+
+ url.setPort(server.serverPort());
+ QNetworkRequest request(url);
+
+ QNetworkReplyPtr reply = manager.get(request);
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QByteArray content = reply->readAll();
+ //qDebug() << server.receivedData;
+ QByteArray hostinfo = "\r\nHost: " + hostfield + ":" + QByteArray::number(server.serverPort()) + "\r\n";
+ QVERIFY(server.receivedData.contains(hostinfo));
+ QVERIFY(content == dataToSend);
+ QCOMPARE(reply->url(), request.url());
+ QVERIFY(reply->error() == error);
+}
+
+void tst_QNetworkReply::sendCustomRequestToHttp_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<QByteArray>("verb");
+ QTest::addColumn<QBuffer *>("device");
+ QTest::addColumn<int>("resultCode");
+ QTest::addColumn<QNetworkReply::NetworkError>("error");
+ QTest::addColumn<QByteArray>("expectedContent");
+
+ QTest::newRow("options") << QUrl("http://" + QtNetworkSettings::serverName()) <<
+ QByteArray("OPTIONS") << (QBuffer *) 0 << 200 << QNetworkReply::NoError << QByteArray();
+ QTest::newRow("trace") << QUrl("http://" + QtNetworkSettings::serverName()) <<
+ QByteArray("TRACE") << (QBuffer *) 0 << 200 << QNetworkReply::NoError << QByteArray();
+ QTest::newRow("connect") << QUrl("http://" + QtNetworkSettings::serverName()) <<
+ QByteArray("CONNECT") << (QBuffer *) 0 << 400 << QNetworkReply::UnknownContentError << QByteArray(); // 400 = Bad Request
+ QTest::newRow("nonsense") << QUrl("http://" + QtNetworkSettings::serverName()) <<
+ QByteArray("NONSENSE") << (QBuffer *) 0 << 501 << QNetworkReply::ProtocolUnknownError << QByteArray(); // 501 = Method Not Implemented
+
+ QByteArray ba("test");
+ QBuffer *buffer = new QBuffer;
+ buffer->setData(ba);
+ buffer->open(QIODevice::ReadOnly);
+ QTest::newRow("post") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi") << QByteArray("POST")
+ << buffer << 200 << QNetworkReply::NoError << QByteArray("098f6bcd4621d373cade4e832627b4f6\n");
+
+ QByteArray ba2("test");
+ QBuffer *buffer2 = new QBuffer;
+ buffer2->setData(ba2);
+ buffer2->open(QIODevice::ReadOnly);
+ QTest::newRow("put") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi") << QByteArray("PUT")
+ << buffer2 << 200 << QNetworkReply::NoError << QByteArray("098f6bcd4621d373cade4e832627b4f6\n");
+}
+
+void tst_QNetworkReply::sendCustomRequestToHttp()
+{
+ QFETCH(QUrl, url);
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+ QFETCH(QByteArray, verb);
+ QFETCH(QBuffer *, device);
+ runCustomRequest(request, reply, verb, device);
+ QCOMPARE(reply->url(), url);
+ QFETCH(QNetworkReply::NetworkError, error);
+ QCOMPARE(reply->error(), error);
+ QFETCH(int, resultCode);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), resultCode);
+ QFETCH(QByteArray, expectedContent);
+ if (! expectedContent.isEmpty())
+ QCOMPARE(reply->readAll(), expectedContent);
+}
+
+void tst_QNetworkReply::ioGetFromData_data()
+{
+ QTest::addColumn<QString>("urlStr");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("data-empty") << "data:," << QByteArray();
+ QTest::newRow("data-literal") << "data:,foo" << QByteArray("foo");
+ QTest::newRow("data-pct") << "data:,%3Cbody%20contentEditable%3Dtrue%3E%0D%0A"
+ << QByteArray("<body contentEditable=true>\r\n");
+ QTest::newRow("data-base64") << "data:;base64,UXQgaXMgZ3JlYXQh" << QByteArray("Qt is great!");
+}
+
+void tst_QNetworkReply::ioGetFromData()
+{
+ QFETCH(QString, urlStr);
+
+ QUrl url = QUrl::fromEncoded(urlStr.toLatin1());
+ QNetworkRequest request(url);
+
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+
+ connect(reply, SIGNAL(finished()),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QFETCH(QByteArray, data);
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toInt(), data.size());
+ QCOMPARE(reader.data.size(), data.size());
+ QCOMPARE(reader.data, data);
+}
+
+void tst_QNetworkReply::ioGetFromFileSpecial_data()
+{
+ getFromFileSpecial_data();
+}
+
+void tst_QNetworkReply::ioGetFromFileSpecial()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QString, url);
+
+ QFile resource(fileName);
+ QVERIFY(resource.open(QIODevice::ReadOnly));
+
+ QNetworkRequest request;
+ request.setUrl(url);
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), resource.size());
+ QCOMPARE(qint64(reader.data.size()), resource.size());
+ QCOMPARE(reader.data, resource.readAll());
+}
+
+void tst_QNetworkReply::ioGetFromFile_data()
+{
+ putToFile_data();
+}
+
+void tst_QNetworkReply::ioGetFromFile()
+{
+ QTemporaryFile file(QDir::currentPath() + "/temp-XXXXXX");
+ file.setAutoRemove(true);
+ QVERIFY(file.open());
+
+ QFETCH(QByteArray, data);
+ QVERIFY(file.write(data) == data.size());
+ file.flush();
+ QCOMPARE(file.size(), qint64(data.size()));
+
+ QNetworkRequest request(QUrl::fromLocalFile(file.fileName()));
+ QNetworkReplyPtr reply = manager.get(request);
+ QVERIFY(reply->isFinished()); // a file should immediately be done
+ DataReader reader(reply);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), file.size());
+ QCOMPARE(qint64(reader.data.size()), file.size());
+ QCOMPARE(reader.data, data);
+}
+
+void tst_QNetworkReply::ioGetFromFtp_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<qint64>("expectedSize");
+
+ QTest::newRow("bigfile") << "bigfile" << Q_INT64_C(519240);
+
+ QFile file(SRCDIR "/rfc3252.txt");
+ QTest::newRow("rfc3252.txt") << "rfc3252.txt" << file.size();
+}
+
+void tst_QNetworkReply::ioGetFromFtp()
+{
+ QFETCH(QString, fileName);
+ QFile reference(fileName);
+ reference.open(QIODevice::ReadOnly); // will fail for bigfile
+
+ QNetworkRequest request("ftp://" + QtNetworkSettings::serverName() + "/qtest/" + fileName);
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QFETCH(qint64, expectedSize);
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), expectedSize);
+ QCOMPARE(qint64(reader.data.size()), expectedSize);
+
+ if (reference.isOpen())
+ QCOMPARE(reader.data, reference.readAll());
+}
+
+void tst_QNetworkReply::ioGetFromFtpWithReuse()
+{
+ QString fileName = SRCDIR "/rfc3252.txt";
+ QFile reference(fileName);
+ reference.open(QIODevice::ReadOnly);
+
+ QNetworkRequest request(QUrl("ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
+
+ // two concurrent (actually, consecutive) gets:
+ QNetworkReplyPtr reply1 = manager.get(request);
+ DataReader reader1(reply1);
+ QNetworkReplyPtr reply2 = manager.get(request);
+ DataReader reader2(reply2);
+ QSignalSpy spy(reply1, SIGNAL(finished()));
+
+ connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ if (spy.count() == 0) {
+ connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ }
+
+ QCOMPARE(reply1->url(), request.url());
+ QCOMPARE(reply2->url(), request.url());
+ QCOMPARE(reply1->error(), QNetworkReply::NoError);
+ QCOMPARE(reply2->error(), QNetworkReply::NoError);
+
+ QCOMPARE(qint64(reader1.data.size()), reference.size());
+ QCOMPARE(qint64(reader2.data.size()), reference.size());
+ QCOMPARE(reply1->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
+ QCOMPARE(reply2->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
+
+ QByteArray referenceData = reference.readAll();
+ QCOMPARE(reader1.data, referenceData);
+ QCOMPARE(reader2.data, referenceData);
+}
+
+void tst_QNetworkReply::ioGetFromHttp()
+{
+ QFile reference(SRCDIR "/rfc3252.txt");
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
+ QCOMPARE(qint64(reader.data.size()), reference.size());
+
+ QCOMPARE(reader.data, reference.readAll());
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithReuseParallel()
+{
+ QFile reference(SRCDIR "/rfc3252.txt");
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
+ QNetworkReplyPtr reply1 = manager.get(request);
+ QNetworkReplyPtr reply2 = manager.get(request);
+ DataReader reader1(reply1);
+ DataReader reader2(reply2);
+ QSignalSpy spy(reply1, SIGNAL(finished()));
+
+ connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ if (spy.count() == 0) {
+ connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ }
+
+ QCOMPARE(reply1->url(), request.url());
+ QCOMPARE(reply2->url(), request.url());
+ QCOMPARE(reply1->error(), QNetworkReply::NoError);
+ QCOMPARE(reply2->error(), QNetworkReply::NoError);
+ QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ QCOMPARE(reply1->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
+ QCOMPARE(reply2->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
+ QCOMPARE(qint64(reader1.data.size()), reference.size());
+ QCOMPARE(qint64(reader2.data.size()), reference.size());
+
+ QByteArray referenceData = reference.readAll();
+ QCOMPARE(reader1.data, referenceData);
+ QCOMPARE(reader2.data, referenceData);
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithReuseSequential()
+{
+ QFile reference(SRCDIR "/rfc3252.txt");
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
+ {
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
+ QCOMPARE(qint64(reader.data.size()), reference.size());
+
+ QCOMPARE(reader.data, reference.readAll());
+ }
+
+ reference.seek(0);
+ // rinse and repeat:
+ {
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
+ QCOMPARE(qint64(reader.data.size()), reference.size());
+
+ QCOMPARE(reader.data, reference.readAll());
+ }
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithAuth_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<QByteArray>("expectedData");
+
+ QFile reference(SRCDIR "/rfc3252.txt");
+ reference.open(QIODevice::ReadOnly);
+ QByteArray referenceData = reference.readAll();
+ QTest::newRow("basic") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfcs-auth/rfc3252.txt") << referenceData;
+ QTest::newRow("digest") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/auth-digest/") << QByteArray("digest authentication successful\n");
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithAuth()
+{
+ // This test sends three requests
+ // The first two in parallel
+ // The third after the first two finished
+
+ QFETCH(QUrl, url);
+ QFETCH(QByteArray, expectedData);
+ QNetworkRequest request(url);
+ {
+ QNetworkReplyPtr reply1 = manager.get(request);
+ QNetworkReplyPtr reply2 = manager.get(request);
+ DataReader reader1(reply1);
+ DataReader reader2(reply2);
+ QSignalSpy finishedspy(reply1, SIGNAL(finished()));
+
+ QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+
+ connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ if (finishedspy.count() == 0) {
+ connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ }
+ manager.disconnect(SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+
+ QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(reader1.data, expectedData);
+ QCOMPARE(reader2.data, expectedData);
+
+ QCOMPARE(authspy.count(), 1);
+ }
+
+ // rinse and repeat:
+ {
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+
+ QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ manager.disconnect(SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(reader.data, expectedData);
+
+ QCOMPARE(authspy.count(), 0);
+ }
+
+ // now check with synchronous calls:
+ {
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QNetworkReplyPtr replySync = manager.get(request);
+ QVERIFY(replySync->isFinished()); // synchronous
+ QCOMPARE(authspy.count(), 0);
+
+ // we cannot use a data reader here, since that connects to the readyRead signal,
+ // just use readAll()
+
+ // the only thing we check here is that the auth cache was used when using synchronous requests
+ QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(replySync->readAll(), expectedData);
+ }
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithAuthSynchronous()
+{
+ // verify that we do not enter an endless loop with synchronous calls and wrong credentials
+ // the case when we succeed with the login is tested in ioGetFromHttpWithAuth()
+
+ QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfcs-auth/rfc3252.txt"));
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QNetworkReplyPtr replySync = manager.get(request);
+ QVERIFY(replySync->isFinished()); // synchronous
+ QCOMPARE(replySync->error(), QNetworkReply::AuthenticationRequiredError);
+ QCOMPARE(authspy.count(), 0);
+ QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 401);
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithProxyAuth()
+{
+ qRegisterMetaType<QNetworkProxy>(); // for QSignalSpy
+ qRegisterMetaType<QAuthenticator *>();
+
+ // This test sends three requests
+ // The first two in parallel
+ // The third after the first two finished
+ QFile reference(SRCDIR "/rfc3252.txt");
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
+ QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
+ {
+ manager.setProxy(proxy);
+ QNetworkReplyPtr reply1 = manager.get(request);
+ QNetworkReplyPtr reply2 = manager.get(request);
+ manager.setProxy(QNetworkProxy());
+
+ DataReader reader1(reply1);
+ DataReader reader2(reply2);
+ QSignalSpy finishedspy(reply1, SIGNAL(finished()));
+
+ QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+
+ connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ if (finishedspy.count() == 0) {
+ connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ }
+ manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+
+ QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QByteArray referenceData = reference.readAll();
+ QCOMPARE(reader1.data, referenceData);
+ QCOMPARE(reader2.data, referenceData);
+
+ QCOMPARE(authspy.count(), 1);
+ }
+
+ reference.seek(0);
+ // rinse and repeat:
+ {
+ manager.setProxy(proxy);
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+ manager.setProxy(QNetworkProxy());
+
+ QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(reader.data, reference.readAll());
+
+ QCOMPARE(authspy.count(), 0);
+ }
+
+ // now check with synchronous calls:
+ reference.seek(0);
+ {
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ QNetworkReplyPtr replySync = manager.get(request);
+ QVERIFY(replySync->isFinished()); // synchronous
+ QCOMPARE(authspy.count(), 0);
+
+ // we cannot use a data reader here, since that connects to the readyRead signal,
+ // just use readAll()
+
+ // the only thing we check here is that the proxy auth cache was used when using synchronous requests
+ QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(replySync->readAll(), reference.readAll());
+ }
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithProxyAuthSynchronous()
+{
+ // verify that we do not enter an endless loop with synchronous calls and wrong credentials
+ // the case when we succeed with the login is tested in ioGetFromHttpWithAuth()
+
+ QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
+ QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
+ manager.setProxy(proxy);
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ QNetworkReplyPtr replySync = manager.get(request);
+ manager.setProxy(QNetworkProxy()); // reset
+ QVERIFY(replySync->isFinished()); // synchronous
+ QCOMPARE(replySync->error(), QNetworkReply::ProxyAuthenticationRequiredError);
+ QCOMPARE(authspy.count(), 0);
+ QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 407);
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithSocksProxy()
+{
+ // HTTP caching proxies are tested by the above function
+ // test SOCKSv5 proxies too
+
+ qRegisterMetaType<QNetworkProxy>(); // for QSignalSpy
+ qRegisterMetaType<QAuthenticator *>();
+
+ QFile reference(SRCDIR "/rfc3252.txt");
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ QNetworkProxy proxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
+ QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
+ {
+ manager.setProxy(proxy);
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+ manager.setProxy(QNetworkProxy());
+
+ QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(reader.data, reference.readAll());
+
+ QCOMPARE(authspy.count(), 0);
+ }
+
+ // set an invalid proxy just to make sure that we can't load
+ proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1079);
+ {
+ manager.setProxy(proxy);
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+ manager.setProxy(QNetworkProxy());
+
+ QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+
+ QVERIFY(!reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).isValid());
+ QVERIFY(reader.data.isEmpty());
+
+ QVERIFY(int(reply->error()) > 0);
+ QEXPECT_FAIL("", "QTcpSocket doesn't return enough information yet", Continue);
+ QCOMPARE(int(reply->error()), int(QNetworkReply::ProxyConnectionRefusedError));
+
+ QCOMPARE(authspy.count(), 0);
+ }
+}
+
+#ifndef QT_NO_OPENSSL
+void tst_QNetworkReply::ioGetFromHttpsWithSslErrors()
+{
+ qRegisterMetaType<QNetworkReply*>(); // for QSignalSpy
+ qRegisterMetaType<QList<QSslError> >();
+
+ QFile reference(SRCDIR "/rfc3252.txt");
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+
+ QSignalSpy sslspy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)));
+ connect(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
+ SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
+ connect(reply, SIGNAL(metaDataChanged()), SLOT(storeSslConfiguration()));
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ manager.disconnect(SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
+ this, SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(reader.data, reference.readAll());
+
+ QCOMPARE(sslspy.count(), 1);
+
+ QVERIFY(!storedSslConfiguration.isNull());
+ QVERIFY(!reply->sslConfiguration().isNull());
+}
+
+void tst_QNetworkReply::ioGetFromHttpsWithIgnoreSslErrors()
+{
+ // same as above, except that we call ignoreSslErrors and don't connect
+ // to the sslErrors() signal (which is *still* emitted)
+
+ qRegisterMetaType<QNetworkReply*>(); // for QSignalSpy
+ qRegisterMetaType<QList<QSslError> >();
+
+ QFile reference(SRCDIR "/rfc3252.txt");
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
+
+ QNetworkReplyPtr reply = manager.get(request);
+ reply->ignoreSslErrors();
+ DataReader reader(reply);
+
+ QSignalSpy sslspy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)));
+ connect(reply, SIGNAL(metaDataChanged()), SLOT(storeSslConfiguration()));
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(reader.data, reference.readAll());
+
+ QCOMPARE(sslspy.count(), 1);
+
+ QVERIFY(!storedSslConfiguration.isNull());
+ QVERIFY(!reply->sslConfiguration().isNull());
+}
+
+void tst_QNetworkReply::ioGetFromHttpsWithSslHandshakeError()
+{
+ qRegisterMetaType<QNetworkReply*>(); // for QSignalSpy
+ qRegisterMetaType<QList<QSslError> >();
+
+ QFile reference(SRCDIR "/rfc3252.txt");
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + ":80"));
+
+ QNetworkReplyPtr reply = manager.get(request);
+ reply->ignoreSslErrors();
+ DataReader reader(reply);
+
+ QSignalSpy sslspy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)));
+ connect(reply, SIGNAL(metaDataChanged()), SLOT(storeSslConfiguration()));
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->error(), QNetworkReply::SslHandshakeFailedError);
+ QCOMPARE(sslspy.count(), 0);
+}
+#endif
+
+void tst_QNetworkReply::ioGetFromHttpBrokenServer_data()
+{
+ QTest::addColumn<QByteArray>("dataToSend");
+ QTest::addColumn<bool>("doDisconnect");
+
+ QTest::newRow("no-newline") << QByteArray("Hello World") << false;
+
+ // these are OK now, we just eat the lonely newlines
+ //QTest::newRow("just-newline") << QByteArray("\r\n") << false;
+ //QTest::newRow("just-2newline") << QByteArray("\r\n\r\n") << false;
+
+ QTest::newRow("with-newlines") << QByteArray("Long first line\r\nLong second line") << false;
+ QTest::newRow("with-newlines2") << QByteArray("\r\nSecond line") << false;
+ QTest::newRow("with-newlines3") << QByteArray("ICY\r\nSecond line") << false;
+ QTest::newRow("invalid-version") << QByteArray("HTTP/123 200 \r\n") << false;
+ QTest::newRow("invalid-version2") << QByteArray("HTTP/a.\033 200 \r\n") << false;
+ QTest::newRow("invalid-reply-code") << QByteArray("HTTP/1.0 fuu \r\n") << false;
+
+ QTest::newRow("empty+disconnect") << QByteArray() << true;
+
+ QTest::newRow("no-newline+disconnect") << QByteArray("Hello World") << true;
+ QTest::newRow("just-newline+disconnect") << QByteArray("\r\n") << true;
+ QTest::newRow("just-2newline+disconnect") << QByteArray("\r\n\r\n") << true;
+ QTest::newRow("with-newlines+disconnect") << QByteArray("Long first line\r\nLong second line") << true;
+ QTest::newRow("with-newlines2+disconnect") << QByteArray("\r\nSecond line") << true;
+ QTest::newRow("with-newlines3+disconnect") << QByteArray("ICY\r\nSecond line") << true;
+
+ QTest::newRow("invalid-version+disconnect") << QByteArray("HTTP/123 200 ") << true;
+ QTest::newRow("invalid-version2+disconnect") << QByteArray("HTTP/a.\033 200 ") << true;
+ QTest::newRow("invalid-reply-code+disconnect") << QByteArray("HTTP/1.0 fuu ") << true;
+
+ QTest::newRow("immediate disconnect") << QByteArray("") << true;
+ QTest::newRow("justHalfStatus+disconnect") << QByteArray("HTTP/1.1") << true;
+ QTest::newRow("justStatus+disconnect") << QByteArray("HTTP/1.1 200 OK\r\n") << true;
+ QTest::newRow("justStatusAndHalfHeaders+disconnect") << QByteArray("HTTP/1.1 200 OK\r\nContent-L") << true;
+
+ QTest::newRow("halfContent+disconnect") << QByteArray("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\nAB") << true;
+
+}
+
+void tst_QNetworkReply::ioGetFromHttpBrokenServer()
+{
+ QFETCH(QByteArray, dataToSend);
+ QFETCH(bool, doDisconnect);
+ MiniHttpServer server(dataToSend);
+ server.doClose = doDisconnect;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkReplyPtr reply = manager.get(request);
+ QSignalSpy spy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(spy.count(), 1);
+ QVERIFY(reply->error() != QNetworkReply::NoError);
+}
+
+void tst_QNetworkReply::ioGetFromHttpStatus100_data()
+{
+ QTest::addColumn<QByteArray>("dataToSend");
+ QTest::addColumn<int>("statusCode");
+ QTest::newRow("normal") << QByteArray("HTTP/1.1 100 Continue\r\n\r\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n") << 200;
+ QTest::newRow("minimal") << QByteArray("HTTP/1.1 100 Continue\n\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n") << 200;
+ QTest::newRow("minimal2") << QByteArray("HTTP/1.1 100 Continue\n\nHTTP/1.0 200 OK\r\n\r\n") << 200;
+ QTest::newRow("minimal3") << QByteArray("HTTP/1.1 100 Continue\n\nHTTP/1.0 200 OK\n\n") << 200;
+ QTest::newRow("minimal+404") << QByteArray("HTTP/1.1 100 Continue\n\nHTTP/1.0 204 No Content\r\n\r\n") << 204;
+ QTest::newRow("with_headers") << QByteArray("HTTP/1.1 100 Continue\r\nBla: x\r\n\r\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n") << 200;
+ QTest::newRow("with_headers2") << QByteArray("HTTP/1.1 100 Continue\nBla: x\n\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n") << 200;
+}
+
+void tst_QNetworkReply::ioGetFromHttpStatus100()
+{
+ QFETCH(QByteArray, dataToSend);
+ QFETCH(int, statusCode);
+ MiniHttpServer server(dataToSend);
+ server.doClose = true;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), statusCode);
+ QVERIFY(reply->rawHeader("bla").isNull());
+}
+
+void tst_QNetworkReply::ioGetFromHttpNoHeaders_data()
+{
+ QTest::addColumn<QByteArray>("dataToSend");
+ QTest::newRow("justStatus+noheaders+disconnect") << QByteArray("HTTP/1.0 200 OK\r\n\r\n");
+}
+
+void tst_QNetworkReply::ioGetFromHttpNoHeaders()
+{
+ QFETCH(QByteArray, dataToSend);
+ MiniHttpServer server(dataToSend);
+ server.doClose = true;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithCache_data()
+{
+ qRegisterMetaType<MyMemoryCache::CachedContent>();
+ QTest::addColumn<QByteArray>("dataToSend");
+ QTest::addColumn<QString>("body");
+ QTest::addColumn<MyMemoryCache::CachedContent>("cachedReply");
+ QTest::addColumn<int>("cacheMode");
+ QTest::addColumn<QStringList>("extraHttpHeaders");
+ QTest::addColumn<bool>("loadedFromCache");
+ QTest::addColumn<bool>("networkUsed");
+
+ QByteArray reply200 =
+ "HTTP/1.0 200\r\n"
+ "Connection: keep-alive\r\n"
+ "Content-Type: text/plain\r\n"
+ "Cache-control: no-cache\r\n"
+ "Content-length: 8\r\n"
+ "\r\n"
+ "Reloaded";
+ QByteArray reply304 =
+ "HTTP/1.0 304 Use Cache\r\n"
+ "Connection: keep-alive\r\n"
+ "\r\n";
+
+ QTest::newRow("not-cached,always-network")
+ << reply200 << "Reloaded" << MyMemoryCache::CachedContent() << int(QNetworkRequest::AlwaysNetwork) << QStringList() << false << true;
+ QTest::newRow("not-cached,prefer-network")
+ << reply200 << "Reloaded" << MyMemoryCache::CachedContent() << int(QNetworkRequest::PreferNetwork) << QStringList() << false << true;
+ QTest::newRow("not-cached,prefer-cache")
+ << reply200 << "Reloaded" << MyMemoryCache::CachedContent() << int(QNetworkRequest::PreferCache) << QStringList() << false << true;
+
+ QDateTime present = QDateTime::currentDateTime().toUTC();
+ QDateTime past = present.addSecs(-3600);
+ QDateTime future = present.addSecs(3600);
+ static const char dateFormat[] = "ddd, dd MMM yyyy hh:mm:ss 'GMT'";
+
+ QNetworkCacheMetaData::RawHeaderList rawHeaders;
+ MyMemoryCache::CachedContent content;
+ content.second = "Not-reloaded";
+ content.first.setLastModified(past);
+
+ //
+ // Set to expired
+ //
+ rawHeaders.clear();
+ rawHeaders << QNetworkCacheMetaData::RawHeader("Date", QLocale::c().toString(past, dateFormat).toLatin1())
+ << QNetworkCacheMetaData::RawHeader("Cache-control", "max-age=0"); // isn't used in cache loading
+ content.first.setRawHeaders(rawHeaders);
+ content.first.setLastModified(past);
+
+ QTest::newRow("expired,200,prefer-network")
+ << reply200 << "Reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << false << true;
+ QTest::newRow("expired,200,prefer-cache")
+ << reply200 << "Reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << false << true;
+
+ QTest::newRow("expired,304,prefer-network")
+ << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << true << true;
+ QTest::newRow("expired,304,prefer-cache")
+ << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << true << true;
+
+ //
+ // Set to not-expired
+ //
+ rawHeaders.clear();
+ rawHeaders << QNetworkCacheMetaData::RawHeader("Date", QLocale::c().toString(past, dateFormat).toLatin1())
+ << QNetworkCacheMetaData::RawHeader("Cache-control", "max-age=7200"); // isn't used in cache loading
+ content.first.setRawHeaders(rawHeaders);
+ content.first.setExpirationDate(future);
+
+ QTest::newRow("not-expired,200,always-network")
+ << reply200 << "Reloaded" << content << int(QNetworkRequest::AlwaysNetwork) << QStringList() << false << true;
+ QTest::newRow("not-expired,200,prefer-network")
+ << reply200 << "Not-reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << true << false;
+ QTest::newRow("not-expired,200,prefer-cache")
+ << reply200 << "Not-reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << true << false;
+ QTest::newRow("not-expired,200,always-cache")
+ << reply200 << "Not-reloaded" << content << int(QNetworkRequest::AlwaysCache) << QStringList() << true << false;
+
+ QTest::newRow("not-expired,304,prefer-network")
+ << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << true << false;
+ QTest::newRow("not-expired,304,prefer-cache")
+ << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << true << false;
+ QTest::newRow("not-expired,304,always-cache")
+ << reply304 << "Not-reloaded" << content << int(QNetworkRequest::AlwaysCache) << QStringList() << true << false;
+
+ //
+ // Set must-revalidate now
+ //
+ rawHeaders.clear();
+ rawHeaders << QNetworkCacheMetaData::RawHeader("Date", QLocale::c().toString(past, dateFormat).toLatin1())
+ << QNetworkCacheMetaData::RawHeader("Cache-control", "max-age=7200, must-revalidate"); // must-revalidate is used
+ content.first.setRawHeaders(rawHeaders);
+
+ QTest::newRow("must-revalidate,200,always-network")
+ << reply200 << "Reloaded" << content << int(QNetworkRequest::AlwaysNetwork) << QStringList() << false << true;
+ QTest::newRow("must-revalidate,200,prefer-network")
+ << reply200 << "Reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << false << true;
+ QTest::newRow("must-revalidate,200,prefer-cache")
+ << reply200 << "Reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << false << true;
+ QTest::newRow("must-revalidate,200,always-cache")
+ << reply200 << "" << content << int(QNetworkRequest::AlwaysCache) << QStringList() << false << false;
+
+ QTest::newRow("must-revalidate,304,prefer-network")
+ << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << true << true;
+ QTest::newRow("must-revalidate,304,prefer-cache")
+ << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << true << true;
+ QTest::newRow("must-revalidate,304,always-cache")
+ << reply304 << "" << content << int(QNetworkRequest::AlwaysCache) << QStringList() << false << false;
+
+ //
+ // Partial content
+ //
+ rawHeaders.clear();
+ rawHeaders << QNetworkCacheMetaData::RawHeader("Date", QLocale::c().toString(past, dateFormat).toLatin1())
+ << QNetworkCacheMetaData::RawHeader("Cache-control", "max-age=7200"); // isn't used in cache loading
+ content.first.setRawHeaders(rawHeaders);
+ content.first.setExpirationDate(future);
+
+ QByteArray reply206 =
+ "HTTP/1.0 206\r\n"
+ "Connection: keep-alive\r\n"
+ "Content-Type: text/plain\r\n"
+ "Cache-control: no-cache\r\n"
+ "Content-Range: bytes 2-6/8\r\n"
+ "Content-length: 4\r\n"
+ "\r\n"
+ "load";
+
+ QTest::newRow("partial,dontuse-cache")
+ << reply206 << "load" << content << int(QNetworkRequest::PreferCache) << (QStringList() << "Range" << "bytes=2-6") << false << true;
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithCache()
+{
+ QFETCH(QByteArray, dataToSend);
+ MiniHttpServer server(dataToSend);
+ server.doClose = false;
+
+ MyMemoryCache *memoryCache = new MyMemoryCache(&manager);
+ manager.setCache(memoryCache);
+
+ QFETCH(MyMemoryCache::CachedContent, cachedReply);
+ QUrl url = "http://localhost:" + QString::number(server.serverPort());
+ cachedReply.first.setUrl(url);
+ if (!cachedReply.second.isNull())
+ memoryCache->cache.insert(url.toEncoded(), cachedReply);
+
+ QFETCH(int, cacheMode);
+ QNetworkRequest request(url);
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, cacheMode);
+ request.setAttribute(QNetworkRequest::CacheSaveControlAttribute, false);
+
+ QFETCH(QStringList, extraHttpHeaders);
+ QStringListIterator it(extraHttpHeaders);
+ while (it.hasNext()) {
+ QString header = it.next();
+ QString value = it.next();
+ request.setRawHeader(header.toLatin1(), value.toLatin1()); // To latin1? Deal with it!
+ }
+
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QTEST(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), "loadedFromCache");
+ QTEST(server.totalConnections > 0, "networkUsed");
+ QFETCH(QString, body);
+ QCOMPARE(reply->readAll().constData(), qPrintable(body));
+}
+
+void tst_QNetworkReply::ioGetWithManyProxies_data()
+{
+ QTest::addColumn<QList<QNetworkProxy> >("proxyList");
+ QTest::addColumn<QNetworkProxy>("proxyUsed");
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<QNetworkReply::NetworkError>("expectedError");
+
+ QList<QNetworkProxy> proxyList;
+
+ // All of the other functions test DefaultProxy
+ // So let's test something else
+
+ // Simple tests that work:
+
+ // HTTP request with HTTP caching proxy
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
+ QTest::newRow("http-on-http")
+ << proxyList << proxyList.at(0)
+ << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+ // HTTP request with HTTP transparent proxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129);
+ QTest::newRow("http-on-http2")
+ << proxyList << proxyList.at(0)
+ << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+ // HTTP request with SOCKS transparent proxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
+ QTest::newRow("http-on-socks")
+ << proxyList << proxyList.at(0)
+ << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+ // FTP request with FTP caching proxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
+ QTest::newRow("ftp-on-ftp")
+ << proxyList << proxyList.at(0)
+ << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+ // The following test doesn't work because QFtp is too limited
+ // It can only talk to its own kind of proxies
+
+ // FTP request with SOCKSv5 transparent proxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
+ QTest::newRow("ftp-on-socks")
+ << proxyList << proxyList.at(0)
+ << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+#ifndef QT_NO_OPENSSL
+ // HTTPS with HTTP transparent proxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129);
+ QTest::newRow("https-on-http")
+ << proxyList << proxyList.at(0)
+ << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+ // HTTPS request with SOCKS transparent proxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
+ QTest::newRow("https-on-socks")
+ << proxyList << proxyList.at(0)
+ << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+#endif
+
+ // Tests that fail:
+
+ // HTTP request with FTP caching proxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
+ QTest::newRow("http-on-ftp")
+ << proxyList << QNetworkProxy()
+ << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::ProxyNotFoundError;
+
+ // FTP request with HTTP caching proxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
+ QTest::newRow("ftp-on-http")
+ << proxyList << QNetworkProxy()
+ << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::ProxyNotFoundError;
+
+ // FTP request with HTTP caching proxies
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
+ << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3130);
+ QTest::newRow("ftp-on-multiple-http")
+ << proxyList << QNetworkProxy()
+ << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::ProxyNotFoundError;
+
+#ifndef QT_NO_OPENSSL
+ // HTTPS with HTTP caching proxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
+ QTest::newRow("https-on-httptransparent")
+ << proxyList << QNetworkProxy()
+ << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::ProxyNotFoundError;
+
+ // HTTPS with FTP caching proxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
+ QTest::newRow("https-on-ftp")
+ << proxyList << QNetworkProxy()
+ << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::ProxyNotFoundError;
+#endif
+
+ // Complex requests:
+
+ // HTTP request with more than one HTTP proxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
+ << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3130);
+ QTest::newRow("http-on-multiple-http")
+ << proxyList << proxyList.at(0)
+ << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+ // HTTP request with HTTP + SOCKS
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
+ << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
+ QTest::newRow("http-on-http+socks")
+ << proxyList << proxyList.at(0)
+ << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+ // HTTP request with FTP + HTTP + SOCKS
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
+ << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
+ << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
+ QTest::newRow("http-on-ftp+http+socks")
+ << proxyList << proxyList.at(1) // second proxy should be used
+ << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+ // HTTP request with NoProxy + HTTP
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::NoProxy)
+ << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
+ QTest::newRow("http-on-noproxy+http")
+ << proxyList << proxyList.at(0)
+ << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+ // HTTP request with FTP + NoProxy
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
+ << QNetworkProxy(QNetworkProxy::NoProxy);
+ QTest::newRow("http-on-ftp+noproxy")
+ << proxyList << proxyList.at(1) // second proxy should be used
+ << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+ // FTP request with HTTP Caching + FTP
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
+ << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
+ QTest::newRow("ftp-on-http+ftp")
+ << proxyList << proxyList.at(1) // second proxy should be used
+ << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+#ifndef QT_NO_OPENSSL
+ // HTTPS request with HTTP Caching + HTTP transparent
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
+ << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129);
+ QTest::newRow("https-on-httpcaching+http")
+ << proxyList << proxyList.at(1) // second proxy should be used
+ << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+
+ // HTTPS request with FTP + HTTP C + HTTP T
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
+ << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
+ << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129);
+ QTest::newRow("https-on-ftp+httpcaching+http")
+ << proxyList << proxyList.at(2) // skip the first two
+ << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
+ << QNetworkReply::NoError;
+#endif
+}
+
+void tst_QNetworkReply::ioGetWithManyProxies()
+{
+ // Test proxy factories
+
+ qRegisterMetaType<QNetworkProxy>(); // for QSignalSpy
+ qRegisterMetaType<QAuthenticator *>();
+
+ QFile reference(SRCDIR "/rfc3252.txt");
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ // set the proxy factory:
+ QFETCH(QList<QNetworkProxy>, proxyList);
+ MyProxyFactory *proxyFactory = new MyProxyFactory;
+ proxyFactory->toReturn = proxyList;
+ manager.setProxyFactory(proxyFactory);
+
+ QFETCH(QString, url);
+ QUrl theUrl(url);
+ QNetworkRequest request(theUrl);
+ QNetworkReplyPtr reply = manager.get(request);
+ DataReader reader(reply);
+
+ QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+#ifndef QT_NO_OPENSSL
+ connect(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
+ SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
+#endif
+ QTestEventLoop::instance().enterLoop(15);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+#ifndef QT_NO_OPENSSL
+ manager.disconnect(SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
+ this, SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
+#endif
+
+ QFETCH(QNetworkReply::NetworkError, expectedError);
+ QEXPECT_FAIL("ftp-on-socks", "QFtp is too limited and won't accept non-FTP proxies", Abort);
+ QCOMPARE(reply->error(), expectedError);
+
+ // Verify that the factory was called properly
+ QCOMPARE(proxyFactory->callCount, 1);
+ QCOMPARE(proxyFactory->lastQuery, QNetworkProxyQuery(theUrl));
+
+ if (expectedError == QNetworkReply::NoError) {
+ // request succeeded
+ QCOMPARE(reader.data, reference.readAll());
+
+ // now verify that the proxies worked:
+ QFETCH(QNetworkProxy, proxyUsed);
+ if (proxyUsed.type() == QNetworkProxy::NoProxy) {
+ QCOMPARE(authspy.count(), 0);
+ } else {
+ if (QByteArray(QTest::currentDataTag()).startsWith("ftp-"))
+ return; // No authentication with current FTP or with FTP proxies
+ QCOMPARE(authspy.count(), 1);
+ QCOMPARE(qvariant_cast<QNetworkProxy>(authspy.at(0).at(0)), proxyUsed);
+ }
+ } else {
+ // request failed
+ QCOMPARE(authspy.count(), 0);
+ }
+}
+
+void tst_QNetworkReply::ioPutToFileFromFile_data()
+{
+ QTest::addColumn<QString>("fileName");
+
+ QTest::newRow("empty") << SRCDIR "/empty";
+ QTest::newRow("real-file") << SRCDIR "/rfc3252.txt";
+ QTest::newRow("resource") << ":/resource";
+ QTest::newRow("search-path") << "srcdir:/rfc3252.txt";
+}
+
+void tst_QNetworkReply::ioPutToFileFromFile()
+{
+ QFETCH(QString, fileName);
+ QFile sourceFile(fileName);
+ QFile targetFile(testFileName);
+
+ QVERIFY(sourceFile.open(QIODevice::ReadOnly));
+
+ QUrl url = QUrl::fromLocalFile(targetFile.fileName());
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.put(request, &sourceFile);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
+ QVERIFY(reply->readAll().isEmpty());
+
+ QVERIFY(sourceFile.atEnd());
+ sourceFile.seek(0); // reset it to the beginning
+
+ QVERIFY(targetFile.open(QIODevice::ReadOnly));
+ QCOMPARE(targetFile.size(), sourceFile.size());
+ QCOMPARE(targetFile.readAll(), sourceFile.readAll());
+}
+
+void tst_QNetworkReply::ioPutToFileFromSocket_data()
+{
+ putToFile_data();
+}
+
+void tst_QNetworkReply::ioPutToFileFromSocket()
+{
+ QFile file(testFileName);
+
+ QUrl url = QUrl::fromLocalFile(file.fileName());
+ QNetworkRequest request(url);
+
+ QFETCH(QByteArray, data);
+ SocketPair socketpair;
+ socketpair.create();
+ QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]);
+
+ socketpair.endPoints[0]->write(data);
+ QNetworkReplyPtr reply = manager.put(QNetworkRequest(url), socketpair.endPoints[1]);
+ socketpair.endPoints[0]->close();
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
+ QVERIFY(reply->readAll().isEmpty());
+
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QCOMPARE(file.size(), qint64(data.size()));
+ QByteArray contents = file.readAll();
+ QCOMPARE(contents, data);
+}
+
+void tst_QNetworkReply::ioPutToFileFromLocalSocket_data()
+{
+ putToFile_data();
+}
+
+void tst_QNetworkReply::ioPutToFileFromLocalSocket()
+{
+ QString socketname = "networkreplytest";
+ QLocalServer server;
+ if (!server.listen(socketname)) {
+ QLocalServer::removeServer(socketname);
+ QVERIFY(server.listen(socketname));
+ }
+ QLocalSocket active;
+ active.connectToServer(socketname);
+ QVERIFY2(server.waitForNewConnection(10), server.errorString().toLatin1().constData());
+ QVERIFY2(active.waitForConnected(10), active.errorString().toLatin1().constData());
+ QVERIFY2(server.hasPendingConnections(), server.errorString().toLatin1().constData());
+ QLocalSocket *passive = server.nextPendingConnection();
+
+ QFile file(testFileName);
+ QUrl url = QUrl::fromLocalFile(file.fileName());
+ QNetworkRequest request(url);
+
+ QFETCH(QByteArray, data);
+ active.write(data);
+ active.close();
+ QNetworkReplyPtr reply = manager.put(QNetworkRequest(url), passive);
+ passive->setParent(reply);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
+ QVERIFY(reply->readAll().isEmpty());
+
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QCOMPARE(file.size(), qint64(data.size()));
+ QByteArray contents = file.readAll();
+ QCOMPARE(contents, data);
+}
+
+void tst_QNetworkReply::ioPutToFileFromProcess_data()
+{
+ putToFile_data();
+}
+
+void tst_QNetworkReply::ioPutToFileFromProcess()
+{
+#if defined(Q_OS_WINCE) || defined (Q_OS_SYMBIAN)
+ QSKIP("Currently no stdin/out supported for Windows CE / Symbian OS", SkipAll);
+#else
+
+#ifdef Q_OS_WIN
+ if (qstrcmp(QTest::currentDataTag(), "small") == 0)
+ QSKIP("When passing a CR-LF-LF sequence through Windows stdio, it gets converted, "
+ "so this test fails. Disabled on Windows", SkipSingle);
+#endif
+
+#if defined(QT_NO_PROCESS)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+ QFile file(testFileName);
+
+ QUrl url = QUrl::fromLocalFile(file.fileName());
+ QNetworkRequest request(url);
+
+ QFETCH(QByteArray, data);
+ QProcess process;
+ process.start("echo/echo all");
+ process.write(data);
+ process.closeWriteChannel();
+
+ QNetworkReplyPtr reply = manager.put(QNetworkRequest(url), &process);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
+ QVERIFY(reply->readAll().isEmpty());
+
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QCOMPARE(file.size(), qint64(data.size()));
+ QByteArray contents = file.readAll();
+ QCOMPARE(contents, data);
+#endif
+#endif
+}
+
+void tst_QNetworkReply::ioPutToFtpFromFile_data()
+{
+ ioPutToFileFromFile_data();
+}
+
+void tst_QNetworkReply::ioPutToFtpFromFile()
+{
+ QFETCH(QString, fileName);
+ QFile sourceFile(fileName);
+ QVERIFY(sourceFile.open(QIODevice::ReadOnly));
+
+ QUrl url("ftp://" + QtNetworkSettings::serverName());
+ url.setPath(QString("/qtest/upload/qnetworkaccess-ioPutToFtpFromFile-%1-%2")
+ .arg(QTest::currentDataTag())
+ .arg(uniqueExtension));
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.put(request, &sourceFile);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
+ QVERIFY(reply->readAll().isEmpty());
+
+ QVERIFY(sourceFile.atEnd());
+ sourceFile.seek(0); // reset it to the beginning
+
+ // download the file again from FTP to make sure it was uploaded
+ // correctly
+ QFtp ftp;
+ ftp.connectToHost(url.host());
+ ftp.login();
+ ftp.get(url.path());
+
+ QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(3);
+ QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QByteArray uploaded = ftp.readAll();
+ QCOMPARE(qint64(uploaded.size()), sourceFile.size());
+ QCOMPARE(uploaded, sourceFile.readAll());
+
+ ftp.close();
+ QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+}
+
+void tst_QNetworkReply::ioPutToHttpFromFile_data()
+{
+ ioPutToFileFromFile_data();
+}
+
+void tst_QNetworkReply::ioPutToHttpFromFile()
+{
+ QFETCH(QString, fileName);
+ QFile sourceFile(fileName);
+ QVERIFY(sourceFile.open(QIODevice::ReadOnly));
+
+ QUrl url("http://" + QtNetworkSettings::serverName());
+ url.setPath(QString("/dav/qnetworkaccess-ioPutToHttpFromFile-%1-%2")
+ .arg(QTest::currentDataTag())
+ .arg(uniqueExtension));
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.put(request, &sourceFile);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ // verify that the HTTP status code is 201 Created
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201);
+
+ QVERIFY(sourceFile.atEnd());
+ sourceFile.seek(0); // reset it to the beginning
+
+ // download the file again from HTTP to make sure it was uploaded
+ // correctly
+ reply = manager.get(request);
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QCOMPARE(reply->readAll(), sourceFile.readAll());
+}
+
+void tst_QNetworkReply::ioPostToHttpFromFile_data()
+{
+ ioPutToFileFromFile_data();
+}
+
+void tst_QNetworkReply::ioPostToHttpFromFile()
+{
+ QFETCH(QString, fileName);
+ QFile sourceFile(fileName);
+ QVERIFY(sourceFile.open(QIODevice::ReadOnly));
+
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi");
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+
+ QNetworkReplyPtr reply = manager.post(request, &sourceFile);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ // verify that the HTTP status code is 200 Ok
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ QVERIFY(sourceFile.atEnd());
+ sourceFile.seek(0); // reset it to the beginning
+
+ QCOMPARE(reply->readAll().trimmed(), md5sum(sourceFile.readAll()).toHex());
+}
+
+void tst_QNetworkReply::ioPostToHttpFromSocket_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<QByteArray>("md5sum");
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<QNetworkProxy>("proxy");
+ QTest::addColumn<int>("authenticationRequiredCount");
+ QTest::addColumn<int>("proxyAuthenticationRequiredCount");
+
+ for (int i = 0; i < proxies.count(); ++i)
+ for (int auth = 0; auth < 2; ++auth) {
+ QUrl url;
+ if (auth)
+ url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi";
+ else
+ url = "http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi";
+
+ QNetworkProxy proxy = proxies.at(i).proxy;
+ QByteArray testsuffix = QByteArray(auth ? "+auth" : "") + proxies.at(i).tag;
+ int proxyauthcount = proxies.at(i).requiresAuthentication;
+
+ QByteArray data;
+ data = "";
+ QTest::newRow("empty" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
+
+ data = "This is a normal message.";
+ QTest::newRow("generic" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
+
+ data = "This is a message to show that Qt rocks!\r\n\n";
+ QTest::newRow("small" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
+
+ data = QByteArray("abcd\0\1\2\abcd",12);
+ QTest::newRow("with-nul" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
+
+ data = QByteArray(4097, '\4');
+ QTest::newRow("4k+1" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
+
+ data = QByteArray(128*1024+1, '\177');
+ QTest::newRow("128k+1" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
+ }
+}
+
+void tst_QNetworkReply::ioPostToHttpFromSocket()
+{
+ qRegisterMetaType<QNetworkProxy>(); // for QSignalSpy
+ qRegisterMetaType<QAuthenticator *>();
+ qRegisterMetaType<QNetworkReply *>();
+
+ QFETCH(QByteArray, data);
+ QFETCH(QUrl, url);
+ QFETCH(QNetworkProxy, proxy);
+ SocketPair socketpair;
+ socketpair.create();
+ QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]);
+
+ socketpair.endPoints[0]->write(data);
+
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+
+ manager.setProxy(proxy);
+ QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]);
+ socketpair.endPoints[0]->close();
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+
+ QSignalSpy authenticationRequiredSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QSignalSpy proxyAuthenticationRequiredSpy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+
+ QTestEventLoop::instance().enterLoop(12);
+ disconnect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ // verify that the HTTP status code is 200 Ok
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
+
+ QTEST(authenticationRequiredSpy.count(), "authenticationRequiredCount");
+ QTEST(proxyAuthenticationRequiredSpy.count(), "proxyAuthenticationRequiredCount");
+}
+
+void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<QByteArray>("md5sum");
+
+ QByteArray data;
+ data = "";
+ QTest::newRow("empty") << data << md5sum(data);
+
+ data = "This is a normal message.";
+ QTest::newRow("generic") << data << md5sum(data);
+
+ data = "This is a message to show that Qt rocks!\r\n\n";
+ QTest::newRow("small") << data << md5sum(data);
+
+ data = QByteArray("abcd\0\1\2\abcd",12);
+ QTest::newRow("with-nul") << data << md5sum(data);
+
+ data = QByteArray(4097, '\4');
+ QTest::newRow("4k+1") << data << md5sum(data);
+
+ data = QByteArray(128*1024+1, '\177');
+ QTest::newRow("128k+1") << data << md5sum(data);
+
+ data = QByteArray(2*1024*1024+1, '\177');
+ QTest::newRow("2MB+1") << data << md5sum(data);
+}
+
+void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous()
+{
+ QFETCH(QByteArray, data);
+
+ SocketPair socketpair;
+ QVERIFY(socketpair.create());
+ QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]);
+ socketpair.endPoints[0]->write(data);
+ socketpair.endPoints[0]->waitForBytesWritten(5000);
+ // ### for 4.8: make the socket pair unbuffered, to not read everything in one go in QNetworkReplyImplPrivate::setup()
+ QTestEventLoop::instance().enterLoop(3);
+
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi");
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]);
+ QVERIFY(reply->isFinished());
+ socketpair.endPoints[0]->close();
+
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ // verify that the HTTP status code is 200 Ok
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
+}
+
+// this tests checks if rewinding the POST-data to some place in the middle
+// worked.
+void tst_QNetworkReply::ioPostToHttpFromMiddleOfFileToEnd()
+{
+ QFile sourceFile(SRCDIR "/rfc3252.txt");
+ QVERIFY(sourceFile.open(QIODevice::ReadOnly));
+ // seeking to the middle
+ sourceFile.seek(sourceFile.size() / 2);
+
+ QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi";
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+ QNetworkReplyPtr reply = manager.post(request, &sourceFile);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+
+ QTestEventLoop::instance().enterLoop(2);
+ disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // compare half data
+ sourceFile.seek(sourceFile.size() / 2);
+ QByteArray data = sourceFile.readAll();
+ QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
+}
+
+void tst_QNetworkReply::ioPostToHttpFromMiddleOfFileFiveBytes()
+{
+ QFile sourceFile(SRCDIR "/rfc3252.txt");
+ QVERIFY(sourceFile.open(QIODevice::ReadOnly));
+ // seeking to the middle
+ sourceFile.seek(sourceFile.size() / 2);
+
+ QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi";
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+ // only send 5 bytes
+ request.setHeader(QNetworkRequest::ContentLengthHeader, 5);
+ QVERIFY(request.header(QNetworkRequest::ContentLengthHeader).isValid());
+ QNetworkReplyPtr reply = manager.post(request, &sourceFile);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+
+ QTestEventLoop::instance().enterLoop(2);
+ disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // compare half data
+ sourceFile.seek(sourceFile.size() / 2);
+ QByteArray data = sourceFile.read(5);
+ QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
+}
+
+void tst_QNetworkReply::ioPostToHttpFromMiddleOfQBufferFiveBytes()
+{
+ // test needed since a QBuffer goes with a different codepath than the QFile
+ // tested in ioPostToHttpFromMiddleOfFileFiveBytes
+ QBuffer uploadBuffer;
+ uploadBuffer.open(QIODevice::ReadWrite);
+ uploadBuffer.write("1234567890");
+ uploadBuffer.seek(5);
+
+ QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi";
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+ QNetworkReplyPtr reply = manager.post(request, &uploadBuffer);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+
+ QTestEventLoop::instance().enterLoop(2);
+ disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // compare half data
+ uploadBuffer.seek(5);
+ QByteArray data = uploadBuffer.read(5);
+ QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
+}
+
+
+void tst_QNetworkReply::ioPostToHttpNoBufferFlag()
+{
+ QByteArray data = QByteArray("daaaaaaataaaaaaa");
+ // create a sequential QIODevice by feeding the data into a local TCP server
+ SocketPair socketpair;
+ socketpair.create();
+ QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]);
+ socketpair.endPoints[0]->write(data);
+
+ QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi";
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+ // disallow buffering
+ request.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, true);
+ request.setHeader(QNetworkRequest::ContentLengthHeader, data.size());
+ QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]);
+ socketpair.endPoints[0]->close();
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+
+ QTestEventLoop::instance().enterLoop(2);
+ disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+
+ // verify: error code is QNetworkReply::ContentReSendError
+ QCOMPARE(reply->error(), QNetworkReply::ContentReSendError);
+}
+
+#ifndef QT_NO_OPENSSL
+class SslServer : public QTcpServer {
+ Q_OBJECT
+public:
+ SslServer() : socket(0) {};
+ void incomingConnection(int socketDescriptor) {
+ QSslSocket *serverSocket = new QSslSocket;
+ serverSocket->setParent(this);
+
+ if (serverSocket->setSocketDescriptor(socketDescriptor)) {
+ connect(serverSocket, SIGNAL(encrypted()), this, SLOT(encryptedSlot()));
+ connect(serverSocket, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+ serverSocket->setProtocol(QSsl::AnyProtocol);
+ connect(serverSocket, SIGNAL(sslErrors(const QList<QSslError>&)), serverSocket, SLOT(ignoreSslErrors()));
+ serverSocket->setLocalCertificate(SRCDIR "/certs/server.pem");
+ serverSocket->setPrivateKey(SRCDIR "/certs/server.key");
+ serverSocket->startServerEncryption();
+ } else {
+ delete serverSocket;
+ }
+ }
+signals:
+ void newEncryptedConnection();
+public slots:
+ void encryptedSlot() {
+ socket = (QSslSocket*) sender();
+ emit newEncryptedConnection();
+ }
+ void readyReadSlot() {
+ // for the incoming sockets, not the server socket
+ //qDebug() << static_cast<QSslSocket*>(sender())->bytesAvailable() << static_cast<QSslSocket*>(sender())->encryptedBytesAvailable();
+ }
+
+public:
+ QSslSocket *socket;
+};
+
+// very similar to ioPostToHttpUploadProgress but for SSL
+void tst_QNetworkReply::ioPostToHttpsUploadProgress()
+{
+ //QFile sourceFile(SRCDIR "/bigfile");
+ //QVERIFY(sourceFile.open(QIODevice::ReadOnly));
+ qint64 wantedSize = 2*1024*1024; // 2 MB
+ QByteArray sourceFile;
+ // And in the case of SSL, the compression can fool us and let the
+ // server send the data much faster than expected.
+ // So better provide random data that cannot be compressed.
+ for (int i = 0; i < wantedSize; ++i)
+ sourceFile += (char)qrand();
+
+ // emulate a minimal https server
+ SslServer server;
+ server.listen(QHostAddress(QHostAddress::LocalHost), 0);
+
+ // create the request
+ QUrl url = QUrl(QString("https://127.0.0.1:%1/").arg(server.serverPort()));
+ QNetworkRequest request(url);
+
+ request.setRawHeader("Content-Type", "application/octet-stream");
+ QNetworkReplyPtr reply = manager.post(request, sourceFile);
+
+ QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64)));
+ connect(&server, SIGNAL(newEncryptedConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ connect(reply, SIGNAL(sslErrors(const QList<QSslError>&)), reply, SLOT(ignoreSslErrors()));
+
+ // get the request started and the incoming socket connected
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QTcpSocket *incomingSocket = server.socket;
+ QVERIFY(incomingSocket);
+ disconnect(&server, SIGNAL(newEncryptedConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+
+ incomingSocket->setReadBufferSize(1*1024);
+ QTestEventLoop::instance().enterLoop(2);
+ // some progress should have been made
+ QVERIFY(!spy.isEmpty());
+ QList<QVariant> args = spy.last();
+ QVERIFY(args.at(0).toLongLong() > 0);
+ // but not everything!
+ QVERIFY(args.at(0).toLongLong() != sourceFile.size());
+
+ // set the read buffer to unlimited
+ incomingSocket->setReadBufferSize(0);
+ QTestEventLoop::instance().enterLoop(10);
+ // progress should be finished
+ QVERIFY(!spy.isEmpty());
+ QList<QVariant> args3 = spy.last();
+ QCOMPARE(args3.at(0).toLongLong(), args3.at(1).toLongLong());
+ QCOMPARE(args3.at(0).toLongLong(), qint64(sourceFile.size()));
+
+ // after sending this, the QNAM should emit finished()
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ incomingSocket->write("HTTP/1.0 200 OK\r\n");
+ incomingSocket->write("Content-Length: 0\r\n");
+ incomingSocket->write("\r\n");
+ QTestEventLoop::instance().enterLoop(10);
+ // not timeouted -> finished() was emitted
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ incomingSocket->close();
+ server.close();
+}
+#endif
+
+void tst_QNetworkReply::ioGetFromBuiltinHttp_data()
+{
+ QTest::addColumn<bool>("https");
+ QTest::addColumn<int>("bufferSize");
+ QTest::newRow("http+unlimited") << false << 0;
+ QTest::newRow("http+limited") << false << 4096;
+#ifndef QT_NO_OPENSSL
+ QTest::newRow("https+unlimited") << true << 0;
+ QTest::newRow("https+limited") << true << 4096;
+#endif
+}
+
+void tst_QNetworkReply::ioGetFromBuiltinHttp()
+{
+ QSKIP("Limiting is broken right now, check QTBUG-15065", SkipAll);
+ QFETCH(bool, https);
+ QFETCH(int, bufferSize);
+
+ QByteArray testData;
+ // Make the data big enough so that it can fill the kernel buffer
+ // (which seems to hold 202 KB here)
+ const int wantedSize = 1200 * 1000;
+ testData.reserve(wantedSize);
+ // And in the case of SSL, the compression can fool us and let the
+ // server send the data much faster than expected.
+ // So better provide random data that cannot be compressed.
+ for (int i = 0; i < wantedSize; ++i)
+ testData += (char)qrand();
+
+ QByteArray httpResponse = QByteArray("HTTP/1.0 200 OK\r\nContent-Length: ");
+ httpResponse += QByteArray::number(testData.size());
+ httpResponse += "\r\n\r\n";
+ httpResponse += testData;
+
+ qDebug() << "Server will send" << (httpResponse.size()-testData.size()) << "bytes of header and"
+ << testData.size() << "bytes of data";
+
+ const bool fillKernelBuffer = bufferSize > 0;
+ FastSender server(httpResponse, https, fillKernelBuffer);
+
+ QUrl url(QString("%1://127.0.0.1:%2/qtest/rfc3252.txt")
+ .arg(https?"https":"http")
+ .arg(server.serverPort()));
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.get(request);
+ reply->setReadBufferSize(bufferSize);
+ reply->ignoreSslErrors();
+ const int rate = 200; // in kB per sec
+ RateControlledReader reader(server, reply, rate, bufferSize);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTime loopTime;
+ loopTime.start();
+ QTestEventLoop::instance().enterLoop(30);
+ const int elapsedTime = loopTime.elapsed();
+ server.wait();
+ reader.wrapUp();
+
+ qDebug() << "send rate:" << server.transferRate << "B/s";
+ qDebug() << "receive rate:" << reader.totalBytesRead * 1000 / elapsedTime
+ << "(it received" << reader.totalBytesRead << "bytes in" << elapsedTime << "ms)";
+
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), (qint64)testData.size());
+ if (reader.data.size() < testData.size()) { // oops?
+ QCOMPARE(reader.data, testData.mid(0, reader.data.size()));
+ qDebug() << "The data is incomplete, the last" << testData.size() - reader.data.size() << "bytes are missing";
+ QEXPECT_FAIL("http+limited", "Limiting is broken right now, check QTBUG-15065", Abort);
+ QEXPECT_FAIL("https+limited", "Limiting is broken right now, check QTBUG-15065", Abort);
+ }
+ QCOMPARE(reader.data.size(), testData.size());
+ QCOMPARE(reader.data, testData);
+
+ // OK we got the file alright, but did setReadBufferSize work?
+ QVERIFY(server.transferRate != -1);
+ if (bufferSize > 0) {
+ const int allowedDeviation = 16; // TODO find out why the send rate is 13% faster currently
+ const int minRate = rate * 1024 * (100-allowedDeviation) / 100;
+ const int maxRate = rate * 1024 * (100+allowedDeviation) / 100;
+ qDebug() << minRate << "<="<< server.transferRate << "<=" << maxRate << "?";
+ QEXPECT_FAIL("http+limited", "Limiting is broken right now, check QTBUG-15065", Continue);
+ QEXPECT_FAIL("https+limited", "Limiting is broken right now, check QTBUG-15065", Continue);
+ QVERIFY(server.transferRate >= minRate && server.transferRate <= maxRate);
+ }
+}
+
+void tst_QNetworkReply::ioPostToHttpUploadProgress()
+{
+ QFile sourceFile(SRCDIR "/bigfile");
+ QVERIFY(sourceFile.open(QIODevice::ReadOnly));
+
+ // emulate a minimal http server
+ QTcpServer server;
+ server.listen(QHostAddress(QHostAddress::LocalHost), 0);
+
+ // create the request
+ QUrl url = QUrl(QString("http://127.0.0.1:%1/").arg(server.serverPort()));
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+ QNetworkReplyPtr reply = manager.post(request, &sourceFile);
+ QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64)));
+ connect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ // get the request started and the incoming socket connected
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QTcpSocket *incomingSocket = server.nextPendingConnection();
+ QVERIFY(incomingSocket);
+ disconnect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ incomingSocket->setReadBufferSize(1*1024);
+ QTestEventLoop::instance().enterLoop(5);
+ // some progress should have been made
+ QList<QVariant> args = spy.last();
+ QVERIFY(!args.isEmpty());
+ QVERIFY(args.at(0).toLongLong() > 0);
+ // but not everything!
+ QVERIFY(args.at(0).toLongLong() != sourceFile.size());
+
+ // set the read buffer to unlimited
+ incomingSocket->setReadBufferSize(0);
+ QTestEventLoop::instance().enterLoop(10);
+ // progress should be finished
+ QList<QVariant> args3 = spy.last();
+ QVERIFY(!args3.isEmpty());
+ // More progress than before
+ QVERIFY(args3.at(0).toLongLong() > args.at(0).toLongLong());
+ QCOMPARE(args3.at(0).toLongLong(), args3.at(1).toLongLong());
+ // And actually finished..
+ QCOMPARE(args3.at(0).toLongLong(), sourceFile.size());
+
+ // after sending this, the QNAM should emit finished()
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ incomingSocket->write("HTTP/1.0 200 OK\r\n");
+ incomingSocket->write("Content-Length: 0\r\n");
+ incomingSocket->write("\r\n");
+ QTestEventLoop::instance().enterLoop(10);
+ // not timeouted -> finished() was emitted
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ incomingSocket->close();
+ server.close();
+}
+
+void tst_QNetworkReply::ioPostToHttpEmptyUploadProgress()
+{
+ QByteArray ba;
+ ba.resize(0);
+ QBuffer buffer(&ba,0);
+ QVERIFY(buffer.open(QIODevice::ReadOnly));
+
+ // emulate a minimal http server
+ QTcpServer server;
+ server.listen(QHostAddress(QHostAddress::LocalHost), 0);
+
+ // create the request
+ QUrl url = QUrl(QString("http://127.0.0.1:%1/").arg(server.serverPort()));
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+ QNetworkReplyPtr reply = manager.post(request, &buffer);
+ QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64)));
+ connect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+
+ // get the request started and the incoming socket connected
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QTcpSocket *incomingSocket = server.nextPendingConnection();
+ QVERIFY(incomingSocket);
+
+ // after sending this, the QNAM should emit finished()
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ incomingSocket->write("HTTP/1.0 200 OK\r\n");
+ incomingSocket->write("Content-Length: 0\r\n");
+ incomingSocket->write("\r\n");
+ incomingSocket->flush();
+ QTestEventLoop::instance().enterLoop(10);
+ // not timeouted -> finished() was emitted
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // final check: only 1 uploadProgress has been emitted
+ QVERIFY(spy.length() == 1);
+ QList<QVariant> args = spy.last();
+ QVERIFY(!args.isEmpty());
+ QCOMPARE(args.at(0).toLongLong(), buffer.size());
+ QCOMPARE(args.at(0).toLongLong(), buffer.size());
+
+ incomingSocket->close();
+ server.close();
+}
+
+void tst_QNetworkReply::lastModifiedHeaderForFile()
+{
+ QFileInfo fileInfo(SRCDIR "/bigfile");
+ QVERIFY(fileInfo.exists());
+
+ QUrl url = QUrl::fromLocalFile(fileInfo.filePath());
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.head(request);
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QDateTime header = reply->header(QNetworkRequest::LastModifiedHeader).toDateTime();
+ QCOMPARE(header, fileInfo.lastModified());
+}
+
+void tst_QNetworkReply::lastModifiedHeaderForHttp()
+{
+ // Tue, 22 May 2007 12:04:57 GMT according to webserver
+ QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/fluke.gif";
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.head(request);
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QDateTime header = reply->header(QNetworkRequest::LastModifiedHeader).toDateTime();
+ QDateTime realDate = QDateTime::fromString("2007-05-22T12:04:57", Qt::ISODate);
+ realDate.setTimeSpec(Qt::UTC);
+
+ QCOMPARE(header, realDate);
+}
+
+void tst_QNetworkReply::httpCanReadLine()
+{
+ QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QVERIFY(reply->canReadLine());
+ QVERIFY(!reply->readAll().isEmpty());
+ QVERIFY(!reply->canReadLine());
+}
+
+void tst_QNetworkReply::rateControl_data()
+{
+ QTest::addColumn<int>("rate");
+
+ QTest::newRow("15") << 15;
+ QTest::newRow("40") << 40;
+ QTest::newRow("73") << 73;
+ QTest::newRow("80") << 80;
+ QTest::newRow("125") << 125;
+ QTest::newRow("250") << 250;
+ QTest::newRow("1024") << 1024;
+}
+
+void tst_QNetworkReply::rateControl()
+{
+ QSKIP("Test disabled -- only for manual purposes", SkipAll);
+ // this function tests that we aren't reading from the network
+ // faster than the data is being consumed.
+ QFETCH(int, rate);
+
+ // ask for 20 seconds worth of data
+ FastSender sender(20 * rate * 1024);
+
+ QNetworkRequest request("debugpipe://localhost:" + QString::number(sender.serverPort()));
+ QNetworkReplyPtr reply = manager.get(request);
+ reply->setReadBufferSize(32768);
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+
+ RateControlledReader reader(sender, reply, rate, 20);
+
+ // this test is designed to run for 25 seconds at most
+ QTime loopTime;
+ loopTime.start();
+ QTestEventLoop::instance().enterLoop(40);
+ int elapsedTime = loopTime.elapsed();
+
+ if (!errorSpy.isEmpty()) {
+ qDebug() << "ERROR!" << errorSpy[0][0] << reply->errorString();
+ }
+
+ qDebug() << "tst_QNetworkReply::rateControl" << "send rate:" << sender.transferRate;
+ qDebug() << "tst_QNetworkReply::rateControl" << "receive rate:" << reader.totalBytesRead * 1000 / elapsedTime
+ << "(it received" << reader.totalBytesRead << "bytes in" << elapsedTime << "ms)";
+
+ sender.wait();
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QVERIFY(sender.transferRate != -1);
+ int minRate = rate * 1024 * 9 / 10;
+ int maxRate = rate * 1024 * 11 / 10;
+ QVERIFY(sender.transferRate >= minRate);
+ QVERIFY(sender.transferRate <= maxRate);
+}
+
+void tst_QNetworkReply::downloadProgress_data()
+{
+ QTest::addColumn<int>("loopCount");
+
+ QTest::newRow("empty") << 0;
+ QTest::newRow("small") << 4;
+#ifndef Q_OS_SYMBIAN
+ QTest::newRow("big") << 4096;
+#else
+ // it can run even with 4096
+ // but it takes lot time
+ //especially on emulator
+ QTest::newRow("big") << 1024;
+#endif
+}
+
+void tst_QNetworkReply::downloadProgress()
+{
+ QTcpServer server;
+ QVERIFY(server.listen());
+
+ QNetworkRequest request("debugpipe://127.0.0.1:" + QString::number(server.serverPort()) + "/?bare=1");
+ QNetworkReplyPtr reply = manager.get(request);
+ QSignalSpy spy(reply, SIGNAL(downloadProgress(qint64,qint64)));
+ connect(reply, SIGNAL(downloadProgress(qint64,qint64)),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QVERIFY(spy.isValid());
+ QVERIFY(!reply->isFinished());
+ QVERIFY(reply->isRunning());
+
+ QCoreApplication::instance()->processEvents();
+ if (!server.hasPendingConnections())
+ server.waitForNewConnection(1000);
+ QVERIFY(server.hasPendingConnections());
+ QCOMPARE(spy.count(), 0);
+
+ QByteArray data(128, 'a');
+ QTcpSocket *sender = server.nextPendingConnection();
+ QVERIFY(sender);
+
+ QFETCH(int, loopCount);
+ for (int i = 1; i <= loopCount; ++i) {
+ sender->write(data);
+ QVERIFY2(sender->waitForBytesWritten(2000), "Network timeout");
+
+ spy.clear();
+ QTestEventLoop::instance().enterLoop(2);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(spy.count() > 0);
+ QVERIFY(!reply->isFinished());
+ QVERIFY(reply->isRunning());
+
+ QList<QVariant> args = spy.last();
+ QCOMPARE(args.at(0).toInt(), i*data.size());
+ QCOMPARE(args.at(1).toInt(), -1);
+ }
+
+ // close the connection:
+ delete sender;
+
+ spy.clear();
+ QTestEventLoop::instance().enterLoop(2);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(spy.count() > 0);
+ QVERIFY(!reply->isRunning());
+ QVERIFY(reply->isFinished());
+
+ QList<QVariant> args = spy.last();
+ QCOMPARE(args.at(0).toInt(), loopCount * data.size());
+ QCOMPARE(args.at(1).toInt(), loopCount * data.size());
+}
+
+void tst_QNetworkReply::uploadProgress_data()
+{
+ putToFile_data();
+}
+
+void tst_QNetworkReply::uploadProgress()
+{
+ QFETCH(QByteArray, data);
+ QTcpServer server;
+ QVERIFY(server.listen());
+
+ QNetworkRequest request("debugpipe://127.0.0.1:" + QString::number(server.serverPort()) + "/?bare=1");
+ QNetworkReplyPtr reply = manager.put(request, data);
+ QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64)));
+ QSignalSpy finished(reply, SIGNAL(finished()));
+ QVERIFY(spy.isValid());
+ QVERIFY(finished.isValid());
+
+ QCoreApplication::instance()->processEvents();
+ if (!server.hasPendingConnections())
+ server.waitForNewConnection(1000);
+ QVERIFY(server.hasPendingConnections());
+
+ QTcpSocket *receiver = server.nextPendingConnection();
+ if (finished.count() == 0) {
+ // it's not finished yet, so wait for it to be
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(2);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ }
+ delete receiver;
+
+ QVERIFY(finished.count() > 0);
+ QVERIFY(spy.count() > 0);
+
+ QList<QVariant> args = spy.last();
+ QCOMPARE(args.at(0).toInt(), data.size());
+ QCOMPARE(args.at(1).toInt(), data.size());
+}
+
+void tst_QNetworkReply::chaining_data()
+{
+ putToFile_data();
+}
+
+void tst_QNetworkReply::chaining()
+{
+ QTemporaryFile sourceFile(QDir::currentPath() + "/temp-XXXXXX");
+ sourceFile.setAutoRemove(true);
+ QVERIFY(sourceFile.open());
+
+ QFETCH(QByteArray, data);
+ QVERIFY(sourceFile.write(data) == data.size());
+ sourceFile.flush();
+ QCOMPARE(sourceFile.size(), qint64(data.size()));
+
+ QNetworkRequest request(QUrl::fromLocalFile(sourceFile.fileName()));
+ QNetworkReplyPtr getReply = manager.get(request);
+
+ QFile targetFile(testFileName);
+ QUrl url = QUrl::fromLocalFile(targetFile.fileName());
+ request.setUrl(url);
+ QNetworkReplyPtr putReply = manager.put(request, getReply);
+
+ connect(putReply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(getReply->url(), QUrl::fromLocalFile(sourceFile.fileName()));
+ QCOMPARE(getReply->error(), QNetworkReply::NoError);
+ QCOMPARE(getReply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), sourceFile.size());
+
+ QCOMPARE(putReply->url(), url);
+ QCOMPARE(putReply->error(), QNetworkReply::NoError);
+ QCOMPARE(putReply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
+ QVERIFY(putReply->readAll().isEmpty());
+
+ QVERIFY(sourceFile.atEnd());
+ sourceFile.seek(0); // reset it to the beginning
+
+ QVERIFY(targetFile.open(QIODevice::ReadOnly));
+ QCOMPARE(targetFile.size(), sourceFile.size());
+ QCOMPARE(targetFile.readAll(), sourceFile.readAll());
+}
+
+void tst_QNetworkReply::receiveCookiesFromHttp_data()
+{
+ QTest::addColumn<QString>("cookieString");
+ QTest::addColumn<QList<QNetworkCookie> >("expectedCookiesFromHttp");
+ QTest::addColumn<QList<QNetworkCookie> >("expectedCookiesInJar");
+
+ QTest::newRow("empty") << "" << QList<QNetworkCookie>() << QList<QNetworkCookie>();
+
+ QList<QNetworkCookie> header, jar;
+ QNetworkCookie cookie("a", "b");
+ header << cookie;
+ cookie.setDomain(QtNetworkSettings::serverName());
+ cookie.setPath("/qtest/cgi-bin/");
+ jar << cookie;
+ QTest::newRow("simple-cookie") << "a=b" << header << jar;
+
+ header << QNetworkCookie("c", "d");
+ cookie.setName("c");
+ cookie.setValue("d");
+ jar << cookie;
+ QTest::newRow("two-cookies") << "a=b, c=d" << header << jar;
+ QTest::newRow("two-cookies-2") << "a=b\nc=d" << header << jar;
+
+ header.clear();
+ jar.clear();
+ cookie = QNetworkCookie("a", "b");
+ cookie.setPath("/not/part-of-path");
+ header << cookie;
+ cookie.setDomain(QtNetworkSettings::serverName());
+ jar << cookie;
+ QTest::newRow("invalid-cookie-path") << "a=b; path=/not/part-of-path" << header << jar;
+
+ jar.clear();
+ cookie = QNetworkCookie("a", "b");
+ cookie.setDomain(".example.com");
+ header.clear();
+ header << cookie;
+ QTest::newRow("invalid-cookie-domain") << "a=b; domain=.example.com" << header << jar;
+}
+
+void tst_QNetworkReply::receiveCookiesFromHttp()
+{
+ QFETCH(QString, cookieString);
+
+ QByteArray data = cookieString.toLatin1() + '\n';
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/set-cookie.cgi");
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+ QNetworkReplyPtr reply;
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QList<QNetworkCookie> setCookies =
+ qvariant_cast<QList<QNetworkCookie> >(reply->header(QNetworkRequest::SetCookieHeader));
+ QTEST(setCookies, "expectedCookiesFromHttp");
+ QTEST(cookieJar->allCookies(), "expectedCookiesInJar");
+}
+
+void tst_QNetworkReply::receiveCookiesFromHttpSynchronous_data()
+{
+ tst_QNetworkReply::receiveCookiesFromHttp_data();
+}
+
+void tst_QNetworkReply::receiveCookiesFromHttpSynchronous()
+{
+ QFETCH(QString, cookieString);
+
+ QByteArray data = cookieString.toLatin1() + '\n';
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/set-cookie.cgi");
+
+ QNetworkRequest request(url);
+ request.setRawHeader("Content-Type", "application/octet-stream");
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ QNetworkReplyPtr reply;
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QList<QNetworkCookie> setCookies =
+ qvariant_cast<QList<QNetworkCookie> >(reply->header(QNetworkRequest::SetCookieHeader));
+ QTEST(setCookies, "expectedCookiesFromHttp");
+ QTEST(cookieJar->allCookies(), "expectedCookiesInJar");
+}
+
+void tst_QNetworkReply::sendCookies_data()
+{
+ QTest::addColumn<QList<QNetworkCookie> >("cookiesToSet");
+ QTest::addColumn<QString>("expectedCookieString");
+
+ QList<QNetworkCookie> list;
+ QTest::newRow("empty") << list << "";
+
+ QNetworkCookie cookie("a", "b");
+ cookie.setPath("/");
+ cookie.setDomain("example.com");
+ list << cookie;
+ QTest::newRow("no-match-domain") << list << "";
+
+ cookie.setDomain(QtNetworkSettings::serverName());
+ cookie.setPath("/something/else");
+ list << cookie;
+ QTest::newRow("no-match-path") << list << "";
+
+ cookie.setPath("/");
+ list << cookie;
+ QTest::newRow("simple-cookie") << list << "a=b";
+
+ cookie.setPath("/qtest");
+ cookie.setValue("longer");
+ list << cookie;
+ QTest::newRow("two-cookies") << list << "a=longer; a=b";
+
+ list.clear();
+ cookie = QNetworkCookie("a", "b");
+ cookie.setPath("/");
+ cookie.setDomain("." + QtNetworkSettings::serverDomainName());
+ list << cookie;
+ QTest::newRow("domain-match") << list << "a=b";
+
+ // but it shouldn't match this:
+ cookie.setDomain(QtNetworkSettings::serverDomainName());
+ list << cookie;
+ QTest::newRow("domain-match-2") << list << "a=b";
+}
+
+void tst_QNetworkReply::sendCookies()
+{
+ QFETCH(QString, expectedCookieString);
+ QFETCH(QList<QNetworkCookie>, cookiesToSet);
+ cookieJar->setAllCookies(cookiesToSet);
+
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/get-cookie.cgi");
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QCOMPARE(QString::fromLatin1(reply->readAll()).trimmed(), expectedCookieString);
+}
+
+void tst_QNetworkReply::sendCookiesSynchronous_data()
+{
+ tst_QNetworkReply::sendCookies_data();
+}
+
+void tst_QNetworkReply::sendCookiesSynchronous()
+{
+ QFETCH(QString, expectedCookieString);
+ QFETCH(QList<QNetworkCookie>, cookiesToSet);
+ cookieJar->setAllCookies(cookiesToSet);
+
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/get-cookie.cgi");
+ QNetworkRequest request(url);
+
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ QNetworkReplyPtr reply;
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QCOMPARE(QString::fromLatin1(reply->readAll()).trimmed(), expectedCookieString);
+}
+
+void tst_QNetworkReply::nestedEventLoops_slot()
+{
+ QEventLoop subloop;
+
+ // 16 seconds: fluke times out in 15 seconds, which triggers a QTcpSocket error
+ QTimer::singleShot(16000, &subloop, SLOT(quit()));
+ subloop.exec();
+
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QNetworkReply::nestedEventLoops()
+{
+ // Slightly fragile test, it may not be testing anything
+ // This is certifying that we're not running into the same issue
+ // that QHttp had (task 200432): the QTcpSocket connection is
+ // closed by the remote end because of the kept-alive HTTP
+ // connection timed out.
+ //
+ // The exact time required for this to happen is not exactly
+ // defined. Our server (Apache httpd) times out after 15
+ // seconds. (see above)
+
+ qDebug("Takes 16 seconds to run, please wait");
+ qRegisterMetaType<QNetworkReply::NetworkError>();
+
+ QUrl url("http://" + QtNetworkSettings::serverName());
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.get(request);
+
+ QSignalSpy finishedspy(reply, SIGNAL(finished()));
+ QSignalSpy errorspy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+
+ connect(reply, SIGNAL(finished()), SLOT(nestedEventLoops_slot()));
+ QTestEventLoop::instance().enterLoop(20);
+ QVERIFY2(!QTestEventLoop::instance().timeout(), "Network timeout");
+
+ QCOMPARE(finishedspy.count(), 1);
+ QCOMPARE(errorspy.count(), 0);
+}
+
+void tst_QNetworkReply::httpProxyCommands_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<QByteArray>("responseToSend");
+ QTest::addColumn<QString>("expectedCommand");
+
+ QTest::newRow("http")
+ << QUrl("http://0.0.0.0:4443/http-request")
+ << QByteArray("HTTP/1.0 200 OK\r\nProxy-Connection: close\r\nContent-Length: 1\r\n\r\n1")
+ << "GET http://0.0.0.0:4443/http-request HTTP/1.";
+#ifndef QT_NO_OPENSSL
+ QTest::newRow("https")
+ << QUrl("https://0.0.0.0:4443/https-request")
+ << QByteArray("HTTP/1.0 200 Connection Established\r\n\r\n")
+ << "CONNECT 0.0.0.0:4443 HTTP/1.";
+#endif
+}
+
+void tst_QNetworkReply::httpProxyCommands()
+{
+ QFETCH(QUrl, url);
+ QFETCH(QByteArray, responseToSend);
+ QFETCH(QString, expectedCommand);
+
+ MiniHttpServer proxyServer(responseToSend);
+ QNetworkProxy proxy(QNetworkProxy::HttpProxy, "127.0.0.1", proxyServer.serverPort());
+
+ manager.setProxy(proxy);
+ QNetworkRequest request(url);
+ request.setRawHeader("User-Agent", "QNetworkReplyAutoTest/1.0");
+ QNetworkReplyPtr reply = manager.get(request);
+ //clearing the proxy here causes the test to fail.
+ //the proxy isn't used until after the bearer has been started
+ //which is correct in general, because system proxy isn't known until that time.
+ //removing this line is safe, as the proxy is also reset by the cleanup() function
+ //manager.setProxy(QNetworkProxy());
+
+ // wait for the finished signal
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QTestEventLoop::instance().enterLoop(15);
+
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ //qDebug() << reply->error() << reply->errorString();
+ //qDebug() << proxyServer.receivedData;
+
+ // we don't really care if the request succeeded
+ // especially since it won't succeed in the HTTPS case
+ // so just check that the command was correct
+
+ QString receivedHeader = proxyServer.receivedData.left(expectedCommand.length());
+ QCOMPARE(receivedHeader, expectedCommand);
+
+ //QTBUG-17223 - make sure the user agent from the request is sent to proxy server even for CONNECT
+ int uapos = proxyServer.receivedData.indexOf("User-Agent");
+ int uaend = proxyServer.receivedData.indexOf("\r\n", uapos);
+ QByteArray uaheader = proxyServer.receivedData.mid(uapos, uaend - uapos);
+ QCOMPARE(uaheader, QByteArray("User-Agent: QNetworkReplyAutoTest/1.0"));
+}
+
+class ProxyChangeHelper : public QObject {
+ Q_OBJECT
+public:
+ ProxyChangeHelper() : QObject(), signalCount(0) {};
+public slots:
+ void finishedSlot() {
+ signalCount++;
+ if (signalCount == 2)
+ QMetaObject::invokeMethod(&QTestEventLoop::instance(), "exitLoop", Qt::QueuedConnection);
+ }
+private:
+ int signalCount;
+};
+
+void tst_QNetworkReply::httpProxyCommandsSynchronous_data()
+{
+ httpProxyCommands_data();
+}
+
+struct QThreadCleanup
+{
+ static inline void cleanup(QThread *thread)
+ {
+ thread->quit();
+ if (thread->wait(3000))
+ delete thread;
+ else
+ qWarning("thread hung, leaking memory so test can finish");
+ }
+};
+
+struct QDeleteLaterCleanup
+{
+ static inline void cleanup(QObject *o)
+ {
+ o->deleteLater();
+ }
+};
+
+void tst_QNetworkReply::httpProxyCommandsSynchronous()
+{
+ QFETCH(QUrl, url);
+ QFETCH(QByteArray, responseToSend);
+ QFETCH(QString, expectedCommand);
+
+ // when using synchronous commands, we need a different event loop for
+ // the server thread, because the client is never returning to the
+ // event loop
+ QScopedPointer<QThread, QThreadCleanup> serverThread(new QThread);
+ QScopedPointer<MiniHttpServer, QDeleteLaterCleanup> proxyServer(new MiniHttpServer(responseToSend, false, serverThread.data()));
+ QNetworkProxy proxy(QNetworkProxy::HttpProxy, "127.0.0.1", proxyServer->serverPort());
+
+ manager.setProxy(proxy);
+ QNetworkRequest request(url);
+
+ // send synchronous request
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ QNetworkReplyPtr reply = manager.get(request);
+ QVERIFY(reply->isFinished()); // synchronous
+ manager.setProxy(QNetworkProxy());
+
+ //qDebug() << reply->error() << reply->errorString();
+
+ // we don't really care if the request succeeded
+ // especially since it won't succeed in the HTTPS case
+ // so just check that the command was correct
+
+ QString receivedHeader = proxyServer->receivedData.left(expectedCommand.length());
+ QCOMPARE(receivedHeader, expectedCommand);
+}
+
+void tst_QNetworkReply::proxyChange()
+{
+ ProxyChangeHelper helper;
+ MiniHttpServer proxyServer(
+ "HTTP/1.0 200 OK\r\nProxy-Connection: keep-alive\r\n"
+ "Content-Length: 1\r\n\r\n1");
+ QNetworkProxy dummyProxy(QNetworkProxy::HttpProxy, "127.0.0.1", proxyServer.serverPort());
+ QNetworkRequest req(QUrl("http://" + QtNetworkSettings::serverName()));
+ proxyServer.doClose = false;
+
+ manager.setProxy(dummyProxy);
+ QNetworkReplyPtr reply1 = manager.get(req);
+ connect(reply1, SIGNAL(finished()), &helper, SLOT(finishedSlot()));
+
+ manager.setProxy(QNetworkProxy());
+ QNetworkReplyPtr reply2 = manager.get(req);
+ connect(reply2, SIGNAL(finished()), &helper, SLOT(finishedSlot()));
+
+ QTestEventLoop::instance().enterLoop(20);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // verify that the replies succeeded
+ QCOMPARE(reply1->error(), QNetworkReply::NoError);
+ QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QVERIFY(reply1->size() == 1);
+
+ QCOMPARE(reply2->error(), QNetworkReply::NoError);
+ QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QVERIFY(reply2->size() > 1);
+
+ // now try again and get an error
+ // this verifies that we reuse the already-open connection
+
+ proxyServer.doClose = true;
+ proxyServer.dataToTransmit =
+ "HTTP/1.0 403 Forbidden\r\nProxy-Connection: close\r\n"
+ "Content-Length: 1\r\n\r\n1";
+
+ manager.setProxy(dummyProxy);
+ QNetworkReplyPtr reply3 = manager.get(req);
+ connect(reply3, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QVERIFY(int(reply3->error()) > 0);
+}
+
+void tst_QNetworkReply::authorizationError_data()
+{
+
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<int>("errorSignalCount");
+ QTest::addColumn<int>("finishedSignalCount");
+ QTest::addColumn<int>("error");
+ QTest::addColumn<int>("httpStatusCode");
+ QTest::addColumn<QString>("httpBody");
+
+ QTest::newRow("unknown-authorization-method") << "http://" + QtNetworkSettings::serverName() +
+ "/qtest/cgi-bin/http-unknown-authentication-method.cgi?401-authorization-required" << 1 << 1
+ << int(QNetworkReply::AuthenticationRequiredError) << 401 << "authorization required";
+ QTest::newRow("unknown-proxy-authorization-method") << "http://" + QtNetworkSettings::serverName() +
+ "/qtest/cgi-bin/http-unknown-authentication-method.cgi?407-proxy-authorization-required" << 1 << 1
+ << int(QNetworkReply::ProxyAuthenticationRequiredError) << 407
+ << "authorization required";
+}
+
+void tst_QNetworkReply::authorizationError()
+{
+ QFETCH(QString, url);
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.get(request);
+
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+ QSignalSpy finishedSpy(reply, SIGNAL(finished()));
+ // now run the request:
+ connect(reply, SIGNAL(finished()),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QFETCH(int, errorSignalCount);
+ QCOMPARE(errorSpy.count(), errorSignalCount);
+ QFETCH(int, finishedSignalCount);
+ QCOMPARE(finishedSpy.count(), finishedSignalCount);
+ QFETCH(int, error);
+ QCOMPARE(reply->error(), QNetworkReply::NetworkError(error));
+
+ QFETCH(int, httpStatusCode);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), httpStatusCode);
+
+ QFETCH(QString, httpBody);
+ QCOMPARE(qint64(reply->size()), qint64(httpBody.size()));
+ QCOMPARE(QString(reply->readAll()), httpBody);
+}
+
+void tst_QNetworkReply::httpConnectionCount()
+{
+ QTcpServer server;
+ QVERIFY(server.listen());
+ QCoreApplication::instance()->processEvents();
+
+ for (int i = 0; i < 10; i++) {
+ QNetworkRequest request (QUrl("http://127.0.0.1:" + QString::number(server.serverPort()) + "/" + QString::number(i)));
+ QNetworkReply* reply = manager.get(request);
+ reply->setParent(&server);
+ }
+
+ int pendingConnectionCount = 0;
+ QTime time;
+ time.start();
+
+ while(pendingConnectionCount <= 20) {
+ QTestEventLoop::instance().enterLoop(1);
+ QTcpSocket *socket = server.nextPendingConnection();
+ while (socket != 0) {
+ pendingConnectionCount++;
+ socket->setParent(&server);
+ socket = server.nextPendingConnection();
+ }
+
+ // at max. wait 10 sec
+ if (time.elapsed() > 10000)
+ break;
+ }
+
+#ifdef Q_OS_SYMBIAN
+ // see in qhttpnetworkconnection.cpp
+ // hardcoded defaultChannelCount = 3
+ QCOMPARE(pendingConnectionCount, 3);
+#else
+ QCOMPARE(pendingConnectionCount, 6);
+#endif
+}
+
+void tst_QNetworkReply::httpReUsingConnectionSequential_data()
+{
+ QTest::addColumn<bool>("doDeleteLater");
+ QTest::newRow("deleteLater") << true;
+ QTest::newRow("noDeleteLater") << false;
+}
+
+void tst_QNetworkReply::httpReUsingConnectionSequential()
+{
+ QFETCH(bool, doDeleteLater);
+
+ QByteArray response("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
+ MiniHttpServer server(response);
+ server.multiple = true;
+ server.doClose = false;
+
+ QUrl url;
+ url.setScheme("http");
+ url.setPort(server.serverPort());
+ url.setHost("127.0.0.1");
+ // first request
+ QNetworkReply* reply1 = manager.get(QNetworkRequest(url));
+ connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(2);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(!reply1->error());
+ int reply1port = server.client->peerPort();
+
+ if (doDeleteLater)
+ reply1->deleteLater();
+
+ // finished received, send the next one
+ QNetworkReply*reply2 = manager.get(QNetworkRequest(url));
+ connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(2);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(!reply2->error());
+ int reply2port = server.client->peerPort(); // should still be the same object
+
+ QVERIFY(reply1port > 0);
+ QCOMPARE(server.totalConnections, 1);
+ QCOMPARE(reply2port, reply1port);
+
+ if (!doDeleteLater)
+ reply1->deleteLater(); // only do it if it was not done earlier
+ reply2->deleteLater();
+}
+
+class HttpReUsingConnectionFromFinishedSlot : public QObject {
+ Q_OBJECT
+public:
+ QNetworkReply* reply1;
+ QNetworkReply* reply2;
+ QUrl url;
+ QNetworkAccessManager manager;
+public slots:
+ void finishedSlot() {
+ QVERIFY(!reply1->error());
+
+ QFETCH(bool, doDeleteLater);
+ if (doDeleteLater) {
+ reply1->deleteLater();
+ reply1 = 0;
+ }
+
+ // kick off 2nd request and exit the loop when it is done
+ reply2 = manager.get(QNetworkRequest(url));
+ reply2->setParent(this);
+ connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ }
+};
+
+void tst_QNetworkReply::httpReUsingConnectionFromFinishedSlot_data()
+{
+ httpReUsingConnectionSequential_data();
+}
+
+void tst_QNetworkReply::httpReUsingConnectionFromFinishedSlot()
+{
+ QByteArray response("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
+ MiniHttpServer server(response);
+ server.multiple = true;
+ server.doClose = false;
+
+ HttpReUsingConnectionFromFinishedSlot helper;
+ helper.reply1 = 0;
+ helper.reply2 = 0;
+ helper.url.setScheme("http");
+ helper.url.setPort(server.serverPort());
+ helper.url.setHost("127.0.0.1");
+
+ // first request
+ helper.reply1 = helper.manager.get(QNetworkRequest(helper.url));
+ helper.reply1->setParent(&helper);
+ connect(helper.reply1, SIGNAL(finished()), &helper, SLOT(finishedSlot()));
+ QTestEventLoop::instance().enterLoop(4);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QVERIFY(helper.reply2);
+ QVERIFY(!helper.reply2->error());
+
+ QCOMPARE(server.totalConnections, 1);
+}
+
+class HttpRecursiveCreationHelper : public QObject {
+ Q_OBJECT
+public:
+
+ HttpRecursiveCreationHelper():
+ QObject(0),
+ requestsStartedCount_finished(0),
+ requestsStartedCount_readyRead(0),
+ requestsFinishedCount(0)
+ {
+ }
+ QNetworkAccessManager manager;
+ int requestsStartedCount_finished;
+ int requestsStartedCount_readyRead;
+ int requestsFinishedCount;
+public slots:
+ void finishedSlot() {
+ requestsFinishedCount++;
+
+ QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
+ QVERIFY(!reply->error());
+ QVERIFY(reply->bytesAvailable() == 27906);
+
+ if (requestsFinishedCount == 60) {
+ QTestEventLoop::instance().exitLoop();
+ return;
+ }
+
+ if (requestsStartedCount_finished < 30) {
+ startOne();
+ requestsStartedCount_finished++;
+ }
+
+ reply->deleteLater();
+ }
+ void readyReadSlot() {
+ QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
+ QVERIFY(!reply->error());
+
+ if (requestsStartedCount_readyRead < 30 && reply->bytesAvailable() > 27906/2) {
+ startOne();
+ requestsStartedCount_readyRead++;
+ }
+ }
+ void startOne() {
+ QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/fluke.gif";
+ QNetworkRequest request(url);
+ QNetworkReply *reply = manager.get(request);
+ reply->setParent(this);
+ connect(reply, SIGNAL(finished()), this, SLOT(finishedSlot()));
+ connect(reply, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+ }
+};
+
+void tst_QNetworkReply::httpRecursiveCreation()
+{
+ // this test checks if creation of new requests to the same host properly works
+ // from readyRead() and finished() signals
+ HttpRecursiveCreationHelper helper;
+ helper.startOne();
+ QTestEventLoop::instance().enterLoop(30);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
+#ifndef QT_NO_OPENSSL
+void tst_QNetworkReply::ignoreSslErrorsList_data()
+{
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<QList<QSslError> >("expectedSslErrors");
+ QTest::addColumn<QNetworkReply::NetworkError>("expectedNetworkError");
+
+ QList<QSslError> expectedSslErrors;
+ // apparently, because of some weird behaviour of SRCDIR, the file name below needs to start with a slash
+ QList<QSslCertificate> certs = QSslCertificate::fromPath(QLatin1String(SRCDIR "/certs/qt-test-server-cacert.pem"));
+ QSslError rightError(QSslError::SelfSignedCertificate, certs.at(0));
+ QSslError wrongError(QSslError::SelfSignedCertificate);
+
+ QTest::newRow("SSL-failure-empty-list") << "https://" + QtNetworkSettings::serverName() + "/index.html" << expectedSslErrors << QNetworkReply::SslHandshakeFailedError;
+ expectedSslErrors.append(wrongError);
+ QTest::newRow("SSL-failure-wrong-error") << "https://" + QtNetworkSettings::serverName() + "/index.html" << expectedSslErrors << QNetworkReply::SslHandshakeFailedError;
+ expectedSslErrors.append(rightError);
+ QTest::newRow("allErrorsInExpectedList1") << "https://" + QtNetworkSettings::serverName() + "/index.html" << expectedSslErrors << QNetworkReply::NoError;
+ expectedSslErrors.removeAll(wrongError);
+ QTest::newRow("allErrorsInExpectedList2") << "https://" + QtNetworkSettings::serverName() + "/index.html" << expectedSslErrors << QNetworkReply::NoError;
+ expectedSslErrors.removeAll(rightError);
+ QTest::newRow("SSL-failure-empty-list-again") << "https://" + QtNetworkSettings::serverName() + "/index.html" << expectedSslErrors << QNetworkReply::SslHandshakeFailedError;
+}
+
+void tst_QNetworkReply::ignoreSslErrorsList()
+{
+ QFETCH(QString, url);
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.get(request);
+
+ QFETCH(QList<QSslError>, expectedSslErrors);
+ reply->ignoreSslErrors(expectedSslErrors);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QFETCH(QNetworkReply::NetworkError, expectedNetworkError);
+ QCOMPARE(reply->error(), expectedNetworkError);
+}
+
+void tst_QNetworkReply::ignoreSslErrorsListWithSlot_data()
+{
+ ignoreSslErrorsList_data();
+}
+
+// this is not a test, just a slot called in the test below
+void tst_QNetworkReply::ignoreSslErrorListSlot(QNetworkReply *reply, const QList<QSslError> &)
+{
+ reply->ignoreSslErrors(storedExpectedSslErrors);
+}
+
+// do the same as in ignoreSslErrorsList, but ignore the errors in the slot
+void tst_QNetworkReply::ignoreSslErrorsListWithSlot()
+{
+ QFETCH(QString, url);
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.get(request);
+
+ QFETCH(QList<QSslError>, expectedSslErrors);
+ // store the errors to ignore them later in the slot connected below
+ storedExpectedSslErrors = expectedSslErrors;
+ connect(&manager, SIGNAL(sslErrors(QNetworkReply *, const QList<QSslError> &)),
+ this, SLOT(ignoreSslErrorListSlot(QNetworkReply *, const QList<QSslError> &)));
+
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QFETCH(QNetworkReply::NetworkError, expectedNetworkError);
+ QCOMPARE(reply->error(), expectedNetworkError);
+}
+
+void tst_QNetworkReply::sslConfiguration_data()
+{
+ QTest::addColumn<QSslConfiguration>("configuration");
+ QTest::addColumn<bool>("works");
+
+ QTest::newRow("empty") << QSslConfiguration() << false;
+ QSslConfiguration conf = QSslConfiguration::defaultConfiguration();
+ QTest::newRow("default") << conf << false; // does not contain test server cert
+ QList<QSslCertificate> testServerCert = QSslCertificate::fromPath(SRCDIR "/certs/qt-test-server-cacert.pem");
+ conf.setCaCertificates(testServerCert);
+ QTest::newRow("set-root-cert") << conf << true;
+ conf.setProtocol(QSsl::SecureProtocols);
+ QTest::newRow("secure") << conf << true;
+}
+
+void tst_QNetworkReply::sslConfiguration()
+{
+ QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + "/index.html"));
+ QFETCH(QSslConfiguration, configuration);
+ request.setSslConfiguration(configuration);
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QFETCH(bool, works);
+ QNetworkReply::NetworkError expectedError = works ? QNetworkReply::NoError : QNetworkReply::SslHandshakeFailedError;
+ QCOMPARE(reply->error(), expectedError);
+}
+
+#endif // QT_NO_OPENSSL
+
+void tst_QNetworkReply::getAndThenDeleteObject_data()
+{
+ QTest::addColumn<bool>("replyFirst");
+
+ QTest::newRow("delete-reply-first") << true;
+ QTest::newRow("delete-qnam-first") << false;
+}
+
+void tst_QNetworkReply::getAndThenDeleteObject()
+{
+ // yes, this will leak if the testcase fails. I don't care. It must not fail then :P
+ QNetworkAccessManager *manager = new QNetworkAccessManager();
+ QNetworkRequest request("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile");
+ QNetworkReply *reply = manager->get(request);
+ reply->setReadBufferSize(1);
+ reply->setParent((QObject*)0); // must be 0 because else it is the manager
+
+ QTime stopWatch;
+ stopWatch.start();
+ forever {
+ QCoreApplication::instance()->processEvents();
+ if (reply->bytesAvailable())
+ break;
+ if (stopWatch.elapsed() >= 30000)
+ break;
+ }
+
+ QVERIFY(reply->bytesAvailable());
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QVERIFY(!reply->isFinished()); // must not be finished
+
+ QFETCH(bool, replyFirst);
+
+ if (replyFirst) {
+ delete reply;
+ delete manager;
+ } else {
+ delete manager;
+ delete reply;
+ }
+}
+
+// see https://bugs.webkit.org/show_bug.cgi?id=38935
+void tst_QNetworkReply::symbianOpenCDataUrlCrash()
+{
+ QString requestUrl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAAAB3RJTUUH2AUSEgolrgBvVQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAARnQU1BAACxjwv8YQUAAAHlSURBVHja5VbNShxBEK6ZaXtnHTebQPA1gngNmfaeq+QNPIlIXkC9iQdJxJNvEHLN3VkxhxxE8gTmEhAVddXZ6Z3f9Ndriz89/sHmkBQUVVT1fB9d9c3uOERUKTunIdn3HzstxGpYBDS4wZk7TAJj/wlJ90J+jnuygqs8svSj+/rGHBos3rE18XBvfU3no7NzlJfUaY/5whAwl8Lr/WDUv4ODxTMb+P5xLExe5LmO559WqTX/MQR4WZYEAtSePS4pE0qSnuhnRUcBU5Gm2k9XljU4Z26I3NRxBrd80rj2fh+KNE0FY4xevRgTjREvPFpasAK8Xli6MUbbuKw3afAGgSBXozo5u4hkmncAlkl5wx8iMGbdyQjnCFEiEwGiosj1UQA/x2rVddiVoi+l4IxE0PTDnx+mrQBvvnx9cFz3krhVvuhzFn579/aq/n5rW8fbtTqiWhIQZEo17YBvbkxOXNVndnYpTvod7AtiuN2re0+siwcB9oH8VxxrNwQQAhzyRs30n7wTI2HIN2g2QtQwjjhJIQatOq7E8bIVCLwzpl83Lvtvl+NohWWlE8UZTWEMAGCcR77fHKhPnZF5tYie6dfdxCphACmLPM+j8bYfmTryg64kV9Vh3mV8jP0b/4wO/YUPiT/8i0MLf55lSQAAAABJRU5ErkJggg==");
+ QUrl url = QUrl::fromEncoded(requestUrl.toLatin1());
+ QNetworkRequest req(url);
+ QNetworkReplyPtr reply;
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, req, reply));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(598));
+}
+
+void tst_QNetworkReply::getFromHttpIntoBuffer_data()
+{
+ QTest::addColumn<QUrl>("url");
+
+ QTest::newRow("rfc-internal") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
+}
+
+// Please note that the whole "zero copy" download buffer API is private right now. Do not use it.
+void tst_QNetworkReply::getFromHttpIntoBuffer()
+{
+ QFETCH(QUrl, url);
+ QNetworkRequest request(url);
+ request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 1024*128); // 128 kB
+
+ QNetworkAccessManager manager;
+ QNetworkReply *reply = manager.get(request);
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(reply->isFinished());
+
+ QFile reference(SRCDIR "/rfc3252.txt");
+ QVERIFY(reference.open(QIODevice::ReadOnly));
+
+ QCOMPARE(reference.bytesAvailable(), reply->bytesAvailable());
+ QCOMPARE(reference.size(), reply->size());
+
+ // Compare the memory buffer
+ QVariant downloadBufferAttribute = reply->attribute(QNetworkRequest::DownloadBufferAttribute);
+ QVERIFY(downloadBufferAttribute.isValid());
+ QSharedPointer<char> sharedPointer = downloadBufferAttribute.value<QSharedPointer<char> >();
+ bool memoryComparison =
+ (0 == memcmp(static_cast<void*>(reference.readAll().data()),
+ sharedPointer.data(), reference.size()));
+ QVERIFY(memoryComparison);
+
+ // Make sure the normal reading works
+ reference.seek(0);
+ QCOMPARE(reply->read(42), reference.read(42));
+ QCOMPARE(reply->getChar(0), reference.getChar(0));
+ QCOMPARE(reply->peek(23), reference.peek(23));
+ QCOMPARE(reply->readLine(), reference.readLine());
+ QCOMPARE(reference.bytesAvailable(), reply->bytesAvailable());
+ QCOMPARE(reply->readAll(), reference.readAll());
+ QVERIFY(reply->atEnd());
+}
+
+// FIXME we really need to consolidate all those server implementations
+class GetFromHttpIntoBuffer2Server : QObject {
+ Q_OBJECT
+ qint64 dataSize;
+ qint64 dataSent;
+ QTcpServer server;
+ QTcpSocket *client;
+ bool serverSendsContentLength;
+ bool chunkedEncoding;
+
+public:
+ GetFromHttpIntoBuffer2Server (qint64 ds, bool sscl, bool ce) : dataSize(ds), dataSent(0),
+ client(0), serverSendsContentLength(sscl), chunkedEncoding(ce) {
+ server.listen();
+ connect(&server, SIGNAL(newConnection()), this, SLOT(newConnectionSlot()));
+ }
+
+ int serverPort() {
+ return server.serverPort();
+ }
+
+public slots:
+
+ void newConnectionSlot() {
+ client = server.nextPendingConnection();
+ client->setParent(this);
+ connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+ connect(client, SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWrittenSlot(qint64)));
+ }
+
+ void readyReadSlot() {
+ client->readAll();
+ client->write("HTTP/1.0 200 OK\n");
+ if (serverSendsContentLength)
+ client->write(QString("Content-Length: " + QString::number(dataSize) + "\n").toAscii());
+ if (chunkedEncoding)
+ client->write(QString("Transfer-Encoding: chunked\n").toAscii());
+ client->write("Connection: close\n\n");
+ }
+
+ void bytesWrittenSlot(qint64 amount) {
+ Q_UNUSED(amount);
+ if (dataSent == dataSize && client) {
+ // close eventually
+
+ // chunked encoding: we have to send a last "empty" chunk
+ if (chunkedEncoding)
+ client->write(QString("0\r\n\r\n").toAscii());
+
+ client->disconnectFromHost();
+ server.close();
+ client = 0;
+ return;
+ }
+
+ // send data
+ if (client && client->bytesToWrite() < 100*1024 && dataSent < dataSize) {
+ qint64 amount = qMin(qint64(16*1024), dataSize - dataSent);
+ QByteArray data(amount, '@');
+
+ if (chunkedEncoding) {
+ client->write(QString(QString("%1").arg(amount,0,16).toUpper() + "\r\n").toAscii());
+ client->write(data.constData(), amount);
+ client->write(QString("\r\n").toAscii());
+ } else {
+ client->write(data.constData(), amount);
+ }
+
+ dataSent += amount;
+ }
+ }
+};
+
+class GetFromHttpIntoBuffer2Client : QObject {
+ Q_OBJECT
+private:
+ bool useDownloadBuffer;
+ QNetworkReply *reply;
+ qint64 uploadSize;
+ QList<qint64> bytesAvailableList;
+public:
+ GetFromHttpIntoBuffer2Client (QNetworkReply *reply, bool useDownloadBuffer, qint64 uploadSize)
+ : useDownloadBuffer(useDownloadBuffer), reply(reply), uploadSize(uploadSize)
+ {
+ connect(reply, SIGNAL(metaDataChanged()), this, SLOT(metaDataChangedSlot()));
+ connect(reply, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+ connect(reply, SIGNAL(finished()), this, SLOT(finishedSlot()));
+ }
+
+ public slots:
+ void metaDataChangedSlot() {
+ if (useDownloadBuffer) {
+ QSharedPointer<char> sharedPointer = qvariant_cast<QSharedPointer<char> >(reply->attribute(QNetworkRequest::DownloadBufferAttribute));
+ QVERIFY(!sharedPointer.isNull()); // It will be 0 if it failed
+ }
+
+ // metaDataChanged needs to come before everything else
+ QVERIFY(bytesAvailableList.isEmpty());
+ }
+
+ void readyReadSlot() {
+ QVERIFY(!reply->isFinished());
+
+ qint64 bytesAvailable = reply->bytesAvailable();
+
+ // bytesAvailable must never be 0
+ QVERIFY(bytesAvailable != 0);
+
+ if (bytesAvailableList.length() < 5) {
+ // We assume that the first few times the bytes available must be less than the complete size, e.g.
+ // the bytesAvailable() function works correctly in case of a downloadBuffer.
+ QVERIFY(bytesAvailable < uploadSize);
+ }
+ if (!bytesAvailableList.isEmpty()) {
+ // Also check that the same bytesAvailable is not coming twice in a row
+ QVERIFY(bytesAvailableList.last() != bytesAvailable);
+ }
+
+ bytesAvailableList.append(bytesAvailable);
+ // Add bytesAvailable to a list an parse
+ }
+
+ void finishedSlot() {
+ // We should have already received all readyRead
+ QVERIFY(!bytesAvailableList.isEmpty());
+ QVERIFY(bytesAvailableList.last() == uploadSize);
+ }
+};
+
+void tst_QNetworkReply::getFromHttpIntoBuffer2_data()
+{
+ QTest::addColumn<bool>("useDownloadBuffer");
+
+ QTest::newRow("use-download-buffer") << true;
+ QTest::newRow("do-not-use-download-buffer") << false;
+}
+
+// This test checks mostly that signal emissions are in correct order
+// Please note that the whole "zero copy" download buffer API is private right now. Do not use it.
+void tst_QNetworkReply::getFromHttpIntoBuffer2()
+{
+ QFETCH(bool, useDownloadBuffer);
+
+ // On my Linux Desktop the results are already visible with 128 kB, however we use this to have good results.
+#if defined(Q_OS_SYMBIAN) || defined(Q_WS_WINCE_WM)
+ // Show some mercy to non-desktop platform/s
+ enum {UploadSize = 4*1024*1024}; // 4 MB
+#else
+ enum {UploadSize = 32*1024*1024}; // 32 MB
+#endif
+
+ GetFromHttpIntoBuffer2Server server(UploadSize, true, false);
+
+ QNetworkRequest request(QUrl("http://127.0.0.1:" + QString::number(server.serverPort()) + "/?bare=1"));
+ if (useDownloadBuffer)
+ request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 1024*1024*128); // 128 MB is max allowed
+
+ QNetworkAccessManager manager;
+ QNetworkReplyPtr reply = manager.get(request);
+
+ GetFromHttpIntoBuffer2Client client(reply, useDownloadBuffer, UploadSize);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+ QTestEventLoop::instance().enterLoop(40);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
+
+void tst_QNetworkReply::getFromHttpIntoBufferCanReadLine()
+{
+ QString header("HTTP/1.0 200 OK\r\nContent-Length: 7\r\n\r\nxxx\nxxx");
+
+ MiniHttpServer server(header.toAscii());
+ server.doClose = true;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 1024*1024*128); // 128 MB is max allowed
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QVERIFY(reply->canReadLine());
+ QCOMPARE(reply->read(1), QByteArray("x"));
+ QVERIFY(reply->canReadLine());
+ QCOMPARE(reply->read(3), QByteArray("xx\n"));
+ QVERIFY(!reply->canReadLine());
+ QCOMPARE(reply->readAll(), QByteArray("xxx"));
+ QVERIFY(!reply->canReadLine());
+}
+
+
+
+// Is handled somewhere else too, introduced this special test to have it more accessible
+void tst_QNetworkReply::ioGetFromHttpWithoutContentLength()
+{
+ QByteArray dataToSend("HTTP/1.0 200 OK\r\n\r\nHALLO! 123!");
+ MiniHttpServer server(dataToSend);
+ server.doClose = true;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QVERIFY(reply->isFinished());
+ QVERIFY(reply->error() == QNetworkReply::NoError);
+}
+
+// Is handled somewhere else too, introduced this special test to have it more accessible
+void tst_QNetworkReply::ioGetFromHttpBrokenChunkedEncoding()
+{
+ // This is wrong chunked encoding because of the X. What actually has to follow is \r\n
+ // and then the declaration of the final 0 chunk
+ QByteArray dataToSend("HTTP/1.0 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n3\r\nABCX");
+ MiniHttpServer server(dataToSend);
+ server.doClose = false; // FIXME
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+
+ QEXPECT_FAIL(0, "We should close the socket and not just do nothing", Continue);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QEXPECT_FAIL(0, "We should close the socket and not just do nothing", Continue);
+ QVERIFY(reply->isFinished());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+}
+
+// TODO:
+// Prepare a gzip that has one chunk that expands to the size mentioned in the bugreport.
+// Then have a custom HTTP server that waits after this chunk so the returning gets
+// triggered.
+void tst_QNetworkReply::qtbug12908compressedHttpReply()
+{
+ QString header("HTTP/1.0 200 OK\r\nContent-Encoding: gzip\r\nContent-Length: 63\r\n\r\n");
+
+ // dd if=/dev/zero of=qtbug-12908 bs=16384 count=1 && gzip qtbug-12908 && base64 -w 0 qtbug-12908.gz
+ QString encodedFile("H4sICDdDaUwAA3F0YnVnLTEyOTA4AO3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAIC3AYbSVKsAQAAA");
+ QByteArray decodedFile = QByteArray::fromBase64(encodedFile.toAscii());
+ QCOMPARE(decodedFile.size(), 63);
+
+ MiniHttpServer server(header.toAscii() + decodedFile);
+ server.doClose = true;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->size(), qint64(16384));
+ QCOMPARE(reply->readAll(), QByteArray(16384, '\0'));
+}
+
+void tst_QNetworkReply::compressedHttpReplyBrokenGzip()
+{
+ QString header("HTTP/1.0 200 OK\r\nContent-Encoding: gzip\r\nContent-Length: 63\r\n\r\n");
+
+ // dd if=/dev/zero of=qtbug-12908 bs=16384 count=1 && gzip qtbug-12908 && base64 -w 0 qtbug-12908.gz
+ // Then change "BMQ" to "BMX"
+ QString encodedFile("H4sICDdDaUwAA3F0YnVnLTEyOTA4AO3BMXEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAIC3AYbSVKsAQAAA");
+ QByteArray decodedFile = QByteArray::fromBase64(encodedFile.toAscii());
+ QCOMPARE(decodedFile.size(), 63);
+
+ MiniHttpServer server(header.toAscii() + decodedFile);
+ server.doClose = true;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->error(), QNetworkReply::ProtocolFailure);
+}
+
+// TODO add similar test for FTP
+void tst_QNetworkReply::getFromUnreachableIp()
+{
+ QNetworkAccessManager manager;
+
+ QNetworkRequest request(QUrl("http://255.255.255.255/42/23/narf/narf/narf"));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QVERIFY(reply->error() != QNetworkReply::NoError);
+}
+
+void tst_QNetworkReply::qtbug4121unknownAuthentication()
+{
+ MiniHttpServer server(QByteArray("HTTP/1.1 401 bla\r\nWWW-Authenticate: crap\r\nContent-Length: 0\r\n\r\n"));
+ server.doClose = false;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkAccessManager manager;
+ QNetworkReplyPtr reply = manager.get(request);
+
+ qRegisterMetaType<QNetworkReply*>("QNetworkReply*");
+ qRegisterMetaType<QAuthenticator*>("QAuthenticator*");
+ QSignalSpy authSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*)));
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(authSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(errorSpy.count(), 1);
+
+ QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError);
+}
+
+class QtBug13431Helper : public QObject {
+ Q_OBJECT
+public:
+ QNetworkReply* m_reply;
+ QTimer m_dlTimer;
+public slots:
+ void replyFinished(QNetworkReply*) {
+ QTestEventLoop::instance().exitLoop();
+ }
+
+ void onReadAndReschedule() {
+ const qint64 bytesReceived = m_reply->bytesAvailable();
+ if (bytesReceived && m_reply->readBufferSize()) {
+ QByteArray data = m_reply->read(bytesReceived);
+ // reschedule read
+ const int millisecDelay = static_cast<int>(bytesReceived * 1000 / m_reply->readBufferSize());
+ m_dlTimer.start(millisecDelay);
+ }
+ else {
+ // reschedule read
+ m_dlTimer.start(200);
+ }
+ }
+};
+
+void tst_QNetworkReply::qtbug13431replyThrottling()
+{
+ QtBug13431Helper helper;
+
+ QNetworkAccessManager nam;
+ connect(&nam, SIGNAL(finished(QNetworkReply*)), &helper, SLOT(replyFinished(QNetworkReply*)));
+
+ // Download a bigger file
+ QNetworkRequest netRequest(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile"));
+ helper.m_reply = nam.get(netRequest);
+ // Set the throttle
+ helper.m_reply->setReadBufferSize(36000);
+
+ // Schedule a timer that tries to read
+
+ connect(&helper.m_dlTimer, SIGNAL(timeout()), &helper, SLOT(onReadAndReschedule()));
+ helper.m_dlTimer.setSingleShot(true);
+ helper.m_dlTimer.start(0);
+
+ QTestEventLoop::instance().enterLoop(30);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(helper.m_reply->isFinished());
+ QCOMPARE(helper.m_reply->error(), QNetworkReply::NoError);
+}
+
+void tst_QNetworkReply::httpWithNoCredentialUsage()
+{
+ QNetworkRequest request(QUrl("http://httptest:httptest@" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi"));
+ // Do not use credentials
+ request.setAttribute(QNetworkRequest::AuthenticationReuseAttribute, QNetworkRequest::Manual);
+ QNetworkAccessManager manager;
+ QNetworkReplyPtr reply = manager.get(request);
+
+ qRegisterMetaType<QNetworkReply*>("QNetworkReply*");
+ qRegisterMetaType<QAuthenticator*>("QAuthenticator*");
+ QSignalSpy authSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*)));
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // We check if authenticationRequired was emitted, however we do not anything in it so it should be 401
+ QCOMPARE(authSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(errorSpy.count(), 1);
+
+ QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError);
+}
+
+void tst_QNetworkReply::qtbug15311doubleContentLength()
+{
+ QByteArray response("HTTP/1.0 200 OK\r\nContent-Length: 3\r\nServer: bogus\r\nContent-Length: 3\r\n\r\nABC");
+ MiniHttpServer server(response);
+ server.doClose = true;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(reply->isFinished());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->size(), qint64(3));
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(3));
+ QCOMPARE(reply->rawHeader("Content-length"), QByteArray("3, 3"));
+ QCOMPARE(reply->readAll(), QByteArray("ABC"));
+}
+
+void tst_QNetworkReply::qtbug18232gzipContentLengthZero()
+{
+ QByteArray response("HTTP/1.0 200 OK\r\nContent-Encoding: gzip\r\nContent-Length: 0\r\n\r\n");
+ MiniHttpServer server(response);
+ server.doClose = true;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(reply->isFinished());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->size(), qint64(0));
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(0));
+ QCOMPARE(reply->readAll(), QByteArray());
+}
+
+void tst_QNetworkReply::synchronousRequest_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<QString>("expected");
+ QTest::addColumn<bool>("checkContentLength");
+ QTest::addColumn<QString>("mimeType");
+
+ // ### cache, auth, proxies
+
+ QTest::newRow("http")
+ << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")
+ << QString("file:" SRCDIR "/rfc3252.txt")
+ << true
+ << QString("text/plain");
+
+ QTest::newRow("http-gzip")
+ << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/deflate/rfc3252.txt")
+ << QString("file:" SRCDIR "/rfc3252.txt")
+ << false // don't check content length, because it's gzip encoded
+ // ### we would need to enflate (un-deflate) the file content and compare the sizes
+ << QString("text/plain");
+
+#ifndef QT_NO_OPENSSL
+ QTest::newRow("https")
+ << QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")
+ << QString("file:" SRCDIR "/rfc3252.txt")
+ << true
+ << QString("text/plain");
+#endif
+
+ QTest::newRow("data")
+ << QUrl(QString::fromLatin1("data:text/plain,hello world"))
+ << QString("data:hello world")
+ << true // check content length
+ << QString("text/plain");
+
+ QTest::newRow("simple-file")
+ << QUrl::fromLocalFile(SRCDIR "/rfc3252.txt")
+ << QString("file:" SRCDIR "/rfc3252.txt")
+ << true
+ << QString();
+}
+
+// FIXME add testcase for failing network etc
+void tst_QNetworkReply::synchronousRequest()
+{
+ QFETCH(QUrl, url);
+ QFETCH(QString, expected);
+ QFETCH(bool, checkContentLength);
+ QFETCH(QString, mimeType);
+
+ QNetworkRequest request(url);
+
+#ifndef QT_NO_OPENSSL
+ // workaround for HTTPS requests: add self-signed server cert to list of CA certs,
+ // since we cannot react to the sslErrors() signal
+ // to fix this properly we would need to have an ignoreSslErrors() method in the
+ // QNetworkRequest, see http://bugreports.qt.nokia.com/browse/QTBUG-14774
+ if (url.scheme() == "https") {
+ QSslConfiguration sslConf;
+ QList<QSslCertificate> certs = QSslCertificate::fromPath(SRCDIR "/certs/qt-test-server-cacert.pem");
+ sslConf.setCaCertificates(certs);
+ request.setSslConfiguration(sslConf);
+ }
+#endif
+
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+
+ QNetworkReplyPtr reply;
+ QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*)));
+ QSignalSpy sslErrorsSpy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)));
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply, 0));
+ QVERIFY(reply->isFinished());
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(sslErrorsSpy.count(), 0);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader).toString(), mimeType);
+
+ QByteArray expectedContent;
+
+ if (expected.startsWith("file:")) {
+ QString path = expected.mid(5);
+ QFile file(path);
+ file.open(QIODevice::ReadOnly);
+ expectedContent = file.readAll();
+ } else if (expected.startsWith("data:")) {
+ expectedContent = expected.mid(5).toUtf8();
+ }
+
+ if (checkContentLength)
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(expectedContent.size()));
+ QCOMPARE(reply->readAll(), expectedContent);
+
+ reply->deleteLater();
+}
+
+#ifndef QT_NO_OPENSSL
+void tst_QNetworkReply::synchronousRequestSslFailure()
+{
+ // test that SSL won't be accepted with self-signed certificate,
+ // and that we do not emit the sslError signal (in the manager that is,
+ // in the reply we don't care)
+
+ QUrl url("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
+ QNetworkRequest request(url);
+ request.setAttribute(
+ QNetworkRequest::SynchronousRequestAttribute,
+ true);
+ QNetworkReplyPtr reply;
+ QSignalSpy sslErrorsSpy(&manager, SIGNAL(sslErrors(QNetworkReply *, const QList<QSslError> &)));
+ runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply, 0);
+ QVERIFY(reply->isFinished());
+ QCOMPARE(reply->error(), QNetworkReply::SslHandshakeFailedError);
+ QCOMPARE(sslErrorsSpy.count(), 0);
+}
+#endif
+
+class HttpAbortHelper : public QObject
+{
+ Q_OBJECT
+public:
+ HttpAbortHelper(QNetworkReply *parent)
+ : QObject(parent)
+ {
+ mReply = parent;
+ connect(parent, SIGNAL(readyRead()), this, SLOT(readyRead()));
+ }
+
+ ~HttpAbortHelper()
+ {
+ }
+
+public slots:
+ void readyRead()
+ {
+ mReply->abort();
+ QMetaObject::invokeMethod(&QTestEventLoop::instance(), "exitLoop", Qt::QueuedConnection);
+ }
+
+private:
+ QNetworkReply *mReply;
+};
+
+void tst_QNetworkReply::httpAbort()
+{
+ // FIXME Also implement one where we do a big upload and then abort().
+ // It must not crash either.
+
+ // Abort after the first readyRead()
+ QNetworkRequest request("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile");
+ QNetworkReplyPtr reply;
+ reply = manager.get(request);
+ HttpAbortHelper replyHolder(reply);
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(reply->error(), QNetworkReply::OperationCanceledError);
+ QVERIFY(reply->isFinished());
+
+ // Abort immediately after the get()
+ QNetworkReplyPtr reply2 = manager.get(request);
+ connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ reply2->abort();
+ QCOMPARE(reply2->error(), QNetworkReply::OperationCanceledError);
+ QVERIFY(reply2->isFinished());
+
+ // Abort after the finished()
+ QNetworkRequest request3("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
+ QNetworkReplyPtr reply3 = manager.get(request3);
+ connect(reply3, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(reply3->isFinished());
+ reply3->abort();
+ QCOMPARE(reply3->error(), QNetworkReply::NoError);
+}
+
+void tst_QNetworkReply::dontInsertPartialContentIntoTheCache()
+{
+ QByteArray reply206 =
+ "HTTP/1.0 206\r\n"
+ "Connection: keep-alive\r\n"
+ "Content-Type: text/plain\r\n"
+ "Cache-control: no-cache\r\n"
+ "Content-Range: bytes 2-6/8\r\n"
+ "Content-length: 4\r\n"
+ "\r\n"
+ "load";
+
+ MiniHttpServer server(reply206);
+ server.doClose = false;
+
+ MySpyMemoryCache *memoryCache = new MySpyMemoryCache(&manager);
+ manager.setCache(memoryCache);
+
+ QUrl url = "http://localhost:" + QString::number(server.serverPort());
+ QNetworkRequest request(url);
+ request.setRawHeader("Range", "bytes=2-6");
+
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QVERIFY(server.totalConnections > 0);
+ QCOMPARE(reply->readAll().constData(), "load");
+ QCOMPARE(memoryCache->m_insertedUrls.count(), 0);
+}
+
+void tst_QNetworkReply::httpUserAgent()
+{
+ QByteArray response("HTTP/1.0 200 OK\r\n\r\n");
+ MiniHttpServer server(response);
+ server.doClose = true;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ request.setHeader(QNetworkRequest::UserAgentHeader, "abcDEFghi");
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(reply->isFinished());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QVERIFY(server.receivedData.contains("\r\nUser-Agent: abcDEFghi\r\n"));
+}
+
+
+// NOTE: This test must be last testcase in tst_qnetworkreply!
+void tst_QNetworkReply::parentingRepliesToTheApp()
+{
+ QNetworkRequest request (QUrl("http://" + QtNetworkSettings::serverName()));
+ manager.get(request)->setParent(this); // parent to this object
+ manager.get(request)->setParent(qApp); // parent to the app
+}
+
+QTEST_MAIN(tst_QNetworkReply)
+
+#include "tst_qnetworkreply.moc"
diff --git a/tests/auto/qnetworkrequest/.gitignore b/tests/auto/network/access/qnetworkrequest/.gitignore
index c814099c96..c814099c96 100644
--- a/tests/auto/qnetworkrequest/.gitignore
+++ b/tests/auto/network/access/qnetworkrequest/.gitignore
diff --git a/tests/auto/qnetworkrequest/qnetworkrequest.pro b/tests/auto/network/access/qnetworkrequest/qnetworkrequest.pro
index f96fd3bb02..f96fd3bb02 100644
--- a/tests/auto/qnetworkrequest/qnetworkrequest.pro
+++ b/tests/auto/network/access/qnetworkrequest/qnetworkrequest.pro
diff --git a/tests/auto/qnetworkrequest/tst_qnetworkrequest.cpp b/tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp
index 90527163e2..90527163e2 100644
--- a/tests/auto/qnetworkrequest/tst_qnetworkrequest.cpp
+++ b/tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp
diff --git a/tests/auto/network/bearer/bearer.pro b/tests/auto/network/bearer/bearer.pro
new file mode 100644
index 0000000000..872a818e4c
--- /dev/null
+++ b/tests/auto/network/bearer/bearer.pro
@@ -0,0 +1,6 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qnetworkconfiguration \
+ qnetworkconfigurationmanager \
+ qnetworksession \
+
diff --git a/tests/auto/qbearertestcommon.h b/tests/auto/network/bearer/qbearertestcommon.h
index c16c2016e8..c16c2016e8 100644
--- a/tests/auto/qbearertestcommon.h
+++ b/tests/auto/network/bearer/qbearertestcommon.h
diff --git a/tests/auto/qnetworkconfiguration/qnetworkconfiguration.pro b/tests/auto/network/bearer/qnetworkconfiguration/qnetworkconfiguration.pro
index ca463bdc99..ca463bdc99 100644
--- a/tests/auto/qnetworkconfiguration/qnetworkconfiguration.pro
+++ b/tests/auto/network/bearer/qnetworkconfiguration/qnetworkconfiguration.pro
diff --git a/tests/auto/qnetworkconfiguration/tst_qnetworkconfiguration.cpp b/tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp
index a8add01e06..a8add01e06 100644
--- a/tests/auto/qnetworkconfiguration/tst_qnetworkconfiguration.cpp
+++ b/tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp
diff --git a/tests/auto/qnetworkconfigurationmanager/qnetworkconfigurationmanager.pro b/tests/auto/network/bearer/qnetworkconfigurationmanager/qnetworkconfigurationmanager.pro
index d9c1d6bba6..d9c1d6bba6 100644
--- a/tests/auto/qnetworkconfigurationmanager/qnetworkconfigurationmanager.pro
+++ b/tests/auto/network/bearer/qnetworkconfigurationmanager/qnetworkconfigurationmanager.pro
diff --git a/tests/auto/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp b/tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp
index d29ef77347..d29ef77347 100644
--- a/tests/auto/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp
+++ b/tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp
diff --git a/tests/auto/qnetworksession/lackey/lackey.pro b/tests/auto/network/bearer/qnetworksession/lackey/lackey.pro
index 5db6743c65..5db6743c65 100644
--- a/tests/auto/qnetworksession/lackey/lackey.pro
+++ b/tests/auto/network/bearer/qnetworksession/lackey/lackey.pro
diff --git a/tests/auto/qnetworksession/lackey/main.cpp b/tests/auto/network/bearer/qnetworksession/lackey/main.cpp
index 73c52cdc8d..73c52cdc8d 100644
--- a/tests/auto/qnetworksession/lackey/main.cpp
+++ b/tests/auto/network/bearer/qnetworksession/lackey/main.cpp
diff --git a/tests/auto/qnetworksession/qnetworksession.pro b/tests/auto/network/bearer/qnetworksession/qnetworksession.pro
index 34761e53cf..34761e53cf 100644
--- a/tests/auto/qnetworksession/qnetworksession.pro
+++ b/tests/auto/network/bearer/qnetworksession/qnetworksession.pro
diff --git a/tests/auto/network/bearer/qnetworksession/test/test.pro b/tests/auto/network/bearer/qnetworksession/test/test.pro
new file mode 100644
index 0000000000..fff5770721
--- /dev/null
+++ b/tests/auto/network/bearer/qnetworksession/test/test.pro
@@ -0,0 +1,28 @@
+load(qttest_p4)
+SOURCES += tst_qnetworksession.cpp
+HEADERS += ../../qbearertestcommon.h
+
+QT = core network
+
+TARGET = tst_qnetworksession
+CONFIG(debug_and_release) {
+ CONFIG(debug, debug|release) {
+ DESTDIR = ../debug
+ } else {
+ DESTDIR = ../release
+ }
+} else {
+ DESTDIR = ..
+}
+
+symbian {
+ TARGET.CAPABILITY = NetworkServices NetworkControl ReadUserData PowerMgmt
+}
+
+maemo6|maemo5 {
+ CONFIG += link_pkgconfig
+
+ PKGCONFIG += conninet
+}
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qnetworksession/test/tst_qnetworksession.cpp b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp
index 0c35a552f6..0c35a552f6 100644
--- a/tests/auto/qnetworksession/test/tst_qnetworksession.cpp
+++ b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp
diff --git a/tests/auto/network/kernel/kernel.pro b/tests/auto/network/kernel/kernel.pro
new file mode 100644
index 0000000000..d1c901d529
--- /dev/null
+++ b/tests/auto/network/kernel/kernel.pro
@@ -0,0 +1,14 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qhostinfo \
+# qnetworkproxyfactory \ # Uses a hardcoded proxy configuration
+ qauthenticator \
+ qnetworkproxy \
+ qnetworkinterface \
+ qnetworkaddressentry \
+ qhostaddress \
+
+!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ qauthenticator \
+ qhostinfo \
+
diff --git a/tests/auto/qauthenticator/qauthenticator.pro b/tests/auto/network/kernel/qauthenticator/qauthenticator.pro
index 8ddb13b0df..8ddb13b0df 100644
--- a/tests/auto/qauthenticator/qauthenticator.pro
+++ b/tests/auto/network/kernel/qauthenticator/qauthenticator.pro
diff --git a/tests/auto/qauthenticator/tst_qauthenticator.cpp b/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp
index ae78e10440..ae78e10440 100644
--- a/tests/auto/qauthenticator/tst_qauthenticator.cpp
+++ b/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp
diff --git a/tests/auto/qhostaddress/.gitignore b/tests/auto/network/kernel/qhostaddress/.gitignore
index dc39ac12d4..dc39ac12d4 100644
--- a/tests/auto/qhostaddress/.gitignore
+++ b/tests/auto/network/kernel/qhostaddress/.gitignore
diff --git a/tests/auto/qhostaddress/qhostaddress.pro b/tests/auto/network/kernel/qhostaddress/qhostaddress.pro
index 7bcbfb0165..7bcbfb0165 100644
--- a/tests/auto/qhostaddress/qhostaddress.pro
+++ b/tests/auto/network/kernel/qhostaddress/qhostaddress.pro
diff --git a/tests/auto/qhostaddress/tst_qhostaddress.cpp b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
index b20e07be03..b20e07be03 100644
--- a/tests/auto/qhostaddress/tst_qhostaddress.cpp
+++ b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
diff --git a/tests/auto/qhostinfo/.gitignore b/tests/auto/network/kernel/qhostinfo/.gitignore
index 432954e8d8..432954e8d8 100644
--- a/tests/auto/qhostinfo/.gitignore
+++ b/tests/auto/network/kernel/qhostinfo/.gitignore
diff --git a/tests/auto/qhostinfo/qhostinfo.pro b/tests/auto/network/kernel/qhostinfo/qhostinfo.pro
index 77ce1867d1..77ce1867d1 100644
--- a/tests/auto/qhostinfo/qhostinfo.pro
+++ b/tests/auto/network/kernel/qhostinfo/qhostinfo.pro
diff --git a/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp b/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp
new file mode 100644
index 0000000000..58b51bcb69
--- /dev/null
+++ b/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp
@@ -0,0 +1,665 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+// When using WinSock2 on Windows, it's the first thing that can be included
+// (except qglobal.h), or else you'll get tons of compile errors
+#include <qglobal.h>
+
+// MinGW doesn't provide getaddrinfo(), so we test for Q_OS_WIN
+// and Q_CC_GNU, which indirectly tells us whether we're using MinGW.
+#if defined(Q_OS_WIN) && defined(Q_CC_GNU)
+# define QT_NO_GETADDRINFO
+#endif
+
+#if defined(Q_OS_WIN) && !defined(QT_NO_GETADDRINFO)
+# include <winsock2.h>
+# include <ws2tcpip.h>
+#endif
+
+#include <QtTest/QtTest>
+#include <qcoreapplication.h>
+#include <QDebug>
+#include <QTcpSocket>
+#include <private/qthread_p.h>
+#include <QTcpServer>
+
+#ifndef QT_NO_BEARERMANAGEMENT
+#include <QtNetwork/qnetworkconfigmanager.h>
+#include <QtNetwork/qnetworkconfiguration.h>
+#include <QtNetwork/qnetworksession.h>
+#endif
+
+#include <time.h>
+#include <qlibrary.h>
+#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
+#include <windows.h>
+#else
+#include <unistd.h>
+#include <signal.h>
+#endif
+
+#include <qhostinfo.h>
+#include "private/qhostinfo_p.h"
+
+#if !defined(QT_NO_GETADDRINFO)
+# if !defined(Q_OS_WINCE)
+# include <sys/types.h>
+# else
+# include <types.h>
+# endif
+# if defined(Q_OS_UNIX)
+# include <sys/socket.h>
+# endif
+# if !defined(Q_OS_WIN)
+# include <netdb.h>
+# endif
+#endif
+
+#include "../../../network-settings.h"
+#include "../../../../shared/util.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+const char * const lupinellaIp = "10.3.4.6";
+
+
+class tst_QHostInfo : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QHostInfo();
+ virtual ~tst_QHostInfo();
+
+
+public slots:
+ void init();
+ void cleanup();
+ void initTestCase();
+
+private slots:
+ void getSetCheck();
+ void staticInformation();
+ void lookupIPv4_data();
+ void lookupIPv4();
+ void lookupIPv6_data();
+ void lookupIPv6();
+ void reverseLookup_data();
+ void reverseLookup();
+
+ void blockingLookup_data();
+ void blockingLookup();
+
+ void raceCondition();
+ void threadSafety();
+ void threadSafetyAsynchronousAPI();
+
+ void multipleSameLookups();
+ void multipleDifferentLookups_data();
+ void multipleDifferentLookups();
+
+ void cache();
+
+ void abortHostLookup();
+ void abortHostLookupInDifferentThread();
+protected slots:
+ void resultsReady(const QHostInfo &);
+
+private:
+ bool ipv6LookupsAvailable;
+ bool ipv6Available;
+ bool lookupDone;
+ int lookupsDoneCounter;
+ QHostInfo lookupResults;
+#ifndef QT_NO_BEARERMANAGEMENT
+ QNetworkConfigurationManager *netConfMan;
+ QNetworkConfiguration networkConfiguration;
+ QScopedPointer<QNetworkSession> networkSession;
+#endif
+};
+
+// Testing get/set functions
+void tst_QHostInfo::getSetCheck()
+{
+ QHostInfo obj1;
+ // HostInfoError QHostInfo::error()
+ // void QHostInfo::setError(HostInfoError)
+ obj1.setError(QHostInfo::HostInfoError(0));
+ QCOMPARE(QHostInfo::HostInfoError(0), obj1.error());
+ obj1.setError(QHostInfo::HostInfoError(1));
+ QCOMPARE(QHostInfo::HostInfoError(1), obj1.error());
+
+ // int QHostInfo::lookupId()
+ // void QHostInfo::setLookupId(int)
+ obj1.setLookupId(0);
+ QCOMPARE(0, obj1.lookupId());
+ obj1.setLookupId(INT_MIN);
+ QCOMPARE(INT_MIN, obj1.lookupId());
+ obj1.setLookupId(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.lookupId());
+}
+
+void tst_QHostInfo::staticInformation()
+{
+ qDebug() << "Hostname:" << QHostInfo::localHostName();
+ qDebug() << "Domain name:" << QHostInfo::localDomainName();
+}
+
+tst_QHostInfo::tst_QHostInfo()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+tst_QHostInfo::~tst_QHostInfo()
+{
+}
+
+void tst_QHostInfo::initTestCase()
+{
+#ifndef QT_NO_BEARERMANAGEMENT
+ //start the default network
+ netConfMan = new QNetworkConfigurationManager(this);
+ networkConfiguration = netConfMan->defaultConfiguration();
+ networkSession.reset(new QNetworkSession(networkConfiguration));
+ if (!networkSession->isOpen()) {
+ networkSession->open();
+ QVERIFY(networkSession->waitForOpened(30000));
+ }
+#endif
+
+#ifdef Q_OS_SYMBIAN
+ ipv6Available = true;
+ ipv6LookupsAvailable = true;
+#else
+ ipv6Available = false;
+ ipv6LookupsAvailable = false;
+
+ QTcpServer server;
+ if (server.listen(QHostAddress("::1"))) {
+ // We have IPv6 support
+ ipv6Available = true;
+ }
+
+#if !defined(QT_NO_GETADDRINFO)
+ // check if the system getaddrinfo can do IPv6 lookups
+ struct addrinfo hint, *result = 0;
+ memset(&hint, 0, sizeof hint);
+ hint.ai_family = AF_UNSPEC;
+# ifdef AI_ADDRCONFIG
+ hint.ai_flags = AI_ADDRCONFIG;
+# endif
+
+ int res = getaddrinfo("::1", "80", &hint, &result);
+ if (res == 0) {
+ // this test worked
+ freeaddrinfo(result);
+ res = getaddrinfo("ipv6-test.dev.troll.no", "80", &hint, &result);
+ if (res == 0 && result != 0 && result->ai_family != AF_INET) {
+ freeaddrinfo(result);
+ ipv6LookupsAvailable = true;
+ }
+ }
+#endif
+#endif
+
+ // run each testcase with and without test enabled
+ QTest::addColumn<bool>("cache");
+ QTest::newRow("WithCache") << true;
+ QTest::newRow("WithoutCache") << false;
+}
+
+void tst_QHostInfo::init()
+{
+ // delete the cache so inidividual testcase results are independent from each other
+ qt_qhostinfo_clear_cache();
+
+ QFETCH_GLOBAL(bool, cache);
+ qt_qhostinfo_enable_cache(cache);
+}
+
+void tst_QHostInfo::cleanup()
+{
+}
+
+void tst_QHostInfo::lookupIPv4_data()
+{
+ QTest::addColumn<QString>("hostname");
+ QTest::addColumn<QString>("addresses");
+ QTest::addColumn<int>("err");
+
+ // Test server lookup
+ QTest::newRow("lookup_01") << QtNetworkSettings::serverName() << QtNetworkSettings::serverIP().toString() << int(QHostInfo::NoError);
+ QTest::newRow("empty") << "" << "" << int(QHostInfo::HostNotFound);
+
+ QTest::newRow("single_ip4") << "lupinella.troll.no" << lupinellaIp << int(QHostInfo::NoError);
+ QTest::newRow("multiple_ip4") << "multi.dev.troll.no" << "1.2.3.4 1.2.3.5 10.3.3.31" << int(QHostInfo::NoError);
+ QTest::newRow("literal_ip4") << lupinellaIp << lupinellaIp << int(QHostInfo::NoError);
+
+ QTest::newRow("notfound") << "this-name-does-not-exist-hopefully." << "" << int(QHostInfo::HostNotFound);
+
+ QTest::newRow("idn-ace") << "xn--alqualond-34a.troll.no" << "10.3.3.55" << int(QHostInfo::NoError);
+ QTest::newRow("idn-unicode") << QString::fromLatin1("alqualond\353.troll.no") << "10.3.3.55" << int(QHostInfo::NoError);
+}
+
+void tst_QHostInfo::lookupIPv4()
+{
+ QFETCH(QString, hostname);
+ QFETCH(int, err);
+ QFETCH(QString, addresses);
+
+ lookupDone = false;
+ QHostInfo::lookupHost(hostname, this, SLOT(resultsReady(const QHostInfo&)));
+
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(lookupDone);
+
+ if ((int)lookupResults.error() != (int)err) {
+ qWarning() << hostname << "=>" << lookupResults.errorString();
+ }
+ QCOMPARE((int)lookupResults.error(), (int)err);
+
+ QStringList tmp;
+ for (int i = 0; i < lookupResults.addresses().count(); ++i)
+ tmp.append(lookupResults.addresses().at(i).toString());
+ tmp.sort();
+
+ QStringList expected = addresses.split(' ');
+ expected.sort();
+
+ QCOMPARE(tmp.join(" "), expected.join(" "));
+}
+
+void tst_QHostInfo::lookupIPv6_data()
+{
+ QTest::addColumn<QString>("hostname");
+ QTest::addColumn<QString>("addresses");
+ QTest::addColumn<int>("err");
+
+ QTest::newRow("ipv6-net") << "www.ipv6-net.org" << "62.93.217.177 2001:618:1401::4" << int(QHostInfo::NoError);
+ QTest::newRow("ipv6-test") << "ipv6-test.dev.troll.no" << "2001:638:a00:2::2" << int(QHostInfo::NoError);
+ QTest::newRow("dns6-test") << "dns6-test-dev.troll.no" << "2001:470:1f01:115::10" << int(QHostInfo::NoError);
+ QTest::newRow("multi-dns6") << "multi-dns6-test-dev.troll.no" << "2001:470:1f01:115::11 2001:470:1f01:115::12" << int(QHostInfo::NoError);
+ QTest::newRow("dns46-test") << "dns46-test-dev.troll.no" << "10.3.4.90 2001:470:1f01:115::13" << int(QHostInfo::NoError);
+
+ // avoid using real IPv6 addresses here because this will do a DNS query
+ // real addresses are between 2000:: and 3fff:ffff:ffff:ffff:ffff:ffff:ffff
+ QTest::newRow("literal_ip6") << "f001:6b0:1:ea:202:a5ff:fecd:13a6" << "f001:6b0:1:ea:202:a5ff:fecd:13a6" << int(QHostInfo::NoError);
+ QTest::newRow("literal_shortip6") << "f001:618:1401::4" << "f001:618:1401::4" << int(QHostInfo::NoError);
+}
+
+void tst_QHostInfo::lookupIPv6()
+{
+ QFETCH(QString, hostname);
+ QFETCH(int, err);
+ QFETCH(QString, addresses);
+
+ if (!ipv6LookupsAvailable)
+ QSKIP("This platform does not support IPv6 lookups", SkipAll);
+
+ lookupDone = false;
+ QHostInfo::lookupHost(hostname, this, SLOT(resultsReady(const QHostInfo&)));
+
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(lookupDone);
+
+ QCOMPARE((int)lookupResults.error(), (int)err);
+
+ QStringList tmp;
+ for (int i = 0; i < lookupResults.addresses().count(); ++i)
+ tmp.append(lookupResults.addresses().at(i).toString());
+ tmp.sort();
+
+ QStringList expected = addresses.split(' ');
+ expected.sort();
+
+ QCOMPARE(tmp.join(" ").toLower(), expected.join(" ").toLower());
+}
+
+void tst_QHostInfo::reverseLookup_data()
+{
+ QTest::addColumn<QString>("address");
+ QTest::addColumn<QStringList>("hostNames");
+ QTest::addColumn<int>("err");
+
+ QTest::newRow("trolltech.com") << QString("62.70.27.69") << QStringList(QString("diverse.troll.no")) << 0;
+
+ // ### Use internal DNS instead. Discussed with Andreas.
+ //QTest::newRow("classical.hexago.com") << QString("2001:5c0:0:2::24") << QStringList(QString("classical.hexago.com")) << 0;
+ QTest::newRow("gitorious.org") << QString("87.238.52.168") << QStringList(QString("gitorious.org")) << 0;
+ QTest::newRow("bogus-name") << QString("1::2::3::4") << QStringList() << 1;
+}
+
+void tst_QHostInfo::reverseLookup()
+{
+ QFETCH(QString, address);
+ QFETCH(QStringList, hostNames);
+ QFETCH(int, err);
+
+ if (!ipv6LookupsAvailable && hostNames.contains("classical.hexago.com")) {
+ QSKIP("IPv6 lookups are not supported on this platform", SkipSingle);
+ }
+#if defined(Q_OS_HPUX) && defined(__ia64)
+ if (hostNames.contains("classical.hexago.com"))
+ QSKIP("HP-UX 11i does not support IPv6 reverse lookups.", SkipSingle);
+#endif
+
+ QHostInfo info = QHostInfo::fromName(address);
+
+ if (err == 0) {
+ QVERIFY(hostNames.contains(info.hostName()));
+ QCOMPARE(info.addresses().first(), QHostAddress(address));
+ } else {
+ QCOMPARE(info.hostName(), address);
+ QCOMPARE(info.error(), QHostInfo::HostNotFound);
+ }
+
+}
+
+void tst_QHostInfo::blockingLookup_data()
+{
+ lookupIPv4_data();
+ if (ipv6LookupsAvailable)
+ lookupIPv6_data();
+}
+
+void tst_QHostInfo::blockingLookup()
+{
+ QFETCH(QString, hostname);
+ QFETCH(int, err);
+ QFETCH(QString, addresses);
+
+ QHostInfo hostInfo = QHostInfo::fromName(hostname);
+ QStringList tmp;
+ for (int i = 0; i < hostInfo.addresses().count(); ++i)
+ tmp.append(hostInfo.addresses().at(i).toString());
+ tmp.sort();
+
+ if ((int)hostInfo.error() != (int)err) {
+ qWarning() << hostname << "=>" << lookupResults.errorString();
+ }
+ QCOMPARE((int)hostInfo.error(), (int)err);
+
+ QStringList expected = addresses.split(' ');
+ expected.sort();
+
+ QCOMPARE(tmp.join(" ").toUpper(), expected.join(" ").toUpper());
+}
+
+void tst_QHostInfo::raceCondition()
+{
+ for (int i = 0; i < 1000; ++i) {
+ QTcpSocket socket;
+ socket.connectToHost("notavalidname.troll.no", 80);
+ }
+}
+
+class LookupThread : public QThread
+{
+protected:
+ inline void run()
+ {
+ QHostInfo info = QHostInfo::fromName("qt.nokia.com");
+ QCOMPARE(info.error(), QHostInfo::NoError);
+ QVERIFY(info.addresses().count() > 0);
+ QCOMPARE(info.addresses().at(0).toString(), QString("87.238.50.178"));
+ }
+};
+
+void tst_QHostInfo::threadSafety()
+{
+ const int nattempts = 5;
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ const int runs = 10;
+#else
+ const int runs = 100;
+#endif
+ LookupThread thr[nattempts];
+ for (int j = 0; j < runs; ++j) {
+ for (int i = 0; i < nattempts; ++i)
+ thr[i].start();
+ for (int k = nattempts - 1; k >= 0; --k)
+ thr[k].wait();
+ }
+}
+
+class LookupReceiver : public QObject
+{
+ Q_OBJECT
+public slots:
+ void start();
+ void resultsReady(const QHostInfo&);
+public:
+ QHostInfo result;
+ int numrequests;
+};
+
+void LookupReceiver::start()
+{
+ for (int i=0;i<numrequests;i++)
+ QHostInfo::lookupHost(QString("qt.nokia.com"), this, SLOT(resultsReady(const QHostInfo&)));
+}
+
+void LookupReceiver::resultsReady(const QHostInfo &info)
+{
+ result = info;
+ numrequests--;
+ if (numrequests == 0 || info.error() != QHostInfo::NoError)
+ QThread::currentThread()->quit();
+}
+
+void tst_QHostInfo::threadSafetyAsynchronousAPI()
+{
+ const int nattempts = 10;
+ const int lookupsperthread = 10;
+ QList<QThread*> threads;
+ QList<LookupReceiver*> receivers;
+ for (int i = 0; i < nattempts; ++i) {
+ QThread* thread = new QThread;
+ LookupReceiver* receiver = new LookupReceiver;
+ receiver->numrequests = lookupsperthread;
+ receivers.append(receiver);
+ receiver->moveToThread(thread);
+ connect(thread, SIGNAL(started()), receiver, SLOT(start()));
+ thread->start();
+ threads.append(thread);
+ }
+ for (int k = threads.count() - 1; k >= 0; --k)
+ QVERIFY(threads.at(k)->wait(60000));
+ foreach (LookupReceiver* receiver, receivers) {
+ QCOMPARE(receiver->result.error(), QHostInfo::NoError);
+ QCOMPARE(receiver->result.addresses().at(0).toString(), QString("87.238.50.178"));
+ QCOMPARE(receiver->numrequests, 0);
+ }
+}
+
+// this test is for the multi-threaded QHostInfo rewrite. It is about getting results at all,
+// not about getting correct IPs
+void tst_QHostInfo::multipleSameLookups()
+{
+ const int COUNT = 10;
+ lookupsDoneCounter = 0;
+
+ for (int i = 0; i < COUNT; i++)
+ QHostInfo::lookupHost("localhost", this, SLOT(resultsReady(const QHostInfo)));
+
+ QElapsedTimer timer;
+ timer.start();
+ while (timer.elapsed() < 10000 && lookupsDoneCounter < COUNT) {
+ QTestEventLoop::instance().enterLoop(2);
+ }
+ QCOMPARE(lookupsDoneCounter, COUNT);
+}
+
+// this test is for the multi-threaded QHostInfo rewrite. It is about getting results at all,
+// not about getting correct IPs
+void tst_QHostInfo::multipleDifferentLookups_data()
+{
+ QTest::addColumn<int>("repeats");
+ QTest::newRow("1") << 1;
+ QTest::newRow("2") << 2;
+ QTest::newRow("5") << 5;
+ QTest::newRow("10") << 10;
+}
+
+void tst_QHostInfo::multipleDifferentLookups()
+{
+ QStringList hostnameList;
+ hostnameList << "www.ovi.com" << "www.nokia.com" << "qt.nokia.com" << "www.trolltech.com" << "troll.no"
+ << "www.qtcentre.org" << "forum.nokia.com" << "www.nokia.com" << "wiki.forum.nokia.com"
+ << "www.nokia.com" << "nokia.de" << "127.0.0.1" << "----";
+
+ QFETCH(int, repeats);
+ const int COUNT = hostnameList.size();
+ lookupsDoneCounter = 0;
+
+ for (int i = 0; i < hostnameList.size(); i++)
+ for (int j = 0; j < repeats; ++j)
+ QHostInfo::lookupHost(hostnameList.at(i), this, SLOT(resultsReady(const QHostInfo)));
+
+ QElapsedTimer timer;
+ timer.start();
+ while (timer.elapsed() < 60000 && lookupsDoneCounter < repeats*COUNT) {
+ QTestEventLoop::instance().enterLoop(2);
+ //qDebug() << "t:" << timer.elapsed();
+ }
+ QCOMPARE(lookupsDoneCounter, repeats*COUNT);
+}
+
+void tst_QHostInfo::cache()
+{
+ QFETCH_GLOBAL(bool, cache);
+ if (!cache)
+ return; // test makes only sense when cache enabled
+
+ // reset slot counter
+ lookupsDoneCounter = 0;
+
+ // lookup once, wait in event loop, result should not come directly.
+ bool valid = true;
+ int id = -1;
+ QHostInfo result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid, &id);
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(valid == false);
+ QVERIFY(result.addresses().isEmpty());
+
+ // loopkup second time, result should come directly
+ valid = false;
+ result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid, &id);
+ QVERIFY(valid == true);
+ QVERIFY(!result.addresses().isEmpty());
+
+ // clear the cache
+ qt_qhostinfo_clear_cache();
+
+ // lookup third time, result should not come directly.
+ valid = true;
+ result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid, &id);
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(valid == false);
+ QVERIFY(result.addresses().isEmpty());
+
+ // the slot should have been called 2 times.
+ QCOMPARE(lookupsDoneCounter, 2);
+}
+
+void tst_QHostInfo::resultsReady(const QHostInfo &hi)
+{
+ lookupDone = true;
+ lookupResults = hi;
+ lookupsDoneCounter++;
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QHostInfo::abortHostLookup()
+{
+ //reset counter
+ lookupsDoneCounter = 0;
+ bool valid = false;
+ int id = -1;
+ QHostInfo result = qt_qhostinfo_lookup("qt.nokia.com", this, SLOT(resultsReady(QHostInfo)), &valid, &id);
+ QVERIFY(!valid);
+ //it is assumed that the DNS request/response in the backend is slower than it takes to call abort
+ QHostInfo::abortHostLookup(id);
+ QTestEventLoop::instance().enterLoop(5);
+ QCOMPARE(lookupsDoneCounter, 0);
+}
+
+class LookupAborter : public QObject
+{
+ Q_OBJECT
+public slots:
+ void abort()
+ {
+ QHostInfo::abortHostLookup(id);
+ QThread::currentThread()->quit();
+ }
+public:
+ int id;
+};
+
+void tst_QHostInfo::abortHostLookupInDifferentThread()
+{
+ //reset counter
+ lookupsDoneCounter = 0;
+ bool valid = false;
+ int id = -1;
+ QHostInfo result = qt_qhostinfo_lookup("qt.nokia.com", this, SLOT(resultsReady(QHostInfo)), &valid, &id);
+ QVERIFY(!valid);
+ QThread thread;
+ LookupAborter aborter;
+ aborter.id = id;
+ aborter.moveToThread(&thread);
+ connect(&thread, SIGNAL(started()), &aborter, SLOT(abort()));
+ //it is assumed that the DNS request/response in the backend is slower than it takes to schedule the thread and call abort
+ thread.start();
+ QVERIFY(thread.wait(5000));
+ QTestEventLoop::instance().enterLoop(5);
+ QCOMPARE(lookupsDoneCounter, 0);
+}
+
+QTEST_MAIN(tst_QHostInfo)
+#include "tst_qhostinfo.moc"
diff --git a/tests/auto/qnetworkaddressentry/.gitignore b/tests/auto/network/kernel/qnetworkaddressentry/.gitignore
index 375dbcfd0f..375dbcfd0f 100644
--- a/tests/auto/qnetworkaddressentry/.gitignore
+++ b/tests/auto/network/kernel/qnetworkaddressentry/.gitignore
diff --git a/tests/auto/qnetworkaddressentry/qnetworkaddressentry.pro b/tests/auto/network/kernel/qnetworkaddressentry/qnetworkaddressentry.pro
index 885dbf796c..885dbf796c 100644
--- a/tests/auto/qnetworkaddressentry/qnetworkaddressentry.pro
+++ b/tests/auto/network/kernel/qnetworkaddressentry/qnetworkaddressentry.pro
diff --git a/tests/auto/qnetworkaddressentry/tst_qnetworkaddressentry.cpp b/tests/auto/network/kernel/qnetworkaddressentry/tst_qnetworkaddressentry.cpp
index 42b9af8dd3..42b9af8dd3 100644
--- a/tests/auto/qnetworkaddressentry/tst_qnetworkaddressentry.cpp
+++ b/tests/auto/network/kernel/qnetworkaddressentry/tst_qnetworkaddressentry.cpp
diff --git a/tests/auto/qnetworkinterface/.gitignore b/tests/auto/network/kernel/qnetworkinterface/.gitignore
index 237bc6d0db..237bc6d0db 100644
--- a/tests/auto/qnetworkinterface/.gitignore
+++ b/tests/auto/network/kernel/qnetworkinterface/.gitignore
diff --git a/tests/auto/qnetworkinterface/qnetworkinterface.pro b/tests/auto/network/kernel/qnetworkinterface/qnetworkinterface.pro
index 1c5feee3f2..1c5feee3f2 100644
--- a/tests/auto/qnetworkinterface/qnetworkinterface.pro
+++ b/tests/auto/network/kernel/qnetworkinterface/qnetworkinterface.pro
diff --git a/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp b/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp
new file mode 100644
index 0000000000..7a2f0e578e
--- /dev/null
+++ b/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp
@@ -0,0 +1,241 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qnetworkinterface.h>
+#include <qtcpsocket.h>
+#include <QNetworkConfigurationManager>
+#include <QNetworkSession>
+#include "../../../network-settings.h"
+
+//TESTED_FILES=qnetworkinterface.cpp qnetworkinterface.h qnetworkinterface_unix.cpp qnetworkinterface_win.cpp
+
+class tst_QNetworkInterface : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QNetworkInterface();
+ virtual ~tst_QNetworkInterface();
+
+private slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void dump();
+ void loopbackIPv4();
+ void loopbackIPv6();
+ void localAddress();
+ void interfaceFromXXX();
+ void copyInvalidInterface();
+
+private:
+#ifndef QT_NO_BEARER_MANAGEMENT
+ QNetworkConfigurationManager *netConfMan;
+ QNetworkConfiguration networkConfiguration;
+ QScopedPointer<QNetworkSession> networkSession;
+#endif
+};
+
+tst_QNetworkInterface::tst_QNetworkInterface()
+{
+}
+
+tst_QNetworkInterface::~tst_QNetworkInterface()
+{
+}
+
+void tst_QNetworkInterface::initTestCase()
+{
+#ifndef QT_NO_BEARERMANAGEMENT
+ netConfMan = new QNetworkConfigurationManager(this);
+ networkConfiguration = netConfMan->defaultConfiguration();
+ networkSession.reset(new QNetworkSession(networkConfiguration));
+ if (!networkSession->isOpen()) {
+ networkSession->open();
+ QVERIFY(networkSession->waitForOpened(30000));
+ }
+#endif
+}
+
+void tst_QNetworkInterface::cleanupTestCase()
+{
+#ifndef QT_NO_BEARERMANAGEMENT
+ if (networkSession && networkSession->isOpen()) {
+ networkSession->close();
+ }
+#endif
+}
+
+void tst_QNetworkInterface::dump()
+{
+ // This is for manual testing:
+ QList<QNetworkInterface> allInterfaces = QNetworkInterface::allInterfaces();
+ foreach (const QNetworkInterface &i, allInterfaces) {
+ QString flags;
+ if (i.flags() & QNetworkInterface::IsUp) flags += "Up,";
+ if (i.flags() & QNetworkInterface::IsRunning) flags += "Running,";
+ if (i.flags() & QNetworkInterface::CanBroadcast) flags += "Broadcast,";
+ if (i.flags() & QNetworkInterface::IsLoopBack) flags += "Loopback,";
+ if (i.flags() & QNetworkInterface::IsPointToPoint) flags += "PointToPoint,";
+ if (i.flags() & QNetworkInterface::CanMulticast) flags += "Multicast,";
+ flags.chop(1); // drop last comma
+
+ QString friendlyName = i.humanReadableName();
+ if (friendlyName != i.name()) {
+ friendlyName.prepend('(');
+ friendlyName.append(')');
+ } else {
+ friendlyName.clear();
+ }
+ qDebug() << "Interface: " << i.name() << qPrintable(friendlyName);
+ QVERIFY(i.isValid());
+
+ qDebug() << " index: " << i.index();
+ qDebug() << " flags: " << qPrintable(flags);
+ qDebug() << " hw address:" << qPrintable(i.hardwareAddress());
+
+ int count = 0;
+ foreach (const QNetworkAddressEntry &e, i.addressEntries()) {
+ QDebug s = qDebug();
+ s.nospace() << " address "
+ << qSetFieldWidth(2) << count++ << qSetFieldWidth(0);
+ s.nospace() << ": " << qPrintable(e.ip().toString());
+ if (!e.netmask().isNull())
+ s.nospace() << '/' << e.prefixLength()
+ << " (" << qPrintable(e.netmask().toString()) << ")";
+ if (!e.broadcast().isNull())
+ s.nospace() << " broadcast " << qPrintable(e.broadcast().toString());
+ }
+ }
+}
+
+void tst_QNetworkInterface::loopbackIPv4()
+{
+ QList<QHostAddress> all = QNetworkInterface::allAddresses();
+ QVERIFY(all.contains(QHostAddress(QHostAddress::LocalHost)));
+}
+
+void tst_QNetworkInterface::loopbackIPv6()
+{
+ QList<QHostAddress> all = QNetworkInterface::allAddresses();
+
+ bool loopbackfound = false;
+ bool anyIPv6 = false;
+ foreach (QHostAddress addr, all)
+ if (addr == QHostAddress::LocalHostIPv6) {
+ loopbackfound = true;
+ anyIPv6 = true;
+ break;
+ } else if (addr.protocol() == QAbstractSocket::IPv6Protocol)
+ anyIPv6 = true;
+
+ QVERIFY(!anyIPv6 || loopbackfound);
+}
+
+void tst_QNetworkInterface::localAddress()
+{
+ QTcpSocket socket;
+ socket.connectToHost(QtNetworkSettings::serverName(), 80);
+ QVERIFY(socket.waitForConnected(5000));
+
+ QHostAddress local = socket.localAddress();
+
+ // make Apache happy on fluke
+ socket.write("GET / HTTP/1.0\r\n\r\n");
+ socket.waitForBytesWritten(1000);
+ socket.close();
+
+ // test that we can find the address that QTcpSocket reported
+ QList<QHostAddress> all = QNetworkInterface::allAddresses();
+ QVERIFY(all.contains(local));
+}
+
+void tst_QNetworkInterface::interfaceFromXXX()
+{
+ QList<QNetworkInterface> allInterfaces = QNetworkInterface::allInterfaces();
+
+ foreach (QNetworkInterface iface, allInterfaces) {
+ QVERIFY(QNetworkInterface::interfaceFromName(iface.name()).isValid());
+ foreach (QNetworkAddressEntry entry, iface.addressEntries()) {
+ QVERIFY(!entry.ip().isNull());
+
+ if (!entry.netmask().isNull()) {
+ QCOMPARE(entry.netmask().protocol(), entry.ip().protocol());
+
+ // if the netmask is known, the broadcast is known
+ // but only for IPv4 (there is no such thing as broadcast in IPv6)
+ if (entry.ip().protocol() == QAbstractSocket::IPv4Protocol) {
+ QVERIFY(!entry.broadcast().isNull());
+
+ // verify that the broadcast address is correct
+ quint32 ip = entry.ip().toIPv4Address();
+ quint32 mask = entry.netmask().toIPv4Address();
+ quint32 bcast = entry.broadcast().toIPv4Address();
+
+ QCOMPARE(bcast, ip | ~mask);
+ }
+ }
+
+ if (!entry.broadcast().isNull())
+ QCOMPARE(entry.broadcast().protocol(), entry.ip().protocol());
+ }
+ }
+}
+
+void tst_QNetworkInterface::copyInvalidInterface()
+{
+ // Force a copy of an interfaces that isn't likely to exist
+ QNetworkInterface i = QNetworkInterface::interfaceFromName("plopp");
+ QVERIFY(!i.isValid());
+
+ QCOMPARE(i.index(), 0);
+ QVERIFY(i.name().isEmpty());
+ QVERIFY(i.humanReadableName().isEmpty());
+ QVERIFY(i.hardwareAddress().isEmpty());
+ QCOMPARE(int(i.flags()), 0);
+ QVERIFY(i.addressEntries().isEmpty());
+}
+
+QTEST_MAIN(tst_QNetworkInterface)
+#include "tst_qnetworkinterface.moc"
diff --git a/tests/auto/qnetworkproxy/.gitignore b/tests/auto/network/kernel/qnetworkproxy/.gitignore
index 74dcafa759..74dcafa759 100644
--- a/tests/auto/qnetworkproxy/.gitignore
+++ b/tests/auto/network/kernel/qnetworkproxy/.gitignore
diff --git a/tests/auto/qnetworkproxy/qnetworkproxy.pro b/tests/auto/network/kernel/qnetworkproxy/qnetworkproxy.pro
index fc0a216a15..fc0a216a15 100644
--- a/tests/auto/qnetworkproxy/qnetworkproxy.pro
+++ b/tests/auto/network/kernel/qnetworkproxy/qnetworkproxy.pro
diff --git a/tests/auto/qnetworkproxy/tst_qnetworkproxy.cpp b/tests/auto/network/kernel/qnetworkproxy/tst_qnetworkproxy.cpp
index 884ed0573f..884ed0573f 100644
--- a/tests/auto/qnetworkproxy/tst_qnetworkproxy.cpp
+++ b/tests/auto/network/kernel/qnetworkproxy/tst_qnetworkproxy.cpp
diff --git a/tests/auto/qnetworkproxyfactory/.gitignore b/tests/auto/network/kernel/qnetworkproxyfactory/.gitignore
index 9be26bbda1..9be26bbda1 100644
--- a/tests/auto/qnetworkproxyfactory/.gitignore
+++ b/tests/auto/network/kernel/qnetworkproxyfactory/.gitignore
diff --git a/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro b/tests/auto/network/kernel/qnetworkproxyfactory/qnetworkproxyfactory.pro
index 17ad403ba7..17ad403ba7 100644
--- a/tests/auto/qnetworkproxyfactory/qnetworkproxyfactory.pro
+++ b/tests/auto/network/kernel/qnetworkproxyfactory/qnetworkproxyfactory.pro
diff --git a/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp b/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp
index 0540bc8408..0540bc8408 100644
--- a/tests/auto/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp
+++ b/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp
diff --git a/tests/auto/network/network.pro b/tests/auto/network/network.pro
new file mode 100644
index 0000000000..3eafd7df70
--- /dev/null
+++ b/tests/auto/network/network.pro
@@ -0,0 +1,8 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ access \
+ bearer \
+ kernel \
+ ssl \
+ socket \
+
diff --git a/tests/auto/platformsocketengine/.gitignore b/tests/auto/network/socket/platformsocketengine/.gitignore
index afe93891ff..afe93891ff 100644
--- a/tests/auto/platformsocketengine/.gitignore
+++ b/tests/auto/network/socket/platformsocketengine/.gitignore
diff --git a/tests/auto/platformsocketengine/platformsocketengine.pri b/tests/auto/network/socket/platformsocketengine/platformsocketengine.pri
index 15f31fdbb5..15f31fdbb5 100644
--- a/tests/auto/platformsocketengine/platformsocketengine.pri
+++ b/tests/auto/network/socket/platformsocketengine/platformsocketengine.pri
diff --git a/tests/auto/platformsocketengine/platformsocketengine.pro b/tests/auto/network/socket/platformsocketengine/platformsocketengine.pro
index 99ae358a93..99ae358a93 100644
--- a/tests/auto/platformsocketengine/platformsocketengine.pro
+++ b/tests/auto/network/socket/platformsocketengine/platformsocketengine.pro
diff --git a/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp
new file mode 100644
index 0000000000..9e93108fc7
--- /dev/null
+++ b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp
@@ -0,0 +1,763 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QTest>
+
+#ifdef Q_OS_WIN
+#include <winsock2.h>
+#endif
+
+#include <qcoreapplication.h>
+
+
+#include <qdatastream.h>
+
+#include <qhostaddress.h>
+#include <qdatetime.h>
+
+#ifdef Q_OS_UNIX
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#endif
+
+#include <stddef.h>
+
+#ifdef Q_OS_SYMBIAN
+#include <QNetworkConfigurationManager>
+#include <QNetworkConfiguration>
+#include <QNetworkSession>
+#include <QScopedPointer>
+#define PLATFORMSOCKETENGINE QSymbianSocketEngine
+#define PLATFORMSOCKETENGINESTRING "QSymbianSocketEngine"
+#include <private/qsymbiansocketengine_p.h>
+#include <private/qcore_symbian_p.h>
+#else
+#define PLATFORMSOCKETENGINE QNativeSocketEngine
+#define PLATFORMSOCKETENGINESTRING "QNativeSocketEngine"
+#include <private/qnativesocketengine_p.h>
+#endif
+
+#include <qstringlist.h>
+
+#include "../../../network-settings.h"
+
+//TESTED_FILES=network/qnativesocketengine.cpp network/qnativesocketengine_p.h network/qnativesocketengine_unix.cpp
+
+class tst_PlatformSocketEngine : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_PlatformSocketEngine();
+ virtual ~tst_PlatformSocketEngine();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void construction();
+ void simpleConnectToIMAP();
+ void udpLoopbackTest();
+ void udpIPv6LoopbackTest();
+ void broadcastTest();
+ void serverTest();
+ void udpLoopbackPerformance();
+ void tcpLoopbackPerformance();
+ void readWriteBufferSize();
+ void bind();
+ void networkError();
+ void setSocketDescriptor();
+ void invalidSend();
+ void receiveUrgentData();
+ void tooManySockets();
+};
+
+tst_PlatformSocketEngine::tst_PlatformSocketEngine()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+tst_PlatformSocketEngine::~tst_PlatformSocketEngine()
+{
+}
+
+void tst_PlatformSocketEngine::init()
+{
+}
+
+void tst_PlatformSocketEngine::cleanup()
+{
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::construction()
+{
+ PLATFORMSOCKETENGINE socketDevice;
+
+ QVERIFY(!socketDevice.isValid());
+
+ // Initialize device
+ QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(socketDevice.isValid());
+ QVERIFY(socketDevice.protocol() == QAbstractSocket::IPv4Protocol);
+ QVERIFY(socketDevice.socketType() == QAbstractSocket::TcpSocket);
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+ QVERIFY(socketDevice.socketDescriptor() != -1);
+ QVERIFY(socketDevice.localAddress() == QHostAddress());
+ QVERIFY(socketDevice.localPort() == 0);
+ QVERIFY(socketDevice.peerAddress() == QHostAddress());
+ QVERIFY(socketDevice.peerPort() == 0);
+ QVERIFY(socketDevice.error() == QAbstractSocket::UnknownSocketError);
+
+ QTest::ignoreMessage(QtWarningMsg, PLATFORMSOCKETENGINESTRING "::bytesAvailable() was called in QAbstractSocket::UnconnectedState");
+ QVERIFY(socketDevice.bytesAvailable() == 0);
+
+ QTest::ignoreMessage(QtWarningMsg, PLATFORMSOCKETENGINESTRING "::hasPendingDatagrams() was called in QAbstractSocket::UnconnectedState");
+ QVERIFY(!socketDevice.hasPendingDatagrams());
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::simpleConnectToIMAP()
+{
+ PLATFORMSOCKETENGINE socketDevice;
+
+ // Initialize device
+ QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+
+ const bool isConnected = socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143);
+ if (!isConnected) {
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
+ QVERIFY(socketDevice.waitForWrite());
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
+ }
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
+
+ // Wait for the greeting
+ QVERIFY(socketDevice.waitForRead());
+
+ // Read the greeting
+ qint64 available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ QByteArray array;
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
+
+ // Write a logout message
+ QByteArray array2 = "ZZZ LOGOUT\r\n";
+ QVERIFY(socketDevice.write(array2.data(),
+ array2.size()) == array2.size());
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+
+ available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QCOMPARE(array.constData(),
+ "* BYE LOGOUT received\r\n"
+ "ZZZ OK Completed\r\n");
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+ char c;
+ QVERIFY(socketDevice.read(&c, sizeof(c)) == -1);
+ QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::udpLoopbackTest()
+{
+ PLATFORMSOCKETENGINE udpSocket;
+
+ // Initialize device #1
+ QVERIFY(udpSocket.initialize(QAbstractSocket::UdpSocket));
+ QVERIFY(udpSocket.isValid());
+ QVERIFY(udpSocket.socketDescriptor() != -1);
+ QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv4Protocol);
+ QVERIFY(udpSocket.socketType() == QAbstractSocket::UdpSocket);
+ QVERIFY(udpSocket.state() == QAbstractSocket::UnconnectedState);
+
+ // Bind #1 to localhost
+ QVERIFY(udpSocket.bind(QHostAddress("127.0.0.1"), 0));
+ QVERIFY(udpSocket.state() == QAbstractSocket::BoundState);
+ quint16 port = udpSocket.localPort();
+ QVERIFY(port != 0);
+
+ // Initialize device #2
+ PLATFORMSOCKETENGINE udpSocket2;
+ QVERIFY(udpSocket2.initialize(QAbstractSocket::UdpSocket));
+
+ // Connect device #2 to #1
+ QVERIFY(udpSocket2.connectToHost(QHostAddress("127.0.0.1"), port));
+ QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState);
+
+ // Write a message to #1
+ QByteArray message1 = "hei der";
+ QVERIFY(udpSocket2.write(message1.data(),
+ message1.size()) == message1.size());
+
+ // Read the message from #2
+ QVERIFY(udpSocket.waitForRead());
+ QVERIFY(udpSocket.hasPendingDatagrams());
+ qint64 available = udpSocket.pendingDatagramSize();
+ QVERIFY(available > 0);
+ QByteArray answer;
+ answer.resize(available);
+ QHostAddress senderAddress;
+ quint16 senderPort = 0;
+ QVERIFY(udpSocket.readDatagram(answer.data(), answer.size(),
+ &senderAddress,
+ &senderPort) == message1.size());
+ QVERIFY(senderAddress == QHostAddress("127.0.0.1"));
+ QVERIFY(senderPort != 0);
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::udpIPv6LoopbackTest()
+{
+ PLATFORMSOCKETENGINE udpSocket;
+
+ // Initialize device #1
+ bool init = udpSocket.initialize(QAbstractSocket::UdpSocket, QAbstractSocket::IPv6Protocol);
+
+ if (!init) {
+ QVERIFY(udpSocket.error() == QAbstractSocket::UnsupportedSocketOperationError);
+ } else {
+ QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv6Protocol);
+
+ // Bind #1 to localhost
+ QVERIFY(udpSocket.bind(QHostAddress("::1"), 0));
+ QVERIFY(udpSocket.state() == QAbstractSocket::BoundState);
+ quint16 port = udpSocket.localPort();
+ QVERIFY(port != 0);
+
+ // Initialize device #2
+ PLATFORMSOCKETENGINE udpSocket2;
+ QVERIFY(udpSocket2.initialize(QAbstractSocket::UdpSocket, QAbstractSocket::IPv6Protocol));
+
+ // Connect device #2 to #1
+ QVERIFY(udpSocket2.connectToHost(QHostAddress("::1"), port));
+ QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState);
+
+ // Write a message to #1
+ QByteArray message1 = "hei der";
+ QVERIFY(udpSocket2.write(message1.data(),
+ message1.size()) == message1.size());
+
+ // Read the message from #2
+ QVERIFY(udpSocket.waitForRead());
+ QVERIFY(udpSocket.hasPendingDatagrams());
+ qint64 available = udpSocket.pendingDatagramSize();
+ QVERIFY(available > 0);
+ QByteArray answer;
+ answer.resize(available);
+ QHostAddress senderAddress;
+ quint16 senderPort = 0;
+ QVERIFY(udpSocket.readDatagram(answer.data(), answer.size(),
+ &senderAddress,
+ &senderPort) == message1.size());
+ QVERIFY(senderAddress == QHostAddress("::1"));
+ QVERIFY(senderPort != 0);
+ }
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::broadcastTest()
+{
+#ifdef Q_OS_SYMBIAN
+ //broadcast isn't supported on loopback connections, but is on WLAN
+#ifndef QT_NO_BEARERMANAGEMENT
+ QScopedPointer<QNetworkConfigurationManager> netConfMan(new QNetworkConfigurationManager());
+ QNetworkConfiguration networkConfiguration(netConfMan->defaultConfiguration());
+ QScopedPointer<QNetworkSession> networkSession(new QNetworkSession(networkConfiguration));
+ if (!networkSession->isOpen()) {
+ networkSession->open();
+ bool ok = networkSession->waitForOpened(30000);
+ qDebug() << networkSession->isOpen() << networkSession->error() << networkSession->errorString();
+ QVERIFY(ok);
+ }
+#endif
+#endif
+#ifdef Q_OS_AIX
+ QSKIP("Broadcast does not work on darko", SkipAll);
+#endif
+ PLATFORMSOCKETENGINE broadcastSocket;
+
+ // Initialize a regular Udp socket
+ QVERIFY(broadcastSocket.initialize(QAbstractSocket::UdpSocket));
+
+ // Bind to any port on all interfaces
+ QVERIFY(broadcastSocket.bind(QHostAddress::Any, 0));
+ QVERIFY(broadcastSocket.state() == QAbstractSocket::BoundState);
+ quint16 port = broadcastSocket.localPort();
+ QVERIFY(port > 0);
+
+ // Broadcast an inappropriate troll message
+ QByteArray trollMessage
+ = "MOOT wtf is a MOOT? talk english not your sutpiD ENGLISH.";
+ qint64 written = broadcastSocket.writeDatagram(trollMessage.data(),
+ trollMessage.size(),
+ QHostAddress::Broadcast,
+ port);
+
+#ifdef Q_OS_SYMBIAN
+ //On symbian, broadcasts return 0 bytes written if none of the interfaces support it.
+ //Notably the loopback interfaces do not. (though they do support multicast!?)
+ if (written == 0)
+ QEXPECT_FAIL("", "No active interface supports broadcast", Abort);
+#endif
+ QCOMPARE((int)written, trollMessage.size());
+
+ // Wait until we receive it ourselves
+#if defined(Q_OS_FREEBSD)
+ QEXPECT_FAIL("", "Broadcasting to 255.255.255.255 does not work on FreeBSD", Abort);
+#endif
+ QVERIFY(broadcastSocket.waitForRead());
+ QVERIFY(broadcastSocket.hasPendingDatagrams());
+
+ qlonglong available = broadcastSocket.pendingDatagramSize();
+ QByteArray response;
+ response.resize(available);
+ QVERIFY(broadcastSocket.readDatagram(response.data(), response.size())
+ == response.size());
+ QCOMPARE(response, trollMessage);
+
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::serverTest()
+{
+ PLATFORMSOCKETENGINE server;
+
+ // Initialize a Tcp socket
+ QVERIFY(server.initialize(QAbstractSocket::TcpSocket));
+
+ // Bind to any port on all interfaces
+ QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
+ QVERIFY(server.state() == QAbstractSocket::BoundState);
+ quint16 port = server.localPort();
+
+ // Listen for incoming connections
+ QVERIFY(server.listen());
+ QVERIFY(server.state() == QAbstractSocket::ListeningState);
+
+ // Initialize a Tcp socket
+ PLATFORMSOCKETENGINE client;
+ QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
+ if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) {
+ QVERIFY(client.state() == QAbstractSocket::ConnectingState);
+ QVERIFY(client.waitForWrite());
+ QVERIFY(client.state() == QAbstractSocket::ConnectedState);
+ }
+
+ // The server accepts the connection
+ int socketDescriptor = server.accept();
+ QVERIFY(socketDescriptor > 0);
+
+ // A socket device is initialized on the server side, passing the
+ // socket descriptor from accept(). It's pre-connected.
+ PLATFORMSOCKETENGINE serverSocket;
+ QVERIFY(serverSocket.initialize(socketDescriptor));
+ QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
+
+ // The server socket sends a greeting to the clietn
+ QByteArray greeting = "Greetings!";
+ QVERIFY(serverSocket.write(greeting.data(),
+ greeting.size()) == greeting.size());
+
+ // The client waits for the greeting to arrive
+ QVERIFY(client.waitForRead());
+ qint64 available = client.bytesAvailable();
+ QVERIFY(available > 0);
+
+ // The client reads the greeting and checks that it's correct
+ QByteArray response;
+ response.resize(available);
+ QVERIFY(client.read(response.data(),
+ response.size()) == response.size());
+ QCOMPARE(response, greeting);
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::udpLoopbackPerformance()
+{
+#ifdef SYMBIAN_WINSOCK_CONNECTIVITY
+ QSKIP("Not working on Emulator without WinPCAP", SkipAll);
+#endif
+ PLATFORMSOCKETENGINE udpSocket;
+
+ // Initialize device #1
+ QVERIFY(udpSocket.initialize(QAbstractSocket::UdpSocket));
+ QVERIFY(udpSocket.isValid());
+ QVERIFY(udpSocket.socketDescriptor() != -1);
+ QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv4Protocol);
+ QVERIFY(udpSocket.socketType() == QAbstractSocket::UdpSocket);
+ QVERIFY(udpSocket.state() == QAbstractSocket::UnconnectedState);
+
+ // Bind #1 to localhost
+ QVERIFY(udpSocket.bind(QHostAddress("127.0.0.1"), 0));
+ QVERIFY(udpSocket.state() == QAbstractSocket::BoundState);
+ quint16 port = udpSocket.localPort();
+ QVERIFY(port != 0);
+
+ // Initialize device #2
+ PLATFORMSOCKETENGINE udpSocket2;
+ QVERIFY(udpSocket2.initialize(QAbstractSocket::UdpSocket));
+
+ // Connect device #2 to #1
+ QVERIFY(udpSocket2.connectToHost(QHostAddress("127.0.0.1"), port));
+ QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState);
+
+ const int messageSize = 8192;
+ QByteArray message1(messageSize, '@');
+ QByteArray answer(messageSize, '@');
+
+ QHostAddress localhost = QHostAddress::LocalHost;
+
+ qlonglong readBytes = 0;
+ QTime timer;
+ timer.start();
+ while (timer.elapsed() < 5000) {
+ udpSocket2.write(message1.data(), message1.size());
+ udpSocket.waitForRead();
+ while (udpSocket.hasPendingDatagrams()) {
+ readBytes += (qlonglong) udpSocket.readDatagram(answer.data(),
+ answer.size());
+ }
+ }
+
+ qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
+ readBytes / (1024.0 * 1024.0),
+ timer.elapsed() / 1024.0,
+ (readBytes / (timer.elapsed() / 1000.0)) / (1024 * 1024));
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::tcpLoopbackPerformance()
+{
+ PLATFORMSOCKETENGINE server;
+
+ // Initialize a Tcp socket
+ QVERIFY(server.initialize(QAbstractSocket::TcpSocket));
+
+ // Bind to any port on all interfaces
+ QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
+ QVERIFY(server.state() == QAbstractSocket::BoundState);
+ quint16 port = server.localPort();
+
+ // Listen for incoming connections
+ QVERIFY(server.listen());
+ QVERIFY(server.state() == QAbstractSocket::ListeningState);
+
+ // Initialize a Tcp socket
+ PLATFORMSOCKETENGINE client;
+ QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
+
+ // Connect to our server
+ if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) {
+ QVERIFY(client.state() == QAbstractSocket::ConnectingState);
+ QVERIFY(client.waitForWrite());
+ QVERIFY(client.state() == QAbstractSocket::ConnectedState);
+ }
+
+ // The server accepts the connection
+ int socketDescriptor = server.accept();
+ QVERIFY(socketDescriptor > 0);
+
+ // A socket device is initialized on the server side, passing the
+ // socket descriptor from accept(). It's pre-connected.
+ PLATFORMSOCKETENGINE serverSocket;
+ QVERIFY(serverSocket.initialize(socketDescriptor));
+ QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
+
+#if defined (Q_OS_SYMBIAN) && defined (__WINS__)
+ const int messageSize = 1024 * 16;
+#else
+ const int messageSize = 1024 * 256;
+#endif
+ QByteArray message1(messageSize, '@');
+ QByteArray answer(messageSize, '@');
+
+ QTime timer;
+ timer.start();
+ qlonglong readBytes = 0;
+ while (timer.elapsed() < 5000) {
+ qlonglong written = serverSocket.write(message1.data(), message1.size());
+ while (written > 0) {
+ client.waitForRead();
+ if (client.bytesAvailable() > 0) {
+ qlonglong readNow = client.read(answer.data(), answer.size());
+ written -= readNow;
+ readBytes += readNow;
+ }
+ }
+ }
+
+ qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
+ readBytes / (1024.0 * 1024.0),
+ timer.elapsed() / 1024.0,
+ (readBytes / (timer.elapsed() / 1000.0)) / (1024 * 1024));
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::readWriteBufferSize()
+{
+ PLATFORMSOCKETENGINE device;
+
+ QVERIFY(device.initialize(QAbstractSocket::TcpSocket));
+
+ qint64 bufferSize = device.receiveBufferSize();
+ QVERIFY(bufferSize != -1);
+ device.setReceiveBufferSize(bufferSize + 1);
+#if defined(Q_OS_WINCE)
+ QEXPECT_FAIL(0, "Not supported by default on WinCE", Continue);
+#endif
+ QVERIFY(device.receiveBufferSize() > bufferSize);
+
+ bufferSize = device.sendBufferSize();
+ QVERIFY(bufferSize != -1);
+ device.setSendBufferSize(bufferSize + 1);
+ QVERIFY(device.sendBufferSize() > bufferSize);
+
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::tooManySockets()
+{
+#if defined Q_OS_WIN
+ QSKIP("Certain windows machines suffocate and spend too much time in this test.", SkipAll);
+#endif
+ QList<PLATFORMSOCKETENGINE *> sockets;
+ PLATFORMSOCKETENGINE *socketLayer = 0;
+ for (;;) {
+ socketLayer = new PLATFORMSOCKETENGINE;
+ sockets.append(socketLayer);
+
+ if (!socketLayer->initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol))
+ break;
+ }
+
+ QCOMPARE(socketLayer->error(), QAbstractSocket::SocketResourceError);
+
+ qDeleteAll(sockets);
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::bind()
+{
+#if !defined Q_OS_WIN && !defined Q_OS_SYMBIAN
+ PLATFORMSOCKETENGINE binder;
+ QVERIFY(binder.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(!binder.bind(QHostAddress::Any, 82));
+ QVERIFY(binder.error() == QAbstractSocket::SocketAccessError);
+#endif
+
+ PLATFORMSOCKETENGINE binder2;
+ QVERIFY(binder2.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(binder2.bind(QHostAddress::Any, 31180));
+
+ PLATFORMSOCKETENGINE binder3;
+ QVERIFY(binder3.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(!binder3.bind(QHostAddress::Any, 31180));
+
+#ifdef SYMBIAN_WINSOCK_CONNECTIVITY
+ qDebug("On Symbian Emulator (WinSock) we get EADDRNOTAVAIL instead of EADDRINUSE");
+ QVERIFY(binder3.error() == QAbstractSocket::SocketAddressNotAvailableError);
+#else
+ QVERIFY(binder3.error() == QAbstractSocket::AddressInUseError);
+#endif
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::networkError()
+{
+ PLATFORMSOCKETENGINE client;
+
+ QVERIFY(client.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+
+ const bool isConnected = client.connectToHost(QtNetworkSettings::serverIP(), 143);
+ if (!isConnected) {
+ QVERIFY(client.state() == QAbstractSocket::ConnectingState);
+ QVERIFY(client.waitForWrite());
+ QVERIFY(client.state() == QAbstractSocket::ConnectedState);
+ }
+ QVERIFY(client.state() == QAbstractSocket::ConnectedState);
+
+ // An unexpected network error!
+#ifdef Q_OS_WIN
+ // could use shutdown to produce different errors
+ ::closesocket(client.socketDescriptor());
+#elif defined(Q_OS_SYMBIAN)
+ RSocket sock;
+ QVERIFY(QSymbianSocketManager::instance().lookupSocket(client.socketDescriptor(), sock));
+ TRequestStatus stat;
+ sock.Shutdown(RSocket::EImmediate, stat);
+ User::WaitForRequest(stat);
+#else
+ ::close(client.socketDescriptor());
+#endif
+
+ QVERIFY(client.read(0, 0) == -1);
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::setSocketDescriptor()
+{
+ PLATFORMSOCKETENGINE socket1;
+ QVERIFY(socket1.initialize(QAbstractSocket::TcpSocket));
+
+ PLATFORMSOCKETENGINE socket2;
+ QVERIFY(socket2.initialize(socket1.socketDescriptor()));
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::invalidSend()
+{
+ PLATFORMSOCKETENGINE socket;
+ QVERIFY(socket.initialize(QAbstractSocket::TcpSocket));
+
+ QTest::ignoreMessage(QtWarningMsg, PLATFORMSOCKETENGINESTRING "::writeDatagram() was"
+ " called by a socket other than QAbstractSocket::UdpSocket");
+ QCOMPARE(socket.writeDatagram("hei", 3, QHostAddress::LocalHost, 143),
+ (qlonglong) -1);
+}
+
+//---------------------------------------------------------------------------
+void tst_PlatformSocketEngine::receiveUrgentData()
+{
+ PLATFORMSOCKETENGINE server;
+
+ QVERIFY(server.initialize(QAbstractSocket::TcpSocket));
+
+ // Bind to any port on all interfaces
+ QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
+ QVERIFY(server.state() == QAbstractSocket::BoundState);
+ quint16 port = server.localPort();
+
+ QVERIFY(server.listen());
+ QVERIFY(server.state() == QAbstractSocket::ListeningState);
+
+ PLATFORMSOCKETENGINE client;
+ QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
+
+ if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) {
+ QVERIFY(client.state() == QAbstractSocket::ConnectingState);
+ QVERIFY(client.waitForWrite());
+ QVERIFY(client.state() == QAbstractSocket::ConnectedState);
+ }
+
+ int socketDescriptor = server.accept();
+ QVERIFY(socketDescriptor > 0);
+
+ PLATFORMSOCKETENGINE serverSocket;
+ QVERIFY(serverSocket.initialize(socketDescriptor));
+ QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
+
+ char msg;
+ int available;
+ QByteArray response;
+
+#if defined Q_OS_HPUX
+ QSKIP("Native OOB data test doesn't work on HP-UX.", SkipAll);
+#elif defined (Q_OS_WINCE)
+ QSKIP("Native OOB data test doesn't work on WinCE.", SkipAll);
+#endif
+
+ // The server sends an urgent message
+ msg = 'Q';
+#if defined(Q_OS_SYMBIAN)
+ RSocket sock;
+ QVERIFY(QSymbianSocketManager::instance().lookupSocket(socketDescriptor, sock));
+ TRequestStatus stat;
+ TSockXfrLength len;
+ sock.Send(TPtrC8((TUint8*)&msg,1), KSockWriteUrgent, stat, len);
+ User::WaitForRequest(stat);
+ QVERIFY(stat == KErrNone);
+ QCOMPARE(len(), 1);
+#else
+ QCOMPARE(int(::send(socketDescriptor, &msg, sizeof(msg), MSG_OOB)), 1);
+#endif
+
+ // The client receives the urgent message
+ QVERIFY(client.waitForRead());
+ available = client.bytesAvailable();
+ QCOMPARE(available, 1);
+ response.resize(available);
+ QCOMPARE(client.read(response.data(), response.size()), qint64(1));
+ QCOMPARE(response.at(0), msg);
+
+ // The client sends an urgent message
+ msg = 'T';
+ int clientDescriptor = client.socketDescriptor();
+#if defined(Q_OS_SYMBIAN)
+ QVERIFY(QSymbianSocketManager::instance().lookupSocket(clientDescriptor, sock));
+ sock.Send(TPtrC8((TUint8*)&msg,1), KSockWriteUrgent, stat, len);
+ User::WaitForRequest(stat);
+ QVERIFY(stat == KErrNone);
+ QCOMPARE(len(), 1);
+#else
+ QCOMPARE(int(::send(clientDescriptor, &msg, sizeof(msg), MSG_OOB)), 1);
+#endif
+
+ // The server receives the urgent message
+ QVERIFY(serverSocket.waitForRead());
+ available = serverSocket.bytesAvailable();
+ QCOMPARE(available, 1);
+ response.resize(available);
+ QCOMPARE(serverSocket.read(response.data(), response.size()), qint64(1));
+ QCOMPARE(response.at(0), msg);
+
+}
+
+QTEST_MAIN(tst_PlatformSocketEngine)
+#include "tst_platformsocketengine.moc"
diff --git a/tests/auto/qabstractsocket/.gitignore b/tests/auto/network/socket/qabstractsocket/.gitignore
index b962a1a54b..b962a1a54b 100644
--- a/tests/auto/qabstractsocket/.gitignore
+++ b/tests/auto/network/socket/qabstractsocket/.gitignore
diff --git a/tests/auto/qabstractsocket/qabstractsocket.pro b/tests/auto/network/socket/qabstractsocket/qabstractsocket.pro
index 814a7d2600..814a7d2600 100644
--- a/tests/auto/qabstractsocket/qabstractsocket.pro
+++ b/tests/auto/network/socket/qabstractsocket/qabstractsocket.pro
diff --git a/tests/auto/qabstractsocket/tst_qabstractsocket.cpp b/tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp
index 309215d5ea..309215d5ea 100644
--- a/tests/auto/qabstractsocket/tst_qabstractsocket.cpp
+++ b/tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp
diff --git a/tests/auto/qhttpsocketengine/.gitignore b/tests/auto/network/socket/qhttpsocketengine/.gitignore
index c3eb6526ba..c3eb6526ba 100644
--- a/tests/auto/qhttpsocketengine/.gitignore
+++ b/tests/auto/network/socket/qhttpsocketengine/.gitignore
diff --git a/tests/auto/qhttpsocketengine/qhttpsocketengine.pro b/tests/auto/network/socket/qhttpsocketengine/qhttpsocketengine.pro
index f26abbe8d9..f26abbe8d9 100644
--- a/tests/auto/qhttpsocketengine/qhttpsocketengine.pro
+++ b/tests/auto/network/socket/qhttpsocketengine/qhttpsocketengine.pro
diff --git a/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp b/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp
new file mode 100644
index 0000000000..5a90abea0e
--- /dev/null
+++ b/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp
@@ -0,0 +1,748 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QTest>
+#include <QtTest/QTestEventLoop>
+#include <QtCore/QQueue>
+#include <QtCore/QString>
+#include <QtCore/QCoreApplication>
+
+#include <private/qhttpsocketengine_p.h>
+#include <qhostinfo.h>
+#include <qhostaddress.h>
+#include <qtcpsocket.h>
+#include <qhttp.h>
+#include <qdebug.h>
+#include <qtcpserver.h>
+
+#include "../../../network-settings.h"
+
+class tst_QHttpSocketEngine : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QHttpSocketEngine();
+ virtual ~tst_QHttpSocketEngine();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void construction();
+ void errorTest_data();
+ void errorTest();
+ void simpleConnectToIMAP();
+ void simpleErrorsAndStates();
+
+ void tcpSocketBlockingTest();
+ void tcpSocketNonBlockingTest();
+ void downloadBigFile();
+ // void tcpLoopbackPerformance();
+ void passwordAuth();
+
+protected slots:
+ void tcpSocketNonBlocking_hostFound();
+ void tcpSocketNonBlocking_connected();
+ void tcpSocketNonBlocking_closed();
+ void tcpSocketNonBlocking_readyRead();
+ void tcpSocketNonBlocking_bytesWritten(qint64);
+ void exitLoopSlot();
+ void downloadBigFileSlot();
+
+private:
+ QTcpSocket *tcpSocketNonBlocking_socket;
+ QStringList tcpSocketNonBlocking_data;
+ qint64 tcpSocketNonBlocking_totalWritten;
+ QTcpSocket *tmpSocket;
+ qint64 bytesAvailable;
+};
+
+class MiniHttpServer: public QTcpServer
+{
+ Q_OBJECT
+ QTcpSocket *client;
+ QList<QByteArray> dataToTransmit;
+
+public:
+ QByteArray receivedData;
+
+ MiniHttpServer(const QList<QByteArray> &data) : client(0), dataToTransmit(data)
+ {
+ listen();
+ connect(this, SIGNAL(newConnection()), this, SLOT(doAccept()));
+ }
+
+public slots:
+ void doAccept()
+ {
+ client = nextPendingConnection();
+ connect(client, SIGNAL(readyRead()), this, SLOT(sendData()));
+ }
+
+ void sendData()
+ {
+ receivedData += client->readAll();
+ int idx = client->property("dataTransmitionIdx").toInt();
+ if (receivedData.contains("\r\n\r\n") ||
+ receivedData.contains("\n\n")) {
+ if (idx < dataToTransmit.length())
+ client->write(dataToTransmit.at(idx++));
+ if (idx == dataToTransmit.length()) {
+ client->disconnectFromHost();
+ disconnect(client, 0, this, 0);
+ client = 0;
+ } else {
+ client->setProperty("dataTransmitionIdx", idx);
+ }
+ }
+ }
+};
+
+tst_QHttpSocketEngine::tst_QHttpSocketEngine()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+tst_QHttpSocketEngine::~tst_QHttpSocketEngine()
+{
+}
+
+
+void tst_QHttpSocketEngine::init()
+{
+ tmpSocket = 0;
+ bytesAvailable = 0;
+}
+
+void tst_QHttpSocketEngine::cleanup()
+{
+}
+
+//---------------------------------------------------------------------------
+void tst_QHttpSocketEngine::construction()
+{
+ QHttpSocketEngine socketDevice;
+
+ QVERIFY(!socketDevice.isValid());
+
+ // Initialize device
+ QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(socketDevice.isValid());
+ QVERIFY(socketDevice.protocol() == QAbstractSocket::IPv4Protocol);
+ QVERIFY(socketDevice.socketType() == QAbstractSocket::TcpSocket);
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+ // QVERIFY(socketDevice.socketDescriptor() != -1);
+ QVERIFY(socketDevice.localAddress() == QHostAddress());
+ QVERIFY(socketDevice.localPort() == 0);
+ QVERIFY(socketDevice.peerAddress() == QHostAddress());
+ QVERIFY(socketDevice.peerPort() == 0);
+ QVERIFY(socketDevice.error() == QAbstractSocket::UnknownSocketError);
+
+ //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::bytesAvailable() was called in QAbstractSocket::UnconnectedState");
+ QVERIFY(socketDevice.bytesAvailable() == 0);
+
+ //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::hasPendingDatagrams() was called in QAbstractSocket::UnconnectedState");
+ QVERIFY(!socketDevice.hasPendingDatagrams());
+}
+
+//---------------------------------------------------------------------------
+void tst_QHttpSocketEngine::errorTest_data()
+{
+ QTest::addColumn<QString>("hostname");
+ QTest::addColumn<int>("port");
+ QTest::addColumn<QString>("username");
+ QTest::addColumn<QString>("response");
+ QTest::addColumn<int>("expectedError");
+
+ QQueue<QByteArray> responses;
+ QTest::newRow("proxy-host-not-found") << "this-host-does-not-exist." << 1080 << QString()
+ << QString()
+ << int(QAbstractSocket::ProxyNotFoundError);
+ QTest::newRow("proxy-connection-refused") << QtNetworkSettings::serverName() << 2 << QString()
+ << QString()
+ << int(QAbstractSocket::ProxyConnectionRefusedError);
+
+ QTest::newRow("garbage1") << QString() << 0 << QString()
+ << "This is not HTTP\r\n\r\n"
+ << int(QAbstractSocket::ProxyProtocolError);
+
+ QTest::newRow("garbage2") << QString() << 0 << QString()
+ << "This is not HTTP"
+ << int(QAbstractSocket::ProxyConnectionClosedError);
+
+ QTest::newRow("garbage3") << QString() << 0 << QString()
+ << ""
+ << int(QAbstractSocket::ProxyConnectionClosedError);
+
+ QTest::newRow("forbidden") << QString() << 0 << QString()
+ << "HTTP/1.0 403 Forbidden\r\n\r\n"
+ << int(QAbstractSocket::SocketAccessError);
+
+ QTest::newRow("method-not-allowed") << QString() << 0 << QString()
+ << "HTTP/1.0 405 Method Not Allowed\r\n\r\n"
+ << int(QAbstractSocket::SocketAccessError);
+
+ QTest::newRow("proxy-authentication-too-short")
+ << QString() << 0 << "foo"
+ << "HTTP/1.0 407 Proxy Authentication Required\r\n\r\n"
+ << int(QAbstractSocket::ProxyProtocolError);
+
+ QTest::newRow("proxy-authentication-invalid-method")
+ << QString() << 0 << "foo"
+ << "HTTP/1.0 407 Proxy Authentication Required\r\n"
+ "Proxy-Authenticate: Frobnicator\r\n\r\n"
+ << int(QAbstractSocket::ProxyProtocolError);
+
+ QTest::newRow("proxy-authentication-required")
+ << QString() << 0 << "foo"
+ << "HTTP/1.0 407 Proxy Authentication Required\r\n"
+ "Proxy-Connection: close\r\n"
+ "Proxy-Authenticate: Basic, realm=wonderland\r\n\r\n"
+ << int(QAbstractSocket::ProxyAuthenticationRequiredError);
+
+ QTest::newRow("proxy-authentication-required2")
+ << QString() << 0 << "foo"
+ << "HTTP/1.0 407 Proxy Authentication Required\r\n"
+ "Proxy-Connection: keep-alive\r\n"
+ "Proxy-Authenticate: Basic, realm=wonderland\r\n\r\n"
+ "\1"
+ "HTTP/1.0 407 Proxy Authentication Required\r\n"
+ "Proxy-Authenticate: Basic, realm=wonderland\r\n\r\n"
+ << int(QAbstractSocket::ProxyAuthenticationRequiredError);
+
+ QTest::newRow("proxy-authentication-required-noclose")
+ << QString() << 0 << "foo"
+ << "HTTP/1.0 407 Proxy Authentication Required\r\n"
+ "Proxy-Authenticate: Basic\r\n"
+ "\r\n"
+ << int(QAbstractSocket::ProxyAuthenticationRequiredError);
+
+ QTest::newRow("connection-refused") << QString() << 0 << QString()
+ << "HTTP/1.0 503 Service Unavailable\r\n\r\n"
+ << int(QAbstractSocket::ConnectionRefusedError);
+
+ QTest::newRow("host-not-found") << QString() << 0 << QString()
+ << "HTTP/1.0 404 Not Found\r\n\r\n"
+ << int(QAbstractSocket::HostNotFoundError);
+
+ QTest::newRow("weird-http-reply") << QString() << 0 << QString()
+ << "HTTP/1.0 206 Partial Content\r\n\r\n"
+ << int(QAbstractSocket::ProxyProtocolError);
+}
+
+void tst_QHttpSocketEngine::errorTest()
+{
+ QFETCH(QString, hostname);
+ QFETCH(int, port);
+ QFETCH(QString, username);
+ QFETCH(QString, response);
+ QFETCH(int, expectedError);
+
+ MiniHttpServer server(response.toLatin1().split('\1'));
+
+ if (hostname.isEmpty()) {
+ hostname = "127.0.0.1";
+ port = server.serverPort();
+ }
+ QTcpSocket socket;
+ socket.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, hostname, port, username, username));
+ socket.connectToHost("0.1.2.3", 12345);
+
+ connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(int(socket.error()), expectedError);
+}
+
+//---------------------------------------------------------------------------
+void tst_QHttpSocketEngine::simpleConnectToIMAP()
+{
+ QHttpSocketEngine socketDevice;
+
+ // Initialize device
+ QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+
+ socketDevice.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128));
+
+ QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
+ QVERIFY(socketDevice.waitForWrite());
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
+ QVERIFY(!socketDevice.localAddress().isNull());
+ QVERIFY(socketDevice.localPort() > 0);
+
+ // Wait for the greeting
+ QVERIFY(socketDevice.waitForRead());
+
+ // Read the greeting
+ qint64 available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ QByteArray array;
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
+
+
+ // Write a logout message
+ QByteArray array2 = "XXXX LOGOUT\r\n";
+ QVERIFY(socketDevice.write(array2.data(),
+ array2.size()) == array2.size());
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+
+ available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QCOMPARE(array.constData(), "* BYE LOGOUT received\r\nXXXX OK Completed\r\n");
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+ char c;
+ QCOMPARE(socketDevice.read(&c, sizeof(c)), (qint64) -1);
+ QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+}
+
+//---------------------------------------------------------------------------
+void tst_QHttpSocketEngine::simpleErrorsAndStates()
+{
+ {
+ QHttpSocketEngine socketDevice;
+
+ // Initialize device
+ QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+
+ socketDevice.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128));
+
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+ QVERIFY(!socketDevice.connectToHost(QHostAddress(QtNetworkSettings::serverName()), 8088));
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
+ if (socketDevice.waitForWrite(15000)) {
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState ||
+ socketDevice.state() == QAbstractSocket::UnconnectedState);
+ } else {
+ QVERIFY(socketDevice.error() == QAbstractSocket::SocketTimeoutError);
+ }
+ }
+
+}
+
+/*
+//---------------------------------------------------------------------------
+void tst_QHttpSocketEngine::tcpLoopbackPerformance()
+{
+ QTcpServer server;
+
+ // Bind to any port on all interfaces
+ QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
+ QVERIFY(server.state() == QAbstractSocket::BoundState);
+ quint16 port = server.localPort();
+
+ // Listen for incoming connections
+ QVERIFY(server.listen());
+ QVERIFY(server.state() == QAbstractSocket::ListeningState);
+
+ // Initialize a Tcp socket
+ QHttpSocketEngine client;
+ QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
+
+ client.setProxy(QHostAddress("80.232.37.158"), 1081);
+
+ // Connect to our server
+ if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) {
+ QVERIFY(client.waitForWrite());
+ QVERIFY(client.connectToHost(QHostAddress("127.0.0.1"), port));
+ }
+
+ // The server accepts the connectio
+ int socketDescriptor = server.accept();
+ QVERIFY(socketDescriptor > 0);
+
+ // A socket device is initialized on the server side, passing the
+ // socket descriptor from accept(). It's pre-connected.
+ QSocketLayer serverSocket;
+ QVERIFY(serverSocket.initialize(socketDescriptor));
+ QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
+
+ const int messageSize = 1024 * 256;
+ QByteArray message1(messageSize, '@');
+ QByteArray answer(messageSize, '@');
+
+ QTime timer;
+ timer.start();
+ qlonglong readBytes = 0;
+ while (timer.elapsed() < 5000) {
+ qlonglong written = serverSocket.write(message1.data(), message1.size());
+ while (written > 0) {
+ client.waitForRead();
+ if (client.bytesAvailable() > 0) {
+ qlonglong readNow = client.read(answer.data(), answer.size());
+ written -= readNow;
+ readBytes += readNow;
+ }
+ }
+ }
+
+ qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
+ readBytes / (1024.0 * 1024.0),
+ timer.elapsed() / 1024.0,
+ (readBytes / (timer.elapsed() / 1000.0)) / (1024 * 1024));
+}
+*/
+
+
+
+void tst_QHttpSocketEngine::tcpSocketBlockingTest()
+{
+ QHttpSocketEngineHandler http;
+
+ QTcpSocket socket;
+
+ // Connect
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket.waitForConnected());
+ QCOMPARE(socket.state(), QTcpSocket::ConnectedState);
+
+ // Read greeting
+ QVERIFY(socket.waitForReadyRead(5000));
+ QString s = socket.readLine();
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(s.toLatin1()), qPrintable(s));
+
+ // Write NOOP
+ QCOMPARE((int) socket.write("1 NOOP\r\n", 8), 8);
+
+ if (!socket.canReadLine())
+ QVERIFY(socket.waitForReadyRead(5000));
+
+ // Read response
+ s = socket.readLine();
+ QCOMPARE(s.toLatin1().constData(), "1 OK Completed\r\n");
+
+ // Write LOGOUT
+ QCOMPARE((int) socket.write("2 LOGOUT\r\n", 10), 10);
+
+ if (!socket.canReadLine())
+ QVERIFY(socket.waitForReadyRead(5000));
+
+ // Read two lines of respose
+ s = socket.readLine();
+ QCOMPARE(s.toLatin1().constData(), "* BYE LOGOUT received\r\n");
+
+ if (!socket.canReadLine())
+ QVERIFY(socket.waitForReadyRead(5000));
+
+ s = socket.readLine();
+ QCOMPARE(s.toLatin1().constData(), "2 OK Completed\r\n");
+
+ // Close the socket
+ socket.close();
+
+ // Check that it's closed
+ QCOMPARE(socket.state(), QTcpSocket::UnconnectedState);
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QHttpSocketEngine::tcpSocketNonBlockingTest()
+{
+ QHttpSocketEngineHandler http;
+
+ QTcpSocket socket;
+ connect(&socket, SIGNAL(hostFound()), SLOT(tcpSocketNonBlocking_hostFound()));
+ connect(&socket, SIGNAL(connected()), SLOT(tcpSocketNonBlocking_connected()));
+ connect(&socket, SIGNAL(disconnected()), SLOT(tcpSocketNonBlocking_closed()));
+ connect(&socket, SIGNAL(bytesWritten(qint64)), SLOT(tcpSocketNonBlocking_bytesWritten(qint64)));
+ connect(&socket, SIGNAL(readyRead()), SLOT(tcpSocketNonBlocking_readyRead()));
+ tcpSocketNonBlocking_socket = &socket;
+
+ // Connect
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket.state() == QTcpSocket::HostLookupState ||
+ socket.state() == QTcpSocket::ConnectingState);
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+ if (socket.state() == QTcpSocket::ConnectingState) {
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+ }
+
+ QCOMPARE(socket.state(), QTcpSocket::ConnectedState);
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+ // Read greeting
+ QVERIFY(!tcpSocketNonBlocking_data.isEmpty());
+ QByteArray data = tcpSocketNonBlocking_data.at(0).toLatin1();
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(data), data.constData());
+
+
+ tcpSocketNonBlocking_data.clear();
+
+ tcpSocketNonBlocking_totalWritten = 0;
+
+ // Write NOOP
+ QCOMPARE((int) socket.write("1 NOOP\r\n", 8), 8);
+
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+ QVERIFY(tcpSocketNonBlocking_totalWritten == 8);
+
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+
+ // Read response
+ QVERIFY(!tcpSocketNonBlocking_data.isEmpty());
+ QCOMPARE(tcpSocketNonBlocking_data.at(0).toLatin1().constData(), "1 OK Completed\r\n");
+ tcpSocketNonBlocking_data.clear();
+
+
+ tcpSocketNonBlocking_totalWritten = 0;
+
+ // Write LOGOUT
+ QCOMPARE((int) socket.write("2 LOGOUT\r\n", 10), 10);
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+ QVERIFY(tcpSocketNonBlocking_totalWritten == 10);
+
+ // Wait for greeting
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+ // Read two lines of respose
+ QCOMPARE(tcpSocketNonBlocking_data.at(0).toLatin1().constData(), "* BYE LOGOUT received\r\n");
+ QCOMPARE(tcpSocketNonBlocking_data.at(1).toLatin1().constData(), "2 OK Completed\r\n");
+ tcpSocketNonBlocking_data.clear();
+
+ // Close the socket
+ socket.close();
+
+ // Check that it's closed
+ QCOMPARE(socket.state(), QTcpSocket::UnconnectedState);
+}
+
+void tst_QHttpSocketEngine::tcpSocketNonBlocking_hostFound()
+{
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QHttpSocketEngine::tcpSocketNonBlocking_connected()
+{
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QHttpSocketEngine::tcpSocketNonBlocking_readyRead()
+{
+ while (tcpSocketNonBlocking_socket->canReadLine())
+ tcpSocketNonBlocking_data.append(tcpSocketNonBlocking_socket->readLine());
+
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QHttpSocketEngine::tcpSocketNonBlocking_bytesWritten(qint64 written)
+{
+ tcpSocketNonBlocking_totalWritten += written;
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QHttpSocketEngine::tcpSocketNonBlocking_closed()
+{
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QHttpSocketEngine::downloadBigFile()
+{
+ QHttpSocketEngineHandler http;
+
+ if (tmpSocket)
+ delete tmpSocket;
+ tmpSocket = new QTcpSocket;
+
+ connect(tmpSocket, SIGNAL(connected()), SLOT(exitLoopSlot()));
+ connect(tmpSocket, SIGNAL(readyRead()), SLOT(downloadBigFileSlot()));
+
+ tmpSocket->connectToHost(QtNetworkSettings::serverName(), 80);
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Network operation timed out");
+
+ QByteArray hostName = QtNetworkSettings::serverName().toLatin1();
+ QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState);
+ QVERIFY(tmpSocket->write("GET /qtest/mediumfile HTTP/1.0\r\n") > 0);
+ QVERIFY(tmpSocket->write("Host: ") > 0);
+ QVERIFY(tmpSocket->write(hostName.data()) > 0);
+ QVERIFY(tmpSocket->write("\r\n") > 0);
+ QVERIFY(tmpSocket->write("\r\n") > 0);
+
+ bytesAvailable = 0;
+
+ QTime stopWatch;
+ stopWatch.start();
+
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QTestEventLoop::instance().enterLoop(240);
+#else
+ QTestEventLoop::instance().enterLoop(60);
+#endif
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Network operation timed out");
+
+ QVERIFY(bytesAvailable >= 10000000);
+
+ QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState);
+
+ qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
+ bytesAvailable / (1024.0 * 1024.0),
+ stopWatch.elapsed() / 1024.0,
+ (bytesAvailable / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));
+
+ delete tmpSocket;
+ tmpSocket = 0;
+}
+
+void tst_QHttpSocketEngine::exitLoopSlot()
+{
+ QTestEventLoop::instance().exitLoop();
+}
+
+
+void tst_QHttpSocketEngine::downloadBigFileSlot()
+{
+ bytesAvailable += tmpSocket->readAll().size();
+ if (bytesAvailable >= 10000000)
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QHttpSocketEngine::passwordAuth()
+{
+ QHttpSocketEngine socketDevice;
+
+ // Initialize device
+ QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+
+ socketDevice.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128, "qsockstest", "password"));
+
+ QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
+ QVERIFY(socketDevice.waitForWrite());
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
+
+ // Wait for the greeting
+ QVERIFY(socketDevice.waitForRead());
+
+ // Read the greeting
+ qint64 available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ QByteArray array;
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
+
+
+ // Write a logout message
+ QByteArray array2 = "XXXX LOGOUT\r\n";
+ QVERIFY(socketDevice.write(array2.data(),
+ array2.size()) == array2.size());
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+
+ available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QCOMPARE(array.constData(), "* BYE LOGOUT received\r\nXXXX OK Completed\r\n");
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+ char c;
+ QVERIFY(socketDevice.read(&c, sizeof(c)) == -1);
+ QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+}
+
+//----------------------------------------------------------------------------------
+
+QTEST_MAIN(tst_QHttpSocketEngine)
+#include "tst_qhttpsocketengine.moc"
diff --git a/tests/auto/qlocalsocket/.gitignore b/tests/auto/network/socket/qlocalsocket/.gitignore
index b45c266ce3..b45c266ce3 100644
--- a/tests/auto/qlocalsocket/.gitignore
+++ b/tests/auto/network/socket/qlocalsocket/.gitignore
diff --git a/tests/auto/qlocalsocket/example/client/client.pro b/tests/auto/network/socket/qlocalsocket/example/client/client.pro
index 84f20d6ec0..84f20d6ec0 100644
--- a/tests/auto/qlocalsocket/example/client/client.pro
+++ b/tests/auto/network/socket/qlocalsocket/example/client/client.pro
diff --git a/tests/auto/qlocalsocket/example/client/main.cpp b/tests/auto/network/socket/qlocalsocket/example/client/main.cpp
index acf5cbc388..acf5cbc388 100644
--- a/tests/auto/qlocalsocket/example/client/main.cpp
+++ b/tests/auto/network/socket/qlocalsocket/example/client/main.cpp
diff --git a/tests/auto/qlocalsocket/example/example.pro b/tests/auto/network/socket/qlocalsocket/example/example.pro
index 8c678cd05a..8c678cd05a 100644
--- a/tests/auto/qlocalsocket/example/example.pro
+++ b/tests/auto/network/socket/qlocalsocket/example/example.pro
diff --git a/tests/auto/qlocalsocket/example/server/main.cpp b/tests/auto/network/socket/qlocalsocket/example/server/main.cpp
index 0d3de3a2e1..0d3de3a2e1 100644
--- a/tests/auto/qlocalsocket/example/server/main.cpp
+++ b/tests/auto/network/socket/qlocalsocket/example/server/main.cpp
diff --git a/tests/auto/qlocalsocket/example/server/server.pro b/tests/auto/network/socket/qlocalsocket/example/server/server.pro
index bfd14d2bb7..bfd14d2bb7 100644
--- a/tests/auto/qlocalsocket/example/server/server.pro
+++ b/tests/auto/network/socket/qlocalsocket/example/server/server.pro
diff --git a/tests/auto/qlocalsocket/lackey/lackey.pro b/tests/auto/network/socket/qlocalsocket/lackey/lackey.pro
index 2573222c8b..2573222c8b 100644
--- a/tests/auto/qlocalsocket/lackey/lackey.pro
+++ b/tests/auto/network/socket/qlocalsocket/lackey/lackey.pro
diff --git a/tests/auto/qlocalsocket/lackey/main.cpp b/tests/auto/network/socket/qlocalsocket/lackey/main.cpp
index f7b2ff10b3..f7b2ff10b3 100644
--- a/tests/auto/qlocalsocket/lackey/main.cpp
+++ b/tests/auto/network/socket/qlocalsocket/lackey/main.cpp
diff --git a/tests/auto/qlocalsocket/lackey/scripts/client.js b/tests/auto/network/socket/qlocalsocket/lackey/scripts/client.js
index 76cc0b97ad..76cc0b97ad 100755
--- a/tests/auto/qlocalsocket/lackey/scripts/client.js
+++ b/tests/auto/network/socket/qlocalsocket/lackey/scripts/client.js
diff --git a/tests/auto/qlocalsocket/lackey/scripts/server.js b/tests/auto/network/socket/qlocalsocket/lackey/scripts/server.js
index 98a83bc9dd..98a83bc9dd 100644
--- a/tests/auto/qlocalsocket/lackey/scripts/server.js
+++ b/tests/auto/network/socket/qlocalsocket/lackey/scripts/server.js
diff --git a/tests/auto/qlocalsocket/qlocalsocket.pro b/tests/auto/network/socket/qlocalsocket/qlocalsocket.pro
index 931c1e0602..931c1e0602 100644
--- a/tests/auto/qlocalsocket/qlocalsocket.pro
+++ b/tests/auto/network/socket/qlocalsocket/qlocalsocket.pro
diff --git a/tests/auto/qlocalsocket/test/test.pro b/tests/auto/network/socket/qlocalsocket/test/test.pro
index b2755b5411..b2755b5411 100644
--- a/tests/auto/qlocalsocket/test/test.pro
+++ b/tests/auto/network/socket/qlocalsocket/test/test.pro
diff --git a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
new file mode 100644
index 0000000000..57daa92f82
--- /dev/null
+++ b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
@@ -0,0 +1,1120 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qtextstream.h>
+#include <QtNetwork/qlocalsocket.h>
+#include <QtNetwork/qlocalserver.h>
+#include "../../../../shared/util.h"
+
+#ifdef Q_OS_SYMBIAN
+ #include <unistd.h>
+#endif
+//TESTED_CLASS=QLocalServer, QLocalSocket
+//TESTED_FILES=network/socket/qlocalserver.cpp network/socket/qlocalsocket.cpp
+#ifdef Q_OS_SYMBIAN
+ #define STRINGIFY(x) #x
+ #define TOSTRING(x) STRINGIFY(x)
+ #define SRCDIR "C:/Private/" TOSTRING(SYMBIAN_SRCDIR_UID) "/"
+#endif
+Q_DECLARE_METATYPE(QLocalSocket::LocalSocketError)
+Q_DECLARE_METATYPE(QLocalSocket::LocalSocketState)
+
+class tst_QLocalSocket : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QLocalSocket();
+ virtual ~tst_QLocalSocket();
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ // basics
+ void server_basic();
+ void server_connectionsCount();
+ void socket_basic();
+
+ void listen_data();
+ void listen();
+
+ void listenAndConnect_data();
+ void listenAndConnect();
+
+ void sendData_data();
+ void sendData();
+
+ void readBufferOverflow();
+
+ void fullPath();
+
+ void hitMaximumConnections_data();
+ void hitMaximumConnections();
+
+ void setSocketDescriptor();
+
+ void threadedConnection_data();
+ void threadedConnection();
+
+ void processConnection_data();
+ void processConnection();
+
+ void longPath();
+ void waitForDisconnect();
+ void waitForDisconnectByServer();
+
+ void removeServer();
+
+ void recycleServer();
+
+ void multiConnect();
+ void writeOnlySocket();
+ void writeToClientAndDisconnect();
+ void debug();
+ void bytesWrittenSignal();
+ void syncDisconnectNotify();
+ void asyncDisconnectNotify();
+
+#ifdef Q_OS_SYMBIAN
+private:
+ void unlink(QString serverName);
+#endif
+};
+
+tst_QLocalSocket::tst_QLocalSocket()
+{
+ if (!QFile::exists("lackey/lackey"
+#ifdef Q_OS_WIN
+ ".exe"
+#endif
+ ))
+ qWarning() << "lackey executable doesn't exists!";
+}
+
+tst_QLocalSocket::~tst_QLocalSocket()
+{
+}
+
+void tst_QLocalSocket::init()
+{
+ qRegisterMetaType<QLocalSocket::LocalSocketState>("QLocalSocket::LocalSocketState");
+ qRegisterMetaType<QLocalSocket::LocalSocketError>("QLocalSocket::LocalSocketError");
+}
+
+void tst_QLocalSocket::cleanup()
+{
+}
+
+class LocalServer : public QLocalServer
+{
+ Q_OBJECT
+
+public:
+ LocalServer() : QLocalServer()
+ {
+ connect(this, SIGNAL(newConnection()), this, SLOT(slotNewConnection()));
+ }
+
+ bool listen(const QString &name)
+ {
+ removeServer(name);
+ return QLocalServer::listen(name);
+ }
+
+ QList<int> hits;
+
+protected:
+ void incomingConnection(quintptr socketDescriptor)
+ {
+ hits.append(socketDescriptor);
+ QLocalServer::incomingConnection(socketDescriptor);
+ }
+
+private slots:
+ void slotNewConnection() {
+ QVERIFY(!hits.isEmpty());
+ QVERIFY(hasPendingConnections());
+ }
+};
+
+class LocalSocket : public QLocalSocket
+{
+ Q_OBJECT
+
+public:
+ LocalSocket(QObject *parent = 0) : QLocalSocket(parent)
+ {
+ connect(this, SIGNAL(connected()),
+ this, SLOT(slotConnected()));
+ connect(this, SIGNAL(disconnected()),
+ this, SLOT(slotDisconnected()));
+ connect(this, SIGNAL(error(QLocalSocket::LocalSocketError)),
+ this, SLOT(slotError(QLocalSocket::LocalSocketError)));
+ connect(this, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)),
+ this, SLOT(slotStateChanged(QLocalSocket::LocalSocketState)));
+ connect(this, SIGNAL(readyRead()),
+ this, SLOT(slotReadyRead()));
+ }
+
+private slots:
+ void slotConnected()
+ {
+ QCOMPARE(state(), QLocalSocket::ConnectedState);
+ }
+ void slotDisconnected()
+ {
+ QCOMPARE(state(), QLocalSocket::UnconnectedState);
+ }
+ void slotError(QLocalSocket::LocalSocketError newError)
+ {
+ QVERIFY(errorString() != "Unknown error");
+ QCOMPARE(error(), newError);
+ }
+ void slotStateChanged(QLocalSocket::LocalSocketState newState)
+ {
+ QCOMPARE(state(), newState);
+ }
+ void slotReadyRead()
+ {
+ QVERIFY(bytesAvailable() > 0);
+ }
+};
+
+// basic test make sure no segfaults and check default values
+void tst_QLocalSocket::server_basic()
+{
+ LocalServer server;
+ QSignalSpy spyNewConnection(&server, SIGNAL(newConnection()));
+ server.close();
+ QCOMPARE(server.errorString(), QString());
+ QCOMPARE(server.hasPendingConnections(), false);
+ QCOMPARE(server.isListening(), false);
+ QCOMPARE(server.maxPendingConnections(), 30);
+ QCOMPARE(server.nextPendingConnection(), (QLocalSocket*)0);
+ QCOMPARE(server.serverName(), QString());
+ QCOMPARE(server.fullServerName(), QString());
+ QCOMPARE(server.serverError(), QAbstractSocket::UnknownSocketError);
+ server.setMaxPendingConnections(20);
+ bool timedOut = true;
+ QCOMPARE(server.waitForNewConnection(3000, &timedOut), false);
+ QVERIFY(!timedOut);
+ QCOMPARE(server.listen(QString()), false);
+
+ QCOMPARE(server.hits.count(), 0);
+ QCOMPARE(spyNewConnection.count(), 0);
+}
+
+void tst_QLocalSocket::server_connectionsCount()
+{
+ LocalServer server;
+ server.setMaxPendingConnections(10);
+ QCOMPARE(server.maxPendingConnections(), 10);
+}
+
+// basic test make sure no segfaults and check default values
+void tst_QLocalSocket::socket_basic()
+{
+ LocalSocket socket;
+ QSignalSpy spyConnected(&socket, SIGNAL(connected()));
+ QSignalSpy spyDisconnected(&socket, SIGNAL(disconnected()));
+ QSignalSpy spyError(&socket, SIGNAL(error(QLocalSocket::LocalSocketError)));
+ QSignalSpy spyStateChanged(&socket, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)));
+ QSignalSpy spyReadyRead(&socket, SIGNAL(readyRead()));
+
+ QCOMPARE(socket.serverName(), QString());
+ QCOMPARE(socket.fullServerName(), QString());
+ socket.abort();
+ QVERIFY(socket.bytesAvailable() == 0);
+ QVERIFY(socket.bytesToWrite() == 0);
+ QCOMPARE(socket.canReadLine(), false);
+ socket.close();
+ socket.disconnectFromServer();
+ QCOMPARE(QLocalSocket::UnknownSocketError, socket.error());
+ QVERIFY(socket.errorString() != QString());
+ QCOMPARE(socket.flush(), false);
+ QCOMPARE(socket.isValid(), false);
+ QVERIFY(socket.readBufferSize() == 0);
+ socket.setReadBufferSize(0);
+ //QCOMPARE(socket.socketDescriptor(), -1);
+ QCOMPARE(socket.state(), QLocalSocket::UnconnectedState);
+ QCOMPARE(socket.waitForConnected(0), false);
+ QCOMPARE(socket.waitForDisconnected(0), false);
+ QCOMPARE(socket.waitForReadyRead(0), false);
+
+ QCOMPARE(spyConnected.count(), 0);
+ QCOMPARE(spyDisconnected.count(), 0);
+ QCOMPARE(spyError.count(), 0);
+ QCOMPARE(spyStateChanged.count(), 0);
+ QCOMPARE(spyReadyRead.count(), 0);
+}
+
+void tst_QLocalSocket::listen_data()
+{
+ QTest::addColumn<QString>("name");
+ QTest::addColumn<bool>("canListen");
+ QTest::addColumn<bool>("close");
+ QTest::newRow("null") << QString() << false << false;
+ QTest::newRow("tst_localsocket") << "tst_localsocket" << true << true;
+ QTest::newRow("tst_localsocket") << "tst_localsocket" << true << false;
+}
+
+// start a server that listens, but don't connect a socket, make sure everything is in order
+void tst_QLocalSocket::listen()
+{
+ LocalServer server;
+ QSignalSpy spyNewConnection(&server, SIGNAL(newConnection()));
+
+ QFETCH(QString, name);
+#ifdef Q_OS_SYMBIAN
+ unlink(name);
+#endif
+ QFETCH(bool, canListen);
+ QFETCH(bool, close);
+ QVERIFY2((server.listen(name) == canListen), server.errorString().toLatin1().constData());
+
+ // test listening
+ QCOMPARE(server.serverName(), name);
+ QVERIFY(server.fullServerName().contains(name));
+ QCOMPARE(server.isListening(), canListen);
+ QCOMPARE(server.hasPendingConnections(), false);
+ QCOMPARE(server.nextPendingConnection(), (QLocalSocket*)0);
+ QCOMPARE(server.hits.count(), 0);
+ QCOMPARE(spyNewConnection.count(), 0);
+ if (canListen) {
+ QVERIFY(server.errorString() == QString());
+ QCOMPARE(server.serverError(), QAbstractSocket::UnknownSocketError);
+ // already isListening
+ QVERIFY(!server.listen(name));
+ } else {
+ QVERIFY(server.errorString() != QString());
+ QCOMPARE(server.serverError(), QAbstractSocket::HostNotFoundError);
+ }
+ QCOMPARE(server.maxPendingConnections(), 30);
+ bool timedOut = false;
+ QCOMPARE(server.waitForNewConnection(3000, &timedOut), false);
+ QCOMPARE(timedOut, canListen);
+ if (close)
+ server.close();
+}
+
+void tst_QLocalSocket::listenAndConnect_data()
+{
+ QTest::addColumn<QString>("name");
+ QTest::addColumn<bool>("canListen");
+ QTest::addColumn<int>("connections");
+ for (int i = 0; i < 3; ++i) {
+ int connections = i;
+ if (i == 2)
+ connections = 5;
+ QTest::newRow(QString("null %1").arg(i).toLatin1()) << QString() << false << connections;
+ QTest::newRow(QString("tst_localsocket %1").arg(i).toLatin1()) << "tst_localsocket" << true << connections;
+ }
+}
+
+void tst_QLocalSocket::listenAndConnect()
+{
+ LocalServer server;
+ QSignalSpy spyNewConnection(&server, SIGNAL(newConnection()));
+
+ QFETCH(QString, name);
+ QFETCH(bool, canListen);
+#ifdef Q_OS_SYMBIAN
+ unlink(name);
+#endif
+ QCOMPARE(server.listen(name), canListen);
+ QTest::qWait(1000);
+ //QVERIFY(!server.errorString().isEmpty());
+ QCOMPARE(server.serverError(),
+ canListen ? QAbstractSocket::UnknownSocketError : QAbstractSocket::HostNotFoundError);
+
+ // test creating connection(s)
+ QFETCH(int, connections);
+ QList<QLocalSocket*> sockets;
+ for (int i = 0; i < connections; ++i) {
+ LocalSocket *socket = new LocalSocket;
+
+ QSignalSpy spyConnected(socket, SIGNAL(connected()));
+ QSignalSpy spyDisconnected(socket, SIGNAL(disconnected()));
+ QSignalSpy spyError(socket, SIGNAL(error(QLocalSocket::LocalSocketError)));
+ QSignalSpy spyStateChanged(socket, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)));
+ QSignalSpy spyReadyRead(socket, SIGNAL(readyRead()));
+
+ socket->connectToServer(name);
+#if defined(QT_LOCALSOCKET_TCP)
+ QTest::qWait(250);
+#endif
+
+ QCOMPARE(socket->serverName(), name);
+ QVERIFY(socket->fullServerName().contains(name));
+ sockets.append(socket);
+ if (canListen) {
+ QVERIFY(socket->waitForConnected());
+ QVERIFY(socket->isValid());
+ QCOMPARE(socket->errorString(), QString("Unknown error"));
+ QCOMPARE(socket->error(), QLocalSocket::UnknownSocketError);
+ QCOMPARE(socket->state(), QLocalSocket::ConnectedState);
+ //QVERIFY(socket->socketDescriptor() != -1);
+ QCOMPARE(spyError.count(), 0);
+ } else {
+ QVERIFY(socket->errorString() != QString());
+ QVERIFY(socket->error() != QLocalSocket::UnknownSocketError);
+ QCOMPARE(socket->state(), QLocalSocket::UnconnectedState);
+ //QVERIFY(socket->socketDescriptor() == -1);
+ QCOMPARE(qVariantValue<QLocalSocket::LocalSocketError>(spyError.first()[0]),
+ QLocalSocket::ServerNotFoundError);
+ }
+
+ QVERIFY(socket->bytesAvailable() == 0);
+ QVERIFY(socket->bytesToWrite() == 0);
+ QCOMPARE(socket->canReadLine(), false);
+ QCOMPARE(socket->flush(), false);
+ QCOMPARE(socket->isValid(), canListen);
+ QCOMPARE(socket->readBufferSize(), (qint64)0);
+ QCOMPARE(socket->waitForConnected(0), canListen);
+ QCOMPARE(socket->waitForReadyRead(0), false);
+
+ QTRY_COMPARE(spyConnected.count(), canListen ? 1 : 0);
+ QCOMPARE(spyDisconnected.count(), 0);
+
+ // error signals
+ QVERIFY(spyError.count() >= 0);
+ if (canListen) {
+ if (spyError.count() > 0)
+ QCOMPARE(qVariantValue<QLocalSocket::LocalSocketError>(spyError.first()[0]),
+ QLocalSocket::SocketTimeoutError);
+ } else {
+ QCOMPARE(qVariantValue<QLocalSocket::LocalSocketError>(spyError.first()[0]),
+ QLocalSocket::ServerNotFoundError);
+ }
+
+ // Check first and last state
+ QCOMPARE(qVariantValue<QLocalSocket::LocalSocketState>(spyStateChanged.first()[0]),
+ QLocalSocket::ConnectingState);
+#if 0
+ for (int j = 0; j < spyStateChanged.count(); ++j) {
+ QLocalSocket::LocalSocketState s;
+ s = qVariantValue<QLocalSocket::LocalSocketState>(spyStateChanged.at(j).at(0));
+ qDebug() << s;
+ }
+#endif
+ if (canListen)
+ QCOMPARE(qVariantValue<QLocalSocket::LocalSocketState>(spyStateChanged.last()[0]),
+ QLocalSocket::ConnectedState);
+ QCOMPARE(spyStateChanged.count(), 2);
+ QCOMPARE(spyReadyRead.count(), 0);
+
+ bool timedOut = true;
+ QCOMPARE(server.waitForNewConnection(3000, &timedOut), canListen);
+ QVERIFY(!timedOut);
+ QCOMPARE(server.hasPendingConnections(), canListen);
+ QCOMPARE(server.isListening(), canListen);
+ // NOTE: socket disconnecting is not tested here
+
+ // server checks post connection
+ if (canListen) {
+ QCOMPARE(server.serverName(), name);
+ QVERIFY(server.fullServerName().contains(name));
+ QVERIFY(server.nextPendingConnection() != (QLocalSocket*)0);
+ QTRY_COMPARE(server.hits.count(), i + 1);
+ QCOMPARE(spyNewConnection.count(), i + 1);
+ QVERIFY(server.errorString() == QString());
+ QCOMPARE(server.serverError(), QAbstractSocket::UnknownSocketError);
+ } else {
+ QVERIFY(server.serverName().isEmpty());
+ QVERIFY(server.fullServerName().isEmpty());
+ QVERIFY(server.nextPendingConnection() == (QLocalSocket*)0);
+ QCOMPARE(spyNewConnection.count(), 0);
+ QCOMPARE(server.hits.count(), 0);
+ QVERIFY(server.errorString() != QString());
+ QCOMPARE(server.serverError(), QAbstractSocket::HostNotFoundError);
+ }
+ }
+ qDeleteAll(sockets.begin(), sockets.end());
+
+ server.close();
+
+ QCOMPARE(server.hits.count(), (canListen ? connections : 0));
+ QCOMPARE(spyNewConnection.count(), (canListen ? connections : 0));
+}
+
+void tst_QLocalSocket::sendData_data()
+{
+ listenAndConnect_data();
+}
+
+void tst_QLocalSocket::sendData()
+{
+ QFETCH(QString, name);
+#ifdef Q_OS_SYMBIAN
+ unlink(name);
+#endif
+ QFETCH(bool, canListen);
+
+ LocalServer server;
+ QSignalSpy spy(&server, SIGNAL(newConnection()));
+
+ QCOMPARE(server.listen(name), canListen);
+
+ LocalSocket socket;
+ QSignalSpy spyConnected(&socket, SIGNAL(connected()));
+ QSignalSpy spyDisconnected(&socket, SIGNAL(disconnected()));
+ QSignalSpy spyError(&socket, SIGNAL(error(QLocalSocket::LocalSocketError)));
+ QSignalSpy spyStateChanged(&socket, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)));
+ QSignalSpy spyReadyRead(&socket, SIGNAL(readyRead()));
+
+ // test creating a connection
+ socket.connectToServer(name);
+ bool timedOut = true;
+
+ QCOMPARE(server.waitForNewConnection(3000, &timedOut), canListen);
+
+#if defined(QT_LOCALSOCKET_TCP)
+ QTest::qWait(250);
+#endif
+ QVERIFY(!timedOut);
+ QCOMPARE(spyConnected.count(), canListen ? 1 : 0);
+ QCOMPARE(socket.state(), canListen ? QLocalSocket::ConnectedState : QLocalSocket::UnconnectedState);
+
+ // test sending/receiving data
+ if (server.hasPendingConnections()) {
+ QString testLine = "test";
+#ifdef Q_OS_SYMBIAN
+ for (int i = 0; i < 25 * 1024; ++i)
+#else
+ for (int i = 0; i < 50000; ++i)
+#endif
+ testLine += "a";
+ QLocalSocket *serverSocket = server.nextPendingConnection();
+ QVERIFY(serverSocket);
+ QCOMPARE(serverSocket->state(), QLocalSocket::ConnectedState);
+ QTextStream out(serverSocket);
+ QTextStream in(&socket);
+ out << testLine << endl;
+ bool wrote = serverSocket->waitForBytesWritten(3000);
+
+ if (!socket.canReadLine())
+ QVERIFY(socket.waitForReadyRead());
+
+ QVERIFY(socket.bytesAvailable() >= 0);
+ QCOMPARE(socket.bytesToWrite(), (qint64)0);
+ QCOMPARE(socket.flush(), false);
+ QCOMPARE(socket.isValid(), canListen);
+ QCOMPARE(socket.readBufferSize(), (qint64)0);
+ QCOMPARE(spyReadyRead.count(), 1);
+
+ QVERIFY(testLine.startsWith(in.readLine()));
+
+ QVERIFY(wrote || serverSocket->waitForBytesWritten(1000));
+
+ QCOMPARE(serverSocket->errorString(), QString("Unknown error"));
+ QCOMPARE(socket.errorString(), QString("Unknown error"));
+ }
+
+ socket.disconnectFromServer();
+ QCOMPARE(spyConnected.count(), canListen ? 1 : 0);
+ QCOMPARE(spyDisconnected.count(), canListen ? 1 : 0);
+ QCOMPARE(spyError.count(), canListen ? 0 : 1);
+ QCOMPARE(spyStateChanged.count(), canListen ? 4 : 2);
+ QCOMPARE(spyReadyRead.count(), canListen ? 1 : 0);
+
+ server.close();
+
+ QCOMPARE(server.hits.count(), (canListen ? 1 : 0));
+ QCOMPARE(spy.count(), (canListen ? 1 : 0));
+}
+
+void tst_QLocalSocket::readBufferOverflow()
+{
+ const int readBufferSize = 128;
+ const int dataBufferSize = readBufferSize * 2;
+ const QString serverName = QLatin1String("myPreciousTestServer");
+ LocalServer server;
+ server.listen(serverName);
+ QVERIFY(server.isListening());
+
+ LocalSocket client;
+ client.setReadBufferSize(readBufferSize);
+ client.connectToServer(serverName);
+
+ bool timedOut = true;
+ QVERIFY(server.waitForNewConnection(3000, &timedOut));
+ QVERIFY(!timedOut);
+
+ QCOMPARE(client.state(), QLocalSocket::ConnectedState);
+ QVERIFY(server.hasPendingConnections());
+
+ QLocalSocket* serverSocket = server.nextPendingConnection();
+ char buffer[dataBufferSize];
+ memset(buffer, 0, dataBufferSize);
+ serverSocket->write(buffer, dataBufferSize);
+ serverSocket->waitForBytesWritten();
+
+ // wait until the first 128 bytes are ready to read
+ QVERIFY(client.waitForReadyRead());
+ QCOMPARE(client.read(buffer, readBufferSize), qint64(readBufferSize));
+ // wait until the second 128 bytes are ready to read
+ QVERIFY(client.waitForReadyRead());
+ QCOMPARE(client.read(buffer, readBufferSize), qint64(readBufferSize));
+ // no more bytes available
+ QVERIFY(client.bytesAvailable() == 0);
+}
+
+// QLocalSocket/Server can take a name or path, check that it works as expected
+void tst_QLocalSocket::fullPath()
+{
+ QLocalServer server;
+ QString name = "qlocalsocket_pathtest";
+#if defined(Q_OS_SYMBIAN)
+ QString path = "";
+#elif defined(QT_LOCALSOCKET_TCP)
+ QString path = "QLocalServer";
+#elif defined(Q_OS_WIN)
+ QString path = "\\\\.\\pipe\\";
+#else
+ QString path = "/tmp";
+#endif
+ QString serverName = path + '/' + name;
+ QVERIFY2(server.listen(serverName), server.errorString().toLatin1().constData());
+ QCOMPARE(server.serverName(), serverName);
+ QCOMPARE(server.fullServerName(), serverName);
+
+ LocalSocket socket;
+ socket.connectToServer(serverName);
+
+ QCOMPARE(socket.serverName(), serverName);
+ QCOMPARE(socket.fullServerName(), serverName);
+ socket.disconnectFromServer();
+#ifdef QT_LOCALSOCKET_TCP
+ QTest::qWait(250);
+#endif
+ QCOMPARE(socket.serverName(), QString());
+ QCOMPARE(socket.fullServerName(), QString());
+}
+
+void tst_QLocalSocket::hitMaximumConnections_data()
+{
+ QTest::addColumn<int>("max");
+ QTest::newRow("none") << 0;
+ QTest::newRow("1") << 1;
+ QTest::newRow("3") << 3;
+}
+
+void tst_QLocalSocket::hitMaximumConnections()
+{
+ QFETCH(int, max);
+ LocalServer server;
+ QString name = "tst_localsocket";
+#ifdef Q_OS_SYMBIAN
+ unlink(name);
+#endif
+ server.setMaxPendingConnections(max);
+ QVERIFY2(server.listen(name), server.errorString().toLatin1().constData());
+ int connections = server.maxPendingConnections() + 1;
+ QList<QLocalSocket*> sockets;
+ for (int i = 0; i < connections; ++i) {
+ LocalSocket *socket = new LocalSocket;
+ sockets.append(socket);
+ socket->connectToServer(name);
+ }
+ bool timedOut = true;
+ QVERIFY(server.waitForNewConnection(3000, &timedOut));
+ QVERIFY(!timedOut);
+ QVERIFY(server.hits.count() > 0);
+ qDeleteAll(sockets.begin(), sockets.end());
+}
+
+// check that state and mode are kept
+void tst_QLocalSocket::setSocketDescriptor()
+{
+ LocalSocket socket;
+ quintptr minusOne = -1;
+ socket.setSocketDescriptor(minusOne, QLocalSocket::ConnectingState, QIODevice::Append);
+ QCOMPARE(socket.socketDescriptor(), minusOne);
+ QCOMPARE(socket.state(), QLocalSocket::ConnectingState);
+ QVERIFY((socket.openMode() & QIODevice::Append) != 0);
+}
+
+class Client : public QThread
+{
+
+public:
+ void run()
+ {
+ QString testLine = "test";
+ LocalSocket socket;
+ QSignalSpy spyReadyRead(&socket, SIGNAL(readyRead()));
+ socket.connectToServer("qlocalsocket_threadtest");
+ QVERIFY(socket.waitForConnected(1000));
+
+ // We should *not* have this signal yet!
+ QCOMPARE(spyReadyRead.count(), 0);
+ socket.waitForReadyRead();
+ QCOMPARE(spyReadyRead.count(), 1);
+ QTextStream in(&socket);
+ QCOMPARE(in.readLine(), testLine);
+ socket.close();
+ }
+};
+
+class Server : public QThread
+{
+
+public:
+ int clients;
+ QMutex mutex;
+ QWaitCondition wc;
+ void run()
+ {
+ QString testLine = "test";
+ LocalServer server;
+ server.setMaxPendingConnections(10);
+ QVERIFY2(server.listen("qlocalsocket_threadtest"),
+ server.errorString().toLatin1().constData());
+ mutex.lock();
+ wc.wakeAll();
+ mutex.unlock();
+ int done = clients;
+ while (done > 0) {
+ bool timedOut = true;
+ QVERIFY(server.waitForNewConnection(7000, &timedOut));
+ QVERIFY(!timedOut);
+ QLocalSocket *serverSocket = server.nextPendingConnection();
+ QVERIFY(serverSocket);
+ QTextStream out(serverSocket);
+ out << testLine << endl;
+ QCOMPARE(serverSocket->state(), QLocalSocket::ConnectedState);
+ QVERIFY2(serverSocket->waitForBytesWritten(), serverSocket->errorString().toLatin1().constData());
+ QCOMPARE(serverSocket->errorString(), QString("Unknown error"));
+ --done;
+ delete serverSocket;
+ }
+ QCOMPARE(server.hits.count(), clients);
+ }
+};
+
+void tst_QLocalSocket::threadedConnection_data()
+{
+ QTest::addColumn<int>("threads");
+ QTest::newRow("1 client") << 1;
+ QTest::newRow("2 clients") << 2;
+ QTest::newRow("5 clients") << 5;
+#ifndef Q_OS_WINCE
+ QTest::newRow("10 clients") << 10;
+ QTest::newRow("20 clients") << 20;
+#endif
+}
+
+void tst_QLocalSocket::threadedConnection()
+{
+#ifdef Q_OS_SYMBIAN
+ unlink("qlocalsocket_threadtest");
+#endif
+
+ QFETCH(int, threads);
+ Server server;
+#if defined(Q_OS_SYMBIAN)
+ server.setStackSize(0x14000);
+#endif
+ server.clients = threads;
+ server.mutex.lock();
+ server.start();
+ server.wc.wait(&server.mutex);
+
+ QList<Client*> clients;
+ for (int i = 0; i < threads; ++i) {
+ clients.append(new Client());
+#if defined(Q_OS_SYMBIAN)
+ clients.last()->setStackSize(0x14000);
+#endif
+ clients.last()->start();
+ }
+
+ server.wait();
+ while (!clients.isEmpty()) {
+ QVERIFY(clients.first()->wait(3000));
+ delete clients.takeFirst();
+ }
+}
+
+void tst_QLocalSocket::processConnection_data()
+{
+ QTest::addColumn<int>("processes");
+ QTest::newRow("1 client") << 1;
+#ifndef Q_OS_WIN
+ QTest::newRow("2 clients") << 2;
+ QTest::newRow("5 clients") << 5;
+#endif
+ QTest::newRow("30 clients") << 30;
+}
+
+/*!
+ Create external processes that produce and consume.
+ */
+void tst_QLocalSocket::processConnection()
+{
+#if defined(QT_NO_PROCESS) || defined(Q_CC_NOKIAX86)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+ QFETCH(int, processes);
+ QStringList serverArguments = QStringList() << SRCDIR "lackey/scripts/server.js" << QString::number(processes);
+ QProcess producer;
+ producer.setProcessChannelMode(QProcess::ForwardedChannels);
+#ifdef Q_WS_QWS
+ serverArguments << "-qws";
+#endif
+ QList<QProcess*> consumers;
+ producer.start("lackey/lackey", serverArguments);
+ QVERIFY(producer.waitForStarted(-1));
+ QTest::qWait(2000);
+ for (int i = 0; i < processes; ++i) {
+ QStringList arguments = QStringList() << SRCDIR "lackey/scripts/client.js";
+#ifdef Q_WS_QWS
+ arguments << "-qws";
+#endif
+ QProcess *p = new QProcess;
+ p->setProcessChannelMode(QProcess::ForwardedChannels);
+ consumers.append(p);
+ p->start("lackey/lackey", arguments);
+ }
+
+ while (!consumers.isEmpty()) {
+ consumers.first()->waitForFinished(20000);
+ QCOMPARE(consumers.first()->exitStatus(), QProcess::NormalExit);
+ QCOMPARE(consumers.first()->exitCode(), 0);
+ QProcess *consumer = consumers.takeFirst();
+ consumer->terminate();
+ delete consumer;
+ }
+ producer.waitForFinished(15000);
+#endif
+}
+
+void tst_QLocalSocket::longPath()
+{
+#ifndef Q_OS_WIN
+ QString name;
+ for (int i = 0; i < 256; ++i)
+ name += 'a';
+ LocalServer server;
+ QVERIFY(!server.listen(name));
+
+ LocalSocket socket;
+ socket.connectToServer(name);
+ QCOMPARE(socket.state(), QLocalSocket::UnconnectedState);
+#endif
+}
+
+void tst_QLocalSocket::waitForDisconnect()
+{
+ QString name = "tst_localsocket";
+#ifdef Q_OS_SYMBIAN
+ unlink(name);
+#endif
+ LocalServer server;
+ QVERIFY(server.listen(name));
+ LocalSocket socket;
+ socket.connectToServer(name);
+ QVERIFY(socket.waitForConnected(3000));
+ QVERIFY(server.waitForNewConnection(3000));
+ QLocalSocket *serverSocket = server.nextPendingConnection();
+ QVERIFY(serverSocket);
+ socket.disconnectFromServer();
+ QTime timer;
+ timer.start();
+ QVERIFY(serverSocket->waitForDisconnected(3000));
+ QVERIFY(timer.elapsed() < 2000);
+}
+
+void tst_QLocalSocket::waitForDisconnectByServer()
+{
+ QString name = "tst_localsocket";
+ LocalServer server;
+ QVERIFY(server.listen(name));
+ LocalSocket socket;
+ QSignalSpy spy(&socket, SIGNAL(disconnected()));
+ QVERIFY(spy.isValid());
+ socket.connectToServer(name);
+ QVERIFY(socket.waitForConnected(3000));
+ QVERIFY(server.waitForNewConnection(3000));
+ QLocalSocket *serverSocket = server.nextPendingConnection();
+ QVERIFY(serverSocket);
+ serverSocket->close();
+ QVERIFY(serverSocket->state() == QLocalSocket::UnconnectedState);
+ QVERIFY(socket.waitForDisconnected(3000));
+ QCOMPARE(spy.count(), 1);
+}
+
+void tst_QLocalSocket::removeServer()
+{
+ // this is a hostile takeover, but recovering from a crash results in the same
+ QLocalServer server, server2;
+ QVERIFY(QLocalServer::removeServer("cleanuptest"));
+ QVERIFY(server.listen("cleanuptest"));
+#ifndef Q_OS_WIN
+ // on Windows, there can be several sockets listening on the same pipe
+ // on Unix, there can only be one socket instance
+ QVERIFY(! server2.listen("cleanuptest"));
+#endif
+ QVERIFY(QLocalServer::removeServer("cleanuptest"));
+ QVERIFY(server2.listen("cleanuptest"));
+}
+
+void tst_QLocalSocket::recycleServer()
+{
+#ifdef Q_OS_SYMBIAN
+ unlink("recycletest1");
+#endif
+
+ QLocalServer server;
+ QLocalSocket client;
+
+ QVERIFY(server.listen("recycletest1"));
+ client.connectToServer("recycletest1");
+ QVERIFY(client.waitForConnected(201));
+ QVERIFY(server.waitForNewConnection(201));
+ QVERIFY(server.nextPendingConnection() != 0);
+
+ server.close();
+ client.disconnectFromServer();
+ qApp->processEvents();
+
+ QVERIFY(server.listen("recycletest2"));
+ client.connectToServer("recycletest2");
+ QVERIFY(client.waitForConnected(202));
+ QVERIFY(server.waitForNewConnection(202));
+ QVERIFY(server.nextPendingConnection() != 0);
+}
+
+void tst_QLocalSocket::multiConnect()
+{
+ QLocalServer server;
+ QLocalSocket client1;
+ QLocalSocket client2;
+ QLocalSocket client3;
+
+ QVERIFY(server.listen("multiconnect"));
+
+ client1.connectToServer("multiconnect");
+ client2.connectToServer("multiconnect");
+ client3.connectToServer("multiconnect");
+
+ QVERIFY(client1.waitForConnected(201));
+ QVERIFY(client2.waitForConnected(202));
+ QVERIFY(client3.waitForConnected(203));
+
+ QVERIFY(server.waitForNewConnection(201));
+ QVERIFY(server.nextPendingConnection() != 0);
+ QVERIFY(server.waitForNewConnection(202));
+ QVERIFY(server.nextPendingConnection() != 0);
+ QVERIFY(server.waitForNewConnection(203));
+ QVERIFY(server.nextPendingConnection() != 0);
+}
+
+void tst_QLocalSocket::writeOnlySocket()
+{
+ QLocalServer server;
+#ifdef Q_OS_SYMBIAN
+ unlink("writeOnlySocket");
+#endif
+ QVERIFY(server.listen("writeOnlySocket"));
+
+ QLocalSocket client;
+ client.connectToServer("writeOnlySocket", QIODevice::WriteOnly);
+ QVERIFY(client.waitForConnected());
+#if defined(Q_OS_SYMBIAN)
+ QTest::qWait(250);
+#endif
+ QVERIFY(server.waitForNewConnection(200));
+ QLocalSocket* serverSocket = server.nextPendingConnection();
+ QVERIFY(serverSocket);
+
+ QCOMPARE(client.bytesAvailable(), qint64(0));
+ QCOMPARE(client.state(), QLocalSocket::ConnectedState);
+}
+
+void tst_QLocalSocket::writeToClientAndDisconnect()
+{
+#ifdef Q_OS_SYMBIAN
+ unlink("writeAndDisconnectServer");
+#endif
+
+ QLocalServer server;
+ QLocalSocket client;
+ QSignalSpy readChannelFinishedSpy(&client, SIGNAL(readChannelFinished()));
+
+ QVERIFY(server.listen("writeAndDisconnectServer"));
+ client.connectToServer("writeAndDisconnectServer");
+ QVERIFY(client.waitForConnected(200));
+ QVERIFY(server.waitForNewConnection(200));
+ QLocalSocket* clientSocket = server.nextPendingConnection();
+ QVERIFY(clientSocket);
+
+ char buffer[100];
+ memset(buffer, 0, sizeof(buffer));
+ QCOMPARE(clientSocket->write(buffer, sizeof(buffer)), (qint64)sizeof(buffer));
+ clientSocket->waitForBytesWritten();
+ clientSocket->close();
+ server.close();
+
+ QTRY_COMPARE(readChannelFinishedSpy.count(), 1);
+ QCOMPARE(client.read(buffer, sizeof(buffer)), (qint64)sizeof(buffer));
+ client.waitForDisconnected();
+ QCOMPARE(client.state(), QLocalSocket::UnconnectedState);
+}
+
+void tst_QLocalSocket::debug()
+{
+ // Make sure this compiles
+ qDebug() << QLocalSocket::ConnectionRefusedError << QLocalSocket::UnconnectedState;
+}
+
+class WriteThread : public QThread
+{
+Q_OBJECT
+public:
+ void run() {
+ QLocalSocket socket;
+ socket.connectToServer("qlocalsocket_readyread");
+
+ if (!socket.waitForConnected(3000))
+ exec();
+ connect(&socket, SIGNAL(bytesWritten(qint64)),
+ this, SLOT(bytesWritten(qint64)), Qt::QueuedConnection);
+ socket.write("testing\n");
+ exec();
+ }
+public slots:
+ void bytesWritten(qint64) {
+ exit();
+ }
+
+private:
+};
+
+/*
+ Tests the emission of the bytesWritten(qint64)
+ signal.
+
+ Create a thread that will write to a socket.
+ If the bytesWritten(qint64) signal is generated,
+ the slot connected to it will exit the thread,
+ indicating test success.
+
+*/
+void tst_QLocalSocket::bytesWrittenSignal()
+{
+ QLocalServer server;
+ QVERIFY(server.listen("qlocalsocket_readyread"));
+ WriteThread writeThread;
+ writeThread.start();
+ bool timedOut = false;
+ QVERIFY(server.waitForNewConnection(3000, &timedOut));
+ QVERIFY(!timedOut);
+ QTest::qWait(2000);
+ QVERIFY(writeThread.wait(2000));
+}
+
+void tst_QLocalSocket::syncDisconnectNotify()
+{
+#ifdef Q_OS_SYMBIAN
+ unlink("syncDisconnectNotify");
+#endif
+
+ QLocalServer server;
+ QVERIFY(server.listen("syncDisconnectNotify"));
+ QLocalSocket client;
+ client.connectToServer("syncDisconnectNotify");
+ QVERIFY(server.waitForNewConnection());
+ QLocalSocket* serverSocket = server.nextPendingConnection();
+ QVERIFY(serverSocket);
+ delete serverSocket;
+ QCOMPARE(client.waitForReadyRead(), false);
+}
+
+void tst_QLocalSocket::asyncDisconnectNotify()
+{
+#ifdef Q_OS_SYMBIAN
+ unlink("asyncDisconnectNotify");
+#endif
+
+ QLocalServer server;
+ QVERIFY(server.listen("asyncDisconnectNotify"));
+ QLocalSocket client;
+ QSignalSpy disconnectedSpy(&client, SIGNAL(disconnected()));
+ client.connectToServer("asyncDisconnectNotify");
+ QVERIFY(server.waitForNewConnection());
+ QLocalSocket* serverSocket = server.nextPendingConnection();
+ QVERIFY(serverSocket);
+ delete serverSocket;
+ QTRY_VERIFY(!disconnectedSpy.isEmpty());
+}
+
+#ifdef Q_OS_SYMBIAN
+void tst_QLocalSocket::unlink(QString name)
+{
+ if(name.length() == 0)
+ return;
+
+ QString fullName;
+ // determine the full server path
+ if (name.startsWith(QLatin1Char('/'))) {
+ fullName = name;
+ } else {
+ fullName = QDir::cleanPath(QDir::tempPath());
+ fullName += QLatin1Char('/') + name;
+ fullName = QDir::toNativeSeparators(fullName);
+ }
+
+ int result = ::unlink(fullName.toUtf8().data());
+
+ if(result != 0) {
+ qWarning() << "Unlinking " << fullName << " failed with " << strerror(errno);
+ }
+}
+#endif
+QTEST_MAIN(tst_QLocalSocket)
+#include "tst_qlocalsocket.moc"
+
diff --git a/tests/auto/qsocks5socketengine/.gitignore b/tests/auto/network/socket/qsocks5socketengine/.gitignore
index 7d64805f3c..7d64805f3c 100644
--- a/tests/auto/qsocks5socketengine/.gitignore
+++ b/tests/auto/network/socket/qsocks5socketengine/.gitignore
diff --git a/tests/auto/qsocks5socketengine/qsocks5socketengine.pro b/tests/auto/network/socket/qsocks5socketengine/qsocks5socketengine.pro
index 3a144aeacf..3a144aeacf 100644
--- a/tests/auto/qsocks5socketengine/qsocks5socketengine.pro
+++ b/tests/auto/network/socket/qsocks5socketengine/qsocks5socketengine.pro
diff --git a/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp b/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp
new file mode 100644
index 0000000000..2678816482
--- /dev/null
+++ b/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp
@@ -0,0 +1,963 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QTest>
+#include <QtTest/QTestEventLoop>
+
+#include <QtCore/QQueue>
+#include <QtCore/QString>
+#include <QtCore/QCoreApplication>
+#include <QtCore/QMetaType>
+
+#include <private/qsocks5socketengine_p.h>
+#include <qhostinfo.h>
+#include <qhostaddress.h>
+#include <qtcpsocket.h>
+#include <qhttp.h>
+#include <qauthenticator.h>
+#include <qdebug.h>
+#include <qtcpserver.h>
+#include <qmetatype.h>
+#include <qdebug.h>
+
+#include "../../../network-settings.h"
+
+Q_DECLARE_METATYPE(QQueue<QByteArray>)
+
+class tst_QSocks5SocketEngine : public QObject, public QAbstractSocketEngineReceiver
+{
+ Q_OBJECT
+
+public:
+ tst_QSocks5SocketEngine();
+ virtual ~tst_QSocks5SocketEngine();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void construction();
+ void errorTest_data();
+ void errorTest();
+ void simpleConnectToIMAP();
+ void simpleErrorsAndStates();
+ void udpTest();
+ void serverTest();
+ void tcpSocketBlockingTest();
+ void tcpSocketNonBlockingTest();
+ void downloadBigFile();
+ // void tcpLoopbackPerformance();
+ void passwordAuth();
+ void passwordAuth2();
+
+protected slots:
+ void tcpSocketNonBlocking_hostFound();
+ void tcpSocketNonBlocking_connected();
+ void tcpSocketNonBlocking_closed();
+ void tcpSocketNonBlocking_readyRead();
+ void tcpSocketNonBlocking_bytesWritten(qint64);
+ void exitLoopSlot();
+ void downloadBigFileSlot();
+ void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth);
+
+private:
+ void readNotification() { }
+ void writeNotification() { }
+ void exceptionNotification() { }
+ void connectionNotification() { }
+ QTcpSocket *tcpSocketNonBlocking_socket;
+ QStringList tcpSocketNonBlocking_data;
+ qint64 tcpSocketNonBlocking_totalWritten;
+ QTcpSocket *tmpSocket;
+ qint64 bytesAvailable;
+};
+
+class MiniSocks5Server: public QTcpServer
+{
+ Q_OBJECT
+public:
+ QQueue<QByteArray> responses;
+
+ MiniSocks5Server(const QQueue<QByteArray> r)
+ : responses(r)
+ {
+ listen();
+ connect(this, SIGNAL(newConnection()), SLOT(handleNewConnection()));
+ }
+
+private slots:
+ void handleNewConnection()
+ {
+ QTcpSocket *client = nextPendingConnection();
+ connect(client, SIGNAL(readyRead()), SLOT(handleClientCommand()));
+ client->setProperty("pendingResponses", qVariantFromValue(responses));
+ }
+
+ void handleClientCommand()
+ {
+ // WARNING
+ // this assumes that the client command is received in its entirety
+ // should be ok, since SOCKSv5 commands are rather small
+ QTcpSocket *client = static_cast<QTcpSocket *>(sender());
+ QQueue<QByteArray> pendingResponses =
+ qvariant_cast<QQueue<QByteArray> >(client->property("pendingResponses"));
+ if (pendingResponses.isEmpty())
+ client->disconnectFromHost();
+ else
+ client->write(pendingResponses.dequeue());
+ client->setProperty("pendingResponses", qVariantFromValue(pendingResponses));
+ }
+};
+
+tst_QSocks5SocketEngine::tst_QSocks5SocketEngine()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+tst_QSocks5SocketEngine::~tst_QSocks5SocketEngine()
+{
+}
+
+void tst_QSocks5SocketEngine::init()
+{
+ tmpSocket = 0;
+ bytesAvailable = 0;
+}
+
+void tst_QSocks5SocketEngine::cleanup()
+{
+}
+
+//---------------------------------------------------------------------------
+void tst_QSocks5SocketEngine::construction()
+{
+ QSocks5SocketEngine socketDevice;
+
+ QVERIFY(!socketDevice.isValid());
+
+ // Initialize device
+ QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(socketDevice.isValid());
+ QVERIFY(socketDevice.protocol() == QAbstractSocket::IPv4Protocol);
+ QVERIFY(socketDevice.socketType() == QAbstractSocket::TcpSocket);
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+ // QVERIFY(socketDevice.socketDescriptor() != -1);
+ QVERIFY(socketDevice.localAddress() == QHostAddress());
+ QVERIFY(socketDevice.localPort() == 0);
+ QVERIFY(socketDevice.peerAddress() == QHostAddress());
+ QVERIFY(socketDevice.peerPort() == 0);
+ QVERIFY(socketDevice.error() == QAbstractSocket::UnknownSocketError);
+
+ //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::bytesAvailable() was called in QAbstractSocket::UnconnectedState");
+ QVERIFY(socketDevice.bytesAvailable() == 0);
+
+ //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::hasPendingDatagrams() was called in QAbstractSocket::UnconnectedState");
+ QVERIFY(!socketDevice.hasPendingDatagrams());
+}
+
+//---------------------------------------------------------------------------
+void tst_QSocks5SocketEngine::errorTest_data()
+{
+ QTest::addColumn<QString>("hostname");
+ QTest::addColumn<int>("port");
+ QTest::addColumn<QString>("username");
+ QTest::addColumn<QQueue<QByteArray> >("responses");
+ QTest::addColumn<int>("expectedError");
+
+ QQueue<QByteArray> responses;
+ QTest::newRow("proxy-host-not-found") << "this-host-does-not-exist." << 1080 << QString()
+ << responses
+ << int(QAbstractSocket::ProxyNotFoundError);
+ QTest::newRow("proxy-connection-refused") << "127.0.0.1" << 2 << QString()
+ << responses
+ << int(QAbstractSocket::ProxyConnectionRefusedError);
+
+#define REPLY(name, contents) \
+ static const char raw_ ## name [] = contents; \
+ const QByteArray name = QByteArray::fromRawData(raw_ ## name, sizeof raw_ ## name - 1)
+
+ REPLY(garbage, "\4\4\4\4");
+ // authentication method replies
+ REPLY(noAuthentication, "\5\0");
+ REPLY(passwordAuthentication, "\5\2");
+ REPLY(garbageAuthentication, "\5\177");
+ REPLY(noAcceptableAuthentication, "\5\377");
+ // authentication replies
+ REPLY(authenticationAccepted, "\5\0");
+ REPLY(authenticationNotAccepted, "\5\1");
+ // connection replies
+ REPLY(connectionAccepted, "\5\0\0\4\177\0\0\1\0\100");
+ REPLY(connectionNotAllowed, "\5\2\0");
+ REPLY(networkUnreachable, "\5\3\0");
+ REPLY(hostUnreachable, "\5\4\0");
+ REPLY(connectionRefused, "\5\5\0");
+
+#undef REPLY
+
+ responses << garbage;
+ QTest::newRow("garbage1") << QString() << 0 << QString() << responses
+ << int(QAbstractSocket::ProxyProtocolError);
+
+ responses.clear();
+ responses << noAuthentication << garbage;
+ QTest::newRow("garbage2") << QString() << 0 << QString() << responses
+ << int(QAbstractSocket::ProxyProtocolError);
+
+ responses.clear();
+ responses << garbageAuthentication;
+ QTest::newRow("unknown-auth-method") << QString() << 0 << QString()
+ << responses
+ << int(QAbstractSocket::SocketAccessError);
+
+ responses.clear();
+ responses << noAcceptableAuthentication;
+ QTest::newRow("no-acceptable-authentication") << QString() << 0 << QString()
+ << responses
+ << int(QAbstractSocket::ProxyAuthenticationRequiredError);
+
+ responses.clear();
+ responses << passwordAuthentication << authenticationNotAccepted;
+ QTest::newRow("authentication-required") << QString() << 0 << "foo"
+ << responses
+ << int(QAbstractSocket::ProxyAuthenticationRequiredError);
+
+ responses.clear();
+ responses << noAuthentication << connectionNotAllowed;
+ QTest::newRow("connection-not-allowed") << QString() << 0 << QString()
+ << responses
+ << int(QAbstractSocket::SocketAccessError);
+
+ responses.clear();
+ responses << noAuthentication << networkUnreachable;
+ QTest::newRow("network-unreachable") << QString() << 0 << QString()
+ << responses
+ << int(QAbstractSocket::NetworkError);
+
+ responses.clear();
+ responses << noAuthentication << hostUnreachable;
+ QTest::newRow("host-unreachable") << QString() << 0 << QString()
+ << responses
+ << int(QAbstractSocket::HostNotFoundError);
+
+ responses.clear();
+ responses << noAuthentication << connectionRefused;
+ QTest::newRow("connection-refused") << QString() << 0 << QString()
+ << responses
+ << int(QAbstractSocket::ConnectionRefusedError);
+}
+
+void tst_QSocks5SocketEngine::errorTest()
+{
+ QFETCH(QString, hostname);
+ QFETCH(int, port);
+ QFETCH(QString, username);
+ QFETCH(QQueue<QByteArray>, responses);
+ QFETCH(int, expectedError);
+
+ MiniSocks5Server server(responses);
+
+ if (hostname.isEmpty()) {
+ hostname = "127.0.0.1";
+ port = server.serverPort();
+ }
+ QTcpSocket socket;
+ socket.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, hostname, port, username, username));
+ socket.connectToHost("0.1.2.3", 12345);
+
+ connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(int(socket.error()), expectedError);
+}
+
+//---------------------------------------------------------------------------
+void tst_QSocks5SocketEngine::simpleConnectToIMAP()
+{
+ QSocks5SocketEngine socketDevice;
+
+ // Initialize device
+ QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+
+ socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
+
+ QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
+ QVERIFY(socketDevice.waitForWrite());
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
+
+ // Wait for the greeting
+ QVERIFY(socketDevice.waitForRead());
+
+ // Read the greeting
+ qint64 available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ QByteArray array;
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
+
+ // Write a logout message
+ QByteArray array2 = "XXXX LOGOUT\r\n";
+ QVERIFY(socketDevice.write(array2.data(),
+ array2.size()) == array2.size());
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+
+ available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QCOMPARE(array.constData(), "* BYE LOGOUT received\r\nXXXX OK Completed\r\n");
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+ char c;
+ QVERIFY(socketDevice.read(&c, sizeof(c)) == -1);
+ QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+}
+
+//---------------------------------------------------------------------------
+void tst_QSocks5SocketEngine::simpleErrorsAndStates()
+{
+ {
+ QSocks5SocketEngine socketDevice;
+
+ // Initialize device
+ QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+
+ socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
+
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+ QVERIFY(!socketDevice.connectToHost(QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first(), 8088));
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
+ if (socketDevice.waitForWrite(15000)) {
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState ||
+ socketDevice.state() == QAbstractSocket::ConnectedState);
+ } else {
+ QVERIFY(socketDevice.error() == QAbstractSocket::SocketTimeoutError);
+ }
+ }
+
+}
+
+/*
+//---------------------------------------------------------------------------
+void tst_QSocks5SocketEngine::tcpLoopbackPerformance()
+{
+ QTcpServer server;
+
+ // Bind to any port on all interfaces
+ QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
+ QVERIFY(server.state() == QAbstractSocket::BoundState);
+ quint16 port = server.localPort();
+
+ // Listen for incoming connections
+ QVERIFY(server.listen());
+ QVERIFY(server.state() == QAbstractSocket::ListeningState);
+
+ // Initialize a Tcp socket
+ QSocks5SocketEngine client;
+ QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
+
+ client.setProxy(QHostAddress("80.232.37.158"), 1081);
+
+ // Connect to our server
+ if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) {
+ QVERIFY(client.waitForWrite());
+ QVERIFY(client.connectToHost(QHostAddress("127.0.0.1"), port));
+ }
+
+ // The server accepts the connectio
+ int socketDescriptor = server.accept();
+ QVERIFY(socketDescriptor > 0);
+
+ // A socket device is initialized on the server side, passing the
+ // socket descriptor from accept(). It's pre-connected.
+ QSocketLayer serverSocket;
+ QVERIFY(serverSocket.initialize(socketDescriptor));
+ QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
+
+ const int messageSize = 1024 * 256;
+ QByteArray message1(messageSize, '@');
+ QByteArray answer(messageSize, '@');
+
+ QTime timer;
+ timer.start();
+ qlonglong readBytes = 0;
+ while (timer.elapsed() < 5000) {
+ qlonglong written = serverSocket.write(message1.data(), message1.size());
+ while (written > 0) {
+ client.waitForRead();
+ if (client.bytesAvailable() > 0) {
+ qlonglong readNow = client.read(answer.data(), answer.size());
+ written -= readNow;
+ readBytes += readNow;
+ }
+ }
+ }
+
+ qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
+ readBytes / (1024.0 * 1024.0),
+ timer.elapsed() / 1024.0,
+ (readBytes / (timer.elapsed() / 1000.0)) / (1024 * 1024));
+}
+*/
+
+//---------------------------------------------------------------------------
+void tst_QSocks5SocketEngine::serverTest()
+{
+ QSocks5SocketEngine server;
+
+ // Initialize a Tcp socket
+ QVERIFY(server.initialize(QAbstractSocket::TcpSocket));
+
+ QNetworkProxy proxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
+
+ server.setProxy(proxy);
+
+ // Bind to any port on all interfaces
+ QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
+ QVERIFY(server.state() == QAbstractSocket::BoundState);
+
+ // Listen for incoming connections
+ QVERIFY(server.listen());
+ QVERIFY(server.state() == QAbstractSocket::ListeningState);
+
+ // Initialize a Tcp socket
+ QSocks5SocketEngine client;
+ QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
+
+ client.setProxy(proxy);
+
+ // QTest::wait(100000); // ### timing problem on win32
+
+
+ // Connect to our server
+ if (!client.connectToHost(server.localAddress(), server.localPort())) {
+ QVERIFY(client.waitForWrite());
+ // QTest::wait(100); // ### timing problem on win32
+ QVERIFY(client.state() == QAbstractSocket::ConnectedState);
+ //QTest::wait(100);
+ }
+
+ QVERIFY(server.waitForRead());
+
+ // The server accepts the connection
+ int socketDescriptor = server.accept();
+ QVERIFY(socketDescriptor > 0);
+
+ // A socket device is initialized on the server side, passing the
+ // socket descriptor from accept(). It's pre-connected.
+
+ QSocks5SocketEngine serverSocket;
+ QVERIFY(serverSocket.initialize(socketDescriptor));
+ QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
+
+ QVERIFY(serverSocket.localAddress() == client.peerAddress());
+ QVERIFY(serverSocket.localPort() == client.peerPort());
+ // this seems depends on the socks server implementation, especially
+ // when connecting /to/ the socks server /through/ the same socks server
+ //QVERIFY(serverSocket.peerAddress() == client.localAddress());
+ //QVERIFY(serverSocket.peerPort() == client.localPort());
+
+ // The server socket sends a greeting to the client
+ QByteArray greeting = "Greetings!";
+ QVERIFY(serverSocket.write(greeting.data(),
+ greeting.size()) == greeting.size());
+
+ // The client waits for the greeting to arrive
+ QVERIFY(client.waitForRead());
+ qint64 available = client.bytesAvailable();
+ QVERIFY(available > 0);
+
+ // The client reads the greeting and checks that it's correct
+ QByteArray response;
+ response.resize(available);
+ QVERIFY(client.read(response.data(),
+ response.size()) == response.size());
+ QCOMPARE(response, greeting);
+}
+
+
+//---------------------------------------------------------------------------
+void tst_QSocks5SocketEngine::udpTest()
+{
+#ifdef SYMBIAN_WINSOCK_CONNECTIVITY
+ QSKIP("UDP works bads on non WinPCAP emulator setting", SkipAll);
+#endif
+
+ QSocks5SocketEngine udpSocket;
+
+ // Initialize device #1
+ QVERIFY(udpSocket.initialize(QAbstractSocket::UdpSocket));
+ QVERIFY(udpSocket.isValid());
+
+ QNetworkProxy proxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
+
+ udpSocket.setProxy(proxy);
+
+ QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv4Protocol);
+ QVERIFY(udpSocket.socketType() == QAbstractSocket::UdpSocket);
+ QVERIFY(udpSocket.state() == QAbstractSocket::UnconnectedState);
+
+ // Bind #1
+ QVERIFY(udpSocket.bind(QHostAddress("0.0.0.0"), 0));
+ QVERIFY(udpSocket.state() == QAbstractSocket::BoundState);
+ QVERIFY(udpSocket.localPort() != 0);
+
+ // Initialize device #2
+ QSocks5SocketEngine udpSocket2;
+ QVERIFY(udpSocket2.initialize(QAbstractSocket::UdpSocket));
+
+ udpSocket2.setProxy(proxy);
+
+ // Connect device #2 to #1
+ QVERIFY(udpSocket2.connectToHost(udpSocket.localAddress(), udpSocket.localPort()));
+ QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState);
+
+ // Write a message to #1
+ QByteArray message1 = "hei der";
+ QVERIFY(udpSocket2.write(message1.data(),
+ message1.size()) == message1.size());
+
+ // Read the message from #2
+ QVERIFY(udpSocket.waitForRead());
+ QVERIFY(udpSocket.hasPendingDatagrams());
+ qint64 available = udpSocket.pendingDatagramSize();
+ QVERIFY(available > 0);
+ QByteArray answer;
+ answer.resize(available);
+ QHostAddress senderAddress;
+ quint16 senderPort = 0;
+ QVERIFY(udpSocket.readDatagram(answer.data(), answer.size(),
+ &senderAddress,
+ &senderPort) == message1.size());
+ QVERIFY(senderAddress == udpSocket2.localAddress());
+ QVERIFY(senderPort == udpSocket2.localPort());
+}
+
+void tst_QSocks5SocketEngine::tcpSocketBlockingTest()
+{
+ QSocks5SocketEngineHandler socks5;
+
+ QTcpSocket socket;
+
+ // Connect
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket.waitForConnected());
+ QCOMPARE(socket.state(), QTcpSocket::ConnectedState);
+
+ // Read greeting
+ QVERIFY(socket.waitForReadyRead(5000));
+ QString s = socket.readLine();
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(s.toLatin1()), s.toLatin1().constData());
+
+ // Write NOOP
+ QCOMPARE((int) socket.write("1 NOOP\r\n", 8), 8);
+
+ if (!socket.canReadLine())
+ QVERIFY(socket.waitForReadyRead(5000));
+
+ // Read response
+ s = socket.readLine();
+ QCOMPARE(s.toLatin1().constData(), "1 OK Completed\r\n");
+
+ // Write LOGOUT
+ QCOMPARE((int) socket.write("2 LOGOUT\r\n", 10), 10);
+
+ if (!socket.canReadLine())
+ QVERIFY(socket.waitForReadyRead(5000));
+
+ // Read two lines of respose
+ s = socket.readLine();
+ QCOMPARE(s.toLatin1().constData(), "* BYE LOGOUT received\r\n");
+
+ if (!socket.canReadLine())
+ QVERIFY(socket.waitForReadyRead(5000));
+
+ s = socket.readLine();
+ QCOMPARE(s.toLatin1().constData(), "2 OK Completed\r\n");
+
+ // Close the socket
+ socket.close();
+
+ // Check that it's closed
+ QCOMPARE(socket.state(), QTcpSocket::UnconnectedState);
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QSocks5SocketEngine::tcpSocketNonBlockingTest()
+{
+ QSocks5SocketEngineHandler socks5;
+
+ QTcpSocket socket;
+ connect(&socket, SIGNAL(hostFound()), SLOT(tcpSocketNonBlocking_hostFound()));
+ connect(&socket, SIGNAL(connected()), SLOT(tcpSocketNonBlocking_connected()));
+ connect(&socket, SIGNAL(disconnected()), SLOT(tcpSocketNonBlocking_closed()));
+ connect(&socket, SIGNAL(bytesWritten(qint64)), SLOT(tcpSocketNonBlocking_bytesWritten(qint64)));
+ connect(&socket, SIGNAL(readyRead()), SLOT(tcpSocketNonBlocking_readyRead()));
+ tcpSocketNonBlocking_socket = &socket;
+
+ // Connect
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket.state() == QTcpSocket::HostLookupState ||
+ socket.state() == QTcpSocket::ConnectingState);
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+ if (socket.state() == QTcpSocket::ConnectingState) {
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+ }
+
+ QCOMPARE(socket.state(), QTcpSocket::ConnectedState);
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+ // Read greeting
+ QVERIFY(!tcpSocketNonBlocking_data.isEmpty());
+ QByteArray data = tcpSocketNonBlocking_data.at(0).toLatin1();
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(data), data.constData());
+
+ tcpSocketNonBlocking_data.clear();
+
+ tcpSocketNonBlocking_totalWritten = 0;
+
+ // Write NOOP
+ QCOMPARE((int) socket.write("1 NOOP\r\n", 8), 8);
+
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+ QVERIFY(tcpSocketNonBlocking_totalWritten == 8);
+
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+ // Read response
+ QVERIFY(!tcpSocketNonBlocking_data.isEmpty());
+ QCOMPARE(tcpSocketNonBlocking_data.at(0).toLatin1().constData(), "1 OK Completed\r\n");
+ tcpSocketNonBlocking_data.clear();
+
+
+ tcpSocketNonBlocking_totalWritten = 0;
+
+ // Write LOGOUT
+ QCOMPARE((int) socket.write("2 LOGOUT\r\n", 10), 10);
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+ QVERIFY(tcpSocketNonBlocking_totalWritten == 10);
+
+ // Wait for greeting
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout()) {
+ QFAIL("Timed out");
+ }
+
+ // Read two lines of respose
+ QCOMPARE(tcpSocketNonBlocking_data.at(0).toLatin1().constData(), "* BYE LOGOUT received\r\n");
+ QCOMPARE(tcpSocketNonBlocking_data.at(1).toLatin1().constData(), "2 OK Completed\r\n");
+ tcpSocketNonBlocking_data.clear();
+
+ // Close the socket
+ socket.close();
+
+ // Check that it's closed
+ QCOMPARE(socket.state(), QTcpSocket::UnconnectedState);
+}
+
+void tst_QSocks5SocketEngine::tcpSocketNonBlocking_hostFound()
+{
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QSocks5SocketEngine::tcpSocketNonBlocking_connected()
+{
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QSocks5SocketEngine::tcpSocketNonBlocking_readyRead()
+{
+ while (tcpSocketNonBlocking_socket->canReadLine())
+ tcpSocketNonBlocking_data.append(tcpSocketNonBlocking_socket->readLine());
+
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QSocks5SocketEngine::tcpSocketNonBlocking_bytesWritten(qint64 written)
+{
+ tcpSocketNonBlocking_totalWritten += written;
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QSocks5SocketEngine::tcpSocketNonBlocking_closed()
+{
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QSocks5SocketEngine::downloadBigFile()
+{
+ QSocks5SocketEngineHandler socks5;
+
+ if (tmpSocket)
+ delete tmpSocket;
+ tmpSocket = new QTcpSocket;
+
+ connect(tmpSocket, SIGNAL(connected()), SLOT(exitLoopSlot()));
+ connect(tmpSocket, SIGNAL(readyRead()), SLOT(downloadBigFileSlot()));
+
+ tmpSocket->connectToHost(QtNetworkSettings::serverName(), 80);
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Network operation timed out");
+
+ QByteArray hostName = QtNetworkSettings::serverName().toLatin1();
+ QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState);
+ QVERIFY(tmpSocket->write("GET /qtest/mediumfile HTTP/1.0\r\n") > 0);
+ QVERIFY(tmpSocket->write("HOST: ") > 0);
+ QVERIFY(tmpSocket->write(hostName.data()) > 0);
+ QVERIFY(tmpSocket->write("\r\n") > 0);
+ QVERIFY(tmpSocket->write("\r\n") > 0);
+
+ bytesAvailable = 0;
+
+ QTime stopWatch;
+ stopWatch.start();
+
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QTestEventLoop::instance().enterLoop(60);
+#else
+ QTestEventLoop::instance().enterLoop(180);
+#endif
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Network operation timed out");
+
+ QCOMPARE(bytesAvailable, qint64(10000000));
+
+ QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState);
+
+ /*qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
+ bytesAvailable / (1024.0 * 1024.0),
+ stopWatch.elapsed() / 1024.0,
+ (bytesAvailable / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));*/
+
+ delete tmpSocket;
+ tmpSocket = 0;
+}
+
+void tst_QSocks5SocketEngine::exitLoopSlot()
+{
+ QTestEventLoop::instance().exitLoop();
+}
+
+
+void tst_QSocks5SocketEngine::downloadBigFileSlot()
+{
+ QByteArray tmp=tmpSocket->readAll();
+ int correction=tmp.indexOf((char)0,0); //skip header
+ if (correction==-1) correction=0;
+ bytesAvailable += (tmp.size()-correction);
+ if (bytesAvailable >= 10000000)
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QSocks5SocketEngine::passwordAuth()
+{
+ QSocks5SocketEngine socketDevice;
+
+ // Initialize device
+ QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+
+ socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080, "qsockstest", "password"));
+
+ // Connect to imap.trolltech.com's IP
+ QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
+ QVERIFY(socketDevice.waitForWrite());
+ if (!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143)) {
+ qDebug("%d, %s", socketDevice.error(), socketDevice.errorString().toLatin1().constData());
+ }
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
+
+ // Wait for the greeting
+ QVERIFY(socketDevice.waitForRead());
+
+ // Read the greeting
+ qint64 available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ QByteArray array;
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
+
+ // Write a logout message
+ QByteArray array2 = "XXXX LOGOUT\r\n";
+ QVERIFY(socketDevice.write(array2.data(),
+ array2.size()) == array2.size());
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+
+ available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QCOMPARE(array.constData(), "* BYE LOGOUT received\r\nXXXX OK Completed\r\n");
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+ char c;
+ QVERIFY(socketDevice.read(&c, sizeof(c)) == -1);
+ QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QSocks5SocketEngine::proxyAuthenticationRequired(const QNetworkProxy &,
+ QAuthenticator *auth)
+{
+ auth->setUser("qsockstest");
+ auth->setPassword("password");
+}
+
+void tst_QSocks5SocketEngine::passwordAuth2()
+{
+ QSocks5SocketEngine socketDevice;
+
+ // Initialize device
+ QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+
+ socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081));
+ socketDevice.setReceiver(this);
+
+ QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
+ while (socketDevice.state() == QAbstractSocket::ConnectingState) {
+ QVERIFY(socketDevice.waitForWrite());
+ socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143);
+ }
+ if (socketDevice.state() != QAbstractSocket::ConnectedState)
+ qDebug("%d, %s", socketDevice.error(), socketDevice.errorString().toLatin1().constData());
+ QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
+
+ // Wait for the greeting
+ QVERIFY(socketDevice.waitForRead());
+
+ // Read the greeting
+ qint64 available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ QByteArray array;
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
+
+ // Write a logout message
+ QByteArray array2 = "XXXX LOGOUT\r\n";
+ QVERIFY(socketDevice.write(array2.data(),
+ array2.size()) == array2.size());
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+
+ available = socketDevice.bytesAvailable();
+ QVERIFY(available > 0);
+ array.resize(available);
+ QVERIFY(socketDevice.read(array.data(), array.size()) == available);
+
+ // Check that the greeting is what we expect it to be
+ QCOMPARE(array.constData(), "* BYE LOGOUT received\r\nXXXX OK Completed\r\n");
+
+ // Wait for the response
+ QVERIFY(socketDevice.waitForRead());
+ char c;
+ QVERIFY(socketDevice.read(&c, sizeof(c)) == -1);
+ QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
+ QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
+}
+
+//----------------------------------------------------------------------------------
+
+QTEST_MAIN(tst_QSocks5SocketEngine)
+#include "tst_qsocks5socketengine.moc"
diff --git a/tests/auto/qtcpserver/.gitignore b/tests/auto/network/socket/qtcpserver/.gitignore
index c00e0a4ca9..c00e0a4ca9 100644
--- a/tests/auto/qtcpserver/.gitignore
+++ b/tests/auto/network/socket/qtcpserver/.gitignore
diff --git a/tests/auto/qtcpserver/crashingServer/crashingServer.pro b/tests/auto/network/socket/qtcpserver/crashingServer/crashingServer.pro
index 700e9520ec..700e9520ec 100644
--- a/tests/auto/qtcpserver/crashingServer/crashingServer.pro
+++ b/tests/auto/network/socket/qtcpserver/crashingServer/crashingServer.pro
diff --git a/tests/auto/qtcpserver/crashingServer/main.cpp b/tests/auto/network/socket/qtcpserver/crashingServer/main.cpp
index 35da65f671..35da65f671 100644
--- a/tests/auto/qtcpserver/crashingServer/main.cpp
+++ b/tests/auto/network/socket/qtcpserver/crashingServer/main.cpp
diff --git a/tests/auto/qtcpserver/qtcpserver.pro b/tests/auto/network/socket/qtcpserver/qtcpserver.pro
index e123cfe73b..e123cfe73b 100644
--- a/tests/auto/qtcpserver/qtcpserver.pro
+++ b/tests/auto/network/socket/qtcpserver/qtcpserver.pro
diff --git a/tests/auto/network/socket/qtcpserver/test/test.pro b/tests/auto/network/socket/qtcpserver/test/test.pro
new file mode 100644
index 0000000000..63e2d0a981
--- /dev/null
+++ b/tests/auto/network/socket/qtcpserver/test/test.pro
@@ -0,0 +1,36 @@
+load(qttest_p4)
+SOURCES += ../tst_qtcpserver.cpp
+
+win32: {
+wince*: {
+ LIBS += -lws2
+ crashApp.files = ../crashingServer/crashingServer.exe
+ crashApp.path = crashingServer
+ DEPLOYMENT += crashApp
+} else {
+ LIBS += -lws2_32
+}
+}
+
+symbian {
+ crashApp.files = $$QT_BUILD_TREE/examples/widgets/wiggly/$${BUILD_DIR}/crashingServer.exe
+ crashApp.path = .
+ DEPLOYMENT += crashApp
+ TARGET.CAPABILITY += NetworkServices ReadUserData
+}
+
+TARGET = ../tst_qtcpserver
+
+win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qtcpserver
+} else {
+ TARGET = ../../release/tst_qtcpserver
+ }
+}
+
+QT = core network
+
+MOC_DIR=tmp
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
new file mode 100644
index 0000000000..ca28a9c7c8
--- /dev/null
+++ b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
@@ -0,0 +1,817 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// Just to get Q_OS_SYMBIAN
+#include <qglobal.h>
+#if defined(_WIN32) && !defined(Q_OS_SYMBIAN)
+#include <winsock2.h>
+#else
+#include <sys/types.h>
+#include <sys/socket.h>
+#define SOCKET int
+#define INVALID_SOCKET -1
+#endif
+
+#include <QtTest/QtTest>
+
+#ifndef Q_OS_WIN
+#include <unistd.h>
+#include <sys/ioctl.h>
+#endif
+
+#include <qcoreapplication.h>
+#include <qtcpsocket.h>
+#include <qtcpserver.h>
+#include <qhostaddress.h>
+#include <qprocess.h>
+#include <qstringlist.h>
+#include <qplatformdefs.h>
+#include <qhostinfo.h>
+
+#include <QNetworkProxy>
+Q_DECLARE_METATYPE(QNetworkProxy)
+Q_DECLARE_METATYPE(QList<QNetworkProxy>)
+
+#include <QNetworkSession>
+#include <QNetworkConfiguration>
+#include <QNetworkConfigurationManager>
+#include "../../../network-settings.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QTcpServer : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QTcpServer();
+ virtual ~tst_QTcpServer();
+
+
+public slots:
+ void initTestCase_data();
+ void initTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void getSetCheck();
+ void constructing();
+ void clientServerLoop();
+ void ipv6Server();
+ void dualStack_data();
+ void dualStack();
+ void ipv6ServerMapped();
+ void crashTests();
+ void maxPendingConnections();
+ void listenError();
+ void waitForConnectionTest();
+ void setSocketDescriptor();
+ void listenWhileListening();
+ void addressReusable();
+ void setNewSocketDescriptorBlocking();
+ void invalidProxy_data();
+ void invalidProxy();
+ void proxyFactory_data();
+ void proxyFactory();
+
+ void qtbug14268_peek();
+
+private:
+#ifndef QT_NO_BEARERMANAGEMENT
+ QNetworkSession *networkSession;
+#endif
+};
+
+// Testing get/set functions
+void tst_QTcpServer::getSetCheck()
+{
+ QTcpServer obj1;
+ // int QTcpServer::maxPendingConnections()
+ // void QTcpServer::setMaxPendingConnections(int)
+ obj1.setMaxPendingConnections(0);
+ QCOMPARE(0, obj1.maxPendingConnections());
+ obj1.setMaxPendingConnections(INT_MIN);
+ QCOMPARE(INT_MIN, obj1.maxPendingConnections());
+ obj1.setMaxPendingConnections(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.maxPendingConnections());
+}
+
+tst_QTcpServer::tst_QTcpServer()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+tst_QTcpServer::~tst_QTcpServer()
+{
+}
+
+void tst_QTcpServer::initTestCase_data()
+{
+ QTest::addColumn<bool>("setProxy");
+ QTest::addColumn<int>("proxyType");
+
+ QTest::newRow("WithoutProxy") << false << 0;
+ QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy);
+}
+
+void tst_QTcpServer::initTestCase()
+{
+#ifndef QT_NO_BEARERMANAGEMENT
+ QNetworkConfigurationManager man;
+ networkSession = new QNetworkSession(man.defaultConfiguration(), this);
+ networkSession->open();
+ QVERIFY(networkSession->waitForOpened());
+#endif
+}
+
+void tst_QTcpServer::init()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
+ }
+ }
+}
+
+void tst_QTcpServer::cleanup()
+{
+ QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpServer::constructing()
+{
+ QTcpServer socket;
+
+ // Check the initial state of the QTcpSocket.
+ QCOMPARE(socket.isListening(), false);
+ QCOMPARE((int)socket.serverPort(), 0);
+ QCOMPARE(socket.serverAddress(), QHostAddress());
+ QCOMPARE(socket.maxPendingConnections(), 30);
+ QCOMPARE(socket.hasPendingConnections(), false);
+ QCOMPARE(socket.socketDescriptor(), -1);
+ QCOMPARE(socket.serverError(), QAbstractSocket::UnknownSocketError);
+
+ // Check the state of the socket layer?
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::clientServerLoop()
+{
+ QTcpServer server;
+
+ QSignalSpy spy(&server, SIGNAL(newConnection()));
+
+ QVERIFY(!server.isListening());
+ QVERIFY(!server.hasPendingConnections());
+ QVERIFY(server.listen(QHostAddress::Any, 11423));
+ QVERIFY(server.isListening());
+
+ QTcpSocket client;
+
+ QHostAddress serverAddress = QHostAddress::LocalHost;
+ if (!(server.serverAddress() == QHostAddress::Any) && !(server.serverAddress() == QHostAddress::AnyIPv6))
+ serverAddress = server.serverAddress();
+
+ client.connectToHost(serverAddress, server.serverPort());
+ QVERIFY(client.waitForConnected(5000));
+
+ QVERIFY(server.waitForNewConnection(5000));
+ QVERIFY(server.hasPendingConnections());
+
+ QCOMPARE(spy.count(), 1);
+
+ QTcpSocket *serverSocket = server.nextPendingConnection();
+ QVERIFY(serverSocket != 0);
+
+ QVERIFY(serverSocket->write("Greetings, client!\n", 19) == 19);
+ serverSocket->flush();
+
+ QVERIFY(client.waitForReadyRead(5000));
+ QByteArray arr = client.readAll();
+ QCOMPARE(arr.constData(), "Greetings, client!\n");
+
+ QVERIFY(client.write("Well, hello to you!\n", 20) == 20);
+ client.flush();
+
+ QVERIFY(serverSocket->waitForReadyRead(5000));
+ arr = serverSocket->readAll();
+ QCOMPARE(arr.constData(), "Well, hello to you!\n");
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::ipv6Server()
+{
+ //### need to enter the event loop for the server to get the connection ?? ( windows)
+ QTcpServer server;
+ if (!server.listen(QHostAddress::LocalHostIPv6, 8944)) {
+ QVERIFY(server.serverError() == QAbstractSocket::UnsupportedSocketOperationError);
+ return;
+ }
+
+ QVERIFY(server.serverPort() == 8944);
+ QVERIFY(server.serverAddress() == QHostAddress::LocalHostIPv6);
+
+ QTcpSocket client;
+ client.connectToHost("::1", 8944);
+ QVERIFY(client.waitForConnected(5000));
+
+ QVERIFY(server.waitForNewConnection());
+ QVERIFY(server.hasPendingConnections());
+
+ QTcpSocket *serverSocket = 0;
+ QVERIFY((serverSocket = server.nextPendingConnection()));
+ serverSocket->close();
+ delete serverSocket;
+}
+
+Q_DECLARE_METATYPE(QHostAddress);
+
+void tst_QTcpServer::dualStack_data()
+{
+ QTest::addColumn<QHostAddress>("bindAddress");
+ QTest::addColumn<bool>("v4ok");
+ QTest::addColumn<bool>("v6ok");
+ QTest::newRow("any") << QHostAddress(QHostAddress::Any) << true << true;
+ QTest::newRow("anyIPv4") << QHostAddress(QHostAddress::AnyIPv4) << true << false;
+ QTest::newRow("anyIPv6") << QHostAddress(QHostAddress::AnyIPv6) << false << true;
+}
+
+void tst_QTcpServer::dualStack()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ QSKIP("test server proxy doesn't support ipv6", SkipSingle);
+ QFETCH(QHostAddress, bindAddress);
+ QFETCH(bool, v4ok);
+ QFETCH(bool, v6ok);
+
+ QTcpServer server;
+ QVERIFY(server.listen(bindAddress));
+
+ QTcpSocket v4client;
+ v4client.connectToHost(QHostAddress::LocalHost, server.serverPort());
+
+ QTcpSocket v6client;
+ v6client.connectToHost(QHostAddress::LocalHostIPv6, server.serverPort());
+
+ QCOMPARE(v4client.waitForConnected(5000), v4ok);
+ QCOMPARE(v6client.waitForConnected(5000), v6ok);
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::ipv6ServerMapped()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+
+ // let's try the normal case
+ QTcpSocket client1;
+ client1.connectToHost("127.0.0.1", server.serverPort());
+ QVERIFY(server.waitForNewConnection(5000));
+ delete server.nextPendingConnection();
+
+ // let's try the mapped one in the nice format
+ QTcpSocket client2;
+ client2.connectToHost("::ffff:127.0.0.1", server.serverPort());
+ QVERIFY(server.waitForNewConnection(5000));
+ delete server.nextPendingConnection();
+
+ // let's try the mapped in hex format
+ QTcpSocket client3;
+ client3.connectToHost("::ffff:7F00:0001", server.serverPort());
+ QVERIFY(server.waitForNewConnection(5000));
+ delete server.nextPendingConnection();
+
+ // However connecting to the v6 localhost should not work
+ QTcpSocket client4;
+ client4.connectToHost("::1", server.serverPort());
+ QVERIFY(!server.waitForNewConnection(5000));
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::crashTests()
+{
+ QTcpServer server;
+ server.close();
+ QVERIFY(server.listen());
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::maxPendingConnections()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QSKIP("With socks5 only 1 connection is allowed ever", SkipAll);
+ }
+ }
+ //### sees to fail sometimes ... a timing issue with the test on windows
+ QTcpServer server;
+ server.setMaxPendingConnections(2);
+
+ QTcpSocket socket1;
+ QTcpSocket socket2;
+ QTcpSocket socket3;
+
+ QVERIFY(server.listen());
+
+ socket1.connectToHost(QHostAddress::LocalHost, server.serverPort());
+ socket2.connectToHost(QHostAddress::LocalHost, server.serverPort());
+ socket3.connectToHost(QHostAddress::LocalHost, server.serverPort());
+
+ QVERIFY(server.waitForNewConnection(5000));
+
+ QVERIFY(server.hasPendingConnections());
+ QVERIFY(server.nextPendingConnection());
+ QVERIFY(server.hasPendingConnections());
+ QVERIFY(server.nextPendingConnection());
+ QVERIFY(!server.hasPendingConnections());
+ QCOMPARE(server.nextPendingConnection(), (QTcpSocket*)0);
+
+ QVERIFY(server.waitForNewConnection(5000));
+
+ QVERIFY(server.hasPendingConnections());
+ QVERIFY(server.nextPendingConnection());
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::listenError()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QSKIP("With socks5 we can not make hard requirements on the address or port", SkipAll);
+ }
+ }
+ QTcpServer server;
+ QVERIFY(!server.listen(QHostAddress("1.2.3.4"), 0));
+ QCOMPARE(server.serverError(), QAbstractSocket::SocketAddressNotAvailableError);
+ QCOMPARE(server.errorString().toLatin1().constData(), "The address is not available");
+}
+
+class ThreadConnector : public QThread
+{
+public:
+ ThreadConnector(const QHostAddress &host, quint16 port)
+ : host(host), port(port)
+ { }
+
+ ~ThreadConnector()
+ {
+ wait();
+ }
+
+protected:
+ void run()
+ {
+ sleep(2);
+
+ QTcpSocket socket;
+ socket.connectToHost(host, port);
+
+ QEventLoop loop;
+ QTimer::singleShot(5000, &loop, SLOT(quit()));
+ loop.exec();
+ }
+
+private:
+ QHostAddress host;
+ quint16 port;
+};
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::waitForConnectionTest()
+{
+
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QSKIP("Localhost servers don't work well with SOCKS5", SkipAll);
+ }
+ }
+
+ QTcpSocket findLocalIpSocket;
+ findLocalIpSocket.connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(findLocalIpSocket.waitForConnected(5000));
+
+ QTcpServer server;
+ bool timeout = false;
+ QVERIFY(server.listen(findLocalIpSocket.localAddress()));
+ QVERIFY(!server.waitForNewConnection(1000, &timeout));
+ QCOMPARE(server.serverError(), QAbstractSocket::SocketTimeoutError);
+ QVERIFY(timeout);
+
+ ThreadConnector connector(findLocalIpSocket.localAddress(), server.serverPort());
+ connector.start();
+
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QVERIFY(server.waitForNewConnection(9000, &timeout));
+#else
+ QVERIFY(server.waitForNewConnection(3000, &timeout));
+#endif
+ QVERIFY(!timeout);
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::setSocketDescriptor()
+{
+ QTcpServer server;
+#ifdef Q_OS_SYMBIAN
+ QTest::ignoreMessage(QtWarningMsg, "QSymbianSocketEngine::initialize - socket descriptor not found");
+#endif
+ QVERIFY(!server.setSocketDescriptor(42));
+ QCOMPARE(server.serverError(), QAbstractSocket::UnsupportedSocketOperationError);
+#ifndef Q_OS_SYMBIAN
+ //adopting Open C sockets is not supported, neither is adopting externally created RSocket
+#ifdef Q_OS_WIN
+ // ensure winsock is started
+ WSADATA wsaData;
+ QVERIFY(WSAStartup(MAKEWORD(2,0), &wsaData) == NO_ERROR);
+#endif
+
+ SOCKET sock = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+
+ QVERIFY(sock != INVALID_SOCKET);
+
+ sockaddr_in sin;
+ memset(&sin, 0, sizeof(sockaddr_in));
+ sin.sin_family = AF_INET;
+ sin.sin_port = 0;
+ sin.sin_addr.s_addr = 0x00000000;
+ QVERIFY(::bind(sock, (sockaddr*)&sin, sizeof(sockaddr_in)) == 0);
+ QVERIFY(::listen(sock, 10) == 0);
+ QVERIFY(server.setSocketDescriptor(sock));
+
+#ifdef Q_OS_WIN
+ WSACleanup();
+#endif
+#endif
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::listenWhileListening()
+{
+ QTcpServer server;
+ QVERIFY(server.listen());
+ QTest::ignoreMessage(QtWarningMsg, "QTcpServer::listen() called when already listening");
+ QVERIFY(!server.listen());
+}
+
+//----------------------------------------------------------------------------------
+
+class SeverWithBlockingSockets : public QTcpServer
+{
+public:
+ SeverWithBlockingSockets()
+ : ok(false) { }
+
+ bool ok;
+
+protected:
+ void incomingConnection(int socketDescriptor)
+ {
+ // how a user woulddo it (qabstractsocketengine is not public)
+ unsigned long arg = 0;
+#if defined(Q_OS_SYMBIAN)
+ arg = fcntl(socketDescriptor, F_GETFL, NULL);
+ arg &= (~O_NONBLOCK);
+ ok = ::fcntl(socketDescriptor, F_SETFL, arg) != -1;
+#elif defined(Q_OS_WIN)
+ ok = ::ioctlsocket(socketDescriptor, FIONBIO, &arg) == 0;
+ ::closesocket(socketDescriptor);
+#else
+ ok = ::ioctl(socketDescriptor, FIONBIO, &arg) == 0;
+ ::close(socketDescriptor);
+#endif
+ }
+};
+
+void tst_QTcpServer::addressReusable()
+{
+#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+ QSKIP("Symbian: Emulator does not support process launching", SkipAll );
+#endif
+
+#if defined(QT_NO_PROCESS)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QSKIP("With socks5 this test does not make senans at the momment", SkipAll);
+ }
+ }
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QString signalName = QString::fromLatin1("/test_signal.txt");
+ QFile::remove(signalName);
+ // The crashingServer process will crash once it gets a connection.
+ QProcess process;
+ process.start("crashingServer/crashingServer");
+ int waitCount = 5;
+ while (waitCount-- && !QFile::exists(signalName))
+ QTest::qWait(1000);
+ QVERIFY(QFile::exists(signalName));
+ QFile::remove(signalName);
+#else
+ // The crashingServer process will crash once it gets a connection.
+ QProcess process;
+ process.start("crashingServer/crashingServer");
+ QVERIFY(process.waitForReadyRead(5000));
+#endif
+
+ QTcpSocket socket;
+ socket.connectToHost(QHostAddress::LocalHost, 49199);
+ QVERIFY(socket.waitForConnected(5000));
+
+ QVERIFY(process.waitForFinished(30000));
+
+ // Give the system some time.
+ QTest::qSleep(10);
+
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost, 49199));
+#endif
+}
+
+void tst_QTcpServer::setNewSocketDescriptorBlocking()
+{
+#ifdef Q_OS_SYMBIAN
+ QSKIP("open C ioctls on Qt sockets not supported", SkipAll);
+#else
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QSKIP("With socks5 we can not make the socket descripter blocking", SkipAll);
+ }
+ }
+ SeverWithBlockingSockets server;
+ QVERIFY(server.listen());
+
+ QTcpSocket socket;
+ socket.connectToHost(QHostAddress::LocalHost, server.serverPort());
+ QVERIFY(server.waitForNewConnection(5000));
+ QVERIFY(server.ok);
+#endif
+}
+
+void tst_QTcpServer::invalidProxy_data()
+{
+ QTest::addColumn<int>("type");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<int>("port");
+ QTest::addColumn<int>("expectedError");
+
+ QString fluke = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString();
+ QTest::newRow("ftp-proxy") << int(QNetworkProxy::FtpCachingProxy) << fluke << 143
+ << int(QAbstractSocket::UnsupportedSocketOperationError);
+ QTest::newRow("http-proxy") << int(QNetworkProxy::HttpProxy) << fluke << 3128
+ << int(QAbstractSocket::UnsupportedSocketOperationError);
+
+ QTest::newRow("no-such-host") << int(QNetworkProxy::Socks5Proxy)
+ << "this-host-will-never-exist.troll.no" << 1080
+ << int(QAbstractSocket::ProxyNotFoundError);
+ QTest::newRow("socks5-on-http") << int(QNetworkProxy::Socks5Proxy) << fluke << 3128
+ << int(QAbstractSocket::SocketTimeoutError);
+}
+
+void tst_QTcpServer::invalidProxy()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QFETCH(int, type);
+ QFETCH(QString, host);
+ QFETCH(int, port);
+ QNetworkProxy::ProxyType proxyType = QNetworkProxy::ProxyType(type);
+ QNetworkProxy proxy(proxyType, host, port);
+
+ QTcpServer server;
+ server.setProxy(proxy);
+ bool listenResult = server.listen();
+
+ QVERIFY(!listenResult);
+ QVERIFY(!server.errorString().isEmpty());
+
+ // note: the following test is not a hard failure.
+ // Sometimes, error codes change for the better
+ QTEST(int(server.serverError()), "expectedError");
+}
+
+// copied from tst_qnetworkreply.cpp
+class MyProxyFactory: public QNetworkProxyFactory
+{
+public:
+ int callCount;
+ QList<QNetworkProxy> toReturn;
+ QNetworkProxyQuery lastQuery;
+ inline MyProxyFactory() { clear(); }
+
+ inline void clear()
+ {
+ callCount = 0;
+ toReturn = QList<QNetworkProxy>() << QNetworkProxy::DefaultProxy;
+ lastQuery = QNetworkProxyQuery();
+ }
+
+ virtual QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query)
+ {
+ lastQuery = query;
+ ++callCount;
+ return toReturn;
+ }
+};
+
+void tst_QTcpServer::proxyFactory_data()
+{
+ QTest::addColumn<QList<QNetworkProxy> >("proxyList");
+ QTest::addColumn<QNetworkProxy>("proxyUsed");
+ QTest::addColumn<bool>("fails");
+ QTest::addColumn<int>("expectedError");
+
+ QList<QNetworkProxy> proxyList;
+
+ // tests that do get to listen
+
+ proxyList << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
+ QTest::newRow("socks5")
+ << proxyList << proxyList.at(0)
+ << false << int(QAbstractSocket::UnknownSocketError);
+
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3128)
+ << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
+ QTest::newRow("cachinghttp+socks5")
+ << proxyList << proxyList.at(1)
+ << false << int(QAbstractSocket::UnknownSocketError);
+
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
+ << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3128)
+ << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
+ QTest::newRow("ftp+cachinghttp+socks5")
+ << proxyList << proxyList.at(2)
+ << false << int(QAbstractSocket::UnknownSocketError);
+
+ // tests that fail to listen
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128);
+ QTest::newRow("http")
+ << proxyList << proxyList.at(0)
+ << true << int(QAbstractSocket::UnsupportedSocketOperationError);
+
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3128);
+ QTest::newRow("cachinghttp")
+ << proxyList << QNetworkProxy()
+ << true << int(QAbstractSocket::UnsupportedSocketOperationError);
+
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
+ QTest::newRow("ftp")
+ << proxyList << QNetworkProxy()
+ << true << int(QAbstractSocket::UnsupportedSocketOperationError);
+
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
+ << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3128);
+ QTest::newRow("ftp+cachinghttp")
+ << proxyList << QNetworkProxy()
+ << true << int(QAbstractSocket::UnsupportedSocketOperationError);
+}
+
+void tst_QTcpServer::proxyFactory()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QFETCH(QList<QNetworkProxy>, proxyList);
+ QFETCH(QNetworkProxy, proxyUsed);
+ QFETCH(bool, fails);
+
+ MyProxyFactory *factory = new MyProxyFactory;
+ factory->toReturn = proxyList;
+ QNetworkProxyFactory::setApplicationProxyFactory(factory);
+
+ QTcpServer server;
+ bool listenResult = server.listen();
+
+ // Verify that the factory was called properly
+ QCOMPARE(factory->callCount, 1);
+ QCOMPARE(factory->lastQuery, QNetworkProxyQuery(0, QString(), QNetworkProxyQuery::TcpServer));
+
+ QCOMPARE(listenResult, !fails);
+ QCOMPARE(server.errorString().isEmpty(), !fails);
+
+ // note: the following test is not a hard failure.
+ // Sometimes, error codes change for the better
+ QTEST(int(server.serverError()), "expectedError");
+}
+
+class Qtbug14268Helper : public QObject
+{
+ Q_OBJECT
+public:
+ QByteArray lastDataPeeked;
+public slots:
+ void newConnection() {
+ QTcpServer* server=static_cast<QTcpServer*>(sender());
+ QTcpSocket* s=server->nextPendingConnection();
+ connect(s,SIGNAL(readyRead()),this,SLOT(onServerReadyRead()));
+ }
+ void onServerReadyRead() {
+ QTcpSocket* clientSocket=static_cast<QTcpSocket*>(sender());
+ lastDataPeeked = clientSocket->peek(128*1024).toHex();
+ QTestEventLoop::instance().exitLoop();
+ }
+};
+
+// there is a similar test inside tst_qtcpsocket that uses the waitFor* functions instead
+void tst_QTcpServer::qtbug14268_peek()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QTcpServer server;
+ server.listen();
+
+ Qtbug14268Helper helper;
+ QObject::connect(&server, SIGNAL(newConnection()), &helper, SLOT(newConnection()));
+
+ QTcpSocket client;
+ client.connectToHost(QHostAddress::LocalHost, server.serverPort());
+ QVERIFY(client.waitForConnected(2000));
+
+ client.write("abc\n");
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(helper.lastDataPeeked == QByteArray("6162630a"));
+
+ client.write("def\n");
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(helper.lastDataPeeked == QByteArray("6162630a6465660a"));
+
+ client.write("ghi\n");
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(helper.lastDataPeeked == QByteArray("6162630a6465660a6768690a"));
+}
+
+QTEST_MAIN(tst_QTcpServer)
+#include "tst_qtcpserver.moc"
diff --git a/tests/auto/qtcpsocket/.gitignore b/tests/auto/network/socket/qtcpsocket/.gitignore
index d456ab15d0..d456ab15d0 100644
--- a/tests/auto/qtcpsocket/.gitignore
+++ b/tests/auto/network/socket/qtcpsocket/.gitignore
diff --git a/tests/auto/qtcpsocket/qtcpsocket.pro b/tests/auto/network/socket/qtcpsocket/qtcpsocket.pro
index 5dfff5bb88..5dfff5bb88 100644
--- a/tests/auto/qtcpsocket/qtcpsocket.pro
+++ b/tests/auto/network/socket/qtcpsocket/qtcpsocket.pro
diff --git a/tests/auto/qtcpsocket/stressTest/Test.cpp b/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp
index 995fc0528c..995fc0528c 100644
--- a/tests/auto/qtcpsocket/stressTest/Test.cpp
+++ b/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp
diff --git a/tests/auto/qtcpsocket/stressTest/Test.h b/tests/auto/network/socket/qtcpsocket/stressTest/Test.h
index 5440e7ffa9..5440e7ffa9 100644
--- a/tests/auto/qtcpsocket/stressTest/Test.h
+++ b/tests/auto/network/socket/qtcpsocket/stressTest/Test.h
diff --git a/tests/auto/qtcpsocket/stressTest/main.cpp b/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp
index 76ce7bd820..76ce7bd820 100644
--- a/tests/auto/qtcpsocket/stressTest/main.cpp
+++ b/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp
diff --git a/tests/auto/qtcpsocket/stressTest/stressTest.pro b/tests/auto/network/socket/qtcpsocket/stressTest/stressTest.pro
index f6215f80a0..f6215f80a0 100644
--- a/tests/auto/qtcpsocket/stressTest/stressTest.pro
+++ b/tests/auto/network/socket/qtcpsocket/stressTest/stressTest.pro
diff --git a/tests/auto/network/socket/qtcpsocket/test/test.pro b/tests/auto/network/socket/qtcpsocket/test/test.pro
new file mode 100644
index 0000000000..61bfaad1a1
--- /dev/null
+++ b/tests/auto/network/socket/qtcpsocket/test/test.pro
@@ -0,0 +1,33 @@
+load(qttest_p4)
+
+QT += widgets
+QT += core-private network-private
+SOURCES += ../tst_qtcpsocket.cpp
+win32: {
+wince*: {
+ LIBS += -lws2
+} else {
+ LIBS += -lws2_32
+}
+}
+QT += network
+vxworks:QT -= gui
+
+symbian: {
+ TARGET.EPOCHEAPSIZE="0x100 0x3000000"
+ TARGET.CAPABILITY = NetworkServices ReadUserData
+}
+
+TARGET = tst_qtcpsocket
+
+win32 {
+ CONFIG(debug, debug|release) {
+ DESTDIR = ../debug
+} else {
+ DESTDIR = ../release
+ }
+} else {
+ DESTDIR = ../
+}
+
+CONFIG+=insignificant_test # unstable, QTBUG-21043
diff --git a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
new file mode 100644
index 0000000000..bae3f7c2f5
--- /dev/null
+++ b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
@@ -0,0 +1,2684 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+// Just to get Q_OS_SYMBIAN
+#include <qglobal.h>
+
+#if defined(_WIN32) && !defined(Q_OS_SYMBIAN)
+#include <winsock2.h>
+#else
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <fcntl.h>
+#include <unistd.h>
+#define SOCKET int
+#define INVALID_SOCKET -1
+#endif
+
+#include <qplatformdefs.h>
+
+#include <QtTest/QtTest>
+
+#include <QAuthenticator>
+#include <QCoreApplication>
+#include <QEventLoop>
+#include <QFile>
+#include <QHostAddress>
+#include <QHostInfo>
+#include <QMap>
+#ifndef Q_OS_VXWORKS
+#include <QMessageBox>
+#include <QPushButton>
+#endif
+#include <QPointer>
+#include <QProcess>
+#include <QStringList>
+#include <QTcpServer>
+#include <QTcpSocket>
+#ifndef QT_NO_OPENSSL
+#include <QSslSocket>
+#endif
+#include <QTextStream>
+#include <QThread>
+#include <QTime>
+#include <QTimer>
+#include <QDebug>
+// RVCT compiles also unused inline methods
+# include <QNetworkProxy>
+
+#ifdef Q_OS_LINUX
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#endif
+
+#include "private/qhostinfo_p.h"
+
+#include "../../../network-settings.h"
+#include "../../../../shared/util.h"
+
+Q_DECLARE_METATYPE(QAbstractSocket::SocketError)
+Q_DECLARE_METATYPE(QAbstractSocket::SocketState)
+Q_DECLARE_METATYPE(QNetworkProxy)
+Q_DECLARE_METATYPE(QList<QNetworkProxy>)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+QT_FORWARD_DECLARE_CLASS(QTcpSocket)
+QT_FORWARD_DECLARE_CLASS(SocketPair)
+
+class tst_QTcpSocket : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QTcpSocket();
+ virtual ~tst_QTcpSocket();
+
+ static void enterLoop(int secs)
+ {
+ ++loopLevel;
+ QTestEventLoop::instance().enterLoop(secs);
+ --loopLevel;
+ }
+ static void exitLoop()
+ {
+ // Safe exit - if we aren't in an event loop, don't
+ // exit one.
+ if (loopLevel > 0)
+ QTestEventLoop::instance().exitLoop();
+ }
+ static bool timeout()
+ {
+ return QTestEventLoop::instance().timeout();
+ }
+
+public slots:
+ void initTestCase_data();
+ void init();
+ void cleanup();
+private slots:
+ void socketsConstructedBeforeEventLoop();
+ void constructing();
+ void setInvalidSocketDescriptor();
+ void setSocketDescriptor();
+ void socketDescriptor();
+ void blockingIMAP();
+ void nonBlockingIMAP();
+ void hostNotFound();
+ void timeoutConnect_data();
+ void timeoutConnect();
+ void delayedClose();
+ void partialRead();
+ void unget();
+ void readAllAfterClose();
+ void openCloseOpenClose();
+ void connectDisconnectConnectDisconnect();
+ void disconnectWhileConnecting_data();
+ void disconnectWhileConnecting();
+ void disconnectWhileConnectingNoEventLoop_data();
+ void disconnectWhileConnectingNoEventLoop();
+ void disconnectWhileLookingUp_data();
+ void disconnectWhileLookingUp();
+ void downloadBigFile();
+ void readLine();
+ void readLineString();
+ void readChunks();
+ void waitForBytesWritten();
+ void waitForBytesWrittenMinusOne();
+ void waitForReadyRead();
+ void waitForReadyReadMinusOne();
+ void flush();
+ void synchronousApi();
+ void dontCloseOnTimeout();
+ void recursiveReadyRead();
+ void atEnd();
+ void socketInAThread();
+ void socketsInThreads();
+ void waitForReadyReadInASlot();
+ void remoteCloseError();
+ void openMessageBoxInErrorSlot();
+#ifndef Q_OS_WIN
+ void connectToLocalHostNoService();
+#endif
+ void waitForConnectedInHostLookupSlot();
+ void waitForConnectedInHostLookupSlot2();
+ void readyReadSignalsAfterWaitForReadyRead();
+#ifdef Q_OS_LINUX
+ void linuxKernelBugLocalSocket();
+#endif
+ void abortiveClose();
+ void localAddressEmptyOnBSD();
+ void zeroAndMinusOneReturns();
+ void connectionRefused();
+ void suddenRemoteDisconnect_data();
+ void suddenRemoteDisconnect();
+ void connectToMultiIP();
+ void moveToThread0();
+ void increaseReadBufferSize();
+ void taskQtBug5799ConnectionErrorWaitForConnected();
+ void taskQtBug5799ConnectionErrorEventLoop();
+ void taskQtBug7054TimeoutErrorResetting();
+
+ void invalidProxy_data();
+ void invalidProxy();
+ void proxyFactory_data();
+ void proxyFactory();
+
+ void qtbug14268_peek();
+
+
+protected slots:
+ void nonBlockingIMAP_hostFound();
+ void nonBlockingIMAP_connected();
+ void nonBlockingIMAP_closed();
+ void nonBlockingIMAP_readyRead();
+ void nonBlockingIMAP_bytesWritten(qint64);
+ void readRegularFile_readyRead();
+ void exitLoopSlot();
+ void downloadBigFileSlot();
+ void recursiveReadyReadSlot();
+ void waitForReadyReadInASlotSlot();
+ void messageBoxSlot();
+ void hostLookupSlot();
+ void abortiveClose_abortSlot();
+ void remoteCloseErrorSlot();
+ void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth);
+ void earlySocketBytesSent(qint64 bytes);
+ void earlySocketReadyRead();
+
+private:
+ QByteArray expectedReplyIMAP();
+ void fetchExpectedReplyIMAP();
+ QTcpSocket *newSocket() const;
+ QTcpSocket *nonBlockingIMAP_socket;
+ QStringList nonBlockingIMAP_data;
+ qint64 nonBlockingIMAP_totalWritten;
+
+ QTcpSocket *tmpSocket;
+ qint64 bytesAvailable;
+ qint64 expectedLength;
+ bool readingBody;
+ QTime timer;
+
+ QByteArray expectedReplyIMAP_cached;
+
+ mutable int proxyAuthCalled;
+
+ bool gotClosedSignal;
+ int numConnections;
+ static int loopLevel;
+
+ SocketPair *earlyConstructedSockets;
+ int earlyBytesWrittenCount;
+ int earlyReadyReadCount;
+};
+
+enum ProxyTests {
+ NoProxy = 0x00,
+ Socks5Proxy = 0x01,
+ HttpProxy = 0x02,
+ TypeMask = 0x0f,
+
+ NoAuth = 0x00,
+ AuthBasic = 0x10,
+ AuthNtlm = 0x20,
+ AuthMask = 0xf0
+};
+
+int tst_QTcpSocket::loopLevel = 0;
+
+class SocketPair: public QObject
+{
+ Q_OBJECT
+public:
+ QTcpSocket *endPoints[2];
+
+ SocketPair(QObject *parent = 0)
+ : QObject(parent)
+ {
+ endPoints[0] = endPoints[1] = 0;
+ }
+
+ bool create()
+ {
+ QTcpServer server;
+ server.listen();
+
+ QTcpSocket *active = new QTcpSocket(this);
+ active->connectToHost("127.0.0.1", server.serverPort());
+
+ if (!active->waitForConnected(1000))
+ return false;
+
+ if (!server.waitForNewConnection(1000))
+ return false;
+
+ QTcpSocket *passive = server.nextPendingConnection();
+ passive->setParent(this);
+
+ endPoints[0] = active;
+ endPoints[1] = passive;
+ return true;
+ }
+};
+
+tst_QTcpSocket::tst_QTcpSocket()
+{
+ tmpSocket = 0;
+
+ //This code relates to the socketsConstructedBeforeEventLoop test case
+ earlyConstructedSockets = new SocketPair;
+ QVERIFY(earlyConstructedSockets->create());
+ earlyBytesWrittenCount = 0;
+ earlyReadyReadCount = 0;
+ connect(earlyConstructedSockets->endPoints[0], SIGNAL(readyRead()), this, SLOT(earlySocketReadyRead()));
+ connect(earlyConstructedSockets->endPoints[1], SIGNAL(bytesWritten(qint64)), this, SLOT(earlySocketBytesSent(qint64)));
+ earlyConstructedSockets->endPoints[1]->write("hello work");
+}
+
+tst_QTcpSocket::~tst_QTcpSocket()
+{
+
+}
+
+void tst_QTcpSocket::initTestCase_data()
+{
+ QTest::addColumn<bool>("setProxy");
+ QTest::addColumn<int>("proxyType");
+ QTest::addColumn<bool>("ssl");
+
+ qDebug() << QtNetworkSettings::serverName();
+ QTest::newRow("WithoutProxy") << false << 0 << false;
+ QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy) << false;
+ QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic) << false;
+
+ QTest::newRow("WithHttpProxy") << true << int(HttpProxy) << false;
+ QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic) << false;
+// QTest::newRow("WithHttpProxyNtlmAuth") << true << int(HttpProxy | AuthNtlm) << false;
+
+#ifndef QT_NO_OPENSSL
+ QTest::newRow("WithoutProxy SSL") << false << 0 << true;
+ QTest::newRow("WithSocks5Proxy SSL") << true << int(Socks5Proxy) << true;
+ QTest::newRow("WithSocks5AuthProxy SSL") << true << int(Socks5Proxy | AuthBasic) << true;
+
+ QTest::newRow("WithHttpProxy SSL") << true << int(HttpProxy) << true;
+ QTest::newRow("WithHttpProxyBasicAuth SSL") << true << int(HttpProxy | AuthBasic) << true;
+// QTest::newRow("WithHttpProxyNtlmAuth SSL") << true << int(HttpProxy | AuthNtlm) << true;
+#endif
+}
+
+void tst_QTcpSocket::init()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ QList<QHostAddress> addresses = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses();
+ QVERIFY2(addresses.count() > 0, "failed to get ip address for test server");
+ QString fluke = addresses.first().toString();
+ QNetworkProxy proxy;
+
+ switch (proxyType) {
+ case Socks5Proxy:
+ proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, fluke, 1080);
+ break;
+
+ case Socks5Proxy | AuthBasic:
+ proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, fluke, 1081);
+ break;
+
+ case HttpProxy | NoAuth:
+ proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3128);
+ break;
+
+ case HttpProxy | AuthBasic:
+ proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3129);
+ break;
+
+ case HttpProxy | AuthNtlm:
+ proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3130);
+ break;
+ }
+ QNetworkProxy::setApplicationProxy(proxy);
+ }
+
+ qt_qhostinfo_clear_cache();
+}
+
+QTcpSocket *tst_QTcpSocket::newSocket() const
+{
+ QTcpSocket *socket;
+#ifndef QT_NO_OPENSSL
+ QFETCH_GLOBAL(bool, ssl);
+ socket = ssl ? new QSslSocket : new QTcpSocket;
+#else
+ socket = new QTcpSocket;
+#endif
+
+ proxyAuthCalled = 0;
+ connect(socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ Qt::DirectConnection);
+ return socket;
+}
+
+void tst_QTcpSocket::cleanup()
+{
+ QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
+}
+
+void tst_QTcpSocket::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
+{
+ ++proxyAuthCalled;
+ auth->setUser("qsockstest");
+ auth->setPassword("password");
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpSocket::socketsConstructedBeforeEventLoop()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ QFETCH_GLOBAL(bool, ssl);
+ if (setProxy || ssl)
+ return;
+ //This test checks that sockets constructed before QCoreApplication::exec() still emit signals
+ //see construction code in the tst_QTcpSocket constructor
+ enterLoop(3);
+ QCOMPARE(earlyBytesWrittenCount, 1);
+ QCOMPARE(earlyReadyReadCount, 1);
+ earlyConstructedSockets->endPoints[0]->close();
+ earlyConstructedSockets->endPoints[1]->close();
+}
+
+void tst_QTcpSocket::earlySocketBytesSent(qint64 /* bytes */)
+{
+ earlyBytesWrittenCount++;
+}
+
+void tst_QTcpSocket::earlySocketReadyRead()
+{
+ earlyReadyReadCount++;
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpSocket::constructing()
+{
+ QTcpSocket *socket = newSocket();
+
+ // Check the initial state of the QTcpSocket.
+ QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
+ QVERIFY(socket->isSequential());
+ QVERIFY(!socket->isOpen());
+ QVERIFY(!socket->isValid());
+ QCOMPARE(socket->socketType(), QTcpSocket::TcpSocket);
+
+ char c;
+ QCOMPARE(socket->getChar(&c), false);
+ QCOMPARE((int) socket->bytesAvailable(), 0);
+ QCOMPARE(socket->canReadLine(), false);
+ QCOMPARE(socket->readLine(), QByteArray());
+ QCOMPARE(socket->socketDescriptor(), -1);
+ QCOMPARE((int) socket->localPort(), 0);
+ QVERIFY(socket->localAddress() == QHostAddress());
+ QCOMPARE((int) socket->peerPort(), 0);
+ QVERIFY(socket->peerAddress() == QHostAddress());
+ QCOMPARE(socket->error(), QTcpSocket::UnknownSocketError);
+ QCOMPARE(socket->errorString(), QString("Unknown error"));
+
+ // Check the state of the socket layer?
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpSocket::setInvalidSocketDescriptor()
+{
+ QTcpSocket *socket = newSocket();
+ QCOMPARE(socket->socketDescriptor(), -1);
+#ifdef Q_OS_SYMBIAN
+ QTest::ignoreMessage(QtWarningMsg, "QSymbianSocketEngine::initialize - socket descriptor not found");
+#endif
+ QVERIFY(!socket->setSocketDescriptor(-5, QTcpSocket::UnconnectedState));
+ QCOMPARE(socket->socketDescriptor(), -1);
+
+ QCOMPARE(socket->error(), QTcpSocket::UnsupportedSocketOperationError);
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpSocket::setSocketDescriptor()
+{
+#ifdef Q_OS_SYMBIAN
+ QSKIP("adopting open c socket handles is not supported", SkipAll);
+#else
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return; // this test doesn't make sense with proxies
+
+#ifdef Q_OS_WIN
+ // need the dummy to ensure winsock is started
+ QTcpSocket *dummy = newSocket();
+ dummy->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(dummy->waitForConnected());
+
+ SOCKET sock = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+ if (sock == INVALID_SOCKET) {
+ qErrnoWarning(WSAGetLastError(), "INVALID_SOCKET");
+ }
+#else
+ SOCKET sock = ::socket(AF_INET, SOCK_STREAM, 0);
+
+ // artificially increase the value of sock
+ SOCKET sock2 = ::fcntl(sock, F_DUPFD, sock + 50);
+ ::close(sock);
+ sock = sock2;
+#endif
+
+ QVERIFY(sock != INVALID_SOCKET);
+ QTcpSocket *socket = newSocket();
+ QVERIFY(socket->setSocketDescriptor(sock, QTcpSocket::UnconnectedState));
+ QCOMPARE(socket->socketDescriptor(), (int)sock);
+
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QCOMPARE(socket->state(), QTcpSocket::HostLookupState);
+ QCOMPARE(socket->socketDescriptor(), (int)sock);
+ QVERIFY(socket->waitForConnected(10000));
+ // skip this, it has been broken for years, see task 260735
+ // if somebody complains, consider fixing it, but it might break existing applications.
+ QEXPECT_FAIL("", "bug has been around for years, will not fix without need", Continue);
+ QCOMPARE(socket->socketDescriptor(), (int)sock);
+ delete socket;
+#ifdef Q_OS_WIN
+ delete dummy;
+#endif
+#endif
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpSocket::socketDescriptor()
+{
+ QTcpSocket *socket = newSocket();
+
+ QCOMPARE(socket->socketDescriptor(), -1);
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY((socket->state() == QAbstractSocket::HostLookupState && socket->socketDescriptor() == -1) ||
+ (socket->state() == QAbstractSocket::ConnectingState && socket->socketDescriptor() != -1));
+ QVERIFY(socket->waitForConnected(10000));
+ QVERIFY(socket->state() == QAbstractSocket::ConnectedState);
+ QVERIFY(socket->socketDescriptor() != -1);
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpSocket::blockingIMAP()
+{
+ QTcpSocket *socket = newSocket();
+
+ // Connect
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->waitForConnected(10000));
+ QCOMPARE(socket->state(), QTcpSocket::ConnectedState);
+ QVERIFY(socket->isValid());
+
+ // Read greeting
+ QVERIFY(socket->waitForReadyRead(5000));
+ QString s = socket->readLine();
+ // only test if an OK was returned, to make the test compatible between different
+ // IMAP server versions
+ QCOMPARE(s.left(4).toLatin1().constData(), "* OK");
+
+ // Write NOOP
+ QCOMPARE((int) socket->write("1 NOOP\r\n", 8), 8);
+ QCOMPARE((int) socket->write("2 NOOP\r\n", 8), 8);
+
+ if (!socket->canReadLine())
+ QVERIFY(socket->waitForReadyRead(5000));
+
+ // Read response
+ s = socket->readLine();
+ QCOMPARE(s.toLatin1().constData(), "1 OK Completed\r\n");
+
+ // Write a third NOOP to verify that write doesn't clear the read buffer
+ QCOMPARE((int) socket->write("3 NOOP\r\n", 8), 8);
+
+ // Read second response
+ if (!socket->canReadLine())
+ QVERIFY(socket->waitForReadyRead(5000));
+ s = socket->readLine();
+ QCOMPARE(s.toLatin1().constData(), "2 OK Completed\r\n");
+
+ // Read third response
+ if (!socket->canReadLine())
+ QVERIFY(socket->waitForReadyRead(5000));
+ s = socket->readLine();
+ QCOMPARE(s.toLatin1().constData(), "3 OK Completed\r\n");
+
+
+ // Write LOGOUT
+ QCOMPARE((int) socket->write("4 LOGOUT\r\n", 10), 10);
+
+ if (!socket->canReadLine())
+ QVERIFY(socket->waitForReadyRead(5000));
+
+ // Read two lines of respose
+ s = socket->readLine();
+ QCOMPARE(s.toLatin1().constData(), "* BYE LOGOUT received\r\n");
+
+ if (!socket->canReadLine())
+ QVERIFY(socket->waitForReadyRead(5000));
+
+ s = socket->readLine();
+ QCOMPARE(s.toLatin1().constData(), "4 OK Completed\r\n");
+
+ // Close the socket
+ socket->close();
+
+ // Check that it's closed
+ QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpSocket::hostNotFound()
+{
+ QTcpSocket *socket = newSocket();
+
+ socket->connectToHost("nosuchserver.troll.no", 80);
+ QVERIFY(!socket->waitForConnected());
+ QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
+ QCOMPARE(int(socket->error()), int(QTcpSocket::HostNotFoundError));
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::timeoutConnect_data()
+{
+ QTest::addColumn<QString>("address");
+ QTest::newRow("host") << QtNetworkSettings::serverName();
+ QTest::newRow("ip") << QtNetworkSettings::serverIP().toString();
+}
+
+void tst_QTcpSocket::timeoutConnect()
+{
+ QFETCH(QString, address);
+ QTcpSocket *socket = newSocket();
+
+ QElapsedTimer timer;
+ timer.start();
+
+ // Port 1357 is configured to drop packets on the test server
+ socket->connectToHost(address, 1357);
+ QVERIFY(timer.elapsed() < 150);
+ QVERIFY(!socket->waitForConnected(1000)); //200ms is too short when using SOCKS proxy authentication
+ QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
+ QCOMPARE(int(socket->error()), int(QTcpSocket::SocketTimeoutError));
+
+ timer.start();
+ socket->connectToHost(address, 1357);
+ QVERIFY(timer.elapsed() < 150);
+ QTimer::singleShot(50, &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(socket->state() == QTcpSocket::ConnectingState
+ || socket->state() == QTcpSocket::HostLookupState);
+ socket->abort();
+ QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
+ QCOMPARE(socket->openMode(), QIODevice::NotOpen);
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpSocket::nonBlockingIMAP()
+{
+ QTcpSocket *socket = newSocket();
+ connect(socket, SIGNAL(hostFound()), SLOT(nonBlockingIMAP_hostFound()));
+ connect(socket, SIGNAL(connected()), SLOT(nonBlockingIMAP_connected()));
+ connect(socket, SIGNAL(disconnected()), SLOT(nonBlockingIMAP_closed()));
+ connect(socket, SIGNAL(bytesWritten(qint64)), SLOT(nonBlockingIMAP_bytesWritten(qint64)));
+ connect(socket, SIGNAL(readyRead()), SLOT(nonBlockingIMAP_readyRead()));
+ nonBlockingIMAP_socket = socket;
+
+ // Connect
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->state() == QTcpSocket::HostLookupState ||
+ socket->state() == QTcpSocket::ConnectingState);
+
+ enterLoop(30);
+ if (timeout()) {
+ QFAIL("Timed out");
+ }
+
+ if (socket->state() == QTcpSocket::ConnectingState) {
+ enterLoop(30);
+ if (timeout()) {
+ QFAIL("Timed out");
+ }
+ }
+
+ QCOMPARE(socket->state(), QTcpSocket::ConnectedState);
+
+ enterLoop(30);
+ if (timeout()) {
+ QFAIL("Timed out");
+ }
+
+ // Read greeting
+ QVERIFY(!nonBlockingIMAP_data.isEmpty());
+ QCOMPARE(nonBlockingIMAP_data.at(0).left(4).toLatin1().constData(), "* OK");
+ nonBlockingIMAP_data.clear();
+
+ nonBlockingIMAP_totalWritten = 0;
+
+ // Write NOOP
+ QCOMPARE((int) socket->write("1 NOOP\r\n", 8), 8);
+
+
+ enterLoop(30);
+ if (timeout()) {
+ QFAIL("Timed out");
+ }
+
+ QVERIFY(nonBlockingIMAP_totalWritten == 8);
+
+
+ enterLoop(30);
+ if (timeout()) {
+ QFAIL("Timed out");
+ }
+
+
+ // Read response
+ QVERIFY(!nonBlockingIMAP_data.isEmpty());
+ QCOMPARE(nonBlockingIMAP_data.at(0).toLatin1().constData(), "1 OK Completed\r\n");
+ nonBlockingIMAP_data.clear();
+
+
+ nonBlockingIMAP_totalWritten = 0;
+
+ // Write LOGOUT
+ QCOMPARE((int) socket->write("2 LOGOUT\r\n", 10), 10);
+
+ enterLoop(30);
+ if (timeout()) {
+ QFAIL("Timed out");
+ }
+
+ QVERIFY(nonBlockingIMAP_totalWritten == 10);
+
+ // Wait for greeting
+ enterLoop(30);
+ if (timeout()) {
+ QFAIL("Timed out");
+ }
+
+ // Read two lines of respose
+ QCOMPARE(nonBlockingIMAP_data.at(0).toLatin1().constData(), "* BYE LOGOUT received\r\n");
+ QCOMPARE(nonBlockingIMAP_data.at(1).toLatin1().constData(), "2 OK Completed\r\n");
+ nonBlockingIMAP_data.clear();
+
+ // Close the socket
+ socket->close();
+
+ // Check that it's closed
+ QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
+
+ delete socket;
+}
+
+void tst_QTcpSocket::nonBlockingIMAP_hostFound()
+{
+ exitLoop();
+}
+
+void tst_QTcpSocket::nonBlockingIMAP_connected()
+{
+ exitLoop();
+}
+
+void tst_QTcpSocket::nonBlockingIMAP_readyRead()
+{
+ while (nonBlockingIMAP_socket->canReadLine())
+ nonBlockingIMAP_data.append(nonBlockingIMAP_socket->readLine());
+
+ exitLoop();
+}
+
+void tst_QTcpSocket::nonBlockingIMAP_bytesWritten(qint64 written)
+{
+ nonBlockingIMAP_totalWritten += written;
+ exitLoop();
+}
+
+void tst_QTcpSocket::nonBlockingIMAP_closed()
+{
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpSocket::delayedClose()
+{
+ QTcpSocket *socket = newSocket();
+ connect(socket, SIGNAL(connected()), SLOT(nonBlockingIMAP_connected()));
+ connect(socket, SIGNAL(disconnected()), SLOT(exitLoopSlot()));
+
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+
+ enterLoop(30);
+ if (timeout())
+ QFAIL("Timed out");
+
+ QCOMPARE(socket->state(), QTcpSocket::ConnectedState);
+
+ QCOMPARE((int) socket->write("1 LOGOUT\r\n", 10), 10);
+
+ // Add a huge bulk of data to be written after the logout
+ // command. The server will shut down after receiving the LOGOUT,
+ // so this data will not be read. But our close call should
+ // schedule a delayed close because all the data can not be
+ // written in one go.
+ QCOMPARE((int) socket->write(QByteArray(100000, '\n'), 100000), 100000);
+
+ socket->close();
+
+ QCOMPARE((int) socket->state(), (int) QTcpSocket::ClosingState);
+
+ enterLoop(10);
+ if (timeout())
+ QFAIL("Timed out");
+
+ QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
+
+ delete socket;
+}
+
+
+//----------------------------------------------------------------------------------
+
+QByteArray tst_QTcpSocket::expectedReplyIMAP()
+{
+ if (expectedReplyIMAP_cached.isEmpty()) {
+ fetchExpectedReplyIMAP();
+ }
+
+ return expectedReplyIMAP_cached;
+}
+
+// Figure out how the current IMAP server responds
+void tst_QTcpSocket::fetchExpectedReplyIMAP()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY2(socket->waitForConnected(10000), qPrintable(socket->errorString()));
+ QVERIFY2(socket->state() == QTcpSocket::ConnectedState, qPrintable(socket->errorString()));
+
+ QTRY_VERIFY(socket->canReadLine());
+
+ QByteArray greeting = socket->readLine();
+ delete socket;
+
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(greeting), greeting.constData());
+
+ expectedReplyIMAP_cached = greeting;
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpSocket::partialRead()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->waitForConnected(10000));
+ QVERIFY(socket->state() == QTcpSocket::ConnectedState);
+ char buf[512];
+
+ QByteArray greeting = expectedReplyIMAP();
+ QVERIFY(!greeting.isEmpty());
+
+ for (int i = 0; i < 10; i += 2) {
+ while (socket->bytesAvailable() < 2)
+ QVERIFY(socket->waitForReadyRead(5000));
+ QVERIFY(socket->read(buf, 2) == 2);
+ buf[2] = '\0';
+ QCOMPARE((char *)buf, greeting.mid(i, 2).data());
+ }
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QTcpSocket::unget()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->waitForConnected(10000));
+ QVERIFY(socket->state() == QTcpSocket::ConnectedState);
+ char buf[512];
+
+ QByteArray greeting = expectedReplyIMAP();
+ QVERIFY(!greeting.isEmpty());
+
+ for (int i = 0; i < 10; i += 2) {
+ while (socket->bytesAvailable() < 2)
+ QVERIFY(socket->waitForReadyRead(10000));
+ int bA = socket->bytesAvailable();
+ QVERIFY(socket->read(buf, 2) == 2);
+ buf[2] = '\0';
+ QCOMPARE((char *)buf, greeting.mid(i, 2).data());
+ QCOMPARE((int)socket->bytesAvailable(), bA - 2);
+ socket->ungetChar(buf[1]);
+ socket->ungetChar(buf[0]);
+ QCOMPARE((int)socket->bytesAvailable(), bA);
+ QVERIFY(socket->read(buf, 2) == 2);
+ buf[2] = '\0';
+ QCOMPARE((char *)buf, greeting.mid(i, 2).data());
+ }
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::readRegularFile_readyRead()
+{
+ exitLoop();
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::readAllAfterClose()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ connect(socket, SIGNAL(readyRead()), SLOT(readRegularFile_readyRead()));
+ enterLoop(10);
+ if (timeout())
+ QFAIL("Network operation timed out");
+
+ socket->close();
+ QByteArray array = socket->readAll();
+ QCOMPARE(array.size(), 0);
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::openCloseOpenClose()
+{
+ QTcpSocket *socket = newSocket();
+
+ for (int i = 0; i < 3; ++i) {
+ QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
+ QCOMPARE(int(socket->openMode()), int(QIODevice::NotOpen));
+ QVERIFY(socket->isSequential());
+ QVERIFY(!socket->isOpen());
+ QVERIFY(socket->socketType() == QTcpSocket::TcpSocket);
+
+ char c;
+ QCOMPARE(socket->getChar(&c), false);
+ QCOMPARE((int) socket->bytesAvailable(), 0);
+ QCOMPARE(socket->canReadLine(), false);
+ QCOMPARE(socket->readLine(), QByteArray());
+ QCOMPARE(socket->socketDescriptor(), -1);
+ QCOMPARE((int) socket->localPort(), 0);
+ QVERIFY(socket->localAddress() == QHostAddress());
+ QCOMPARE((int) socket->peerPort(), 0);
+ QVERIFY(socket->peerAddress() == QHostAddress());
+ QCOMPARE(socket->error(), QTcpSocket::UnknownSocketError);
+ QCOMPARE(socket->errorString(), QString("Unknown error"));
+
+ QVERIFY(socket->state() == QTcpSocket::UnconnectedState);
+
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->waitForConnected(10000));
+ socket->close();
+ }
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::connectDisconnectConnectDisconnect()
+{
+ QTcpSocket *socket = newSocket();
+
+ for (int i = 0; i < 3; ++i) {
+ QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
+ QVERIFY(socket->socketType() == QTcpSocket::TcpSocket);
+
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->waitForReadyRead(10000));
+ QCOMPARE(QString::fromLatin1(socket->read(4)), QString("* OK"));
+
+ socket->disconnectFromHost();
+ if (socket->state() != QTcpSocket::UnconnectedState)
+ QVERIFY(socket->waitForDisconnected(10000));
+ QCOMPARE(int(socket->openMode()), int(QIODevice::ReadWrite));
+ }
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::disconnectWhileConnecting_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<bool>("closeDirectly");
+
+ QTest::newRow("without-data") << QByteArray() << false;
+ QTest::newRow("without-data+close") << QByteArray() << true;
+ QTest::newRow("with-data") << QByteArray("Hello, world!") << false;
+ QTest::newRow("with-data+close") << QByteArray("Hello, world!") << true;
+
+ QByteArray bigData(1024*1024, '@');
+ QTest::newRow("with-big-data") << bigData << false;
+ QTest::newRow("with-big-data+close") << bigData << true;
+}
+
+void tst_QTcpSocket::disconnectWhileConnecting()
+{
+ QFETCH(QByteArray, data);
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return; //proxy not useful for localhost test case
+
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+
+ // proceed to the connect-write-disconnect
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost("127.0.0.1", server.serverPort());
+ if (!data.isEmpty())
+ socket->write(data);
+ if (socket->state() == QAbstractSocket::ConnectedState)
+ QSKIP("localhost connections are immediate, test case is invalid", SkipSingle);
+
+ QFETCH(bool, closeDirectly);
+ if (closeDirectly) {
+ socket->close();
+ QCOMPARE(int(socket->openMode()), int(QIODevice::NotOpen));
+ } else {
+ socket->disconnectFromHost();
+ }
+
+ connect(socket, SIGNAL(disconnected()), SLOT(exitLoopSlot()));
+#ifndef Q_OS_SYMBIAN
+ enterLoop(10);
+#else
+ enterLoop(30);
+#endif
+ QVERIFY2(!timeout(), "Network timeout");
+ QVERIFY(socket->state() == QAbstractSocket::UnconnectedState);
+ if (!closeDirectly) {
+ QCOMPARE(int(socket->openMode()), int(QIODevice::ReadWrite));
+ socket->close();
+ }
+ QCOMPARE(int(socket->openMode()), int(QIODevice::NotOpen));
+
+ // accept the other side and verify that it was sent properly:
+ QVERIFY(server.hasPendingConnections() || server.waitForNewConnection(0));
+ QTcpSocket *othersocket = server.nextPendingConnection();
+ if (othersocket->state() != QAbstractSocket::UnconnectedState)
+ QVERIFY2(othersocket->waitForDisconnected(10000), "Network timeout");
+ QVERIFY(othersocket->state() == QAbstractSocket::UnconnectedState);
+ QCOMPARE(othersocket->readAll(), data);
+
+ delete socket;
+ delete othersocket;
+}
+
+//----------------------------------------------------------------------------------
+class ReceiverThread: public QThread
+{
+ QTcpServer *server;
+public:
+ int serverPort;
+ bool ok;
+ QByteArray receivedData;
+ volatile bool quit;
+
+ ReceiverThread()
+ : server(0), ok(false), quit(false)
+ { }
+
+ ~ReceiverThread() { }
+
+ bool listen()
+ {
+ server = new QTcpServer;
+ if (!server->listen(QHostAddress::LocalHost))
+ return false;
+ serverPort = server->serverPort();
+ server->moveToThread(this);
+ return true;
+ }
+
+ static void cleanup(void *ptr)
+ {
+ ReceiverThread* self = reinterpret_cast<ReceiverThread*>(ptr);
+ self->quit = true;
+ self->wait(30000);
+ delete self;
+ }
+
+protected:
+ void run()
+ {
+ bool timedOut = false;
+ while (!quit) {
+#ifndef Q_OS_SYMBIAN
+ if (server->waitForNewConnection(500, &timedOut))
+#else
+ if (server->waitForNewConnection(5000, &timedOut))
+#endif
+ break;
+ if (!timedOut)
+ return;
+ }
+
+ QTcpSocket *socket = server->nextPendingConnection();
+ while (!quit) {
+#ifndef Q_OS_SYMBIAN
+ if (socket->waitForDisconnected(500))
+#else
+ if (socket->waitForDisconnected(5000))
+#endif
+ break;
+ if (socket->error() != QAbstractSocket::SocketTimeoutError)
+ return;
+ }
+
+ if (!quit) {
+ receivedData = socket->readAll();
+ ok = true;
+ }
+ delete socket;
+ delete server;
+ server = 0;
+ }
+};
+
+void tst_QTcpSocket::disconnectWhileConnectingNoEventLoop_data()
+{
+ disconnectWhileConnecting_data();
+}
+
+void tst_QTcpSocket::disconnectWhileConnectingNoEventLoop()
+{
+ QFETCH(QByteArray, data);
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return; //proxy not useful for localhost test case
+
+ QScopedPointer<ReceiverThread, ReceiverThread> thread (new ReceiverThread);
+ QVERIFY(thread->listen());
+ thread->start();
+
+ // proceed to the connect-write-disconnect
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost("127.0.0.1", thread->serverPort);
+ if (!data.isEmpty())
+ socket->write(data);
+ if (socket->state() == QAbstractSocket::ConnectedState) {
+ QSKIP("localhost connections are immediate, test case is invalid", SkipSingle);
+ }
+
+ QFETCH(bool, closeDirectly);
+ if (closeDirectly) {
+ socket->close();
+ QCOMPARE(int(socket->openMode()), int(QIODevice::NotOpen));
+ } else {
+ socket->disconnectFromHost();
+ }
+
+#ifndef Q_OS_SYMBIAN
+ QVERIFY2(socket->waitForDisconnected(10000), "Network timeout");
+#else
+ QVERIFY2(socket->waitForDisconnected(30000), "Network timeout");
+#endif
+ QVERIFY(socket->state() == QAbstractSocket::UnconnectedState);
+ if (!closeDirectly) {
+ QCOMPARE(int(socket->openMode()), int(QIODevice::ReadWrite));
+ socket->close();
+ }
+ QCOMPARE(int(socket->openMode()), int(QIODevice::NotOpen));
+ delete socket;
+
+ // check if the other side received everything ok
+ QVERIFY(thread->wait(30000));
+ QVERIFY(thread->ok);
+ QCOMPARE(thread->receivedData, data);
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::disconnectWhileLookingUp_data()
+{
+ QTest::addColumn<bool>("doClose");
+
+ QTest::newRow("disconnect") << false;
+ QTest::newRow("close") << true;
+}
+
+void tst_QTcpSocket::disconnectWhileLookingUp()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return; // we let the proxies do the lookup now
+
+ // just connect and disconnect, then make sure nothing weird happened
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 21);
+
+ // check that connect is in progress
+ QVERIFY(socket->state() != QAbstractSocket::UnconnectedState);
+
+ QFETCH(bool, doClose);
+ if (doClose) {
+ socket->close();
+ QVERIFY(socket->openMode() == QIODevice::NotOpen);
+ } else {
+ socket->disconnectFromHost();
+ QVERIFY(socket->openMode() == QIODevice::ReadWrite);
+ }
+
+ // let anything queued happen
+ QEventLoop loop;
+#ifndef Q_OS_SYMBIAN
+ QTimer::singleShot(50, &loop, SLOT(quit()));
+#else
+ QTimer::singleShot(5000, &loop, SLOT(quit()));
+#endif
+ loop.exec();
+
+ // recheck
+ if (doClose) {
+ QVERIFY(socket->openMode() == QIODevice::NotOpen);
+ } else {
+ QVERIFY(socket->openMode() == QIODevice::ReadWrite);
+ }
+
+ QVERIFY(socket->state() == QAbstractSocket::UnconnectedState);
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::downloadBigFile()
+{
+ if (tmpSocket)
+ delete tmpSocket;
+ tmpSocket = newSocket();
+
+ connect(tmpSocket, SIGNAL(connected()), SLOT(exitLoopSlot()));
+ connect(tmpSocket, SIGNAL(readyRead()), SLOT(downloadBigFileSlot()));
+ connect(tmpSocket, SIGNAL(disconnected()), SLOT(exitLoopSlot()));
+
+ tmpSocket->connectToHost(QtNetworkSettings::serverName(), 80);
+
+ enterLoop(30);
+ if (timeout()) {
+ delete tmpSocket;
+ tmpSocket = 0;
+ QFAIL("Network operation timed out");
+ }
+
+ QByteArray hostName = QtNetworkSettings::serverName().toLatin1();
+ QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState);
+ QVERIFY(tmpSocket->write("GET /qtest/mediumfile HTTP/1.0\r\n") > 0);
+ QVERIFY(tmpSocket->write("HOST: ") > 0);
+ QVERIFY(tmpSocket->write(hostName.data()) > 0);
+ QVERIFY(tmpSocket->write("\r\n") > 0);
+ QVERIFY(tmpSocket->write("\r\n") > 0);
+
+ bytesAvailable = 0;
+ expectedLength = 0;
+ readingBody = false;
+
+ QTime stopWatch;
+ stopWatch.start();
+
+ enterLoop(600);
+ if (timeout()) {
+ delete tmpSocket;
+ tmpSocket = 0;
+ if (bytesAvailable > 0)
+ qDebug("Slow Connection, only downloaded %ld of %d", long(bytesAvailable), 10000281);
+ QFAIL("Network operation timed out");
+ }
+
+ QCOMPARE(bytesAvailable, expectedLength);
+
+ qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
+ bytesAvailable / (1024.0 * 1024.0),
+ stopWatch.elapsed() / 1024.0,
+ (bytesAvailable / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));
+
+ delete tmpSocket;
+ tmpSocket = 0;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::exitLoopSlot()
+{
+ exitLoop();
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::downloadBigFileSlot()
+{
+ if (!readingBody) {
+ while (tmpSocket->canReadLine()) {
+ QByteArray array = tmpSocket->readLine();
+ if (array.startsWith("Content-Length"))
+ expectedLength = array.simplified().split(' ').at(1).toInt();
+ if (array == "\r\n") {
+ readingBody = true;
+ break;
+ }
+ }
+ }
+ if (readingBody) {
+ bytesAvailable += tmpSocket->readAll().size();
+ if (bytesAvailable == expectedLength)
+ exitLoop();
+ }
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::readLine()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->waitForConnected(5000));
+
+ while (!socket->canReadLine())
+ QVERIFY(socket->waitForReadyRead(10000));
+
+ char buffer[1024];
+
+ qint64 linelen = socket->readLine(buffer, sizeof(buffer));
+ QVERIFY(linelen >= 3);
+ QVERIFY(linelen < 1024);
+
+ QByteArray reply = QByteArray::fromRawData(buffer, linelen);
+ QCOMPARE((int) buffer[linelen-2], (int) '\r');
+ QCOMPARE((int) buffer[linelen-1], (int) '\n');
+ QCOMPARE((int) buffer[linelen], (int) '\0');
+
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(reply), reply.constData());
+
+ QCOMPARE(socket->write("1 NOOP\r\n"), qint64(8));
+
+ while (socket->bytesAvailable() < 10)
+ QVERIFY(socket->waitForReadyRead(10000));
+
+ QCOMPARE(socket->readLine(buffer, 11), qint64(10));
+ QCOMPARE((const char *)buffer, "1 OK Compl");
+
+ while (socket->bytesAvailable() < 6)
+ QVERIFY(socket->waitForReadyRead(10000));
+
+ QCOMPARE(socket->readLine(buffer, 11), qint64(6));
+ QCOMPARE((const char *)buffer, "eted\r\n");
+
+ QVERIFY(!socket->waitForReadyRead(100));
+ QCOMPARE(socket->readLine(buffer, sizeof(buffer)), qint64(0));
+ QVERIFY(socket->error() == QAbstractSocket::SocketTimeoutError
+ || socket->error() == QAbstractSocket::RemoteHostClosedError);
+ QCOMPARE(socket->bytesAvailable(), qint64(0));
+
+ socket->close();
+ QCOMPARE(socket->readLine(buffer, sizeof(buffer)), qint64(-1));
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::readLineString()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->waitForReadyRead(10000));
+
+ QByteArray arr = socket->readLine();
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(arr), arr.constData());
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::readChunks()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->waitForConnected(10000));
+ QVERIFY(socket->waitForReadyRead(5000));
+
+ char buf[4096];
+ memset(buf, '@', sizeof(buf));
+ qint64 dataLength = socket->read(buf, sizeof(buf));
+ QVERIFY(dataLength > 0);
+
+ QCOMPARE(buf[dataLength - 2], '\r');
+ QCOMPARE(buf[dataLength - 1], '\n');
+ QCOMPARE(buf[dataLength], '@');
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::waitForBytesWritten()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 80);
+ QVERIFY(socket->waitForConnected(10000));
+
+ socket->write("GET / HTTP/1.0\r\n\r\n");
+ qint64 toWrite = socket->bytesToWrite();
+ QVERIFY(socket->waitForBytesWritten(5000));
+ QVERIFY(toWrite > socket->bytesToWrite());
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::waitForBytesWrittenMinusOne()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 80);
+ QVERIFY(socket->waitForConnected(10000));
+
+ socket->write("GET / HTTP/1.0\r\n\r\n");
+ qint64 toWrite = socket->bytesToWrite();
+ QVERIFY(socket->waitForBytesWritten(-1));
+ QVERIFY(toWrite > socket->bytesToWrite());
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::waitForReadyRead()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 80);
+ socket->write("GET / HTTP/1.0\r\n\r\n");
+ QVERIFY(socket->waitForReadyRead(5000));
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::waitForReadyReadMinusOne()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 80);
+ socket->write("GET / HTTP/1.0\r\n\r\n");
+ QVERIFY(socket->waitForReadyRead(-1));
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::flush()
+{
+ QTcpSocket *socket = newSocket();
+ socket->flush();
+
+ connect(socket, SIGNAL(connected()), SLOT(exitLoopSlot()));
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ enterLoop(60);
+ QVERIFY(socket->isOpen());
+
+ socket->write("1 LOGOUT\r\n");
+ QCOMPARE(socket->bytesToWrite(), qint64(10));
+ socket->flush();
+ QCOMPARE(socket->bytesToWrite(), qint64(0));
+ socket->close();
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::synchronousApi()
+{
+ QTcpSocket *ftpSocket = newSocket();
+ ftpSocket->connectToHost(QtNetworkSettings::serverName(), 21);
+ ftpSocket->write("QUIT\r\n");
+ QVERIFY(ftpSocket->waitForDisconnected(10000));
+ QVERIFY(ftpSocket->bytesAvailable() > 0);
+ QByteArray arr = ftpSocket->readAll();
+ QVERIFY(arr.size() > 0);
+ delete ftpSocket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::dontCloseOnTimeout()
+{
+ QTcpServer server;
+ server.setProxy(QNetworkProxy(QNetworkProxy::NoProxy));
+ QVERIFY(server.listen());
+
+ QHostAddress serverAddress = QHostAddress::LocalHost;
+ if (!(server.serverAddress() == QHostAddress::AnyIPv4) && !(server.serverAddress() == QHostAddress::AnyIPv6))
+ serverAddress = server.serverAddress();
+
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(serverAddress, server.serverPort());
+#ifndef Q_OS_SYMBIAN
+ QVERIFY(!socket->waitForReadyRead(100));
+#else
+ QVERIFY(!socket->waitForReadyRead(5000));
+#endif
+ QCOMPARE(socket->error(), QTcpSocket::SocketTimeoutError);
+ QVERIFY(socket->isOpen());
+
+#ifndef Q_OS_SYMBIAN
+ QVERIFY(!socket->waitForDisconnected(100));
+#else
+ QVERIFY(!socket->waitForDisconnected(5000));
+#endif
+ QCOMPARE(socket->error(), QTcpSocket::SocketTimeoutError);
+ QVERIFY(socket->isOpen());
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::recursiveReadyRead()
+{
+ QTcpSocket *smtp = newSocket();
+ connect(smtp, SIGNAL(connected()), SLOT(exitLoopSlot()));
+ connect(smtp, SIGNAL(readyRead()), SLOT(recursiveReadyReadSlot()));
+ tmpSocket = smtp;
+
+ QSignalSpy spy(smtp, SIGNAL(readyRead()));
+
+ smtp->connectToHost("smtp.trolltech.com", 25);
+ enterLoop(30);
+ QVERIFY2(!timeout(),
+ "Timed out when connecting to smtp.trolltech.com:25");
+
+ enterLoop(30);
+ QVERIFY2(!timeout(),
+ "Timed out when waiting for the readyRead() signal");
+
+ QCOMPARE(spy.count(), 1);
+
+ delete smtp;
+}
+
+void tst_QTcpSocket::recursiveReadyReadSlot()
+{
+ // make sure the server spits out more data
+ tmpSocket->write("NOOP\r\n");
+ tmpSocket->flush();
+
+ // indiscriminately enter the event loop and start processing
+ // events again. but oops! future socket notifications will cause
+ // undesired recursive behavior. Unless QTcpSocket is smart, which
+ // it of course is. :-)
+ QEventLoop loop;
+ for (int i = 0; i < 100; ++i)
+ loop.processEvents();
+
+ // all we really wanted to do was process some events, then exit
+ // the loop
+ exitLoop();
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::atEnd()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 21);
+
+ QVERIFY(socket->waitForReadyRead(15000));
+ QTextStream stream(socket);
+ QVERIFY(!stream.atEnd());
+ QString greeting = stream.readLine();
+ QVERIFY(stream.atEnd());
+
+ // Test server must use some vsFTPd 2.x.x version
+ QVERIFY2(greeting.length() == sizeof("220 (vsFTPd 2.x.x)")-1, qPrintable(greeting));
+ QVERIFY2(greeting.startsWith("220 (vsFTPd 2."), qPrintable(greeting));
+ QVERIFY2(greeting.endsWith(")"), qPrintable(greeting));
+
+ delete socket;
+}
+
+class TestThread : public QThread
+{
+ Q_OBJECT
+
+public:
+ inline QByteArray data() const
+ {
+ return socketData;
+ }
+
+protected:
+ inline void run()
+ {
+#ifndef QT_NO_OPENSSL
+ QFETCH_GLOBAL(bool, ssl);
+ if (ssl)
+ socket = new QSslSocket;
+ else
+#endif
+ socket = new QTcpSocket;
+ connect(socket, SIGNAL(readyRead()), this, SLOT(getData()), Qt::DirectConnection);
+ connect(socket, SIGNAL(disconnected()), this, SLOT(closed()), Qt::DirectConnection);
+ connect(socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), Qt::DirectConnection);
+
+ socket->connectToHost(QtNetworkSettings::serverName(), 21);
+ socket->write("QUIT\r\n");
+ exec();
+
+ delete socket;
+ }
+
+private slots:
+ inline void getData()
+ {
+ socketData += socket->readAll();
+ }
+
+ inline void closed()
+ {
+ quit();
+ }
+ inline void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
+ {
+ auth->setUser("qsockstest");
+ auth->setPassword("password");
+ }
+private:
+ int exitCode;
+ QTcpSocket *socket;
+ QByteArray socketData;
+};
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::socketInAThread()
+{
+ for (int i = 0; i < 3; ++i) {
+ TestThread thread;
+ thread.start();
+ QVERIFY(thread.wait(15000));
+ QByteArray data = thread.data();
+ QVERIFY2(QtNetworkSettings::compareReplyFtp(data), data.constData());
+ }
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::socketsInThreads()
+{
+ for (int i = 0; i < 3; ++i) {
+ TestThread thread1;
+ TestThread thread2;
+ TestThread thread3;
+
+ thread1.start();
+ thread2.start();
+ thread3.start();
+
+ QVERIFY(thread2.wait(15000));
+ QVERIFY(thread3.wait(15000));
+ QVERIFY(thread1.wait(15000));
+
+ QByteArray data1 = thread1.data();
+ QByteArray data2 = thread2.data();
+ QByteArray data3 = thread3.data();
+
+ QVERIFY2(QtNetworkSettings::compareReplyFtp(data1), data1.constData());
+ QVERIFY2(QtNetworkSettings::compareReplyFtp(data2), data2.constData());
+ QVERIFY2(QtNetworkSettings::compareReplyFtp(data3), data3.constData());
+ }
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::waitForReadyReadInASlot()
+{
+ QTcpSocket *socket = newSocket();
+ tmpSocket = socket;
+ connect(socket, SIGNAL(connected()), this, SLOT(waitForReadyReadInASlotSlot()));
+
+ socket->connectToHost(QtNetworkSettings::serverName(), 80);
+ socket->write("GET / HTTP/1.0\r\n\r\n");
+
+ enterLoop(30);
+ QVERIFY(!timeout());
+
+ delete socket;
+}
+
+void tst_QTcpSocket::waitForReadyReadInASlotSlot()
+{
+ QVERIFY(tmpSocket->waitForReadyRead(10000));
+ exitLoop();
+}
+
+class RemoteCloseErrorServer : public QTcpServer
+{
+ Q_OBJECT
+public:
+ RemoteCloseErrorServer()
+ {
+ connect(this, SIGNAL(newConnection()),
+ this, SLOT(getConnection()));
+ }
+
+private slots:
+ void getConnection()
+ {
+ tst_QTcpSocket::exitLoop();
+ }
+};
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::remoteCloseError()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return; //proxy not useful for localhost test case
+ RemoteCloseErrorServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+
+ QCoreApplication::instance()->processEvents();
+
+ QTcpSocket *clientSocket = newSocket();
+ connect(clientSocket, SIGNAL(readyRead()), this, SLOT(exitLoopSlot()));
+
+ clientSocket->connectToHost(server.serverAddress(), server.serverPort());
+
+ enterLoop(30);
+ QVERIFY(!timeout());
+
+ QVERIFY(server.hasPendingConnections());
+ QTcpSocket *serverSocket = server.nextPendingConnection();
+ connect(clientSocket, SIGNAL(disconnected()), this, SLOT(exitLoopSlot()));
+
+ serverSocket->write("Hello");
+
+ enterLoop(30);
+ QVERIFY(!timeout());
+
+ QCOMPARE(clientSocket->bytesAvailable(), qint64(5));
+
+ qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
+ QSignalSpy errorSpy(clientSocket, SIGNAL(error(QAbstractSocket::SocketError)));
+ QSignalSpy disconnectedSpy(clientSocket, SIGNAL(disconnected()));
+
+ clientSocket->write("World");
+ serverSocket->disconnectFromHost();
+
+ tmpSocket = clientSocket;
+ connect(clientSocket, SIGNAL(error(QAbstractSocket::SocketError)),
+ this, SLOT(remoteCloseErrorSlot()));
+
+ enterLoop(30);
+ QVERIFY(!timeout());
+
+ QCOMPARE(disconnectedSpy.count(), 1);
+ QCOMPARE(errorSpy.count(), 1);
+ QCOMPARE(clientSocket->error(), QAbstractSocket::RemoteHostClosedError);
+
+ delete serverSocket;
+
+ clientSocket->connectToHost(server.serverAddress(), server.serverPort());
+
+ enterLoop(30);
+ QVERIFY(!timeout());
+
+ QVERIFY(server.hasPendingConnections());
+ serverSocket = server.nextPendingConnection();
+ serverSocket->disconnectFromHost();
+
+ enterLoop(30);
+ QVERIFY(!timeout());
+
+ QCOMPARE(clientSocket->state(), QAbstractSocket::UnconnectedState);
+
+ delete clientSocket;
+}
+
+void tst_QTcpSocket::remoteCloseErrorSlot()
+{
+ QCOMPARE(tmpSocket->state(), QAbstractSocket::ConnectedState);
+ static_cast<QTcpSocket *>(sender())->close();
+}
+
+void tst_QTcpSocket::messageBoxSlot()
+{
+#if !defined(Q_OS_VXWORKS) // no gui
+ QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
+ socket->deleteLater();
+ QMessageBox box;
+ QTimer::singleShot(100, &box, SLOT(close()));
+
+ // This should not delete the socket
+ box.exec();
+
+ // Fire a non-0 singleshot to leave time for the delete
+ QTimer::singleShot(250, this, SLOT(exitLoopSlot()));
+#endif
+}
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::openMessageBoxInErrorSlot()
+{
+#if defined(Q_OS_VXWORKS) // no gui
+ QSKIP("no default gui available on VxWorks", SkipAll);
+#else
+ QTcpSocket *socket = newSocket();
+ QPointer<QTcpSocket> p(socket);
+ connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(messageBoxSlot()));
+
+ socket->connectToHost("hostnotfoundhostnotfound.troll.no", 9999); // Host not found, fyi
+ enterLoop(30);
+ QVERIFY(!p);
+#endif
+}
+
+//----------------------------------------------------------------------------------
+#ifndef Q_OS_WIN
+void tst_QTcpSocket::connectToLocalHostNoService()
+{
+ // This test was created after we received a report that claimed
+ // QTcpSocket would crash if trying to connect to "localhost" on a random
+ // port with no service listening.
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost("localhost", 31415); // no service running here, one suspects
+
+ while(socket->state() == QTcpSocket::HostLookupState || socket->state() == QTcpSocket::ConnectingState) {
+ QTest::qWait(100);
+ }
+ QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
+ delete socket;
+}
+#endif
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::waitForConnectedInHostLookupSlot()
+{
+ // This test tries to reproduce the problem where waitForConnected() is
+ // called at a point where the host lookup is already done. QTcpSocket
+ // will try to abort the "pending lookup", but since it's already done and
+ // the queued signal is already underway, we will receive the signal after
+ // waitForConnected() has returned, and control goes back to the event
+ // loop. When the signal has been received, the connection is torn down,
+ // then reopened. Yikes. If we reproduce this by calling
+ // waitForConnected() inside hostLookupSlot(), it will even crash.
+ tmpSocket = newSocket();
+ QEventLoop loop;
+ connect(tmpSocket, SIGNAL(connected()), &loop, SLOT(quit()));
+ QTimer timer;
+ connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
+ QSignalSpy timerSpy(&timer, SIGNAL(timeout()));
+ timer.start(15000);
+
+ connect(tmpSocket, SIGNAL(hostFound()), this, SLOT(hostLookupSlot()));
+ tmpSocket->connectToHost(QtNetworkSettings::serverName(), 143);
+
+ // only execute the loop if not already connected
+ if (tmpSocket->state() != QAbstractSocket::ConnectedState)
+ loop.exec();
+
+ QCOMPARE(timerSpy.count(), 0);
+
+ delete tmpSocket;
+}
+
+void tst_QTcpSocket::hostLookupSlot()
+{
+ // This will fail to cancel the pending signal
+ QVERIFY(tmpSocket->waitForConnected(10000));
+}
+
+class Foo : public QObject
+{
+ Q_OBJECT
+ QTcpSocket *sock;
+public:
+ bool attemptedToConnect;
+ bool networkTimeout;
+ int count;
+
+ inline Foo(QObject *parent = 0) : QObject(parent)
+ {
+ attemptedToConnect = false;
+ networkTimeout = false;
+ count = 0;
+#ifndef QT_NO_OPENSSL
+ QFETCH_GLOBAL(bool, ssl);
+ if (ssl)
+ sock = new QSslSocket;
+ else
+#endif
+ sock = new QTcpSocket;
+ connect(sock, SIGNAL(connected()), this, SLOT(connectedToIt()));
+ connect(sock, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ }
+
+ inline ~Foo()
+ {
+ delete sock;
+ }
+
+public slots:
+ inline void connectedToIt()
+ { count++; }
+
+ inline void doIt()
+ {
+ attemptedToConnect = true;
+ sock->connectToHost(QtNetworkSettings::serverName(), 80);
+
+#ifdef Q_OS_MAC
+ pthread_yield_np();
+#elif defined Q_OS_LINUX
+ pthread_yield();
+#endif
+ if (!sock->waitForConnected()) {
+ networkTimeout = true;
+ }
+ tst_QTcpSocket::exitLoop();
+ }
+
+ inline void exitLoop()
+ {
+ tst_QTcpSocket::exitLoop();
+ }
+
+ inline void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
+ {
+ auth->setUser("qsockstest");
+ auth->setPassword("password");
+ }
+};
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::waitForConnectedInHostLookupSlot2()
+{
+#if defined(Q_OS_WIN) || defined(Q_OS_VXWORKS)
+ QSKIP("waitForConnectedInHostLookupSlot2 is not run on Windows and VxWorks", SkipAll);
+#else
+
+ Foo foo;
+ QPushButton top("Go", 0);
+ top.show();
+ connect(&top, SIGNAL(clicked()), &foo, SLOT(doIt()));
+
+ QTimer::singleShot(100, &top, SLOT(animateClick()));
+ QTimer::singleShot(5000, &foo, SLOT(exitLoop()));
+
+ enterLoop(30);
+ if (timeout() || foo.networkTimeout)
+ QFAIL("Network timeout");
+
+ QVERIFY(foo.attemptedToConnect);
+ QCOMPARE(foo.count, 1);
+#endif
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::readyReadSignalsAfterWaitForReadyRead()
+{
+ QTcpSocket *socket = newSocket();
+
+ QSignalSpy readyReadSpy(socket, SIGNAL(readyRead()));
+
+ // Connect
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+
+ // Wait for the read
+ QVERIFY(socket->waitForReadyRead(10000));
+
+ QCOMPARE(readyReadSpy.count(), 1);
+
+ QString s = socket->readLine();
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(s.toLatin1()), s.toLatin1().constData());
+ QCOMPARE(socket->bytesAvailable(), qint64(0));
+
+ QCoreApplication::instance()->processEvents();
+ QCOMPARE(socket->bytesAvailable(), qint64(0));
+ QCOMPARE(readyReadSpy.count(), 1);
+
+ delete socket;
+}
+
+class TestThread2 : public QThread
+{
+ Q_OBJECT
+public:
+ void run()
+ {
+ QFile fileWriter("fifo");
+ QVERIFY(fileWriter.open(QFile::WriteOnly));
+ QCOMPARE(fileWriter.write(QByteArray(32, '@')), qint64(32));
+ QCOMPARE(fileWriter.write(QByteArray(32, '@')), qint64(32));
+ QCOMPARE(fileWriter.write(QByteArray(32, '@')), qint64(32));
+ QCOMPARE(fileWriter.write(QByteArray(32, '@')), qint64(32));
+ }
+};
+
+//----------------------------------------------------------------------------------
+#ifdef Q_OS_LINUX
+void tst_QTcpSocket::linuxKernelBugLocalSocket()
+{
+ QFile::remove("fifo");
+ mkfifo("fifo", 0666);
+
+ TestThread2 test;
+ test.start();
+
+ QFile fileReader("fifo");
+ QVERIFY(fileReader.open(QFile::ReadOnly));
+
+ test.wait();
+
+ QTcpSocket *socket = newSocket();
+ socket->setSocketDescriptor(fileReader.handle());
+ QVERIFY(socket->waitForReadyRead(5000));
+ QCOMPARE(socket->bytesAvailable(), qint64(128));
+
+ QFile::remove("fifo");
+
+ delete socket;
+}
+#endif
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::abortiveClose()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return; //proxy not useful for localhost test case
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+ connect(&server, SIGNAL(newConnection()), this, SLOT(exitLoopSlot()));
+
+ QTcpSocket *clientSocket = newSocket();
+ clientSocket->connectToHost(server.serverAddress(), server.serverPort());
+
+ enterLoop(10);
+ QVERIFY(server.hasPendingConnections());
+
+ QVERIFY(tmpSocket = server.nextPendingConnection());
+
+ qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
+ QSignalSpy readyReadSpy(clientSocket, SIGNAL(readyRead()));
+ QSignalSpy errorSpy(clientSocket, SIGNAL(error(QAbstractSocket::SocketError)));
+
+ connect(clientSocket, SIGNAL(disconnected()), this, SLOT(exitLoopSlot()));
+ QTimer::singleShot(0, this, SLOT(abortiveClose_abortSlot()));
+
+ enterLoop(5);
+
+ QCOMPARE(readyReadSpy.count(), 0);
+ QCOMPARE(errorSpy.count(), 1);
+
+ QCOMPARE(*static_cast<const int *>(errorSpy.at(0).at(0).constData()),
+ int(QAbstractSocket::RemoteHostClosedError));
+
+ delete clientSocket;
+}
+
+void tst_QTcpSocket::abortiveClose_abortSlot()
+{
+ tmpSocket->abort();
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::localAddressEmptyOnBSD()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return; //proxy not useful for localhost test case
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+
+ QTcpSocket *tcpSocket = 0;
+ // we try 10 times, but note that this doesn't always provoke the bug
+ for (int i = 0; i < 10; ++i) {
+ delete tcpSocket;
+ tcpSocket = newSocket();
+ tcpSocket->connectToHost(QHostAddress::LocalHost, server.serverPort());
+ if (!tcpSocket->waitForConnected(0)) {
+ // to provoke the bug, we need a local socket that connects immediately
+ // --i;
+ tcpSocket->abort();
+ if (tcpSocket->state() != QTcpSocket::UnconnectedState)
+ QVERIFY(tcpSocket->waitForDisconnected(-1));
+ continue;
+ }
+ QCOMPARE(tcpSocket->localAddress(), QHostAddress(QHostAddress::LocalHost));
+ }
+ delete tcpSocket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::zeroAndMinusOneReturns()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 80);
+ socket->write("GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n");
+ QVERIFY(socket->waitForReadyRead(15000));
+
+ char c[16];
+ QVERIFY(socket->getChar(c));
+ QCOMPARE(socket->read(c, 16), qint64(16));
+ QVERIFY(socket->readLine(c, 16) > 0);
+ QVERIFY(!socket->readAll().isEmpty());
+
+ // the last operation emptied the read buffer
+ // all read operations from this point on should fail
+ // with return 0 because the socket is still open
+ QVERIFY(socket->readAll().isEmpty());
+ QCOMPARE(socket->read(c, 16), qint64(0));
+ QCOMPARE(socket->readLine(c, 16), qint64(0));
+ QVERIFY(!socket->getChar(c));
+
+ socket->write("GET / HTTP/1.0\r\n\r\n");
+ QVERIFY(socket->waitForDisconnected(15000));
+ QCOMPARE(socket->error(), QAbstractSocket::RemoteHostClosedError);
+
+ QCOMPARE(socket->write("BLUBBER"), qint64(-1));
+ QVERIFY(socket->getChar(c));
+ QCOMPARE(socket->read(c, 16), qint64(16));
+ QVERIFY(socket->readLine(c, 16) > 0);
+ QVERIFY(!socket->readAll().isEmpty());
+
+ // the last operation emptied the read buffer
+ // all read operations from this point on should fail
+ // with return -1 because the socket is not connected
+ QVERIFY(socket->readAll().isEmpty());
+ QCOMPARE(socket->read(c, 16), qint64(-1));
+ QCOMPARE(socket->readLine(c, 16), qint64(-1));
+ QVERIFY(!socket->getChar(c));
+ QVERIFY(!socket->putChar('a'));
+
+ socket->close();
+
+ // now the QIODevice is closed, which means getChar complains
+ QCOMPARE(socket->write("BLUBBER"), qint64(-1));
+ QCOMPARE(socket->read(c, 16), qint64(-1));
+ QCOMPARE(socket->readLine(c, 16), qint64(-1));
+ QVERIFY(!socket->getChar(c));
+ QVERIFY(!socket->putChar('a'));
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::connectionRefused()
+{
+ qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
+ qRegisterMetaType<QAbstractSocket::SocketState>("QAbstractSocket::SocketState");
+
+ QTcpSocket *socket = newSocket();
+ QSignalSpy stateSpy(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)));
+ QSignalSpy errorSpy(socket, SIGNAL(error(QAbstractSocket::SocketError)));
+ connect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ socket->connectToHost(QtNetworkSettings::serverName(), 144);
+
+ enterLoop(10);
+ disconnect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QVERIFY2(!timeout(), "Network timeout");
+
+ QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState);
+ QCOMPARE(socket->error(), QAbstractSocket::ConnectionRefusedError);
+
+ QCOMPARE(stateSpy.count(), 3);
+ QCOMPARE(qVariantValue<QAbstractSocket::SocketState>(stateSpy.at(0).at(0)), QAbstractSocket::HostLookupState);
+ QCOMPARE(qVariantValue<QAbstractSocket::SocketState>(stateSpy.at(1).at(0)), QAbstractSocket::ConnectingState);
+ QCOMPARE(qVariantValue<QAbstractSocket::SocketState>(stateSpy.at(2).at(0)), QAbstractSocket::UnconnectedState);
+ QCOMPARE(errorSpy.count(), 1);
+
+ delete socket;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::suddenRemoteDisconnect_data()
+{
+ QTest::addColumn<QString>("client");
+ QTest::addColumn<QString>("server");
+
+ QTest::newRow("Qt4 Client <-> Qt4 Server") << QString::fromLatin1("qt4client") << QString::fromLatin1("qt4server");
+}
+
+void tst_QTcpSocket::suddenRemoteDisconnect()
+{
+#if defined( Q_OS_SYMBIAN )
+ QSKIP("Symbian: QProcess IO is not yet supported, fix when supported", SkipAll);
+#else
+ QFETCH(QString, client);
+ QFETCH(QString, server);
+
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+ QFETCH_GLOBAL(bool, ssl);
+ if (ssl)
+ return;
+
+ // Start server
+ QProcess serverProcess;
+ serverProcess.setReadChannel(QProcess::StandardError);
+ serverProcess.start(QString::fromLatin1("stressTest/stressTest %1").arg(server),
+ QIODevice::ReadWrite | QIODevice::Text);
+ while (!serverProcess.canReadLine())
+ QVERIFY(serverProcess.waitForReadyRead(10000));
+ QCOMPARE(serverProcess.readLine().data(), (server.toLatin1() + "\n").data());
+
+ // Start client
+ QProcess clientProcess;
+ clientProcess.setReadChannel(QProcess::StandardError);
+ clientProcess.start(QString::fromLatin1("stressTest/stressTest %1").arg(client),
+ QIODevice::ReadWrite | QIODevice::Text);
+ while (!clientProcess.canReadLine())
+ QVERIFY(clientProcess.waitForReadyRead(10000));
+ QCOMPARE(clientProcess.readLine().data(), (client.toLatin1() + "\n").data());
+
+ // Let them play for a while
+ qDebug("Running stress test for 5 seconds");
+ QEventLoop loop;
+ connect(&serverProcess, SIGNAL(finished(int)), &loop, SLOT(quit()));
+ connect(&clientProcess, SIGNAL(finished(int)), &loop, SLOT(quit()));
+ QTime stopWatch;
+ stopWatch.start();
+ QTimer::singleShot(20000, &loop, SLOT(quit()));
+
+ while ((serverProcess.state() == QProcess::Running
+ || clientProcess.state() == QProcess::Running) && stopWatch.elapsed() < 20000)
+ loop.exec();
+
+ QVERIFY(stopWatch.elapsed() < 20000);
+
+ // Check that both exited normally.
+ QCOMPARE(clientProcess.readAll().constData(), "SUCCESS\n");
+ QCOMPARE(serverProcess.readAll().constData(), "SUCCESS\n");
+#endif
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::connectToMultiIP()
+{
+ QSKIP("TODO: setup DNS in the new network", SkipAll);
+
+#if defined(Q_OS_VXWORKS)
+ QSKIP("VxSim in standard config doesn't even run a DNS resolver", SkipAll);
+#else
+ QFETCH_GLOBAL(bool, ssl);
+ if (ssl)
+ return;
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ QSKIP("This test takes too long if we also add the proxies.", SkipSingle);
+
+ qDebug("Please wait, this test can take a while...");
+
+ QTcpSocket *socket = newSocket();
+ // rationale: this domain resolves to 3 A-records, 2 of them are
+ // invalid. QTcpSocket should never spend more than 30 seconds per IP, and
+ // 30s*2 = 60s.
+ QTime stopWatch;
+ stopWatch.start();
+ socket->connectToHost("multi.dev.troll.no", 80);
+ QVERIFY(socket->waitForConnected(60500));
+ QVERIFY(stopWatch.elapsed() < 70000);
+ socket->abort();
+
+ stopWatch.restart();
+ socket->connectToHost("multi.dev.troll.no", 81);
+ QVERIFY(!socket->waitForConnected(2000));
+ QVERIFY(stopWatch.elapsed() < 2000);
+ QCOMPARE(socket->error(), QAbstractSocket::SocketTimeoutError);
+
+ delete socket;
+#endif
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpSocket::moveToThread0()
+{
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType & AuthMask)
+ return;
+
+ {
+ // Case 1: Moved after connecting, before waiting for connection.
+ QTcpSocket *socket = newSocket();;
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ socket->moveToThread(0);
+ QVERIFY(socket->waitForConnected(5000));
+ socket->write("XXX LOGOUT\r\n");
+ QVERIFY(socket->waitForBytesWritten(5000));
+ QVERIFY(socket->waitForDisconnected());
+ delete socket;
+ }
+ {
+ // Case 2: Moved before connecting
+ QTcpSocket *socket = newSocket();
+ socket->moveToThread(0);
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->waitForConnected(5000));
+ socket->write("XXX LOGOUT\r\n");
+ QVERIFY(socket->waitForBytesWritten(5000));
+ QVERIFY(socket->waitForDisconnected());
+ delete socket;
+ }
+ {
+ // Case 3: Moved after writing, while waiting for bytes to be written.
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->waitForConnected(5000));
+ socket->write("XXX LOGOUT\r\n");
+ socket->moveToThread(0);
+ QVERIFY(socket->waitForBytesWritten(5000));
+ QVERIFY(socket->waitForDisconnected());
+ delete socket;
+ }
+ {
+ // Case 4: Moved after writing, while waiting for response.
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket->waitForConnected(5000));
+ socket->write("XXX LOGOUT\r\n");
+ QVERIFY(socket->waitForBytesWritten(5000));
+ socket->moveToThread(0);
+ QVERIFY(socket->waitForDisconnected());
+ delete socket;
+ }
+}
+
+void tst_QTcpSocket::increaseReadBufferSize()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return; //proxy not useful for localhost test case
+ QTcpServer server;
+ QTcpSocket *active = newSocket();
+ connect(active, SIGNAL(readyRead()), SLOT(exitLoopSlot()));
+
+ // connect two sockets to each other:
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+ active->connectToHost("127.0.0.1", server.serverPort());
+ QVERIFY(active->waitForConnected(5000));
+ QVERIFY(server.waitForNewConnection(5000));
+
+ QTcpSocket *passive = server.nextPendingConnection();
+ QVERIFY(passive);
+
+ // now write 512 bytes of data on one end
+ QByteArray data(512, 'a');
+ passive->write(data);
+ QVERIFY2(passive->waitForBytesWritten(5000), "Network timeout");
+
+ // set the read buffer size to less than what was written and iterate:
+ active->setReadBufferSize(256);
+ enterLoop(10);
+ QVERIFY2(!timeout(), "Network timeout");
+ QCOMPARE(active->bytesAvailable(), active->readBufferSize());
+
+ // increase the buffer size and iterate again:
+ active->setReadBufferSize(384);
+ enterLoop(10);
+ QVERIFY2(!timeout(), "Network timeout");
+ QCOMPARE(active->bytesAvailable(), active->readBufferSize());
+
+ // once more, but now it should read everything there was to read
+ active->setReadBufferSize(1024);
+ enterLoop(10);
+ QVERIFY2(!timeout(), "Network timeout");
+ QCOMPARE(active->bytesAvailable(), qint64(data.size()));
+
+ // drain it and compare
+ QCOMPARE(active->readAll(), data);
+
+ // now one more test by setting the buffer size to unlimited:
+ passive->write(data);
+ QVERIFY2(passive->waitForBytesWritten(5000), "Network timeout");
+ active->setReadBufferSize(256);
+ enterLoop(10);
+ QVERIFY2(!timeout(), "Network timeout");
+ QCOMPARE(active->bytesAvailable(), active->readBufferSize());
+ active->setReadBufferSize(0);
+ enterLoop(10);
+ QVERIFY2(!timeout(), "Network timeout");
+ QCOMPARE(active->bytesAvailable(), qint64(data.size()));
+ QCOMPARE(active->readAll(), data);
+
+ delete active;
+}
+
+void tst_QTcpSocket::taskQtBug5799ConnectionErrorWaitForConnected()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ // check that we get a proper error connecting to port 12346
+ // use waitForConnected, e.g. this should use a synchronous select() on the OS level
+
+ QTcpSocket socket;
+ socket.connectToHost(QtNetworkSettings::serverName(), 12346);
+ QTime timer;
+ timer.start();
+ socket.waitForConnected(10000);
+ QVERIFY2(timer.elapsed() < 9900, "Connection to closed port timed out instead of refusing, something is wrong");
+ QVERIFY2(socket.state() == QAbstractSocket::UnconnectedState, "Socket connected unexpectedly!");
+ QVERIFY2(socket.error() == QAbstractSocket::ConnectionRefusedError,
+ QString("Could not reach server: %1").arg(socket.errorString()).toLocal8Bit());
+}
+
+void tst_QTcpSocket::taskQtBug5799ConnectionErrorEventLoop()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ // check that we get a proper error connecting to port 12346
+ // This testcase uses an event loop
+ QTcpSocket socket;
+ connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ socket.connectToHost(QtNetworkSettings::serverName(), 12346);
+
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY2(!QTestEventLoop::instance().timeout(), "Connection to closed port timed out instead of refusing, something is wrong");
+ QVERIFY2(socket.state() == QAbstractSocket::UnconnectedState, "Socket connected unexpectedly!");
+ QVERIFY2(socket.error() == QAbstractSocket::ConnectionRefusedError,
+ QString("Could not reach server: %1").arg(socket.errorString()).toLocal8Bit());
+}
+
+void tst_QTcpSocket::taskQtBug7054TimeoutErrorResetting()
+{
+ QTcpSocket *socket = newSocket();
+
+ socket->connectToHost(QtNetworkSettings::serverName(), 443);
+ QVERIFY(socket->waitForConnected(5*1000));
+ QVERIFY(socket->error() == QAbstractSocket::UnknownSocketError);
+
+ // We connected to the HTTPS port. Wait two seconds to receive data. We will receive
+ // nothing because we would need to start the SSL handshake
+ QVERIFY(!socket->waitForReadyRead(2*1000));
+ QVERIFY(socket->error() == QAbstractSocket::SocketTimeoutError);
+
+ // Now write some crap to make the server disconnect us. 4 lines are enough.
+ socket->write("a\r\nb\r\nc\r\nd\r\n");
+ socket->waitForBytesWritten(2*1000);
+
+ // we try to waitForReadyRead another time, but this time instead of a timeout we
+ // should get a better error since the server disconnected us
+ QVERIFY(!socket->waitForReadyRead(2*1000));
+ // It must NOT be the SocketTimeoutError that had been set before
+ QVERIFY(socket->error() == QAbstractSocket::RemoteHostClosedError);
+}
+
+void tst_QTcpSocket::invalidProxy_data()
+{
+ QTest::addColumn<int>("type");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<int>("port");
+ QTest::addColumn<bool>("failsAtConnect");
+ QTest::addColumn<int>("expectedError");
+
+ QString fluke = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString();
+ QTest::newRow("ftp-proxy") << int(QNetworkProxy::FtpCachingProxy) << fluke << 21 << true
+ << int(QAbstractSocket::UnsupportedSocketOperationError);
+ QTest::newRow("http-caching-proxy") << int(QNetworkProxy::HttpCachingProxy) << fluke << 3128 << true
+ << int(QAbstractSocket::UnsupportedSocketOperationError);
+ QTest::newRow("no-such-host-socks5") << int(QNetworkProxy::Socks5Proxy)
+ << "this-host-will-never-exist.troll.no" << 1080 << false
+ << int(QAbstractSocket::ProxyNotFoundError);
+ QTest::newRow("no-such-host-http") << int(QNetworkProxy::HttpProxy)
+ << "this-host-will-never-exist.troll.no" << 3128 << false
+ << int(QAbstractSocket::ProxyNotFoundError);
+#if !defined(Q_OS_SYMBIAN)
+ QTest::newRow("http-on-socks5") << int(QNetworkProxy::HttpProxy) << fluke << 1080 << false
+ << int(QAbstractSocket::ProxyConnectionClosedError);
+ QTest::newRow("socks5-on-http") << int(QNetworkProxy::Socks5Proxy) << fluke << 3128 << false
+ << int(QAbstractSocket::SocketTimeoutError);
+#endif
+}
+
+void tst_QTcpSocket::invalidProxy()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QFETCH(int, type);
+ QFETCH(QString, host);
+ QFETCH(int, port);
+ QFETCH(bool, failsAtConnect);
+ QNetworkProxy::ProxyType proxyType = QNetworkProxy::ProxyType(type);
+ QNetworkProxy proxy(proxyType, host, port);
+
+ QTcpSocket *socket = newSocket();
+ socket->setProxy(proxy);
+ socket->connectToHost(QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString(), 80);
+
+ if (failsAtConnect) {
+ QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState);
+ } else {
+ QCOMPARE(socket->state(), QAbstractSocket::ConnectingState);
+ QVERIFY(!socket->waitForConnected(5000));
+ }
+ QVERIFY(!socket->errorString().isEmpty());
+
+ // note: the following test is not a hard failure.
+ // Sometimes, error codes change for the better
+ QTEST(int(socket->error()), "expectedError");
+
+ delete socket;
+}
+
+// copied from tst_qnetworkreply.cpp
+class MyProxyFactory: public QNetworkProxyFactory
+{
+public:
+ int callCount;
+ QList<QNetworkProxy> toReturn;
+ QNetworkProxyQuery lastQuery;
+ inline MyProxyFactory() { clear(); }
+
+ inline void clear()
+ {
+ callCount = 0;
+ toReturn = QList<QNetworkProxy>() << QNetworkProxy::DefaultProxy;
+ lastQuery = QNetworkProxyQuery();
+ }
+
+ virtual QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query)
+ {
+ lastQuery = query;
+ ++callCount;
+ return toReturn;
+ }
+};
+
+void tst_QTcpSocket::proxyFactory_data()
+{
+ QTest::addColumn<QList<QNetworkProxy> >("proxyList");
+ QTest::addColumn<QNetworkProxy>("proxyUsed");
+ QTest::addColumn<bool>("failsAtConnect");
+ QTest::addColumn<int>("expectedError");
+
+ QList<QNetworkProxy> proxyList;
+
+ // tests that do connect
+
+ proxyList << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129);
+ QTest::newRow("http")
+ << proxyList << proxyList.at(0)
+ << false << int(QAbstractSocket::UnknownSocketError);
+
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
+ QTest::newRow("socks5")
+ << proxyList << proxyList.at(0)
+ << false << int(QAbstractSocket::UnknownSocketError);
+
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
+ << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
+ QTest::newRow("cachinghttp+socks5")
+ << proxyList << proxyList.at(1)
+ << false << int(QAbstractSocket::UnknownSocketError);
+
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
+ << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
+ << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
+ QTest::newRow("ftp+cachinghttp+socks5")
+ << proxyList << proxyList.at(2)
+ << false << int(QAbstractSocket::UnknownSocketError);
+
+ // tests that fail to connect
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
+ QTest::newRow("cachinghttp")
+ << proxyList << QNetworkProxy()
+ << true << int(QAbstractSocket::UnsupportedSocketOperationError);
+
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
+ QTest::newRow("ftp")
+ << proxyList << QNetworkProxy()
+ << true << int(QAbstractSocket::UnsupportedSocketOperationError);
+
+ proxyList.clear();
+ proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
+ << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
+ QTest::newRow("ftp+cachinghttp")
+ << proxyList << QNetworkProxy()
+ << true << int(QAbstractSocket::UnsupportedSocketOperationError);
+}
+
+void tst_QTcpSocket::proxyFactory()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QFETCH(QList<QNetworkProxy>, proxyList);
+ QFETCH(QNetworkProxy, proxyUsed);
+ QFETCH(bool, failsAtConnect);
+
+ MyProxyFactory *factory = new MyProxyFactory;
+ factory->toReturn = proxyList;
+ QNetworkProxyFactory::setApplicationProxyFactory(factory);
+
+ QTcpSocket *socket = newSocket();
+ QString host = QtNetworkSettings::serverName();
+ socket->connectToHost(host, 80);
+
+ // Verify that the factory was called properly
+ QCOMPARE(factory->callCount, 1);
+ QCOMPARE(factory->lastQuery, QNetworkProxyQuery(host, 80));
+
+ if (failsAtConnect) {
+ QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState);
+ } else {
+ QCOMPARE(socket->state(), QAbstractSocket::ConnectingState);
+ QVERIFY(socket->waitForConnected(5000));
+ QCOMPARE(proxyAuthCalled, 1);
+ }
+ QVERIFY(!socket->errorString().isEmpty());
+
+ // note: the following test is not a hard failure.
+ // Sometimes, error codes change for the better
+ QTEST(int(socket->error()), "expectedError");
+
+ delete socket;
+}
+
+// there is a similar test inside tst_qtcpserver that uses the event loop instead
+void tst_QTcpSocket::qtbug14268_peek()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ SocketPair socketPair;
+ QVERIFY(socketPair.create());
+ QTcpSocket *outgoing = socketPair.endPoints[0];
+ QTcpSocket *incoming = socketPair.endPoints[1];
+
+ QVERIFY(incoming->state() == QTcpSocket::ConnectedState);
+ QVERIFY(outgoing->state() == QTcpSocket::ConnectedState);
+
+ outgoing->write("abc\n");
+ QVERIFY(outgoing->waitForBytesWritten(2000));
+ QVERIFY(incoming->waitForReadyRead(2000));
+ QVERIFY(incoming->peek(128*1024) == QByteArray("abc\n"));
+
+ outgoing->write("def\n");
+ QVERIFY(outgoing->waitForBytesWritten(2000));
+ QVERIFY(incoming->waitForReadyRead(2000));
+ QVERIFY(incoming->peek(128*1024) == QByteArray("abc\ndef\n"));
+
+ outgoing->write("ghi\n");
+ QVERIFY(outgoing->waitForBytesWritten(2000));
+ QVERIFY(incoming->waitForReadyRead(2000));
+ QVERIFY(incoming->peek(128*1024) == QByteArray("abc\ndef\nghi\n"));
+
+ QVERIFY(incoming->read(128*1024) == QByteArray("abc\ndef\nghi\n"));
+}
+
+
+
+QTEST_MAIN(tst_QTcpSocket)
+#include "tst_qtcpsocket.moc"
diff --git a/tests/auto/qudpsocket/.gitignore b/tests/auto/network/socket/qudpsocket/.gitignore
index c6134126a0..c6134126a0 100644
--- a/tests/auto/qudpsocket/.gitignore
+++ b/tests/auto/network/socket/qudpsocket/.gitignore
diff --git a/tests/auto/qudpsocket/clientserver/clientserver.pro b/tests/auto/network/socket/qudpsocket/clientserver/clientserver.pro
index 6da148659c..6da148659c 100644
--- a/tests/auto/qudpsocket/clientserver/clientserver.pro
+++ b/tests/auto/network/socket/qudpsocket/clientserver/clientserver.pro
diff --git a/tests/auto/qudpsocket/clientserver/main.cpp b/tests/auto/network/socket/qudpsocket/clientserver/main.cpp
index 9145a5199f..9145a5199f 100644
--- a/tests/auto/qudpsocket/clientserver/main.cpp
+++ b/tests/auto/network/socket/qudpsocket/clientserver/main.cpp
diff --git a/tests/auto/qudpsocket/qudpsocket.pro b/tests/auto/network/socket/qudpsocket/qudpsocket.pro
index 4ddb7178a4..4ddb7178a4 100644
--- a/tests/auto/qudpsocket/qudpsocket.pro
+++ b/tests/auto/network/socket/qudpsocket/qudpsocket.pro
diff --git a/tests/auto/qudpsocket/test/test.pro b/tests/auto/network/socket/qudpsocket/test/test.pro
index 508dc97053..508dc97053 100644
--- a/tests/auto/qudpsocket/test/test.pro
+++ b/tests/auto/network/socket/qudpsocket/test/test.pro
diff --git a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
new file mode 100644
index 0000000000..83d30cc40a
--- /dev/null
+++ b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
@@ -0,0 +1,1356 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qfileinfo.h>
+#include <qdatastream.h>
+#include <qudpsocket.h>
+#include <qhostaddress.h>
+#include <qhostinfo.h>
+#include <qmap.h>
+#include <QNetworkProxy>
+#include <QNetworkInterface>
+
+#include <qstringlist.h>
+#include "../../../network-settings.h"
+
+#ifndef QT_NO_BEARERMANAGEMENT
+#include <QtNetwork/qnetworkconfigmanager.h>
+#include <QtNetwork/qnetworkconfiguration.h>
+#include <QtNetwork/qnetworksession.h>
+#endif
+
+Q_DECLARE_METATYPE(QHostAddress)
+Q_DECLARE_METATYPE(QNetworkInterface)
+Q_DECLARE_METATYPE(QSharedPointer<QNetworkSession>)
+//TESTED_CLASS=
+//TESTED_FILES=
+
+QT_FORWARD_DECLARE_CLASS(QUdpSocket)
+
+class tst_QUdpSocket : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QUdpSocket();
+ virtual ~tst_QUdpSocket();
+
+
+public slots:
+ void initTestCase_data();
+ void init();
+ void cleanup();
+private slots:
+ void constructing();
+ void unconnectedServerAndClientTest();
+ void broadcasting();
+ void loop_data();
+ void loop();
+ void ipv6Loop_data();
+ void ipv6Loop();
+ void dualStack();
+ void readLine();
+ void pendingDatagramSize();
+ void writeDatagram();
+ void performance();
+ void bindMode();
+ void writeDatagramToNonExistingPeer_data();
+ void writeDatagramToNonExistingPeer();
+ void writeToNonExistingPeer_data();
+ void writeToNonExistingPeer();
+ void outOfProcessConnectedClientServerTest();
+ void outOfProcessUnconnectedClientServerTest();
+ void zeroLengthDatagram();
+ void multicastTtlOption_data();
+ void multicastTtlOption();
+ void multicastLoopbackOption_data();
+ void multicastLoopbackOption();
+ void multicastJoinBeforeBind_data();
+ void multicastJoinBeforeBind();
+ void multicastLeaveAfterClose_data();
+ void multicastLeaveAfterClose();
+ void setMulticastInterface_data();
+ void setMulticastInterface();
+ void multicast_data();
+ void multicast();
+ void echo_data();
+ void echo();
+
+protected slots:
+ void empty_readyReadSlot();
+ void empty_connectedSlot();
+
+private:
+#ifndef QT_NO_BEARERMANAGEMENT
+ QNetworkConfigurationManager *netConfMan;
+ QNetworkConfiguration networkConfiguration;
+ QSharedPointer<QNetworkSession> networkSession;
+#endif
+};
+
+tst_QUdpSocket::tst_QUdpSocket()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+tst_QUdpSocket::~tst_QUdpSocket()
+{
+}
+
+void tst_QUdpSocket::initTestCase_data()
+{
+ QTest::addColumn<bool>("setProxy");
+ QTest::addColumn<int>("proxyType");
+
+ QTest::newRow("WithoutProxy") << false << 0;
+ QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy);
+
+#ifndef QT_NO_BEARERMANAGEMENT
+ netConfMan = new QNetworkConfigurationManager(this);
+ networkConfiguration = netConfMan->defaultConfiguration();
+ networkSession = QSharedPointer<QNetworkSession>(new QNetworkSession(networkConfiguration));
+ if (!networkSession->isOpen()) {
+ networkSession->open();
+ QVERIFY(networkSession->waitForOpened(30000));
+ }
+#endif
+}
+
+void tst_QUdpSocket::init()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
+ }
+ }
+}
+
+void tst_QUdpSocket::cleanup()
+{
+ QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
+}
+
+
+//----------------------------------------------------------------------------------
+
+void tst_QUdpSocket::constructing()
+{
+ QUdpSocket socket;
+#ifdef FORCE_SESSION
+ socket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+
+ QVERIFY(socket.isSequential());
+ QVERIFY(!socket.isOpen());
+ QVERIFY(socket.socketType() == QUdpSocket::UdpSocket);
+ QCOMPARE((int) socket.bytesAvailable(), 0);
+ QCOMPARE(socket.canReadLine(), false);
+ QCOMPARE(socket.readLine(), QByteArray());
+ QCOMPARE(socket.socketDescriptor(), -1);
+ QCOMPARE(socket.error(), QUdpSocket::UnknownSocketError);
+ QCOMPARE(socket.errorString(), QString("Unknown error"));
+
+ // Check the state of the socket api
+}
+
+void tst_QUdpSocket::unconnectedServerAndClientTest()
+{
+ QUdpSocket serverSocket;
+#ifdef FORCE_SESSION
+ serverSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+
+ qRegisterMetaType<QAbstractSocket::SocketState>("QAbstractSocket::SocketState");
+
+ QSignalSpy stateChangedSpy(&serverSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)));
+ QVERIFY2(serverSocket.bind(), serverSocket.errorString().toLatin1().constData());
+ QCOMPARE(stateChangedSpy.count(), 1);
+
+ const char *message[] = {"Yo mista", "Yo", "Wassap"};
+
+ QHostAddress serverAddress = QHostAddress::LocalHost;
+ if (!(serverSocket.localAddress() == QHostAddress::AnyIPv4 || serverSocket.localAddress() == QHostAddress::AnyIPv6))
+ serverAddress = serverSocket.localAddress();
+
+ for (int i = 0; i < 3; ++i) {
+ QUdpSocket clientSocket;
+#ifdef FORCE_SESSION
+ clientSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QCOMPARE(int(clientSocket.writeDatagram(message[i], strlen(message[i]),
+ serverAddress, serverSocket.localPort())),
+ int(strlen(message[i])));
+ char buf[1024];
+ QHostAddress host;
+ quint16 port;
+ QVERIFY(serverSocket.waitForReadyRead(5000));
+ QCOMPARE(int(serverSocket.readDatagram(buf, sizeof(buf), &host, &port)),
+ int(strlen(message[i])));
+ buf[strlen(message[i])] = '\0';
+ QCOMPARE(QByteArray(buf), QByteArray(message[i]));
+ }
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QUdpSocket::broadcasting()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QSKIP("With socks5 Broadcast is not supported.", SkipSingle);
+ }
+ }
+#ifdef Q_OS_AIX
+ QSKIP("Broadcast does not work on darko", SkipAll);
+#endif
+ const char *message[] = {"Yo mista", "", "Yo", "Wassap"};
+
+ QList<QHostAddress> broadcastAddresses;
+ foreach (QNetworkInterface iface, QNetworkInterface::allInterfaces()) {
+ if ((iface.flags() & QNetworkInterface::CanBroadcast)
+ && iface.flags() & QNetworkInterface::IsUp) {
+ for (int i=0;i<iface.addressEntries().count();i++)
+ broadcastAddresses.append(iface.addressEntries().at(i).broadcast());
+ }
+ }
+ if (broadcastAddresses.isEmpty())
+ QSKIP("No interface can broadcast", SkipAll);
+ for (int i = 0; i < 4; ++i) {
+ QUdpSocket serverSocket;
+#ifdef FORCE_SESSION
+ serverSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QVERIFY2(serverSocket.bind(QHostAddress::Any, 5000), serverSocket.errorString().toLatin1().constData());
+
+ QCOMPARE(serverSocket.state(), QUdpSocket::BoundState);
+
+ connect(&serverSocket, SIGNAL(readyRead()), SLOT(empty_readyReadSlot()));
+
+ QUdpSocket broadcastSocket;
+#ifdef FORCE_SESSION
+ broadcastSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ broadcastSocket.bind();
+
+ for (int j = 0; j < 100; ++j) {
+ for (int k = 0; k < 4; k++) {
+ broadcastSocket.writeDatagram(message[i], strlen(message[i]),
+ QHostAddress::Broadcast, 5000);
+ foreach (QHostAddress addr, broadcastAddresses)
+ broadcastSocket.writeDatagram(message[i], strlen(message[i]), addr, 5000);
+ }
+ QTestEventLoop::instance().enterLoop(15);
+ if (QTestEventLoop::instance().timeout()) {
+#if defined(Q_OS_FREEBSD)
+ QEXPECT_FAIL("",
+ "Broadcasting to 255.255.255.255 does not work on FreeBSD",
+ Abort);
+ QVERIFY(false); // seems that QFAIL() doesn't respect the QEXPECT_FAIL() :/
+#endif
+ QFAIL("Network operation timed out");
+ }
+ QVERIFY(serverSocket.hasPendingDatagrams());
+
+ do {
+ QByteArray arr; arr.resize(serverSocket.pendingDatagramSize() + 1);
+ QHostAddress host;
+ quint16 port;
+ QCOMPARE((int) serverSocket.readDatagram(arr.data(), arr.size() - 1, &host, &port),
+ (int) strlen(message[i]));
+ arr.resize(strlen(message[i]));
+ QCOMPARE(arr, QByteArray(message[i]));
+ } while (serverSocket.hasPendingDatagrams());
+ }
+ }
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QUdpSocket::loop_data()
+{
+ QTest::addColumn<QByteArray>("peterMessage");
+ QTest::addColumn<QByteArray>("paulMessage");
+ QTest::addColumn<bool>("success");
+
+ QTest::newRow("\"Almond!\" | \"Joy!\"") << QByteArray("Almond!") << QByteArray("Joy!") << true;
+ QTest::newRow("\"A\" | \"B\"") << QByteArray("A") << QByteArray("B") << true;
+ QTest::newRow("\"AB\" | \"B\"") << QByteArray("AB") << QByteArray("B") << true;
+ QTest::newRow("\"AB\" | \"BB\"") << QByteArray("AB") << QByteArray("BB") << true;
+ QTest::newRow("\"A\\0B\" | \"B\\0B\"") << QByteArray::fromRawData("A\0B", 3) << QByteArray::fromRawData("B\0B", 3) << true;
+ QTest::newRow("\"(nil)\" | \"(nil)\"") << QByteArray() << QByteArray() << true;
+ QTest::newRow("Bigmessage") << QByteArray(600, '@') << QByteArray(600, '@') << true;
+}
+
+void tst_QUdpSocket::loop()
+{
+ QFETCH(QByteArray, peterMessage);
+ QFETCH(QByteArray, paulMessage);
+ QFETCH(bool, success);
+
+ QUdpSocket peter;
+ QUdpSocket paul;
+#ifdef FORCE_SESSION
+ peter.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+ paul.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+
+ QVERIFY2(peter.bind(), peter.errorString().toLatin1().constData());
+ QVERIFY2(paul.bind(), paul.errorString().toLatin1().constData());
+
+ QHostAddress peterAddress = QHostAddress::LocalHost;
+ if (!(peter.localAddress() == QHostAddress::AnyIPv4 || peter.localAddress() == QHostAddress::AnyIPv6))
+ peterAddress = peter.localAddress();
+ QHostAddress pualAddress = QHostAddress::LocalHost;
+ if (!(paul.localAddress() == QHostAddress::AnyIPv4 || paul.localAddress() == QHostAddress::AnyIPv6))
+ pualAddress = paul.localAddress();
+
+ QCOMPARE(peter.writeDatagram(peterMessage.data(), peterMessage.length(),
+ pualAddress, paul.localPort()), qint64(peterMessage.length()));
+ QCOMPARE(paul.writeDatagram(paulMessage.data(), paulMessage.length(),
+ peterAddress, peter.localPort()), qint64(paulMessage.length()));
+
+ QVERIFY(peter.waitForReadyRead(9000));
+ QVERIFY(paul.waitForReadyRead(9000));
+ char peterBuffer[16*1024];
+ char paulBuffer[16*1024];
+ if (success) {
+ QCOMPARE(peter.readDatagram(peterBuffer, sizeof(peterBuffer)), qint64(paulMessage.length()));
+ QCOMPARE(paul.readDatagram(paulBuffer, sizeof(peterBuffer)), qint64(peterMessage.length()));
+ } else {
+ QVERIFY(peter.readDatagram(peterBuffer, sizeof(peterBuffer)) != paulMessage.length());
+ QVERIFY(paul.readDatagram(paulBuffer, sizeof(peterBuffer)) != peterMessage.length());
+ }
+
+ QCOMPARE(QByteArray(peterBuffer, paulMessage.length()), paulMessage);
+ QCOMPARE(QByteArray(paulBuffer, peterMessage.length()), peterMessage);
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QUdpSocket::ipv6Loop_data()
+{
+ loop_data();
+}
+
+void tst_QUdpSocket::ipv6Loop()
+{
+ QFETCH(QByteArray, peterMessage);
+ QFETCH(QByteArray, paulMessage);
+ QFETCH(bool, success);
+
+ QUdpSocket peter;
+ QUdpSocket paul;
+#ifdef FORCE_SESSION
+ peter.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+ paul.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+
+ quint16 peterPort = 28124;
+ quint16 paulPort = 28123;
+
+ if (!peter.bind(QHostAddress::LocalHostIPv6, peterPort)) {
+ QCOMPARE(peter.error(), QUdpSocket::UnsupportedSocketOperationError);
+ } else {
+ QVERIFY(paul.bind(QHostAddress::LocalHostIPv6, paulPort));
+
+ QCOMPARE(peter.writeDatagram(peterMessage.data(), peterMessage.length(), QHostAddress("::1"),
+ paulPort), qint64(peterMessage.length()));
+ QCOMPARE(paul.writeDatagram(paulMessage.data(), paulMessage.length(),
+ QHostAddress("::1"), peterPort), qint64(paulMessage.length()));
+
+ char peterBuffer[16*1024];
+ char paulBuffer[16*1024];
+#if !defined(Q_OS_WINCE)
+ QVERIFY(peter.waitForReadyRead(5000));
+ QVERIFY(paul.waitForReadyRead(5000));
+#else
+ QVERIFY(peter.waitForReadyRead(15000));
+ QVERIFY(paul.waitForReadyRead(15000));
+#endif
+ if (success) {
+ QCOMPARE(peter.readDatagram(peterBuffer, sizeof(peterBuffer)), qint64(paulMessage.length()));
+ QCOMPARE(paul.readDatagram(paulBuffer, sizeof(peterBuffer)), qint64(peterMessage.length()));
+ } else {
+ QVERIFY(peter.readDatagram(peterBuffer, sizeof(peterBuffer)) != paulMessage.length());
+ QVERIFY(paul.readDatagram(paulBuffer, sizeof(peterBuffer)) != peterMessage.length());
+ }
+
+ QCOMPARE(QByteArray(peterBuffer, paulMessage.length()), paulMessage);
+ QCOMPARE(QByteArray(paulBuffer, peterMessage.length()), peterMessage);
+ }
+}
+
+void tst_QUdpSocket::dualStack()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ QSKIP("test server SOCKS proxy doesn't support IPv6", SkipSingle);
+ QUdpSocket dualSock;
+ QByteArray dualData("dual");
+ QVERIFY(dualSock.bind(QHostAddress(QHostAddress::Any), 0));
+
+ QUdpSocket v4Sock;
+ QByteArray v4Data("v4");
+ QVERIFY(v4Sock.bind(QHostAddress(QHostAddress::AnyIPv4), 0));
+
+ QUdpSocket v6Sock;
+ QByteArray v6Data("v6");
+ QVERIFY(v6Sock.bind(QHostAddress(QHostAddress::AnyIPv6), 0));
+
+ QHostAddress from;
+ quint16 port;
+ QByteArray buffer;
+ //test v4 -> dual
+ QCOMPARE((int)v4Sock.writeDatagram(v4Data.constData(), v4Data.length(), QHostAddress(QHostAddress::LocalHost), dualSock.localPort()), v4Data.length());
+ QVERIFY(dualSock.waitForReadyRead(5000));
+ buffer.reserve(100);
+ qint64 size = dualSock.readDatagram(buffer.data(), 100, &from, &port);
+ QCOMPARE((int)size, v4Data.length());
+ buffer.resize(size);
+ QCOMPARE(buffer, v4Data);
+
+ //test v6 -> dual
+ QCOMPARE((int)v6Sock.writeDatagram(v6Data.constData(), v6Data.length(), QHostAddress(QHostAddress::LocalHostIPv6), dualSock.localPort()), v6Data.length());
+ QVERIFY(dualSock.waitForReadyRead(5000));
+ buffer.reserve(100);
+ size = dualSock.readDatagram(buffer.data(), 100, &from, &port);
+ QCOMPARE((int)size, v6Data.length());
+ buffer.resize(size);
+ QCOMPARE(buffer, v6Data);
+
+ //test dual -> v4
+ QCOMPARE((int)dualSock.writeDatagram(dualData.constData(), dualData.length(), QHostAddress(QHostAddress::LocalHost), v4Sock.localPort()), dualData.length());
+ QVERIFY(v4Sock.waitForReadyRead(5000));
+ buffer.reserve(100);
+ size = v4Sock.readDatagram(buffer.data(), 100, &from, &port);
+ QCOMPARE((int)size, dualData.length());
+ buffer.resize(size);
+ QCOMPARE(buffer, dualData);
+
+ //test dual -> v6
+ QCOMPARE((int)dualSock.writeDatagram(dualData.constData(), dualData.length(), QHostAddress(QHostAddress::LocalHostIPv6), v6Sock.localPort()), dualData.length());
+ QVERIFY(v6Sock.waitForReadyRead(5000));
+ buffer.reserve(100);
+ size = v6Sock.readDatagram(buffer.data(), 100, &from, &port);
+ QCOMPARE((int)size, dualData.length());
+ buffer.resize(size);
+ QCOMPARE(buffer, dualData);
+
+}
+
+void tst_QUdpSocket::empty_readyReadSlot()
+{
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QUdpSocket::empty_connectedSlot()
+{
+ QTestEventLoop::instance().exitLoop();
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QUdpSocket::readLine()
+{
+ QUdpSocket socket1;
+ QUdpSocket socket2;
+#ifdef FORCE_SESSION
+ socket1.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+ socket2.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QVERIFY2(socket1.bind(), socket1.errorString().toLatin1().constData());
+
+ socket2.connectToHost("127.0.0.1", socket1.localPort());
+ QVERIFY(socket2.waitForConnected(5000));
+}
+
+//----------------------------------------------------------------------------------
+
+void tst_QUdpSocket::pendingDatagramSize()
+{
+ QUdpSocket server;
+#ifdef FORCE_SESSION
+ server.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QVERIFY2(server.bind(), server.errorString().toLatin1().constData());
+
+ QHostAddress serverAddress = QHostAddress::LocalHost;
+ if (!(server.localAddress() == QHostAddress::AnyIPv4 || server.localAddress() == QHostAddress::AnyIPv6))
+ serverAddress = server.localAddress();
+
+ QUdpSocket client;
+#ifdef FORCE_SESSION
+ client.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QVERIFY(client.writeDatagram("this is", 7, serverAddress, server.localPort()) == 7);
+ QVERIFY(client.writeDatagram(0, 0, serverAddress, server.localPort()) == 0);
+ QVERIFY(client.writeDatagram("3 messages", 10, serverAddress, server.localPort()) == 10);
+
+ char c = 0;
+ QVERIFY(server.waitForReadyRead());
+ if (server.hasPendingDatagrams()) {
+#if defined Q_OS_HPUX && defined __ia64
+ QEXPECT_FAIL("", "HP-UX 11i v2 can't determine the datagram size correctly.", Abort);
+#endif
+ QCOMPARE(server.pendingDatagramSize(), qint64(7));
+ c = '\0';
+ QCOMPARE(server.readDatagram(&c, 1), qint64(1));
+ QCOMPARE(c, 't');
+ c = '\0';
+ } else {
+ QSKIP("does not have the 1st datagram", SkipSingle);
+ }
+
+ if (server.hasPendingDatagrams()) {
+ QCOMPARE(server.pendingDatagramSize(), qint64(0));
+ QCOMPARE(server.readDatagram(&c, 1), qint64(0));
+ QCOMPARE(c, '\0'); // untouched
+ c = '\0';
+ } else {
+ QSKIP("does not have the 2nd datagram", SkipSingle);
+ }
+
+ if (server.hasPendingDatagrams()) {
+ QCOMPARE(server.pendingDatagramSize(), qint64(10));
+ QCOMPARE(server.readDatagram(&c, 1), qint64(1));
+ QCOMPARE(c, '3');
+ } else {
+ QSKIP("does not have the 3rd datagram", SkipSingle);
+ }
+}
+
+
+void tst_QUdpSocket::writeDatagram()
+{
+ QUdpSocket server;
+#ifdef FORCE_SESSION
+ server.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QVERIFY2(server.bind(), server.errorString().toLatin1().constData());
+
+ QHostAddress serverAddress = QHostAddress::LocalHost;
+ if (!(server.localAddress() == QHostAddress::AnyIPv4 || server.localAddress() == QHostAddress::AnyIPv6))
+ serverAddress = server.localAddress();
+
+ QUdpSocket client;
+#ifdef FORCE_SESSION
+ client.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+
+ qRegisterMetaType<qint64>("qint64");
+ qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
+
+ for(int i=0;;i++) {
+ QSignalSpy errorspy(&client, SIGNAL(error(QAbstractSocket::SocketError)));
+ QSignalSpy bytesspy(&client, SIGNAL(bytesWritten(qint64)));
+
+ qint64 written = client.writeDatagram(QByteArray(i * 1024, 'w'), serverAddress,
+ server.localPort());
+
+ if (written != i * 1024) {
+#if defined (Q_OS_HPUX)
+ QSKIP("HP-UX 11.11 on hai (PA-RISC 64) truncates too long datagrams.", SkipSingle);
+#endif
+ QCOMPARE(bytesspy.count(), 0);
+ QCOMPARE(errorspy.count(), 1);
+ QCOMPARE(*static_cast<const int *>(errorspy.at(0).at(0).constData()),
+ int(QUdpSocket::DatagramTooLargeError));
+ QCOMPARE(client.error(), QUdpSocket::DatagramTooLargeError);
+ break;
+ }
+ QVERIFY(bytesspy.count() == 1);
+ QCOMPARE(*static_cast<const qint64 *>(bytesspy.at(0).at(0).constData()),
+ qint64(i * 1024));
+ QCOMPARE(errorspy.count(), 0);
+ if (!server.waitForReadyRead(5000)) {
+#ifdef Q_OS_SYMBIAN
+ //symbian receive buffer for datagrams is ~30k, but it can send datagrams up to the maximum 64k...
+ if (i > 28) {
+ i = 64;
+ continue;
+ }
+#endif
+ QSKIP(QString("UDP packet lost at size %1, unable to complete the test.").arg(i * 1024).toLatin1().data(), SkipSingle);
+ }
+ QCOMPARE(server.pendingDatagramSize(), qint64(i * 1024));
+ QCOMPARE(server.readDatagram(0, 0), qint64(0));
+ }
+}
+
+void tst_QUdpSocket::performance()
+{
+#if defined(Q_OS_SYMBIAN)
+ // Large packets seems not to go through on Symbian
+ // Reason might be also fragmentation due to VPN connection etc
+
+ QFETCH_GLOBAL(bool, setProxy);
+ QFETCH_GLOBAL(int, proxyType);
+
+ int arrSize = 8192;
+ if (setProxy && proxyType == QNetworkProxy::Socks5Proxy)
+ arrSize = 1024;
+
+ QByteArray arr(arrSize, '@');
+#else
+ QByteArray arr(8192, '@');
+#endif // Q_OS_SYMBIAN
+
+ QUdpSocket server;
+#ifdef FORCE_SESSION
+ server.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QVERIFY2(server.bind(), server.errorString().toLatin1().constData());
+
+ QHostAddress serverAddress = QHostAddress::LocalHost;
+ if (!(server.localAddress() == QHostAddress::AnyIPv4 || server.localAddress() == QHostAddress::AnyIPv6))
+ serverAddress = server.localAddress();
+
+ QUdpSocket client;
+#ifdef FORCE_SESSION
+ client.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ client.connectToHost(serverAddress, server.localPort());
+ QVERIFY(client.waitForConnected(10000));
+
+ QTime stopWatch;
+ stopWatch.start();
+
+ qint64 nbytes = 0;
+ while (stopWatch.elapsed() < 5000) {
+ for (int i = 0; i < 100; ++i) {
+ if (client.write(arr.data(), arr.size()) > 0) {
+ do {
+ nbytes += server.readDatagram(arr.data(), arr.size());
+ } while (server.hasPendingDatagrams());
+ }
+ }
+ }
+
+ float secs = stopWatch.elapsed() / 1000.0;
+ qDebug("\t%.2fMB/%.2fs: %.2fMB/s", float(nbytes / (1024.0*1024.0)),
+ secs, float(nbytes / (1024.0*1024.0)) / secs);
+
+#if defined(Q_OS_SYMBIAN)
+ if(nbytes == 0) {
+ qDebug("No bytes passed through local UDP socket, since UDP socket write returns EWOULDBLOCK");
+ qDebug("Should try with blocking sockets, but it is not currently possible due to Open C defect");
+ }
+#endif
+
+}
+
+void tst_QUdpSocket::bindMode()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ if (proxyType == QNetworkProxy::Socks5Proxy) {
+ QSKIP("With socks5 explicit port binding is not supported.", SkipAll);
+ }
+ }
+
+ QUdpSocket socket;
+#ifdef FORCE_SESSION
+ socket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QVERIFY2(socket.bind(), socket.errorString().toLatin1().constData());
+ QUdpSocket socket2;
+#ifdef FORCE_SESSION
+ socket2.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QVERIFY(!socket2.bind(socket.localPort()));
+#if defined(Q_OS_SYMBIAN)
+ if(RProcess().HasCapability(ECapabilityNetworkControl)) {
+ qDebug("Test executed *with* NetworkControl capability");
+ // In Symbian OS ReuseAddressHint together with NetworkControl capability
+ // gives application *always* right to bind to port. I.e. it does not matter
+ // if first socket was bound with any bind flag. Since autotests in Symbian
+ // are currently executed with ALL -TCB rights, this path is the one executed.
+ QVERIFY(socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
+ socket.close();
+ socket2.close();
+
+ QVERIFY2(socket.bind(0, QUdpSocket::ShareAddress), socket.errorString().toLatin1().constData());
+ QVERIFY(!socket2.bind(socket.localPort()));
+ QVERIFY2(socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint), socket2.errorString().toLatin1().constData());
+ socket.close();
+ socket2.close();
+
+ QVERIFY2(socket.bind(0, QUdpSocket::DontShareAddress), socket.errorString().toLatin1().constData());
+ QVERIFY(!socket2.bind(socket.localPort()));
+ QVERIFY(socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
+ socket.close();
+ socket2.close();
+ } else {
+ qDebug("Test executed *without* NetworkControl capability");
+ // If we don't have NetworkControl capability, attempt to bind already bound
+ // address will *always* fail. I.e. it does not matter if first socket was
+ // bound with any bind flag.
+ QVERIFY(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
+ socket.close();
+
+ QVERIFY2(socket.bind(0, QUdpSocket::ShareAddress), socket.errorString().toLatin1().constData());
+ QVERIFY(!socket2.bind(socket.localPort()));
+ QVERIFY2(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint), socket2.errorString().toLatin1().constData());
+ socket.close();
+
+ QVERIFY2(socket.bind(0, QUdpSocket::DontShareAddress), socket.errorString().toLatin1().constData());
+ QVERIFY(!socket2.bind(socket.localPort()));
+ QVERIFY(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
+ socket.close();
+ }
+#elif defined(Q_OS_UNIX)
+ QVERIFY(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
+ socket.close();
+ QVERIFY2(socket.bind(0, QUdpSocket::ShareAddress), socket.errorString().toLatin1().constData());
+ QVERIFY2(socket2.bind(socket.localPort()), socket2.errorString().toLatin1().constData());
+ socket2.close();
+ QVERIFY2(socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint), socket2.errorString().toLatin1().constData());
+#else
+
+ // Depending on the user's privileges, this or will succeed or
+ // fail. Admins are allowed to reuse the address, but nobody else.
+ if (!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint), socket2.errorString().toLatin1().constData())
+ qWarning("Failed to bind with QUdpSocket::ReuseAddressHint, user isn't an administrator?");
+ socket.close();
+ QVERIFY2(socket.bind(0, QUdpSocket::ShareAddress), socket.errorString().toLatin1().constData());
+ QVERIFY(!socket2.bind(socket.localPort()));
+ socket.close();
+ QVERIFY2(socket.bind(0, QUdpSocket::DontShareAddress), socket.errorString().toLatin1().constData());
+ QVERIFY(!socket2.bind(socket.localPort()));
+ QVERIFY(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
+#endif
+}
+
+void tst_QUdpSocket::writeDatagramToNonExistingPeer_data()
+{
+ QTest::addColumn<bool>("bind");
+ QTest::addColumn<QHostAddress>("peerAddress");
+ QHostAddress localhost(QHostAddress::LocalHost);
+ QHostAddress remote = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first();
+
+ QTest::newRow("localhost-unbound") << false << localhost;
+ QTest::newRow("localhost-bound") << true << localhost;
+ QTest::newRow("remote-unbound") << false << remote;
+ QTest::newRow("remote-bound") << true << remote;
+}
+
+void tst_QUdpSocket::writeDatagramToNonExistingPeer()
+{
+ QFETCH(bool, bind);
+ QFETCH(QHostAddress, peerAddress);
+
+ quint16 peerPort = 33533 + int(bind);
+
+ QUdpSocket sUdp;
+#ifdef FORCE_SESSION
+ sUdp.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QSignalSpy sReadyReadSpy(&sUdp, SIGNAL(readyRead()));
+ if (bind)
+ QVERIFY(sUdp.bind());
+ QCOMPARE(sUdp.writeDatagram("", 1, peerAddress, peerPort), qint64(1));
+ QTestEventLoop::instance().enterLoop(1);
+ QCOMPARE(sReadyReadSpy.count(), 0);
+}
+
+void tst_QUdpSocket::writeToNonExistingPeer_data()
+{
+ QTest::addColumn<QHostAddress>("peerAddress");
+ QHostAddress localhost(QHostAddress::LocalHost);
+ QHostAddress remote = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first();
+ // write (required to be connected)
+ QTest::newRow("localhost") << localhost;
+ QTest::newRow("remote") << remote;
+}
+
+void tst_QUdpSocket::writeToNonExistingPeer()
+{
+ QSKIP("Connected-mode UDP sockets and their behaviour are erratic", SkipAll);
+ QFETCH(QHostAddress, peerAddress);
+ quint16 peerPort = 34534;
+ qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
+
+ QUdpSocket sConnected;
+#ifdef FORCE_SESSION
+ sConnected.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QSignalSpy sConnectedReadyReadSpy(&sConnected, SIGNAL(readyRead()));
+ QSignalSpy sConnectedErrorSpy(&sConnected, SIGNAL(error(QAbstractSocket::SocketError)));
+ sConnected.connectToHost(peerAddress, peerPort, QIODevice::ReadWrite);
+ QVERIFY(sConnected.waitForConnected(10000));
+
+ // the first write succeeds...
+ QCOMPARE(sConnected.write("", 1), qint64(1));
+
+ // the second one should fail!
+ QTest::qSleep(1000); // do not process events
+ QCOMPARE(sConnected.write("", 1), qint64(-1));
+ QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError));
+
+ // the third one will succeed...
+ QCOMPARE(sConnected.write("", 1), qint64(1));
+ QTestEventLoop::instance().enterLoop(1);
+ QCOMPARE(sConnectedReadyReadSpy.count(), 0);
+ QCOMPARE(sConnectedErrorSpy.count(), 1);
+ QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError));
+
+ // we should now get a read error
+ QCOMPARE(sConnected.write("", 1), qint64(1));
+ QTest::qSleep(1000); // do not process events
+ char buf[2];
+ QVERIFY(!sConnected.hasPendingDatagrams());
+ QCOMPARE(sConnected.bytesAvailable(), Q_INT64_C(0));
+ QCOMPARE(sConnected.pendingDatagramSize(), Q_INT64_C(-1));
+ QCOMPARE(sConnected.readDatagram(buf, 2), Q_INT64_C(-1));
+ QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError));
+
+ QCOMPARE(sConnected.write("", 1), qint64(1));
+ QTest::qSleep(1000); // do not process events
+ QCOMPARE(sConnected.read(buf, 2), Q_INT64_C(0));
+ QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError));
+
+ // we should still be connected
+ QCOMPARE(int(sConnected.state()), int(QUdpSocket::ConnectedState));
+}
+
+void tst_QUdpSocket::outOfProcessConnectedClientServerTest()
+{
+#if defined(Q_OS_WINCE) || defined (Q_OS_SYMBIAN)
+ QSKIP("This test depends on reading data from QProcess (not supported on Qt/WinCE and Symbian).", SkipAll);
+#endif
+#if defined(QT_NO_PROCESS)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+
+ QProcess serverProcess;
+ serverProcess.start(QLatin1String("clientserver/clientserver server 1 1"),
+ QIODevice::ReadWrite | QIODevice::Text);
+ QVERIFY2(serverProcess.waitForStarted(3000),
+ qPrintable("Failed to start subprocess: " + serverProcess.errorString()));
+
+ // Wait until the server has started and reports success.
+ while (!serverProcess.canReadLine())
+ QVERIFY(serverProcess.waitForReadyRead(3000));
+ QByteArray serverGreeting = serverProcess.readLine();
+ QVERIFY(serverGreeting != QByteArray("XXX\n"));
+ int serverPort = serverGreeting.trimmed().toInt();
+ QVERIFY(serverPort > 0 && serverPort < 65536);
+
+ QProcess clientProcess;
+ clientProcess.start(QString::fromLatin1("clientserver/clientserver connectedclient %1 %2")
+ .arg(QLatin1String("127.0.0.1")).arg(serverPort),
+ QIODevice::ReadWrite | QIODevice::Text);
+ QVERIFY2(clientProcess.waitForStarted(3000),
+ qPrintable("Failed to start subprocess: " + clientProcess.errorString()));
+
+ // Wait until the server has started and reports success.
+ while (!clientProcess.canReadLine())
+ QVERIFY(clientProcess.waitForReadyRead(3000));
+ QByteArray clientGreeting = clientProcess.readLine();
+ QCOMPARE(clientGreeting, QByteArray("ok\n"));
+
+ // Let the client and server talk for 3 seconds
+ QTest::qWait(3000);
+
+ QStringList serverData = QString::fromLocal8Bit(serverProcess.readAll()).split("\n");
+ QStringList clientData = QString::fromLocal8Bit(clientProcess.readAll()).split("\n");
+ QVERIFY(serverData.size() > 5);
+ QVERIFY(clientData.size() > 5);
+
+ for (int i = 0; i < clientData.size() / 2; ++i) {
+ QCOMPARE(clientData.at(i * 2), QString("readData()"));
+ QCOMPARE(serverData.at(i * 3), QString("readData()"));
+
+ QString cdata = clientData.at(i * 2 + 1);
+ QString sdata = serverData.at(i * 3 + 1);
+ QVERIFY(cdata.startsWith(QLatin1String("got ")));
+
+ QCOMPARE(cdata.mid(4).trimmed().toInt(), sdata.mid(4).trimmed().toInt() * 2);
+ QVERIFY(serverData.at(i * 3 + 2).startsWith(QLatin1String("sending ")));
+ QCOMPARE(serverData.at(i * 3 + 2).trimmed().mid(8).toInt(),
+ sdata.mid(4).trimmed().toInt() * 2);
+ }
+
+ clientProcess.kill();
+ QVERIFY(clientProcess.waitForFinished());
+ serverProcess.kill();
+ QVERIFY(serverProcess.waitForFinished());
+#endif
+}
+
+void tst_QUdpSocket::outOfProcessUnconnectedClientServerTest()
+{
+#if defined(Q_OS_WINCE) || defined (Q_OS_SYMBIAN)
+ QSKIP("This test depends on reading data from QProcess (not supported on Qt/WinCE and Symbian).", SkipAll);
+#endif
+#if defined(QT_NO_PROCESS)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+
+ QProcess serverProcess;
+ serverProcess.start(QLatin1String("clientserver/clientserver server 1 1"),
+ QIODevice::ReadWrite | QIODevice::Text);
+ QVERIFY2(serverProcess.waitForStarted(3000),
+ qPrintable("Failed to start subprocess: " + serverProcess.errorString()));
+
+ // Wait until the server has started and reports success.
+ while (!serverProcess.canReadLine())
+ QVERIFY(serverProcess.waitForReadyRead(3000));
+ QByteArray serverGreeting = serverProcess.readLine();
+ QVERIFY(serverGreeting != QByteArray("XXX\n"));
+ int serverPort = serverGreeting.trimmed().toInt();
+ QVERIFY(serverPort > 0 && serverPort < 65536);
+
+ QProcess clientProcess;
+ clientProcess.start(QString::fromLatin1("clientserver/clientserver unconnectedclient %1 %2")
+ .arg(QLatin1String("127.0.0.1")).arg(serverPort),
+ QIODevice::ReadWrite | QIODevice::Text);
+ QVERIFY2(clientProcess.waitForStarted(3000),
+ qPrintable("Failed to start subprocess: " + clientProcess.errorString()));
+
+ // Wait until the server has started and reports success.
+ while (!clientProcess.canReadLine())
+ QVERIFY(clientProcess.waitForReadyRead(3000));
+ QByteArray clientGreeting = clientProcess.readLine();
+ QCOMPARE(clientGreeting, QByteArray("ok\n"));
+
+ // Let the client and server talk for 3 seconds
+ QTest::qWait(3000);
+
+ QStringList serverData = QString::fromLocal8Bit(serverProcess.readAll()).split("\n");
+ QStringList clientData = QString::fromLocal8Bit(clientProcess.readAll()).split("\n");
+
+ QVERIFY(serverData.size() > 5);
+ QVERIFY(clientData.size() > 5);
+
+ for (int i = 0; i < clientData.size() / 2; ++i) {
+ QCOMPARE(clientData.at(i * 2), QString("readData()"));
+ QCOMPARE(serverData.at(i * 3), QString("readData()"));
+
+ QString cdata = clientData.at(i * 2 + 1);
+ QString sdata = serverData.at(i * 3 + 1);
+ QVERIFY(cdata.startsWith(QLatin1String("got ")));
+
+ QCOMPARE(cdata.mid(4).trimmed().toInt(), sdata.mid(4).trimmed().toInt() * 2);
+ QVERIFY(serverData.at(i * 3 + 2).startsWith(QLatin1String("sending ")));
+ QCOMPARE(serverData.at(i * 3 + 2).trimmed().mid(8).toInt(),
+ sdata.mid(4).trimmed().toInt() * 2);
+ }
+
+ clientProcess.kill();
+ QVERIFY(clientProcess.waitForFinished());
+ serverProcess.kill();
+ QVERIFY(serverProcess.waitForFinished());
+#endif
+}
+
+void tst_QUdpSocket::zeroLengthDatagram()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QUdpSocket receiver;
+#ifdef FORCE_SESSION
+ receiver.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QVERIFY(receiver.bind());
+
+ QVERIFY(!receiver.waitForReadyRead(100));
+ QVERIFY(!receiver.hasPendingDatagrams());
+
+ QUdpSocket sender;
+#ifdef FORCE_SESSION
+ sender.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ QCOMPARE(sender.writeDatagram(QByteArray(), QHostAddress::LocalHost, receiver.localPort()), qint64(0));
+
+ QVERIFY(receiver.waitForReadyRead(1000));
+ QVERIFY(receiver.hasPendingDatagrams());
+
+ char buf;
+ QCOMPARE(receiver.readDatagram(&buf, 1), qint64(0));
+}
+
+void tst_QUdpSocket::multicastTtlOption_data()
+{
+ QTest::addColumn<QHostAddress>("bindAddress");
+ QTest::addColumn<int>("ttl");
+ QTest::addColumn<int>("expected");
+
+ QList<QHostAddress> addresses;
+ addresses += QHostAddress(QHostAddress::Any);
+ addresses += QHostAddress(QHostAddress::AnyIPv6);
+
+ foreach (const QHostAddress &address, addresses) {
+ QTest::newRow(QString("%1 0").arg(address.toString()).toAscii()) << address << 0 << 0;
+ QTest::newRow(QString("%1 1").arg(address.toString()).toAscii()) << address << 1 << 1;
+ QTest::newRow(QString("%1 2").arg(address.toString()).toAscii()) << address << 2 << 2;
+ QTest::newRow(QString("%1 128").arg(address.toString()).toAscii()) << address << 128 << 128;
+ QTest::newRow(QString("%1 255").arg(address.toString()).toAscii()) << address << 255 << 255;
+ QTest::newRow(QString("%1 1024").arg(address.toString()).toAscii()) << address << 1024 << 1;
+ }
+}
+
+void tst_QUdpSocket::multicastTtlOption()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ QFETCH(QHostAddress, bindAddress);
+ QFETCH(int, ttl);
+ QFETCH(int, expected);
+ if (setProxy) {
+ // UDP multicast does not work with proxies
+ expected = 0;
+ }
+
+ QUdpSocket udpSocket;
+#ifdef FORCE_SESSION
+ udpSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ // bind, but ignore the result, we are only interested in initializing the socket
+ (void) udpSocket.bind(bindAddress, 0);
+ udpSocket.setSocketOption(QUdpSocket::MulticastTtlOption, ttl);
+ QCOMPARE(udpSocket.socketOption(QUdpSocket::MulticastTtlOption).toInt(), expected);
+}
+
+void tst_QUdpSocket::multicastLoopbackOption_data()
+{
+ QTest::addColumn<QHostAddress>("bindAddress");
+ QTest::addColumn<int>("loopback");
+ QTest::addColumn<int>("expected");
+
+ QList<QHostAddress> addresses;
+ addresses += QHostAddress(QHostAddress::Any);
+ addresses += QHostAddress(QHostAddress::AnyIPv6);
+
+ foreach (const QHostAddress &address, addresses) {
+ QTest::newRow(QString("%1 0").arg(address.toString()).toAscii()) << address << 0 << 0;
+ QTest::newRow(QString("%1 1").arg(address.toString()).toAscii()) << address << 1 << 1;
+ QTest::newRow(QString("%1 2").arg(address.toString()).toAscii()) << address << 2 << 1;
+ QTest::newRow(QString("%1 0 again").arg(address.toString()).toAscii()) << address << 0 << 0;
+ QTest::newRow(QString("%1 2 again").arg(address.toString()).toAscii()) << address << 2 << 1;
+ QTest::newRow(QString("%1 0 last time").arg(address.toString()).toAscii()) << address << 0 << 0;
+ QTest::newRow(QString("%1 1 again").arg(address.toString()).toAscii()) << address << 1 << 1;
+ }
+}
+
+void tst_QUdpSocket::multicastLoopbackOption()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ QFETCH(QHostAddress, bindAddress);
+ QFETCH(int, loopback);
+ QFETCH(int, expected);
+ if (setProxy) {
+ // UDP multicast does not work with proxies
+ expected = 0;
+ }
+
+ QUdpSocket udpSocket;
+#ifdef FORCE_SESSION
+ udpSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ // bind, but ignore the result, we are only interested in initializing the socket
+ (void) udpSocket.bind(bindAddress, 0);
+ udpSocket.setSocketOption(QUdpSocket::MulticastLoopbackOption, loopback);
+ QCOMPARE(udpSocket.socketOption(QUdpSocket::MulticastLoopbackOption).toInt(), expected);
+}
+
+void tst_QUdpSocket::multicastJoinBeforeBind_data()
+{
+ QTest::addColumn<QHostAddress>("groupAddress");
+ QTest::newRow("valid ipv4 group address") << QHostAddress("239.255.118.62");
+ QTest::newRow("invalid ipv4 group address") << QHostAddress(QHostAddress::Broadcast);
+ QTest::newRow("valid ipv6 group address") << QHostAddress("FF01::114");
+ QTest::newRow("invalid ipv6 group address") << QHostAddress(QHostAddress::AnyIPv6);
+}
+
+void tst_QUdpSocket::multicastJoinBeforeBind()
+{
+ QFETCH(QHostAddress, groupAddress);
+
+ QUdpSocket udpSocket;
+#ifdef FORCE_SESSION
+ udpSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ // cannot join group before binding
+ QTest::ignoreMessage(QtWarningMsg, "QUdpSocket::joinMulticastGroup() called on a QUdpSocket when not in QUdpSocket::BoundState");
+ QVERIFY(!udpSocket.joinMulticastGroup(groupAddress));
+}
+
+void tst_QUdpSocket::multicastLeaveAfterClose_data()
+{
+ QTest::addColumn<QHostAddress>("groupAddress");
+ QTest::newRow("valid ipv4 group address") << QHostAddress("239.255.118.62");
+ QTest::newRow("valid ipv6 group address") << QHostAddress("FF01::114");
+}
+
+void tst_QUdpSocket::multicastLeaveAfterClose()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ QFETCH(QHostAddress, groupAddress);
+ if (setProxy) {
+ QSKIP("UDP Multicast does not work with proxies", SkipAll);
+ }
+
+ QUdpSocket udpSocket;
+#ifdef FORCE_SESSION
+ udpSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+#ifdef Q_OS_SYMBIAN
+ QVERIFY2(udpSocket.bind(),
+ qPrintable(udpSocket.errorString()));
+#else
+ QVERIFY2(udpSocket.bind(groupAddress, 0),
+ qPrintable(udpSocket.errorString()));
+#endif
+ QVERIFY2(udpSocket.joinMulticastGroup(groupAddress),
+ qPrintable(udpSocket.errorString()));
+ udpSocket.close();
+ QTest::ignoreMessage(QtWarningMsg, "QUdpSocket::leaveMulticastGroup() called on a QUdpSocket when not in QUdpSocket::BoundState");
+ QVERIFY(!udpSocket.leaveMulticastGroup(groupAddress));
+}
+
+void tst_QUdpSocket::setMulticastInterface_data()
+{
+ QTest::addColumn<QNetworkInterface>("iface");
+ QTest::addColumn<QHostAddress>("address");
+ QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces();
+ foreach (const QNetworkInterface &iface, interfaces) {
+ foreach (const QNetworkAddressEntry &entry, iface.addressEntries()) {
+ QTest::newRow(QString("%1:%2").arg(iface.name()).arg(entry.ip().toString()).toAscii())
+ << iface
+ << entry.ip();
+ }
+ }
+}
+
+void tst_QUdpSocket::setMulticastInterface()
+{
+#ifdef Q_OS_SYMBIAN
+ QSKIP("Symbian has no IPV6_MULTICAST_IF equivalent", SkipAll);
+#else
+ QFETCH_GLOBAL(bool, setProxy);
+ QFETCH(QNetworkInterface, iface);
+ QFETCH(QHostAddress, address);
+
+ QUdpSocket udpSocket;
+ // bind initializes the socket
+ bool bound = udpSocket.bind((address.protocol() == QAbstractSocket::IPv6Protocol
+ ? QHostAddress(QHostAddress::AnyIPv6)
+ : QHostAddress(QHostAddress::Any)),
+ 0);
+ if (!bound)
+ QTest::ignoreMessage(QtWarningMsg, "QUdpSocket::setMulticastInterface() called on a QUdpSocket when not in QUdpSocket::BoundState");
+ udpSocket.setMulticastInterface(iface);
+ if (!bound)
+ QTest::ignoreMessage(QtWarningMsg, "QUdpSocket::multicastInterface() called on a QUdpSocket when not in QUdpSocket::BoundState");
+ QNetworkInterface iface2 = udpSocket.multicastInterface();
+ if (!setProxy) {
+ QVERIFY(iface2.isValid());
+ QCOMPARE(iface.name(), iface2.name());
+ } else {
+ QVERIFY(!iface2.isValid());
+ }
+#endif
+}
+
+void tst_QUdpSocket::multicast_data()
+{
+ QHostAddress anyAddress = QHostAddress(QHostAddress::AnyIPv4);
+ QHostAddress groupAddress = QHostAddress("239.255.118.62");
+ QHostAddress any6Address = QHostAddress(QHostAddress::AnyIPv6);
+ QHostAddress group6Address = QHostAddress("FF01::114");
+
+ QTest::addColumn<QHostAddress>("bindAddress");
+ QTest::addColumn<bool>("bindResult");
+ QTest::addColumn<QHostAddress>("groupAddress");
+ QTest::addColumn<bool>("joinResult");
+ QTest::newRow("valid bind, group ipv4 address") << anyAddress << true << groupAddress << true;
+ QTest::newRow("valid bind, invalid group ipv4 address") << anyAddress << true << anyAddress << false;
+ QTest::newRow("same bind, group ipv4 address") << groupAddress << true << groupAddress << true;
+ QTest::newRow("valid bind, group ipv6 address") << any6Address << true << group6Address << true;
+ QTest::newRow("valid bind, invalid group ipv6 address") << any6Address << true << any6Address << false;
+ QTest::newRow("same bind, group ipv6 address") << group6Address << true << group6Address << true;
+}
+
+void tst_QUdpSocket::multicast()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ QFETCH(QHostAddress, bindAddress);
+ QFETCH(bool, bindResult);
+ QFETCH(QHostAddress, groupAddress);
+ QFETCH(bool, joinResult);
+ if (setProxy) {
+ // UDP multicast does not work with proxies
+ if (
+#ifndef Q_OS_WIN
+ //windows native socket engine binds 0.0.0.0 instead of the requested multicast address
+ (bindAddress.protocol() == QAbstractSocket::IPv4Protocol && (bindAddress.toIPv4Address() & 0xffff0000) == 0xefff0000) ||
+#endif
+ bindAddress.protocol() == QAbstractSocket::IPv6Protocol) {
+ // proxy cannot bind to IPv6 or multicast addresses
+ bindResult = false;
+ }
+ joinResult = false;
+ }
+
+ QUdpSocket receiver;
+#ifdef FORCE_SESSION
+ receiver.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+
+ // bind first, then verify that we can join the multicast group
+#ifdef Q_OS_SYMBIAN
+ if (!setProxy) {
+ QEXPECT_FAIL("same bind, group ipv4 address", "bind to group address not supported on symbian", Abort);
+ QEXPECT_FAIL("same bind, group ipv6 address", "bind to group address not supported on symbian", Abort);
+ }
+#endif
+ QVERIFY2(receiver.bind(bindAddress, 0) == bindResult,
+ qPrintable(receiver.errorString()));
+ if (!bindResult)
+ return;
+
+ QVERIFY2(receiver.joinMulticastGroup(groupAddress) == joinResult,
+ qPrintable(receiver.errorString()));
+ if (!joinResult)
+ return;
+
+ QList<QByteArray> datagrams = QList<QByteArray>()
+ << QByteArray("0123")
+ << QByteArray("4567")
+ << QByteArray("89ab")
+ << QByteArray("cdef");
+
+ QUdpSocket sender;
+#ifdef FORCE_SESSION
+ sender.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ sender.bind();
+ foreach (const QByteArray &datagram, datagrams) {
+ QCOMPARE(int(sender.writeDatagram(datagram, groupAddress, receiver.localPort())),
+ int(datagram.size()));
+ }
+
+ QVERIFY2(receiver.waitForReadyRead(),
+ qPrintable(receiver.errorString()));
+ QVERIFY(receiver.hasPendingDatagrams());
+ QList<QByteArray> receivedDatagrams;
+ while (receiver.hasPendingDatagrams()) {
+ QByteArray datagram;
+ datagram.resize(receiver.pendingDatagramSize());
+ receiver.readDatagram(datagram.data(), datagram.size(), 0, 0);
+ receivedDatagrams << datagram;
+ }
+#ifdef Q_OS_SYMBIAN
+ QEXPECT_FAIL("valid bind, group ipv4 address", "IPv4 multicast not supported on symbian", Abort);
+#endif
+ QCOMPARE(receivedDatagrams, datagrams);
+
+ QVERIFY2(receiver.leaveMulticastGroup(groupAddress), qPrintable(receiver.errorString()));
+}
+
+void tst_QUdpSocket::echo_data()
+{
+ QTest::addColumn<bool>("connect");
+ QTest::newRow("writeDatagram") << false;
+ QTest::newRow("write") << true;
+}
+
+void tst_QUdpSocket::echo()
+{
+ QFETCH(bool, connect);
+ QHostInfo info = QHostInfo::fromName(QtNetworkSettings::serverName());
+ QVERIFY(info.addresses().count());
+ QHostAddress remote = info.addresses().first();
+
+ QUdpSocket sock;
+#ifdef FORCE_SESSION
+ sock.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+ if (connect) {
+ sock.connectToHost(remote, 7);
+ QVERIFY(sock.waitForConnected(10000));
+ } else {
+ sock.bind();
+ }
+ QByteArray out(30, 'x');
+ QByteArray in;
+ int successes = 0;
+ for (int i=0;i<10;i++) {
+ if (connect) {
+ sock.write(out);
+ } else {
+ sock.writeDatagram(out, remote, 7);
+ }
+ if (sock.waitForReadyRead(1000)) {
+ while (sock.hasPendingDatagrams()) {
+ QHostAddress from;
+ quint16 port;
+ if (connect) {
+ in = sock.read(sock.pendingDatagramSize());
+ } else {
+ in.resize(sock.pendingDatagramSize());
+ sock.readDatagram(in.data(), in.length(), &from, &port);
+ }
+ if (in==out)
+ successes++;
+ }
+ }
+ if (!sock.isValid())
+ QFAIL(sock.errorString().toLatin1().constData());
+ qDebug() << "packets in" << successes << "out" << i;
+ QTest::qWait(50); //choke to avoid triggering flood/DDoS protections on echo service
+ }
+ QVERIFY(successes >= 9);
+}
+
+QTEST_MAIN(tst_QUdpSocket)
+#include "tst_qudpsocket.moc"
diff --git a/tests/auto/qudpsocket/udpServer/main.cpp b/tests/auto/network/socket/qudpsocket/udpServer/main.cpp
index ff3ca111d0..ff3ca111d0 100644
--- a/tests/auto/qudpsocket/udpServer/main.cpp
+++ b/tests/auto/network/socket/qudpsocket/udpServer/main.cpp
diff --git a/tests/auto/qudpsocket/udpServer/udpServer.pro b/tests/auto/network/socket/qudpsocket/udpServer/udpServer.pro
index 7438d40fb0..7438d40fb0 100644
--- a/tests/auto/qudpsocket/udpServer/udpServer.pro
+++ b/tests/auto/network/socket/qudpsocket/udpServer/udpServer.pro
diff --git a/tests/auto/network/socket/socket.pro b/tests/auto/network/socket/socket.pro
new file mode 100644
index 0000000000..49fb52d1a5
--- /dev/null
+++ b/tests/auto/network/socket/socket.pro
@@ -0,0 +1,17 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qhttpsocketengine \
+ qudpsocket \
+ qtcpsocket \
+ #qlocalsocket \ # FIXME: uses qtscript (QTBUG-19242)
+ qtcpserver \
+ qsocks5socketengine \
+ qabstractsocket \
+ platformsocketengine \
+
+!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ platformsocketengine \
+ qhttpsocketengine \
+ qsocks5socketengine \
+
+
diff --git a/tests/auto/qsslcertificate/.gitignore b/tests/auto/network/ssl/qsslcertificate/.gitignore
index 25b34756b7..25b34756b7 100644
--- a/tests/auto/qsslcertificate/.gitignore
+++ b/tests/auto/network/ssl/qsslcertificate/.gitignore
diff --git a/tests/auto/qsslcertificate/certificates/ca-cert.pem b/tests/auto/network/ssl/qsslcertificate/certificates/ca-cert.pem
index bcba68aefa..bcba68aefa 100644
--- a/tests/auto/qsslcertificate/certificates/ca-cert.pem
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/ca-cert.pem
diff --git a/tests/auto/qsslcertificate/certificates/ca-cert.pem.digest-md5 b/tests/auto/network/ssl/qsslcertificate/certificates/ca-cert.pem.digest-md5
index 800a05b030..800a05b030 100644
--- a/tests/auto/qsslcertificate/certificates/ca-cert.pem.digest-md5
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/ca-cert.pem.digest-md5
diff --git a/tests/auto/qsslcertificate/certificates/ca-cert.pem.digest-sha1 b/tests/auto/network/ssl/qsslcertificate/certificates/ca-cert.pem.digest-sha1
index df311a8dcb..df311a8dcb 100644
--- a/tests/auto/qsslcertificate/certificates/ca-cert.pem.digest-sha1
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/ca-cert.pem.digest-sha1
diff --git a/tests/auto/qsslcertificate/certificates/cert-ss-san-utf8.pem b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san-utf8.pem
index e1b731d69b..e1b731d69b 100644
--- a/tests/auto/qsslcertificate/certificates/cert-ss-san-utf8.pem
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san-utf8.pem
diff --git a/tests/auto/qsslcertificate/certificates/cert-ss-san-utf8.pem.san b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san-utf8.pem.san
index f46a637da4..f46a637da4 100644
--- a/tests/auto/qsslcertificate/certificates/cert-ss-san-utf8.pem.san
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san-utf8.pem.san
diff --git a/tests/auto/qsslcertificate/certificates/cert-ss-san.pem b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san.pem
index 3d0bdfcee8..3d0bdfcee8 100644
--- a/tests/auto/qsslcertificate/certificates/cert-ss-san.pem
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san.pem
diff --git a/tests/auto/qsslcertificate/certificates/cert-ss-san.pem.san b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san.pem.san
index f46a637da4..f46a637da4 100644
--- a/tests/auto/qsslcertificate/certificates/cert-ss-san.pem.san
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss-san.pem.san
diff --git a/tests/auto/qsslcertificate/certificates/cert-ss.der b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.der
index ea9eedc643..ea9eedc643 100644
--- a/tests/auto/qsslcertificate/certificates/cert-ss.der
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.der
Binary files differ
diff --git a/tests/auto/qsslcertificate/certificates/cert-ss.der.pubkey b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.der.pubkey
index 48d2b99c3a..48d2b99c3a 100644
--- a/tests/auto/qsslcertificate/certificates/cert-ss.der.pubkey
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.der.pubkey
Binary files differ
diff --git a/tests/auto/qsslcertificate/certificates/cert-ss.pem b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem
index b2626f3d1a..b2626f3d1a 100644
--- a/tests/auto/qsslcertificate/certificates/cert-ss.pem
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem
diff --git a/tests/auto/qsslcertificate/certificates/cert-ss.pem.digest-md5 b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem.digest-md5
index 62f4d76072..62f4d76072 100644
--- a/tests/auto/qsslcertificate/certificates/cert-ss.pem.digest-md5
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem.digest-md5
diff --git a/tests/auto/qsslcertificate/certificates/cert-ss.pem.digest-sha1 b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem.digest-sha1
index 02430ed89b..02430ed89b 100644
--- a/tests/auto/qsslcertificate/certificates/cert-ss.pem.digest-sha1
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem.digest-sha1
diff --git a/tests/auto/qsslcertificate/certificates/cert-ss.pem.pubkey b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem.pubkey
index 5344d112cb..5344d112cb 100644
--- a/tests/auto/qsslcertificate/certificates/cert-ss.pem.pubkey
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert-ss.pem.pubkey
diff --git a/tests/auto/qsslcertificate/certificates/cert.der b/tests/auto/network/ssl/qsslcertificate/certificates/cert.der
index aeb8571817..aeb8571817 100644
--- a/tests/auto/qsslcertificate/certificates/cert.der
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert.der
Binary files differ
diff --git a/tests/auto/qsslcertificate/certificates/cert.der.pubkey b/tests/auto/network/ssl/qsslcertificate/certificates/cert.der.pubkey
index 48d2b99c3a..48d2b99c3a 100644
--- a/tests/auto/qsslcertificate/certificates/cert.der.pubkey
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert.der.pubkey
Binary files differ
diff --git a/tests/auto/qsslcertificate/certificates/cert.pem b/tests/auto/network/ssl/qsslcertificate/certificates/cert.pem
index 295010c210..295010c210 100644
--- a/tests/auto/qsslcertificate/certificates/cert.pem
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert.pem
diff --git a/tests/auto/qsslcertificate/certificates/cert.pem.digest-md5 b/tests/auto/network/ssl/qsslcertificate/certificates/cert.pem.digest-md5
index 5333f63f06..5333f63f06 100644
--- a/tests/auto/qsslcertificate/certificates/cert.pem.digest-md5
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert.pem.digest-md5
diff --git a/tests/auto/qsslcertificate/certificates/cert.pem.digest-sha1 b/tests/auto/network/ssl/qsslcertificate/certificates/cert.pem.digest-sha1
index 62f84deb96..62f84deb96 100644
--- a/tests/auto/qsslcertificate/certificates/cert.pem.digest-sha1
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert.pem.digest-sha1
diff --git a/tests/auto/qsslcertificate/certificates/cert.pem.pubkey b/tests/auto/network/ssl/qsslcertificate/certificates/cert.pem.pubkey
index 5344d112cb..5344d112cb 100644
--- a/tests/auto/qsslcertificate/certificates/cert.pem.pubkey
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/cert.pem.pubkey
diff --git a/tests/auto/qsslcertificate/certificates/gencertificates.sh b/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh
index 0bac191326..0bac191326 100755
--- a/tests/auto/qsslcertificate/certificates/gencertificates.sh
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh
diff --git a/tests/auto/qsslcertificate/certificates/san.cnf b/tests/auto/network/ssl/qsslcertificate/certificates/san.cnf
index f46a637da4..f46a637da4 100644
--- a/tests/auto/qsslcertificate/certificates/san.cnf
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/san.cnf
diff --git a/tests/auto/qsslcertificate/more-certificates/badguy-nul-cn.crt b/tests/auto/network/ssl/qsslcertificate/more-certificates/badguy-nul-cn.crt
index b899733bbd..b899733bbd 100644
--- a/tests/auto/qsslcertificate/more-certificates/badguy-nul-cn.crt
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/badguy-nul-cn.crt
diff --git a/tests/auto/qsslcertificate/more-certificates/badguy-nul-san.crt b/tests/auto/network/ssl/qsslcertificate/more-certificates/badguy-nul-san.crt
index d897c3915e..d897c3915e 100644
--- a/tests/auto/qsslcertificate/more-certificates/badguy-nul-san.crt
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/badguy-nul-san.crt
diff --git a/tests/auto/qsslcertificate/more-certificates/blacklisted-google.com-diginotar.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted-google.com-diginotar.pem
index 12bbcae082..12bbcae082 100644
--- a/tests/auto/qsslcertificate/more-certificates/blacklisted-google.com-diginotar.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted-google.com-diginotar.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/blacklisted1.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted1.pem
index 7fc0a054c0..7fc0a054c0 100644
--- a/tests/auto/qsslcertificate/more-certificates/blacklisted1.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted1.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/blacklisted2.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted2.pem
index 3c8489fbcd..3c8489fbcd 100644
--- a/tests/auto/qsslcertificate/more-certificates/blacklisted2.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted2.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/blacklisted3.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted3.pem
index fa458cca36..fa458cca36 100644
--- a/tests/auto/qsslcertificate/more-certificates/blacklisted3.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted3.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/blacklisted4.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted4.pem
index 53761bb36a..53761bb36a 100644
--- a/tests/auto/qsslcertificate/more-certificates/blacklisted4.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted4.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/blacklisted5.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted5.pem
index 81211ee694..81211ee694 100644
--- a/tests/auto/qsslcertificate/more-certificates/blacklisted5.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted5.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/blacklisted6.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted6.pem
index 4264a678f1..4264a678f1 100644
--- a/tests/auto/qsslcertificate/more-certificates/blacklisted6.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted6.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/blacklisted7.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted7.pem
index 03ab7d46b0..03ab7d46b0 100644
--- a/tests/auto/qsslcertificate/more-certificates/blacklisted7.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted7.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/blacklisted8.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted8.pem
index acef06ffb0..acef06ffb0 100644
--- a/tests/auto/qsslcertificate/more-certificates/blacklisted8.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted8.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/blacklisted9.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted9.pem
index cc99b08e5f..cc99b08e5f 100644
--- a/tests/auto/qsslcertificate/more-certificates/blacklisted9.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/blacklisted9.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/cert-large-expiration-date.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-expiration-date.pem
index 416dd4da04..416dd4da04 100644
--- a/tests/auto/qsslcertificate/more-certificates/cert-large-expiration-date.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-expiration-date.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/cert-large-expiration-date.txt.0.9.8 b/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-expiration-date.txt.0.9.8
index 20500b221f..20500b221f 100644
--- a/tests/auto/qsslcertificate/more-certificates/cert-large-expiration-date.txt.0.9.8
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-expiration-date.txt.0.9.8
diff --git a/tests/auto/qsslcertificate/more-certificates/cert-large-expiration-date.txt.1.0.0 b/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-expiration-date.txt.1.0.0
index b2ccb2751e..b2ccb2751e 100644
--- a/tests/auto/qsslcertificate/more-certificates/cert-large-expiration-date.txt.1.0.0
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-expiration-date.txt.1.0.0
diff --git a/tests/auto/qsslcertificate/more-certificates/cert-large-serial-number.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-serial-number.pem
index ecb6c35632..ecb6c35632 100644
--- a/tests/auto/qsslcertificate/more-certificates/cert-large-serial-number.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-large-serial-number.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/malformed-just-begin-no-newline.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/malformed-just-begin-no-newline.pem
index 75f3c32241..75f3c32241 100644
--- a/tests/auto/qsslcertificate/more-certificates/malformed-just-begin-no-newline.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/malformed-just-begin-no-newline.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/malformed-just-begin.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/malformed-just-begin.pem
index a71aecf9af..a71aecf9af 100644
--- a/tests/auto/qsslcertificate/more-certificates/malformed-just-begin.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/malformed-just-begin.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/natwest-banking.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/natwest-banking.pem
index c3e303c770..c3e303c770 100644
--- a/tests/auto/qsslcertificate/more-certificates/natwest-banking.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/natwest-banking.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/no-ending-newline.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/no-ending-newline.pem
index f8056c72d0..f8056c72d0 100644
--- a/tests/auto/qsslcertificate/more-certificates/no-ending-newline.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/no-ending-newline.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/test-cn-two-cns-cert.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/test-cn-two-cns-cert.pem
index 08176289d7..08176289d7 100644
--- a/tests/auto/qsslcertificate/more-certificates/test-cn-two-cns-cert.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/test-cn-two-cns-cert.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/test-cn-with-drink-cert.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/test-cn-with-drink-cert.pem
index ed8823a520..ed8823a520 100644
--- a/tests/auto/qsslcertificate/more-certificates/test-cn-with-drink-cert.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/test-cn-with-drink-cert.pem
diff --git a/tests/auto/qsslcertificate/more-certificates/trailing-whitespace.pem b/tests/auto/network/ssl/qsslcertificate/more-certificates/trailing-whitespace.pem
index e48195d15e..e48195d15e 100644
--- a/tests/auto/qsslcertificate/more-certificates/trailing-whitespace.pem
+++ b/tests/auto/network/ssl/qsslcertificate/more-certificates/trailing-whitespace.pem
diff --git a/tests/auto/qsslcertificate/qsslcertificate.pro b/tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro
index 05cce8e509..05cce8e509 100644
--- a/tests/auto/qsslcertificate/qsslcertificate.pro
+++ b/tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro
diff --git a/tests/auto/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
index bcd21eefe2..bcd21eefe2 100644
--- a/tests/auto/qsslcertificate/tst_qsslcertificate.cpp
+++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
diff --git a/tests/auto/qsslcertificate/verify-certs/README b/tests/auto/network/ssl/qsslcertificate/verify-certs/README
index 87cb293ef6..87cb293ef6 100644
--- a/tests/auto/qsslcertificate/verify-certs/README
+++ b/tests/auto/network/ssl/qsslcertificate/verify-certs/README
diff --git a/tests/auto/qsslcertificate/verify-certs/cacert.pem b/tests/auto/network/ssl/qsslcertificate/verify-certs/cacert.pem
index 8c75c54bcb..8c75c54bcb 100644
--- a/tests/auto/qsslcertificate/verify-certs/cacert.pem
+++ b/tests/auto/network/ssl/qsslcertificate/verify-certs/cacert.pem
diff --git a/tests/auto/qsslcertificate/verify-certs/test-addons-mozilla-org-cert.pem b/tests/auto/network/ssl/qsslcertificate/verify-certs/test-addons-mozilla-org-cert.pem
index 07123e8577..07123e8577 100644
--- a/tests/auto/qsslcertificate/verify-certs/test-addons-mozilla-org-cert.pem
+++ b/tests/auto/network/ssl/qsslcertificate/verify-certs/test-addons-mozilla-org-cert.pem
diff --git a/tests/auto/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem b/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem
index d00490caba..d00490caba 100644
--- a/tests/auto/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem
+++ b/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem
diff --git a/tests/auto/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem b/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem
index 396cad86cb..396cad86cb 100644
--- a/tests/auto/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem
+++ b/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem
diff --git a/tests/auto/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem b/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem
index 34ad2b10a8..34ad2b10a8 100644
--- a/tests/auto/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem
+++ b/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem
diff --git a/tests/auto/qsslcertificate/verify-certs/test-ocsp-good-cert.pem b/tests/auto/network/ssl/qsslcertificate/verify-certs/test-ocsp-good-cert.pem
index 34b26c6d5e..34b26c6d5e 100644
--- a/tests/auto/qsslcertificate/verify-certs/test-ocsp-good-cert.pem
+++ b/tests/auto/network/ssl/qsslcertificate/verify-certs/test-ocsp-good-cert.pem
diff --git a/tests/auto/qsslcipher/.gitignore b/tests/auto/network/ssl/qsslcipher/.gitignore
index 13137ce3aa..13137ce3aa 100644
--- a/tests/auto/qsslcipher/.gitignore
+++ b/tests/auto/network/ssl/qsslcipher/.gitignore
diff --git a/tests/auto/qsslcipher/qsslcipher.pro b/tests/auto/network/ssl/qsslcipher/qsslcipher.pro
index 78fd387069..78fd387069 100644
--- a/tests/auto/qsslcipher/qsslcipher.pro
+++ b/tests/auto/network/ssl/qsslcipher/qsslcipher.pro
diff --git a/tests/auto/qsslcipher/tst_qsslcipher.cpp b/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp
index 5fe4d03bdd..5fe4d03bdd 100644
--- a/tests/auto/qsslcipher/tst_qsslcipher.cpp
+++ b/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp
diff --git a/tests/auto/qsslerror/.gitignore b/tests/auto/network/ssl/qsslerror/.gitignore
index e30995e94a..e30995e94a 100644
--- a/tests/auto/qsslerror/.gitignore
+++ b/tests/auto/network/ssl/qsslerror/.gitignore
diff --git a/tests/auto/qsslerror/qsslerror.pro b/tests/auto/network/ssl/qsslerror/qsslerror.pro
index 5b907fb600..5b907fb600 100644
--- a/tests/auto/qsslerror/qsslerror.pro
+++ b/tests/auto/network/ssl/qsslerror/qsslerror.pro
diff --git a/tests/auto/qsslerror/tst_qsslerror.cpp b/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp
index 3fae88ec00..3fae88ec00 100644
--- a/tests/auto/qsslerror/tst_qsslerror.cpp
+++ b/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp
diff --git a/tests/auto/qsslkey/.gitignore b/tests/auto/network/ssl/qsslkey/.gitignore
index 7c9a790dd7..7c9a790dd7 100644
--- a/tests/auto/qsslkey/.gitignore
+++ b/tests/auto/network/ssl/qsslkey/.gitignore
diff --git a/tests/auto/qsslkey/keys/dsa-pri-1024.der b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-1024.der
index 5b4026bef3..5b4026bef3 100644
--- a/tests/auto/qsslkey/keys/dsa-pri-1024.der
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-1024.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/dsa-pri-1024.pem b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-1024.pem
index cdb16c3841..cdb16c3841 100644
--- a/tests/auto/qsslkey/keys/dsa-pri-1024.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-1024.pem
diff --git a/tests/auto/qsslkey/keys/dsa-pri-512.der b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-512.der
index 0fc977f4e4..0fc977f4e4 100644
--- a/tests/auto/qsslkey/keys/dsa-pri-512.der
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-512.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/dsa-pri-512.pem b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-512.pem
index 35210e4dec..35210e4dec 100644
--- a/tests/auto/qsslkey/keys/dsa-pri-512.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-512.pem
diff --git a/tests/auto/qsslkey/keys/dsa-pri-576.der b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-576.der
index 30cea46c1e..30cea46c1e 100644
--- a/tests/auto/qsslkey/keys/dsa-pri-576.der
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-576.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/dsa-pri-576.pem b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-576.pem
index a398ddcf13..a398ddcf13 100644
--- a/tests/auto/qsslkey/keys/dsa-pri-576.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-576.pem
diff --git a/tests/auto/qsslkey/keys/dsa-pri-960.der b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-960.der
index d8291b87ca..d8291b87ca 100644
--- a/tests/auto/qsslkey/keys/dsa-pri-960.der
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-960.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/dsa-pri-960.pem b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-960.pem
index 054c174ecf..054c174ecf 100644
--- a/tests/auto/qsslkey/keys/dsa-pri-960.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pri-960.pem
diff --git a/tests/auto/qsslkey/keys/dsa-pub-1024.der b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-1024.der
index efff9d27c3..efff9d27c3 100644
--- a/tests/auto/qsslkey/keys/dsa-pub-1024.der
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-1024.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/dsa-pub-1024.pem b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-1024.pem
index f39bc37814..f39bc37814 100644
--- a/tests/auto/qsslkey/keys/dsa-pub-1024.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-1024.pem
diff --git a/tests/auto/qsslkey/keys/dsa-pub-512.der b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-512.der
index 5d60a6576a..5d60a6576a 100644
--- a/tests/auto/qsslkey/keys/dsa-pub-512.der
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-512.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/dsa-pub-512.pem b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-512.pem
index df5f99982e..df5f99982e 100644
--- a/tests/auto/qsslkey/keys/dsa-pub-512.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-512.pem
diff --git a/tests/auto/qsslkey/keys/dsa-pub-576.der b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-576.der
index 8c67395210..8c67395210 100644
--- a/tests/auto/qsslkey/keys/dsa-pub-576.der
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-576.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/dsa-pub-576.pem b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-576.pem
index 3a594bfecb..3a594bfecb 100644
--- a/tests/auto/qsslkey/keys/dsa-pub-576.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-576.pem
diff --git a/tests/auto/qsslkey/keys/dsa-pub-960.der b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-960.der
index 58c80e805e..58c80e805e 100644
--- a/tests/auto/qsslkey/keys/dsa-pub-960.der
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-960.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/dsa-pub-960.pem b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-960.pem
index bcdc9e343e..bcdc9e343e 100644
--- a/tests/auto/qsslkey/keys/dsa-pub-960.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/dsa-pub-960.pem
diff --git a/tests/auto/qsslkey/keys/genkeys.sh b/tests/auto/network/ssl/qsslkey/keys/genkeys.sh
index 559ef5cf5d..559ef5cf5d 100755
--- a/tests/auto/qsslkey/keys/genkeys.sh
+++ b/tests/auto/network/ssl/qsslkey/keys/genkeys.sh
diff --git a/tests/auto/qsslkey/keys/rsa-pri-1023.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-1023.der
index d23dde8058..d23dde8058 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-1023.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-1023.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pri-1023.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-1023.pem
index bd1c119217..bd1c119217 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-1023.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-1023.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pri-1024.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-1024.der
index 0ea20598f0..0ea20598f0 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-1024.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-1024.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pri-1024.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-1024.pem
index f2fc5b0064..f2fc5b0064 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-1024.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-1024.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pri-2048.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-2048.der
index 194da2adf2..194da2adf2 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-2048.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-2048.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pri-2048.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-2048.pem
index 125d281792..125d281792 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-2048.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-2048.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pri-40.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-40.der
index 227cbbba00..227cbbba00 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-40.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-40.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pri-40.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-40.pem
index e480b11029..e480b11029 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-40.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-40.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pri-511.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-511.der
index 43da25456e..43da25456e 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-511.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-511.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pri-511.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-511.pem
index 70872d9814..70872d9814 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-511.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-511.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pri-512.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-512.der
index 156a1d1439..156a1d1439 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-512.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-512.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pri-512.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-512.pem
index dda274f50c..dda274f50c 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-512.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-512.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pri-999.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-999.der
index 3b3f8ca6d5..3b3f8ca6d5 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-999.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-999.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pri-999.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-999.pem
index 6ed72bf1f9..6ed72bf1f9 100644
--- a/tests/auto/qsslkey/keys/rsa-pri-999.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pri-999.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pub-1023.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-1023.der
index 4b16fdddd0..4b16fdddd0 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-1023.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-1023.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pub-1023.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-1023.pem
index 174a135514..174a135514 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-1023.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-1023.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pub-1024.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-1024.der
index 96495920d0..96495920d0 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-1024.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-1024.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pub-1024.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-1024.pem
index d5c8da9144..d5c8da9144 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-1024.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-1024.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pub-2048.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-2048.der
index 560487b67e..560487b67e 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-2048.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-2048.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pub-2048.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-2048.pem
index 95daf33896..95daf33896 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-2048.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-2048.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pub-40.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-40.der
index 3d789a7e11..3d789a7e11 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-40.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-40.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pub-40.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-40.pem
index f053580d90..f053580d90 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-40.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-40.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pub-511.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-511.der
index 2da3341554..2da3341554 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-511.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-511.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pub-511.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-511.pem
index a5135f0e4c..a5135f0e4c 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-511.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-511.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pub-512.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-512.der
index 372ba8f8b5..372ba8f8b5 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-512.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-512.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pub-512.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-512.pem
index d3a5e5882f..d3a5e5882f 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-512.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-512.pem
diff --git a/tests/auto/qsslkey/keys/rsa-pub-999.der b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-999.der
index 1d28000501..1d28000501 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-999.der
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-999.der
Binary files differ
diff --git a/tests/auto/qsslkey/keys/rsa-pub-999.pem b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-999.pem
index 00ba47915a..00ba47915a 100644
--- a/tests/auto/qsslkey/keys/rsa-pub-999.pem
+++ b/tests/auto/network/ssl/qsslkey/keys/rsa-pub-999.pem
diff --git a/tests/auto/qsslkey/qsslkey.pro b/tests/auto/network/ssl/qsslkey/qsslkey.pro
index 5a90b76219..5a90b76219 100644
--- a/tests/auto/qsslkey/qsslkey.pro
+++ b/tests/auto/network/ssl/qsslkey/qsslkey.pro
diff --git a/tests/auto/qsslkey/rsa-with-passphrase.pem b/tests/auto/network/ssl/qsslkey/rsa-with-passphrase.pem
index cb29becc31..cb29becc31 100644
--- a/tests/auto/qsslkey/rsa-with-passphrase.pem
+++ b/tests/auto/network/ssl/qsslkey/rsa-with-passphrase.pem
diff --git a/tests/auto/qsslkey/rsa-without-passphrase.pem b/tests/auto/network/ssl/qsslkey/rsa-without-passphrase.pem
index f7c834b116..f7c834b116 100644
--- a/tests/auto/qsslkey/rsa-without-passphrase.pem
+++ b/tests/auto/network/ssl/qsslkey/rsa-without-passphrase.pem
diff --git a/tests/auto/qsslkey/tst_qsslkey.cpp b/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp
index ac966ce74a..ac966ce74a 100644
--- a/tests/auto/qsslkey/tst_qsslkey.cpp
+++ b/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp
diff --git a/tests/auto/qsslsocket/.gitignore b/tests/auto/network/ssl/qsslsocket/.gitignore
index f2319a97eb..f2319a97eb 100644
--- a/tests/auto/qsslsocket/.gitignore
+++ b/tests/auto/network/ssl/qsslsocket/.gitignore
diff --git a/tests/auto/qsslsocket/certs/aspiriniks.ca.crt b/tests/auto/network/ssl/qsslsocket/certs/aspiriniks.ca.crt
index 36436b6248..36436b6248 100644
--- a/tests/auto/qsslsocket/certs/aspiriniks.ca.crt
+++ b/tests/auto/network/ssl/qsslsocket/certs/aspiriniks.ca.crt
diff --git a/tests/auto/qsslsocket/certs/fake-login.live.com.key b/tests/auto/network/ssl/qsslsocket/certs/fake-login.live.com.key
index 692a7bd85d..692a7bd85d 100644
--- a/tests/auto/qsslsocket/certs/fake-login.live.com.key
+++ b/tests/auto/network/ssl/qsslsocket/certs/fake-login.live.com.key
diff --git a/tests/auto/qsslsocket/certs/fake-login.live.com.pem b/tests/auto/network/ssl/qsslsocket/certs/fake-login.live.com.pem
index 429f95187c..429f95187c 100644
--- a/tests/auto/qsslsocket/certs/fake-login.live.com.pem
+++ b/tests/auto/network/ssl/qsslsocket/certs/fake-login.live.com.pem
diff --git a/tests/auto/qsslsocket/certs/fluke.cert b/tests/auto/network/ssl/qsslsocket/certs/fluke.cert
index 069fa6b341..069fa6b341 100644
--- a/tests/auto/qsslsocket/certs/fluke.cert
+++ b/tests/auto/network/ssl/qsslsocket/certs/fluke.cert
diff --git a/tests/auto/qsslsocket/certs/fluke.key b/tests/auto/network/ssl/qsslsocket/certs/fluke.key
index 9d1664d609..9d1664d609 100644
--- a/tests/auto/qsslsocket/certs/fluke.key
+++ b/tests/auto/network/ssl/qsslsocket/certs/fluke.key
diff --git a/tests/auto/qsslsocket/certs/qt-test-server-cacert.pem b/tests/auto/network/ssl/qsslsocket/certs/qt-test-server-cacert.pem
index 25bd4046e8..25bd4046e8 100644
--- a/tests/auto/qsslsocket/certs/qt-test-server-cacert.pem
+++ b/tests/auto/network/ssl/qsslsocket/certs/qt-test-server-cacert.pem
diff --git a/tests/auto/network/ssl/qsslsocket/qsslsocket.pro b/tests/auto/network/ssl/qsslsocket/qsslsocket.pro
new file mode 100644
index 0000000000..f19b724ef0
--- /dev/null
+++ b/tests/auto/network/ssl/qsslsocket/qsslsocket.pro
@@ -0,0 +1,50 @@
+load(qttest_p4)
+
+SOURCES += tst_qsslsocket.cpp
+!wince*:win32:LIBS += -lws2_32
+QT += core-private network-private
+QT -= gui
+
+TARGET = tst_qsslsocket
+
+win32 {
+ CONFIG(debug, debug|release) {
+ DESTDIR = debug
+} else {
+ DESTDIR = release
+ }
+}
+
+# OpenSSL support
+contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) {
+ symbian {
+ INCLUDEPATH *= $$OS_LAYER_SSL_SYSTEMINCLUDE
+ } else {
+ include($$QT_SOURCE_TREE/config.tests/unix/openssl/openssl.pri)
+ }
+ # Add optional SSL libs
+ LIBS += $$OPENSSL_LIBS
+}
+
+wince* {
+ DEFINES += SRCDIR=\\\"./\\\"
+
+ certFiles.files = certs ssl.tar.gz
+ certFiles.path = .
+ DEPLOYMENT += certFiles
+} else:symbian {
+ DEFINES += QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
+ TARGET.EPOCHEAPSIZE="0x100 0x3000000"
+ TARGET.CAPABILITY=NetworkServices ReadUserData
+
+ certFiles.files = certs ssl.tar.gz
+ certFiles.path = .
+ DEPLOYMENT += certFiles
+ INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE # Needed for e32svr.h in S^3 envs
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+
+requires(contains(QT_CONFIG,private_tests))
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qsslsocket/ssl.tar.gz b/tests/auto/network/ssl/qsslsocket/ssl.tar.gz
index b59af51f46..b59af51f46 100644
--- a/tests/auto/qsslsocket/ssl.tar.gz
+++ b/tests/auto/network/ssl/qsslsocket/ssl.tar.gz
Binary files differ
diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
new file mode 100644
index 0000000000..6b7720308d
--- /dev/null
+++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
@@ -0,0 +1,2097 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/qthread.h>
+#include <QtNetwork/qhostaddress.h>
+#include <QtNetwork/qhostinfo.h>
+#include <QtNetwork/qnetworkproxy.h>
+#include <QtNetwork/qsslcipher.h>
+#include <QtNetwork/qsslconfiguration.h>
+#include <QtNetwork/qsslkey.h>
+#include <QtNetwork/qsslsocket.h>
+#include <QtNetwork/qtcpserver.h>
+#include <QtTest/QtTest>
+
+#include <QNetworkProxy>
+#include <QAuthenticator>
+
+#include "private/qhostinfo_p.h"
+#ifndef QT_NO_OPENSSL
+#include "private/qsslsocket_openssl_p.h"
+#include "private/qsslsocket_openssl_symbols_p.h"
+#endif
+
+#include "../../../network-settings.h"
+
+Q_DECLARE_METATYPE(QAbstractSocket::SocketState)
+Q_DECLARE_METATYPE(QAbstractSocket::SocketError)
+#ifndef QT_NO_OPENSSL
+Q_DECLARE_METATYPE(QSslSocket::SslMode)
+typedef QList<QSslError::SslError> SslErrorList;
+Q_DECLARE_METATYPE(SslErrorList)
+Q_DECLARE_METATYPE(QSslError)
+Q_DECLARE_METATYPE(QSsl::SslProtocol)
+Q_DECLARE_METATYPE(QSslConfiguration)
+#endif
+
+#if defined Q_OS_HPUX && defined Q_CC_GNU
+// This error is delivered every time we try to use the fluke CA
+// certificate. For now we work around this bug. Task 202317.
+#define QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
+#endif
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR ""
+#endif
+
+#ifndef QT_NO_OPENSSL
+class QSslSocketPtr: public QSharedPointer<QSslSocket>
+{
+public:
+ inline QSslSocketPtr(QSslSocket *ptr = 0)
+ : QSharedPointer<QSslSocket>(ptr)
+ { }
+
+ inline operator QSslSocket *() const { return data(); }
+};
+#endif
+
+class tst_QSslSocket : public QObject
+{
+ Q_OBJECT
+
+ int proxyAuthCalled;
+
+public:
+ tst_QSslSocket();
+ virtual ~tst_QSslSocket();
+
+ static void enterLoop(int secs)
+ {
+ ++loopLevel;
+ QTestEventLoop::instance().enterLoop(secs);
+ }
+
+ static bool timeout()
+ {
+ return QTestEventLoop::instance().timeout();
+ }
+
+#ifndef QT_NO_OPENSSL
+ QSslSocketPtr newSocket();
+#endif
+
+public slots:
+ void initTestCase_data();
+ void init();
+ void cleanup();
+ void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth);
+
+#ifndef QT_NO_OPENSSL
+private slots:
+ void constructing();
+ void simpleConnect();
+ void simpleConnectWithIgnore();
+
+ // API tests
+ void sslErrors_data();
+ void sslErrors();
+ void addCaCertificate();
+ void addCaCertificates();
+ void addCaCertificates2();
+ void ciphers();
+ void connectToHostEncrypted();
+ void connectToHostEncryptedWithVerificationPeerName();
+ void sessionCipher();
+ void flush();
+ void isEncrypted();
+ void localCertificate();
+ void mode();
+ void peerCertificate();
+ void peerCertificateChain();
+ void privateKey();
+ void privateKeyOpaque();
+ void protocol();
+ void protocolServerSide_data();
+ void protocolServerSide();
+ void setCaCertificates();
+ void setLocalCertificate();
+ void setPrivateKey();
+ void setSocketDescriptor();
+ void setSslConfiguration_data();
+ void setSslConfiguration();
+ void waitForEncrypted();
+ void waitForEncryptedMinusOne();
+ void waitForConnectedEncryptedReadyRead();
+ void startClientEncryption();
+ void startServerEncryption();
+ void addDefaultCaCertificate();
+ void addDefaultCaCertificates();
+ void addDefaultCaCertificates2();
+ void defaultCaCertificates();
+ void defaultCiphers();
+ void resetDefaultCiphers();
+ void setDefaultCaCertificates();
+ void setDefaultCiphers();
+ void supportedCiphers();
+ void systemCaCertificates();
+ void wildcardCertificateNames();
+ void wildcard();
+ void setEmptyKey();
+ void spontaneousWrite();
+ void setReadBufferSize();
+ void setReadBufferSize_task_250027();
+ void waitForMinusOne();
+ void verifyMode();
+ void verifyDepth();
+ void peerVerifyError();
+ void disconnectFromHostWhenConnecting();
+ void disconnectFromHostWhenConnected();
+ void resetProxy();
+ void ignoreSslErrorsList_data();
+ void ignoreSslErrorsList();
+ void ignoreSslErrorsListWithSlot_data();
+ void ignoreSslErrorsListWithSlot();
+ void readFromClosedSocket();
+ void writeBigChunk();
+ void blacklistedCertificates();
+ void setEmptyDefaultConfiguration();
+ void versionAccessors();
+
+ static void exitLoop()
+ {
+ // Safe exit - if we aren't in an event loop, don't
+ // exit one.
+ if (loopLevel > 0) {
+ --loopLevel;
+ QTestEventLoop::instance().exitLoop();
+ }
+ }
+
+protected slots:
+ void ignoreErrorSlot()
+ {
+ socket->ignoreSslErrors();
+ }
+ void untrustedWorkaroundSlot(const QList<QSslError> &errors)
+ {
+ if (errors.size() == 1 &&
+ (errors.first().error() == QSslError::CertificateUntrusted ||
+ errors.first().error() == QSslError::SelfSignedCertificate))
+ socket->ignoreSslErrors();
+ }
+ void ignoreErrorListSlot(const QList<QSslError> &errors);
+
+private:
+ QSslSocket *socket;
+ QList<QSslError> storedExpectedSslErrors;
+#endif // QT_NO_OPENSSL
+private:
+ static int loopLevel;
+};
+
+int tst_QSslSocket::loopLevel = 0;
+
+tst_QSslSocket::tst_QSslSocket()
+{
+#ifndef QT_NO_OPENSSL
+ qRegisterMetaType<QList<QSslError> >("QList<QSslError>");
+ qRegisterMetaType<QSslError>("QSslError");
+ qRegisterMetaType<QAbstractSocket::SocketState>("QAbstractSocket::SocketState");
+ qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
+ qRegisterMetaType<QAbstractSocket::SocketState>("QSslSocket::SslMode");
+#endif
+ Q_SET_DEFAULT_IAP
+}
+
+tst_QSslSocket::~tst_QSslSocket()
+{
+}
+
+enum ProxyTests {
+ NoProxy = 0x00,
+ Socks5Proxy = 0x01,
+ HttpProxy = 0x02,
+ TypeMask = 0x0f,
+
+ NoAuth = 0x00,
+ AuthBasic = 0x10,
+ AuthNtlm = 0x20,
+ AuthMask = 0xf0
+};
+
+void tst_QSslSocket::initTestCase_data()
+{
+ QTest::addColumn<bool>("setProxy");
+ QTest::addColumn<int>("proxyType");
+
+ QTest::newRow("WithoutProxy") << false << 0;
+ QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy);
+ QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic);
+
+ QTest::newRow("WithHttpProxy") << true << int(HttpProxy);
+ QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic);
+ // uncomment the line below when NTLM works
+// QTest::newRow("WithHttpProxyNtlmAuth") << true << int(HttpProxy | AuthNtlm);
+}
+
+void tst_QSslSocket::init()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy) {
+ QFETCH_GLOBAL(int, proxyType);
+ QString fluke = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString();
+ QNetworkProxy proxy;
+
+ switch (proxyType) {
+ case Socks5Proxy:
+ proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, fluke, 1080);
+ break;
+
+ case Socks5Proxy | AuthBasic:
+ proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, fluke, 1081);
+ break;
+
+ case HttpProxy | NoAuth:
+ proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3128);
+ break;
+
+ case HttpProxy | AuthBasic:
+ proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3129);
+ break;
+
+ case HttpProxy | AuthNtlm:
+ proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3130);
+ break;
+ }
+ QNetworkProxy::setApplicationProxy(proxy);
+ }
+
+ qt_qhostinfo_clear_cache();
+}
+
+void tst_QSslSocket::cleanup()
+{
+ QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
+}
+
+#ifndef QT_NO_OPENSSL
+QSslSocketPtr tst_QSslSocket::newSocket()
+{
+ QSslSocket *socket = new QSslSocket;
+
+ proxyAuthCalled = 0;
+ connect(socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ Qt::DirectConnection);
+
+ return QSslSocketPtr(socket);
+}
+#endif
+
+void tst_QSslSocket::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
+{
+ ++proxyAuthCalled;
+ auth->setUser("qsockstest");
+ auth->setPassword("password");
+}
+
+#ifndef QT_NO_OPENSSL
+
+void tst_QSslSocket::constructing()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocket socket;
+
+ QCOMPARE(socket.state(), QSslSocket::UnconnectedState);
+ QCOMPARE(socket.mode(), QSslSocket::UnencryptedMode);
+ QVERIFY(!socket.isEncrypted());
+ QCOMPARE(socket.bytesAvailable(), qint64(0));
+ QCOMPARE(socket.bytesToWrite(), qint64(0));
+ QVERIFY(!socket.canReadLine());
+ QVERIFY(socket.atEnd());
+ QCOMPARE(socket.localCertificate(), QSslCertificate());
+ QCOMPARE(socket.sslConfiguration(), QSslConfiguration::defaultConfiguration());
+ QCOMPARE(socket.errorString(), QString("Unknown error"));
+ char c = '\0';
+ QVERIFY(!socket.getChar(&c));
+ QCOMPARE(c, '\0');
+ QVERIFY(!socket.isOpen());
+ QVERIFY(!socket.isReadable());
+ QVERIFY(socket.isSequential());
+ QVERIFY(!socket.isTextModeEnabled());
+ QVERIFY(!socket.isWritable());
+ QCOMPARE(socket.openMode(), QIODevice::NotOpen);
+ QVERIFY(socket.peek(2).isEmpty());
+ QCOMPARE(socket.pos(), qint64(0));
+ QVERIFY(!socket.putChar('c'));
+ QVERIFY(socket.read(2).isEmpty());
+ QCOMPARE(socket.read(0, 0), qint64(-1));
+ QVERIFY(socket.readAll().isEmpty());
+ QTest::ignoreMessage(QtWarningMsg, "QIODevice::readLine: Called with maxSize < 2");
+ QCOMPARE(socket.readLine(0, 0), qint64(-1));
+ char buf[10];
+ QCOMPARE(socket.readLine(buf, sizeof(buf)), qint64(-1));
+ QTest::ignoreMessage(QtWarningMsg, "QIODevice::seek: The device is not open");
+ QVERIFY(!socket.reset());
+ QTest::ignoreMessage(QtWarningMsg, "QIODevice::seek: The device is not open");
+ QVERIFY(!socket.seek(2));
+ QCOMPARE(socket.size(), qint64(0));
+ QVERIFY(!socket.waitForBytesWritten(10));
+ QVERIFY(!socket.waitForReadyRead(10));
+ QCOMPARE(socket.write(0, 0), qint64(-1));
+ QCOMPARE(socket.write(QByteArray()), qint64(-1));
+ QCOMPARE(socket.error(), QAbstractSocket::UnknownSocketError);
+ QVERIFY(!socket.flush());
+ QVERIFY(!socket.isValid());
+ QCOMPARE(socket.localAddress(), QHostAddress());
+ QCOMPARE(socket.localPort(), quint16(0));
+ QCOMPARE(socket.peerAddress(), QHostAddress());
+ QVERIFY(socket.peerName().isEmpty());
+ QCOMPARE(socket.peerPort(), quint16(0));
+ QCOMPARE(socket.proxy().type(), QNetworkProxy::DefaultProxy);
+ QCOMPARE(socket.readBufferSize(), qint64(0));
+ QCOMPARE(socket.socketDescriptor(), -1);
+ QCOMPARE(socket.socketType(), QAbstractSocket::TcpSocket);
+ QVERIFY(!socket.waitForConnected(10));
+ QTest::ignoreMessage(QtWarningMsg, "QSslSocket::waitForDisconnected() is not allowed in UnconnectedState");
+ QVERIFY(!socket.waitForDisconnected(10));
+ QCOMPARE(socket.protocol(), QSsl::SecureProtocols);
+
+ QSslConfiguration savedDefault = QSslConfiguration::defaultConfiguration();
+
+ // verify that changing the default config doesn't affect this socket
+ // (on Unix, the ca certs might be empty, depending on whether we load
+ // them on demand or not, so set them explicitly)
+ socket.setCaCertificates(QSslSocket::systemCaCertificates());
+ QSslSocket::setDefaultCaCertificates(QList<QSslCertificate>());
+ QSslSocket::setDefaultCiphers(QList<QSslCipher>());
+ QVERIFY(!socket.caCertificates().isEmpty());
+ QVERIFY(!socket.ciphers().isEmpty());
+
+ // verify the default as well:
+ QVERIFY(QSslConfiguration::defaultConfiguration().caCertificates().isEmpty());
+ QVERIFY(QSslConfiguration::defaultConfiguration().ciphers().isEmpty());
+
+ QSslConfiguration::setDefaultConfiguration(savedDefault);
+}
+
+void tst_QSslSocket::simpleConnect()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QSslSocket socket;
+ QSignalSpy connectedSpy(&socket, SIGNAL(connected()));
+ QSignalSpy hostFoundSpy(&socket, SIGNAL(hostFound()));
+ QSignalSpy disconnectedSpy(&socket, SIGNAL(disconnected()));
+ QSignalSpy connectionEncryptedSpy(&socket, SIGNAL(encrypted()));
+ QSignalSpy sslErrorsSpy(&socket, SIGNAL(sslErrors(const QList<QSslError> &)));
+
+ connect(&socket, SIGNAL(connected()), this, SLOT(exitLoop()));
+ connect(&socket, SIGNAL(disconnected()), this, SLOT(exitLoop()));
+ connect(&socket, SIGNAL(modeChanged(QSslSocket::SslMode)), this, SLOT(exitLoop()));
+ connect(&socket, SIGNAL(encrypted()), this, SLOT(exitLoop()));
+ connect(&socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(exitLoop()));
+ connect(&socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(exitLoop()));
+
+ // Start connecting
+ socket.connectToHost(QtNetworkSettings::serverName(), 993);
+ QCOMPARE(socket.state(), QAbstractSocket::HostLookupState);
+ enterLoop(10);
+
+ // Entered connecting state
+#ifndef Q_OS_SYMBIAN
+ QCOMPARE(socket.state(), QAbstractSocket::ConnectingState);
+ QCOMPARE(connectedSpy.count(), 0);
+#endif
+ QCOMPARE(hostFoundSpy.count(), 1);
+ QCOMPARE(disconnectedSpy.count(), 0);
+ enterLoop(10);
+
+ // Entered connected state
+ QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
+ QCOMPARE(socket.mode(), QSslSocket::UnencryptedMode);
+ QVERIFY(!socket.isEncrypted());
+ QCOMPARE(connectedSpy.count(), 1);
+ QCOMPARE(hostFoundSpy.count(), 1);
+ QCOMPARE(disconnectedSpy.count(), 0);
+
+ // Enter encrypted mode
+ socket.startClientEncryption();
+ QCOMPARE(socket.mode(), QSslSocket::SslClientMode);
+ QVERIFY(!socket.isEncrypted());
+ QCOMPARE(connectionEncryptedSpy.count(), 0);
+ QCOMPARE(sslErrorsSpy.count(), 0);
+
+ // Starting handshake
+ enterLoop(10);
+ QCOMPARE(sslErrorsSpy.count(), 1);
+ QCOMPARE(connectionEncryptedSpy.count(), 0);
+ QVERIFY(!socket.isEncrypted());
+ QCOMPARE(socket.state(), QAbstractSocket::UnconnectedState);
+}
+
+void tst_QSslSocket::simpleConnectWithIgnore()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QSslSocket socket;
+ this->socket = &socket;
+ QSignalSpy encryptedSpy(&socket, SIGNAL(encrypted()));
+ QSignalSpy sslErrorsSpy(&socket, SIGNAL(sslErrors(const QList<QSslError> &)));
+
+ connect(&socket, SIGNAL(readyRead()), this, SLOT(exitLoop()));
+ connect(&socket, SIGNAL(encrypted()), this, SLOT(exitLoop()));
+ connect(&socket, SIGNAL(connected()), this, SLOT(exitLoop()));
+ connect(&socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
+ connect(&socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(exitLoop()));
+
+ // Start connecting
+ socket.connectToHost(QtNetworkSettings::serverName(), 993);
+ QVERIFY(socket.state() != QAbstractSocket::UnconnectedState); // something must be in progress
+ enterLoop(10);
+
+ // Start handshake
+ QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
+ socket.startClientEncryption();
+ enterLoop(10);
+
+ // Done; encryption should be enabled.
+ QCOMPARE(sslErrorsSpy.count(), 1);
+ QVERIFY(socket.isEncrypted());
+ QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
+ QCOMPARE(encryptedSpy.count(), 1);
+
+ // Wait for incoming data
+ if (!socket.canReadLine())
+ enterLoop(10);
+
+ QByteArray data = socket.readAll();
+ socket.disconnectFromHost();
+ QVERIFY2(QtNetworkSettings::compareReplyIMAPSSL(data), data.constData());
+}
+
+void tst_QSslSocket::sslErrors_data()
+{
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<int>("port");
+ QTest::addColumn<SslErrorList>("expected");
+
+ QTest::newRow(qPrintable(QtNetworkSettings::serverLocalName()))
+ << QtNetworkSettings::serverLocalName()
+ << 993
+ << (SslErrorList() << QSslError::HostNameMismatch
+ << QSslError::SelfSignedCertificate);
+}
+
+void tst_QSslSocket::sslErrors()
+{
+ QFETCH(QString, host);
+ QFETCH(int, port);
+ QFETCH(SslErrorList, expected);
+
+ QSslSocketPtr socket = newSocket();
+ socket->connectToHostEncrypted(host, port);
+ if (!socket->waitForConnected())
+ QEXPECT_FAIL("imap.trolltech.com", "server not open to internet", Continue);
+ socket->waitForEncrypted(5000);
+
+ SslErrorList output;
+ foreach (QSslError error, socket->sslErrors()) {
+ output << error.error();
+ }
+
+#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
+ if (output.count() && output.last() == QSslError::CertificateUntrusted)
+ output.takeLast();
+#endif
+ QCOMPARE(output, expected);
+}
+
+void tst_QSslSocket::addCaCertificate()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+}
+
+void tst_QSslSocket::addCaCertificates()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+}
+
+void tst_QSslSocket::addCaCertificates2()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+}
+
+void tst_QSslSocket::ciphers()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocket socket;
+ QCOMPARE(socket.ciphers(), QSslSocket::supportedCiphers());
+ socket.setCiphers(QList<QSslCipher>());
+ QVERIFY(socket.ciphers().isEmpty());
+ socket.setCiphers(socket.defaultCiphers());
+ QCOMPARE(socket.ciphers(), QSslSocket::supportedCiphers());
+ socket.setCiphers(socket.defaultCiphers());
+ QCOMPARE(socket.ciphers(), QSslSocket::supportedCiphers());
+
+ // Task 164356
+ socket.setCiphers("ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
+}
+
+void tst_QSslSocket::connectToHostEncrypted()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocketPtr socket = newSocket();
+ this->socket = socket;
+ QVERIFY(socket->addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem")));
+#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
+ connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
+ this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
+#endif
+
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+
+ // This should pass unconditionally when using fluke's CA certificate.
+ // or use untrusted certificate workaround
+ QVERIFY2(socket->waitForEncrypted(10000), qPrintable(socket->errorString()));
+
+ socket->disconnectFromHost();
+ QVERIFY(socket->waitForDisconnected());
+
+ QCOMPARE(socket->mode(), QSslSocket::SslClientMode);
+
+ socket->connectToHost(QtNetworkSettings::serverName(), 13);
+
+ QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
+
+ QVERIFY(socket->waitForDisconnected());
+}
+
+void tst_QSslSocket::connectToHostEncryptedWithVerificationPeerName()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocketPtr socket = newSocket();
+ this->socket = socket;
+
+ socket->addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"));
+#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
+ connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
+ this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
+#endif
+
+ // connect to the server with its local name, but use the full name for verification.
+ socket->connectToHostEncrypted(QtNetworkSettings::serverLocalName(), 443, QtNetworkSettings::serverName());
+
+ // This should pass unconditionally when using fluke's CA certificate.
+ QVERIFY2(socket->waitForEncrypted(10000), qPrintable(socket->errorString()));
+
+ socket->disconnectFromHost();
+ QVERIFY(socket->waitForDisconnected());
+
+ QCOMPARE(socket->mode(), QSslSocket::SslClientMode);
+}
+
+void tst_QSslSocket::sessionCipher()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocketPtr socket = newSocket();
+ this->socket = socket;
+ connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
+ QVERIFY(socket->sessionCipher().isNull());
+ socket->connectToHost(QtNetworkSettings::serverName(), 443 /* https */);
+ QVERIFY(socket->waitForConnected(10000));
+ QVERIFY(socket->sessionCipher().isNull());
+ socket->startClientEncryption();
+ QVERIFY(socket->waitForEncrypted(5000));
+ QVERIFY(!socket->sessionCipher().isNull());
+ QVERIFY(QSslSocket::supportedCiphers().contains(socket->sessionCipher()));
+ socket->disconnectFromHost();
+ QVERIFY(socket->waitForDisconnected());
+}
+
+void tst_QSslSocket::flush()
+{
+}
+
+void tst_QSslSocket::isEncrypted()
+{
+}
+
+void tst_QSslSocket::localCertificate()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ // This test does not make 100% sense yet. We just set some local CA/cert/key and use it
+ // to authenticate ourselves against the server. The server does not actually check this
+ // values. This test should just run the codepath inside qsslsocket_openssl.cpp
+
+ QSslSocketPtr socket = newSocket();
+ QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem");
+ socket->setCaCertificates(localCert);
+ socket->setLocalCertificate(QLatin1String(SRCDIR "certs/fluke.cert"));
+ socket->setPrivateKey(QLatin1String(SRCDIR "certs/fluke.key"));
+
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY(socket->waitForEncrypted(10000));
+}
+
+void tst_QSslSocket::mode()
+{
+}
+
+void tst_QSslSocket::peerCertificate()
+{
+}
+
+void tst_QSslSocket::peerCertificateChain()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocketPtr socket = newSocket();
+ this->socket = socket;
+
+ QList<QSslCertificate> caCertificates = QSslCertificate::fromPath(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"));
+ QVERIFY(caCertificates.count() == 1);
+ socket->addCaCertificates(caCertificates);
+#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
+ connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
+ this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
+#endif
+
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
+ QVERIFY(socket->peerCertificateChain().isEmpty());
+ QVERIFY2(socket->waitForEncrypted(10000), qPrintable(socket->errorString()));
+
+ QList<QSslCertificate> certChain = socket->peerCertificateChain();
+ QVERIFY(certChain.count() > 0);
+ QCOMPARE(certChain.first(), socket->peerCertificate());
+
+ socket->disconnectFromHost();
+ QVERIFY(socket->waitForDisconnected());
+
+ // connect again to a different server
+ socket->connectToHostEncrypted("trolltech.com", 443);
+ socket->ignoreSslErrors();
+ QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
+ QVERIFY(socket->peerCertificateChain().isEmpty());
+ QVERIFY2(socket->waitForEncrypted(10000), qPrintable(socket->errorString()));
+
+ QCOMPARE(socket->peerCertificateChain().first(), socket->peerCertificate());
+ QVERIFY(socket->peerCertificateChain() != certChain);
+
+ socket->disconnectFromHost();
+ QVERIFY(socket->waitForDisconnected());
+
+ // now do it again back to the original server
+ socket->connectToHost(QtNetworkSettings::serverName(), 443);
+ QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
+ QVERIFY(socket->peerCertificateChain().isEmpty());
+ QVERIFY2(socket->waitForConnected(10000), "Network timeout");
+
+ socket->startClientEncryption();
+ QVERIFY2(socket->waitForEncrypted(10000), qPrintable(socket->errorString()));
+
+ QCOMPARE(socket->peerCertificateChain().first(), socket->peerCertificate());
+ QVERIFY(socket->peerCertificateChain() == certChain);
+
+ socket->disconnectFromHost();
+ QVERIFY(socket->waitForDisconnected());
+}
+
+void tst_QSslSocket::privateKey()
+{
+}
+
+void tst_QSslSocket::privateKeyOpaque()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QFile file(SRCDIR "certs/fluke.key");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QSslKey key(file.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
+ QVERIFY(!key.isNull());
+
+ EVP_PKEY *pkey = q_EVP_PKEY_new();
+ q_EVP_PKEY_set1_RSA(pkey, reinterpret_cast<RSA *>(key.handle()));
+
+ // This test does not make 100% sense yet. We just set some local CA/cert/key and use it
+ // to authenticate ourselves against the server. The server does not actually check this
+ // values. This test should just run the codepath inside qsslsocket_openssl.cpp
+
+ QSslSocketPtr socket = newSocket();
+ QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem");
+ socket->setCaCertificates(localCert);
+ socket->setLocalCertificate(QLatin1String(SRCDIR "certs/fluke.cert"));
+ socket->setPrivateKey(QSslKey(reinterpret_cast<Qt::HANDLE>(pkey)));
+
+ socket->setPeerVerifyMode(QSslSocket::QueryPeer);
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY(socket->waitForEncrypted(10000));
+}
+
+void tst_QSslSocket::protocol()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocketPtr socket = newSocket();
+ this->socket = socket;
+ QList<QSslCertificate> certs = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem");
+
+ socket->setCaCertificates(certs);
+#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
+ connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
+ this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
+#endif
+
+ QCOMPARE(socket->protocol(), QSsl::SecureProtocols);
+ {
+ // Fluke allows SSLv3.
+ socket->setProtocol(QSsl::SslV3);
+ QCOMPARE(socket->protocol(), QSsl::SslV3);
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
+ QCOMPARE(socket->protocol(), QSsl::SslV3);
+ socket->abort();
+ QCOMPARE(socket->protocol(), QSsl::SslV3);
+ socket->connectToHost(QtNetworkSettings::serverName(), 443);
+ QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
+ socket->startClientEncryption();
+ QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
+ QCOMPARE(socket->protocol(), QSsl::SslV3);
+ socket->abort();
+ }
+ {
+ // Fluke allows TLSV1.
+ socket->setProtocol(QSsl::TlsV1);
+ QCOMPARE(socket->protocol(), QSsl::TlsV1);
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
+ QCOMPARE(socket->protocol(), QSsl::TlsV1);
+ socket->abort();
+ QCOMPARE(socket->protocol(), QSsl::TlsV1);
+ socket->connectToHost(QtNetworkSettings::serverName(), 443);
+ QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
+ socket->startClientEncryption();
+ QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
+ QCOMPARE(socket->protocol(), QSsl::TlsV1);
+ socket->abort();
+ }
+ {
+ // Fluke allows SSLV2.
+ socket->setProtocol(QSsl::SslV2);
+ QCOMPARE(socket->protocol(), QSsl::SslV2);
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY(socket->waitForEncrypted());
+ QCOMPARE(socket->protocol(), QSsl::SslV2);
+ socket->abort();
+ QCOMPARE(socket->protocol(), QSsl::SslV2);
+ socket->connectToHost(QtNetworkSettings::serverName(), 443);
+ QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
+ socket->startClientEncryption();
+ QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
+ socket->abort();
+ }
+ {
+ // Fluke allows SSLV3, so it allows AnyProtocol.
+ socket->setProtocol(QSsl::AnyProtocol);
+ QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY(socket->waitForEncrypted());
+ QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
+ socket->abort();
+ QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
+ socket->connectToHost(QtNetworkSettings::serverName(), 443);
+ QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
+ socket->startClientEncryption();
+ QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
+ QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
+ socket->abort();
+ }
+ {
+ // Fluke allows SSLV3, so it allows NoSslV2
+ socket->setProtocol(QSsl::TlsV1SslV3);
+ QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY(socket->waitForEncrypted());
+ QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
+ socket->abort();
+ QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
+ socket->connectToHost(QtNetworkSettings::serverName(), 443);
+ QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
+ socket->startClientEncryption();
+ QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
+ QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
+ socket->abort();
+ }
+}
+
+class SslServer : public QTcpServer
+{
+ Q_OBJECT
+public:
+ SslServer(const QString &keyFile = SRCDIR "certs/fluke.key", const QString &certFile = SRCDIR "certs/fluke.cert")
+ : socket(0),
+ protocol(QSsl::TlsV1),
+ m_keyFile(keyFile),
+ m_certFile(certFile) { }
+ QSslSocket *socket;
+ QSsl::SslProtocol protocol;
+ QString m_keyFile;
+ QString m_certFile;
+
+protected:
+ void incomingConnection(int socketDescriptor)
+ {
+ socket = new QSslSocket(this);
+ socket->setProtocol(protocol);
+ connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
+
+ QFile file(m_keyFile);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QSslKey key(file.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
+ QVERIFY(!key.isNull());
+ socket->setPrivateKey(key);
+
+ QList<QSslCertificate> localCert = QSslCertificate::fromPath(m_certFile);
+ QVERIFY(!localCert.isEmpty());
+ QVERIFY(localCert.first().handle());
+ socket->setLocalCertificate(localCert.first());
+
+ QVERIFY(socket->setSocketDescriptor(socketDescriptor, QAbstractSocket::ConnectedState));
+ QVERIFY(!socket->peerAddress().isNull());
+ QVERIFY(socket->peerPort() != 0);
+ QVERIFY(!socket->localAddress().isNull());
+ QVERIFY(socket->localPort() != 0);
+
+ socket->startServerEncryption();
+ }
+
+protected slots:
+ void ignoreErrorSlot()
+ {
+ socket->ignoreSslErrors();
+ }
+};
+
+void tst_QSslSocket::protocolServerSide_data()
+{
+
+ QTest::addColumn<QSsl::SslProtocol>("serverProtocol");
+ QTest::addColumn<QSsl::SslProtocol>("clientProtocol");
+ QTest::addColumn<bool>("works");
+
+ QTest::newRow("ssl2-ssl2") << QSsl::SslV2 << QSsl::SslV2 << false; // no idea why it does not work, but we don't care about SSL 2
+ QTest::newRow("ssl3-ssl3") << QSsl::SslV3 << QSsl::SslV3 << true;
+ QTest::newRow("tls1-tls1") << QSsl::TlsV1 << QSsl::TlsV1 << true;
+ QTest::newRow("tls1ssl3-tls1ssl3") << QSsl::TlsV1SslV3 << QSsl::TlsV1SslV3 << true;
+ QTest::newRow("any-any") << QSsl::AnyProtocol << QSsl::AnyProtocol << true;
+ QTest::newRow("secure-secure") << QSsl::SecureProtocols << QSsl::SecureProtocols << true;
+
+ QTest::newRow("ssl2-ssl3") << QSsl::SslV2 << QSsl::SslV3 << false;
+ QTest::newRow("ssl2-tls1") << QSsl::SslV2 << QSsl::TlsV1 << false;
+ QTest::newRow("ssl2-tls1ssl3") << QSsl::SslV2 << QSsl::TlsV1SslV3 << false;
+ QTest::newRow("ssl2-secure") << QSsl::SslV2 << QSsl::SecureProtocols << false;
+ QTest::newRow("ssl2-any") << QSsl::SslV2 << QSsl::AnyProtocol << false; // no idea why it does not work, but we don't care about SSL 2
+
+ QTest::newRow("ssl3-ssl2") << QSsl::SslV3 << QSsl::SslV2 << false;
+ QTest::newRow("ssl3-tls1") << QSsl::SslV3 << QSsl::TlsV1 << false;
+ QTest::newRow("ssl3-tls1ssl3") << QSsl::SslV3 << QSsl::TlsV1SslV3 << true;
+ QTest::newRow("ssl3-secure") << QSsl::SslV3 << QSsl::SecureProtocols << true;
+ QTest::newRow("ssl3-any") << QSsl::SslV3 << QSsl::AnyProtocol << false; // we wont set a SNI header here because we connect to a
+ // numerical IP, so OpenSSL will send a SSL 2 handshake
+
+ QTest::newRow("tls1-ssl2") << QSsl::TlsV1 << QSsl::SslV2 << false;
+ QTest::newRow("tls1-ssl3") << QSsl::TlsV1 << QSsl::SslV3 << false;
+ QTest::newRow("tls1-tls1ssl3") << QSsl::TlsV1 << QSsl::TlsV1SslV3 << true;
+ QTest::newRow("tls1-secure") << QSsl::TlsV1 << QSsl::SecureProtocols << true;
+ QTest::newRow("tls1-any") << QSsl::TlsV1 << QSsl::AnyProtocol << false; // we wont set a SNI header here because we connect to a
+ // numerical IP, so OpenSSL will send a SSL 2 handshake
+
+ QTest::newRow("tls1ssl3-ssl2") << QSsl::TlsV1SslV3 << QSsl::SslV2 << false;
+ QTest::newRow("tls1ssl3-ssl3") << QSsl::TlsV1SslV3 << QSsl::SslV3 << true;
+ QTest::newRow("tls1ssl3-tls1") << QSsl::TlsV1SslV3 << QSsl::TlsV1 << true;
+ QTest::newRow("tls1ssl3-secure") << QSsl::TlsV1SslV3 << QSsl::SecureProtocols << true;
+ QTest::newRow("tls1ssl3-any") << QSsl::TlsV1SslV3 << QSsl::AnyProtocol << true;
+
+ QTest::newRow("secure-ssl2") << QSsl::SecureProtocols << QSsl::SslV2 << false;
+ QTest::newRow("secure-ssl3") << QSsl::SecureProtocols << QSsl::SslV3 << true;
+ QTest::newRow("secure-tls1") << QSsl::SecureProtocols << QSsl::TlsV1 << true;
+ QTest::newRow("secure-tls1ssl3") << QSsl::SecureProtocols << QSsl::TlsV1SslV3 << true;
+ QTest::newRow("secure-any") << QSsl::SecureProtocols << QSsl::AnyProtocol << true;
+
+ QTest::newRow("any-ssl2") << QSsl::AnyProtocol << QSsl::SslV2 << false; // no idea why it does not work, but we don't care about SSL 2
+ QTest::newRow("any-ssl3") << QSsl::AnyProtocol << QSsl::SslV3 << true;
+ QTest::newRow("any-tls1") << QSsl::AnyProtocol << QSsl::TlsV1 << true;
+ QTest::newRow("any-tls1ssl3") << QSsl::AnyProtocol << QSsl::TlsV1SslV3 << true;
+ QTest::newRow("any-secure") << QSsl::AnyProtocol << QSsl::SecureProtocols << true;
+}
+
+void tst_QSslSocket::protocolServerSide()
+{
+ if (!QSslSocket::supportsSsl()) {
+ qWarning("SSL not supported, skipping test");
+ return;
+ }
+
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QFETCH(QSsl::SslProtocol, serverProtocol);
+ SslServer server;
+ server.protocol = serverProtocol;
+ QVERIFY(server.listen());
+
+ QEventLoop loop;
+ QTimer::singleShot(5000, &loop, SLOT(quit()));
+
+ QSslSocketPtr client = new QSslSocket;
+ socket = client;
+ QFETCH(QSsl::SslProtocol, clientProtocol);
+ socket->setProtocol(clientProtocol);
+ // upon SSL wrong version error, error will be triggered, not sslErrors
+ connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit()));
+ connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
+ connect(client, SIGNAL(encrypted()), &loop, SLOT(quit()));
+
+ client->connectToHostEncrypted(QHostAddress(QHostAddress::LocalHost).toString(), server.serverPort());
+
+ loop.exec();
+
+ QFETCH(bool, works);
+ QAbstractSocket::SocketState expectedState = (works) ? QAbstractSocket::ConnectedState : QAbstractSocket::UnconnectedState;
+ QCOMPARE(client->state(), expectedState);
+ QCOMPARE(client->isEncrypted(), works);
+}
+
+void tst_QSslSocket::setCaCertificates()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocket socket;
+ QCOMPARE(socket.caCertificates(), QSslSocket::defaultCaCertificates());
+ socket.setCaCertificates(QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem"));
+ QCOMPARE(socket.caCertificates().size(), 1);
+ socket.setCaCertificates(socket.defaultCaCertificates());
+ QCOMPARE(socket.caCertificates(), QSslSocket::defaultCaCertificates());
+}
+
+void tst_QSslSocket::setLocalCertificate()
+{
+}
+
+void tst_QSslSocket::setPrivateKey()
+{
+}
+
+void tst_QSslSocket::setSocketDescriptor()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ SslServer server;
+ QVERIFY(server.listen());
+
+ QEventLoop loop;
+ QTimer::singleShot(5000, &loop, SLOT(quit()));
+
+ QSslSocketPtr client = new QSslSocket;
+ socket = client;
+ connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
+ connect(client, SIGNAL(encrypted()), &loop, SLOT(quit()));
+
+ client->connectToHostEncrypted(QHostAddress(QHostAddress::LocalHost).toString(), server.serverPort());
+
+ loop.exec();
+
+ QCOMPARE(client->state(), QAbstractSocket::ConnectedState);
+ QVERIFY(client->isEncrypted());
+ QVERIFY(!client->peerAddress().isNull());
+ QVERIFY(client->peerPort() != 0);
+ QVERIFY(!client->localAddress().isNull());
+ QVERIFY(client->localPort() != 0);
+}
+
+void tst_QSslSocket::setSslConfiguration_data()
+{
+ QTest::addColumn<QSslConfiguration>("configuration");
+ QTest::addColumn<bool>("works");
+
+ QTest::newRow("empty") << QSslConfiguration() << false;
+ QSslConfiguration conf = QSslConfiguration::defaultConfiguration();
+ QTest::newRow("default") << conf << false; // does not contain test server cert
+ QList<QSslCertificate> testServerCert = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem");
+ conf.setCaCertificates(testServerCert);
+ QTest::newRow("set-root-cert") << conf << true;
+ conf.setProtocol(QSsl::SecureProtocols);
+ QTest::newRow("secure") << conf << true;
+}
+
+void tst_QSslSocket::setSslConfiguration()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocketPtr socket = newSocket();
+ QFETCH(QSslConfiguration, configuration);
+ socket->setSslConfiguration(configuration);
+ this->socket = socket;
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QFETCH(bool, works);
+ QCOMPARE(socket->waitForEncrypted(10000), works);
+ if (works) {
+ socket->disconnectFromHost();
+ QVERIFY2(socket->waitForDisconnected(), qPrintable(socket->errorString()));
+ }
+}
+
+void tst_QSslSocket::waitForEncrypted()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocketPtr socket = newSocket();
+ this->socket = socket;
+
+ connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+
+ QVERIFY(socket->waitForEncrypted(10000));
+}
+
+void tst_QSslSocket::waitForEncryptedMinusOne()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocketPtr socket = newSocket();
+ this->socket = socket;
+
+ connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+
+ QVERIFY(socket->waitForEncrypted(-1));
+}
+
+void tst_QSslSocket::waitForConnectedEncryptedReadyRead()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocketPtr socket = newSocket();
+ this->socket = socket;
+
+ connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
+
+#ifdef Q_OS_SYMBIAN
+ QVERIFY(socket->waitForConnected(10000));
+ QVERIFY(socket->waitForEncrypted(10000));
+
+ // dont forget to login
+ QCOMPARE((int) socket->write("USER ftptest\r\n"), 14);
+ QCOMPARE((int) socket->write("PASS ftP2Ptf\r\n"), 14);
+
+ QVERIFY(socket->waitForReadyRead(10000));
+ QVERIFY(!socket->peerCertificate().isNull());
+ QVERIFY(!socket->peerCertificateChain().isEmpty());
+#else
+ QVERIFY(socket->waitForConnected(10000));
+ QVERIFY(socket->waitForEncrypted(10000));
+ QVERIFY(socket->waitForReadyRead(10000));
+ QVERIFY(!socket->peerCertificate().isNull());
+ QVERIFY(!socket->peerCertificateChain().isEmpty());
+#endif
+}
+
+void tst_QSslSocket::startClientEncryption()
+{
+}
+
+void tst_QSslSocket::startServerEncryption()
+{
+}
+
+void tst_QSslSocket::addDefaultCaCertificate()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ // Reset the global CA chain
+ QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates());
+
+ QList<QSslCertificate> flukeCerts = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem");
+ QCOMPARE(flukeCerts.size(), 1);
+ QList<QSslCertificate> globalCerts = QSslSocket::defaultCaCertificates();
+ QVERIFY(!globalCerts.contains(flukeCerts.first()));
+ QSslSocket::addDefaultCaCertificate(flukeCerts.first());
+ QCOMPARE(QSslSocket::defaultCaCertificates().size(), globalCerts.size() + 1);
+ QVERIFY(QSslSocket::defaultCaCertificates().contains(flukeCerts.first()));
+
+ // Restore the global CA chain
+ QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates());
+}
+
+void tst_QSslSocket::addDefaultCaCertificates()
+{
+}
+
+void tst_QSslSocket::addDefaultCaCertificates2()
+{
+}
+
+void tst_QSslSocket::defaultCaCertificates()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QList<QSslCertificate> certs = QSslSocket::defaultCaCertificates();
+ QVERIFY(certs.size() > 1);
+ QCOMPARE(certs, QSslSocket::systemCaCertificates());
+}
+
+void tst_QSslSocket::defaultCiphers()
+{
+}
+
+void tst_QSslSocket::resetDefaultCiphers()
+{
+}
+
+void tst_QSslSocket::setDefaultCaCertificates()
+{
+}
+
+void tst_QSslSocket::setDefaultCiphers()
+{
+}
+
+void tst_QSslSocket::supportedCiphers()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QList<QSslCipher> ciphers = QSslSocket::supportedCiphers();
+ QVERIFY(ciphers.size() > 1);
+
+ QSslSocket socket;
+ QCOMPARE(socket.supportedCiphers(), ciphers);
+ QCOMPARE(socket.defaultCiphers(), ciphers);
+ QCOMPARE(socket.ciphers(), ciphers);
+}
+
+void tst_QSslSocket::systemCaCertificates()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QList<QSslCertificate> certs = QSslSocket::systemCaCertificates();
+ QVERIFY(certs.size() > 1);
+ QCOMPARE(certs, QSslSocket::defaultCaCertificates());
+}
+
+void tst_QSslSocket::wildcardCertificateNames()
+{
+ // Passing CN matches
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("www.example.com"), QString("www.example.com")), true );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.example.com"), QString("www.example.com")), true );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("xxx*.example.com"), QString("xxxwww.example.com")), true );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("f*.example.com"), QString("foo.example.com")), true );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("192.168.0.0"), QString("192.168.0.0")), true );
+
+ // Failing CN matches
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("xxx.example.com"), QString("www.example.com")), false );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*"), QString("www.example.com")), false );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.*.com"), QString("www.example.com")), false );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.example.com"), QString("baa.foo.example.com")), false );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("f*.example.com"), QString("baa.example.com")), false );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.com"), QString("example.com")), false );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*fail.com"), QString("example.com")), false );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.example."), QString("www.example.")), false );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.example."), QString("www.example")), false );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString(""), QString("www")), false );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*"), QString("www")), false );
+ QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.168.0.0"), QString("192.168.0.0")), false );
+}
+
+void tst_QSslSocket::wildcard()
+{
+ QSKIP("TODO: solve wildcard problem", SkipAll);
+
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ // Fluke runs an apache server listening on port 4443, serving the
+ // wildcard fluke.*.troll.no. The DNS entry for
+ // fluke.wildcard.dev.troll.no, served by ares (root for dev.troll.no),
+ // returns the CNAME fluke.troll.no for this domain. The web server
+ // responds with the wildcard, and QSslSocket should accept that as a
+ // valid connection. This was broken in 4.3.0.
+ QSslSocketPtr socket = newSocket();
+ socket->addCaCertificates(QLatin1String("certs/aspiriniks.ca.crt"));
+ this->socket = socket;
+#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
+ connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
+ this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
+#endif
+ socket->connectToHostEncrypted(QtNetworkSettings::wildcardServerName(), 4443);
+
+ QVERIFY2(socket->waitForEncrypted(3000), qPrintable(socket->errorString()));
+
+ QSslCertificate certificate = socket->peerCertificate();
+ QCOMPARE(certificate.subjectInfo(QSslCertificate::CommonName), QString(QtNetworkSettings::serverLocalName() + ".*." + QtNetworkSettings::serverDomainName()));
+ QCOMPARE(certificate.issuerInfo(QSslCertificate::CommonName), QtNetworkSettings::serverName());
+
+ socket->close();
+}
+
+class SslServer2 : public QTcpServer
+{
+protected:
+ void incomingConnection(int socketDescriptor)
+ {
+ QSslSocket *socket = new QSslSocket(this);
+ socket->ignoreSslErrors();
+
+ // Only set the certificate
+ QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/fluke.cert");
+ QVERIFY(!localCert.isEmpty());
+ QVERIFY(localCert.first().handle());
+ socket->setLocalCertificate(localCert.first());
+
+ QVERIFY(socket->setSocketDescriptor(socketDescriptor, QAbstractSocket::ConnectedState));
+
+ socket->startServerEncryption();
+ }
+};
+
+void tst_QSslSocket::setEmptyKey()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ SslServer2 server;
+ server.listen();
+
+ QSslSocket socket;
+ socket.connectToHostEncrypted("127.0.0.1", server.serverPort());
+
+ QTestEventLoop::instance().enterLoop(2);
+
+ QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
+ QCOMPARE(socket.error(), QAbstractSocket::UnknownSocketError);
+}
+
+void tst_QSslSocket::spontaneousWrite()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ SslServer server;
+ QSslSocket *receiver = new QSslSocket(this);
+ connect(receiver, SIGNAL(readyRead()), SLOT(exitLoop()));
+
+ // connect two sockets to each other:
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+ receiver->connectToHost("127.0.0.1", server.serverPort());
+ QVERIFY(receiver->waitForConnected(5000));
+ QVERIFY(server.waitForNewConnection(0));
+
+ QSslSocket *sender = server.socket;
+ QVERIFY(sender);
+ QVERIFY(sender->state() == QAbstractSocket::ConnectedState);
+ receiver->setObjectName("receiver");
+ sender->setObjectName("sender");
+ receiver->ignoreSslErrors();
+ receiver->startClientEncryption();
+
+ // SSL handshake:
+ connect(receiver, SIGNAL(encrypted()), SLOT(exitLoop()));
+ enterLoop(1);
+ QVERIFY(!timeout());
+ QVERIFY(sender->isEncrypted());
+ QVERIFY(receiver->isEncrypted());
+
+ // make sure there's nothing to be received on the sender:
+ while (sender->waitForReadyRead(10) || receiver->waitForBytesWritten(10)) {}
+
+ // spontaneously write something:
+ QByteArray data("Hello World");
+ sender->write(data);
+
+ // check if the other side receives it:
+ enterLoop(1);
+ QVERIFY(!timeout());
+ QCOMPARE(receiver->bytesAvailable(), qint64(data.size()));
+ QCOMPARE(receiver->readAll(), data);
+}
+
+void tst_QSslSocket::setReadBufferSize()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ SslServer server;
+ QSslSocket *receiver = new QSslSocket(this);
+ connect(receiver, SIGNAL(readyRead()), SLOT(exitLoop()));
+
+ // connect two sockets to each other:
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+ receiver->connectToHost("127.0.0.1", server.serverPort());
+ QVERIFY(receiver->waitForConnected(5000));
+ QVERIFY(server.waitForNewConnection(0));
+
+ QSslSocket *sender = server.socket;
+ QVERIFY(sender);
+ QVERIFY(sender->state() == QAbstractSocket::ConnectedState);
+ receiver->setObjectName("receiver");
+ sender->setObjectName("sender");
+ receiver->ignoreSslErrors();
+ receiver->startClientEncryption();
+
+ // SSL handshake:
+ connect(receiver, SIGNAL(encrypted()), SLOT(exitLoop()));
+ enterLoop(1);
+ QVERIFY(!timeout());
+ QVERIFY(sender->isEncrypted());
+ QVERIFY(receiver->isEncrypted());
+
+ QByteArray data(2048, 'b');
+ receiver->setReadBufferSize(39 * 1024); // make it a non-multiple of the data.size()
+
+ // saturate the incoming buffer
+ while (sender->state() == QAbstractSocket::ConnectedState &&
+ receiver->state() == QAbstractSocket::ConnectedState &&
+ receiver->bytesAvailable() < receiver->readBufferSize()) {
+ sender->write(data);
+ //qDebug() << receiver->bytesAvailable() << "<" << receiver->readBufferSize() << (receiver->bytesAvailable() < receiver->readBufferSize());
+
+ while (sender->bytesToWrite())
+ QVERIFY(sender->waitForBytesWritten(10));
+
+ // drain it:
+ while (receiver->bytesAvailable() < receiver->readBufferSize() &&
+ receiver->waitForReadyRead(10)) {}
+ }
+
+ //qDebug() << sender->bytesToWrite() << "bytes to write";
+ //qDebug() << receiver->bytesAvailable() << "bytes available";
+
+ // send a bit more
+ sender->write(data);
+ sender->write(data);
+ sender->write(data);
+ sender->write(data);
+ QVERIFY(sender->waitForBytesWritten(10));
+
+ qint64 oldBytesAvailable = receiver->bytesAvailable();
+
+ // now unset the read buffer limit and iterate
+ receiver->setReadBufferSize(0);
+ enterLoop(1);
+ QVERIFY(!timeout());
+
+ QVERIFY(receiver->bytesAvailable() > oldBytesAvailable);
+}
+
+class SetReadBufferSize_task_250027_handler : public QObject {
+ Q_OBJECT
+public slots:
+ void readyReadSlot() {
+ QTestEventLoop::instance().exitLoop();
+ }
+ void waitSomeMore(QSslSocket *socket) {
+ QTime t;
+ t.start();
+ while (!socket->encryptedBytesAvailable()) {
+ QCoreApplication::processEvents(QEventLoop::AllEvents | QEventLoop::WaitForMoreEvents, 250);
+ if (t.elapsed() > 1000 || socket->state() != QAbstractSocket::ConnectedState)
+ return;
+ }
+ }
+};
+
+void tst_QSslSocket::setReadBufferSize_task_250027()
+{
+ // do not execute this when a proxy is set.
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QSslSocketPtr socket = newSocket();
+ socket->setReadBufferSize(1000); // limit to 1 kb/sec
+ socket->ignoreSslErrors();
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ socket->ignoreSslErrors();
+ QVERIFY(socket->waitForConnected(10*1000));
+ QVERIFY(socket->waitForEncrypted(10*1000));
+
+ // exit the event loop as soon as we receive a readyRead()
+ SetReadBufferSize_task_250027_handler setReadBufferSize_task_250027_handler;
+ connect(socket, SIGNAL(readyRead()), &setReadBufferSize_task_250027_handler, SLOT(readyReadSlot()));
+
+ // provoke a response by sending a request
+ socket->write("GET /qtest/fluke.gif HTTP/1.0\n"); // this file is 27 KB
+ socket->write("Host: ");
+ socket->write(QtNetworkSettings::serverName().toLocal8Bit().constData());
+ socket->write("\n");
+ socket->write("Connection: close\n");
+ socket->write("\n");
+ socket->flush();
+
+ QTestEventLoop::instance().enterLoop(10);
+ setReadBufferSize_task_250027_handler.waitSomeMore(socket);
+ QByteArray firstRead = socket->readAll();
+ // First read should be some data, but not the whole file
+ QVERIFY(firstRead.size() > 0 && firstRead.size() < 20*1024);
+
+ QTestEventLoop::instance().enterLoop(10);
+ setReadBufferSize_task_250027_handler.waitSomeMore(socket);
+ QByteArray secondRead = socket->readAll();
+ // second read should be some more data
+ QVERIFY(secondRead.size() > 0);
+
+ socket->close();
+}
+
+class SslServer3 : public QTcpServer
+{
+ Q_OBJECT
+public:
+ SslServer3() : socket(0) { }
+ QSslSocket *socket;
+
+protected:
+ void incomingConnection(int socketDescriptor)
+ {
+ socket = new QSslSocket(this);
+ connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
+
+ QFile file(SRCDIR "certs/fluke.key");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QSslKey key(file.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
+ QVERIFY(!key.isNull());
+ socket->setPrivateKey(key);
+
+ QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/fluke.cert");
+ QVERIFY(!localCert.isEmpty());
+ QVERIFY(localCert.first().handle());
+ socket->setLocalCertificate(localCert.first());
+
+ QVERIFY(socket->setSocketDescriptor(socketDescriptor, QAbstractSocket::ConnectedState));
+ QVERIFY(!socket->peerAddress().isNull());
+ QVERIFY(socket->peerPort() != 0);
+ QVERIFY(!socket->localAddress().isNull());
+ QVERIFY(socket->localPort() != 0);
+ }
+
+protected slots:
+ void ignoreErrorSlot()
+ {
+ socket->ignoreSslErrors();
+ }
+};
+
+class ThreadedSslServer: public QThread
+{
+ Q_OBJECT
+public:
+ QSemaphore dataReadSemaphore;
+ int serverPort;
+ bool ok;
+
+ ThreadedSslServer() : serverPort(-1), ok(false)
+ { }
+
+ ~ThreadedSslServer()
+ {
+ if (isRunning()) wait(2000);
+ QVERIFY(ok);
+ }
+
+signals:
+ void listening();
+
+protected:
+ void run()
+ {
+ // if all goes well (no timeouts), this thread will sleep for a total of 500 ms
+ // (i.e., 5 times 100 ms, one sleep for each operation)
+
+ SslServer3 server;
+ server.listen(QHostAddress::LocalHost);
+ serverPort = server.serverPort();
+ emit listening();
+
+ // delayed acceptance:
+ QTest::qSleep(100);
+#ifndef Q_OS_SYMBIAN
+ bool ret = server.waitForNewConnection(2000);
+#else
+ bool ret = server.waitForNewConnection(20000);
+#endif
+ Q_UNUSED(ret);
+
+ // delayed start of encryption
+ QTest::qSleep(100);
+ QSslSocket *socket = server.socket;
+ if (!socket || !socket->isValid())
+ return; // error
+ socket->ignoreSslErrors();
+ socket->startServerEncryption();
+ if (!socket->waitForEncrypted(2000))
+ return; // error
+
+ // delayed reading data
+ QTest::qSleep(100);
+ if (!socket->waitForReadyRead(2000))
+ return; // error
+ socket->readAll();
+ dataReadSemaphore.release();
+
+ // delayed sending data
+ QTest::qSleep(100);
+ socket->write("Hello, World");
+ while (socket->bytesToWrite())
+ if (!socket->waitForBytesWritten(2000))
+ return; // error
+
+ // delayed replying (reading then sending)
+ QTest::qSleep(100);
+ if (!socket->waitForReadyRead(2000))
+ return; // error
+ socket->write("Hello, World");
+ while (socket->bytesToWrite())
+ if (!socket->waitForBytesWritten(2000))
+ return; // error
+
+ // delayed disconnection:
+ QTest::qSleep(100);
+ socket->disconnectFromHost();
+ if (!socket->waitForDisconnected(2000))
+ return; // error
+
+ delete socket;
+ ok = true;
+ }
+};
+
+void tst_QSslSocket::waitForMinusOne()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ ThreadedSslServer server;
+ connect(&server, SIGNAL(listening()), SLOT(exitLoop()));
+
+ // start the thread and wait for it to be ready
+ server.start();
+ enterLoop(1);
+ QVERIFY(!timeout());
+
+ // connect to the server
+ QSslSocket socket;
+ QTest::qSleep(100);
+ socket.connectToHost("127.0.0.1", server.serverPort);
+ QVERIFY(socket.waitForConnected(-1));
+ socket.ignoreSslErrors();
+ socket.startClientEncryption();
+
+ // first verification: this waiting should take 200 ms
+ QVERIFY2(socket.waitForEncrypted(-1), qPrintable(socket.errorString()));
+ QVERIFY(socket.isEncrypted());
+ QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
+ QCOMPARE(socket.bytesAvailable(), Q_INT64_C(0));
+
+ // second verification: write and make sure the other side got it (100 ms)
+ socket.write("How are you doing?");
+ QVERIFY(socket.bytesToWrite() != 0);
+ QVERIFY(socket.waitForBytesWritten(-1));
+ QVERIFY(server.dataReadSemaphore.tryAcquire(1, 2000));
+
+ // third verification: it should wait for 100 ms:
+ QVERIFY(socket.waitForReadyRead(-1));
+ QVERIFY(socket.isEncrypted());
+ QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
+ QVERIFY(socket.bytesAvailable() != 0);
+
+ // fourth verification: deadlock prevention:
+ // we write and then wait for reading; the other side needs to receive before
+ // replying (100 ms delay)
+ socket.write("I'm doing just fine!");
+ QVERIFY(socket.bytesToWrite() != 0);
+ QVERIFY(socket.waitForReadyRead(-1));
+
+ // fifth verification: it should wait for 200 ms more
+ QVERIFY(socket.waitForDisconnected(-1));
+}
+
+class VerifyServer : public QTcpServer
+{
+ Q_OBJECT
+public:
+ VerifyServer() : socket(0) { }
+ QSslSocket *socket;
+
+protected:
+ void incomingConnection(int socketDescriptor)
+ {
+ socket = new QSslSocket(this);
+
+ socket->setPrivateKey(SRCDIR "certs/fluke.key");
+ socket->setLocalCertificate(SRCDIR "certs/fluke.cert");
+ socket->setSocketDescriptor(socketDescriptor);
+ socket->startServerEncryption();
+ }
+};
+
+void tst_QSslSocket::verifyMode()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QSslSocket socket;
+ QCOMPARE(socket.peerVerifyMode(), QSslSocket::AutoVerifyPeer);
+ socket.setPeerVerifyMode(QSslSocket::VerifyNone);
+ QCOMPARE(socket.peerVerifyMode(), QSslSocket::VerifyNone);
+ socket.setPeerVerifyMode(QSslSocket::VerifyNone);
+ socket.setPeerVerifyMode(QSslSocket::VerifyPeer);
+ QCOMPARE(socket.peerVerifyMode(), QSslSocket::VerifyPeer);
+
+ socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY(!socket.waitForEncrypted());
+
+ QList<QSslError> expectedErrors = QList<QSslError>()
+ << QSslError(QSslError::SelfSignedCertificate, socket.peerCertificate());
+ QCOMPARE(socket.sslErrors(), expectedErrors);
+ socket.abort();
+
+ VerifyServer server;
+ server.listen();
+
+ QSslSocket clientSocket;
+ clientSocket.connectToHostEncrypted("127.0.0.1", server.serverPort());
+ clientSocket.ignoreSslErrors();
+
+ QEventLoop loop;
+ QTimer::singleShot(5000, &loop, SLOT(quit()));
+ connect(&clientSocket, SIGNAL(encrypted()), &loop, SLOT(quit()));
+ loop.exec();
+
+ QVERIFY(clientSocket.isEncrypted());
+ QVERIFY(server.socket->sslErrors().isEmpty());
+}
+
+void tst_QSslSocket::verifyDepth()
+{
+ QSslSocket socket;
+ QCOMPARE(socket.peerVerifyDepth(), 0);
+ socket.setPeerVerifyDepth(1);
+ QCOMPARE(socket.peerVerifyDepth(), 1);
+ QTest::ignoreMessage(QtWarningMsg, "QSslSocket::setPeerVerifyDepth: cannot set negative depth of -1");
+ socket.setPeerVerifyDepth(-1);
+ QCOMPARE(socket.peerVerifyDepth(), 1);
+}
+
+void tst_QSslSocket::peerVerifyError()
+{
+ QSslSocketPtr socket = newSocket();
+ QSignalSpy sslErrorsSpy(socket, SIGNAL(sslErrors(QList<QSslError>)));
+ QSignalSpy peerVerifyErrorSpy(socket, SIGNAL(peerVerifyError(QSslError)));
+
+ socket->connectToHostEncrypted(QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString(), 443);
+ QVERIFY(!socket->waitForEncrypted(10000));
+ QVERIFY(!peerVerifyErrorSpy.isEmpty());
+ QVERIFY(!sslErrorsSpy.isEmpty());
+ QCOMPARE(qVariantValue<QSslError>(peerVerifyErrorSpy.last().at(0)).error(), QSslError::HostNameMismatch);
+ QCOMPARE(qVariantValue<QList<QSslError> >(sslErrorsSpy.at(0).at(0)).size(), peerVerifyErrorSpy.size());
+}
+
+void tst_QSslSocket::disconnectFromHostWhenConnecting()
+{
+ QSslSocketPtr socket = newSocket();
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
+ socket->ignoreSslErrors();
+ socket->write("XXXX LOGOUT\r\n");
+ QAbstractSocket::SocketState state = socket->state();
+ // without proxy, the state will be HostLookupState;
+ // with proxy, the state will be ConnectingState.
+ QVERIFY(socket->state() == QAbstractSocket::HostLookupState ||
+ socket->state() == QAbstractSocket::ConnectingState);
+ socket->disconnectFromHost();
+ // the state of the socket must be the same before and after calling
+ // disconnectFromHost()
+ QCOMPARE(state, socket->state());
+ QVERIFY(socket->state() == QAbstractSocket::HostLookupState ||
+ socket->state() == QAbstractSocket::ConnectingState);
+ QVERIFY(socket->waitForDisconnected(10000));
+ QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState);
+ // we did not call close, so the socket must be still open
+ QVERIFY(socket->isOpen());
+ QCOMPARE(socket->bytesToWrite(), qint64(0));
+
+ // dont forget to login
+ QCOMPARE((int) socket->write("USER ftptest\r\n"), 14);
+
+}
+
+void tst_QSslSocket::disconnectFromHostWhenConnected()
+{
+ QSslSocketPtr socket = newSocket();
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
+ socket->ignoreSslErrors();
+#ifndef Q_OS_SYMBIAN
+ QVERIFY(socket->waitForEncrypted(5000));
+#else
+ QVERIFY(socket->waitForEncrypted(10000));
+#endif
+ socket->write("XXXX LOGOUT\r\n");
+ QCOMPARE(socket->state(), QAbstractSocket::ConnectedState);
+ socket->disconnectFromHost();
+ QCOMPARE(socket->state(), QAbstractSocket::ClosingState);
+#ifdef Q_OS_SYMBIAN
+ // I don't understand how socket->waitForDisconnected can work on other platforms
+ // since socket->write will end to:
+ // QMetaObject::invokeMethod(this, "_q_flushWriteBuffer", Qt::QueuedConnection);
+ // In order that _q_flushWriteBuffer will be called the eventloop need to run
+ // If we just call waitForDisconnected, which blocks the whole thread how that can happen?
+ connect(socket, SIGNAL(disconnected()), this, SLOT(exitLoop()));
+ enterLoop(5);
+ QVERIFY(!timeout());
+#else
+ QVERIFY(socket->waitForDisconnected(5000));
+#endif
+ QCOMPARE(socket->bytesToWrite(), qint64(0));
+}
+
+void tst_QSslSocket::resetProxy()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ // check fix for bug 199941
+
+ QNetworkProxy goodProxy(QNetworkProxy::NoProxy);
+ QNetworkProxy badProxy(QNetworkProxy::HttpProxy, "thisCannotWorkAbsolutelyNotForSure", 333);
+
+ // make sure the connection works, and then set a nonsense proxy, and then
+ // make sure it does not work anymore
+ QSslSocket socket;
+ socket.addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"));
+ socket.setProxy(goodProxy);
+ socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY2(socket.waitForConnected(10000), qPrintable(socket.errorString()));
+ socket.abort();
+ socket.setProxy(badProxy);
+ socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY(! socket.waitForConnected(10000));
+
+ // dont forget to login
+ QCOMPARE((int) socket.write("USER ftptest\r\n"), 14);
+ QCOMPARE((int) socket.write("PASS password\r\n"), 15);
+
+ enterLoop(10);
+
+ // now the other way round:
+ // set the nonsense proxy and make sure the connection does not work,
+ // and then set the right proxy and make sure it works
+ QSslSocket socket2;
+ socket2.addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"));
+ socket2.setProxy(badProxy);
+ socket2.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY(! socket2.waitForConnected(10000));
+ socket2.abort();
+ socket2.setProxy(goodProxy);
+ socket2.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY2(socket2.waitForConnected(10000), qPrintable(socket.errorString()));
+}
+
+void tst_QSslSocket::ignoreSslErrorsList_data()
+{
+ QTest::addColumn<QList<QSslError> >("expectedSslErrors");
+ QTest::addColumn<int>("expectedSslErrorSignalCount");
+
+ // construct the list of errors that we will get with the SSL handshake and that we will ignore
+ QList<QSslError> expectedSslErrors;
+ // fromPath gives us a list of certs, but it actually only contains one
+ QList<QSslCertificate> certs = QSslCertificate::fromPath(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"));
+ QSslError rightError(QSslError::SelfSignedCertificate, certs.at(0));
+ QSslError wrongError(QSslError::SelfSignedCertificate);
+
+
+ QTest::newRow("SSL-failure-empty-list") << expectedSslErrors << 1;
+ expectedSslErrors.append(wrongError);
+ QTest::newRow("SSL-failure-wrong-error") << expectedSslErrors << 1;
+ expectedSslErrors.append(rightError);
+ QTest::newRow("allErrorsInExpectedList1") << expectedSslErrors << 0;
+ expectedSslErrors.removeAll(wrongError);
+ QTest::newRow("allErrorsInExpectedList2") << expectedSslErrors << 0;
+ expectedSslErrors.removeAll(rightError);
+ QTest::newRow("SSL-failure-empty-list-again") << expectedSslErrors << 1;
+}
+
+void tst_QSslSocket::ignoreSslErrorsList()
+{
+ QSslSocket socket;
+ connect(&socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+
+// this->socket = &socket;
+ QSslCertificate cert;
+
+ QFETCH(QList<QSslError>, expectedSslErrors);
+ socket.ignoreSslErrors(expectedSslErrors);
+
+ QFETCH(int, expectedSslErrorSignalCount);
+ QSignalSpy sslErrorsSpy(&socket, SIGNAL(error(QAbstractSocket::SocketError)));
+
+ socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+
+ bool expectEncryptionSuccess = (expectedSslErrorSignalCount == 0);
+ QCOMPARE(socket.waitForEncrypted(10000), expectEncryptionSuccess);
+ QCOMPARE(sslErrorsSpy.count(), expectedSslErrorSignalCount);
+}
+
+void tst_QSslSocket::ignoreSslErrorsListWithSlot_data()
+{
+ ignoreSslErrorsList_data();
+}
+
+// this is not a test, just a slot called in the test below
+void tst_QSslSocket::ignoreErrorListSlot(const QList<QSslError> &)
+{
+ socket->ignoreSslErrors(storedExpectedSslErrors);
+}
+
+void tst_QSslSocket::ignoreSslErrorsListWithSlot()
+{
+ QSslSocket socket;
+ this->socket = &socket;
+
+ QFETCH(QList<QSslError>, expectedSslErrors);
+ // store the errors to ignore them later in the slot connected below
+ storedExpectedSslErrors = expectedSslErrors;
+ connect(&socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(&socket, SIGNAL(sslErrors(const QList<QSslError> &)),
+ this, SLOT(ignoreErrorListSlot(const QList<QSslError> &)));
+ socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+
+ QFETCH(int, expectedSslErrorSignalCount);
+ bool expectEncryptionSuccess = (expectedSslErrorSignalCount == 0);
+ QCOMPARE(socket.waitForEncrypted(10000), expectEncryptionSuccess);
+}
+
+// make sure a closed socket has no bytesAvailable()
+// related to https://bugs.webkit.org/show_bug.cgi?id=28016
+void tst_QSslSocket::readFromClosedSocket()
+{
+ QSslSocketPtr socket = newSocket();
+ socket->ignoreSslErrors();
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ socket->ignoreSslErrors();
+ socket->waitForConnected();
+ socket->waitForEncrypted();
+ // provoke a response by sending a request
+ socket->write("GET /qtest/fluke.gif HTTP/1.1\n");
+ socket->write("Host: ");
+ socket->write(QtNetworkSettings::serverName().toLocal8Bit().constData());
+ socket->write("\n");
+ socket->write("\n");
+ socket->waitForBytesWritten();
+ socket->waitForReadyRead();
+ QVERIFY(socket->state() == QAbstractSocket::ConnectedState);
+ QVERIFY(socket->bytesAvailable());
+ socket->close();
+ QVERIFY(!socket->bytesAvailable());
+ QVERIFY(!socket->bytesToWrite());
+ QVERIFY(socket->state() == QAbstractSocket::UnconnectedState);
+}
+
+void tst_QSslSocket::writeBigChunk()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocketPtr socket = newSocket();
+ this->socket = socket;
+
+ connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+
+ QByteArray data;
+ data.resize(1024*1024*10); // 10 MB
+ // init with garbage. needed so ssl cannot compress it in an efficient way.
+ for (size_t i = 0; i < data.size() / sizeof(int); i++) {
+ int r = qrand();
+ data.data()[i*sizeof(int)] = r;
+ }
+
+ QVERIFY(socket->waitForEncrypted(10000));
+ QString errorBefore = socket->errorString();
+
+ int ret = socket->write(data.constData(), data.size());
+ QVERIFY(data.size() == ret);
+
+ // spin the event loop once so QSslSocket::transmit() gets called
+ QCoreApplication::processEvents();
+ QString errorAfter = socket->errorString();
+
+ // no better way to do this right now since the error is the same as the default error.
+ if (socket->errorString().startsWith(QLatin1String("Unable to write data")))
+ {
+ qWarning() << socket->error() << socket->errorString();
+ QFAIL("Error while writing! Check if the OpenSSL BIO size is limited?!");
+ }
+ // also check the error string. If another error (than UnknownError) occurred, it should be different than before
+ QVERIFY(errorBefore == errorAfter);
+
+ // check that everything has been written to OpenSSL
+ QVERIFY(socket->bytesToWrite() == 0);
+
+ socket->close();
+}
+
+void tst_QSslSocket::blacklistedCertificates()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ SslServer server(SRCDIR "certs/fake-login.live.com.key", SRCDIR "certs/fake-login.live.com.pem");
+ QSslSocket *receiver = new QSslSocket(this);
+ connect(receiver, SIGNAL(readyRead()), SLOT(exitLoop()));
+
+ // connect two sockets to each other:
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+ receiver->connectToHost("127.0.0.1", server.serverPort());
+ QVERIFY(receiver->waitForConnected(5000));
+ QVERIFY(server.waitForNewConnection(0));
+
+ QSslSocket *sender = server.socket;
+ QVERIFY(sender);
+ QVERIFY(sender->state() == QAbstractSocket::ConnectedState);
+ receiver->setObjectName("receiver");
+ sender->setObjectName("sender");
+ receiver->startClientEncryption();
+
+ connect(receiver, SIGNAL(sslErrors(QList<QSslError>)), SLOT(exitLoop()));
+ connect(receiver, SIGNAL(encrypted()), SLOT(exitLoop()));
+ enterLoop(1);
+ QList<QSslError> sslErrors = receiver->sslErrors();
+ QVERIFY(sslErrors.count() > 0);
+ // there are more errors (self signed cert and hostname mismatch), but we only care about the blacklist error
+ QCOMPARE(sslErrors.at(0).error(), QSslError::CertificateBlacklisted);
+}
+
+void tst_QSslSocket::setEmptyDefaultConfiguration()
+{
+ // used to produce a crash in QSslConfigurationPrivate::deepCopyDefaultConfiguration, QTBUG-13265
+
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslConfiguration emptyConf;
+ QSslConfiguration::setDefaultConfiguration(emptyConf);
+
+ QSslSocketPtr socket = newSocket();
+ connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY2(!socket->waitForEncrypted(4000), qPrintable(socket->errorString()));
+}
+
+void tst_QSslSocket::versionAccessors()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ qDebug() << QSslSocket::sslLibraryVersionString();
+ qDebug() << QString::number(QSslSocket::sslLibraryVersionNumber(), 16);
+}
+
+#endif // QT_NO_OPENSSL
+
+QTEST_MAIN(tst_QSslSocket)
+#include "tst_qsslsocket.moc"
diff --git a/tests/auto/network/ssl/ssl.pro b/tests/auto/network/ssl/ssl.pro
new file mode 100644
index 0000000000..fd57a1729b
--- /dev/null
+++ b/tests/auto/network/ssl/ssl.pro
@@ -0,0 +1,8 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qsslcertificate \
+ qsslcipher \
+ qsslerror \
+ qsslsocket \
+ qsslkey \
+
diff --git a/tests/auto/opengl.pro b/tests/auto/opengl/opengl.pro
index 6c8e4ca96b..6c8e4ca96b 100644
--- a/tests/auto/opengl.pro
+++ b/tests/auto/opengl/opengl.pro
diff --git a/tests/auto/qgl/.gitignore b/tests/auto/opengl/qgl/.gitignore
index bb6e921035..bb6e921035 100644
--- a/tests/auto/qgl/.gitignore
+++ b/tests/auto/opengl/qgl/.gitignore
diff --git a/tests/auto/opengl/qgl/qgl.pro b/tests/auto/opengl/qgl/qgl.pro
new file mode 100644
index 0000000000..c5e26451ed
--- /dev/null
+++ b/tests/auto/opengl/qgl/qgl.pro
@@ -0,0 +1,15 @@
+############################################################
+# Project file for autotest for file qgl.h
+############################################################
+
+load(qttest_p4)
+requires(contains(QT_CONFIG,opengl))
+QT += widgets widgets-private opengl-private gui-private core-private
+
+contains(QT_CONFIG,egl):DEFINES += QGL_EGL
+win32:!wince*: DEFINES += QT_NO_EGL
+
+SOURCES += tst_qgl.cpp
+RESOURCES = qgl.qrc
+
+CONFIG+=insignificant_test
diff --git a/tests/auto/opengl/qgl/qgl.qrc b/tests/auto/opengl/qgl/qgl.qrc
new file mode 100644
index 0000000000..70f425c1b9
--- /dev/null
+++ b/tests/auto/opengl/qgl/qgl.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file alias="designer.png">../../gui/image/qpixmap/images/designer.png</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/opengl/qgl/tst_qgl.cpp b/tests/auto/opengl/qgl/tst_qgl.cpp
new file mode 100644
index 0000000000..e1c3462560
--- /dev/null
+++ b/tests/auto/opengl/qgl/tst_qgl.cpp
@@ -0,0 +1,2400 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qdebug.h>
+#include <qgl.h>
+#include <qglpixelbuffer.h>
+#include <qglframebufferobject.h>
+#include <qglcolormap.h>
+#include <qpaintengine.h>
+
+#include <QGraphicsView>
+#include <QGraphicsProxyWidget>
+#include <QVBoxLayout>
+
+#ifdef QT_BUILD_INTERNAL
+#include <qplatformpixmap_qpa.h>
+#include <QtOpenGL/private/qgl_p.h>
+#include <QtGui/private/qimage_p.h>
+#include <QtGui/private/qimagepixmapcleanuphooks_p.h>
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QGL : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QGL();
+ virtual ~tst_QGL();
+
+private slots:
+ void getSetCheck();
+ void openGLVersionCheck();
+ void graphicsViewClipping();
+ void partialGLWidgetUpdates_data();
+ void partialGLWidgetUpdates();
+ void glWidgetWithAlpha();
+ void glWidgetRendering();
+ void glFBOSimpleRendering();
+ void glFBORendering();
+ void multipleFBOInterleavedRendering();
+ void glFBOUseInGLWidget();
+ void glPBufferRendering();
+ void glWidgetReparent();
+ void glWidgetRenderPixmap();
+ void colormap();
+ void fboFormat();
+ void testDontCrashOnDanglingResources();
+ void replaceClipping();
+ void clipTest();
+ void destroyFBOAfterContext();
+ void shareRegister();
+ void qglContextDefaultBindTexture();
+ void textureCleanup();
+ void threadImages();
+ void nullRectCrash();
+};
+
+tst_QGL::tst_QGL()
+{
+}
+
+tst_QGL::~tst_QGL()
+{
+}
+
+class MyGLContext : public QGLContext
+{
+public:
+ MyGLContext(const QGLFormat& format) : QGLContext(format) {}
+ bool windowCreated() const { return QGLContext::windowCreated(); }
+ void setWindowCreated(bool on) { QGLContext::setWindowCreated(on); }
+ bool initialized() const { return QGLContext::initialized(); }
+ void setInitialized(bool on) { QGLContext::setInitialized(on); }
+};
+
+class MyGLWidget : public QGLWidget
+{
+public:
+ MyGLWidget() : QGLWidget() {}
+ bool autoBufferSwap() const { return QGLWidget::autoBufferSwap(); }
+ void setAutoBufferSwap(bool on) { QGLWidget::setAutoBufferSwap(on); }
+};
+
+static int appDefaultDepth()
+{
+ static int depth = 0;
+ if (depth == 0) {
+ QPixmap pm(1, 1);
+ depth = pm.depth();
+ }
+ return depth;
+}
+
+// Using INT_MIN and INT_MAX will cause failures on systems
+// where "int" is 64-bit, so use the explicit values instead.
+#define TEST_INT_MIN (-2147483647 - 1)
+#define TEST_INT_MAX 2147483647
+
+// Testing get/set functions
+void tst_QGL::getSetCheck()
+{
+ if (!QGLFormat::hasOpenGL())
+ QSKIP("QGL not supported on this platform", SkipAll);
+
+ QGLFormat obj1;
+ // int QGLFormat::depthBufferSize()
+ // void QGLFormat::setDepthBufferSize(int)
+ QCOMPARE(-1, obj1.depthBufferSize());
+ obj1.setDepthBufferSize(0);
+ QCOMPARE(0, obj1.depthBufferSize());
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setDepthBufferSize: Cannot set negative depth buffer size -2147483648");
+ obj1.setDepthBufferSize(TEST_INT_MIN);
+ QCOMPARE(0, obj1.depthBufferSize()); // Makes no sense with a negative buffer size
+ obj1.setDepthBufferSize(3);
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setDepthBufferSize: Cannot set negative depth buffer size -1");
+ obj1.setDepthBufferSize(-1);
+ QCOMPARE(3, obj1.depthBufferSize());
+ obj1.setDepthBufferSize(TEST_INT_MAX);
+ QCOMPARE(TEST_INT_MAX, obj1.depthBufferSize());
+
+ // int QGLFormat::accumBufferSize()
+ // void QGLFormat::setAccumBufferSize(int)
+ QCOMPARE(-1, obj1.accumBufferSize());
+ obj1.setAccumBufferSize(0);
+ QCOMPARE(0, obj1.accumBufferSize());
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setAccumBufferSize: Cannot set negative accumulate buffer size -2147483648");
+ obj1.setAccumBufferSize(TEST_INT_MIN);
+ QCOMPARE(0, obj1.accumBufferSize()); // Makes no sense with a negative buffer size
+ obj1.setAccumBufferSize(3);
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setAccumBufferSize: Cannot set negative accumulate buffer size -1");
+ obj1.setAccumBufferSize(-1);
+ QCOMPARE(3, obj1.accumBufferSize());
+ obj1.setAccumBufferSize(TEST_INT_MAX);
+ QCOMPARE(TEST_INT_MAX, obj1.accumBufferSize());
+
+ // int QGLFormat::redBufferSize()
+ // void QGLFormat::setRedBufferSize(int)
+ QCOMPARE(-1, obj1.redBufferSize());
+ obj1.setRedBufferSize(0);
+ QCOMPARE(0, obj1.redBufferSize());
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setRedBufferSize: Cannot set negative red buffer size -2147483648");
+ obj1.setRedBufferSize(TEST_INT_MIN);
+ QCOMPARE(0, obj1.redBufferSize()); // Makes no sense with a negative buffer size
+ obj1.setRedBufferSize(3);
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setRedBufferSize: Cannot set negative red buffer size -1");
+ obj1.setRedBufferSize(-1);
+ QCOMPARE(3, obj1.redBufferSize());
+ obj1.setRedBufferSize(TEST_INT_MAX);
+ QCOMPARE(TEST_INT_MAX, obj1.redBufferSize());
+
+ // int QGLFormat::greenBufferSize()
+ // void QGLFormat::setGreenBufferSize(int)
+ QCOMPARE(-1, obj1.greenBufferSize());
+ obj1.setGreenBufferSize(0);
+ QCOMPARE(0, obj1.greenBufferSize());
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setGreenBufferSize: Cannot set negative green buffer size -2147483648");
+ obj1.setGreenBufferSize(TEST_INT_MIN);
+ QCOMPARE(0, obj1.greenBufferSize()); // Makes no sense with a negative buffer size
+ obj1.setGreenBufferSize(3);
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setGreenBufferSize: Cannot set negative green buffer size -1");
+ obj1.setGreenBufferSize(-1);
+ QCOMPARE(3, obj1.greenBufferSize());
+ obj1.setGreenBufferSize(TEST_INT_MAX);
+ QCOMPARE(TEST_INT_MAX, obj1.greenBufferSize());
+
+ // int QGLFormat::blueBufferSize()
+ // void QGLFormat::setBlueBufferSize(int)
+ QCOMPARE(-1, obj1.blueBufferSize());
+ obj1.setBlueBufferSize(0);
+ QCOMPARE(0, obj1.blueBufferSize());
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setBlueBufferSize: Cannot set negative blue buffer size -2147483648");
+ obj1.setBlueBufferSize(TEST_INT_MIN);
+ QCOMPARE(0, obj1.blueBufferSize()); // Makes no sense with a negative buffer size
+ obj1.setBlueBufferSize(3);
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setBlueBufferSize: Cannot set negative blue buffer size -1");
+ obj1.setBlueBufferSize(-1);
+ QCOMPARE(3, obj1.blueBufferSize());
+ obj1.setBlueBufferSize(TEST_INT_MAX);
+ QCOMPARE(TEST_INT_MAX, obj1.blueBufferSize());
+
+ // int QGLFormat::alphaBufferSize()
+ // void QGLFormat::setAlphaBufferSize(int)
+ QCOMPARE(-1, obj1.alphaBufferSize());
+ QCOMPARE(false, obj1.alpha());
+ QVERIFY(!obj1.testOption(QGL::AlphaChannel));
+ QVERIFY(obj1.testOption(QGL::NoAlphaChannel));
+ obj1.setAlphaBufferSize(1);
+ QCOMPARE(true, obj1.alpha()); // setAlphaBufferSize() enables alpha.
+ QCOMPARE(1, obj1.alphaBufferSize());
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setAlphaBufferSize: Cannot set negative alpha buffer size -2147483648");
+ obj1.setAlphaBufferSize(TEST_INT_MIN);
+ QCOMPARE(1, obj1.alphaBufferSize()); // Makes no sense with a negative buffer size
+ obj1.setAlphaBufferSize(3);
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setAlphaBufferSize: Cannot set negative alpha buffer size -1");
+ obj1.setAlphaBufferSize(-1);
+ QCOMPARE(3, obj1.alphaBufferSize());
+ obj1.setAlphaBufferSize(TEST_INT_MAX);
+ QCOMPARE(TEST_INT_MAX, obj1.alphaBufferSize());
+
+ // int QGLFormat::stencilBufferSize()
+ // void QGLFormat::setStencilBufferSize(int)
+ QCOMPARE(-1, obj1.stencilBufferSize());
+ obj1.setStencilBufferSize(1);
+ QCOMPARE(1, obj1.stencilBufferSize());
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setStencilBufferSize: Cannot set negative stencil buffer size -2147483648");
+ obj1.setStencilBufferSize(TEST_INT_MIN);
+ QCOMPARE(1, obj1.stencilBufferSize()); // Makes no sense with a negative buffer size
+ obj1.setStencilBufferSize(3);
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setStencilBufferSize: Cannot set negative stencil buffer size -1");
+ obj1.setStencilBufferSize(-1);
+ QCOMPARE(3, obj1.stencilBufferSize());
+ obj1.setStencilBufferSize(TEST_INT_MAX);
+ QCOMPARE(TEST_INT_MAX, obj1.stencilBufferSize());
+
+ // bool QGLFormat::sampleBuffers()
+ // void QGLFormat::setSampleBuffers(bool)
+ QCOMPARE(false, obj1.sampleBuffers());
+ QVERIFY(!obj1.testOption(QGL::SampleBuffers));
+ QVERIFY(obj1.testOption(QGL::NoSampleBuffers));
+
+ obj1.setSampleBuffers(false);
+ QCOMPARE(false, obj1.sampleBuffers());
+ QVERIFY(obj1.testOption(QGL::NoSampleBuffers));
+ obj1.setSampleBuffers(true);
+ QCOMPARE(true, obj1.sampleBuffers());
+ QVERIFY(obj1.testOption(QGL::SampleBuffers));
+
+ // int QGLFormat::samples()
+ // void QGLFormat::setSamples(int)
+ QCOMPARE(-1, obj1.samples());
+ obj1.setSamples(0);
+ QCOMPARE(0, obj1.samples());
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setSamples: Cannot have negative number of samples per pixel -2147483648");
+ obj1.setSamples(TEST_INT_MIN);
+ QCOMPARE(0, obj1.samples()); // Makes no sense with a negative sample size
+ obj1.setSamples(3);
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setSamples: Cannot have negative number of samples per pixel -1");
+ obj1.setSamples(-1);
+ QCOMPARE(3, obj1.samples());
+ obj1.setSamples(TEST_INT_MAX);
+ QCOMPARE(TEST_INT_MAX, obj1.samples());
+
+ // int QGLFormat::swapInterval()
+ // void QGLFormat::setSwapInterval(int)
+ QCOMPARE(-1, obj1.swapInterval());
+ obj1.setSwapInterval(0);
+ QCOMPARE(0, obj1.swapInterval());
+ obj1.setSwapInterval(TEST_INT_MIN);
+ QCOMPARE(TEST_INT_MIN, obj1.swapInterval());
+ obj1.setSwapInterval(-1);
+ QCOMPARE(-1, obj1.swapInterval());
+ obj1.setSwapInterval(TEST_INT_MAX);
+ QCOMPARE(TEST_INT_MAX, obj1.swapInterval());
+
+ // bool QGLFormat::doubleBuffer()
+ // void QGLFormat::setDoubleBuffer(bool)
+ QCOMPARE(true, obj1.doubleBuffer());
+ QVERIFY(obj1.testOption(QGL::DoubleBuffer));
+ QVERIFY(!obj1.testOption(QGL::SingleBuffer));
+ obj1.setDoubleBuffer(false);
+ QCOMPARE(false, obj1.doubleBuffer());
+ QVERIFY(!obj1.testOption(QGL::DoubleBuffer));
+ QVERIFY(obj1.testOption(QGL::SingleBuffer));
+ obj1.setDoubleBuffer(true);
+ QCOMPARE(true, obj1.doubleBuffer());
+ QVERIFY(obj1.testOption(QGL::DoubleBuffer));
+ QVERIFY(!obj1.testOption(QGL::SingleBuffer));
+
+ // bool QGLFormat::depth()
+ // void QGLFormat::setDepth(bool)
+ QCOMPARE(true, obj1.depth());
+ QVERIFY(obj1.testOption(QGL::DepthBuffer));
+ QVERIFY(!obj1.testOption(QGL::NoDepthBuffer));
+ obj1.setDepth(false);
+ QCOMPARE(false, obj1.depth());
+ QVERIFY(!obj1.testOption(QGL::DepthBuffer));
+ QVERIFY(obj1.testOption(QGL::NoDepthBuffer));
+ obj1.setDepth(true);
+ QCOMPARE(true, obj1.depth());
+ QVERIFY(obj1.testOption(QGL::DepthBuffer));
+ QVERIFY(!obj1.testOption(QGL::NoDepthBuffer));
+
+ // bool QGLFormat::rgba()
+ // void QGLFormat::setRgba(bool)
+ QCOMPARE(true, obj1.rgba());
+ QVERIFY(obj1.testOption(QGL::Rgba));
+ QVERIFY(!obj1.testOption(QGL::ColorIndex));
+ obj1.setRgba(false);
+ QCOMPARE(false, obj1.rgba());
+ QVERIFY(!obj1.testOption(QGL::Rgba));
+ QVERIFY(obj1.testOption(QGL::ColorIndex));
+ obj1.setRgba(true);
+ QCOMPARE(true, obj1.rgba());
+ QVERIFY(obj1.testOption(QGL::Rgba));
+ QVERIFY(!obj1.testOption(QGL::ColorIndex));
+
+ // bool QGLFormat::alpha()
+ // void QGLFormat::setAlpha(bool)
+ QVERIFY(obj1.testOption(QGL::AlphaChannel));
+ QVERIFY(!obj1.testOption(QGL::NoAlphaChannel));
+ obj1.setAlpha(false);
+ QCOMPARE(false, obj1.alpha());
+ QVERIFY(!obj1.testOption(QGL::AlphaChannel));
+ QVERIFY(obj1.testOption(QGL::NoAlphaChannel));
+ obj1.setAlpha(true);
+ QCOMPARE(true, obj1.alpha());
+ QVERIFY(obj1.testOption(QGL::AlphaChannel));
+ QVERIFY(!obj1.testOption(QGL::NoAlphaChannel));
+
+ // bool QGLFormat::accum()
+ // void QGLFormat::setAccum(bool)
+ obj1.setAccumBufferSize(0);
+ QCOMPARE(false, obj1.accum());
+ QVERIFY(!obj1.testOption(QGL::AccumBuffer));
+ QVERIFY(obj1.testOption(QGL::NoAccumBuffer));
+ obj1.setAccum(false);
+ QCOMPARE(false, obj1.accum());
+ QVERIFY(!obj1.testOption(QGL::AccumBuffer));
+ QVERIFY(obj1.testOption(QGL::NoAccumBuffer));
+ obj1.setAccum(true);
+ QCOMPARE(true, obj1.accum());
+ QVERIFY(obj1.testOption(QGL::AccumBuffer));
+ QVERIFY(!obj1.testOption(QGL::NoAccumBuffer));
+
+ // bool QGLFormat::stencil()
+ // void QGLFormat::setStencil(bool)
+ QCOMPARE(true, obj1.stencil());
+ QVERIFY(obj1.testOption(QGL::StencilBuffer));
+ QVERIFY(!obj1.testOption(QGL::NoStencilBuffer));
+ obj1.setStencil(false);
+ QCOMPARE(false, obj1.stencil());
+ QVERIFY(!obj1.testOption(QGL::StencilBuffer));
+ QVERIFY(obj1.testOption(QGL::NoStencilBuffer));
+ obj1.setStencil(true);
+ QCOMPARE(true, obj1.stencil());
+ QVERIFY(obj1.testOption(QGL::StencilBuffer));
+ QVERIFY(!obj1.testOption(QGL::NoStencilBuffer));
+
+ // bool QGLFormat::stereo()
+ // void QGLFormat::setStereo(bool)
+ QCOMPARE(false, obj1.stereo());
+ QVERIFY(!obj1.testOption(QGL::StereoBuffers));
+ QVERIFY(obj1.testOption(QGL::NoStereoBuffers));
+ obj1.setStereo(false);
+ QCOMPARE(false, obj1.stereo());
+ QVERIFY(!obj1.testOption(QGL::StereoBuffers));
+ QVERIFY(obj1.testOption(QGL::NoStereoBuffers));
+ obj1.setStereo(true);
+ QCOMPARE(true, obj1.stereo());
+ QVERIFY(obj1.testOption(QGL::StereoBuffers));
+ QVERIFY(!obj1.testOption(QGL::NoStereoBuffers));
+
+ // bool QGLFormat::directRendering()
+ // void QGLFormat::setDirectRendering(bool)
+ QCOMPARE(true, obj1.directRendering());
+ QVERIFY(obj1.testOption(QGL::DirectRendering));
+ QVERIFY(!obj1.testOption(QGL::IndirectRendering));
+ obj1.setDirectRendering(false);
+ QCOMPARE(false, obj1.directRendering());
+ QVERIFY(!obj1.testOption(QGL::DirectRendering));
+ QVERIFY(obj1.testOption(QGL::IndirectRendering));
+ obj1.setDirectRendering(true);
+ QCOMPARE(true, obj1.directRendering());
+ QVERIFY(obj1.testOption(QGL::DirectRendering));
+ QVERIFY(!obj1.testOption(QGL::IndirectRendering));
+
+ // bool QGLFormat::overlay()
+ // void QGLFormat::setOverlay(bool)
+ QCOMPARE(false, obj1.hasOverlay());
+ QVERIFY(!obj1.testOption(QGL::HasOverlay));
+ QVERIFY(obj1.testOption(QGL::NoOverlay));
+ obj1.setOverlay(false);
+ QCOMPARE(false, obj1.hasOverlay());
+ QVERIFY(!obj1.testOption(QGL::HasOverlay));
+ QVERIFY(obj1.testOption(QGL::NoOverlay));
+ obj1.setOverlay(true);
+ QCOMPARE(true, obj1.hasOverlay());
+ QVERIFY(obj1.testOption(QGL::HasOverlay));
+ QVERIFY(!obj1.testOption(QGL::NoOverlay));
+
+ // int QGLFormat::plane()
+ // void QGLFormat::setPlane(int)
+ QCOMPARE(0, obj1.plane());
+ obj1.setPlane(0);
+ QCOMPARE(0, obj1.plane());
+ obj1.setPlane(TEST_INT_MIN);
+ QCOMPARE(TEST_INT_MIN, obj1.plane());
+ obj1.setPlane(TEST_INT_MAX);
+ QCOMPARE(TEST_INT_MAX, obj1.plane());
+
+ // int QGLFormat::major/minorVersion()
+ // void QGLFormat::setVersion(int, int)
+ QCOMPARE(obj1.majorVersion(), 1);
+ QCOMPARE(obj1.minorVersion(), 0);
+ obj1.setVersion(3, 2);
+ QCOMPARE(obj1.majorVersion(), 3);
+ QCOMPARE(obj1.minorVersion(), 2);
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setVersion: Cannot set zero or negative version number 0.1");
+ obj1.setVersion(0, 1);
+ QCOMPARE(obj1.majorVersion(), 3);
+ QCOMPARE(obj1.minorVersion(), 2);
+ QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setVersion: Cannot set zero or negative version number 3.-1");
+ obj1.setVersion(3, -1);
+ QCOMPARE(obj1.majorVersion(), 3);
+ QCOMPARE(obj1.minorVersion(), 2);
+ obj1.setVersion(TEST_INT_MAX, TEST_INT_MAX - 1);
+ QCOMPARE(obj1.majorVersion(), TEST_INT_MAX);
+ QCOMPARE(obj1.minorVersion(), TEST_INT_MAX - 1);
+
+
+ // operator== and operator!= for QGLFormat
+ QGLFormat format1;
+ QGLFormat format2;
+
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+ format1.setDoubleBuffer(false);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setDoubleBuffer(false);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setDepthBufferSize(8);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setDepthBufferSize(8);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setAccumBufferSize(8);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setAccumBufferSize(8);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setRedBufferSize(8);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setRedBufferSize(8);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setGreenBufferSize(8);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setGreenBufferSize(8);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setBlueBufferSize(8);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setBlueBufferSize(8);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setAlphaBufferSize(8);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setAlphaBufferSize(8);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setStencilBufferSize(8);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setStencilBufferSize(8);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setSamples(8);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setSamples(8);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setSwapInterval(8);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setSwapInterval(8);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setPlane(8);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setPlane(8);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setVersion(3, 2);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setVersion(3, 2);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setProfile(QGLFormat::CoreProfile);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setProfile(QGLFormat::CoreProfile);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ format1.setOption(QGL::NoDeprecatedFunctions);
+ QVERIFY(!(format1 == format2));
+ QVERIFY(format1 != format2);
+ format2.setOption(QGL::NoDeprecatedFunctions);
+ QVERIFY(format1 == format2);
+ QVERIFY(!(format1 != format2));
+
+ // Copy constructor and assignment for QGLFormat.
+ QGLFormat format3(format1);
+ QGLFormat format4;
+ QVERIFY(format1 == format3);
+ QVERIFY(format1 != format4);
+ format4 = format1;
+ QVERIFY(format1 == format4);
+
+ // Check that modifying a copy doesn't affect the original.
+ format3.setRedBufferSize(16);
+ format4.setPlane(16);
+ QCOMPARE(format1.redBufferSize(), 8);
+ QCOMPARE(format1.plane(), 8);
+
+ // Check the QGLFormat constructor that takes an option list.
+ QGLFormat format5
+ (QGL::DepthBuffer | QGL::StereoBuffers | QGL::ColorIndex, 3);
+ QVERIFY(format5.depth());
+ QVERIFY(format5.stereo());
+ QVERIFY(format5.doubleBuffer()); // From defaultFormat()
+ QVERIFY(!format5.hasOverlay()); // From defaultFormat()
+ QVERIFY(!format5.rgba());
+ QCOMPARE(format5.plane(), 3);
+
+ // The default format should be the same as QGLFormat().
+ QVERIFY(QGLFormat::defaultFormat() == QGLFormat());
+
+ // Modify the default format and check that it was changed.
+ QGLFormat::setDefaultFormat(format1);
+ QVERIFY(QGLFormat::defaultFormat() == format1);
+
+ // Restore the default format.
+ QGLFormat::setDefaultFormat(QGLFormat());
+ QVERIFY(QGLFormat::defaultFormat() == QGLFormat());
+
+ // Check the default overlay format's expected values.
+ QGLFormat overlay(QGLFormat::defaultOverlayFormat());
+ QCOMPARE(overlay.depthBufferSize(), -1);
+ QCOMPARE(overlay.accumBufferSize(), -1);
+ QCOMPARE(overlay.redBufferSize(), -1);
+ QCOMPARE(overlay.greenBufferSize(), -1);
+ QCOMPARE(overlay.blueBufferSize(), -1);
+ QCOMPARE(overlay.alphaBufferSize(), -1);
+ QCOMPARE(overlay.samples(), -1);
+ QCOMPARE(overlay.swapInterval(), -1);
+ QCOMPARE(overlay.plane(), 1);
+ QVERIFY(!overlay.sampleBuffers());
+ QVERIFY(!overlay.doubleBuffer());
+ QVERIFY(!overlay.depth());
+ QVERIFY(!overlay.rgba());
+ QVERIFY(!overlay.alpha());
+ QVERIFY(!overlay.accum());
+ QVERIFY(!overlay.stencil());
+ QVERIFY(!overlay.stereo());
+ QVERIFY(overlay.directRendering()); // Only option that should be on.
+ QVERIFY(!overlay.hasOverlay()); // Overlay doesn't need an overlay!
+
+ // Modify the default overlay format and check that it was changed.
+ QGLFormat::setDefaultOverlayFormat(format1);
+ QVERIFY(QGLFormat::defaultOverlayFormat() == format1);
+
+ // Restore the default overlay format.
+ QGLFormat::setDefaultOverlayFormat(overlay);
+ QVERIFY(QGLFormat::defaultOverlayFormat() == overlay);
+
+ MyGLContext obj2(obj1);
+ // bool QGLContext::windowCreated()
+ // void QGLContext::setWindowCreated(bool)
+ obj2.setWindowCreated(false);
+ QCOMPARE(false, obj2.windowCreated());
+ obj2.setWindowCreated(true);
+ QCOMPARE(true, obj2.windowCreated());
+
+ // bool QGLContext::initialized()
+ // void QGLContext::setInitialized(bool)
+ obj2.setInitialized(false);
+ QCOMPARE(false, obj2.initialized());
+ obj2.setInitialized(true);
+ QCOMPARE(true, obj2.initialized());
+
+ MyGLWidget obj3;
+ // bool QGLWidget::autoBufferSwap()
+ // void QGLWidget::setAutoBufferSwap(bool)
+ obj3.setAutoBufferSwap(false);
+ QCOMPARE(false, obj3.autoBufferSwap());
+ obj3.setAutoBufferSwap(true);
+ QCOMPARE(true, obj3.autoBufferSwap());
+}
+
+#ifdef QT_BUILD_INTERNAL
+QT_BEGIN_NAMESPACE
+extern QGLFormat::OpenGLVersionFlags qOpenGLVersionFlagsFromString(const QString &versionString);
+QT_END_NAMESPACE
+#endif
+
+void tst_QGL::openGLVersionCheck()
+{
+#ifdef QT_BUILD_INTERNAL
+ if (!QGLFormat::hasOpenGL())
+ QSKIP("QGL not supported on this platform", SkipAll);
+
+ QString versionString;
+ QGLFormat::OpenGLVersionFlags expectedFlag;
+ QGLFormat::OpenGLVersionFlags versionFlag;
+
+ versionString = "1.1 Irix 6.5";
+ expectedFlag = QGLFormat::OpenGL_Version_1_1;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "1.2 Microsoft";
+ expectedFlag = QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "1.2.1";
+ expectedFlag = QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "1.3 NVIDIA";
+ expectedFlag = QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "1.4";
+ expectedFlag = QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "1.5 NVIDIA";
+ expectedFlag = QGLFormat::OpenGL_Version_1_5 | QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "2.0.2 NVIDIA 87.62";
+ expectedFlag = QGLFormat::OpenGL_Version_2_0 | QGLFormat::OpenGL_Version_1_5 | QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "2.1 NVIDIA";
+ expectedFlag = QGLFormat::OpenGL_Version_2_1 | QGLFormat::OpenGL_Version_2_0 | QGLFormat::OpenGL_Version_1_5 | QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "2.1";
+ expectedFlag = QGLFormat::OpenGL_Version_2_1 | QGLFormat::OpenGL_Version_2_0 | QGLFormat::OpenGL_Version_1_5 | QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "OpenGL ES-CM 1.0 ATI";
+ expectedFlag = QGLFormat::OpenGL_ES_Common_Version_1_0 | QGLFormat::OpenGL_ES_CommonLite_Version_1_0;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "OpenGL ES-CL 1.0 ATI";
+ expectedFlag = QGLFormat::OpenGL_ES_CommonLite_Version_1_0;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "OpenGL ES-CM 1.1 ATI";
+ expectedFlag = QGLFormat::OpenGL_ES_Common_Version_1_1 | QGLFormat::OpenGL_ES_CommonLite_Version_1_1 | QGLFormat::OpenGL_ES_Common_Version_1_0 | QGLFormat::OpenGL_ES_CommonLite_Version_1_0;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "OpenGL ES-CL 1.1 ATI";
+ expectedFlag = QGLFormat::OpenGL_ES_CommonLite_Version_1_1 | QGLFormat::OpenGL_ES_CommonLite_Version_1_0;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "OpenGL ES 2.0 ATI";
+ expectedFlag = QGLFormat::OpenGL_ES_Version_2_0;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ versionString = "3.0";
+ expectedFlag = QGLFormat::OpenGL_Version_3_0 | QGLFormat::OpenGL_Version_2_1 | QGLFormat::OpenGL_Version_2_0 | QGLFormat::OpenGL_Version_1_5 | QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
+ versionFlag = qOpenGLVersionFlagsFromString(versionString);
+ QCOMPARE(versionFlag, expectedFlag);
+
+ QGLWidget glWidget;
+ glWidget.show();
+ glWidget.makeCurrent();
+
+ // This is unfortunately the only test we can make on the actual openGLVersionFlags()
+ // However, the complicated parts are in openGLVersionFlags(const QString &versionString)
+ // tested above
+
+#if defined(QT_OPENGL_ES_1)
+ QVERIFY(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Common_Version_1_0);
+#elif defined(QT_OPENGL_ES_2)
+ QVERIFY(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0);
+#else
+ QVERIFY(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_1_1);
+#endif //defined(QT_OPENGL_ES_1)
+#endif //QT_BUILD_INTERNAL
+}
+
+static bool fuzzyComparePixels(const QRgb testPixel, const QRgb refPixel, const char* file, int line, int x = -1, int y = -1)
+{
+ static int maxFuzz = 1;
+ static bool maxFuzzSet = false;
+
+ // On 16 bpp systems, we need to allow for more fuzz:
+ if (!maxFuzzSet) {
+ maxFuzzSet = true;
+ if (appDefaultDepth() < 24)
+ maxFuzz = 32;
+ }
+
+ int redFuzz = qAbs(qRed(testPixel) - qRed(refPixel));
+ int greenFuzz = qAbs(qGreen(testPixel) - qGreen(refPixel));
+ int blueFuzz = qAbs(qBlue(testPixel) - qBlue(refPixel));
+ int alphaFuzz = qAbs(qAlpha(testPixel) - qAlpha(refPixel));
+
+ if (refPixel != 0 && testPixel == 0) {
+ QString msg;
+ if (x >= 0) {
+ msg = QString("Test pixel [%1, %2] is null (black) when it should be (%3,%4,%5,%6)")
+ .arg(x).arg(y)
+ .arg(qRed(refPixel)).arg(qGreen(refPixel)).arg(qBlue(refPixel)).arg(qAlpha(refPixel));
+ } else {
+ msg = QString("Test pixel is null (black) when it should be (%2,%3,%4,%5)")
+ .arg(qRed(refPixel)).arg(qGreen(refPixel)).arg(qBlue(refPixel)).arg(qAlpha(refPixel));
+ }
+
+ QTest::qFail(msg.toLatin1(), file, line);
+ return false;
+ }
+
+ if (redFuzz > maxFuzz || greenFuzz > maxFuzz || blueFuzz > maxFuzz || alphaFuzz > maxFuzz) {
+ QString msg;
+
+ if (x >= 0)
+ msg = QString("Pixel [%1,%2]: ").arg(x).arg(y);
+ else
+ msg = QString("Pixel ");
+
+ msg += QString("Max fuzz (%1) exceeded: (%2,%3,%4,%5) vs (%6,%7,%8,%9)")
+ .arg(maxFuzz)
+ .arg(qRed(testPixel)).arg(qGreen(testPixel)).arg(qBlue(testPixel)).arg(qAlpha(testPixel))
+ .arg(qRed(refPixel)).arg(qGreen(refPixel)).arg(qBlue(refPixel)).arg(qAlpha(refPixel));
+ QTest::qFail(msg.toLatin1(), file, line);
+ return false;
+ }
+ return true;
+}
+
+static void fuzzyCompareImages(const QImage &testImage, const QImage &referenceImage, const char* file, int line)
+{
+ QCOMPARE(testImage.width(), referenceImage.width());
+ QCOMPARE(testImage.height(), referenceImage.height());
+
+ for (int y = 0; y < testImage.height(); y++) {
+ for (int x = 0; x < testImage.width(); x++) {
+ if (!fuzzyComparePixels(testImage.pixel(x, y), referenceImage.pixel(x, y), file, line, x, y)) {
+ // Might as well save the images for easier debugging:
+ referenceImage.save("referenceImage.png");
+ testImage.save("testImage.png");
+ return;
+ }
+ }
+ }
+}
+
+#define QFUZZY_COMPARE_IMAGES(A,B) \
+ fuzzyCompareImages(A, B, __FILE__, __LINE__)
+
+#define QFUZZY_COMPARE_PIXELS(A,B) \
+ fuzzyComparePixels(A, B, __FILE__, __LINE__)
+
+class UnclippedWidget : public QWidget
+{
+public:
+ void paintEvent(QPaintEvent *)
+ {
+ QPainter p(this);
+ p.fillRect(rect().adjusted(-1000, -1000, 1000, 1000), Qt::black);
+ }
+};
+
+void tst_QGL::graphicsViewClipping()
+{
+ const int size = 64;
+ UnclippedWidget *widget = new UnclippedWidget;
+ widget->setFixedSize(size, size);
+
+ QGraphicsScene scene;
+
+ scene.addWidget(widget)->setPos(0, 0);
+
+ QGraphicsView view(&scene);
+ view.setBackgroundBrush(Qt::white);
+#ifdef Q_WS_QWS
+ view.setWindowFlags(Qt::FramelessWindowHint);
+#endif
+ view.resize(2*size, 2*size);
+
+ QGLWidget *viewport = new QGLWidget;
+ view.setViewport(viewport);
+ view.show();
+
+ if (!viewport->isValid())
+ return;
+
+ scene.setSceneRect(view.viewport()->rect());
+
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&view);
+#endif
+ QTest::qWait(500);
+
+ QImage image = viewport->grabFrameBuffer();
+ QImage expected = image;
+
+ QPainter p(&expected);
+ p.fillRect(expected.rect(), Qt::white);
+ p.fillRect(QRect(0, 0, size, size), Qt::black);
+ p.end();
+
+ QFUZZY_COMPARE_IMAGES(image, expected);
+}
+
+void tst_QGL::partialGLWidgetUpdates_data()
+{
+ QTest::addColumn<bool>("doubleBufferedContext");
+ QTest::addColumn<bool>("autoFillBackground");
+ QTest::addColumn<bool>("supportsPartialUpdates");
+
+ QTest::newRow("Double buffered context") << true << true << false;
+ QTest::newRow("Double buffered context without auto-fill background") << true << false << false;
+ QTest::newRow("Single buffered context") << false << true << false;
+ QTest::newRow("Single buffered context without auto-fill background") << false << false << true;
+}
+
+void tst_QGL::partialGLWidgetUpdates()
+{
+ if (!QGLFormat::hasOpenGL())
+ QSKIP("QGL not supported on this platform", SkipAll);
+
+ QFETCH(bool, doubleBufferedContext);
+ QFETCH(bool, autoFillBackground);
+ QFETCH(bool, supportsPartialUpdates);
+
+ class MyGLWidget : public QGLWidget
+ {
+ public:
+ QRegion paintEventRegion;
+ void paintEvent(QPaintEvent *e)
+ {
+ paintEventRegion = e->region();
+ }
+ };
+
+ QGLFormat format = QGLFormat::defaultFormat();
+ format.setDoubleBuffer(doubleBufferedContext);
+ QGLFormat::setDefaultFormat(format);
+
+ MyGLWidget widget;
+ widget.setFixedSize(150, 150);
+ widget.setAutoFillBackground(autoFillBackground);
+ widget.show();
+
+ QTest::qWait(200);
+
+ if (widget.format().doubleBuffer() != doubleBufferedContext)
+ QSKIP("Platform does not support requested format", SkipAll);
+
+ widget.paintEventRegion = QRegion();
+ widget.repaint(50, 50, 50, 50);
+
+ if (supportsPartialUpdates)
+ QCOMPARE(widget.paintEventRegion, QRegion(50, 50, 50, 50));
+ else
+ QCOMPARE(widget.paintEventRegion, QRegion(widget.rect()));
+}
+
+
+// This tests that rendering to a QGLPBuffer using QPainter works.
+void tst_QGL::glPBufferRendering()
+{
+ if (!QGLPixelBuffer::hasOpenGLPbuffers())
+ QSKIP("QGLPixelBuffer not supported on this platform", SkipSingle);
+
+ QGLPixelBuffer* pbuf = new QGLPixelBuffer(128, 128);
+
+ QPainter p;
+ bool begun = p.begin(pbuf);
+ QVERIFY(begun);
+
+ QPaintEngine::Type engineType = p.paintEngine()->type();
+ QVERIFY(engineType == QPaintEngine::OpenGL || engineType == QPaintEngine::OpenGL2);
+
+ p.fillRect(0, 0, 128, 128, Qt::red);
+ p.fillRect(32, 32, 64, 64, Qt::blue);
+ p.end();
+
+ QImage fb = pbuf->toImage();
+ delete pbuf;
+
+ QImage reference(128, 128, fb.format());
+ p.begin(&reference);
+ p.fillRect(0, 0, 128, 128, Qt::red);
+ p.fillRect(32, 32, 64, 64, Qt::blue);
+ p.end();
+
+ QFUZZY_COMPARE_IMAGES(fb, reference);
+}
+
+void tst_QGL::glWidgetWithAlpha()
+{
+ QGLWidget* w = new QGLWidget(QGLFormat(QGL::AlphaChannel));
+ w->show();
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(w);
+#endif
+
+ delete w;
+}
+
+
+void qt_opengl_draw_test_pattern(QPainter* painter, int width, int height)
+{
+ QPainterPath intersectingPath;
+ intersectingPath.moveTo(0, 0);
+ intersectingPath.lineTo(100, 0);
+ intersectingPath.lineTo(0, 100);
+ intersectingPath.lineTo(100, 100);
+ intersectingPath.closeSubpath();
+
+ QPainterPath trianglePath;
+ trianglePath.moveTo(50, 0);
+ trianglePath.lineTo(100, 100);
+ trianglePath.lineTo(0, 100);
+ trianglePath.closeSubpath();
+
+ painter->setTransform(QTransform()); // reset xform
+ painter->fillRect(-1, -1, width+2, height+2, Qt::red); // Background
+ painter->translate(14, 14);
+ painter->fillPath(intersectingPath, Qt::blue); // Test stencil buffer works
+ painter->translate(128, 0);
+ painter->setClipPath(trianglePath); // Test depth buffer works
+ painter->setTransform(QTransform()); // reset xform ready for fill
+ painter->fillRect(-1, -1, width+2, height+2, Qt::green);
+}
+
+void qt_opengl_check_test_pattern(const QImage& img)
+{
+ // As we're doing more than trivial painting, we can't just compare to
+ // an image rendered with raster. Instead, we sample at well-defined
+ // test-points:
+ QFUZZY_COMPARE_PIXELS(img.pixel(39, 64), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(89, 64), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(64, 39), QColor(Qt::blue).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(64, 89), QColor(Qt::blue).rgb());
+
+ QFUZZY_COMPARE_PIXELS(img.pixel(167, 39), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(217, 39), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(192, 64), QColor(Qt::green).rgb());
+}
+
+class GLWidget : public QGLWidget
+{
+public:
+ GLWidget(QWidget* p = 0)
+ : QGLWidget(p), beginOk(false), engineType(QPaintEngine::MaxUser) {}
+ bool beginOk;
+ QPaintEngine::Type engineType;
+ void paintGL()
+ {
+ QPainter p;
+ beginOk = p.begin(this);
+ QPaintEngine* pe = p.paintEngine();
+ engineType = pe->type();
+
+ qt_opengl_draw_test_pattern(&p, width(), height());
+
+ // No p.end() or swap buffers, should be done automatically
+ }
+
+};
+
+void tst_QGL::glWidgetRendering()
+{
+ GLWidget w;
+#ifdef Q_WS_QWS
+ w.setWindowFlags(Qt::FramelessWindowHint);
+#endif
+ w.resize(256, 128);
+ w.show();
+
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&w);
+#endif
+ QTest::qWait(200);
+
+ QVERIFY(w.beginOk);
+ QVERIFY(w.engineType == QPaintEngine::OpenGL || w.engineType == QPaintEngine::OpenGL2);
+
+ QImage fb = w.grabFrameBuffer(false);
+ qt_opengl_check_test_pattern(fb);
+}
+
+void tst_QGL::glFBOSimpleRendering()
+{
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
+ QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
+
+ QGLWidget glw;
+ glw.makeCurrent();
+
+ // No multisample with combined depth/stencil attachment:
+ QGLFramebufferObjectFormat fboFormat;
+ fboFormat.setAttachment(QGLFramebufferObject::NoAttachment);
+
+ QGLFramebufferObject *fbo = new QGLFramebufferObject(200, 100, fboFormat);
+
+ fbo->bind();
+
+ glClearColor(1.0, 0.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glFinish();
+
+ QImage fb = fbo->toImage().convertToFormat(QImage::Format_RGB32);
+ QImage reference(fb.size(), QImage::Format_RGB32);
+ reference.fill(0xffff0000);
+
+ QFUZZY_COMPARE_IMAGES(fb, reference);
+
+ delete fbo;
+}
+
+// NOTE: This tests that CombinedDepthStencil attachment works by assuming the
+// GL2 engine is being used and is implemented the same way as it was when
+// this autotest was written. If this is not the case, there may be some
+// false-positives: I.e. The test passes when either the depth or stencil
+// buffer is actually missing. But that's probably ok anyway.
+void tst_QGL::glFBORendering()
+{
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
+ QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
+
+ QGLWidget glw;
+ glw.makeCurrent();
+
+ // No multisample with combined depth/stencil attachment:
+ QGLFramebufferObjectFormat fboFormat;
+ fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+
+ // Don't complicate things by using NPOT:
+ QGLFramebufferObject *fbo = new QGLFramebufferObject(256, 128, fboFormat);
+
+ if (fbo->attachment() != QGLFramebufferObject::CombinedDepthStencil) {
+ delete fbo;
+ QSKIP("FBOs missing combined depth~stencil support", SkipSingle);
+ }
+
+ QPainter fboPainter;
+ bool painterBegun = fboPainter.begin(fbo);
+ QVERIFY(painterBegun);
+
+ qt_opengl_draw_test_pattern(&fboPainter, fbo->width(), fbo->height());
+
+ fboPainter.end();
+
+ QImage fb = fbo->toImage().convertToFormat(QImage::Format_RGB32);
+ delete fbo;
+
+ qt_opengl_check_test_pattern(fb);
+}
+
+
+// Tests multiple QPainters active on different FBOs at the same time, with
+// interleaving painting. Performance-wise, this is sub-optimal, but it still
+// has to work flawlessly
+void tst_QGL::multipleFBOInterleavedRendering()
+{
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
+ QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
+
+ QGLWidget glw;
+ glw.makeCurrent();
+
+ // No multisample with combined depth/stencil attachment:
+ QGLFramebufferObjectFormat fboFormat;
+ fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+
+ QGLFramebufferObject *fbo1 = new QGLFramebufferObject(256, 128, fboFormat);
+ QGLFramebufferObject *fbo2 = new QGLFramebufferObject(256, 128, fboFormat);
+ QGLFramebufferObject *fbo3 = new QGLFramebufferObject(256, 128, fboFormat);
+
+ if ( (fbo1->attachment() != QGLFramebufferObject::CombinedDepthStencil) ||
+ (fbo2->attachment() != QGLFramebufferObject::CombinedDepthStencil) ||
+ (fbo3->attachment() != QGLFramebufferObject::CombinedDepthStencil) )
+ {
+ delete fbo1;
+ delete fbo2;
+ delete fbo3;
+ QSKIP("FBOs missing combined depth~stencil support", SkipSingle);
+ }
+
+ QPainter fbo1Painter;
+ QPainter fbo2Painter;
+ QPainter fbo3Painter;
+
+ QVERIFY(fbo1Painter.begin(fbo1));
+ QVERIFY(fbo2Painter.begin(fbo2));
+ QVERIFY(fbo3Painter.begin(fbo3));
+
+ // Confirm we're using the GL2 engine, as interleaved rendering isn't supported
+ // on the GL1 engine:
+ if (fbo1Painter.paintEngine()->type() != QPaintEngine::OpenGL2)
+ QSKIP("Interleaved GL rendering requires OpenGL 2.0 or higher", SkipSingle);
+
+ QPainterPath intersectingPath;
+ intersectingPath.moveTo(0, 0);
+ intersectingPath.lineTo(100, 0);
+ intersectingPath.lineTo(0, 100);
+ intersectingPath.lineTo(100, 100);
+ intersectingPath.closeSubpath();
+
+ QPainterPath trianglePath;
+ trianglePath.moveTo(50, 0);
+ trianglePath.lineTo(100, 100);
+ trianglePath.lineTo(0, 100);
+ trianglePath.closeSubpath();
+
+ fbo1Painter.fillRect(0, 0, fbo1->width(), fbo1->height(), Qt::red); // Background
+ fbo2Painter.fillRect(0, 0, fbo2->width(), fbo2->height(), Qt::green); // Background
+ fbo3Painter.fillRect(0, 0, fbo3->width(), fbo3->height(), Qt::blue); // Background
+
+ fbo1Painter.translate(14, 14);
+ fbo2Painter.translate(14, 14);
+ fbo3Painter.translate(14, 14);
+
+ fbo1Painter.fillPath(intersectingPath, Qt::blue); // Test stencil buffer works
+ fbo2Painter.fillPath(intersectingPath, Qt::red); // Test stencil buffer works
+ fbo3Painter.fillPath(intersectingPath, Qt::green); // Test stencil buffer works
+
+ fbo1Painter.translate(128, 0);
+ fbo2Painter.translate(128, 0);
+ fbo3Painter.translate(128, 0);
+
+ fbo1Painter.setClipPath(trianglePath);
+ fbo2Painter.setClipPath(trianglePath);
+ fbo3Painter.setClipPath(trianglePath);
+
+ fbo1Painter.setTransform(QTransform()); // reset xform
+ fbo2Painter.setTransform(QTransform()); // reset xform
+ fbo3Painter.setTransform(QTransform()); // reset xform
+
+ fbo1Painter.fillRect(0, 0, fbo1->width(), fbo1->height(), Qt::green);
+ fbo2Painter.fillRect(0, 0, fbo2->width(), fbo2->height(), Qt::blue);
+ fbo3Painter.fillRect(0, 0, fbo3->width(), fbo3->height(), Qt::red);
+
+ fbo1Painter.end();
+ fbo2Painter.end();
+ fbo3Painter.end();
+
+ QImage fb1 = fbo1->toImage().convertToFormat(QImage::Format_RGB32);
+ QImage fb2 = fbo2->toImage().convertToFormat(QImage::Format_RGB32);
+ QImage fb3 = fbo3->toImage().convertToFormat(QImage::Format_RGB32);
+ delete fbo1;
+ delete fbo2;
+ delete fbo3;
+
+ // As we're doing more than trivial painting, we can't just compare to
+ // an image rendered with raster. Instead, we sample at well-defined
+ // test-points:
+ QFUZZY_COMPARE_PIXELS(fb1.pixel(39, 64), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(fb1.pixel(89, 64), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(fb1.pixel(64, 39), QColor(Qt::blue).rgb());
+ QFUZZY_COMPARE_PIXELS(fb1.pixel(64, 89), QColor(Qt::blue).rgb());
+ QFUZZY_COMPARE_PIXELS(fb1.pixel(167, 39), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(fb1.pixel(217, 39), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(fb1.pixel(192, 64), QColor(Qt::green).rgb());
+
+ QFUZZY_COMPARE_PIXELS(fb2.pixel(39, 64), QColor(Qt::green).rgb());
+ QFUZZY_COMPARE_PIXELS(fb2.pixel(89, 64), QColor(Qt::green).rgb());
+ QFUZZY_COMPARE_PIXELS(fb2.pixel(64, 39), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(fb2.pixel(64, 89), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(fb2.pixel(167, 39), QColor(Qt::green).rgb());
+ QFUZZY_COMPARE_PIXELS(fb2.pixel(217, 39), QColor(Qt::green).rgb());
+ QFUZZY_COMPARE_PIXELS(fb2.pixel(192, 64), QColor(Qt::blue).rgb());
+
+ QFUZZY_COMPARE_PIXELS(fb3.pixel(39, 64), QColor(Qt::blue).rgb());
+ QFUZZY_COMPARE_PIXELS(fb3.pixel(89, 64), QColor(Qt::blue).rgb());
+ QFUZZY_COMPARE_PIXELS(fb3.pixel(64, 39), QColor(Qt::green).rgb());
+ QFUZZY_COMPARE_PIXELS(fb3.pixel(64, 89), QColor(Qt::green).rgb());
+ QFUZZY_COMPARE_PIXELS(fb3.pixel(167, 39), QColor(Qt::blue).rgb());
+ QFUZZY_COMPARE_PIXELS(fb3.pixel(217, 39), QColor(Qt::blue).rgb());
+ QFUZZY_COMPARE_PIXELS(fb3.pixel(192, 64), QColor(Qt::red).rgb());
+}
+
+class FBOUseInGLWidget : public QGLWidget
+{
+public:
+ bool widgetPainterBeginOk;
+ bool fboPainterBeginOk;
+ QImage fboImage;
+protected:
+ void paintEvent(QPaintEvent*)
+ {
+ QPainter widgetPainter;
+ widgetPainterBeginOk = widgetPainter.begin(this);
+ QGLFramebufferObjectFormat fboFormat;
+ fboFormat.setAttachment(QGLFramebufferObject::NoAttachment);
+ QGLFramebufferObject *fbo = new QGLFramebufferObject(100, 100, fboFormat);
+
+ QPainter fboPainter;
+ fboPainterBeginOk = fboPainter.begin(fbo);
+ fboPainter.fillRect(-1, -1, 130, 130, Qt::red);
+ fboPainter.end();
+ fboImage = fbo->toImage();
+
+ widgetPainter.fillRect(-1, -1, width()+2, width()+2, Qt::blue);
+
+ delete fbo;
+ }
+
+};
+
+void tst_QGL::glFBOUseInGLWidget()
+{
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
+ QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
+
+ FBOUseInGLWidget w;
+#ifdef Q_WS_QWS
+ w.setWindowFlags(Qt::FramelessWindowHint);
+#endif
+ w.resize(100, 100);
+ w.show();
+
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&w);
+#endif
+ QTest::qWait(200);
+
+ QVERIFY(w.widgetPainterBeginOk);
+ QVERIFY(w.fboPainterBeginOk);
+
+ QImage widgetFB = w.grabFrameBuffer(false);
+ QImage widgetReference(widgetFB.size(), widgetFB.format());
+ widgetReference.fill(0xff0000ff);
+ QFUZZY_COMPARE_IMAGES(widgetFB, widgetReference);
+
+ QImage fboReference(w.fboImage.size(), w.fboImage.format());
+ fboReference.fill(0xffff0000);
+ QFUZZY_COMPARE_IMAGES(w.fboImage, fboReference);
+}
+
+void tst_QGL::glWidgetReparent()
+{
+ // Try it as a top-level first:
+ GLWidget *widget = new GLWidget;
+ widget->setGeometry(0, 0, 200, 30);
+ widget->show();
+
+ QWidget grandParentWidget;
+ grandParentWidget.setPalette(Qt::blue);
+ QVBoxLayout grandParentLayout(&grandParentWidget);
+
+ QWidget parentWidget(&grandParentWidget);
+ grandParentLayout.addWidget(&parentWidget);
+ parentWidget.setPalette(Qt::green);
+ parentWidget.setAutoFillBackground(true);
+ QVBoxLayout parentLayout(&parentWidget);
+
+ grandParentWidget.setGeometry(0, 100, 200, 200);
+ grandParentWidget.show();
+
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(widget);
+ qt_x11_wait_for_window_manager(&parentWidget);
+#endif
+ QTest::qWait(200);
+
+ QVERIFY(parentWidget.children().count() == 1); // The layout
+
+ // Now both widgets should be created & shown, time to re-parent:
+ parentLayout.addWidget(widget);
+
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&parentWidget);
+#endif
+ QTest::qWait(200);
+
+ QVERIFY(parentWidget.children().count() == 2); // Layout & glwidget
+ QVERIFY(parentWidget.children().contains(widget));
+ QVERIFY(widget->height() > 30);
+
+ delete widget;
+
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&parentWidget);
+#endif
+ QTest::qWait(200);
+
+ QVERIFY(parentWidget.children().count() == 1); // The layout
+
+ // Now do pretty much the same thing, but don't show the
+ // widget first:
+ widget = new GLWidget;
+ parentLayout.addWidget(widget);
+
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&parentWidget);
+#endif
+ QTest::qWait(200);
+
+ QVERIFY(parentWidget.children().count() == 2); // Layout & glwidget
+ QVERIFY(parentWidget.children().contains(widget));
+ QVERIFY(widget->height() > 30);
+
+ delete widget;
+}
+
+class RenderPixmapWidget : public QGLWidget
+{
+protected:
+ void initializeGL() {
+ // Set some gl state:
+ glClearColor(1.0, 0.0, 0.0, 1.0);
+ }
+
+ void paintGL() {
+ glClear(GL_COLOR_BUFFER_BIT);
+ }
+};
+
+void tst_QGL::glWidgetRenderPixmap()
+{
+ RenderPixmapWidget *w = new RenderPixmapWidget;
+
+ QPixmap pm = w->renderPixmap(100, 100, false);
+
+ delete w;
+
+ QImage fb = pm.toImage().convertToFormat(QImage::Format_RGB32);
+ QImage reference(fb.size(), QImage::Format_RGB32);
+ reference.fill(0xffff0000);
+
+#if defined(QGL_EGL) && !defined(Q_WS_X11)
+ QSKIP("renderPixmap() not yet supported under EGL on your platform", SkipAll);
+#endif
+
+ QFUZZY_COMPARE_IMAGES(fb, reference);
+}
+
+class ColormapExtended : public QGLColormap
+{
+public:
+ ColormapExtended() {}
+
+ Qt::HANDLE handle() { return QGLColormap::handle(); }
+ void setHandle(Qt::HANDLE handle) { QGLColormap::setHandle(handle); }
+};
+
+void tst_QGL::colormap()
+{
+ // Check the properties of the default empty colormap.
+ QGLColormap cmap1;
+ QVERIFY(cmap1.isEmpty());
+ QCOMPARE(cmap1.size(), 0);
+ QVERIFY(cmap1.entryRgb(0) == 0);
+ QVERIFY(cmap1.entryRgb(-1) == 0);
+ QVERIFY(cmap1.entryRgb(100) == 0);
+ QVERIFY(!cmap1.entryColor(0).isValid());
+ QVERIFY(!cmap1.entryColor(-1).isValid());
+ QVERIFY(!cmap1.entryColor(100).isValid());
+ QCOMPARE(cmap1.find(qRgb(255, 0, 0)), -1);
+ QCOMPARE(cmap1.findNearest(qRgb(255, 0, 0)), -1);
+
+ // Set an entry and re-test.
+ cmap1.setEntry(56, qRgb(255, 0, 0));
+ // The colormap is still considered "empty" even though it
+ // has entries in it now. The isEmpty() method is used to
+ // detect when the colormap is in use by a GL widget,
+ // not to detect when it is empty!
+ QVERIFY(cmap1.isEmpty());
+ QCOMPARE(cmap1.size(), 256);
+ QVERIFY(cmap1.entryRgb(0) == 0);
+ QVERIFY(cmap1.entryColor(0) == QColor(0, 0, 0, 255));
+ QVERIFY(cmap1.entryRgb(56) == qRgb(255, 0, 0));
+ QVERIFY(cmap1.entryColor(56) == QColor(255, 0, 0, 255));
+ QCOMPARE(cmap1.find(qRgb(255, 0, 0)), 56);
+ QCOMPARE(cmap1.findNearest(qRgb(255, 0, 0)), 56);
+
+ // Set some more entries.
+ static QRgb const colors[] = {
+ qRgb(255, 0, 0),
+ qRgb(0, 255, 0),
+ qRgb(255, 255, 255),
+ qRgb(0, 0, 255),
+ qRgb(0, 0, 0)
+ };
+ cmap1.setEntry(57, QColor(0, 255, 0));
+ cmap1.setEntries(3, colors + 2, 58);
+ cmap1.setEntries(5, colors, 251);
+ int idx;
+ for (idx = 0; idx < 5; ++idx) {
+ QVERIFY(cmap1.entryRgb(56 + idx) == colors[idx]);
+ QVERIFY(cmap1.entryColor(56 + idx) == QColor(colors[idx]));
+ QVERIFY(cmap1.entryRgb(251 + idx) == colors[idx]);
+ QVERIFY(cmap1.entryColor(251 + idx) == QColor(colors[idx]));
+ }
+ QCOMPARE(cmap1.size(), 256);
+
+ // Perform color lookups.
+ QCOMPARE(cmap1.find(qRgb(255, 0, 0)), 56);
+ QCOMPARE(cmap1.find(qRgb(0, 0, 0)), 60); // Actually finds 0, 0, 0, 255.
+ QCOMPARE(cmap1.find(qRgba(0, 0, 0, 0)), 0);
+ QCOMPARE(cmap1.find(qRgb(0, 255, 0)), 57);
+ QCOMPARE(cmap1.find(qRgb(255, 255, 255)), 58);
+ QCOMPARE(cmap1.find(qRgb(0, 0, 255)), 59);
+ QCOMPARE(cmap1.find(qRgb(140, 0, 0)), -1);
+ QCOMPARE(cmap1.find(qRgb(0, 140, 0)), -1);
+ QCOMPARE(cmap1.find(qRgb(0, 0, 140)), -1);
+ QCOMPARE(cmap1.find(qRgb(64, 0, 0)), -1);
+ QCOMPARE(cmap1.find(qRgb(0, 64, 0)), -1);
+ QCOMPARE(cmap1.find(qRgb(0, 0, 64)), -1);
+ QCOMPARE(cmap1.findNearest(qRgb(255, 0, 0)), 56);
+ QCOMPARE(cmap1.findNearest(qRgb(0, 0, 0)), 60);
+ QCOMPARE(cmap1.findNearest(qRgba(0, 0, 0, 0)), 0);
+ QCOMPARE(cmap1.findNearest(qRgb(0, 255, 0)), 57);
+ QCOMPARE(cmap1.findNearest(qRgb(255, 255, 255)), 58);
+ QCOMPARE(cmap1.findNearest(qRgb(0, 0, 255)), 59);
+ QCOMPARE(cmap1.findNearest(qRgb(140, 0, 0)), 56);
+ QCOMPARE(cmap1.findNearest(qRgb(0, 140, 0)), 57);
+ QCOMPARE(cmap1.findNearest(qRgb(0, 0, 140)), 59);
+ QCOMPARE(cmap1.findNearest(qRgb(64, 0, 0)), 0);
+ QCOMPARE(cmap1.findNearest(qRgb(0, 64, 0)), 0);
+ QCOMPARE(cmap1.findNearest(qRgb(0, 0, 64)), 0);
+
+ // Make some copies of the colormap and check that they are the same.
+ QGLColormap cmap2(cmap1);
+ QGLColormap cmap3;
+ cmap3 = cmap1;
+ QVERIFY(cmap2.isEmpty());
+ QVERIFY(cmap3.isEmpty());
+ QCOMPARE(cmap2.size(), 256);
+ QCOMPARE(cmap3.size(), 256);
+ for (idx = 0; idx < 256; ++idx) {
+ QCOMPARE(cmap1.entryRgb(idx), cmap2.entryRgb(idx));
+ QCOMPARE(cmap1.entryRgb(idx), cmap3.entryRgb(idx));
+ }
+
+ // Modify an entry in one of the copies and recheck the original.
+ cmap2.setEntry(45, qRgb(255, 0, 0));
+ for (idx = 0; idx < 256; ++idx) {
+ if (idx != 45)
+ QCOMPARE(cmap1.entryRgb(idx), cmap2.entryRgb(idx));
+ else
+ QCOMPARE(cmap2.entryRgb(45), qRgb(255, 0, 0));
+ QCOMPARE(cmap1.entryRgb(idx), cmap3.entryRgb(idx));
+ }
+
+ // Check that setting the handle will cause isEmpty() to work right.
+ ColormapExtended cmap4;
+ cmap4.setEntry(56, qRgb(255, 0, 0));
+ QVERIFY(cmap4.isEmpty());
+ QCOMPARE(cmap4.size(), 256);
+ cmap4.setHandle(Qt::HANDLE(42));
+ QVERIFY(cmap4.handle() == Qt::HANDLE(42));
+ QVERIFY(!cmap4.isEmpty());
+ QCOMPARE(cmap4.size(), 256);
+}
+
+#ifndef QT_OPENGL_ES
+#define DEFAULT_FORMAT GL_RGBA8
+#else
+#define DEFAULT_FORMAT GL_RGBA
+#endif
+
+#ifndef GL_TEXTURE_3D
+#define GL_TEXTURE_3D 0x806F
+#endif
+
+#ifndef GL_RGB16
+#define GL_RGB16 0x8054
+#endif
+
+void tst_QGL::fboFormat()
+{
+ // Check the initial conditions.
+ QGLFramebufferObjectFormat format1;
+ QCOMPARE(format1.samples(), 0);
+ QVERIFY(format1.attachment() == QGLFramebufferObject::NoAttachment);
+ QCOMPARE(int(format1.textureTarget()), int(GL_TEXTURE_2D));
+ QCOMPARE(int(format1.internalTextureFormat()), int(DEFAULT_FORMAT));
+
+ // Modify the values and re-check.
+ format1.setSamples(8);
+ format1.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+ format1.setTextureTarget(GL_TEXTURE_3D);
+ format1.setInternalTextureFormat(GL_RGB16);
+ QCOMPARE(format1.samples(), 8);
+ QVERIFY(format1.attachment() == QGLFramebufferObject::CombinedDepthStencil);
+ QCOMPARE(int(format1.textureTarget()), int(GL_TEXTURE_3D));
+ QCOMPARE(int(format1.internalTextureFormat()), int(GL_RGB16));
+
+ // Make copies and check that they are the same.
+ QGLFramebufferObjectFormat format2(format1);
+ QGLFramebufferObjectFormat format3;
+ QCOMPARE(format2.samples(), 8);
+ QVERIFY(format2.attachment() == QGLFramebufferObject::CombinedDepthStencil);
+ QCOMPARE(int(format2.textureTarget()), int(GL_TEXTURE_3D));
+ QCOMPARE(int(format2.internalTextureFormat()), int(GL_RGB16));
+ format3 = format1;
+ QCOMPARE(format3.samples(), 8);
+ QVERIFY(format3.attachment() == QGLFramebufferObject::CombinedDepthStencil);
+ QCOMPARE(int(format3.textureTarget()), int(GL_TEXTURE_3D));
+ QCOMPARE(int(format3.internalTextureFormat()), int(GL_RGB16));
+
+ // Modify the copies and check that the original is unchanged.
+ format2.setSamples(9);
+ format3.setTextureTarget(GL_TEXTURE_2D);
+ QCOMPARE(format1.samples(), 8);
+ QVERIFY(format1.attachment() == QGLFramebufferObject::CombinedDepthStencil);
+ QCOMPARE(int(format1.textureTarget()), int(GL_TEXTURE_3D));
+ QCOMPARE(int(format1.internalTextureFormat()), int(GL_RGB16));
+
+ // operator== and operator!= for QGLFramebufferObjectFormat.
+ QGLFramebufferObjectFormat format1c;
+ QGLFramebufferObjectFormat format2c;
+
+ QVERIFY(format1c == format2c);
+ QVERIFY(!(format1c != format2c));
+ format1c.setSamples(8);
+ QVERIFY(!(format1c == format2c));
+ QVERIFY(format1c != format2c);
+ format2c.setSamples(8);
+ QVERIFY(format1c == format2c);
+ QVERIFY(!(format1c != format2c));
+
+ format1c.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+ QVERIFY(!(format1c == format2c));
+ QVERIFY(format1c != format2c);
+ format2c.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+ QVERIFY(format1c == format2c);
+ QVERIFY(!(format1c != format2c));
+
+ format1c.setTextureTarget(GL_TEXTURE_3D);
+ QVERIFY(!(format1c == format2c));
+ QVERIFY(format1c != format2c);
+ format2c.setTextureTarget(GL_TEXTURE_3D);
+ QVERIFY(format1c == format2c);
+ QVERIFY(!(format1c != format2c));
+
+ format1c.setInternalTextureFormat(GL_RGB16);
+ QVERIFY(!(format1c == format2c));
+ QVERIFY(format1c != format2c);
+ format2c.setInternalTextureFormat(GL_RGB16);
+ QVERIFY(format1c == format2c);
+ QVERIFY(!(format1c != format2c));
+
+ QGLFramebufferObjectFormat format3c(format1c);
+ QGLFramebufferObjectFormat format4c;
+ QVERIFY(format1c == format3c);
+ QVERIFY(!(format1c != format3c));
+ format3c.setInternalTextureFormat(DEFAULT_FORMAT);
+ QVERIFY(!(format1c == format3c));
+ QVERIFY(format1c != format3c);
+
+ format4c = format1c;
+ QVERIFY(format1c == format4c);
+ QVERIFY(!(format1c != format4c));
+ format4c.setInternalTextureFormat(DEFAULT_FORMAT);
+ QVERIFY(!(format1c == format4c));
+ QVERIFY(format1c != format4c);
+}
+
+void tst_QGL::testDontCrashOnDanglingResources()
+{
+ // We have a number of Q_GLOBAL_STATICS inside the QtOpenGL
+ // library. This test is verify that we don't crash as a result of
+ // them calling into libgl on application shutdown.
+ QWidget *widget = new UnclippedWidget();
+ widget->show();
+ qApp->processEvents();
+ widget->hide();
+}
+
+class ReplaceClippingGLWidget : public QGLWidget
+{
+public:
+ void paint(QPainter *painter)
+ {
+ painter->fillRect(rect(), Qt::white);
+
+ QPainterPath path;
+ path.addRect(0, 0, 100, 100);
+ path.addRect(50, 50, 100, 100);
+
+ painter->setClipRect(0, 0, 150, 150);
+ painter->fillPath(path, Qt::red);
+
+ painter->translate(150, 150);
+ painter->setClipRect(0, 0, 150, 150);
+ painter->fillPath(path, Qt::red);
+ }
+
+protected:
+ void paintEvent(QPaintEvent*)
+ {
+ // clear the stencil with junk
+ glStencilMask(0xFFFF);
+ glClearStencil(0xFFFF);
+ glDisable(GL_STENCIL_TEST);
+ glDisable(GL_SCISSOR_TEST);
+ glClear(GL_STENCIL_BUFFER_BIT);
+
+ QPainter painter(this);
+ paint(&painter);
+ }
+};
+
+void tst_QGL::replaceClipping()
+{
+ ReplaceClippingGLWidget glw;
+#ifdef Q_WS_QWS
+ glw.setWindowFlags(Qt::FramelessWindowHint);
+#endif
+ glw.resize(300, 300);
+ glw.show();
+
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&glw);
+#endif
+ QTest::qWait(200);
+
+ QImage reference(300, 300, QImage::Format_RGB32);
+ QPainter referencePainter(&reference);
+ glw.paint(&referencePainter);
+ referencePainter.end();
+
+ const QImage widgetFB = glw.grabFrameBuffer(false).convertToFormat(QImage::Format_RGB32);
+
+ // Sample pixels in a grid pattern which avoids false failures due to
+ // off-by-one pixel errors on some buggy GL implementations
+ for (int x = 25; x < reference.width(); x += 50) {
+ for (int y = 25; y < reference.width(); y += 50) {
+ QFUZZY_COMPARE_PIXELS(widgetFB.pixel(x, y), reference.pixel(x, y));
+ }
+ }
+}
+
+class ClipTestGLWidget : public QGLWidget
+{
+public:
+ void paint(QPainter *painter)
+ {
+ painter->fillRect(-1, -1, width()+2, height()+2, Qt::white);
+ painter->setClipRect(10, 10, width()-20, height()-20);
+ painter->fillRect(rect(), Qt::cyan);
+
+ painter->save();
+ painter->setClipRect(10, 10, 100, 100, Qt::IntersectClip);
+
+ painter->fillRect(rect(), Qt::blue);
+
+ painter->save();
+ painter->setClipRect(10, 10, 50, 50, Qt::IntersectClip);
+ painter->fillRect(rect(), Qt::red);
+ painter->restore();
+ painter->fillRect(0, 0, 40, 40, Qt::white);
+ painter->save();
+
+ painter->setClipRect(0, 0, 35, 35, Qt::IntersectClip);
+ painter->fillRect(rect(), Qt::black);
+ painter->restore();
+
+ painter->fillRect(0, 0, 30, 30, Qt::magenta);
+
+ painter->save();
+ painter->setClipRect(60, 10, 50, 50, Qt::ReplaceClip);
+ painter->fillRect(rect(), Qt::green);
+ painter->restore();
+
+ painter->restore();
+
+ painter->translate(100, 100);
+
+ {
+ QPainterPath path;
+ path.addRect(10, 10, 100, 100);
+ path.addRect(10, 10, 10, 10);
+ painter->setClipPath(path, Qt::IntersectClip);
+ }
+
+ painter->fillRect(rect(), Qt::blue);
+
+ painter->save();
+ {
+ QPainterPath path;
+ path.addRect(10, 10, 50, 50);
+ path.addRect(10, 10, 10, 10);
+ painter->setClipPath(path, Qt::IntersectClip);
+ }
+ painter->fillRect(rect(), Qt::red);
+ painter->restore();
+ painter->fillRect(0, 0, 40, 40, Qt::white);
+ painter->save();
+
+ {
+ QPainterPath path;
+ path.addRect(0, 0, 35, 35);
+ path.addRect(10, 10, 10, 10);
+ painter->setClipPath(path, Qt::IntersectClip);
+ }
+ painter->fillRect(rect(), Qt::black);
+ painter->restore();
+
+ painter->fillRect(0, 0, 30, 30, Qt::magenta);
+
+ painter->save();
+ {
+ QPainterPath path;
+ path.addRect(60, 10, 50, 50);
+ path.addRect(10, 10, 10, 10);
+ painter->setClipPath(path, Qt::ReplaceClip);
+ }
+ painter->fillRect(rect(), Qt::green);
+ painter->restore();
+ }
+
+protected:
+ void paintEvent(QPaintEvent*)
+ {
+ QPainter painter(this);
+ paint(&painter);
+ }
+};
+
+void tst_QGL::clipTest()
+{
+ ClipTestGLWidget glw;
+#ifdef Q_WS_QWS
+ glw.setWindowFlags(Qt::FramelessWindowHint);
+#endif
+ glw.resize(220, 220);
+ glw.show();
+
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&glw);
+#endif
+ QTest::qWait(200);
+
+ QImage reference(glw.size(), QImage::Format_RGB32);
+ QPainter referencePainter(&reference);
+ glw.paint(&referencePainter);
+ referencePainter.end();
+
+ const QImage widgetFB = glw.grabFrameBuffer(false).convertToFormat(QImage::Format_RGB32);
+
+ // Sample pixels in a grid pattern which avoids false failures due to
+ // off-by-one pixel errors on some buggy GL implementations
+ for (int x = 2; x < reference.width(); x += 5) {
+ for (int y = 2; y < reference.height(); y += 5) {
+ QFUZZY_COMPARE_PIXELS(widgetFB.pixel(x, y), reference.pixel(x, y));
+ }
+ }
+}
+
+void tst_QGL::destroyFBOAfterContext()
+{
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
+ QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
+
+ QGLWidget *glw = new QGLWidget();
+ glw->makeCurrent();
+
+ // No multisample with combined depth/stencil attachment:
+ QGLFramebufferObjectFormat fboFormat;
+ fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+
+ // Don't complicate things by using NPOT:
+ QGLFramebufferObject *fbo = new QGLFramebufferObject(256, 128, fboFormat);
+
+ // The handle should be valid until the context is destroyed.
+ QVERIFY(fbo->handle() != 0);
+ QVERIFY(fbo->isValid());
+
+ delete glw;
+
+ // The handle should now be zero.
+ QVERIFY(fbo->handle() == 0);
+ QVERIFY(!fbo->isValid());
+
+ delete fbo;
+}
+
+#ifdef QT_BUILD_INTERNAL
+
+class tst_QGLResource
+{
+public:
+ tst_QGLResource(const QGLContext * = 0) {}
+ ~tst_QGLResource() { ++deletions; }
+
+ static int deletions;
+};
+
+int tst_QGLResource::deletions = 0;
+
+#ifdef TODO
+Q_GLOBAL_STATIC(QOpenGLContextGroupResource<tst_QGLResource>, qt_shared_test)
+#endif //TODO
+#endif
+
+void tst_QGL::shareRegister()
+{
+#ifdef TODO
+#ifdef QT_BUILD_INTERNAL
+ // Create a context.
+ QGLWidget *glw1 = new QGLWidget();
+ glw1->makeCurrent();
+
+ // Nothing should be sharing with glw1's context yet.
+ QVERIFY(!glw1->isSharing());
+
+ // Create a guard for the first context.
+ QOpenGLSharedResourceGuard guard(glw1->context()->contextHandle());
+ QVERIFY(guard.id() == 0);
+ guard.setId(3);
+ QVERIFY(guard.id() == 3);
+
+ // Request a tst_QGLResource object for the first context.
+ tst_QGLResource *res1 = qt_shared_test()->value(glw1->context()->contextHandle());
+ QVERIFY(res1);
+ QVERIFY(qt_shared_test()->value(glw1->context()->contextHandle()) == res1);
+
+ // Create another context that shares with the first.
+ QVERIFY(!glw1->isSharing());
+ QGLWidget *glw2 = new QGLWidget(0, glw1);
+ if (!glw2->isSharing()) {
+ delete glw2;
+ delete glw1;
+ QSKIP("Context sharing is not supported", SkipSingle);
+ }
+ QVERIFY(glw1->isSharing());
+ QVERIFY(glw1->context() != glw2->context());
+
+ // Check that the first context's resource is also on the second.
+ QVERIFY(qt_shared_test()->value(glw1->context()) == res1);
+ QVERIFY(qt_shared_test()->value(glw2->context()) == res1);
+
+ // Guard should still be the same.
+ QVERIFY(guard.context() == glw1->context());
+ QVERIFY(guard.id() == 3);
+
+ // Check the sharing relationships.
+ QVERIFY(QGLContext::areSharing(glw1->context(), glw1->context()));
+ QVERIFY(QGLContext::areSharing(glw2->context(), glw2->context()));
+ QVERIFY(QGLContext::areSharing(glw1->context(), glw2->context()));
+ QVERIFY(QGLContext::areSharing(glw2->context(), glw1->context()));
+ QVERIFY(!QGLContext::areSharing(0, glw2->context()));
+ QVERIFY(!QGLContext::areSharing(glw1->context(), 0));
+ QVERIFY(!QGLContext::areSharing(0, 0));
+
+ // Create a third context, not sharing with the others.
+ QGLWidget *glw3 = new QGLWidget();
+ QVERIFY(!glw3->isSharing());
+
+ // Create a guard on the standalone context.
+ QGLSharedResourceGuard guard3(glw3->context());
+ guard3.setId(5);
+
+ // Request a resource to the third context.
+ tst_QGLResource *res3 = qt_shared_test()->value(glw3->context());
+ QVERIFY(res3);
+ QVERIFY(qt_shared_test()->value(glw1->context()) == res1);
+ QVERIFY(qt_shared_test()->value(glw2->context()) == res1);
+ QVERIFY(qt_shared_test()->value(glw3->context()) == res3);
+
+ // Check the sharing relationships again.
+ QVERIFY(QGLContext::areSharing(glw1->context(), glw1->context()));
+ QVERIFY(QGLContext::areSharing(glw2->context(), glw2->context()));
+ QVERIFY(QGLContext::areSharing(glw1->context(), glw2->context()));
+ QVERIFY(QGLContext::areSharing(glw2->context(), glw1->context()));
+ QVERIFY(!QGLContext::areSharing(glw1->context(), glw3->context()));
+ QVERIFY(!QGLContext::areSharing(glw2->context(), glw3->context()));
+ QVERIFY(!QGLContext::areSharing(glw3->context(), glw1->context()));
+ QVERIFY(!QGLContext::areSharing(glw3->context(), glw2->context()));
+ QVERIFY(QGLContext::areSharing(glw3->context(), glw3->context()));
+ QVERIFY(!QGLContext::areSharing(0, glw2->context()));
+ QVERIFY(!QGLContext::areSharing(glw1->context(), 0));
+ QVERIFY(!QGLContext::areSharing(0, glw3->context()));
+ QVERIFY(!QGLContext::areSharing(glw3->context(), 0));
+ QVERIFY(!QGLContext::areSharing(0, 0));
+
+ // Shared guard should still be the same.
+ QVERIFY(guard.context() == glw1->context());
+ QVERIFY(guard.id() == 3);
+
+ // Delete the first context.
+ delete glw1;
+
+ // The second context should no longer register as sharing.
+ QVERIFY(!glw2->isSharing());
+
+ // The first context's resource should transfer to the second context.
+ QCOMPARE(tst_QGLResource::deletions, 0);
+ QVERIFY(qt_shared_test()->value(glw2->context()) == res1);
+ QVERIFY(qt_shared_test()->value(glw3->context()) == res3);
+
+ // Shared guard should now be the second context, with the id the same.
+ QVERIFY(guard.context() == glw2->context());
+ QVERIFY(guard.id() == 3);
+ QVERIFY(guard3.context() == glw3->context());
+ QVERIFY(guard3.id() == 5);
+
+ // Clean up and check that the resources are properly deleted.
+ delete glw2;
+ QCOMPARE(tst_QGLResource::deletions, 1);
+ delete glw3;
+ QCOMPARE(tst_QGLResource::deletions, 2);
+
+ // Guards should now be null and the id zero.
+ QVERIFY(guard.context() == 0);
+ QVERIFY(guard.id() == 0);
+ QVERIFY(guard3.context() == 0);
+ QVERIFY(guard3.id() == 0);
+#endif
+#endif //TODO
+}
+
+// Tests QGLContext::bindTexture with default options
+void tst_QGL::qglContextDefaultBindTexture()
+{
+#ifdef QT_BUILD_INTERNAL
+ QGLWidget w;
+ w.makeCurrent();
+ QGLContext *ctx = const_cast<QGLContext*>(w.context());
+
+ QImage *boundImage = new QImage(256, 256, QImage::Format_RGB32);
+ boundImage->fill(0xFFFFFFFF);
+ QPixmap *boundPixmap = new QPixmap(256, 256);
+ boundPixmap->fill(Qt::red);
+
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+
+ GLuint boundImageTextureId = ctx->bindTexture(*boundImage);
+ GLuint boundPixmapTextureId = ctx->bindTexture(*boundPixmap);
+
+ // Make sure the image & pixmap have been added to the cache:
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ // Make sure the image & pixmap have the is_cached flag set:
+ QVERIFY(QImagePixmapCleanupHooks::isImageCached(*boundImage));
+ QVERIFY(QImagePixmapCleanupHooks::isPixmapCached(*boundPixmap));
+
+ // Make sure the texture IDs returned are valid:
+ QCOMPARE((bool)glIsTexture(boundImageTextureId), GL_TRUE);
+ QCOMPARE((bool)glIsTexture(boundPixmapTextureId), GL_TRUE);
+
+ // Make sure the textures are still valid after we delete the image/pixmap:
+ // Also check that although the textures are left intact, the cache entries are removed:
+ delete boundImage;
+ boundImage = 0;
+ QCOMPARE((bool)glIsTexture(boundImageTextureId), GL_TRUE);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+ delete boundPixmap;
+ boundPixmap = 0;
+ QCOMPARE((bool)glIsTexture(boundPixmapTextureId), GL_TRUE);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ // Finally, make sure QGLContext::deleteTexture deletes the texture IDs:
+ ctx->deleteTexture(boundImageTextureId);
+ ctx->deleteTexture(boundPixmapTextureId);
+ QCOMPARE((bool)glIsTexture(boundImageTextureId), GL_FALSE);
+ QCOMPARE((bool)glIsTexture(boundPixmapTextureId), GL_FALSE);
+#endif
+}
+
+void tst_QGL::textureCleanup()
+{
+#ifdef QT_BUILD_INTERNAL
+ QGLWidget w;
+ w.resize(200,200);
+ w.show();
+ w.makeCurrent();
+
+ // Test pixmaps which have been loaded via QPixmapCache are removed from the texture cache
+ // when the pixmap cache is cleared
+ {
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ QPainter p(&w);
+
+ QPixmap boundPixmap(":designer.png");
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawPixmap(0, 0, boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ // Check that the texture doesn't get removed from the cache when the pixmap is cleared
+ // as it should still be in the cache:
+ boundPixmap = QPixmap();
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ QPixmapCache::clear();
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+ }
+
+ // Test pixmaps which have been loaded via QPixmapCache are removed from the texture cache
+ // when they are explicitly removed from the pixmap cache
+ {
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ QPainter p(&w);
+
+ QPixmap boundPixmap(128, 128);
+ QString cacheKey = QString::fromLatin1("myPixmap");
+ QPixmapCache::insert(cacheKey, boundPixmap);
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawPixmap(0, 0, boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ // Check that the texture doesn't get removed from the cache when the pixmap is cleared
+ // as it should still be in the cache:
+ boundPixmap = QPixmap();
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ // Finally, we check that the texture cache entry is removed when we remove the
+ // pixmap cache entry, which should hold the last reference:
+ QPixmapCache::remove(cacheKey);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+ }
+
+ // Check images & pixmaps are removed from the cache when they are deleted
+ {
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ QPainter p(&w);
+
+ QImage *boundImage = new QImage(256, 256, QImage::Format_RGB32);
+ boundImage->fill(0xFFFFFFFF);
+ QPixmap *boundPixmap = new QPixmap(256, 256);
+ boundPixmap->fill(Qt::red);
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawImage(0, 0, *boundImage);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ p.drawPixmap(0, 0, *boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ delete boundImage;
+ boundImage = 0;
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ delete boundPixmap;
+ boundPixmap = 0;
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+ }
+
+ // Check images & pixmaps are removed from the cache when they are assigned to
+ {
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ QPainter p(&w);
+
+ QImage boundImage(256, 256, QImage::Format_RGB32);
+ boundImage.fill(0xFFFFFFFF);
+ QPixmap boundPixmap(256, 256);
+ boundPixmap.fill(Qt::red);
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawImage(0, 0, boundImage);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ p.drawPixmap(0, 0, boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ boundImage = QImage(64, 64, QImage::Format_RGB32);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ boundPixmap = QPixmap(64, 64);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+ }
+
+ // Check images & pixmaps are removed from the cache when they are modified (detached)
+ {
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ QPainter p(&w);
+
+ QImage boundImage(256, 256, QImage::Format_RGB32);
+ boundImage.fill(0xFFFFFFFF);
+ QPixmap boundPixmap(256, 256);
+ boundPixmap.fill(Qt::red);
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawImage(0, 0, boundImage);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ p.drawPixmap(0, 0, boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ boundImage.fill(0x00000000);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ boundPixmap.fill(Qt::blue);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+ }
+
+ // Check that images/pixmaps aren't removed from the cache if a shallow copy has been made
+ QImage copyOfImage;
+ QPixmap copyOfPixmap;
+ int startCacheItemCount = QGLTextureCache::instance()->size();
+ {
+ QPainter p(&w);
+
+ QImage boundImage(256, 256, QImage::Format_RGB32);
+ boundImage.fill(0xFFFFFFFF);
+ QPixmap boundPixmap(256, 256);
+ boundPixmap.fill(Qt::red);
+
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+
+ p.drawImage(0, 0, boundImage);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ p.drawPixmap(0, 0, boundPixmap);
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
+ p.end();
+
+ copyOfImage = boundImage;
+ copyOfPixmap = boundPixmap;
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+ } // boundImage & boundPixmap would have been deleted when they went out of scope
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
+
+ copyOfImage = QImage();
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
+
+ copyOfPixmap = QPixmap();
+ QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
+#endif
+}
+
+namespace ThreadImages {
+
+class Producer : public QObject
+{
+ Q_OBJECT
+public:
+ Producer()
+ {
+ startTimer(20);
+
+ QThread *thread = new QThread;
+ thread->start();
+
+ connect(this, SIGNAL(destroyed()), thread, SLOT(quit()));
+
+ moveToThread(thread);
+ connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
+ }
+
+signals:
+ void imageReady(const QImage &image);
+
+protected:
+ void timerEvent(QTimerEvent *)
+ {
+ QImage image(256, 256, QImage::Format_RGB32);
+ QLinearGradient g(0, 0, 0, 256);
+ g.setColorAt(0, QColor(255, 180, 180));
+ g.setColorAt(1, Qt::white);
+ g.setSpread(QGradient::ReflectSpread);
+
+ QBrush brush(g);
+ brush.setTransform(QTransform::fromTranslate(0, delta));
+ delta += 10;
+
+ QPainter p(&image);
+ p.fillRect(image.rect(), brush);
+
+ if (images.size() > 10)
+ images.removeFirst();
+
+ images.append(image);
+
+ emit imageReady(image);
+ }
+
+private:
+ QList<QImage> images;
+ int delta;
+};
+
+
+class DisplayWidget : public QGLWidget
+{
+ Q_OBJECT
+public:
+ DisplayWidget(QWidget *parent) : QGLWidget(parent) {}
+ void paintEvent(QPaintEvent *)
+ {
+ QPainter p(this);
+ p.drawImage(rect(), m_image);
+ }
+
+public slots:
+ void setImage(const QImage &image)
+ {
+ m_image = image;
+ update();
+ }
+
+private:
+ QImage m_image;
+};
+
+class Widget : public QWidget
+{
+ Q_OBJECT
+public:
+ Widget()
+ : iterations(0)
+ , display(0)
+ , producer(new Producer)
+ {
+ startTimer(400);
+ connect(this, SIGNAL(destroyed()), producer, SLOT(deleteLater()));
+ }
+
+ int iterations;
+
+protected:
+ void timerEvent(QTimerEvent *)
+ {
+ ++iterations;
+
+ delete display;
+ display = new DisplayWidget(this);
+ connect(producer, SIGNAL(imageReady(const QImage &)), display, SLOT(setImage(const QImage &)));
+
+ display->setGeometry(rect());
+ display->show();
+ }
+
+private:
+ DisplayWidget *display;
+ Producer *producer;
+};
+
+}
+
+void tst_QGL::threadImages()
+{
+ ThreadImages::Widget *widget = new ThreadImages::Widget;
+ widget->show();
+
+ while (widget->iterations <= 5) {
+ qApp->processEvents();
+ }
+
+ delete widget;
+}
+
+void tst_QGL::nullRectCrash()
+{
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
+ QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
+
+ QGLWidget glw;
+ glw.makeCurrent();
+
+ QGLFramebufferObjectFormat fboFormat;
+ fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+
+ QGLFramebufferObject *fbo = new QGLFramebufferObject(128, 128, fboFormat);
+
+ QPainter fboPainter(fbo);
+
+ fboPainter.setPen(QPen(QColor(255, 127, 127, 127), 2));
+ fboPainter.setBrush(QColor(127, 255, 127, 127));
+ fboPainter.drawRect(QRectF());
+
+ fboPainter.end();
+}
+
+class tst_QGLDummy : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QGLDummy() {}
+
+private slots:
+ void qglSkipTests() {
+ QSKIP("QGL not supported on this system.", SkipAll);
+ }
+};
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+ QTEST_DISABLE_KEYPAD_NAVIGATION \
+ QGLWidget glWidget;
+ if (!glWidget.isValid()) {
+ tst_QGLDummy tc;
+ return QTest::qExec(&tc, argc, argv);
+ }
+ tst_QGL tc;
+ return QTest::qExec(&tc, argc, argv);
+}
+
+#include "tst_qgl.moc"
diff --git a/tests/auto/opengl/qglbuffer/qglbuffer.pro b/tests/auto/opengl/qglbuffer/qglbuffer.pro
new file mode 100644
index 0000000000..48bd966797
--- /dev/null
+++ b/tests/auto/opengl/qglbuffer/qglbuffer.pro
@@ -0,0 +1,11 @@
+############################################################
+# Project file for autotest for file qglbuffer.h
+############################################################
+
+load(qttest_p4)
+requires(contains(QT_CONFIG,opengl))
+QT += opengl widgets
+
+win32:!wince*: DEFINES += QT_NO_EGL
+
+SOURCES += tst_qglbuffer.cpp
diff --git a/tests/auto/qglbuffer/tst_qglbuffer.cpp b/tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp
index 9215b5fedd..9215b5fedd 100644
--- a/tests/auto/qglbuffer/tst_qglbuffer.cpp
+++ b/tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp
diff --git a/tests/auto/opengl/qglfunctions/qglfunctions.pro b/tests/auto/opengl/qglfunctions/qglfunctions.pro
new file mode 100644
index 0000000000..9fe8de2b23
--- /dev/null
+++ b/tests/auto/opengl/qglfunctions/qglfunctions.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+requires(contains(QT_CONFIG,opengl))
+QT += opengl widgets
+
+win32:!wince*: DEFINES += QT_NO_EGL
+
+SOURCES += tst_qglfunctions.cpp
diff --git a/tests/auto/qglfunctions/tst_qglfunctions.cpp b/tests/auto/opengl/qglfunctions/tst_qglfunctions.cpp
index ec87f6f857..ec87f6f857 100644
--- a/tests/auto/qglfunctions/tst_qglfunctions.cpp
+++ b/tests/auto/opengl/qglfunctions/tst_qglfunctions.cpp
diff --git a/tests/auto/opengl/qglthreads/qglthreads.pro b/tests/auto/opengl/qglthreads/qglthreads.pro
new file mode 100644
index 0000000000..d2fd31411f
--- /dev/null
+++ b/tests/auto/opengl/qglthreads/qglthreads.pro
@@ -0,0 +1,14 @@
+load(qttest_p4)
+requires(contains(QT_CONFIG,opengl))
+QT += opengl widgets
+
+win32:!wince*: DEFINES += QT_NO_EGL
+
+HEADERS += tst_qglthreads.h
+SOURCES += tst_qglthreads.cpp
+
+x11 {
+ LIBS += $$QMAKE_LIBS_X11
+}
+
+CONFIG+=insignificant_test
diff --git a/tests/auto/opengl/qglthreads/tst_qglthreads.cpp b/tests/auto/opengl/qglthreads/tst_qglthreads.cpp
new file mode 100644
index 0000000000..ee05e406c8
--- /dev/null
+++ b/tests/auto/opengl/qglthreads/tst_qglthreads.cpp
@@ -0,0 +1,758 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtCore/QtCore>
+#include <QtGui/QtGui>
+#include <QtWidgets/QApplication>
+#include <QtOpenGL/QtOpenGL>
+#include "tst_qglthreads.h"
+
+#ifdef Q_OS_SYMBIAN
+#define RUNNING_TIME 2000 // save GPU mem by running shorter time.
+#else
+#define RUNNING_TIME 5000
+#endif
+
+
+
+
+tst_QGLThreads::tst_QGLThreads(QObject *parent)
+ : QObject(parent)
+{
+}
+
+/*
+
+ swapInThread
+
+ The purpose of this testcase is to verify that it is possible to do rendering into
+ a GL context from the GUI thread, then swap the contents in from a background thread.
+
+ The usecase for this is to have the background thread do the waiting for vertical
+ sync while the GUI thread is idle.
+
+ Currently the locking is handled directly in the paintEvent(). For the actual usecase
+ in Qt, the locking is done in the windowsurface before starting any drawing while
+ unlocking is done after all drawing has been done.
+ */
+
+
+class SwapThread : public QThread
+{
+ Q_OBJECT
+public:
+ SwapThread(QGLWidget *widget)
+ : m_widget(widget)
+ {
+ moveToThread(this);
+ }
+
+ void run() {
+ QTime time;
+ time.start();
+ while (time.elapsed() < RUNNING_TIME) {
+ lock();
+ wait();
+
+ m_widget->makeCurrent();
+ m_widget->swapBuffers();
+ m_widget->doneCurrent();
+ unlock();
+ }
+ }
+
+ void lock() { m_mutex.lock(); }
+ void unlock() { m_mutex.unlock(); }
+
+ void wait() { m_wait_condition.wait(&m_mutex); }
+ void notify() { m_wait_condition.wakeAll(); }
+
+private:
+ QGLWidget *m_widget;
+ QMutex m_mutex;
+ QWaitCondition m_wait_condition;
+};
+
+class ForegroundWidget : public QGLWidget
+{
+public:
+ ForegroundWidget(const QGLFormat &format)
+ : QGLWidget(format), m_thread(0)
+ {
+ setAutoBufferSwap(false);
+ }
+
+ void paintEvent(QPaintEvent *)
+ {
+ m_thread->lock();
+ makeCurrent();
+ QPainter p(this);
+ p.fillRect(rect(), QColor(rand() % 256, rand() % 256, rand() % 256));
+ p.setPen(Qt::red);
+ p.setFont(QFont("SansSerif", 24));
+ p.drawText(rect(), Qt::AlignCenter, "This is an autotest");
+ p.end();
+ doneCurrent();
+ m_thread->notify();
+ m_thread->unlock();
+
+ update();
+ }
+
+ void setThread(SwapThread *thread) {
+ m_thread = thread;
+ }
+
+ SwapThread *m_thread;
+};
+
+void tst_QGLThreads::swapInThread()
+{
+#ifdef Q_OS_MAC
+ QSKIP("OpenGL threading tests are currently disabled on mac as they were causing reboots", SkipAll);
+#endif
+
+ QGLFormat format;
+ format.setSwapInterval(1);
+ ForegroundWidget widget(format);
+ SwapThread thread(&widget);
+ widget.setThread(&thread);
+ widget.show();
+
+ QTest::qWaitForWindowShown(&widget);
+ thread.start();
+
+ while (thread.isRunning()) {
+ qApp->processEvents();
+ }
+
+ widget.hide();
+
+ QVERIFY(true);
+}
+
+
+
+
+
+
+
+/*
+ textureUploadInThread
+
+ The purpose of this testcase is to verify that doing texture uploads in a background
+ thread is possible and that it works.
+ */
+
+class CreateAndUploadThread : public QThread
+{
+ Q_OBJECT
+public:
+ CreateAndUploadThread(QGLWidget *shareWidget)
+ {
+ m_gl = new QGLWidget(0, shareWidget);
+ moveToThread(this);
+ }
+
+ ~CreateAndUploadThread()
+ {
+ delete m_gl;
+ }
+
+ void run() {
+ m_gl->makeCurrent();
+ QTime time;
+ time.start();
+ while (time.elapsed() < RUNNING_TIME) {
+ int width = 400;
+ int height = 300;
+#ifdef Q_OS_SYMBIAN
+ // GPU mem is very scarce resource on Symbian currently.
+ // That's why we create only small textures.
+ width = 50;
+ height = 20;
+#endif
+ QImage image(width, height, QImage::Format_RGB32);
+ QPainter p(&image);
+ p.fillRect(image.rect(), QColor(rand() % 256, rand() % 256, rand() % 256));
+ p.setPen(Qt::red);
+ p.setFont(QFont("SansSerif", 24));
+ p.drawText(image.rect(), Qt::AlignCenter, "This is an autotest");
+ p.end();
+ m_gl->bindTexture(image, GL_TEXTURE_2D, GL_RGBA, QGLContext::InternalBindOption);
+
+ createdAndUploaded(image);
+ }
+ }
+
+signals:
+ void createdAndUploaded(const QImage &image);
+
+private:
+ QGLWidget *m_gl;
+};
+
+class TextureDisplay : public QGLWidget
+{
+ Q_OBJECT
+public:
+ void paintEvent(QPaintEvent *) {
+ QPainter p(this);
+ for (int i=0; i<m_images.size(); ++i) {
+ p.drawImage(m_positions.at(i), m_images.at(i));
+ m_positions[i] += QPoint(1, 1);
+ }
+ update();
+ }
+
+public slots:
+ void receiveImage(const QImage &image) {
+ m_images << image;
+ m_positions << QPoint(-rand() % width() / 2, -rand() % height() / 2);
+
+ if (m_images.size() > 100) {
+ m_images.takeFirst();
+ m_positions.takeFirst();
+ }
+ }
+
+private:
+ QList <QImage> m_images;
+ QList <QPoint> m_positions;
+};
+
+void tst_QGLThreads::textureUploadInThread()
+{
+#ifdef Q_OS_MAC
+ QSKIP("OpenGL threading tests are currently disabled on mac as they were causing reboots", SkipAll);
+#endif
+
+ TextureDisplay display;
+ CreateAndUploadThread thread(&display);
+
+ connect(&thread, SIGNAL(createdAndUploaded(QImage)), &display, SLOT(receiveImage(QImage)));
+
+ display.show();
+ QTest::qWaitForWindowShown(&display);
+
+ thread.start();
+
+ while (thread.isRunning()) {
+ qApp->processEvents();
+ }
+
+ QVERIFY(true);
+}
+
+
+
+
+
+
+/*
+ renderInThread
+
+ This test sets up a scene and renders it in a different thread.
+ For simplicity, the scene is simply a bunch of rectangles, but
+ if that works, we're in good shape..
+ */
+
+static inline float qrandom() { return (rand() % 100) / 100.f; }
+
+void renderAScene(int w, int h)
+{
+#ifdef QT_OPENGL_ES_2
+ QGLShaderProgram program;
+ program.addShaderFromSourceCode(QGLShader::Vertex, "attribute highp vec2 pos; void main() { gl_Position = vec4(pos.xy, 1.0, 1.0); }");
+ program.addShaderFromSourceCode(QGLShader::Fragment, "uniform lowp vec4 color; void main() { gl_FragColor = color; }");
+ program.bindAttributeLocation("pos", 0);
+ program.bind();
+ int colorId = program.uniformLocation("color");
+
+ glEnableVertexAttribArray(0);
+
+ for (int i=0; i<1000; ++i) {
+ GLfloat pos[] = {
+ (rand() % 100) / 100.,
+ (rand() % 100) / 100.,
+ (rand() % 100) / 100.,
+ (rand() % 100) / 100.,
+ (rand() % 100) / 100.,
+ (rand() % 100) / 100.
+ };
+
+ glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, pos);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+ }
+#else
+ glViewport(0, 0, w, h);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glFrustum(0, w, h, 0, 1, 100);
+ glTranslated(0, 0, -1);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
+ for (int i=0;i<1000; ++i) {
+ glBegin(GL_TRIANGLES);
+ glColor3f(qrandom(), qrandom(), qrandom());
+ glVertex2f(qrandom() * w, qrandom() * h);
+ glColor3f(qrandom(), qrandom(), qrandom());
+ glVertex2f(qrandom() * w, qrandom() * h);
+ glColor3f(qrandom(), qrandom(), qrandom());
+ glVertex2f(qrandom() * w, qrandom() * h);
+ glEnd();
+ }
+#endif
+}
+
+class ThreadSafeGLWidget : public QGLWidget
+{
+public:
+ ThreadSafeGLWidget(QWidget *parent = 0) : QGLWidget(parent) {}
+ void paintEvent(QPaintEvent *)
+ {
+ // ignored as we're anyway swapping as fast as we can
+ };
+
+ void resizeEvent(QResizeEvent *e)
+ {
+ mutex.lock();
+ newSize = e->size();
+ mutex.unlock();
+ };
+
+ QMutex mutex;
+ QSize newSize;
+};
+
+class SceneRenderingThread : public QThread
+{
+ Q_OBJECT
+public:
+ SceneRenderingThread(ThreadSafeGLWidget *widget)
+ : m_widget(widget)
+ {
+ moveToThread(this);
+ m_size = widget->size();
+ }
+
+ void run() {
+ QTime time;
+ time.start();
+ failure = false;
+
+ m_widget->makeCurrent();
+
+ while (time.elapsed() < RUNNING_TIME && !failure) {
+
+
+ m_widget->mutex.lock();
+ QSize s = m_widget->newSize;
+ m_widget->mutex.unlock();
+
+ if (s != m_size) {
+ glViewport(0, 0, s.width(), s.height());
+ }
+
+ if (QGLContext::currentContext() != m_widget->context()) {
+ failure = true;
+ break;
+ }
+
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ int w = m_widget->width();
+ int h = m_widget->height();
+
+ renderAScene(w, h);
+
+ int color;
+ glReadPixels(w / 2, h / 2, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &color);
+
+ m_widget->swapBuffers();
+ }
+
+ m_widget->doneCurrent();
+ }
+
+ bool failure;
+
+private:
+ ThreadSafeGLWidget *m_widget;
+ QSize m_size;
+};
+
+void tst_QGLThreads::renderInThread_data()
+{
+ QTest::addColumn<bool>("resize");
+ QTest::addColumn<bool>("update");
+
+ QTest::newRow("basic") << false << false;
+ QTest::newRow("with-resize") << true << false;
+ QTest::newRow("with-update") << false << true;
+ QTest::newRow("with-resize-and-update") << true << true;
+}
+
+void tst_QGLThreads::renderInThread()
+{
+#ifdef Q_OS_MAC
+ QSKIP("OpenGL threading tests are currently disabled on Mac as they were causing reboots", SkipAll);
+#endif
+
+#ifdef Q_OS_SYMBIAN
+ QSKIP("OpenGL threading tests are disabled on Symbian as accessing RWindow from a secondary thread is not supported", SkipAll);
+#endif
+
+ QFETCH(bool, resize);
+ QFETCH(bool, update);
+
+ ThreadSafeGLWidget widget;
+ widget.resize(200, 200);
+ SceneRenderingThread thread(&widget);
+
+ widget.show();
+ QTest::qWaitForWindowShown(&widget);
+ widget.doneCurrent();
+
+ thread.start();
+
+ int value = 10;
+ while (thread.isRunning()) {
+ if (resize)
+ widget.resize(200 + value, 200 + value);
+ if (update)
+ widget.update(100 + value, 100 + value, 20, 20);
+ qApp->processEvents();
+ value = -value;
+
+ QThread::msleep(100);
+ }
+
+ QVERIFY(!thread.failure);
+}
+
+class Device
+{
+public:
+ virtual ~Device() {}
+ virtual QPaintDevice *realPaintDevice() = 0;
+ virtual void prepareDevice() {}
+};
+
+class GLWidgetWrapper : public Device
+{
+public:
+ GLWidgetWrapper() {
+ widget.resize(150, 150);
+ widget.show();
+ QTest::qWaitForWindowShown(&widget);
+ widget.doneCurrent();
+ }
+ QPaintDevice *realPaintDevice() { return &widget; }
+
+ ThreadSafeGLWidget widget;
+};
+
+class PixmapWrapper : public Device
+{
+public:
+ PixmapWrapper() { pixmap = new QPixmap(512, 512); }
+ ~PixmapWrapper() { delete pixmap; }
+ QPaintDevice *realPaintDevice() { return pixmap; }
+
+ QPixmap *pixmap;
+};
+
+class PixelBufferWrapper : public Device
+{
+public:
+ PixelBufferWrapper() { pbuffer = new QGLPixelBuffer(512, 512); }
+ ~PixelBufferWrapper() { delete pbuffer; }
+ QPaintDevice *realPaintDevice() { return pbuffer; }
+
+ QGLPixelBuffer *pbuffer;
+};
+
+
+class FrameBufferObjectWrapper : public Device
+{
+public:
+ FrameBufferObjectWrapper() {
+ widget.makeCurrent();
+ fbo = new QGLFramebufferObject(512, 512);
+ widget.doneCurrent();
+ }
+ ~FrameBufferObjectWrapper() { delete fbo; }
+ QPaintDevice *realPaintDevice() { return fbo; }
+ void prepareDevice() { widget.makeCurrent(); }
+
+ ThreadSafeGLWidget widget;
+ QGLFramebufferObject *fbo;
+};
+
+
+class ThreadPainter : public QObject
+{
+ Q_OBJECT
+public:
+ ThreadPainter(Device *pd) : device(pd), fail(true) {
+ pixmap = QPixmap(40, 40);
+ pixmap.fill(Qt::green);
+ QPainter p(&pixmap);
+ p.drawLine(0, 0, 40, 40);
+ p.drawLine(0, 40, 40, 0);
+ }
+
+public slots:
+ void draw() {
+ bool beginFailed = false;
+ QTime time;
+ time.start();
+ int rotAngle = 10;
+ device->prepareDevice();
+ QPaintDevice *paintDevice = device->realPaintDevice();
+ QSize s(paintDevice->width(), paintDevice->height());
+ while (time.elapsed() < RUNNING_TIME) {
+ QPainter p;
+ if (!p.begin(paintDevice)) {
+ beginFailed = true;
+ break;
+ }
+ p.translate(s.width()/2, s.height()/2);
+ p.rotate(rotAngle);
+ p.translate(-s.width()/2, -s.height()/2);
+ p.fillRect(0, 0, s.width(), s.height(), Qt::red);
+ QRect rect(QPoint(0, 0), s);
+ p.drawPixmap(10, 10, pixmap);
+ p.drawTiledPixmap(50, 50, 100, 100, pixmap);
+ p.drawText(rect.center(), "This is a piece of text");
+ p.end();
+ rotAngle += 2;
+ QThread::msleep(20);
+ }
+
+ fail = beginFailed;
+ QThread::currentThread()->quit();
+ }
+
+ bool failed() { return fail; }
+
+private:
+ QPixmap pixmap;
+ Device *device;
+ bool fail;
+};
+
+template <class T>
+class PaintThreadManager
+{
+public:
+ PaintThreadManager(int count) : numThreads(count)
+ {
+ for (int i=0; i<numThreads; ++i) {
+ devices.append(new T);
+ threads.append(new QThread);
+ painters.append(new ThreadPainter(devices.at(i)));
+ painters.at(i)->moveToThread(threads.at(i));
+ painters.at(i)->connect(threads.at(i), SIGNAL(started()), painters.at(i), SLOT(draw()));
+ }
+ }
+
+ ~PaintThreadManager() {
+ qDeleteAll(threads);
+ qDeleteAll(painters);
+ qDeleteAll(devices);
+ }
+
+
+ void start() {
+ for (int i=0; i<numThreads; ++i)
+ threads.at(i)->start();
+ }
+
+ bool areRunning() {
+ bool running = false;
+ for (int i=0; i<numThreads; ++i){
+ if (threads.at(i)->isRunning())
+ running = true;
+ }
+
+ return running;
+ }
+
+ bool failed() {
+ for (int i=0; i<numThreads; ++i) {
+ if (painters.at(i)->failed())
+ return true;
+ }
+
+ return false;
+ }
+
+private:
+ QList<QThread *> threads;
+ QList<Device *> devices;
+ QList<ThreadPainter *> painters;
+ int numThreads;
+};
+
+/*
+ This test uses QPainter to draw onto different QGLWidgets in
+ different threads at the same time. The ThreadSafeGLWidget is
+ necessary to handle paint and resize events that might come from
+ the main thread at any time while the test is running. The resize
+ and paint events would cause makeCurrent() calls to be issued from
+ within the QGLWidget while the widget's context was current in
+ another thread, which would cause errors.
+*/
+void tst_QGLThreads::painterOnGLWidgetInThread()
+{
+#ifdef Q_OS_MAC
+ QSKIP("OpenGL threading tests are currently disabled on Mac as they were causing reboots", SkipAll);
+#endif
+ if (!((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_0) ||
+ (QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0))) {
+ QSKIP("The OpenGL based threaded QPainter tests requires OpenGL/ES 2.0.", SkipAll);
+ }
+
+ PaintThreadManager<GLWidgetWrapper> painterThreads(5);
+ painterThreads.start();
+
+ while (painterThreads.areRunning()) {
+ qApp->processEvents();
+ QThread::msleep(100);
+ }
+ QVERIFY(!painterThreads.failed());
+}
+
+/*
+ This test uses QPainter to draw onto different QPixmaps in
+ different threads at the same time.
+*/
+void tst_QGLThreads::painterOnPixmapInThread()
+{
+#ifdef Q_WS_X11
+ QSKIP("Drawing text in threads onto X11 drawables currently crashes on some X11 servers.", SkipAll);
+#endif
+ PaintThreadManager<PixmapWrapper> painterThreads(5);
+ painterThreads.start();
+
+ while (painterThreads.areRunning()) {
+ qApp->processEvents();
+ QThread::msleep(100);
+ }
+ QVERIFY(!painterThreads.failed());
+}
+
+/* This test uses QPainter to draw onto different QGLPixelBuffer
+ objects in different threads at the same time.
+*/
+void tst_QGLThreads::painterOnPboInThread()
+{
+#ifdef Q_OS_MAC
+ QSKIP("OpenGL threading tests are currently disabled on Mac as they were causing reboots", SkipAll);
+#endif
+ if (!((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_0) ||
+ (QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0))) {
+ QSKIP("The OpenGL based threaded QPainter tests requires OpenGL/ES 2.0.", SkipAll);
+ return;
+ }
+
+ if (!QGLPixelBuffer::hasOpenGLPbuffers()) {
+ QSKIP("This system doesn't support pbuffers.", SkipAll);
+ return;
+ }
+
+ PaintThreadManager<PixelBufferWrapper> painterThreads(5);
+ painterThreads.start();
+
+ while (painterThreads.areRunning()) {
+ qApp->processEvents();
+ QThread::msleep(100);
+ }
+ QVERIFY(!painterThreads.failed());
+}
+
+/* This test uses QPainter to draw onto different
+ QGLFramebufferObjects (bound in a QGLWidget's context) in different
+ threads at the same time.
+*/
+void tst_QGLThreads::painterOnFboInThread()
+{
+#ifdef Q_OS_MAC
+ QSKIP("OpenGL threading tests are currently disabled on Mac as they were causing reboots", SkipAll);
+#endif
+ if (!((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_0) ||
+ (QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0))) {
+ QSKIP("The OpenGL based threaded QPainter tests requires OpenGL/ES 2.0.", SkipAll);
+ return;
+ }
+
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects()) {
+ QSKIP("This system doesn't support framebuffer objects.", SkipAll);
+ return;
+ }
+
+ PaintThreadManager<FrameBufferObjectWrapper> painterThreads(5);
+ painterThreads.start();
+
+ while (painterThreads.areRunning()) {
+ qApp->processEvents();
+ QThread::msleep(100);
+ }
+ QVERIFY(!painterThreads.failed());
+}
+
+int main(int argc, char **argv)
+{
+ QApplication::setAttribute(Qt::AA_X11InitThreads);
+ QApplication app(argc, argv);
+ QTEST_DISABLE_KEYPAD_NAVIGATION \
+
+ tst_QGLThreads tc;
+ return QTest::qExec(&tc, argc, argv);
+}
+
+#include "tst_qglthreads.moc"
diff --git a/tests/auto/qglthreads/tst_qglthreads.h b/tests/auto/opengl/qglthreads/tst_qglthreads.h
index 7972638085..7972638085 100644
--- a/tests/auto/qglthreads/tst_qglthreads.h
+++ b/tests/auto/opengl/qglthreads/tst_qglthreads.h
diff --git a/tests/auto/other.pro b/tests/auto/other.pro
index c4ddc83cdf..1911d013f1 100644
--- a/tests/auto/other.pro
+++ b/tests/auto/other.pro
@@ -3,41 +3,26 @@
TEMPLATE=subdirs
SUBDIRS=\
+ other \
# baselineexample \ Just an example demonstrating qbaselinetest usage
lancelot \
- qalgorithms \
qcombobox \
- qcssparser \
- qdatastream \
- qdir \
qfocusevent \
- qimage \
- qiodevice \
- qitemmodel \
qlayout \
qmdiarea \
qmenu \
qmenubar \
- qmouseevent \
- qpainter \
- qpixmap \
- qprinter \
- qsettings \
qsplitter \
qtabwidget \
qtextbrowser \
- qtextdocument \
qtextedit \
qtoolbutton \
- qvariant \
qwidget \
qworkspace \
- windowsmobile \
- nativeimagehandleprovider
+ windowsmobile
contains(QT_CONFIG, accessibility):SUBDIRS += qaccessibility
-contains(QT_CONFIG, OdfWriter):SUBDIRS += qzip qtextodfwriter
mac:!qpa {
SUBDIRS += macgui \
macnativeevents \
@@ -61,6 +46,4 @@ symbian {
# Following tests depends on private API
!contains(QT_CONFIG, private_tests): SUBDIRS -= \
qcombobox \
- qcssparser \
qtextedit \
-
diff --git a/tests/auto/atwrapper/.gitignore b/tests/auto/other/atwrapper/.gitignore
index 162ad53af6..162ad53af6 100644
--- a/tests/auto/atwrapper/.gitignore
+++ b/tests/auto/other/atwrapper/.gitignore
diff --git a/tests/auto/atwrapper/TODO b/tests/auto/other/atwrapper/TODO
index 23a70c3c9e..23a70c3c9e 100644
--- a/tests/auto/atwrapper/TODO
+++ b/tests/auto/other/atwrapper/TODO
diff --git a/tests/auto/atwrapper/atWrapper.cpp b/tests/auto/other/atwrapper/atWrapper.cpp
index 81d1965bbb..81d1965bbb 100644
--- a/tests/auto/atwrapper/atWrapper.cpp
+++ b/tests/auto/other/atwrapper/atWrapper.cpp
diff --git a/tests/auto/atwrapper/atWrapper.h b/tests/auto/other/atwrapper/atWrapper.h
index e325c087d8..e325c087d8 100644
--- a/tests/auto/atwrapper/atWrapper.h
+++ b/tests/auto/other/atwrapper/atWrapper.h
diff --git a/tests/auto/atwrapper/atWrapper.pro b/tests/auto/other/atwrapper/atWrapper.pro
index 323ca1bf5f..323ca1bf5f 100644
--- a/tests/auto/atwrapper/atWrapper.pro
+++ b/tests/auto/other/atwrapper/atWrapper.pro
diff --git a/tests/auto/atwrapper/atWrapperAutotest.cpp b/tests/auto/other/atwrapper/atWrapperAutotest.cpp
index ebea316d44..ebea316d44 100644
--- a/tests/auto/atwrapper/atWrapperAutotest.cpp
+++ b/tests/auto/other/atwrapper/atWrapperAutotest.cpp
diff --git a/tests/auto/atwrapper/desert.ini b/tests/auto/other/atwrapper/desert.ini
index 6d8605252d..6d8605252d 100644
--- a/tests/auto/atwrapper/desert.ini
+++ b/tests/auto/other/atwrapper/desert.ini
diff --git a/tests/auto/atwrapper/ephron.ini b/tests/auto/other/atwrapper/ephron.ini
index eeccb3b6ef..eeccb3b6ef 100644
--- a/tests/auto/atwrapper/ephron.ini
+++ b/tests/auto/other/atwrapper/ephron.ini
diff --git a/tests/auto/atwrapper/gullgubben.ini b/tests/auto/other/atwrapper/gullgubben.ini
index 3a664dddd5..3a664dddd5 100644
--- a/tests/auto/atwrapper/gullgubben.ini
+++ b/tests/auto/other/atwrapper/gullgubben.ini
diff --git a/tests/auto/atwrapper/honshu.ini b/tests/auto/other/atwrapper/honshu.ini
index 3b7751a128..3b7751a128 100644
--- a/tests/auto/atwrapper/honshu.ini
+++ b/tests/auto/other/atwrapper/honshu.ini
diff --git a/tests/auto/atwrapper/kramer.ini b/tests/auto/other/atwrapper/kramer.ini
index 289d8a8b7e..289d8a8b7e 100644
--- a/tests/auto/atwrapper/kramer.ini
+++ b/tests/auto/other/atwrapper/kramer.ini
diff --git a/tests/auto/atwrapper/scruffy.ini b/tests/auto/other/atwrapper/scruffy.ini
index 329f537e6f..329f537e6f 100644
--- a/tests/auto/atwrapper/scruffy.ini
+++ b/tests/auto/other/atwrapper/scruffy.ini
diff --git a/tests/auto/atwrapper/spareribs.ini b/tests/auto/other/atwrapper/spareribs.ini
index 78ff9e985f..78ff9e985f 100644
--- a/tests/auto/atwrapper/spareribs.ini
+++ b/tests/auto/other/atwrapper/spareribs.ini
diff --git a/tests/auto/atwrapper/titan.ini b/tests/auto/other/atwrapper/titan.ini
index 3a0b0dfd31..3a0b0dfd31 100644
--- a/tests/auto/atwrapper/titan.ini
+++ b/tests/auto/other/atwrapper/titan.ini
diff --git a/tests/auto/other/baselineexample/baselineexample.pro b/tests/auto/other/baselineexample/baselineexample.pro
new file mode 100644
index 0000000000..cc310aec3a
--- /dev/null
+++ b/tests/auto/other/baselineexample/baselineexample.pro
@@ -0,0 +1,18 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2010-12-09T14:55:13
+#
+#-------------------------------------------------
+
+QT += testlib widgets
+
+TARGET = tst_baselineexample
+CONFIG += console
+CONFIG -= app_bundle
+
+TEMPLATE = app
+
+SOURCES += tst_baselineexample.cpp
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
+
+include($$PWD/../../../baselineserver/shared/qbaselinetest.pri)
diff --git a/tests/auto/baselineexample/tst_baselineexample.cpp b/tests/auto/other/baselineexample/tst_baselineexample.cpp
index 73657bdf6d..73657bdf6d 100644
--- a/tests/auto/baselineexample/tst_baselineexample.cpp
+++ b/tests/auto/other/baselineexample/tst_baselineexample.cpp
diff --git a/tests/auto/compiler/.gitignore b/tests/auto/other/compiler/.gitignore
index bdcee467b6..bdcee467b6 100644
--- a/tests/auto/compiler/.gitignore
+++ b/tests/auto/other/compiler/.gitignore
diff --git a/tests/auto/compiler/baseclass.cpp b/tests/auto/other/compiler/baseclass.cpp
index 22ccba8f78..22ccba8f78 100644
--- a/tests/auto/compiler/baseclass.cpp
+++ b/tests/auto/other/compiler/baseclass.cpp
diff --git a/tests/auto/compiler/baseclass.h b/tests/auto/other/compiler/baseclass.h
index e510112f2f..e510112f2f 100644
--- a/tests/auto/compiler/baseclass.h
+++ b/tests/auto/other/compiler/baseclass.h
diff --git a/tests/auto/compiler/compiler.pro b/tests/auto/other/compiler/compiler.pro
index c444c63af6..c444c63af6 100644
--- a/tests/auto/compiler/compiler.pro
+++ b/tests/auto/other/compiler/compiler.pro
diff --git a/tests/auto/compiler/derivedclass.cpp b/tests/auto/other/compiler/derivedclass.cpp
index 45ef6df3ee..45ef6df3ee 100644
--- a/tests/auto/compiler/derivedclass.cpp
+++ b/tests/auto/other/compiler/derivedclass.cpp
diff --git a/tests/auto/compiler/derivedclass.h b/tests/auto/other/compiler/derivedclass.h
index c5fb61f46e..c5fb61f46e 100644
--- a/tests/auto/compiler/derivedclass.h
+++ b/tests/auto/other/compiler/derivedclass.h
diff --git a/tests/auto/compiler/tst_compiler.cpp b/tests/auto/other/compiler/tst_compiler.cpp
index cd037793bd..cd037793bd 100644
--- a/tests/auto/compiler/tst_compiler.cpp
+++ b/tests/auto/other/compiler/tst_compiler.cpp
diff --git a/tests/auto/other/headersclean/headersclean.pro b/tests/auto/other/headersclean/headersclean.pro
new file mode 100644
index 0000000000..d18dc1c0a2
--- /dev/null
+++ b/tests/auto/other/headersclean/headersclean.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+SOURCES += tst_headersclean.cpp
+QT = core network xml sql
+CONFIG += uitools
+
+contains(QT_CONFIG,dbus): QT += dbus
+contains(QT_CONFIG,opengl): QT += opengl
diff --git a/tests/auto/other/headersclean/tst_headersclean.cpp b/tests/auto/other/headersclean/tst_headersclean.cpp
new file mode 100644
index 0000000000..831e7fe50a
--- /dev/null
+++ b/tests/auto/other/headersclean/tst_headersclean.cpp
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#define QT_NO_KEYWORDS
+#define signals int
+#define slots int
+#define emit public:;
+#define foreach public:;
+#define forever public:;
+
+#include <QtCore/QtCore>
+#include <QtTest/QtTest>
+
+#include <QtNetwork/QtNetwork>
+#include <QtXml/QtXml>
+#include <QtSql/QtSql>
+#include <QtGui/QtGui>
+
+#include <QtUiTools/QtUiTools>
+
+#ifndef QT_NO_OPENGL
+#include <QtOpenGL/QtOpenGL>
+#endif
+
+#if !defined(QT_NO_DBUS) && defined(Q_OS_UNIX)
+#include <QtDBus/QtDBus>
+#endif
+
+class tst_HeadersClean: public QObject
+{
+ Q_OBJECT
+public:
+ tst_HeadersClean() {}
+};
+
+QTEST_MAIN(tst_HeadersClean)
+#include "tst_headersclean.moc" \ No newline at end of file
diff --git a/tests/auto/maketestselftest/checktest/checktest.pro b/tests/auto/other/maketestselftest/checktest/checktest.pro
index 79c5ca55e2..79c5ca55e2 100644
--- a/tests/auto/maketestselftest/checktest/checktest.pro
+++ b/tests/auto/other/maketestselftest/checktest/checktest.pro
diff --git a/tests/auto/maketestselftest/checktest/main.cpp b/tests/auto/other/maketestselftest/checktest/main.cpp
index b2f3cad894..b2f3cad894 100644
--- a/tests/auto/maketestselftest/checktest/main.cpp
+++ b/tests/auto/other/maketestselftest/checktest/main.cpp
diff --git a/tests/auto/maketestselftest/features/dump_subdirs.prf b/tests/auto/other/maketestselftest/features/dump_subdirs.prf
index 2547f58d5b..2547f58d5b 100644
--- a/tests/auto/maketestselftest/features/dump_subdirs.prf
+++ b/tests/auto/other/maketestselftest/features/dump_subdirs.prf
diff --git a/tests/auto/maketestselftest/maketestselftest.pro b/tests/auto/other/maketestselftest/maketestselftest.pro
index a27d5d7934..a27d5d7934 100644
--- a/tests/auto/maketestselftest/maketestselftest.pro
+++ b/tests/auto/other/maketestselftest/maketestselftest.pro
diff --git a/tests/auto/other/maketestselftest/test/test.pro b/tests/auto/other/maketestselftest/test/test.pro
new file mode 100644
index 0000000000..cc0d582a54
--- /dev/null
+++ b/tests/auto/other/maketestselftest/test/test.pro
@@ -0,0 +1,19 @@
+load(qttest_p4)
+
+TARGET = ../tst_maketestselftest
+SOURCES += ../tst_maketestselftest.cpp
+QT = core
+
+DEFINES += SRCDIR=\\\"$$PWD/..\\\"
+
+requires(!cross_compile)
+
+win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_maketestselftest
+} else {
+ TARGET = ../../release/tst_maketestselftest
+ }
+}
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/other/maketestselftest/tst_maketestselftest.cpp b/tests/auto/other/maketestselftest/tst_maketestselftest.cpp
new file mode 100644
index 0000000000..59dd43cb40
--- /dev/null
+++ b/tests/auto/other/maketestselftest/tst_maketestselftest.cpp
@@ -0,0 +1,561 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QDir>
+#include <QFile>
+#include <QRegExp>
+#include <QStringList>
+#include <QTest>
+#include <QSet>
+#include <QProcess>
+#include <QDebug>
+
+enum FindSubdirsMode {
+ Flat = 0,
+ Recursive
+};
+
+class tst_MakeTestSelfTest: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void tests_pro_files();
+ void tests_pro_files_data();
+
+ void naming_convention();
+ void naming_convention_data();
+
+ void make_check();
+
+private:
+ QStringList find_subdirs(QString const&, FindSubdirsMode, QString const& = QString());
+
+ QSet<QString> all_test_classes;
+};
+
+bool looks_like_testcase(QString const&,QString*);
+bool looks_like_subdirs(QString const&);
+QStringList find_test_class(QString const&);
+
+/* Verify that all tests are listed somewhere in one of the autotest .pro files */
+void tst_MakeTestSelfTest::tests_pro_files()
+{
+ static QStringList lines;
+
+ if (lines.isEmpty()) {
+ QDir dir(SRCDIR "/..");
+ QStringList proFiles = dir.entryList(QStringList() << "*.pro");
+ foreach (QString const& proFile, proFiles) {
+ QString filename = QString("%1/../%2").arg(SRCDIR).arg(proFile);
+ QFile file(filename);
+ if (!file.open(QIODevice::ReadOnly)) {
+ QFAIL(qPrintable(QString("open %1: %2").arg(filename).arg(file.errorString())));
+ }
+ while (!file.atEnd()) {
+ lines << file.readLine().trimmed();
+ }
+ }
+ }
+
+ QFETCH(QString, subdir);
+ QRegExp re(QString("( |=|^|#)%1( |\\\\|$)").arg(QRegExp::escape(subdir)));
+ foreach (const QString& line, lines) {
+ if (re.indexIn(line) != -1) {
+ return;
+ }
+ }
+
+
+
+ QFAIL(qPrintable(QString(
+ "Subdir `%1' is missing from tests/auto/*.pro\n"
+ "This means the test won't be compiled or run on any platform.\n"
+ "If this is intentional, please put the test name in a comment in one of the .pro files.").arg(subdir))
+ );
+
+}
+
+void tst_MakeTestSelfTest::tests_pro_files_data()
+{
+ QTest::addColumn<QString>("subdir");
+ QDir dir(SRCDIR "/..");
+ QStringList subdirs = dir.entryList(QDir::AllDirs|QDir::NoDotAndDotDot);
+
+ foreach (const QString& subdir, subdirs) {
+ if (subdir == QString::fromLatin1("tmp")
+ || subdir.startsWith(".")
+ || !dir.exists(subdir + "/" + subdir + ".pro"))
+ {
+ continue;
+ }
+ QTest::newRow(qPrintable(subdir)) << subdir;
+ }
+}
+
+QString format_list(QStringList const& list)
+{
+ if (list.count() == 1) {
+ return list.at(0);
+ }
+ return QString("one of (%1)").arg(list.join(", "));
+}
+
+void tst_MakeTestSelfTest::naming_convention()
+{
+ QFETCH(QString, subdir);
+ QFETCH(QString, target);
+
+ QDir dir(SRCDIR "/../" + subdir);
+
+ QStringList cppfiles = dir.entryList(QStringList() << "*.h" << "*.cpp");
+ if (cppfiles.isEmpty()) {
+ // Common convention is to have test/test.pro and source files in parent dir
+ if (dir.dirName() == "test") {
+ dir.cdUp();
+ cppfiles = dir.entryList(QStringList() << "*.h" << "*.cpp");
+ }
+
+ if (cppfiles.isEmpty()) {
+ QSKIP("Couldn't locate source files for test", SkipSingle);
+ }
+ }
+
+ QStringList possible_test_classes;
+ foreach (QString const& file, cppfiles) {
+ possible_test_classes << find_test_class(dir.path() + "/" + file);
+ }
+
+ if (possible_test_classes.isEmpty()) {
+ QSKIP(qPrintable(QString("Couldn't locate test class in %1").arg(format_list(cppfiles))), SkipSingle);
+ }
+
+ QVERIFY2(possible_test_classes.contains(target), qPrintable(QString(
+ "TARGET is %1, while test class appears to be %2.\n"
+ "TARGET and test class _must_ match so that all testcase names can be accurately "
+ "determined even if a test fails to compile or run.")
+ .arg(target)
+ .arg(format_list(possible_test_classes))
+ ));
+
+ QVERIFY2(!all_test_classes.contains(target), qPrintable(QString(
+ "It looks like there are multiple tests named %1.\n"
+ "This makes it impossible to separate results for these tests.\n"
+ "Please ensure all tests are uniquely named.")
+ .arg(target)
+ ));
+
+ all_test_classes << target;
+}
+
+void tst_MakeTestSelfTest::naming_convention_data()
+{
+ QTest::addColumn<QString>("subdir");
+ QTest::addColumn<QString>("target");
+
+ foreach (const QString& subdir, find_subdirs(SRCDIR "/../auto.pro", Recursive)) {
+ if (QFileInfo(SRCDIR "/../" + subdir).isDir()) {
+ QString target;
+ if (looks_like_testcase(SRCDIR "/../" + subdir + "/" + QFileInfo(subdir).baseName() + ".pro", &target)) {
+ QTest::newRow(qPrintable(subdir)) << subdir << target.toLower();
+ }
+ }
+ }
+}
+
+/*
+ Returns true if a .pro file seems to be for an autotest.
+ Running qmake to figure this out takes too long.
+*/
+bool looks_like_testcase(QString const& pro_file, QString* target)
+{
+ QFile file(pro_file);
+ if (!file.open(QIODevice::ReadOnly)) {
+ return false;
+ }
+
+ *target = QString();
+
+ bool loaded_qttest = false;
+
+ do {
+ QByteArray line = file.readLine();
+ if (line.isEmpty()) {
+ break;
+ }
+
+ line = line.trimmed();
+ line.replace(' ', "");
+
+ if (line == "load(qttest_p4)") {
+ loaded_qttest = true;
+ }
+
+ if (line.startsWith("TARGET=")) {
+ *target = QString::fromLatin1(line.mid(sizeof("TARGET=")-1));
+ if (target->contains('/')) {
+ *target = target->right(target->lastIndexOf('/')+1);
+ }
+ }
+
+ if (loaded_qttest && !target->isEmpty()) {
+ break;
+ }
+ } while(1);
+
+ if (!loaded_qttest) {
+ return false;
+ }
+
+ if (!target->isEmpty() && !target->startsWith("tst_")) {
+ return false;
+ }
+
+ // If no target was set, default to tst_<dirname>
+ if (target->isEmpty()) {
+ *target = "tst_" + QFileInfo(pro_file).baseName();
+ }
+
+ return true;
+}
+
+/*
+ Returns true if a .pro file seems to be a subdirs project.
+ Running qmake to figure this out takes too long.
+*/
+bool looks_like_subdirs(QString const& pro_file)
+{
+ QFile file(pro_file);
+ if (!file.open(QIODevice::ReadOnly)) {
+ return false;
+ }
+
+ do {
+ QByteArray line = file.readLine();
+ if (line.isEmpty()) {
+ break;
+ }
+
+ line = line.trimmed();
+ line.replace(' ', "");
+
+ if (line == "TEMPLATE=subdirs") {
+ return true;
+ }
+ } while(1);
+
+ return false;
+}
+
+/*
+ Returns a list of all subdirs in a given .pro file
+*/
+QStringList tst_MakeTestSelfTest::find_subdirs(QString const& pro_file, FindSubdirsMode mode, QString const& prefix)
+{
+ QStringList out;
+
+ QByteArray features = qgetenv("QMAKEFEATURES");
+
+ if (features.isEmpty()) {
+ features = SRCDIR "/features";
+ }
+ else {
+ features.prepend(SRCDIR "/features"
+#ifdef Q_OS_WIN32
+ ";"
+#else
+ ":"
+#endif
+ );
+ }
+
+ QStringList args;
+ args << pro_file << "-o" << SRCDIR "/dummy_output" << "CONFIG+=dump_subdirs";
+
+ /* Turn on every option there is, to ensure we process every single directory */
+ args
+ << "QT_CONFIG+=dbus"
+ << "QT_CONFIG+=declarative"
+ << "QT_CONFIG+=egl"
+ << "QT_CONFIG+=multimedia"
+ << "QT_CONFIG+=OdfWriter"
+ << "QT_CONFIG+=opengl"
+ << "QT_CONFIG+=openvg"
+ << "QT_CONFIG+=phonon"
+ << "QT_CONFIG+=private_tests"
+ << "QT_CONFIG+=pulseaudio"
+ << "QT_CONFIG+=script"
+ << "QT_CONFIG+=svg"
+ << "QT_CONFIG+=webkit"
+ << "QT_CONFIG+=xmlpatterns"
+ << "CONFIG+=mac"
+ << "CONFIG+=embedded"
+ << "CONFIG+=symbian"
+ ;
+
+
+
+ QString cmd_with_args = QString("qmake %1").arg(args.join(" "));
+
+ QProcess proc;
+
+ proc.setProcessChannelMode(QProcess::MergedChannels);
+
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ env.insert("QMAKEFEATURES", features);
+ proc.setProcessEnvironment(env);
+
+ proc.start("qmake", args);
+ if (!proc.waitForStarted(10000)) {
+ QTest::qFail(qPrintable(QString("Failed to run qmake: %1\nCommand: %2")
+ .arg(proc.errorString())
+ .arg(cmd_with_args)),
+ __FILE__, __LINE__
+ );
+ return out;
+ }
+ if (!proc.waitForFinished(30000)) {
+ QTest::qFail(qPrintable(QString("qmake did not finish within 30 seconds\nCommand: %1\nOutput: %2")
+ .arg(proc.errorString())
+ .arg(cmd_with_args)
+ .arg(QString::fromLocal8Bit(proc.readAll()))),
+ __FILE__, __LINE__
+ );
+ return out;
+ }
+
+ if (proc.exitStatus() != QProcess::NormalExit) {
+ QTest::qFail(qPrintable(QString("qmake crashed\nCommand: %1\nOutput: %2")
+ .arg(cmd_with_args)
+ .arg(QString::fromLocal8Bit(proc.readAll()))),
+ __FILE__, __LINE__
+ );
+ return out;
+ }
+
+ if (proc.exitCode() != 0) {
+ QTest::qFail(qPrintable(QString("qmake exited with code %1\nCommand: %2\nOutput: %3")
+ .arg(proc.exitCode())
+ .arg(cmd_with_args)
+ .arg(QString::fromLocal8Bit(proc.readAll()))),
+ __FILE__, __LINE__
+ );
+ return out;
+ }
+
+ QList<QByteArray> lines = proc.readAll().split('\n');
+ if (!lines.count()) {
+ QTest::qFail(qPrintable(QString("qmake seems to have not output anything\nCommand: %1\n")
+ .arg(cmd_with_args)),
+ __FILE__, __LINE__
+ );
+ return out;
+ }
+
+ foreach (QByteArray const& line, lines) {
+ static const QByteArray marker = "Project MESSAGE: subdir: ";
+ if (line.startsWith(marker)) {
+ QString subdir = QString::fromLocal8Bit(line.mid(marker.size()).trimmed());
+ out << prefix + subdir;
+
+ if (mode == Flat) {
+ continue;
+ }
+
+ // Need full path to subdir
+ QString subdir_filepath = subdir;
+ subdir_filepath.prepend(QFileInfo(pro_file).path() + "/");
+
+ // Add subdirs recursively
+ if (subdir.endsWith(".pro") && looks_like_subdirs(subdir_filepath)) {
+ // Need full path to .pro file
+ out << find_subdirs(subdir_filepath, mode, prefix);
+ }
+
+ if (QFileInfo(subdir_filepath).isDir()) {
+ subdir_filepath += "/" + subdir + ".pro";
+ if (looks_like_subdirs(subdir_filepath)) {
+ out << find_subdirs(subdir_filepath, mode, prefix + subdir + "/");
+ }
+ }
+ }
+ }
+
+ return out;
+}
+
+void tst_MakeTestSelfTest::make_check()
+{
+ /*
+ Run `make check' over the whole tests tree with a custom TESTRUNNER,
+ to verify that the TESTRUNNER mechanism works right.
+ */
+ QString testsDir(SRCDIR "/..");
+ QString checktest(SRCDIR "/checktest/checktest");
+
+#if defined(Q_OS_WIN32) || defined(Q_OS_MAC)
+ if (qgetenv("RUN_SLOW_TESTS").isEmpty()) {
+ QSKIP("This test is too slow to run by default on this OS. Set RUN_SLOW_TESTS=1 to run it.", SkipAll);
+ }
+#endif
+
+#ifdef Q_OS_WIN32
+ checktest.replace("/", "\\");
+ checktest += ".exe";
+#endif
+
+ QProcess make;
+ make.setWorkingDirectory(testsDir);
+
+ QStringList arguments;
+ arguments << "-k";
+ arguments << "check";
+ arguments << QString("TESTRUNNER=%1").arg(checktest);
+
+ // find the right make; from externaltests.cpp
+ static const char makes[] =
+ "nmake.exe\0"
+ "mingw32-make.exe\0"
+ "gmake\0"
+ "make\0"
+ ;
+
+ bool ok = false;
+ for (const char *p = makes; *p; p += strlen(p) + 1) {
+ make.start(p, arguments);
+ if (make.waitForStarted()) {
+ ok = true;
+ break;
+ }
+ }
+
+ if (!ok) {
+ QFAIL("Could not find the right make tool in PATH");
+ }
+
+ QVERIFY(make.waitForFinished(1000 * 60 * 10));
+ QCOMPARE(make.exitStatus(), QProcess::NormalExit);
+
+ int pass = 0;
+ QList<QByteArray> out = make.readAllStandardOutput().split('\n');
+ QStringList fails;
+ foreach (QByteArray line, out) {
+ while (line.endsWith("\r")) {
+ line.chop(1);
+ }
+ if (line.startsWith("CHECKTEST FAIL")) {
+ fails << QString::fromLocal8Bit(line);
+ }
+ if (line.startsWith("CHECKTEST PASS")) {
+ ++pass;
+ }
+ }
+
+ // We can't check that the exit code of make is 0, because some tests
+ // may have failed to compile, but that doesn't mean `make check' is broken.
+ // We do assume there are at least this many unbroken tests, though.
+ QVERIFY2(fails.count() == 0,
+ qPrintable(QString("`make check' doesn't work for %1 tests:\n%2")
+ .arg(fails.count()).arg(fails.join("\n")))
+ );
+ QVERIFY(pass > 50);
+}
+
+QStringList find_test_class(QString const& filename)
+{
+ QStringList out;
+
+ QFile file(filename);
+ if (!file.open(QIODevice::ReadOnly)) {
+ return out;
+ }
+
+ static char const* klass_indicators[] = {
+ "QTEST_MAIN(",
+ "QTEST_APPLESS_MAIN(",
+ "class",
+ "staticconstcharklass[]=\"", /* hax0r tests which define their own metaobject */
+ 0
+ };
+
+ do {
+ QByteArray line = file.readLine();
+ if (line.isEmpty()) {
+ break;
+ }
+
+ line = line.trimmed();
+ line.replace(' ', "");
+
+ for (int i = 0; klass_indicators[i]; ++i) {
+ char const* prefix = klass_indicators[i];
+ if (!line.startsWith(prefix)) {
+ continue;
+ }
+ QByteArray klass = line.mid(strlen(prefix));
+ if (!klass.startsWith("tst_")) {
+ continue;
+ }
+ for (int j = 0; j < klass.size(); ++j) {
+ char c = klass[j];
+ if (c == '_'
+ || (c >= '0' && c <= '9')
+ || (c >= 'A' && c <= 'Z')
+ || (c >= 'a' && c <= 'z')) {
+ continue;
+ }
+ else {
+ klass.truncate(j);
+ break;
+ }
+ }
+ QString klass_str = QString::fromLocal8Bit(klass).toLower();
+ if (!out.contains(klass_str))
+ out << klass_str;
+ break;
+ }
+ } while(1);
+
+ return out;
+}
+
+QTEST_MAIN(tst_MakeTestSelfTest)
+#include "tst_maketestselftest.moc"
diff --git a/tests/auto/other/other.pro b/tests/auto/other/other.pro
new file mode 100644
index 0000000000..30d153156c
--- /dev/null
+++ b/tests/auto/other/other.pro
@@ -0,0 +1,11 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qtmd5 \
+ qtokenautomaton \
+ baselineexample \
+
+!cross_compile: SUBDIRS += \
+ compiler \
+ headersclean \
+ maketestselftest \
+ # atwrapper \ # QTBUG-19452
diff --git a/tests/auto/qtmd5/.gitignore b/tests/auto/other/qtmd5/.gitignore
index 6028bec654..6028bec654 100644
--- a/tests/auto/qtmd5/.gitignore
+++ b/tests/auto/other/qtmd5/.gitignore
diff --git a/tests/auto/other/qtmd5/qtmd5.pro b/tests/auto/other/qtmd5/qtmd5.pro
new file mode 100644
index 0000000000..6973c9e5be
--- /dev/null
+++ b/tests/auto/other/qtmd5/qtmd5.pro
@@ -0,0 +1,15 @@
+include(../../solutions.pri)
+
+!contains(DEFINES, QT_NO_SOLUTIONS) {
+ include($${SOLUTIONBASEDIR}/utils/qtmd5/src/qtmd5.pri)
+}
+
+load(qttest_p4)
+
+SOURCES += tst_qtmd5.cpp
+
+
+QT = core
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/qtmd5/tst_qtmd5.cpp b/tests/auto/other/qtmd5/tst_qtmd5.cpp
index 8c87ba74e9..8c87ba74e9 100644
--- a/tests/auto/qtmd5/tst_qtmd5.cpp
+++ b/tests/auto/other/qtmd5/tst_qtmd5.cpp
diff --git a/tests/auto/qtokenautomaton/.gitignore b/tests/auto/other/qtokenautomaton/.gitignore
index 3ec2df3434..3ec2df3434 100644
--- a/tests/auto/qtokenautomaton/.gitignore
+++ b/tests/auto/other/qtokenautomaton/.gitignore
diff --git a/tests/auto/qtokenautomaton/generateTokenizers.sh b/tests/auto/other/qtokenautomaton/generateTokenizers.sh
index 0fb602aae4..0fb602aae4 100755
--- a/tests/auto/qtokenautomaton/generateTokenizers.sh
+++ b/tests/auto/other/qtokenautomaton/generateTokenizers.sh
diff --git a/tests/auto/qtokenautomaton/qtokenautomaton.pro b/tests/auto/other/qtokenautomaton/qtokenautomaton.pro
index 5e2e590a4b..5e2e590a4b 100644
--- a/tests/auto/qtokenautomaton/qtokenautomaton.pro
+++ b/tests/auto/other/qtokenautomaton/qtokenautomaton.pro
diff --git a/tests/auto/qtokenautomaton/tokenizers/basic/basic.cpp b/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.cpp
index 7f96e41894..7f96e41894 100644
--- a/tests/auto/qtokenautomaton/tokenizers/basic/basic.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.cpp
diff --git a/tests/auto/qtokenautomaton/tokenizers/basic/basic.h b/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.h
index 2f0efa1ffc..2f0efa1ffc 100644
--- a/tests/auto/qtokenautomaton/tokenizers/basic/basic.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.h
diff --git a/tests/auto/qtokenautomaton/tokenizers/basic/basic.xml b/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.xml
index 3d7ac868eb..3d7ac868eb 100644
--- a/tests/auto/qtokenautomaton/tokenizers/basic/basic.xml
+++ b/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.xml
diff --git a/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp b/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp
index 3874777d74..3874777d74 100644
--- a/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp
diff --git a/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h b/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h
index 074bb304ba..074bb304ba 100644
--- a/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h
diff --git a/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.xml b/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.xml
index 282ffc292d..282ffc292d 100644
--- a/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.xml
+++ b/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.xml
diff --git a/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp
index 5f374030bb..5f374030bb 100644
--- a/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp
diff --git a/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.h b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.h
index 735ca68e18..735ca68e18 100644
--- a/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.h
diff --git a/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml
index 604c147c43..604c147c43 100644
--- a/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml
+++ b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml
diff --git a/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp b/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp
index 2d349ad637..2d349ad637 100644
--- a/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp
diff --git a/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.h b/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.h
index f922dfcb50..f922dfcb50 100644
--- a/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.h
diff --git a/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.xml b/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.xml
index 67738cd3bd..67738cd3bd 100644
--- a/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.xml
+++ b/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.xml
diff --git a/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.cpp b/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.cpp
index d45c7302cd..d45c7302cd 100644
--- a/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.cpp
diff --git a/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.h b/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.h
index 12142bc4f0..12142bc4f0 100644
--- a/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.h
diff --git a/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.xml b/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.xml
index 99e1644d87..99e1644d87 100644
--- a/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.xml
+++ b/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.xml
diff --git a/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp b/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp
index 235bd60501..235bd60501 100644
--- a/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp
diff --git a/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.h b/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.h
index 678b3a7903..678b3a7903 100644
--- a/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.h
diff --git a/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.xml b/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.xml
index 533eed85b7..533eed85b7 100644
--- a/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.xml
+++ b/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.xml
diff --git a/tests/auto/qtokenautomaton/tst_qtokenautomaton.cpp b/tests/auto/other/qtokenautomaton/tst_qtokenautomaton.cpp
index cbbf5a2a0d..cbbf5a2a0d 100644
--- a/tests/auto/qtokenautomaton/tst_qtokenautomaton.cpp
+++ b/tests/auto/other/qtokenautomaton/tst_qtokenautomaton.cpp
diff --git a/tests/auto/platformsocketengine/tst_platformsocketengine.cpp b/tests/auto/platformsocketengine/tst_platformsocketengine.cpp
deleted file mode 100644
index 257d412a5d..0000000000
--- a/tests/auto/platformsocketengine/tst_platformsocketengine.cpp
+++ /dev/null
@@ -1,763 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#ifdef Q_OS_WIN
-#include <winsock2.h>
-#endif
-
-#include <qcoreapplication.h>
-
-
-#include <qdatastream.h>
-
-#include <qhostaddress.h>
-#include <qdatetime.h>
-
-#ifdef Q_OS_UNIX
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#endif
-
-#include <stddef.h>
-
-#ifdef Q_OS_SYMBIAN
-#include <QNetworkConfigurationManager>
-#include <QNetworkConfiguration>
-#include <QNetworkSession>
-#include <QScopedPointer>
-#define PLATFORMSOCKETENGINE QSymbianSocketEngine
-#define PLATFORMSOCKETENGINESTRING "QSymbianSocketEngine"
-#include <private/qsymbiansocketengine_p.h>
-#include <private/qcore_symbian_p.h>
-#else
-#define PLATFORMSOCKETENGINE QNativeSocketEngine
-#define PLATFORMSOCKETENGINESTRING "QNativeSocketEngine"
-#include <private/qnativesocketengine_p.h>
-#endif
-
-#include <qstringlist.h>
-
-#include "../network-settings.h"
-
-//TESTED_FILES=network/qnativesocketengine.cpp network/qnativesocketengine_p.h network/qnativesocketengine_unix.cpp
-
-class tst_PlatformSocketEngine : public QObject
-{
- Q_OBJECT
-
-public:
- tst_PlatformSocketEngine();
- virtual ~tst_PlatformSocketEngine();
-
-
-public slots:
- void init();
- void cleanup();
-private slots:
- void construction();
- void simpleConnectToIMAP();
- void udpLoopbackTest();
- void udpIPv6LoopbackTest();
- void broadcastTest();
- void serverTest();
- void udpLoopbackPerformance();
- void tcpLoopbackPerformance();
- void readWriteBufferSize();
- void bind();
- void networkError();
- void setSocketDescriptor();
- void invalidSend();
- void receiveUrgentData();
- void tooManySockets();
-};
-
-tst_PlatformSocketEngine::tst_PlatformSocketEngine()
-{
- Q_SET_DEFAULT_IAP
-}
-
-tst_PlatformSocketEngine::~tst_PlatformSocketEngine()
-{
-}
-
-void tst_PlatformSocketEngine::init()
-{
-}
-
-void tst_PlatformSocketEngine::cleanup()
-{
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::construction()
-{
- PLATFORMSOCKETENGINE socketDevice;
-
- QVERIFY(!socketDevice.isValid());
-
- // Initialize device
- QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(socketDevice.isValid());
- QVERIFY(socketDevice.protocol() == QAbstractSocket::IPv4Protocol);
- QVERIFY(socketDevice.socketType() == QAbstractSocket::TcpSocket);
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
- QVERIFY(socketDevice.socketDescriptor() != -1);
- QVERIFY(socketDevice.localAddress() == QHostAddress());
- QVERIFY(socketDevice.localPort() == 0);
- QVERIFY(socketDevice.peerAddress() == QHostAddress());
- QVERIFY(socketDevice.peerPort() == 0);
- QVERIFY(socketDevice.error() == QAbstractSocket::UnknownSocketError);
-
- QTest::ignoreMessage(QtWarningMsg, PLATFORMSOCKETENGINESTRING "::bytesAvailable() was called in QAbstractSocket::UnconnectedState");
- QVERIFY(socketDevice.bytesAvailable() == 0);
-
- QTest::ignoreMessage(QtWarningMsg, PLATFORMSOCKETENGINESTRING "::hasPendingDatagrams() was called in QAbstractSocket::UnconnectedState");
- QVERIFY(!socketDevice.hasPendingDatagrams());
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::simpleConnectToIMAP()
-{
- PLATFORMSOCKETENGINE socketDevice;
-
- // Initialize device
- QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-
- const bool isConnected = socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143);
- if (!isConnected) {
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
- QVERIFY(socketDevice.waitForWrite());
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- }
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
-
- // Wait for the greeting
- QVERIFY(socketDevice.waitForRead());
-
- // Read the greeting
- qint64 available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- QByteArray array;
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
-
- // Write a logout message
- QByteArray array2 = "ZZZ LOGOUT\r\n";
- QVERIFY(socketDevice.write(array2.data(),
- array2.size()) == array2.size());
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
-
- available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QCOMPARE(array.constData(),
- "* BYE LOGOUT received\r\n"
- "ZZZ OK Completed\r\n");
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
- char c;
- QVERIFY(socketDevice.read(&c, sizeof(c)) == -1);
- QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::udpLoopbackTest()
-{
- PLATFORMSOCKETENGINE udpSocket;
-
- // Initialize device #1
- QVERIFY(udpSocket.initialize(QAbstractSocket::UdpSocket));
- QVERIFY(udpSocket.isValid());
- QVERIFY(udpSocket.socketDescriptor() != -1);
- QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv4Protocol);
- QVERIFY(udpSocket.socketType() == QAbstractSocket::UdpSocket);
- QVERIFY(udpSocket.state() == QAbstractSocket::UnconnectedState);
-
- // Bind #1 to localhost
- QVERIFY(udpSocket.bind(QHostAddress("127.0.0.1"), 0));
- QVERIFY(udpSocket.state() == QAbstractSocket::BoundState);
- quint16 port = udpSocket.localPort();
- QVERIFY(port != 0);
-
- // Initialize device #2
- PLATFORMSOCKETENGINE udpSocket2;
- QVERIFY(udpSocket2.initialize(QAbstractSocket::UdpSocket));
-
- // Connect device #2 to #1
- QVERIFY(udpSocket2.connectToHost(QHostAddress("127.0.0.1"), port));
- QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState);
-
- // Write a message to #1
- QByteArray message1 = "hei der";
- QVERIFY(udpSocket2.write(message1.data(),
- message1.size()) == message1.size());
-
- // Read the message from #2
- QVERIFY(udpSocket.waitForRead());
- QVERIFY(udpSocket.hasPendingDatagrams());
- qint64 available = udpSocket.pendingDatagramSize();
- QVERIFY(available > 0);
- QByteArray answer;
- answer.resize(available);
- QHostAddress senderAddress;
- quint16 senderPort = 0;
- QVERIFY(udpSocket.readDatagram(answer.data(), answer.size(),
- &senderAddress,
- &senderPort) == message1.size());
- QVERIFY(senderAddress == QHostAddress("127.0.0.1"));
- QVERIFY(senderPort != 0);
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::udpIPv6LoopbackTest()
-{
- PLATFORMSOCKETENGINE udpSocket;
-
- // Initialize device #1
- bool init = udpSocket.initialize(QAbstractSocket::UdpSocket, QAbstractSocket::IPv6Protocol);
-
- if (!init) {
- QVERIFY(udpSocket.error() == QAbstractSocket::UnsupportedSocketOperationError);
- } else {
- QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv6Protocol);
-
- // Bind #1 to localhost
- QVERIFY(udpSocket.bind(QHostAddress("::1"), 0));
- QVERIFY(udpSocket.state() == QAbstractSocket::BoundState);
- quint16 port = udpSocket.localPort();
- QVERIFY(port != 0);
-
- // Initialize device #2
- PLATFORMSOCKETENGINE udpSocket2;
- QVERIFY(udpSocket2.initialize(QAbstractSocket::UdpSocket, QAbstractSocket::IPv6Protocol));
-
- // Connect device #2 to #1
- QVERIFY(udpSocket2.connectToHost(QHostAddress("::1"), port));
- QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState);
-
- // Write a message to #1
- QByteArray message1 = "hei der";
- QVERIFY(udpSocket2.write(message1.data(),
- message1.size()) == message1.size());
-
- // Read the message from #2
- QVERIFY(udpSocket.waitForRead());
- QVERIFY(udpSocket.hasPendingDatagrams());
- qint64 available = udpSocket.pendingDatagramSize();
- QVERIFY(available > 0);
- QByteArray answer;
- answer.resize(available);
- QHostAddress senderAddress;
- quint16 senderPort = 0;
- QVERIFY(udpSocket.readDatagram(answer.data(), answer.size(),
- &senderAddress,
- &senderPort) == message1.size());
- QVERIFY(senderAddress == QHostAddress("::1"));
- QVERIFY(senderPort != 0);
- }
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::broadcastTest()
-{
-#ifdef Q_OS_SYMBIAN
- //broadcast isn't supported on loopback connections, but is on WLAN
-#ifndef QT_NO_BEARERMANAGEMENT
- QScopedPointer<QNetworkConfigurationManager> netConfMan(new QNetworkConfigurationManager());
- QNetworkConfiguration networkConfiguration(netConfMan->defaultConfiguration());
- QScopedPointer<QNetworkSession> networkSession(new QNetworkSession(networkConfiguration));
- if (!networkSession->isOpen()) {
- networkSession->open();
- bool ok = networkSession->waitForOpened(30000);
- qDebug() << networkSession->isOpen() << networkSession->error() << networkSession->errorString();
- QVERIFY(ok);
- }
-#endif
-#endif
-#ifdef Q_OS_AIX
- QSKIP("Broadcast does not work on darko", SkipAll);
-#endif
- PLATFORMSOCKETENGINE broadcastSocket;
-
- // Initialize a regular Udp socket
- QVERIFY(broadcastSocket.initialize(QAbstractSocket::UdpSocket));
-
- // Bind to any port on all interfaces
- QVERIFY(broadcastSocket.bind(QHostAddress::Any, 0));
- QVERIFY(broadcastSocket.state() == QAbstractSocket::BoundState);
- quint16 port = broadcastSocket.localPort();
- QVERIFY(port > 0);
-
- // Broadcast an inappropriate troll message
- QByteArray trollMessage
- = "MOOT wtf is a MOOT? talk english not your sutpiD ENGLISH.";
- qint64 written = broadcastSocket.writeDatagram(trollMessage.data(),
- trollMessage.size(),
- QHostAddress::Broadcast,
- port);
-
-#ifdef Q_OS_SYMBIAN
- //On symbian, broadcasts return 0 bytes written if none of the interfaces support it.
- //Notably the loopback interfaces do not. (though they do support multicast!?)
- if (written == 0)
- QEXPECT_FAIL("", "No active interface supports broadcast", Abort);
-#endif
- QCOMPARE((int)written, trollMessage.size());
-
- // Wait until we receive it ourselves
-#if defined(Q_OS_FREEBSD)
- QEXPECT_FAIL("", "Broadcasting to 255.255.255.255 does not work on FreeBSD", Abort);
-#endif
- QVERIFY(broadcastSocket.waitForRead());
- QVERIFY(broadcastSocket.hasPendingDatagrams());
-
- qlonglong available = broadcastSocket.pendingDatagramSize();
- QByteArray response;
- response.resize(available);
- QVERIFY(broadcastSocket.readDatagram(response.data(), response.size())
- == response.size());
- QCOMPARE(response, trollMessage);
-
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::serverTest()
-{
- PLATFORMSOCKETENGINE server;
-
- // Initialize a Tcp socket
- QVERIFY(server.initialize(QAbstractSocket::TcpSocket));
-
- // Bind to any port on all interfaces
- QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
- QVERIFY(server.state() == QAbstractSocket::BoundState);
- quint16 port = server.localPort();
-
- // Listen for incoming connections
- QVERIFY(server.listen());
- QVERIFY(server.state() == QAbstractSocket::ListeningState);
-
- // Initialize a Tcp socket
- PLATFORMSOCKETENGINE client;
- QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
- if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) {
- QVERIFY(client.state() == QAbstractSocket::ConnectingState);
- QVERIFY(client.waitForWrite());
- QVERIFY(client.state() == QAbstractSocket::ConnectedState);
- }
-
- // The server accepts the connection
- int socketDescriptor = server.accept();
- QVERIFY(socketDescriptor > 0);
-
- // A socket device is initialized on the server side, passing the
- // socket descriptor from accept(). It's pre-connected.
- PLATFORMSOCKETENGINE serverSocket;
- QVERIFY(serverSocket.initialize(socketDescriptor));
- QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
-
- // The server socket sends a greeting to the clietn
- QByteArray greeting = "Greetings!";
- QVERIFY(serverSocket.write(greeting.data(),
- greeting.size()) == greeting.size());
-
- // The client waits for the greeting to arrive
- QVERIFY(client.waitForRead());
- qint64 available = client.bytesAvailable();
- QVERIFY(available > 0);
-
- // The client reads the greeting and checks that it's correct
- QByteArray response;
- response.resize(available);
- QVERIFY(client.read(response.data(),
- response.size()) == response.size());
- QCOMPARE(response, greeting);
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::udpLoopbackPerformance()
-{
-#ifdef SYMBIAN_WINSOCK_CONNECTIVITY
- QSKIP("Not working on Emulator without WinPCAP", SkipAll);
-#endif
- PLATFORMSOCKETENGINE udpSocket;
-
- // Initialize device #1
- QVERIFY(udpSocket.initialize(QAbstractSocket::UdpSocket));
- QVERIFY(udpSocket.isValid());
- QVERIFY(udpSocket.socketDescriptor() != -1);
- QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv4Protocol);
- QVERIFY(udpSocket.socketType() == QAbstractSocket::UdpSocket);
- QVERIFY(udpSocket.state() == QAbstractSocket::UnconnectedState);
-
- // Bind #1 to localhost
- QVERIFY(udpSocket.bind(QHostAddress("127.0.0.1"), 0));
- QVERIFY(udpSocket.state() == QAbstractSocket::BoundState);
- quint16 port = udpSocket.localPort();
- QVERIFY(port != 0);
-
- // Initialize device #2
- PLATFORMSOCKETENGINE udpSocket2;
- QVERIFY(udpSocket2.initialize(QAbstractSocket::UdpSocket));
-
- // Connect device #2 to #1
- QVERIFY(udpSocket2.connectToHost(QHostAddress("127.0.0.1"), port));
- QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState);
-
- const int messageSize = 8192;
- QByteArray message1(messageSize, '@');
- QByteArray answer(messageSize, '@');
-
- QHostAddress localhost = QHostAddress::LocalHost;
-
- qlonglong readBytes = 0;
- QTime timer;
- timer.start();
- while (timer.elapsed() < 5000) {
- udpSocket2.write(message1.data(), message1.size());
- udpSocket.waitForRead();
- while (udpSocket.hasPendingDatagrams()) {
- readBytes += (qlonglong) udpSocket.readDatagram(answer.data(),
- answer.size());
- }
- }
-
- qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
- readBytes / (1024.0 * 1024.0),
- timer.elapsed() / 1024.0,
- (readBytes / (timer.elapsed() / 1000.0)) / (1024 * 1024));
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::tcpLoopbackPerformance()
-{
- PLATFORMSOCKETENGINE server;
-
- // Initialize a Tcp socket
- QVERIFY(server.initialize(QAbstractSocket::TcpSocket));
-
- // Bind to any port on all interfaces
- QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
- QVERIFY(server.state() == QAbstractSocket::BoundState);
- quint16 port = server.localPort();
-
- // Listen for incoming connections
- QVERIFY(server.listen());
- QVERIFY(server.state() == QAbstractSocket::ListeningState);
-
- // Initialize a Tcp socket
- PLATFORMSOCKETENGINE client;
- QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
-
- // Connect to our server
- if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) {
- QVERIFY(client.state() == QAbstractSocket::ConnectingState);
- QVERIFY(client.waitForWrite());
- QVERIFY(client.state() == QAbstractSocket::ConnectedState);
- }
-
- // The server accepts the connection
- int socketDescriptor = server.accept();
- QVERIFY(socketDescriptor > 0);
-
- // A socket device is initialized on the server side, passing the
- // socket descriptor from accept(). It's pre-connected.
- PLATFORMSOCKETENGINE serverSocket;
- QVERIFY(serverSocket.initialize(socketDescriptor));
- QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
-
-#if defined (Q_OS_SYMBIAN) && defined (__WINS__)
- const int messageSize = 1024 * 16;
-#else
- const int messageSize = 1024 * 256;
-#endif
- QByteArray message1(messageSize, '@');
- QByteArray answer(messageSize, '@');
-
- QTime timer;
- timer.start();
- qlonglong readBytes = 0;
- while (timer.elapsed() < 5000) {
- qlonglong written = serverSocket.write(message1.data(), message1.size());
- while (written > 0) {
- client.waitForRead();
- if (client.bytesAvailable() > 0) {
- qlonglong readNow = client.read(answer.data(), answer.size());
- written -= readNow;
- readBytes += readNow;
- }
- }
- }
-
- qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
- readBytes / (1024.0 * 1024.0),
- timer.elapsed() / 1024.0,
- (readBytes / (timer.elapsed() / 1000.0)) / (1024 * 1024));
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::readWriteBufferSize()
-{
- PLATFORMSOCKETENGINE device;
-
- QVERIFY(device.initialize(QAbstractSocket::TcpSocket));
-
- qint64 bufferSize = device.receiveBufferSize();
- QVERIFY(bufferSize != -1);
- device.setReceiveBufferSize(bufferSize + 1);
-#if defined(Q_OS_WINCE)
- QEXPECT_FAIL(0, "Not supported by default on WinCE", Continue);
-#endif
- QVERIFY(device.receiveBufferSize() > bufferSize);
-
- bufferSize = device.sendBufferSize();
- QVERIFY(bufferSize != -1);
- device.setSendBufferSize(bufferSize + 1);
- QVERIFY(device.sendBufferSize() > bufferSize);
-
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::tooManySockets()
-{
-#if defined Q_OS_WIN
- QSKIP("Certain windows machines suffocate and spend too much time in this test.", SkipAll);
-#endif
- QList<PLATFORMSOCKETENGINE *> sockets;
- PLATFORMSOCKETENGINE *socketLayer = 0;
- for (;;) {
- socketLayer = new PLATFORMSOCKETENGINE;
- sockets.append(socketLayer);
-
- if (!socketLayer->initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol))
- break;
- }
-
- QCOMPARE(socketLayer->error(), QAbstractSocket::SocketResourceError);
-
- qDeleteAll(sockets);
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::bind()
-{
-#if !defined Q_OS_WIN && !defined Q_OS_SYMBIAN
- PLATFORMSOCKETENGINE binder;
- QVERIFY(binder.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(!binder.bind(QHostAddress::Any, 82));
- QVERIFY(binder.error() == QAbstractSocket::SocketAccessError);
-#endif
-
- PLATFORMSOCKETENGINE binder2;
- QVERIFY(binder2.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(binder2.bind(QHostAddress::Any, 31180));
-
- PLATFORMSOCKETENGINE binder3;
- QVERIFY(binder3.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(!binder3.bind(QHostAddress::Any, 31180));
-
-#ifdef SYMBIAN_WINSOCK_CONNECTIVITY
- qDebug("On Symbian Emulator (WinSock) we get EADDRNOTAVAIL instead of EADDRINUSE");
- QVERIFY(binder3.error() == QAbstractSocket::SocketAddressNotAvailableError);
-#else
- QVERIFY(binder3.error() == QAbstractSocket::AddressInUseError);
-#endif
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::networkError()
-{
- PLATFORMSOCKETENGINE client;
-
- QVERIFY(client.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
-
- const bool isConnected = client.connectToHost(QtNetworkSettings::serverIP(), 143);
- if (!isConnected) {
- QVERIFY(client.state() == QAbstractSocket::ConnectingState);
- QVERIFY(client.waitForWrite());
- QVERIFY(client.state() == QAbstractSocket::ConnectedState);
- }
- QVERIFY(client.state() == QAbstractSocket::ConnectedState);
-
- // An unexpected network error!
-#ifdef Q_OS_WIN
- // could use shutdown to produce different errors
- ::closesocket(client.socketDescriptor());
-#elif defined(Q_OS_SYMBIAN)
- RSocket sock;
- QVERIFY(QSymbianSocketManager::instance().lookupSocket(client.socketDescriptor(), sock));
- TRequestStatus stat;
- sock.Shutdown(RSocket::EImmediate, stat);
- User::WaitForRequest(stat);
-#else
- ::close(client.socketDescriptor());
-#endif
-
- QVERIFY(client.read(0, 0) == -1);
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::setSocketDescriptor()
-{
- PLATFORMSOCKETENGINE socket1;
- QVERIFY(socket1.initialize(QAbstractSocket::TcpSocket));
-
- PLATFORMSOCKETENGINE socket2;
- QVERIFY(socket2.initialize(socket1.socketDescriptor()));
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::invalidSend()
-{
- PLATFORMSOCKETENGINE socket;
- QVERIFY(socket.initialize(QAbstractSocket::TcpSocket));
-
- QTest::ignoreMessage(QtWarningMsg, PLATFORMSOCKETENGINESTRING "::writeDatagram() was"
- " called by a socket other than QAbstractSocket::UdpSocket");
- QCOMPARE(socket.writeDatagram("hei", 3, QHostAddress::LocalHost, 143),
- (qlonglong) -1);
-}
-
-//---------------------------------------------------------------------------
-void tst_PlatformSocketEngine::receiveUrgentData()
-{
- PLATFORMSOCKETENGINE server;
-
- QVERIFY(server.initialize(QAbstractSocket::TcpSocket));
-
- // Bind to any port on all interfaces
- QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
- QVERIFY(server.state() == QAbstractSocket::BoundState);
- quint16 port = server.localPort();
-
- QVERIFY(server.listen());
- QVERIFY(server.state() == QAbstractSocket::ListeningState);
-
- PLATFORMSOCKETENGINE client;
- QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
-
- if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) {
- QVERIFY(client.state() == QAbstractSocket::ConnectingState);
- QVERIFY(client.waitForWrite());
- QVERIFY(client.state() == QAbstractSocket::ConnectedState);
- }
-
- int socketDescriptor = server.accept();
- QVERIFY(socketDescriptor > 0);
-
- PLATFORMSOCKETENGINE serverSocket;
- QVERIFY(serverSocket.initialize(socketDescriptor));
- QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
-
- char msg;
- int available;
- QByteArray response;
-
-#if defined Q_OS_HPUX
- QSKIP("Native OOB data test doesn't work on HP-UX.", SkipAll);
-#elif defined (Q_OS_WINCE)
- QSKIP("Native OOB data test doesn't work on WinCE.", SkipAll);
-#endif
-
- // The server sends an urgent message
- msg = 'Q';
-#if defined(Q_OS_SYMBIAN)
- RSocket sock;
- QVERIFY(QSymbianSocketManager::instance().lookupSocket(socketDescriptor, sock));
- TRequestStatus stat;
- TSockXfrLength len;
- sock.Send(TPtrC8((TUint8*)&msg,1), KSockWriteUrgent, stat, len);
- User::WaitForRequest(stat);
- QVERIFY(stat == KErrNone);
- QCOMPARE(len(), 1);
-#else
- QCOMPARE(int(::send(socketDescriptor, &msg, sizeof(msg), MSG_OOB)), 1);
-#endif
-
- // The client receives the urgent message
- QVERIFY(client.waitForRead());
- available = client.bytesAvailable();
- QCOMPARE(available, 1);
- response.resize(available);
- QCOMPARE(client.read(response.data(), response.size()), qint64(1));
- QCOMPARE(response.at(0), msg);
-
- // The client sends an urgent message
- msg = 'T';
- int clientDescriptor = client.socketDescriptor();
-#if defined(Q_OS_SYMBIAN)
- QVERIFY(QSymbianSocketManager::instance().lookupSocket(clientDescriptor, sock));
- sock.Send(TPtrC8((TUint8*)&msg,1), KSockWriteUrgent, stat, len);
- User::WaitForRequest(stat);
- QVERIFY(stat == KErrNone);
- QCOMPARE(len(), 1);
-#else
- QCOMPARE(int(::send(clientDescriptor, &msg, sizeof(msg), MSG_OOB)), 1);
-#endif
-
- // The server receives the urgent message
- QVERIFY(serverSocket.waitForRead());
- available = serverSocket.bytesAvailable();
- QCOMPARE(available, 1);
- response.resize(available);
- QCOMPARE(serverSocket.read(response.data(), response.size()), qint64(1));
- QCOMPARE(response.at(0), msg);
-
-}
-
-QTEST_MAIN(tst_PlatformSocketEngine)
-#include "tst_platformsocketengine.moc"
diff --git a/tests/auto/qabstractbutton/qabstractbutton.pro b/tests/auto/qabstractbutton/qabstractbutton.pro
index 2e52585700..15d90ed4e1 100644
--- a/tests/auto/qabstractbutton/qabstractbutton.pro
+++ b/tests/auto/qabstractbutton/qabstractbutton.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qabstractbutton.cpp
diff --git a/tests/auto/qabstractitemmodel/qabstractitemmodel.pro b/tests/auto/qabstractitemmodel/qabstractitemmodel.pro
deleted file mode 100644
index 52c4e96f99..0000000000
--- a/tests/auto/qabstractitemmodel/qabstractitemmodel.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-load(qttest_p4)
-
-INCLUDEPATH += $$PWD/../modeltest
-
-SOURCES += tst_qabstractitemmodel.cpp ../modeltest/dynamictreemodel.cpp ../modeltest/modeltest.cpp
-HEADERS += ../modeltest/dynamictreemodel.h ../modeltest/modeltest.h
-
-
-
diff --git a/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
deleted file mode 100644
index cf4cfd76ec..0000000000
--- a/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
+++ /dev/null
@@ -1,1816 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <QtCore/QtCore>
-
-#include <QtGui/QSortFilterProxyModel>
-
-//TESTED_CLASS=QAbstractListModel QAbstractTableModel
-//TESTED_FILES=
-
-#include "dynamictreemodel.h"
-
-Q_DECLARE_METATYPE(QModelIndex)
-
-/*!
- Note that this doesn't test models, but any functionality that QAbstractItemModel shoudl provide
- */
-class tst_QAbstractItemModel : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QAbstractItemModel();
- virtual ~tst_QAbstractItemModel();
-
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-
-private slots:
- void index();
- void parent();
- void hasChildren();
- void _data();
- void headerData();
- void itemData();
- void itemFlags();
- void match();
- void dropMimeData_data();
- void dropMimeData();
- void changePersistentIndex();
- void movePersistentIndex();
-
- void insertRows();
- void insertColumns();
- void removeRows();
- void removeColumns();
-
- void reset();
-
- void complexChangesWithPersistent();
-
- void testMoveSameParentUp_data();
- void testMoveSameParentUp();
-
- void testMoveSameParentDown_data();
- void testMoveSameParentDown();
-
- void testMoveToGrandParent_data();
- void testMoveToGrandParent();
-
- void testMoveToSibling_data();
- void testMoveToSibling();
-
- void testMoveToUncle_data();
- void testMoveToUncle();
-
- void testMoveToDescendants();
-
- void testMoveWithinOwnRange_data();
- void testMoveWithinOwnRange();
-
- void testMoveThroughProxy();
-
- void testReset();
-
-
-private:
- DynamicTreeModel *m_model;
-
-};
-
-/*!
- Test model that impliments the pure vitual functions and anything else that is
- needed.
-
- It is a table implimented as a vector of vectors of strings.
- */
-class QtTestModel: public QAbstractItemModel
-{
-public:
- QtTestModel(int rows, int columns, QObject *parent = 0);
- QtTestModel(const QVector<QVector<QString> > tbl, QObject *parent = 0);
- QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
- QModelIndex parent(const QModelIndex &) const;
- int rowCount(const QModelIndex &parent) const;
- int columnCount(const QModelIndex &parent) const;
- bool hasChildren(const QModelIndex &) const;
- QVariant data(const QModelIndex &idx, int) const;
- bool setData(const QModelIndex &idx, const QVariant &value, int);
- bool insertRows(int row, int count, const QModelIndex &parent= QModelIndex());
- bool insertColumns(int column, int count, const QModelIndex &parent= QModelIndex());
- void setPersistent(const QModelIndex &from, const QModelIndex &to);
- bool removeRows ( int row, int count, const QModelIndex & parent = QModelIndex() );
- bool removeColumns( int column, int count, const QModelIndex & parent = QModelIndex());
- void reset();
-
- int cCount, rCount;
- mutable bool wrongIndex;
- QVector<QVector<QString> > table;
-};
-
-QtTestModel::QtTestModel(int rows, int columns, QObject *parent)
- : QAbstractItemModel(parent), cCount(columns), rCount(rows), wrongIndex(false) {
-
- table.resize(rows);
- for (int r = 0; r < rows; ++r) {
- table[r].resize(columns);
- for (int c = 0; c < columns; ++c)
- table[r][c] = QString("%1/%2").arg(r).arg(c);
- }
-}
-
-QtTestModel::QtTestModel(const QVector<QVector<QString> > tbl, QObject *parent)
- : QAbstractItemModel(parent), wrongIndex(false) {
- table = tbl;
- rCount = tbl.count();
- cCount = tbl.at(0).count();
-}
-
-QModelIndex QtTestModel::index(int row, int column, const QModelIndex &parent) const
- { return hasIndex(row, column, parent) ? createIndex(row, column, 0) : QModelIndex(); }
-
-QModelIndex QtTestModel::parent(const QModelIndex &) const { return QModelIndex(); }
-int QtTestModel::rowCount(const QModelIndex &parent) const { return parent.isValid() ? 0 : rCount; }
-int QtTestModel::columnCount(const QModelIndex &parent) const { return parent.isValid() ? 0 : cCount; }
-bool QtTestModel::hasChildren(const QModelIndex &) const { return false; }
-
-QVariant QtTestModel::data(const QModelIndex &idx, int) const
-{
- if (idx.row() < 0 || idx.column() < 0 || idx.column() > cCount || idx.row() > rCount) {
- wrongIndex = true;
- qWarning("got invalid modelIndex %d/%d", idx.row(), idx.column());
- return QVariant();
- }
- return table.at(idx.row()).at(idx.column());
-}
-
-bool QtTestModel::setData(const QModelIndex &idx, const QVariant &value, int)
-{
- table[idx.row()][idx.column()] = value.toString();
- return true;
-}
-
-bool QtTestModel::insertRows(int row, int count, const QModelIndex &parent)
-{
- QAbstractItemModel::beginInsertRows(parent, row, row + count - 1);
- int cc = columnCount(parent);
- table.insert(row, count, QVector<QString>(cc));
- rCount = table.count();
- QAbstractItemModel::endInsertRows();
- return true;
-}
-
-bool QtTestModel::insertColumns(int column, int count, const QModelIndex &parent)
-{
- QAbstractItemModel::beginInsertColumns(parent, column, column + count - 1);
- int rc = rowCount(parent);
- for (int i = 0; i < rc; ++i)
- table[i].insert(column, 1, "");
- cCount = table.at(0).count();
- QAbstractItemModel::endInsertColumns();
- return true;
-}
-
-void QtTestModel::setPersistent(const QModelIndex &from, const QModelIndex &to)
-{
- changePersistentIndex(from, to);
-}
-
-bool QtTestModel::removeRows( int row, int count, const QModelIndex & parent)
-{
- QAbstractItemModel::beginRemoveRows(parent, row, row + count - 1);
-
- for (int r = row+count-1; r >= row; --r)
- table.remove(r);
- rCount = table.count();
-
- QAbstractItemModel::endRemoveRows();
- return true;
-}
-
-bool QtTestModel::removeColumns(int column, int count, const QModelIndex & parent)
-{
- QAbstractItemModel::beginRemoveColumns(parent, column, column + count - 1);
-
- for (int c = column+count-1; c > column; --c)
- for (int r = 0; r < rCount; ++r)
- table[r].remove(c);
-
- cCount = table.at(0).count();
-
- QAbstractItemModel::endRemoveColumns();
- return true;
-}
-
-void QtTestModel::reset()
-{
- QAbstractItemModel::reset();
-}
-
-tst_QAbstractItemModel::tst_QAbstractItemModel()
-{
-}
-
-tst_QAbstractItemModel::~tst_QAbstractItemModel()
-{
-}
-
-/**
- * The source Model *must* be initialized before the _data function, since the _data function uses QModelIndexes to reference the items in the tables.
- * Therefore, we must initialize it globally.
- */
-
-void tst_QAbstractItemModel::initTestCase()
-{
- qRegisterMetaType<QModelIndex>("QModelIndex");
-}
-
-void tst_QAbstractItemModel::cleanupTestCase()
-{
-
-}
-
-void tst_QAbstractItemModel::init()
-{
- m_model = new DynamicTreeModel(this);
-
- ModelInsertCommand *insertCommand = new ModelInsertCommand(m_model, this);
- insertCommand->setNumCols(4);
- insertCommand->setStartRow(0);
- insertCommand->setEndRow(9);
- insertCommand->doCommand();
-
- insertCommand = new ModelInsertCommand(m_model, this);
- insertCommand->setAncestorRowNumbers(QList<int>() << 5);
- insertCommand->setNumCols(4);
- insertCommand->setStartRow(0);
- insertCommand->setEndRow(9);
- insertCommand->doCommand();
-}
-
-void tst_QAbstractItemModel::cleanup()
-{
-
-}
-
-/*
- tests
-*/
-
-void tst_QAbstractItemModel::index()
-{
- QtTestModel model(1, 1);
- QModelIndex idx = model.index(0, 0, QModelIndex());
- QVERIFY(idx.isValid());
-}
-
-void tst_QAbstractItemModel::parent()
-{
- QtTestModel model(1, 1);
- QModelIndex idx = model.index(0, 0, QModelIndex());
- QModelIndex par = model.parent(idx);
- QVERIFY(!par.isValid());
-}
-
-void tst_QAbstractItemModel::hasChildren()
-{
- QtTestModel model(1, 1);
- QModelIndex idx = model.index(0, 0, QModelIndex());
- QVERIFY(model.hasChildren(idx) == false);
-}
-
-void tst_QAbstractItemModel::_data()
-{
- QtTestModel model(1, 1);
- QModelIndex idx = model.index(0, 0, QModelIndex());
- QVERIFY(idx.isValid());
- QCOMPARE(model.data(idx, Qt::DisplayRole).toString(), QString("0/0"));
-
- // Default does nothing
- QCOMPARE(model.setHeaderData(0, Qt::Horizontal, QVariant(0), 0), false);
-}
-
-void tst_QAbstractItemModel::headerData()
-{
- QtTestModel model(1, 1);
- QCOMPARE(model.headerData(0, Qt::Horizontal, Qt::DisplayRole).toString(),
- QString("1"));
-
- // Default text alignment for header must be invalid
- QVERIFY( !model.headerData(0, Qt::Horizontal, Qt::TextAlignmentRole).isValid() );
-}
-
-void tst_QAbstractItemModel::itemData()
-{
- QtTestModel model(1, 1);
- QModelIndex idx = model.index(0, 0, QModelIndex());
- QVERIFY(idx.isValid());
- QMap<int, QVariant> dat = model.itemData(idx);
- QCOMPARE(dat.count(Qt::DisplayRole), 1);
- QCOMPARE(dat.value(Qt::DisplayRole).toString(), QString("0/0"));
-}
-
-void tst_QAbstractItemModel::itemFlags()
-{
- QtTestModel model(1, 1);
- QModelIndex idx = model.index(0, 0, QModelIndex());
- QVERIFY(idx.isValid());
- Qt::ItemFlags flags = model.flags(idx);
- QCOMPARE(Qt::ItemIsSelectable|Qt::ItemIsEnabled, flags);
-}
-
-void tst_QAbstractItemModel::match()
-{
- QtTestModel model(4, 1);
- QModelIndex start = model.index(0, 0, QModelIndex());
- QVERIFY(start.isValid());
- QModelIndexList res = model.match(start, Qt::DisplayRole, QVariant("1"), 3);
- QCOMPARE(res.count(), 1);
- QModelIndex idx = model.index(1, 0, QModelIndex());
- bool areEqual = (idx == res.first());
- QVERIFY(areEqual);
-
- model.setData(model.index(0, 0, QModelIndex()), "bat", Qt::DisplayRole);
- model.setData(model.index(1, 0, QModelIndex()), "cat", Qt::DisplayRole);
- model.setData(model.index(2, 0, QModelIndex()), "dog", Qt::DisplayRole);
- model.setData(model.index(3, 0, QModelIndex()), "boar", Qt::DisplayRole);
-
- res = model.match(start, Qt::DisplayRole, QVariant("dog"), -1, Qt::MatchExactly);
- QCOMPARE(res.count(), 1);
- res = model.match(start, Qt::DisplayRole, QVariant("a"), -1, Qt::MatchContains);
- QCOMPARE(res.count(), 3);
- res = model.match(start, Qt::DisplayRole, QVariant("b"), -1, Qt::MatchStartsWith);
- QCOMPARE(res.count(), 2);
- res = model.match(start, Qt::DisplayRole, QVariant("t"), -1, Qt::MatchEndsWith);
- QCOMPARE(res.count(), 2);
- res = model.match(start, Qt::DisplayRole, QVariant("*a*"), -1, Qt::MatchWildcard);
- QCOMPARE(res.count(), 3);
- res = model.match(start, Qt::DisplayRole, QVariant(".*O.*"), -1, Qt::MatchRegExp);
- QCOMPARE(res.count(), 2);
- res = model.match(start, Qt::DisplayRole, QVariant(".*O.*"), -1, Qt::MatchRegExp | Qt::MatchCaseSensitive);
- QCOMPARE(res.count(), 0);
- res = model.match(start, Qt::DisplayRole, QVariant("BOAR"), -1, Qt::MatchFixedString);
- QCOMPARE(res.count(), 1);
- res = model.match(start, Qt::DisplayRole, QVariant("bat"), -1,
- Qt::MatchFixedString | Qt::MatchCaseSensitive);
- QCOMPARE(res.count(), 1);
-}
-
-typedef QPair<int, int> Position;
-typedef QVector<QPair<int, int> > Selection;
-typedef QVector<QVector<QString> > StringTable;
-typedef QVector<QString> StringTableRow;
-Q_DECLARE_METATYPE(Position)
-Q_DECLARE_METATYPE(Selection)
-Q_DECLARE_METATYPE(StringTable)
-
-static StringTableRow qStringTableRow(const QString &s1, const QString &s2, const QString &s3)
-{
- StringTableRow row;
- row << s1 << s2 << s3;
- return row;
-}
-
-#ifdef Q_CC_MSVC
-# define STRINGTABLE (StringTable())
-#else
-# define STRINGTABLE StringTable()
-#endif
-
-void tst_QAbstractItemModel::dropMimeData_data()
-{
- QTest::addColumn<StringTable>("src_table"); // drag source
- QTest::addColumn<StringTable>("dst_table"); // drop target
- QTest::addColumn<Selection>("selection"); // dragged items
- QTest::addColumn<Position>("dst_position"); // drop position
- QTest::addColumn<StringTable>("res_table"); // expected result
-
- {
- QTest::newRow("2x2 dropped at [0, 0]")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection
- << Position(0, 0) << Position(0, 1)
- << Position(1, 0) << Position(1, 1))
- << Position(0, 0) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("A", "B", "" ))
- << (qStringTableRow("D", "E", "" ))
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")));
- }
-
- {
- QTest::newRow("2x2 dropped at [1, 0]")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection
- << Position(0, 0) << Position(0, 1)
- << Position(1, 0) << Position(1, 1))
- << Position(1, 0) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("A", "B", "" ))
- << (qStringTableRow("D", "E", "" ))
- << (qStringTableRow("3", "4", "5")));
- }
-
- {
- QTest::newRow("2x2 dropped at [3, 0]")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection
- << Position(0, 0) << Position(0, 1)
- << Position(1, 0) << Position(1, 1))
- << Position(3, 0) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5"))
- << (qStringTableRow("A", "B", "" ))
- << (qStringTableRow("D", "E", "" )));
- }
-
- {
- QTest::newRow("2x2 dropped at [0, 1]")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection
- << Position(0, 0) << Position(0, 1)
- << Position(1, 0) << Position(1, 1))
- << Position(0, 1) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("" , "A", "B"))
- << (qStringTableRow("" , "D", "E"))
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")));
- }
-
- {
- QTest::newRow("2x2 dropped at [0, 2] (line break)")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection
- << Position(0, 0) << Position(0, 1)
- << Position(1, 0) << Position(1, 1))
- << Position(0, 2) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("" , "" , "A"))
- << (qStringTableRow("" , "" , "D"))
- << (qStringTableRow("" , "" , "B"))
- << (qStringTableRow("" , "" , "E"))
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")));
- }
-
- {
- QTest::newRow("2x2 dropped at [3, 2] (line break)")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection
- << Position(0, 0) << Position(0, 1)
- << Position(1, 0) << Position(1, 1))
- << Position(3, 2) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5"))
- << (qStringTableRow("" , "" , "A"))
- << (qStringTableRow("" , "" , "D"))
- << (qStringTableRow("" , "" , "B"))
- << (qStringTableRow("" , "" , "E")));
- }
-
- {
- QTest::newRow("non-square dropped at [0, 0]")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection
- << Position(0, 0) << Position(0, 1)
- << Position(1, 0))
- << Position(0, 0) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("A", "B", "" ))
- << (qStringTableRow("D", "" , "" ))
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")));
- }
-
- {
- QTest::newRow("non-square dropped at [0, 2]")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection
- << Position(0, 0) << Position(0, 1)
- << Position(1, 0))
- << Position(0, 2) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("" , "" , "A"))
- << (qStringTableRow("" , "" , "D"))
- << (qStringTableRow("" , "" , "B"))
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")));
- }
-
- {
- QTest::newRow("2x 1x2 dropped at [0, 0] (duplicates)")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
- << Position(0, 0) << Position(0, 1)
- << Position(0, 0) << Position(0, 1))
- << Position(0, 0) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("A", "B", "" ))
- << (qStringTableRow("A", "" , "" ))
- << (qStringTableRow("" , "B", "" )) // ### FIXME: strange behavior, but rare case
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")));
- }
-
- {
- QTest::newRow("2x 1x2 dropped at [3, 2] (duplicates)")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
- << Position(0, 0) << Position(0, 1)
- << Position(0, 0) << Position(0, 1))
- << Position(3, 2) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5"))
- << (qStringTableRow("" , "" , "A"))
- << (qStringTableRow("" , "" , "B"))
- << (qStringTableRow("" , "" , "A"))
- << (qStringTableRow("" , "" , "B")));
- }
- {
- QTest::newRow("2x 1x2 dropped at [3, 2] (different rows)")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F"))
- << (qStringTableRow("G", "H", "I")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
- << Position(0, 0) << Position(0, 1)
- << Position(2, 0) << Position(2, 1))
- << Position(2, 1) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5"))
- << (qStringTableRow("" , "A" , "B"))
- << (qStringTableRow("" , "G" , "H")));
- }
-
- {
- QTest::newRow("2x 1x2 dropped at [3, 2] (different rows, over the edge)")
- << (STRINGTABLE // source table
- << (qStringTableRow("A", "B", "C"))
- << (qStringTableRow("D", "E", "F"))
- << (qStringTableRow("G", "H", "I")))
- << (STRINGTABLE // destination table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5")))
- << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
- << Position(0, 0) << Position(0, 1)
- << Position(2, 0) << Position(2, 1))
- << Position(3, 2) // drop position
- << (STRINGTABLE // resulting table
- << (qStringTableRow("0", "1", "2"))
- << (qStringTableRow("3", "4", "5"))
- << (qStringTableRow("" , "" , "A"))
- << (qStringTableRow("" , "" , "G"))
- << (qStringTableRow("" , "" , "B"))
- << (qStringTableRow("" , "" , "H")));
- }
-}
-
-void tst_QAbstractItemModel::dropMimeData()
-{
- QFETCH(StringTable, src_table);
- QFETCH(StringTable, dst_table);
- QFETCH(Selection, selection);
- QFETCH(Position, dst_position);
- QFETCH(StringTable, res_table);
-
- QtTestModel src(src_table);
- QtTestModel dst(dst_table);
- QtTestModel res(res_table);
-
-// qDebug() << "src" << src.rowCount(QModelIndex()) << src.columnCount(QModelIndex());
-// qDebug() << "dst" << dst.rowCount(QModelIndex()) << dst.columnCount(QModelIndex());
-// qDebug() << "res" << res.rowCount(QModelIndex()) << res.columnCount(QModelIndex());
-
- // get the mimeData from the "selected" indexes
- QModelIndexList selectedIndexes;
- for (int i = 0; i < selection.count(); ++i)
- selectedIndexes << src.index(selection.at(i).first, selection.at(i).second, QModelIndex());
- QMimeData *md = src.mimeData(selectedIndexes);
- // do the drop
- dst.dropMimeData(md, Qt::CopyAction, dst_position.first, dst_position.second, QModelIndex());
- delete md;
-
- // compare to the expected results
- QCOMPARE(dst.rowCount(QModelIndex()), res.rowCount(QModelIndex()));
- QCOMPARE(dst.columnCount(QModelIndex()), res.columnCount(QModelIndex()));
- for (int r = 0; r < dst.rowCount(QModelIndex()); ++r) {
- for (int c = 0; c < dst.columnCount(QModelIndex()); ++c) {
- QModelIndex dst_idx = dst.index(r, c, QModelIndex());
- QModelIndex res_idx = res.index(r, c, QModelIndex());
- QMap<int, QVariant> dst_data = dst.itemData(dst_idx);
- QMap<int, QVariant> res_data = res.itemData(res_idx);
- //if(dst_data != res_data)
- // qDebug() << r << c << dst_data.value(0).toString() << res_data.value(0).toString();
- QCOMPARE(dst_data , res_data);
- }
- }
-
-}
-
-
-void tst_QAbstractItemModel::changePersistentIndex()
-{
- QtTestModel model(3, 3);
- QModelIndex a = model.index(1, 2, QModelIndex());
- QModelIndex b = model.index(2, 1, QModelIndex());
- QPersistentModelIndex p(a);
- QVERIFY(p == a);
- model.setPersistent(a, b);
- QVERIFY(p == b);
-}
-
-void tst_QAbstractItemModel::movePersistentIndex()
-{
- QtTestModel model(3, 3);
-
- QPersistentModelIndex a = model.index(1, 1);
- QVERIFY(a.isValid());
- QCOMPARE(a.row(), 1);
- QCOMPARE(a.column(), 1);
-
- model.insertRow(0);
- QCOMPARE(a.row(), 2);
-
- model.insertRow(1);
- QCOMPARE(a.row(), 3);
-
- model.insertColumn(0);
- QCOMPARE(a.column(), 2);
-}
-
-void tst_QAbstractItemModel::removeRows()
-{
- QtTestModel model(10, 10);
-
- QSignalSpy rowsAboutToBeRemovedSpy(&model, SIGNAL(rowsAboutToBeRemoved( const QModelIndex &, int , int )));
- QSignalSpy rowsRemovedSpy(&model, SIGNAL(rowsRemoved( const QModelIndex &, int, int )));
-
- QCOMPARE(model.removeRows(6, 4), true);
- QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1);
- QCOMPARE(rowsRemovedSpy.count(), 1);
-}
-
-void tst_QAbstractItemModel::removeColumns()
-{
- QtTestModel model(10, 10);
-
- QSignalSpy columnsAboutToBeRemovedSpy(&model, SIGNAL(columnsAboutToBeRemoved( const QModelIndex &, int , int )));
- QSignalSpy columnsRemovedSpy(&model, SIGNAL(columnsRemoved( const QModelIndex &, int, int )));
-
- QCOMPARE(model.removeColumns(6, 4), true);
- QCOMPARE(columnsAboutToBeRemovedSpy.count(), 1);
- QCOMPARE(columnsRemovedSpy.count(), 1);
-}
-
-void tst_QAbstractItemModel::insertRows()
-{
- QtTestModel model(10, 10);
-
- QSignalSpy rowsAboutToBeInsertedSpy(&model, SIGNAL(rowsAboutToBeInserted( const QModelIndex &, int , int )));
- QSignalSpy rowsInsertedSpy(&model, SIGNAL(rowsInserted( const QModelIndex &, int, int )));
-
- QCOMPARE(model.insertRows(6, 4), true);
- QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
- QCOMPARE(rowsInsertedSpy.count(), 1);
-}
-
-void tst_QAbstractItemModel::insertColumns()
-{
- QtTestModel model(10, 10);
-
- QSignalSpy columnsAboutToBeInsertedSpy(&model, SIGNAL(columnsAboutToBeInserted( const QModelIndex &, int , int )));
- QSignalSpy columnsInsertedSpy(&model, SIGNAL(columnsInserted( const QModelIndex &, int, int )));
-
- QCOMPARE(model.insertColumns(6, 4), true);
- QCOMPARE(columnsAboutToBeInsertedSpy.count(), 1);
- QCOMPARE(columnsInsertedSpy.count(), 1);
-}
-
-void tst_QAbstractItemModel::reset()
-{
- QtTestModel model(10, 10);
-
- QSignalSpy resetSpy(&model, SIGNAL(modelReset()));
- model.reset();
- QCOMPARE(resetSpy.count(), 1);
-}
-
-void tst_QAbstractItemModel::complexChangesWithPersistent()
-{
- QtTestModel model(10, 10);
- QPersistentModelIndex a = model.index(1, 1, QModelIndex());
- QPersistentModelIndex b = model.index(9, 7, QModelIndex());
- QPersistentModelIndex c = model.index(5, 6, QModelIndex());
- QPersistentModelIndex d = model.index(3, 9, QModelIndex());
- QPersistentModelIndex e[10];
- for (int i=0; i <10 ; i++) {
- e[i] = model.index(2, i , QModelIndex());
- }
-
- QVERIFY(a == model.index(1, 1, QModelIndex()));
- QVERIFY(b == model.index(9, 7, QModelIndex()));
- QVERIFY(c == model.index(5, 6, QModelIndex()));
- QVERIFY(d == model.index(3, 9, QModelIndex()));
- for (int i=0; i <8 ; i++)
- QVERIFY(e[i] == model.index(2, i , QModelIndex()));
-
- //remove a bunch of columns
- model.removeColumns(2, 4);
-
- QVERIFY(a == model.index(1, 1, QModelIndex()));
- QVERIFY(b == model.index(9, 3, QModelIndex()));
- QVERIFY(c == model.index(5, 2, QModelIndex()));
- QVERIFY(d == model.index(3, 5, QModelIndex()));
- for (int i=0; i <2 ; i++)
- QVERIFY(e[i] == model.index(2, i , QModelIndex()));
- for (int i=2; i <6 ; i++)
- QVERIFY(!e[i].isValid());
- for (int i=6; i <10 ; i++)
- QVERIFY(e[i] == model.index(2, i-4 , QModelIndex()));
-
- //move some indexes around
- model.setPersistent(model.index(1, 1 , QModelIndex()), model.index(9, 3 , QModelIndex()));
- model.setPersistent(model.index(9, 3 , QModelIndex()), model.index(8, 4 , QModelIndex()));
-
- QVERIFY(a == model.index(9, 3, QModelIndex()));
- QVERIFY(b == model.index(8, 4, QModelIndex()));
- QVERIFY(c == model.index(5, 2, QModelIndex()));
- QVERIFY(d == model.index(3, 5, QModelIndex()));
- for (int i=0; i <2 ; i++)
- QVERIFY(e[i] == model.index(2, i , QModelIndex()));
- for (int i=2; i <6 ; i++)
- QVERIFY(!e[i].isValid());
- for (int i=6; i <10 ; i++)
- QVERIFY(e[i] == model.index(2, i-4 , QModelIndex()));
-
- //inserting a bunch of columns
- model.insertColumns(2, 2);
- QVERIFY(a == model.index(9, 5, QModelIndex()));
- QVERIFY(b == model.index(8, 6, QModelIndex()));
- QVERIFY(c == model.index(5, 4, QModelIndex()));
- QVERIFY(d == model.index(3, 7, QModelIndex()));
- for (int i=0; i <2 ; i++)
- QVERIFY(e[i] == model.index(2, i , QModelIndex()));
- for (int i=2; i <6 ; i++)
- QVERIFY(!e[i].isValid());
- for (int i=6; i <10 ; i++)
- QVERIFY(e[i] == model.index(2, i-2 , QModelIndex()));
-
-}
-
-void tst_QAbstractItemModel::testMoveSameParentDown_data()
-{
- QTest::addColumn<int>("startRow");
- QTest::addColumn<int>("endRow");
- QTest::addColumn<int>("destRow");
- // We can't put the actual parent index for the move in here because m_model is not defined until init() is run.
- QTest::addColumn<bool>("topLevel");
-
- // Move from the start to the middle
- QTest::newRow("move01") << 0 << 2 << 8 << true;
- // Move from the start to the end
- QTest::newRow("move02") << 0 << 2 << 10 << true;
- // Move from the middle to the middle
- QTest::newRow("move03") << 3 << 5 << 8 << true;
- // Move from the middle to the end
- QTest::newRow("move04") << 3 << 5 << 10 << true;
-
- QTest::newRow("move05") << 0 << 2 << 8 << false;
- QTest::newRow("move06") << 0 << 2 << 10 << false;
- QTest::newRow("move07") << 3 << 5 << 8 << false;
- QTest::newRow("move08") << 3 << 5 << 10 << false;
-}
-
-void tst_QAbstractItemModel::testMoveSameParentDown()
-{
- QFETCH( int, startRow);
- QFETCH( int, endRow);
- QFETCH( int, destRow);
- QFETCH( bool, topLevel);
-
- QModelIndex moveParent = topLevel ? QModelIndex() : m_model->index(5, 0);
-
- QList<QPersistentModelIndex> persistentList;
- QModelIndexList indexList;
-
- for (int column = 0; column < m_model->columnCount(); ++column)
- {
- for (int row= 0; row < m_model->rowCount(); ++row)
- {
- QModelIndex idx = m_model->index(row, column);
- QVERIFY(idx.isValid());
- indexList << idx;
- persistentList << QPersistentModelIndex(idx);
- }
- }
-
- QModelIndex parent = m_model->index(5, 0);
- for (int column = 0; column < m_model->columnCount(); ++column)
- {
- for (int row= 0; row < m_model->rowCount(parent); ++row)
- {
- QModelIndex idx = m_model->index(row, column, parent);
- QVERIFY(idx.isValid());
- indexList << idx;
- persistentList << QPersistentModelIndex(idx);
- }
- }
-
- QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
-
- ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
- moveCommand->setNumCols(4);
- if (!topLevel)
- moveCommand->setAncestorRowNumbers(QList<int>() << 5);
- moveCommand->setStartRow(startRow);
- moveCommand->setEndRow(endRow);
- moveCommand->setDestRow(destRow);
- if (!topLevel)
- moveCommand->setDestAncestors(QList<int>() << 5);
- moveCommand->doCommand();
-
- QVariantList beforeSignal = beforeSpy.takeAt(0);
- QVariantList afterSignal = afterSpy.takeAt(0);
-
- QCOMPARE(beforeSignal.size(), 5);
- QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), moveParent);
- QCOMPARE(beforeSignal.at(1).toInt(), startRow);
- QCOMPARE(beforeSignal.at(2).toInt(), endRow);
- QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), moveParent);
- QCOMPARE(beforeSignal.at(4).toInt(), destRow);
-
- QCOMPARE(afterSignal.size(), 5);
- QCOMPARE(afterSignal.at(0).value<QModelIndex>(), moveParent);
- QCOMPARE(afterSignal.at(1).toInt(), startRow);
- QCOMPARE(afterSignal.at(2).toInt(), endRow);
- QCOMPARE(afterSignal.at(3).value<QModelIndex>(), moveParent);
- QCOMPARE(afterSignal.at(4).toInt(), destRow);
-
- for (int i = 0; i < indexList.size(); i++)
- {
- QModelIndex idx = indexList.at(i);
- QModelIndex persistentIndex = persistentList.at(i);
- if (idx.parent() == moveParent)
- {
- int row = idx.row();
- if ( row >= startRow)
- {
- if (row <= endRow)
- {
- QCOMPARE(row + destRow - endRow - 1, persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- QCOMPARE(idx.parent(), persistentIndex.parent());
- QCOMPARE(idx.model(), persistentIndex.model());
- } else if ( row < destRow)
- {
- QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- QCOMPARE(idx.parent(), persistentIndex.parent());
- QCOMPARE(idx.model(), persistentIndex.model());
- } else
- {
- QCOMPARE(idx, persistentIndex);
- }
- } else
- {
- QCOMPARE(idx, persistentIndex);
- }
- } else
- {
- QCOMPARE(idx, persistentIndex);
- }
- }
-}
-
-void tst_QAbstractItemModel::testMoveSameParentUp_data()
-{
- QTest::addColumn<int>("startRow");
- QTest::addColumn<int>("endRow");
- QTest::addColumn<int>("destRow");
- QTest::addColumn<bool>("topLevel");
-
- // Move from the middle to the start
- QTest::newRow("move01") << 5 << 7 << 0 << true;
- // Move from the end to the start
- QTest::newRow("move02") << 8 << 9 << 0 << true;
- // Move from the middle to the middle
- QTest::newRow("move03") << 5 << 7 << 2 << true;
- // Move from the end to the middle
- QTest::newRow("move04") << 8 << 9 << 5 << true;
-
- QTest::newRow("move05") << 5 << 7 << 0 << false;
- QTest::newRow("move06") << 8 << 9 << 0 << false;
- QTest::newRow("move07") << 5 << 7 << 2 << false;
- QTest::newRow("move08") << 8 << 9 << 5 << false;
-}
-
-void tst_QAbstractItemModel::testMoveSameParentUp()
-{
-
- QFETCH( int, startRow);
- QFETCH( int, endRow);
- QFETCH( int, destRow);
- QFETCH( bool, topLevel);
-
- QModelIndex moveParent = topLevel ? QModelIndex() : m_model->index(5, 0);
-
- QList<QPersistentModelIndex> persistentList;
- QModelIndexList indexList;
-
- for (int column = 0; column < m_model->columnCount(); ++column)
- {
- for (int row= 0; row < m_model->rowCount(); ++row)
- {
- QModelIndex idx = m_model->index(row, column);
- QVERIFY(idx.isValid());
- indexList << idx;
- persistentList << QPersistentModelIndex(idx);
- }
- }
-
- QModelIndex parent = m_model->index(2, 0);
- for (int column = 0; column < m_model->columnCount(); ++column)
- {
- for (int row= 0; row < m_model->rowCount(parent); ++row)
- {
- QModelIndex idx = m_model->index(row, column, parent);
- QVERIFY(idx.isValid());
- indexList << idx;
- persistentList << QPersistentModelIndex(idx);
- }
- }
-
- QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
-
-
- ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
- moveCommand->setNumCols(4);
- if (!topLevel)
- moveCommand->setAncestorRowNumbers(QList<int>() << 5);
- moveCommand->setStartRow(startRow);
- moveCommand->setEndRow(endRow);
- moveCommand->setDestRow(destRow);
- if (!topLevel)
- moveCommand->setDestAncestors(QList<int>() << 5);
- moveCommand->doCommand();
-
- QVariantList beforeSignal = beforeSpy.takeAt(0);
- QVariantList afterSignal = afterSpy.takeAt(0);
-
- QCOMPARE(beforeSignal.size(), 5);
- QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), moveParent);
- QCOMPARE(beforeSignal.at(1).toInt(), startRow);
- QCOMPARE(beforeSignal.at(2).toInt(), endRow);
- QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), moveParent);
- QCOMPARE(beforeSignal.at(4).toInt(), destRow);
-
- QCOMPARE(afterSignal.size(), 5);
- QCOMPARE(afterSignal.at(0).value<QModelIndex>(), moveParent);
- QCOMPARE(afterSignal.at(1).toInt(), startRow);
- QCOMPARE(afterSignal.at(2).toInt(), endRow);
- QCOMPARE(afterSignal.at(3).value<QModelIndex>(), moveParent);
- QCOMPARE(afterSignal.at(4).toInt(), destRow);
-
-
- for (int i = 0; i < indexList.size(); i++)
- {
- QModelIndex idx = indexList.at(i);
- QModelIndex persistentIndex = persistentList.at(i);
- if (idx.parent() == moveParent)
- {
- int row = idx.row();
- if ( row >= destRow)
- {
- if (row < startRow)
- {
- QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- QCOMPARE(idx.parent(), persistentIndex.parent());
- QCOMPARE(idx.model(), persistentIndex.model());
- } else if ( row <= endRow)
- {
- QCOMPARE(row + destRow - startRow, persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- QCOMPARE(idx.parent(), persistentIndex.parent());
- QCOMPARE(idx.model(), persistentIndex.model());
- } else
- {
- QCOMPARE(idx, persistentIndex);
- }
- } else
- {
- QCOMPARE(idx, persistentIndex);
- }
- } else
- {
- QCOMPARE(idx, persistentIndex);
- }
- }
-}
-
-void tst_QAbstractItemModel::testMoveThroughProxy()
-{
- QSortFilterProxyModel *proxy = new QSortFilterProxyModel(this);
- proxy->setSourceModel(m_model);
-
- QList<QPersistentModelIndex> persistentList;
-
- persistentList.append(proxy->index(0, 0));
- persistentList.append(proxy->index(0, 0, proxy->mapFromSource(m_model->index(5, 0))));
-
- ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
- moveCommand->setNumCols(4);
- moveCommand->setAncestorRowNumbers(QList<int>() << 5);
- moveCommand->setStartRow(0);
- moveCommand->setEndRow(0);
- moveCommand->setDestRow(0);
- moveCommand->doCommand();
-}
-
-void tst_QAbstractItemModel::testMoveToGrandParent_data()
-{
- QTest::addColumn<int>("startRow");
- QTest::addColumn<int>("endRow");
- QTest::addColumn<int>("destRow");
-
- // Move from the start to the middle
- QTest::newRow("move01") << 0 << 2 << 8;
- // Move from the start to the end
- QTest::newRow("move02") << 0 << 2 << 10;
- // Move from the middle to the middle
- QTest::newRow("move03") << 3 << 5 << 8;
- // Move from the middle to the end
- QTest::newRow("move04") << 3 << 5 << 10;
-
- // Move from the middle to the start
- QTest::newRow("move05") << 5 << 7 << 0;
- // Move from the end to the start
- QTest::newRow("move06") << 8 << 9 << 0;
- // Move from the middle to the middle
- QTest::newRow("move07") << 5 << 7 << 2;
- // Move from the end to the middle
- QTest::newRow("move08") << 8 << 9 << 5;
-
- // Moving to the same row in a different parent doesn't confuse things.
- QTest::newRow("move09") << 8 << 8 << 8;
-
- // Moving to the row of my parent and its neighbours doesn't confuse things
- QTest::newRow("move09") << 8 << 8 << 4;
- QTest::newRow("move10") << 8 << 8 << 5;
- QTest::newRow("move11") << 8 << 8 << 6;
-
- // Moving everything from one parent to another
- QTest::newRow("move12") << 0 << 9 << 10;
- QTest::newRow("move13") << 0 << 9 << 0;
-}
-
-void tst_QAbstractItemModel::testMoveToGrandParent()
-{
-
- QFETCH( int, startRow);
- QFETCH( int, endRow);
- QFETCH( int, destRow);
-
- QList<QPersistentModelIndex> persistentList;
- QModelIndexList indexList;
- QModelIndexList parentsList;
-
- for (int column = 0; column < m_model->columnCount(); ++column)
- {
- for (int row= 0; row < m_model->rowCount(); ++row)
- {
- QModelIndex idx = m_model->index(row, column);
- QVERIFY(idx.isValid());
- indexList << idx;
- parentsList << idx.parent();
- persistentList << QPersistentModelIndex(idx);
- }
- }
-
- QModelIndex sourceIndex = m_model->index(5, 0);
- for (int column = 0; column < m_model->columnCount(); ++column)
- {
- for (int row= 0; row < m_model->rowCount(sourceIndex); ++row)
- {
- QModelIndex idx = m_model->index(row, column, sourceIndex);
- QVERIFY(idx.isValid());
- indexList << idx;
- parentsList << idx.parent();
- persistentList << QPersistentModelIndex(idx);
- }
- }
-
- QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
-
- QPersistentModelIndex persistentSource = sourceIndex;
-
- ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
- moveCommand->setAncestorRowNumbers(QList<int>() << 5);
- moveCommand->setNumCols(4);
- moveCommand->setStartRow(startRow);
- moveCommand->setEndRow(endRow);
- moveCommand->setDestRow(destRow);
- moveCommand->doCommand();
-
- QVariantList beforeSignal = beforeSpy.takeAt(0);
- QVariantList afterSignal = afterSpy.takeAt(0);
-
- QCOMPARE(beforeSignal.size(), 5);
- QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), sourceIndex);
- QCOMPARE(beforeSignal.at(1).toInt(), startRow);
- QCOMPARE(beforeSignal.at(2).toInt(), endRow);
- QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), QModelIndex());
- QCOMPARE(beforeSignal.at(4).toInt(), destRow);
-
- QCOMPARE(afterSignal.size(), 5);
- QCOMPARE(afterSignal.at(0).value<QModelIndex>(), static_cast<QModelIndex>(persistentSource));
- QCOMPARE(afterSignal.at(1).toInt(), startRow);
- QCOMPARE(afterSignal.at(2).toInt(), endRow);
- QCOMPARE(afterSignal.at(3).value<QModelIndex>(), QModelIndex());
- QCOMPARE(afterSignal.at(4).toInt(), destRow);
-
- for (int i = 0; i < indexList.size(); i++)
- {
- QModelIndex idx = indexList.at(i);
- QModelIndex idxParent = parentsList.at(i);
- QModelIndex persistentIndex = persistentList.at(i);
- int row = idx.row();
- if (idxParent == QModelIndex())
- {
- if ( row >= destRow)
- {
- QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- QCOMPARE(idxParent, persistentIndex.parent());
- QCOMPARE(idx.model(), persistentIndex.model());
- } else
- {
- QCOMPARE(idx, persistentIndex);
- }
- } else
- {
- if (row < startRow)
- {
- QCOMPARE(idx, persistentIndex);
- } else if (row <= endRow)
- {
- QCOMPARE(row + destRow - startRow, persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- QCOMPARE(QModelIndex(), persistentIndex.parent());
- QCOMPARE(idx.model(), persistentIndex.model());
- } else {
- QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
-
- if (idxParent.row() >= destRow)
- {
- QModelIndex adjustedParent;
- adjustedParent = idxParent.sibling( idxParent.row() + endRow - startRow + 1, idxParent.column());
- QCOMPARE(adjustedParent, persistentIndex.parent());
- } else
- {
- QCOMPARE(idxParent, persistentIndex.parent());
- }
- QCOMPARE(idx.model(), persistentIndex.model());
- }
- }
- }
-}
-
-void tst_QAbstractItemModel::testMoveToSibling_data()
-{
- QTest::addColumn<int>("startRow");
- QTest::addColumn<int>("endRow");
- QTest::addColumn<int>("destRow");
-
- // Move from the start to the middle
- QTest::newRow("move01") << 0 << 2 << 8;
- // Move from the start to the end
- QTest::newRow("move02") << 0 << 2 << 10;
- // Move from the middle to the middle
- QTest::newRow("move03") << 2 << 4 << 8;
- // Move from the middle to the end
- QTest::newRow("move04") << 2 << 4 << 10;
-
- // Move from the middle to the start
- QTest::newRow("move05") << 8 << 8 << 0;
- // Move from the end to the start
- QTest::newRow("move06") << 8 << 9 << 0;
- // Move from the middle to the middle
- QTest::newRow("move07") << 6 << 8 << 2;
- // Move from the end to the middle
- QTest::newRow("move08") << 8 << 9 << 5;
-
- // Moving to the same row in a different parent doesn't confuse things.
- QTest::newRow("move09") << 8 << 8 << 8;
-
- // Moving to the row of my target and its neighbours doesn't confuse things
- QTest::newRow("move09") << 8 << 8 << 4;
- QTest::newRow("move10") << 8 << 8 << 5;
- QTest::newRow("move11") << 8 << 8 << 6;
-
- // Move such that the destination parent no longer valid after the move.
- // The destination parent is always QMI(5, 0), but after this move the
- // row count is 5, so (5, 0) (used internally in QAIM) no longer refers to a valid index.
- QTest::newRow("move12") << 0 << 4 << 0;
-}
-
-void tst_QAbstractItemModel::testMoveToSibling()
-{
-
- QFETCH( int, startRow);
- QFETCH( int, endRow);
- QFETCH( int, destRow);
-
- QList<QPersistentModelIndex> persistentList;
- QModelIndexList indexList;
- QModelIndexList parentsList;
-
- const int column = 0;
-
- for (int i= 0; i < m_model->rowCount(); ++i)
- {
- QModelIndex idx = m_model->index(i, column);
- QVERIFY(idx.isValid());
- indexList << idx;
- parentsList << idx.parent();
- persistentList << QPersistentModelIndex(idx);
- }
-
- QModelIndex destIndex = m_model->index(5, 0);
- QModelIndex sourceIndex;
- for (int i= 0; i < m_model->rowCount(destIndex); ++i)
- {
- QModelIndex idx = m_model->index(i, column, destIndex);
- QVERIFY(idx.isValid());
- indexList << idx;
- parentsList << idx.parent();
- persistentList << QPersistentModelIndex(idx);
- }
-
- QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
-
- QPersistentModelIndex persistentDest = destIndex;
-
- ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
- moveCommand->setNumCols(4);
- moveCommand->setStartRow(startRow);
- moveCommand->setEndRow(endRow);
- moveCommand->setDestAncestors(QList<int>() << 5);
- moveCommand->setDestRow(destRow);
- moveCommand->doCommand();
-
- QVariantList beforeSignal = beforeSpy.takeAt(0);
- QVariantList afterSignal = afterSpy.takeAt(0);
-
- QCOMPARE(beforeSignal.size(), 5);
- QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), sourceIndex);
- QCOMPARE(beforeSignal.at(1).toInt(), startRow);
- QCOMPARE(beforeSignal.at(2).toInt(), endRow);
- QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), destIndex);
- QCOMPARE(beforeSignal.at(4).toInt(), destRow);
-
- QCOMPARE(afterSignal.size(), 5);
- QCOMPARE(afterSignal.at(0).value<QModelIndex>(), sourceIndex);
- QCOMPARE(afterSignal.at(1).toInt(), startRow);
- QCOMPARE(afterSignal.at(2).toInt(), endRow);
- QCOMPARE(afterSignal.at(3).value<QModelIndex>(), static_cast<QModelIndex>(persistentDest));
- QCOMPARE(afterSignal.at(4).toInt(), destRow);
-
- for (int i = 0; i < indexList.size(); i++)
- {
- QModelIndex idx = indexList.at(i);
- QModelIndex idxParent = parentsList.at(i);
- QModelIndex persistentIndex = persistentList.at(i);
-
- QModelIndex adjustedDestination = destIndex.sibling(destIndex.row() - (endRow - startRow + 1), destIndex.column());
- int row = idx.row();
- if (idxParent == destIndex)
- {
- if ( row >= destRow)
- {
- QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- if (idxParent.row() > startRow)
- {
- QCOMPARE(adjustedDestination, persistentIndex.parent());
- } else {
- QCOMPARE(destIndex, persistentIndex.parent());
- }
- QCOMPARE(idx.model(), persistentIndex.model());
- } else
- {
- QCOMPARE(idx, persistentIndex);
- }
- } else
- {
- if (row < startRow)
- {
- QCOMPARE(idx, persistentIndex);
- } else if (row <= endRow)
- {
- QCOMPARE(row + destRow - startRow, persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- if (destIndex.row() > startRow)
- {
- QCOMPARE(adjustedDestination, persistentIndex.parent());
- } else {
- QCOMPARE(destIndex, persistentIndex.parent());
- }
-
- QCOMPARE(idx.model(), persistentIndex.model());
-
- } else {
- QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- QCOMPARE(idxParent, persistentIndex.parent());
- QCOMPARE(idx.model(), persistentIndex.model());
- }
- }
- }
-}
-
-void tst_QAbstractItemModel::testMoveToUncle_data()
-{
-
- QTest::addColumn<int>("startRow");
- QTest::addColumn<int>("endRow");
- QTest::addColumn<int>("destRow");
-
- // Move from the start to the middle
- QTest::newRow("move01") << 0 << 2 << 8;
- // Move from the start to the end
- QTest::newRow("move02") << 0 << 2 << 10;
- // Move from the middle to the middle
- QTest::newRow("move03") << 3 << 5 << 8;
- // Move from the middle to the end
- QTest::newRow("move04") << 3 << 5 << 10;
-
- // Move from the middle to the start
- QTest::newRow("move05") << 5 << 7 << 0;
- // Move from the end to the start
- QTest::newRow("move06") << 8 << 9 << 0;
- // Move from the middle to the middle
- QTest::newRow("move07") << 5 << 7 << 2;
- // Move from the end to the middle
- QTest::newRow("move08") << 8 << 9 << 5;
-
- // Moving to the same row in a different parent doesn't confuse things.
- QTest::newRow("move09") << 8 << 8 << 8;
-
- // Moving to the row of my parent and its neighbours doesn't confuse things
- QTest::newRow("move09") << 8 << 8 << 4;
- QTest::newRow("move10") << 8 << 8 << 5;
- QTest::newRow("move11") << 8 << 8 << 6;
-
- // Moving everything from one parent to another
- QTest::newRow("move12") << 0 << 9 << 10;
-}
-
-void tst_QAbstractItemModel::testMoveToUncle()
-{
- // Need to have some extra rows available.
- ModelInsertCommand *insertCommand = new ModelInsertCommand(m_model, this);
- insertCommand->setAncestorRowNumbers(QList<int>() << 9);
- insertCommand->setNumCols(4);
- insertCommand->setStartRow(0);
- insertCommand->setEndRow(9);
- insertCommand->doCommand();
-
- QFETCH( int, startRow);
- QFETCH( int, endRow);
- QFETCH( int, destRow);
-
- QList<QPersistentModelIndex> persistentList;
- QModelIndexList indexList;
- QModelIndexList parentsList;
-
- const int column = 0;
-
- QModelIndex sourceIndex = m_model->index(9, 0);
- for (int i= 0; i < m_model->rowCount(sourceIndex); ++i)
- {
- QModelIndex idx = m_model->index(i, column, sourceIndex);
- QVERIFY(idx.isValid());
- indexList << idx;
- parentsList << idx.parent();
- persistentList << QPersistentModelIndex(idx);
- }
-
- QModelIndex destIndex = m_model->index(5, 0);
- for (int i= 0; i < m_model->rowCount(destIndex); ++i)
- {
- QModelIndex idx = m_model->index(i, column, destIndex);
- QVERIFY(idx.isValid());
- indexList << idx;
- parentsList << idx.parent();
- persistentList << QPersistentModelIndex(idx);
- }
-
- QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
-
- ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
- moveCommand->setAncestorRowNumbers(QList<int>() << 9);
- moveCommand->setNumCols(4);
- moveCommand->setStartRow(startRow);
- moveCommand->setEndRow(endRow);
- moveCommand->setDestAncestors(QList<int>() << 5);
- moveCommand->setDestRow(destRow);
- moveCommand->doCommand();
-
- QVariantList beforeSignal = beforeSpy.takeAt(0);
- QVariantList afterSignal = afterSpy.takeAt(0);
-
- QCOMPARE(beforeSignal.size(), 5);
- QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), sourceIndex);
- QCOMPARE(beforeSignal.at(1).toInt(), startRow);
- QCOMPARE(beforeSignal.at(2).toInt(), endRow);
- QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), destIndex);
- QCOMPARE(beforeSignal.at(4).toInt(), destRow);
-
- QCOMPARE(afterSignal.size(), 5);
- QCOMPARE(afterSignal.at(0).value<QModelIndex>(), sourceIndex);
- QCOMPARE(afterSignal.at(1).toInt(), startRow);
- QCOMPARE(afterSignal.at(2).toInt(), endRow);
- QCOMPARE(afterSignal.at(3).value<QModelIndex>(), destIndex);
- QCOMPARE(afterSignal.at(4).toInt(), destRow);
-
- for (int i = 0; i < indexList.size(); i++)
- {
- QModelIndex idx = indexList.at(i);
- QModelIndex idxParent = parentsList.at(i);
- QModelIndex persistentIndex = persistentList.at(i);
-
- int row = idx.row();
- if (idxParent == destIndex)
- {
- if ( row >= destRow)
- {
- QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- QCOMPARE(destIndex, persistentIndex.parent());
- QCOMPARE(idx.model(), persistentIndex.model());
- } else
- {
- QCOMPARE(idx, persistentIndex);
- }
- } else
- {
- if (row < startRow)
- {
- QCOMPARE(idx, persistentIndex);
- } else if (row <= endRow)
- {
- QCOMPARE(row + destRow - startRow, persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- QCOMPARE(destIndex, persistentIndex.parent());
- QCOMPARE(idx.model(), persistentIndex.model());
-
- } else {
- QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
- QCOMPARE(idx.column(), persistentIndex.column());
- QCOMPARE(idxParent, persistentIndex.parent());
- QCOMPARE(idx.model(), persistentIndex.model());
- }
- }
- }
-}
-
-void tst_QAbstractItemModel::testMoveToDescendants()
-{
- // Attempt to move a row to its ancestors depth rows deep.
- const int depth = 6;
-
- // Need to have some extra rows available in a tree.
- QList<int> rows;
- ModelInsertCommand *insertCommand;
- for (int i = 0; i < depth; i++)
- {
- insertCommand = new ModelInsertCommand(m_model, this);
- insertCommand->setAncestorRowNumbers(rows);
- insertCommand->setNumCols(4);
- insertCommand->setStartRow(0);
- insertCommand->setEndRow(9);
- insertCommand->doCommand();
- rows << 9;
- }
-
- QList<QPersistentModelIndex> persistentList;
- QModelIndexList indexList;
- QModelIndexList parentsList;
-
- const int column = 0;
-
- QModelIndex sourceIndex = m_model->index(9, 0);
- for (int i= 0; i < m_model->rowCount(sourceIndex); ++i)
- {
- QModelIndex idx = m_model->index(i, column, sourceIndex);
- QVERIFY(idx.isValid());
- indexList << idx;
- parentsList << idx.parent();
- persistentList << QPersistentModelIndex(idx);
- }
-
- QModelIndex destIndex = m_model->index(5, 0);
- for (int i= 0; i < m_model->rowCount(destIndex); ++i)
- {
- QModelIndex idx = m_model->index(i, column, destIndex);
- QVERIFY(idx.isValid());
- indexList << idx;
- parentsList << idx.parent();
- persistentList << QPersistentModelIndex(idx);
- }
-
- QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
-
- ModelMoveCommand *moveCommand;
- QList<int> ancestors;
- while (ancestors.size() < depth)
- {
- ancestors << 9;
- for (int row = 0; row <= 9; row++)
- {
- moveCommand = new ModelMoveCommand(m_model, this);
- moveCommand->setNumCols(4);
- moveCommand->setStartRow(9);
- moveCommand->setEndRow(9);
- moveCommand->setDestAncestors(ancestors);
- moveCommand->setDestRow(row);
- moveCommand->doCommand();
-
- QVERIFY(beforeSpy.size() == 0);
- QVERIFY(afterSpy.size() == 0);
- }
- }
-}
-
-void tst_QAbstractItemModel::testMoveWithinOwnRange_data()
-{
- QTest::addColumn<int>("startRow");
- QTest::addColumn<int>("endRow");
- QTest::addColumn<int>("destRow");
-
- QTest::newRow("move01") << 0 << 0 << 0;
- QTest::newRow("move02") << 0 << 0 << 1;
- QTest::newRow("move03") << 0 << 5 << 0;
- QTest::newRow("move04") << 0 << 5 << 1;
- QTest::newRow("move05") << 0 << 5 << 2;
- QTest::newRow("move06") << 0 << 5 << 3;
- QTest::newRow("move07") << 0 << 5 << 4;
- QTest::newRow("move08") << 0 << 5 << 5;
- QTest::newRow("move09") << 0 << 5 << 6;
- QTest::newRow("move08") << 3 << 5 << 5;
- QTest::newRow("move08") << 3 << 5 << 6;
- QTest::newRow("move09") << 4 << 5 << 5;
- QTest::newRow("move10") << 4 << 5 << 6;
- QTest::newRow("move11") << 5 << 5 << 5;
- QTest::newRow("move12") << 5 << 5 << 6;
- QTest::newRow("move13") << 5 << 9 << 9;
- QTest::newRow("move14") << 5 << 9 << 10;
- QTest::newRow("move15") << 6 << 9 << 9;
- QTest::newRow("move16") << 6 << 9 << 10;
- QTest::newRow("move17") << 7 << 9 << 9;
- QTest::newRow("move18") << 7 << 9 << 10;
- QTest::newRow("move19") << 8 << 9 << 9;
- QTest::newRow("move20") << 8 << 9 << 10;
- QTest::newRow("move21") << 9 << 9 << 9;
- QTest::newRow("move22") << 0 << 9 << 10;
-
-}
-
-void tst_QAbstractItemModel::testMoveWithinOwnRange()
-{
-
- QFETCH( int, startRow);
- QFETCH( int, endRow);
- QFETCH( int, destRow);
-
-
- QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
-
- ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
- moveCommand->setNumCols(4);
- moveCommand->setStartRow(startRow);
- moveCommand->setEndRow(endRow);
- moveCommand->setDestRow(destRow);
- moveCommand->doCommand();
-
- QVERIFY(beforeSpy.size() == 0);
- QVERIFY(afterSpy.size() == 0);
-
-
-}
-
-class ListenerObject : public QObject
-{
- Q_OBJECT
-public:
- ListenerObject(QAbstractProxyModel *parent);
-
-protected:
- void fillIndexStores(const QModelIndex &parent);
-
-public slots:
- void slotAboutToBeReset();
- void slotReset();
-
-private:
- QAbstractProxyModel *m_model;
- QList<QPersistentModelIndex> m_persistentIndexes;
- QModelIndexList m_nonPersistentIndexes;
-};
-
-
-ListenerObject::ListenerObject(QAbstractProxyModel *parent)
- : QObject(parent), m_model(parent)
-{
- connect(m_model, SIGNAL(modelAboutToBeReset()), SLOT(slotAboutToBeReset()));
- connect(m_model, SIGNAL(modelReset()), SLOT(slotReset()));
-
- fillIndexStores(QModelIndex());
-}
-
-void ListenerObject::fillIndexStores(const QModelIndex &parent)
-{
- const int column = 0;
- int row = 0;
- QModelIndex idx = m_model->index(row, column, parent);
- while (idx.isValid())
- {
- m_persistentIndexes << QPersistentModelIndex(idx);
- m_nonPersistentIndexes << idx;
- if (m_model->hasChildren(idx))
- {
- fillIndexStores(idx);
- }
- ++row;
- idx = m_model->index(row, column, parent);
- }
-}
-
-void ListenerObject::slotAboutToBeReset()
-{
- // Nothing has been changed yet. All indexes should be the same.
- for (int i = 0; i < m_persistentIndexes.size(); ++i)
- {
- QModelIndex idx = m_persistentIndexes.at(i);
- QVERIFY(idx == m_nonPersistentIndexes.at(i));
- QVERIFY(m_model->mapToSource(idx).isValid());
- }
-}
-
-void ListenerObject::slotReset()
-{
- foreach(const QModelIndex &idx, m_persistentIndexes)
- {
- QVERIFY(!idx.isValid());
- }
-}
-
-
-void tst_QAbstractItemModel::testReset()
-{
- QSignalSpy beforeResetSpy(m_model, SIGNAL(modelAboutToBeReset()));
- QSignalSpy afterResetSpy(m_model, SIGNAL(modelReset()));
-
-
- QSortFilterProxyModel *nullProxy = new QSortFilterProxyModel(this);
- nullProxy->setSourceModel(m_model);
-
- // Makes sure the model and proxy are in a consistent state. before and after reset.
- new ListenerObject(nullProxy);
-
- ModelResetCommandFixed *resetCommand = new ModelResetCommandFixed(m_model, this);
-
- resetCommand->setNumCols(4);
- resetCommand->setStartRow(0);
- resetCommand->setEndRow(0);
- resetCommand->setDestRow(0);
- resetCommand->setDestAncestors(QList<int>() << 5);
- resetCommand->doCommand();
-
- // Verify that the correct signals were emitted
- QVERIFY(beforeResetSpy.size() == 1);
- QVERIFY(afterResetSpy.size() == 1);
-
- // Verify that the move actually happened.
- QVERIFY(m_model->rowCount() == 9);
- QModelIndex destIndex = m_model->index(4, 0);
- QVERIFY(m_model->rowCount(destIndex) == 11);
-
-}
-
-
-QTEST_MAIN(tst_QAbstractItemModel)
-#include "tst_qabstractitemmodel.moc"
diff --git a/tests/auto/qabstractitemview/qabstractitemview.pro b/tests/auto/qabstractitemview/qabstractitemview.pro
index 0d0d51c38a..cae8ca086e 100644
--- a/tests/auto/qabstractitemview/qabstractitemview.pro
+++ b/tests/auto/qabstractitemview/qabstractitemview.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qabstractitemview.cpp
-
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp b/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp
deleted file mode 100644
index 3508ccf5c1..0000000000
--- a/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp
+++ /dev/null
@@ -1,416 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <QtNetwork/QtNetwork>
-#include "../../shared/util.h"
-#include "../network-settings.h"
-
-#ifndef QT_NO_BEARERMANAGEMENT
-#include <QtNetwork/qnetworkconfigmanager.h>
-#include <QtNetwork/qnetworkconfiguration.h>
-#include <QtNetwork/qnetworksession.h>
-#endif
-
-#define TESTFILE QString("http://%1/qtest/cgi-bin/").arg(QtNetworkSettings::serverName())
-
-class tst_QAbstractNetworkCache : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QAbstractNetworkCache();
- virtual ~tst_QAbstractNetworkCache();
-
-private slots:
- void initTestCase();
- void expires_data();
- void expires();
- void expiresSynchronous_data();
- void expiresSynchronous();
-
- void lastModified_data();
- void lastModified();
- void lastModifiedSynchronous_data();
- void lastModifiedSynchronous();
-
- void etag_data();
- void etag();
- void etagSynchronous_data();
- void etagSynchronous();
-
- void cacheControl_data();
- void cacheControl();
- void cacheControlSynchronous_data();
- void cacheControlSynchronous();
-
- void deleteCache();
-
-private:
- void check();
- void checkSynchronous();
-
-#ifndef QT_NO_BEARERMANAGEMENT
- QNetworkConfigurationManager *netConfMan;
- QNetworkConfiguration networkConfiguration;
- QScopedPointer<QNetworkSession> networkSession;
-#endif
-};
-
-class NetworkDiskCache : public QNetworkDiskCache
-{
- Q_OBJECT
-public:
- NetworkDiskCache(QObject *parent = 0)
- : QNetworkDiskCache(parent)
- , gotData(false)
- {
- QString location = QDir::tempPath() + QLatin1String("/tst_qnetworkdiskcache/");
- setCacheDirectory(location);
- clear();
- }
-
- QIODevice *data(const QUrl &url)
- {
- gotData = true;
- return QNetworkDiskCache::data(url);
- }
-
- bool gotData;
-};
-
-
-tst_QAbstractNetworkCache::tst_QAbstractNetworkCache()
-{
- Q_SET_DEFAULT_IAP
-
- QCoreApplication::setOrganizationName(QLatin1String("Trolltech"));
- QCoreApplication::setApplicationName(QLatin1String("autotest_qabstractnetworkcache"));
- QCoreApplication::setApplicationVersion(QLatin1String("1.0"));
-}
-
-tst_QAbstractNetworkCache::~tst_QAbstractNetworkCache()
-{
-}
-
-static bool AlwaysTrue = true;
-static bool AlwaysFalse = false;
-
-Q_DECLARE_METATYPE(QNetworkRequest::CacheLoadControl)
-
-
-void tst_QAbstractNetworkCache::initTestCase()
-{
-#ifndef QT_NO_BEARERMANAGEMENT
- netConfMan = new QNetworkConfigurationManager(this);
- networkConfiguration = netConfMan->defaultConfiguration();
- networkSession.reset(new QNetworkSession(networkConfiguration));
- if (!networkSession->isOpen()) {
- networkSession->open();
- QVERIFY(networkSession->waitForOpened(30000));
- }
-#endif
-}
-
-
-void tst_QAbstractNetworkCache::expires_data()
-{
- QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl");
- QTest::addColumn<QString>("url");
- QTest::addColumn<bool>("fetchFromCache");
-
- QTest::newRow("304-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_expires304.cgi" << AlwaysFalse;
- QTest::newRow("304-1") << QNetworkRequest::PreferNetwork << "httpcachetest_expires304.cgi" << true;
- QTest::newRow("304-2") << QNetworkRequest::AlwaysCache << "httpcachetest_expires304.cgi" << AlwaysTrue;
- QTest::newRow("304-3") << QNetworkRequest::PreferCache << "httpcachetest_expires304.cgi" << true;
-
- QTest::newRow("500-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_expires500.cgi" << AlwaysFalse;
- QTest::newRow("500-1") << QNetworkRequest::PreferNetwork << "httpcachetest_expires500.cgi" << true;
- QTest::newRow("500-2") << QNetworkRequest::AlwaysCache << "httpcachetest_expires500.cgi" << AlwaysTrue;
- QTest::newRow("500-3") << QNetworkRequest::PreferCache << "httpcachetest_expires500.cgi" << true;
-
- QTest::newRow("200-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_expires200.cgi" << AlwaysFalse;
- QTest::newRow("200-1") << QNetworkRequest::PreferNetwork << "httpcachetest_expires200.cgi" << false;
- QTest::newRow("200-2") << QNetworkRequest::AlwaysCache << "httpcachetest_expires200.cgi" << AlwaysTrue;
- QTest::newRow("200-3") << QNetworkRequest::PreferCache << "httpcachetest_expires200.cgi" << false;
-}
-
-void tst_QAbstractNetworkCache::expires()
-{
- check();
-}
-
-void tst_QAbstractNetworkCache::expiresSynchronous_data()
-{
- expires_data();
-}
-
-void tst_QAbstractNetworkCache::expiresSynchronous()
-{
- checkSynchronous();
-}
-
-void tst_QAbstractNetworkCache::lastModified_data()
-{
- QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl");
- QTest::addColumn<QString>("url");
- QTest::addColumn<bool>("fetchFromCache");
-
- QTest::newRow("304-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_lastModified304.cgi" << AlwaysFalse;
- QTest::newRow("304-1") << QNetworkRequest::PreferNetwork << "httpcachetest_lastModified304.cgi" << true;
- QTest::newRow("304-2") << QNetworkRequest::AlwaysCache << "httpcachetest_lastModified304.cgi" << AlwaysTrue;
- QTest::newRow("304-3") << QNetworkRequest::PreferCache << "httpcachetest_lastModified304.cgi" << true;
-
- QTest::newRow("200-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_lastModified200.cgi" << AlwaysFalse;
- QTest::newRow("200-1") << QNetworkRequest::PreferNetwork << "httpcachetest_lastModified200.cgi" << false;
- QTest::newRow("200-2") << QNetworkRequest::AlwaysCache << "httpcachetest_lastModified200.cgi" << AlwaysTrue;
- QTest::newRow("200-3") << QNetworkRequest::PreferCache << "httpcachetest_lastModified200.cgi" << false;
-}
-
-void tst_QAbstractNetworkCache::lastModified()
-{
- check();
-}
-
-void tst_QAbstractNetworkCache::lastModifiedSynchronous_data()
-{
- tst_QAbstractNetworkCache::lastModified_data();
-}
-
-void tst_QAbstractNetworkCache::lastModifiedSynchronous()
-{
- checkSynchronous();
-}
-
-void tst_QAbstractNetworkCache::etag_data()
-{
- QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl");
- QTest::addColumn<QString>("url");
- QTest::addColumn<bool>("fetchFromCache");
-
- QTest::newRow("304-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_etag304.cgi" << AlwaysFalse;
- QTest::newRow("304-1") << QNetworkRequest::PreferNetwork << "httpcachetest_etag304.cgi" << true;
- QTest::newRow("304-2") << QNetworkRequest::AlwaysCache << "httpcachetest_etag304.cgi" << AlwaysTrue;
- QTest::newRow("304-3") << QNetworkRequest::PreferCache << "httpcachetest_etag304.cgi" << true;
-
- QTest::newRow("200-0") << QNetworkRequest::AlwaysNetwork << "httpcachetest_etag200.cgi" << AlwaysFalse;
- QTest::newRow("200-1") << QNetworkRequest::PreferNetwork << "httpcachetest_etag200.cgi" << false;
- QTest::newRow("200-2") << QNetworkRequest::AlwaysCache << "httpcachetest_etag200.cgi" << AlwaysTrue;
- QTest::newRow("200-3") << QNetworkRequest::PreferCache << "httpcachetest_etag200.cgi" << false;
-}
-
-void tst_QAbstractNetworkCache::etag()
-{
- check();
-}
-
-void tst_QAbstractNetworkCache::etagSynchronous_data()
-{
- tst_QAbstractNetworkCache::etag_data();
-}
-
-void tst_QAbstractNetworkCache::etagSynchronous()
-{
- checkSynchronous();
-}
-
-void tst_QAbstractNetworkCache::cacheControl_data()
-{
- QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl");
- QTest::addColumn<QString>("url");
- QTest::addColumn<bool>("fetchFromCache");
- QTest::newRow("200-0") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol.cgi?max-age=-1" << true;
- QTest::newRow("200-1") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol-expire.cgi" << false;
-
- QTest::newRow("200-2") << QNetworkRequest::AlwaysNetwork << "httpcachetest_cachecontrol.cgi?no-cache" << AlwaysFalse;
- QTest::newRow("200-3") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol.cgi?no-cache" << false;
- QTest::newRow("200-4") << QNetworkRequest::AlwaysCache << "httpcachetest_cachecontrol.cgi?no-cache" << false;
- QTest::newRow("200-5") << QNetworkRequest::PreferCache << "httpcachetest_cachecontrol.cgi?no-cache" << false;
-
- QTest::newRow("304-0") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol.cgi?max-age=1000" << true;
-
- QTest::newRow("304-1") << QNetworkRequest::AlwaysNetwork << "httpcachetest_cachecontrol.cgi?max-age=1000, must-revalidate" << AlwaysFalse;
- QTest::newRow("304-2") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol.cgi?max-age=1000, must-revalidate" << true;
- QTest::newRow("304-3") << QNetworkRequest::AlwaysCache << "httpcachetest_cachecontrol.cgi?max-age=1000, must-revalidate" << false;
- QTest::newRow("304-4") << QNetworkRequest::PreferCache << "httpcachetest_cachecontrol.cgi?max-age=1000, must-revalidate" << true;
-
- // see QTBUG-7060
- //QTest::newRow("nokia-boston") << QNetworkRequest::PreferNetwork << "http://waplabdc.nokia-boston.com/browser/users/venkat/cache/Cache_directives/private_1b.asp" << true;
- QTest::newRow("304-2b") << QNetworkRequest::PreferNetwork << "httpcachetest_cachecontrol200.cgi?private, max-age=1000" << true;
- QTest::newRow("304-4b") << QNetworkRequest::PreferCache << "httpcachetest_cachecontrol200.cgi?private, max-age=1000" << true;
-}
-
-void tst_QAbstractNetworkCache::cacheControl()
-{
- check();
-}
-
-void tst_QAbstractNetworkCache::cacheControlSynchronous_data()
-{
- tst_QAbstractNetworkCache::cacheControl_data();
-}
-
-void tst_QAbstractNetworkCache::cacheControlSynchronous()
-{
- checkSynchronous();
-}
-
-void tst_QAbstractNetworkCache::check()
-{
- QFETCH(QNetworkRequest::CacheLoadControl, cacheLoadControl);
- QFETCH(QString, url);
- QFETCH(bool, fetchFromCache);
-
- QNetworkAccessManager manager;
- NetworkDiskCache *diskCache = new NetworkDiskCache(&manager);
- manager.setCache(diskCache);
- QCOMPARE(diskCache->gotData, false);
-
- QUrl realUrl = url.contains("://") ? url : TESTFILE + url;
- QNetworkRequest request(realUrl);
-
- // prime the cache
- QNetworkReply *reply = manager.get(request);
- QSignalSpy downloaded1(reply, SIGNAL(finished()));
- QTRY_COMPARE(downloaded1.count(), 1);
- QCOMPARE(diskCache->gotData, false);
- QByteArray goodData = reply->readAll();
-
- request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, cacheLoadControl);
-
- // should be in the cache now
- QNetworkReply *reply2 = manager.get(request);
- QSignalSpy downloaded2(reply2, SIGNAL(finished()));
- QTRY_COMPARE(downloaded2.count(), 1);
-
- QByteArray secondData = reply2->readAll();
- if (!fetchFromCache && cacheLoadControl == QNetworkRequest::AlwaysCache) {
- QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError);
- QCOMPARE(secondData, QByteArray());
- } else {
- QCOMPARE(reply2->error(), QNetworkReply::NoError);
- QCOMPARE(QString(secondData), QString(goodData));
- QCOMPARE(secondData, goodData);
- QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- }
-
- if (fetchFromCache) {
- QList<QByteArray> rawHeaderList = reply->rawHeaderList();
- QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList();
- qSort(rawHeaderList);
- qSort(rawHeaderList2);
- }
- QCOMPARE(diskCache->gotData, fetchFromCache);
-}
-
-void tst_QAbstractNetworkCache::checkSynchronous()
-{
- QSKIP("not working yet, see QTBUG-15221", SkipAll);
-
- QFETCH(QNetworkRequest::CacheLoadControl, cacheLoadControl);
- QFETCH(QString, url);
- QFETCH(bool, fetchFromCache);
-
- QNetworkAccessManager manager;
- NetworkDiskCache *diskCache = new NetworkDiskCache(&manager);
- manager.setCache(diskCache);
- QCOMPARE(diskCache->gotData, false);
-
- QUrl realUrl = url.contains("://") ? url : TESTFILE + url;
- QNetworkRequest request(realUrl);
-
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- // prime the cache
- QNetworkReply *reply = manager.get(request);
- QVERIFY(reply->isFinished()); // synchronous
- QCOMPARE(diskCache->gotData, false);
- QByteArray goodData = reply->readAll();
-
- request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, cacheLoadControl);
-
- // should be in the cache now
- QNetworkReply *reply2 = manager.get(request);
- QVERIFY(reply2->isFinished()); // synchronous
-
- QByteArray secondData = reply2->readAll();
- if (!fetchFromCache && cacheLoadControl == QNetworkRequest::AlwaysCache) {
- QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError);
- QCOMPARE(secondData, QByteArray());
- } else {
- if (reply2->error() != QNetworkReply::NoError)
- qDebug() << reply2->errorString();
- QCOMPARE(reply2->error(), QNetworkReply::NoError);
- QCOMPARE(QString(secondData), QString(goodData));
- QCOMPARE(secondData, goodData);
- QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- }
-
- if (fetchFromCache) {
- QList<QByteArray> rawHeaderList = reply->rawHeaderList();
- QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList();
- qSort(rawHeaderList);
- qSort(rawHeaderList2);
- }
- QCOMPARE(diskCache->gotData, fetchFromCache);
-}
-
-void tst_QAbstractNetworkCache::deleteCache()
-{
- QNetworkAccessManager manager;
- NetworkDiskCache *diskCache = new NetworkDiskCache(&manager);
- manager.setCache(diskCache);
-
- QString url = "httpcachetest_cachecontrol.cgi?max-age=1000";
- QNetworkRequest request(QUrl(TESTFILE + url));
- QNetworkReply *reply = manager.get(request);
- QSignalSpy downloaded1(reply, SIGNAL(finished()));
- manager.setCache(0);
- QTRY_COMPARE(downloaded1.count(), 1);
-}
-
-
-QTEST_MAIN(tst_QAbstractNetworkCache)
-#include "tst_qabstractnetworkcache.moc"
-
diff --git a/tests/auto/qabstractprintdialog/qabstractprintdialog.pro b/tests/auto/qabstractprintdialog/qabstractprintdialog.pro
index 8d9b142290..fb72bbf7a9 100644
--- a/tests/auto/qabstractprintdialog/qabstractprintdialog.pro
+++ b/tests/auto/qabstractprintdialog/qabstractprintdialog.pro
@@ -3,7 +3,7 @@
############################################################
load(qttest_p4)
-
+QT += widgets printsupport
SOURCES += tst_qabstractprintdialog.cpp
-
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qabstractproxymodel/qabstractproxymodel.pro b/tests/auto/qabstractproxymodel/qabstractproxymodel.pro
index d1bff92543..7a6a841796 100644
--- a/tests/auto/qabstractproxymodel/qabstractproxymodel.pro
+++ b/tests/auto/qabstractproxymodel/qabstractproxymodel.pro
@@ -1,2 +1,3 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qabstractproxymodel.cpp
diff --git a/tests/auto/qabstractscrollarea/qabstractscrollarea.pro b/tests/auto/qabstractscrollarea/qabstractscrollarea.pro
index 9e7b6e0f95..e4bc3f6495 100644
--- a/tests/auto/qabstractscrollarea/qabstractscrollarea.pro
+++ b/tests/auto/qabstractscrollarea/qabstractscrollarea.pro
@@ -3,7 +3,7 @@
############################################################
load(qttest_p4)
-
+QT += widgets
SOURCES += tst_qabstractscrollarea.cpp
diff --git a/tests/auto/qabstractslider/qabstractslider.pro b/tests/auto/qabstractslider/qabstractslider.pro
index 13a2e873a9..4507859ace 100644
--- a/tests/auto/qabstractslider/qabstractslider.pro
+++ b/tests/auto/qabstractslider/qabstractslider.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qabstractslider.cpp
diff --git a/tests/auto/qabstractspinbox/qabstractspinbox.pro b/tests/auto/qabstractspinbox/qabstractspinbox.pro
index 293eff3c0f..e156b2493d 100644
--- a/tests/auto/qabstractspinbox/qabstractspinbox.pro
+++ b/tests/auto/qabstractspinbox/qabstractspinbox.pro
@@ -3,7 +3,7 @@
############################################################
load(qttest_p4)
-
+QT += widgets
SOURCES += tst_qabstractspinbox.cpp
diff --git a/tests/auto/qabstracttextdocumentlayout/qabstracttextdocumentlayout.pro b/tests/auto/qabstracttextdocumentlayout/qabstracttextdocumentlayout.pro
deleted file mode 100644
index 701b24b5b3..0000000000
--- a/tests/auto/qabstracttextdocumentlayout/qabstracttextdocumentlayout.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-############################################################
-# Project file for autotest for file qabstracttextdocumentlayout.h
-############################################################
-
-load(qttest_p4)
-
-SOURCES += tst_qabstracttextdocumentlayout.cpp
-
-
diff --git a/tests/auto/qaccessibility/qaccessibility.pro b/tests/auto/qaccessibility/qaccessibility.pro
index 75fd1e9793..ae046cc3c3 100644
--- a/tests/auto/qaccessibility/qaccessibility.pro
+++ b/tests/auto/qaccessibility/qaccessibility.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
requires(contains(QT_CONFIG,accessibility))
+QT += widgets
SOURCES += tst_qaccessibility.cpp
unix:!mac:LIBS+=-lm
diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp
index d8aa382548..00999bd6b0 100644
--- a/tests/auto/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/qaccessibility/tst_qaccessibility.cpp
@@ -46,6 +46,10 @@
#include <QtGui>
#include <math.h>
+#if defined(Q_OS_WIN) && defined(interface)
+# undef interface
+#endif
+
#include "QtTest/qtestaccessible.h"
diff --git a/tests/auto/qaccessibility_mac/qaccessibility_mac.pro b/tests/auto/qaccessibility_mac/qaccessibility_mac.pro
index 47f72d1cdb..21b6225865 100644
--- a/tests/auto/qaccessibility_mac/qaccessibility_mac.pro
+++ b/tests/auto/qaccessibility_mac/qaccessibility_mac.pro
@@ -18,6 +18,6 @@ exists($$(QTDIR)/tools/designer/src/lib/uilib/uilib.pri) {
} else {
CONFIG += uitools
}
-QT += xml
+QT += xml widgets
LIBS += -framework ApplicationServices -framework Carbon
diff --git a/tests/auto/qaction/qaction.pro b/tests/auto/qaction/qaction.pro
index a129cd66ac..9c3648d52f 100644
--- a/tests/auto/qaction/qaction.pro
+++ b/tests/auto/qaction/qaction.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qaction.cpp
diff --git a/tests/auto/qactiongroup/qactiongroup.pro b/tests/auto/qactiongroup/qactiongroup.pro
index d468815674..9b8636968b 100644
--- a/tests/auto/qactiongroup/qactiongroup.pro
+++ b/tests/auto/qactiongroup/qactiongroup.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qactiongroup.cpp
diff --git a/tests/auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro b/tests/auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro
index 3193764709..3e00e08295 100644
--- a/tests/auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro
+++ b/tests/auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro
@@ -11,6 +11,7 @@ wince*:TARGET = ../desktopsettingsaware
symbian:TARGET = desktopsettingsaware
# Input
+QT += widgets
SOURCES += main.cpp
CONFIG += qt warn_on create_prl link_prl
CONFIG -= app_bundle
diff --git a/tests/auto/qapplication/modal/modal.pro b/tests/auto/qapplication/modal/modal.pro
index 836f6ffab0..9ed69769bb 100644
--- a/tests/auto/qapplication/modal/modal.pro
+++ b/tests/auto/qapplication/modal/modal.pro
@@ -1,4 +1,5 @@
TEMPLATE = app
+QT += widgets
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
diff --git a/tests/auto/qapplication/test/test.pro b/tests/auto/qapplication/test/test.pro
index de11e88683..e97982dcfa 100644
--- a/tests/auto/qapplication/test/test.pro
+++ b/tests/auto/qapplication/test/test.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += ../tst_qapplication.cpp
@@ -32,3 +33,5 @@ win32 {
}
mac*:CONFIG+=insignificant_test
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qapplication/wincmdline/wincmdline.pro b/tests/auto/qapplication/wincmdline/wincmdline.pro
index 8a8ca3d6b3..3ba8f48167 100644
--- a/tests/auto/qapplication/wincmdline/wincmdline.pro
+++ b/tests/auto/qapplication/wincmdline/wincmdline.pro
@@ -2,6 +2,7 @@ TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
+QT += widgets
SOURCES += main.cpp
diff --git a/tests/auto/qboxlayout/qboxlayout.pro b/tests/auto/qboxlayout/qboxlayout.pro
index 3195f4dc9b..c37f12f74f 100644
--- a/tests/auto/qboxlayout/qboxlayout.pro
+++ b/tests/auto/qboxlayout/qboxlayout.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qboxlayout.cpp
diff --git a/tests/auto/qbrush/qbrush.pro b/tests/auto/qbrush/qbrush.pro
deleted file mode 100644
index c17784cbec..0000000000
--- a/tests/auto/qbrush/qbrush.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qbrush.cpp
-
-
-
diff --git a/tests/auto/qbuttongroup/qbuttongroup.pro b/tests/auto/qbuttongroup/qbuttongroup.pro
index 4f8b2113b1..6f506e8f06 100644
--- a/tests/auto/qbuttongroup/qbuttongroup.pro
+++ b/tests/auto/qbuttongroup/qbuttongroup.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qbuttongroup.cpp
diff --git a/tests/auto/qbytearray/tst_qbytearray.cpp b/tests/auto/qbytearray/tst_qbytearray.cpp
deleted file mode 100644
index 78b655419e..0000000000
--- a/tests/auto/qbytearray/tst_qbytearray.cpp
+++ /dev/null
@@ -1,1567 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qbytearray.h>
-#include <qfile.h>
-#include <limits.h>
-#include <private/qtools_p.h>
-#if defined(Q_OS_WINCE)
-#include <qcoreapplication.h>
-#endif
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-#if defined(Q_OS_SYMBIAN)
-#define SRCDIR ""
-#endif
-
-class tst_QByteArray : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QByteArray();
- virtual ~tst_QByteArray();
-
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-private slots:
- void swap();
- void qCompress_data();
-#ifndef QT_NO_COMPRESS
- void qCompress();
- void qUncompress_data();
- void qUncompress();
- void qCompressionZeroTermination();
-#endif
- void constByteArray();
- void leftJustified();
- void rightJustified();
- void startsWith_data();
- void startsWith();
- void startsWith_char();
- void endsWith_data();
- void endsWith();
- void endsWith_char();
- void split_data();
- void split();
- void base64_data();
- void base64();
- void fromBase64_data();
- void fromBase64();
- void qvsnprintf();
- void qstrlen();
- void qstrnlen();
- void qstrcpy();
- void qstrncpy();
- void qstricmp_data();
- void qstricmp();
- void qstricmp_singularities();
- void qstrnicmp_singularities();
- void chop_data();
- void chop();
- void prepend();
- void append();
- void insert();
- void remove_data();
- void remove();
- void replace_data();
- void replace();
- void replaceWithSpecifiedLength();
- void indexOf_data();
- void indexOf();
- void lastIndexOf_data();
- void lastIndexOf();
- void toULong_data();
- void toULong();
- void toULongLong_data();
- void toULongLong();
-
- void number();
- void toInt_data();
- void toInt();
- void qAllocMore();
-
- void resizeAfterFromRawData();
- void appendAfterFromRawData();
- void toFromHex_data();
- void toFromHex();
- void toFromPercentEncoding();
-
- void compare_data();
- void compare();
- void compareCharStar_data();
- void compareCharStar();
-
- void repeatedSignature() const;
- void repeated() const;
- void repeated_data() const;
-
- void byteRefDetaching() const;
-
- void reserve();
-
- void literals();
-};
-
-tst_QByteArray::tst_QByteArray()
-{
- qRegisterMetaType<qulonglong>("qulonglong");
-}
-
-tst_QByteArray::~tst_QByteArray()
-{
-}
-
-void tst_QByteArray::initTestCase()
-{
-}
-
-void tst_QByteArray::cleanupTestCase()
-{
-}
-
-void tst_QByteArray::init()
-{
-}
-
-void tst_QByteArray::cleanup()
-{
-}
-
-void tst_QByteArray::qCompress_data()
-{
- QTest::addColumn<QByteArray>("ba");
-
-#ifndef Q_OS_WINCE
- const int size1 = 1024*1024;
-#else
- const int size1 = 1024;
-#endif
- QByteArray ba1( size1, 0 );
-
- QTest::newRow( "00" ) << QByteArray();
-
- int i;
- for ( i=0; i<size1; i++ )
- ba1[i] = (char)( i / 1024 );
- QTest::newRow( "01" ) << ba1;
-
- for ( i=0; i<size1; i++ )
- ba1[i] = (char)( i % 256 );
- QTest::newRow( "02" ) << ba1;
-
- ba1.fill( 'A' );
- QTest::newRow( "03" ) << ba1;
-
-#if defined(Q_OS_WINCE)
- int tmpArgc = 0;
- char** tmpArgv = 0;
- QCoreApplication app(tmpArgc, tmpArgv);
-#endif
- QFile file( SRCDIR "rfc3252.txt" );
- QVERIFY( file.open(QIODevice::ReadOnly) );
- QTest::newRow( "04" ) << file.readAll();
-}
-
-#ifndef QT_NO_COMPRESS
-void tst_QByteArray::qCompress()
-{
- QFETCH( QByteArray, ba );
- QByteArray compressed = ::qCompress( ba );
- //qDebug( "size uncompressed: %d size compressed: %d", ba.size(), compressed.size() );
- QTEST( ::qUncompress( compressed ), "ba" );
-}
-
-/*
- Just making sure it doesn't crash on invalid data.
-*/
-void tst_QByteArray::qUncompress_data()
-{
- QTest::addColumn<QByteArray>("in");
- QTest::addColumn<QByteArray>("out");
-
- QTest::newRow("0x00000000") << QByteArray("\x00\x00\x00\x00", 4) << QByteArray();
- QTest::newRow("0x000000ff") << QByteArray("\x00\x00\x00\xff", 4) << QByteArray();
- QTest::newRow("0x3f000000") << QByteArray("\x3f\x00\x00\x00", 4) << QByteArray();
- QTest::newRow("0x3fffffff") << QByteArray("\x3f\xff\xff\xff", 4) << QByteArray();
- QTest::newRow("0x7fffff00") << QByteArray("\x7f\xff\xff\x00", 4) << QByteArray();
- QTest::newRow("0x7fffffff") << QByteArray("\x7f\xff\xff\xff", 4) << QByteArray();
- QTest::newRow("0x80000000") << QByteArray("\x80\x00\x00\x00", 4) << QByteArray();
- QTest::newRow("0x800000ff") << QByteArray("\x80\x00\x00\xff", 4) << QByteArray();
- QTest::newRow("0xcf000000") << QByteArray("\xcf\x00\x00\x00", 4) << QByteArray();
- QTest::newRow("0xcfffffff") << QByteArray("\xcf\xff\xff\xff", 4) << QByteArray();
- QTest::newRow("0xffffff00") << QByteArray("\xff\xff\xff\x00", 4) << QByteArray();
- QTest::newRow("0xffffffff") << QByteArray("\xff\xff\xff\xff", 4) << QByteArray();
-}
-
-void tst_QByteArray::qUncompress()
-{
- QFETCH(QByteArray, in);
- QFETCH(QByteArray, out);
-
-#if defined Q_OS_HPUX && !defined __ia64 && defined Q_CC_GNU
- QSKIP("Corrupt data causes this tests to lock up on HP-UX / PA-RISC with gcc", SkipAll);
-#elif defined Q_OS_SOLARIS
- QSKIP("Corrupt data causes this tests to lock up on Solaris", SkipAll);
-#elif defined Q_OS_QNX
- QSKIP("Corrupt data causes this test to lock up on QNX", SkipAll);
-#endif
-
- QByteArray res;
- res = ::qUncompress(in);
- QCOMPARE(res, out);
-
- res = ::qUncompress(in + "blah");
- QCOMPARE(res, out);
-}
-
-void tst_QByteArray::qCompressionZeroTermination()
-{
- QString s = "Hello, I'm a string.";
- QByteArray ba = ::qUncompress(::qCompress(s.toLocal8Bit()));
- QVERIFY((int) *(ba.data() + ba.size()) == 0);
-}
-
-#endif
-
-void tst_QByteArray::constByteArray()
-{
- const char *ptr = "abc";
- QByteArray cba = QByteArray::fromRawData(ptr, 3);
- QVERIFY(cba.constData() == ptr);
- cba.squeeze();
- QVERIFY(cba.constData() == ptr);
- cba.detach();
- QVERIFY(cba.size() == 3);
- QVERIFY(cba.capacity() == 3);
- QVERIFY(cba.constData() != ptr);
- QVERIFY(cba.constData()[0] == 'a');
- QVERIFY(cba.constData()[1] == 'b');
- QVERIFY(cba.constData()[2] == 'c');
- QVERIFY(cba.constData()[3] == '\0');
-}
-
-void tst_QByteArray::leftJustified()
-{
- QByteArray a;
- a = "ABC";
- QCOMPARE(a.leftJustified(5,'-'), QByteArray("ABC--"));
- QCOMPARE(a.leftJustified(4,'-'), QByteArray("ABC-"));
- QCOMPARE(a.leftJustified(4), QByteArray("ABC "));
- QCOMPARE(a.leftJustified(3), QByteArray("ABC"));
- QCOMPARE(a.leftJustified(2), QByteArray("ABC"));
- QCOMPARE(a.leftJustified(1), QByteArray("ABC"));
- QCOMPARE(a.leftJustified(0), QByteArray("ABC"));
-
- QByteArray n;
- QVERIFY(!n.leftJustified(3).isNull()); // I expected true
- QCOMPARE(a.leftJustified(4,' ',true), QByteArray("ABC "));
- QCOMPARE(a.leftJustified(3,' ',true), QByteArray("ABC"));
- QCOMPARE(a.leftJustified(2,' ',true), QByteArray("AB"));
- QCOMPARE(a.leftJustified(1,' ',true), QByteArray("A"));
- QCOMPARE(a.leftJustified(0,' ',true), QByteArray(""));
-}
-
-void tst_QByteArray::rightJustified()
-{
- QByteArray a;
- a="ABC";
- QCOMPARE(a.rightJustified(5,'-'),QByteArray("--ABC"));
- QCOMPARE(a.rightJustified(4,'-'),QByteArray("-ABC"));
- QCOMPARE(a.rightJustified(4),QByteArray(" ABC"));
- QCOMPARE(a.rightJustified(3),QByteArray("ABC"));
- QCOMPARE(a.rightJustified(2),QByteArray("ABC"));
- QCOMPARE(a.rightJustified(1),QByteArray("ABC"));
- QCOMPARE(a.rightJustified(0),QByteArray("ABC"));
-
- QByteArray n;
- QVERIFY(!n.rightJustified(3).isNull()); // I expected true
- QCOMPARE(a.rightJustified(4,'-',true),QByteArray("-ABC"));
- QCOMPARE(a.rightJustified(4,' ',true),QByteArray(" ABC"));
- QCOMPARE(a.rightJustified(3,' ',true),QByteArray("ABC"));
- QCOMPARE(a.rightJustified(2,' ',true),QByteArray("AB"));
- QCOMPARE(a.rightJustified(1,' ',true),QByteArray("A"));
- QCOMPARE(a.rightJustified(0,' ',true),QByteArray(""));
- QCOMPARE(a,QByteArray("ABC"));
-}
-
-void tst_QByteArray::startsWith_data()
-{
- QTest::addColumn<QByteArray>("ba");
- QTest::addColumn<QByteArray>("sw");
- QTest::addColumn<bool>("result");
-
- QTest::newRow("01") << QByteArray() << QByteArray() << true;
- QTest::newRow("02") << QByteArray() << QByteArray("") << true;
- QTest::newRow("03") << QByteArray() << QByteArray("hallo") << false;
-
- QTest::newRow("04") << QByteArray("") << QByteArray() << true;
- QTest::newRow("05") << QByteArray("") << QByteArray("") << true;
- QTest::newRow("06") << QByteArray("") << QByteArray("h") << false;
-
- QTest::newRow("07") << QByteArray("hallo") << QByteArray("h") << true;
- QTest::newRow("08") << QByteArray("hallo") << QByteArray("hallo") << true;
- QTest::newRow("09") << QByteArray("hallo") << QByteArray("") << true;
- QTest::newRow("10") << QByteArray("hallo") << QByteArray("hallohallo") << false;
- QTest::newRow("11") << QByteArray("hallo") << QByteArray() << true;
-}
-
-void tst_QByteArray::startsWith()
-{
- QFETCH(QByteArray, ba);
- QFETCH(QByteArray, sw);
- QFETCH(bool, result);
-
- QVERIFY(ba.startsWith(sw) == result);
-
- if (sw.isNull()) {
- QVERIFY(ba.startsWith((char*)0) == result);
- } else {
- QVERIFY(ba.startsWith(sw.data()) == result);
- }
-}
-
-void tst_QByteArray::startsWith_char()
-{
- QVERIFY(QByteArray("hallo").startsWith('h'));
- QVERIFY(!QByteArray("hallo").startsWith('\0'));
- QVERIFY(!QByteArray("hallo").startsWith('o'));
- QVERIFY(QByteArray("h").startsWith('h'));
- QVERIFY(!QByteArray("h").startsWith('\0'));
- QVERIFY(!QByteArray("h").startsWith('o'));
- QVERIFY(!QByteArray("hallo").startsWith('l'));
- QVERIFY(!QByteArray("").startsWith('\0'));
- QVERIFY(!QByteArray("").startsWith('a'));
- QVERIFY(!QByteArray().startsWith('a'));
- QVERIFY(!QByteArray().startsWith('\0'));
-}
-
-void tst_QByteArray::endsWith_data()
-{
- QTest::addColumn<QByteArray>("ba");
- QTest::addColumn<QByteArray>("sw");
- QTest::addColumn<bool>("result");
-
- QTest::newRow("01") << QByteArray() << QByteArray() << true;
- QTest::newRow("02") << QByteArray() << QByteArray("") << true;
- QTest::newRow("03") << QByteArray() << QByteArray("hallo") << false;
-
- QTest::newRow("04") << QByteArray("") << QByteArray() << true;
- QTest::newRow("05") << QByteArray("") << QByteArray("") << true;
- QTest::newRow("06") << QByteArray("") << QByteArray("h") << false;
-
- QTest::newRow("07") << QByteArray("hallo") << QByteArray("o") << true;
- QTest::newRow("08") << QByteArray("hallo") << QByteArray("hallo") << true;
- QTest::newRow("09") << QByteArray("hallo") << QByteArray("") << true;
- QTest::newRow("10") << QByteArray("hallo") << QByteArray("hallohallo") << false;
- QTest::newRow("11") << QByteArray("hallo") << QByteArray() << true;
-}
-
-void tst_QByteArray::endsWith()
-{
- QFETCH(QByteArray, ba);
- QFETCH(QByteArray, sw);
- QFETCH(bool, result);
-
- QVERIFY(ba.endsWith(sw) == result);
-
- if (sw.isNull()) {
- QVERIFY(ba.endsWith((char*)0) == result);
- } else {
- QVERIFY(ba.endsWith(sw.data()) == result);
- }
-}
-
-void tst_QByteArray::endsWith_char()
-{
- QVERIFY(QByteArray("hallo").endsWith('o'));
- QVERIFY(!QByteArray("hallo").endsWith('\0'));
- QVERIFY(!QByteArray("hallo").endsWith('h'));
- QVERIFY(QByteArray("h").endsWith('h'));
- QVERIFY(!QByteArray("h").endsWith('\0'));
- QVERIFY(!QByteArray("h").endsWith('o'));
- QVERIFY(!QByteArray("hallo").endsWith('l'));
- QVERIFY(!QByteArray("").endsWith('\0'));
- QVERIFY(!QByteArray("").endsWith('a'));
- QVERIFY(!QByteArray().endsWith('a'));
- QVERIFY(!QByteArray().endsWith('\0'));
-}
-
-void tst_QByteArray::split_data()
-{
- QTest::addColumn<QByteArray>("sample");
- QTest::addColumn<int>("size");
-
- QTest::newRow("1") << QByteArray("-rw-r--r-- 1 0 0 519240 Jul 9 2002 bigfile")
- << 14;
- QTest::newRow("2") << QByteArray("abcde") << 1;
- QTest::newRow("one empty") << QByteArray("") << 1;
- QTest::newRow("two empty") << QByteArray(" ") << 2;
- QTest::newRow("three empty") << QByteArray(" ") << 3;
-
-}
-
-void tst_QByteArray::split()
-{
- QFETCH(QByteArray, sample);
- QFETCH(int, size);
-
- QList<QByteArray> list = sample.split(' ');
- QCOMPARE(list.count(), size);
-}
-
-void tst_QByteArray::swap()
-{
- QByteArray b1 = "b1", b2 = "b2";
- b1.swap(b2);
- QCOMPARE(b1, QByteArray("b2"));
- QCOMPARE(b2, QByteArray("b1"));
-}
-
-void tst_QByteArray::base64_data()
-{
- QTest::addColumn<QByteArray>("rawdata");
- QTest::addColumn<QByteArray>("base64");
-
- QTest::newRow("1") << QByteArray("") << QByteArray("");
- QTest::newRow("2") << QByteArray("1") << QByteArray("MQ==");
- QTest::newRow("3") << QByteArray("12") << QByteArray("MTI=");
- QTest::newRow("4") << QByteArray("123") << QByteArray("MTIz");
- QTest::newRow("5") << QByteArray("1234") << QByteArray("MTIzNA==");
- QTest::newRow("6") << QByteArray("\n") << QByteArray("Cg==");
- QTest::newRow("7") << QByteArray("a\n") << QByteArray("YQo=");
- QTest::newRow("8") << QByteArray("ab\n") << QByteArray("YWIK");
- QTest::newRow("9") << QByteArray("abc\n") << QByteArray("YWJjCg==");
- QTest::newRow("a") << QByteArray("abcd\n") << QByteArray("YWJjZAo=");
- QTest::newRow("b") << QByteArray("abcde\n") << QByteArray("YWJjZGUK");
- QTest::newRow("c") << QByteArray("abcdef\n") << QByteArray("YWJjZGVmCg==");
- QTest::newRow("d") << QByteArray("abcdefg\n") << QByteArray("YWJjZGVmZwo=");
- QTest::newRow("e") << QByteArray("abcdefgh\n") << QByteArray("YWJjZGVmZ2gK");
-
- QByteArray ba;
- ba.resize(256);
- for (int i = 0; i < 256; ++i)
- ba[i] = i;
- QTest::newRow("f") << ba << QByteArray("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==");
-
- QTest::newRow("g") << QByteArray("foo\0bar", 7) << QByteArray("Zm9vAGJhcg==");
- QTest::newRow("h") << QByteArray("f\xd1oo\x9ctar") << QByteArray("ZtFvb5x0YXI=");
- QTest::newRow("i") << QByteArray("\"\0\0\0\0\0\0\"", 8) << QByteArray("IgAAAAAAACI=");
-}
-
-
-void tst_QByteArray::base64()
-{
- QFETCH(QByteArray, rawdata);
- QFETCH(QByteArray, base64);
-
- QByteArray arr = QByteArray::fromBase64(base64);
- QCOMPARE(arr, rawdata);
-
- QByteArray arr64 = rawdata.toBase64();
- QCOMPARE(arr64, base64);
-}
-
-//different from the previous test as the input are invalid
-void tst_QByteArray::fromBase64_data()
-{
- QTest::addColumn<QByteArray>("rawdata");
- QTest::addColumn<QByteArray>("base64");
-
- QTest::newRow("1") << QByteArray("") << QByteArray(" ");
- QTest::newRow("2") << QByteArray("1") << QByteArray("MQ");
- QTest::newRow("3") << QByteArray("12") << QByteArray("MTI ");
- QTest::newRow("4") << QByteArray("123") << QByteArray("M=TIz");
- QTest::newRow("5") << QByteArray("1234") << QByteArray("MTI zN A ");
- QTest::newRow("6") << QByteArray("\n") << QByteArray("Cg");
- QTest::newRow("7") << QByteArray("a\n") << QByteArray("======YQo=");
- QTest::newRow("8") << QByteArray("ab\n") << QByteArray("Y\nWIK");
- QTest::newRow("9") << QByteArray("abc\n") << QByteArray("YWJjCg==");
- QTest::newRow("a") << QByteArray("abcd\n") << QByteArray("YWJ\1j\x9cZAo=");
- QTest::newRow("b") << QByteArray("abcde\n") << QByteArray("YW JjZ\n G\tUK");
- QTest::newRow("c") << QByteArray("abcdef\n") << QByteArray("YWJjZGVmCg=");
- QTest::newRow("d") << QByteArray("abcdefg\n") << QByteArray("YWJ\rjZGVmZwo");
- QTest::newRow("e") << QByteArray("abcdefgh\n") << QByteArray("YWJjZGVmZ2gK");
-
- QByteArray ba;
- ba.resize(256);
- for (int i = 0; i < 256; ++i)
- ba[i] = i;
- QTest::newRow("f") << ba << QByteArray("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Nj\n"
- "c4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1u\n"
- "b3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpa\n"
- "anqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd\n"
- "3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w== ");
-
-
- QTest::newRow("g") << QByteArray("foo\0bar", 7) << QByteArray("Zm9vAGJhcg");
- QTest::newRow("h") << QByteArray("f\xd1oo\x9ctar") << QByteArray("ZtFvb5x0YXI=");
- QTest::newRow("i") << QByteArray("\"\0\0\0\0\0\0\"", 8) << QByteArray("IgAAAAAAACI");
-
-}
-
-
-void tst_QByteArray::fromBase64()
-{
- QFETCH(QByteArray, rawdata);
- QFETCH(QByteArray, base64);
-
- QByteArray arr = QByteArray::fromBase64(base64);
- QCOMPARE(arr, rawdata);
-}
-
-void tst_QByteArray::qvsnprintf()
-{
- char buf[20];
- qMemSet(buf, 42, sizeof(buf));
-
- QCOMPARE(::qsnprintf(buf, 10, "%s", "bubu"), 4);
- QCOMPARE(static_cast<const char *>(buf), "bubu");
- QCOMPARE(buf[5], char(42));
-
- qMemSet(buf, 42, sizeof(buf));
- QCOMPARE(::qsnprintf(buf, 5, "%s", "bubu"), 4);
- QCOMPARE(static_cast<const char *>(buf), "bubu");
- QCOMPARE(buf[5], char(42));
-
- qMemSet(buf, 42, sizeof(buf));
-#ifdef Q_OS_WIN
- // VS 2005 uses the Qt implementation of vsnprintf.
-# if defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(Q_OS_WINCE)
- QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), -1);
- QCOMPARE(static_cast<const char*>(buf), "bu");
-# else
- // windows has to do everything different, of course.
- QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), -1);
- buf[19] = '\0';
- QCOMPARE(static_cast<const char *>(buf), "bub****************");
-# endif
-#else
-#ifdef Q_OS_IRIX
- // Irix reports back the amount of characters written without the \0
- QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), 2);
-#else
- // Every other system in this world reports the amount of data that could have been written
- QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), 4);
-#endif
- QCOMPARE(static_cast<const char*>(buf), "bu");
-#endif
- QCOMPARE(buf[4], char(42));
-
-#ifndef Q_OS_WIN
- qMemSet(buf, 42, sizeof(buf));
- QCOMPARE(::qsnprintf(buf, 10, ""), 0);
-#endif
-}
-
-
-void tst_QByteArray::qstrlen()
-{
- const char *src = "Something about ... \0 a string.";
- QCOMPARE(::qstrlen((char*)0), (uint)0);
- QCOMPARE(::qstrlen(src), (uint)20);
-}
-
-void tst_QByteArray::qstrnlen()
-{
- const char *src = "Something about ... \0 a string.";
- QCOMPARE(::qstrnlen((char*)0, 1), (uint)0);
- QCOMPARE(::qstrnlen(src, 31), (uint)20);
- QCOMPARE(::qstrnlen(src, 19), (uint)19);
- QCOMPARE(::qstrnlen(src, 21), (uint)20);
- QCOMPARE(::qstrnlen(src, 20), (uint)20);
-}
-
-void tst_QByteArray::qstrcpy()
-{
- const char *src = "Something about ... \0 a string.";
- const char *expected = "Something about ... ";
- char dst[128];
-
- QCOMPARE(::qstrcpy(0, 0), (char*)0);
- QCOMPARE(::qstrcpy(dst, 0), (char*)0);
-
- QCOMPARE(::qstrcpy(dst ,src), (char *)dst);
- QCOMPARE((char *)dst, const_cast<char *>(expected));
-}
-
-void tst_QByteArray::qstrncpy()
-{
- QByteArray src(1024, 'a'), dst(1024, 'b');
-
- // singularities
- QCOMPARE(::qstrncpy(0, 0,0), (char*)0);
- QCOMPARE(::qstrncpy(dst.data(), 0, 0), (char*)0);
-
- // normal copy
- QCOMPARE(::qstrncpy(dst.data(), src.data(), src.size()), dst.data());
-
- src = QByteArray( "Tumdelidum" );
- QCOMPARE(QByteArray(::qstrncpy(dst.data(), src.data(), src.size())),
- QByteArray("Tumdelidu"));
-
- // normal copy with length is longer than necessary
- src = QByteArray( "Tumdelidum\0foo" );
- dst.resize(128*1024);
- QCOMPARE(QByteArray(::qstrncpy(dst.data(), src.data(), dst.size())),
- QByteArray("Tumdelidum"));
-}
-
-void tst_QByteArray::qstricmp_data()
-{
- QTest::addColumn<QString>("str1");
- QTest::addColumn<QString>("str2");
-
- QTest::newRow("equal 1") << "abcEdb" << "abcEdb";
- QTest::newRow("equal 2") << "abcEdb" << "ABCeDB";
- QTest::newRow("equal 3") << "ABCEDB" << "abcedb";
- QTest::newRow("less 1") << "abcdef" << "abcdefg";
- QTest::newRow("less 2") << "abcdeF" << "abcdef";
- QTest::newRow("greater 1") << "abcdef" << "abcdeF";
- QTest::newRow("greater 2") << "abcdefg" << "abcdef";
-}
-
-void tst_QByteArray::qstricmp()
-{
- QFETCH(QString, str1);
- QFETCH(QString, str2);
-
- int expected = strcmp(str1.toUpper().toLatin1(),
- str2.toUpper().toLatin1());
- if ( expected != 0 ) {
- expected = (expected < 0 ? -1 : 1);
- }
- int actual = ::qstricmp(str1.toLatin1(), str2.toLatin1());
- if ( actual != 0 ) {
- actual = (actual < 0 ? -1 : 1);
- }
- QCOMPARE(expected, actual);
-}
-
-void tst_QByteArray::qstricmp_singularities()
-{
- QCOMPARE(::qstricmp(0, 0), 0);
- QVERIFY(::qstricmp(0, "a") != 0);
- QVERIFY(::qstricmp("a", 0) != 0);
- QCOMPARE(::qstricmp("", ""), 0);
-}
-
-void tst_QByteArray::qstrnicmp_singularities()
-{
- QCOMPARE(::qstrnicmp(0, 0, 123), 0);
- QVERIFY(::qstrnicmp(0, "a", 123) != 0);
- QVERIFY(::qstrnicmp("a", 0, 123) != 0);
- QCOMPARE(::qstrnicmp("", "", 123), 0);
- QCOMPARE(::qstrnicmp("a", "B", 0), 0);
-}
-
-void tst_QByteArray::chop_data()
-{
- QTest::addColumn<QByteArray>("src");
- QTest::addColumn<int>("choplength");
- QTest::addColumn<QByteArray>("expected");
-
- QTest::newRow("1") << QByteArray("short1") << 128 << QByteArray();
- QTest::newRow("2") << QByteArray("short2") << int(strlen("short2"))
- << QByteArray();
- QTest::newRow("3") << QByteArray("abcdef\0foo", 10) << 2
- << QByteArray("abcdef\0f", 8);
- QTest::newRow("4") << QByteArray("STARTTLS\r\n") << 2
- << QByteArray("STARTTLS");
- QTest::newRow("5") << QByteArray("") << 1 << QByteArray();
- QTest::newRow("6") << QByteArray("foo") << 0 << QByteArray("foo");
- QTest::newRow("7") << QByteArray(0) << 28 << QByteArray();
-}
-
-void tst_QByteArray::chop()
-{
- QFETCH(QByteArray, src);
- QFETCH(int, choplength);
- QFETCH(QByteArray, expected);
-
- src.chop(choplength);
- QCOMPARE(src, expected);
-}
-
-void tst_QByteArray::prepend()
-{
- QByteArray ba("foo");
- QCOMPARE(ba.prepend((char*)0), QByteArray("foo"));
- QCOMPARE(ba.prepend(QByteArray()), QByteArray("foo"));
- QCOMPARE(ba.prepend("1"), QByteArray("1foo"));
- QCOMPARE(ba.prepend(QByteArray("2")), QByteArray("21foo"));
- QCOMPARE(ba.prepend('3'), QByteArray("321foo"));
- QCOMPARE(ba.prepend("\0 ", 2), QByteArray::fromRawData("\0 321foo", 8));
-}
-
-void tst_QByteArray::append()
-{
- QByteArray ba("foo");
- QCOMPARE(ba.append((char*)0), QByteArray("foo"));
- QCOMPARE(ba.append(QByteArray()), QByteArray("foo"));
- QCOMPARE(ba.append("1"), QByteArray("foo1"));
- QCOMPARE(ba.append(QByteArray("2")), QByteArray("foo12"));
- QCOMPARE(ba.append('3'), QByteArray("foo123"));
- QCOMPARE(ba.append("\0"), QByteArray("foo123"));
- QCOMPARE(ba.append("\0", 1), QByteArray::fromRawData("foo123\0", 7));
- QCOMPARE(ba.size(), 7);
-}
-
-void tst_QByteArray::insert()
-{
- QByteArray ba("Meal");
- QCOMPARE(ba.insert(1, QByteArray("ontr")), QByteArray("Montreal"));
- QCOMPARE(ba.insert(ba.size(), "foo"), QByteArray("Montrealfoo"));
-
- ba = QByteArray("13");
- QCOMPARE(ba.insert(1, QByteArray("2")), QByteArray("123"));
-
- ba = "ac";
- QCOMPARE(ba.insert(1, 'b'), QByteArray("abc"));
- QCOMPARE(ba.size(), 3);
-
- ba = "ikl";
- QCOMPARE(ba.insert(1, "j"), QByteArray("ijkl"));
- QCOMPARE(ba.size(), 4);
-
- ba = "ab";
- QCOMPARE(ba.insert(1, "\0X\0", 3), QByteArray::fromRawData("a\0X\0b", 5));
- QCOMPARE(ba.size(), 5);
-}
-
-void tst_QByteArray::remove_data()
-{
- QTest::addColumn<QByteArray>("src");
- QTest::addColumn<int>("position");
- QTest::addColumn<int>("length");
- QTest::addColumn<QByteArray>("expected");
-
- QTest::newRow("1") << QByteArray("Montreal") << 1 << 4
- << QByteArray("Meal");
- QTest::newRow("2") << QByteArray() << 10 << 10 << QByteArray();
- QTest::newRow("3") << QByteArray("hi") << 0 << 10 << QByteArray();
- QTest::newRow("4") << QByteArray("Montreal") << 4 << 100
- << QByteArray("Mont");
-
- // index out of range
- QTest::newRow("5") << QByteArray("Montreal") << 8 << 1
- << QByteArray("Montreal");
- QTest::newRow("6") << QByteArray("Montreal") << 18 << 4
- << QByteArray("Montreal");
-}
-
-void tst_QByteArray::remove()
-{
- QFETCH(QByteArray, src);
- QFETCH(int, position);
- QFETCH(int, length);
- QFETCH(QByteArray, expected);
- QCOMPARE(src.remove(position, length), expected);
-}
-
-void tst_QByteArray::replace_data()
-{
- QTest::addColumn<QByteArray>("src");
- QTest::addColumn<int>("pos");
- QTest::addColumn<int>("len");
- QTest::addColumn<QByteArray>("after");
- QTest::addColumn<QByteArray>("expected");
-
- QTest::newRow("1") << QByteArray("Say yes!") << 4 << 3
- << QByteArray("no") << QByteArray("Say no!");
- QTest::newRow("2") << QByteArray("rock and roll") << 5 << 3
- << QByteArray("&") << QByteArray("rock & roll");
- QTest::newRow("3") << QByteArray("foo") << 3 << 0 << QByteArray("bar")
- << QByteArray("foobar");
- QTest::newRow("4") << QByteArray() << 0 << 0 << QByteArray() << QByteArray();
- // index out of range
- QTest::newRow("5") << QByteArray() << 3 << 0 << QByteArray("hi")
- << QByteArray(" hi");
- // Optimized path
- QTest::newRow("6") << QByteArray("abcdef") << 3 << 12 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijkl");
- QTest::newRow("7") << QByteArray("abcdef") << 3 << 4 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijkl");
- QTest::newRow("8") << QByteArray("abcdef") << 3 << 3 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijkl");
- QTest::newRow("9") << QByteArray("abcdef") << 3 << 2 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijklf");
- QTest::newRow("10") << QByteArray("abcdef") << 2 << 2 << QByteArray("xx") << QByteArray("abxxef");
-}
-
-void tst_QByteArray::replace()
-{
- QFETCH(QByteArray, src);
- QFETCH(int, pos);
- QFETCH(int, len);
- QFETCH(QByteArray, after);
- QFETCH(QByteArray, expected);
-
- QByteArray str1 = src;
- QByteArray str2 = src;
-
- QCOMPARE(str1.replace(pos, len, after).constData(), expected.constData());
- QCOMPARE(str2.replace(pos, len, after.data()), expected);
-}
-
-void tst_QByteArray::replaceWithSpecifiedLength()
-{
- const char after[] = "zxc\0vbnmqwert";
- int lenAfter = 6;
- QByteArray ba("abcdefghjk");
- ba.replace(0,2,after,lenAfter);
-
- const char _expected[] = "zxc\0vbcdefghjk";
- QByteArray expected(_expected,sizeof(_expected)-1);
- QCOMPARE(ba,expected);
-}
-
-void tst_QByteArray::indexOf_data()
-{
- QTest::addColumn<QByteArray>("haystack");
- QTest::addColumn<QByteArray>("needle");
- QTest::addColumn<int>("startpos");
- QTest::addColumn<int>("expected");
-
- QTest::newRow( "1" ) << QByteArray("abc") << QByteArray("a") << 0 << 0;
- QTest::newRow( "2" ) << QByteArray("abc") << QByteArray("A") << 0 << -1;
- QTest::newRow( "3" ) << QByteArray("abc") << QByteArray("a") << 1 << -1;
- QTest::newRow( "4" ) << QByteArray("abc") << QByteArray("A") << 1 << -1;
- QTest::newRow( "5" ) << QByteArray("abc") << QByteArray("b") << 0 << 1;
- QTest::newRow( "6" ) << QByteArray("abc") << QByteArray("B") << 0 << -1;
- QTest::newRow( "7" ) << QByteArray("abc") << QByteArray("b") << 1 << 1;
- QTest::newRow( "8" ) << QByteArray("abc") << QByteArray("B") << 1 << -1;
- QTest::newRow( "9" ) << QByteArray("abc") << QByteArray("b") << 2 << -1;
- QTest::newRow( "10" ) << QByteArray("abc") << QByteArray("c") << 0 << 2;
- QTest::newRow( "11" ) << QByteArray("abc") << QByteArray("C") << 0 << -1;
- QTest::newRow( "12" ) << QByteArray("abc") << QByteArray("c") << 1 << 2;
- QTest::newRow( "13" ) << QByteArray("abc") << QByteArray("C") << 1 << -1;
- QTest::newRow( "14" ) << QByteArray("abc") << QByteArray("c") << 2 << 2;
- QTest::newRow( "15" ) << QByteArray("aBc") << QByteArray("bc") << 0 << -1;
- QTest::newRow( "16" ) << QByteArray("aBc") << QByteArray("Bc") << 0 << 1;
- QTest::newRow( "17" ) << QByteArray("aBc") << QByteArray("bC") << 0 << -1;
- QTest::newRow( "18" ) << QByteArray("aBc") << QByteArray("BC") << 0 << -1;
-
- // task 203692
- static const char h19[] = {'x', 0x00, (char)0xe7, 0x25, 0x1c, 0x0a};
- static const char n19[] = {0x00, 0x00, 0x01, 0x00};
- QTest::newRow( "19" ) << QByteArray(h19, sizeof(h19))
- << QByteArray(n19, sizeof(n19)) << 0 << -1;
-
- QTest::newRow( "empty" ) << QByteArray("") << QByteArray("x") << 0 << -1;
- QTest::newRow( "null" ) << QByteArray() << QByteArray("x") << 0 << -1;
- QTest::newRow( "null-in-null") << QByteArray() << QByteArray() << 0 << 0;
- QTest::newRow( "empty-in-null") << QByteArray() << QByteArray("") << 0 << 0;
- QTest::newRow( "null-in-empty") << QByteArray("") << QByteArray() << 0 << 0;
- QTest::newRow( "empty-in-empty") << QByteArray("") << QByteArray("") << 0 << 0;
-
- QByteArray veryBigHaystack(500, 'a');
- veryBigHaystack += 'B';
- QTest::newRow("BoyerMooreStressTest") << veryBigHaystack << veryBigHaystack << 0 << 0;
- QTest::newRow("BoyerMooreStressTest2") << QByteArray(veryBigHaystack + 'c') << QByteArray(veryBigHaystack) << 0 << 0;
- QTest::newRow("BoyerMooreStressTest3") << QByteArray('c' + veryBigHaystack) << QByteArray(veryBigHaystack) << 0 << 1;
- QTest::newRow("BoyerMooreStressTest4") << QByteArray(veryBigHaystack) << QByteArray(veryBigHaystack + 'c') << 0 << -1;
- QTest::newRow("BoyerMooreStressTest5") << QByteArray(veryBigHaystack) << QByteArray('c' + veryBigHaystack) << 0 << -1;
- QTest::newRow("BoyerMooreStressTest6") << QByteArray('d' + veryBigHaystack) << QByteArray('c' + veryBigHaystack) << 0 << -1;
- QTest::newRow("BoyerMooreStressTest6") << QByteArray(veryBigHaystack + 'c') << QByteArray('c' + veryBigHaystack) << 0 << -1;
-}
-
-void tst_QByteArray::indexOf()
-{
- QFETCH( QByteArray, haystack );
- QFETCH( QByteArray, needle );
- QFETCH( int, startpos );
- QFETCH( int, expected );
-
- bool hasNull = needle.contains('\0');
-
- QCOMPARE( haystack.indexOf(needle, startpos), expected );
- if (!hasNull)
- QCOMPARE( haystack.indexOf(needle.data(), startpos), expected );
- if (needle.size() == 1)
- QCOMPARE( haystack.indexOf(needle.at(0), startpos), expected );
-
- if (startpos == 0) {
- QCOMPARE( haystack.indexOf(needle), expected );
- if (!hasNull)
- QCOMPARE( haystack.indexOf(needle.data()), expected );
- if (needle.size() == 1)
- QCOMPARE( haystack.indexOf(needle.at(0)), expected );
- }
-}
-
-void tst_QByteArray::lastIndexOf_data()
-{
- QTest::addColumn<QByteArray>("haystack");
- QTest::addColumn<QByteArray>("needle");
- QTest::addColumn<int>("startpos");
- QTest::addColumn<int>("expected");
-
- QTest::newRow( "1" ) << QByteArray("abc") << QByteArray("a") << 0 << 0;
- QTest::newRow( "2" ) << QByteArray("abc") << QByteArray("A") << 0 << -1;
- QTest::newRow( "3" ) << QByteArray("abc") << QByteArray("a") << 1 << 0;
- QTest::newRow( "4" ) << QByteArray("abc") << QByteArray("A") << 1 << -1;
- QTest::newRow( "5" ) << QByteArray("abc") << QByteArray("a") << -1 << 0;
- QTest::newRow( "6" ) << QByteArray("abc") << QByteArray("b") << 0 << -1;
- QTest::newRow( "7" ) << QByteArray("abc") << QByteArray("B") << 0 << -1;
- QTest::newRow( "8" ) << QByteArray("abc") << QByteArray("b") << 1 << 1;
- QTest::newRow( "9" ) << QByteArray("abc") << QByteArray("B") << 1 << -1;
- QTest::newRow( "10" ) << QByteArray("abc") << QByteArray("b") << 2 << 1;
- QTest::newRow( "11" ) << QByteArray("abc") << QByteArray("b") << -1 << 1;
- QTest::newRow( "12" ) << QByteArray("abc") << QByteArray("c") << 0 << -1;
- QTest::newRow( "13" ) << QByteArray("abc") << QByteArray("C") << 0 << -1;
- QTest::newRow( "14" ) << QByteArray("abc") << QByteArray("c") << 1 << -1;
- QTest::newRow( "15" ) << QByteArray("abc") << QByteArray("C") << 1 << -1;
- QTest::newRow( "16" ) << QByteArray("abc") << QByteArray("c") << 2 << 2;
- QTest::newRow( "17" ) << QByteArray("abc") << QByteArray("c") << -1 << 2;
- QTest::newRow( "18" ) << QByteArray("aBc") << QByteArray("bc") << 0 << -1;
- QTest::newRow( "19" ) << QByteArray("aBc") << QByteArray("Bc") << 0 << -1;
- QTest::newRow( "20" ) << QByteArray("aBc") << QByteArray("Bc") << 2 << 1;
- QTest::newRow( "21" ) << QByteArray("aBc") << QByteArray("Bc") << 1 << 1;
- QTest::newRow( "22" ) << QByteArray("aBc") << QByteArray("Bc") << -1 << 1;
- QTest::newRow( "23" ) << QByteArray("aBc") << QByteArray("bC") << 0 << -1;
- QTest::newRow( "24" ) << QByteArray("aBc") << QByteArray("BC") << 0 << -1;
-
- // task 203692
- static const char h25[] = {0x00, (char)0xbc, 0x03, 0x10, 0x0a };
- static const char n25[] = {0x00, 0x00, 0x01, 0x00};
- QTest::newRow( "25" ) << QByteArray(h25, sizeof(h25))
- << QByteArray(n25, sizeof(n25)) << 0 << -1;
-
- QTest::newRow( "empty" ) << QByteArray("") << QByteArray("x") << -1 << -1;
- QTest::newRow( "null" ) << QByteArray() << QByteArray("x") << -1 << -1;
- QTest::newRow( "null-in-null") << QByteArray() << QByteArray() << -1 << 0;
- QTest::newRow( "empty-in-null") << QByteArray() << QByteArray("") << -1 << 0;
- QTest::newRow( "null-in-empty") << QByteArray("") << QByteArray() << -1 << 0;
- QTest::newRow( "empty-in-empty") << QByteArray("") << QByteArray("") << -1 << 0;
-}
-
-void tst_QByteArray::lastIndexOf()
-{
- QFETCH( QByteArray, haystack );
- QFETCH( QByteArray, needle );
- QFETCH( int, startpos );
- QFETCH( int, expected );
-
- bool hasNull = needle.contains('\0');
-
- QCOMPARE( haystack.lastIndexOf(needle, startpos), expected );
- if (!hasNull)
- QCOMPARE( haystack.lastIndexOf(needle.data(), startpos), expected );
- if (needle.size() == 1)
- QCOMPARE( haystack.lastIndexOf(needle.at(0), startpos), expected );
-
- if (startpos == -1) {
- QCOMPARE( haystack.lastIndexOf(needle), expected );
- if (!hasNull)
- QCOMPARE( haystack.lastIndexOf(needle.data()), expected );
- if (needle.size() == 1)
- QCOMPARE( haystack.lastIndexOf(needle.at(0)), expected );
- }
-}
-
-void tst_QByteArray::number()
-{
- QCOMPARE(QString(QByteArray::number((quint64) 0)),
- QString(QByteArray("0")));
- QCOMPARE(QString(QByteArray::number(Q_UINT64_C(0xFFFFFFFFFFFFFFFF))),
- QString(QByteArray("18446744073709551615")));
- QCOMPARE(QString(QByteArray::number(Q_INT64_C(0xFFFFFFFFFFFFFFFF))),
- QString(QByteArray("-1")));
- QCOMPARE(QString(QByteArray::number(qint64(0))),
- QString(QByteArray("0")));
- QCOMPARE(QString(QByteArray::number(Q_INT64_C(0x7FFFFFFFFFFFFFFF))),
- QString(QByteArray("9223372036854775807")));
- QCOMPARE(QString(QByteArray::number(Q_INT64_C(0x8000000000000000))),
- QString(QByteArray("-9223372036854775808")));
-}
-
-// defined later
-extern const char globalChar;
-
-void tst_QByteArray::toInt_data()
-{
- QTest::addColumn<QByteArray>("string");
- QTest::addColumn<int>("base");
- QTest::addColumn<int>("expectednumber");
- QTest::addColumn<bool>("expectedok");
-
- QTest::newRow("base 10") << QByteArray("100") << 10 << int(100) << true;
- QTest::newRow("base 16") << QByteArray("100") << 16 << int(256) << true;
- QTest::newRow("base 16") << QByteArray("0400") << 16 << int(1024) << true;
- QTest::newRow("base 2") << QByteArray("1111") << 2 << int(15) << true;
- QTest::newRow("base 8") << QByteArray("100") << 8 << int(64) << true;
- QTest::newRow("base 0") << QByteArray("0x10") << 0 << int(16) << true;
- QTest::newRow("base 0") << QByteArray("10") << 0 << int(10) << true;
- QTest::newRow("base 0") << QByteArray("010") << 0 << int(8) << true;
- QTest::newRow("empty") << QByteArray() << 0 << int(0) << false;
-
- // using fromRawData
- QTest::newRow("raw1") << QByteArray::fromRawData("1", 1) << 10 << 1 << true;
- QTest::newRow("raw2") << QByteArray::fromRawData("1foo", 1) << 10 << 1 << true;
- QTest::newRow("raw3") << QByteArray::fromRawData("12", 1) << 10 << 1 << true;
- QTest::newRow("raw4") << QByteArray::fromRawData("123456789", 1) << 10 << 1 << true;
- QTest::newRow("raw4") << QByteArray::fromRawData("123456789", 2) << 10 << 12 << true;
-
- QTest::newRow("raw-static") << QByteArray::fromRawData(&globalChar, 1) << 10 << 1 << true;
-}
-
-void tst_QByteArray::toInt()
-{
- QFETCH( QByteArray, string );
- QFETCH( int, base );
- QFETCH( int, expectednumber );
- QFETCH( bool, expectedok );
-
- bool ok;
- int number = string.toInt(&ok, base);
-
- QCOMPARE( ok, expectedok );
- QCOMPARE( number, expectednumber );
-}
-
-Q_DECLARE_METATYPE(qulonglong)
-void tst_QByteArray::toULong_data()
-{
- QTest::addColumn<QByteArray>("str");
- QTest::addColumn<int>("base");
- QTest::addColumn<ulong>("result");
- QTest::addColumn<bool>("ok");
-
- ulong LongMaxPlusOne = (ulong)LONG_MAX + 1;
- QTest::newRow("LONG_MAX+1") << QString::number(LongMaxPlusOne).toLatin1() << 10 << LongMaxPlusOne << true;
- QTest::newRow("default") << QByteArray() << 10 << 0UL << false;
- QTest::newRow("empty") << QByteArray("") << 10 << 0UL << false;
- QTest::newRow("ulong1") << QByteArray("3234567890") << 10 << 3234567890UL << true;
- QTest::newRow("ulong2") << QByteArray("fFFfFfFf") << 16 << 0xFFFFFFFFUL << true;
-}
-
-void tst_QByteArray::toULong()
-{
- QFETCH(QByteArray, str);
- QFETCH(int, base);
- QFETCH(ulong, result);
- QFETCH(bool, ok);
-
- bool b;
- QCOMPARE(str.toULong(0, base), result);
- QCOMPARE(str.toULong(&b, base), result);
- QCOMPARE(b, ok);
-}
-
-void tst_QByteArray::toULongLong_data()
-{
- QTest::addColumn<QByteArray>("str");
- QTest::addColumn<int>("base");
- QTest::addColumn<qulonglong>("result");
- QTest::addColumn<bool>("ok");
-
- QTest::newRow("default") << QByteArray() << 10 << (qulonglong)0 << false;
- QTest::newRow("out of base bound") << QByteArray("c") << 10 << (qulonglong)0 << false;
-
-}
-
-void tst_QByteArray::toULongLong()
-{
- QFETCH(QByteArray, str);
- QFETCH(int, base);
- QFETCH(qulonglong, result);
- QFETCH(bool, ok);
-
- bool b;
- QCOMPARE(str.toULongLong(0, base), result);
- QCOMPARE(str.toULongLong(&b, base), result);
- QCOMPARE(b, ok);
-}
-
-// global function defined in qbytearray.cpp
-void tst_QByteArray::qAllocMore()
-{
- static const int t[] = {
- INT_MIN, INT_MIN + 1, -1234567, -66000, -1025,
- -3, -1, 0, +1, +3, +1025, +66000, +1234567, INT_MAX - 1, INT_MAX,
- INT_MAX/3
- };
- static const int N = sizeof(t)/sizeof(t[0]);
-
- // make sure qAllocMore() doesn't loop infinitely on any input
- for (int i = 0; i < N; ++i) {
- for (int j = 0; j < N; ++j) {
- ::qAllocMore(t[i], t[j]);
- }
- }
-}
-
-void tst_QByteArray::resizeAfterFromRawData()
-{
- QByteArray buffer("hello world");
-
- QByteArray array = QByteArray::fromRawData(buffer.constData(), buffer.size());
- QVERIFY(array.constData() == buffer.constData());
- array.resize(5);
- QVERIFY(array.constData() == buffer.constData());
-}
-
-void tst_QByteArray::appendAfterFromRawData()
-{
- QByteArray arr;
- {
- char data[] = "X";
- arr += QByteArray::fromRawData(data, sizeof(data));
- data[0] = 'Y';
- }
- QVERIFY(arr.at(0) == 'X');
-}
-
-void tst_QByteArray::toFromHex_data()
-{
- QTest::addColumn<QByteArray>("str");
- QTest::addColumn<QByteArray>("hex");
- QTest::addColumn<QByteArray>("hex_alt1");
-
- QTest::newRow("Qt is great!")
- << QByteArray("Qt is great!")
- << QByteArray("517420697320677265617421")
- << QByteArray("51 74 20 69 73 20 67 72 65 61 74 21");
-
- QTest::newRow("Qt is so great!")
- << QByteArray("Qt is so great!")
- << QByteArray("517420697320736f20677265617421")
- << QByteArray("51 74 20 69 73 20 73 6f 20 67 72 65 61 74 21");
-
- QTest::newRow("default-constructed")
- << QByteArray()
- << QByteArray()
- << QByteArray();
-
- QTest::newRow("empty")
- << QByteArray("")
- << QByteArray("")
- << QByteArray("");
-
- QTest::newRow("array-of-null")
- << QByteArray("\0", 1)
- << QByteArray("00")
- << QByteArray("0");
-
- QTest::newRow("no-leading-zero")
- << QByteArray("\xf")
- << QByteArray("0f")
- << QByteArray("f");
-
- QTest::newRow("single-byte")
- << QByteArray("\xaf")
- << QByteArray("af")
- << QByteArray("xaf");
-
- QTest::newRow("no-leading-zero")
- << QByteArray("\xd\xde\xad\xc0\xde")
- << QByteArray("0ddeadc0de")
- << QByteArray("ddeadc0de");
-
- QTest::newRow("garbage")
- << QByteArray("\xC\xde\xeC\xea\xee\xDe\xee\xee")
- << QByteArray("0cdeeceaeedeeeee")
- << QByteArray("Code less. Create more. Deploy everywhere.");
-
- QTest::newRow("under-defined-1")
- << QByteArray("\x1\x23")
- << QByteArray("0123")
- << QByteArray("x123");
-
- QTest::newRow("under-defined-2")
- << QByteArray("\x12\x34")
- << QByteArray("1234")
- << QByteArray("x1234");
-}
-
-void tst_QByteArray::toFromHex()
-{
- QFETCH(QByteArray, str);
- QFETCH(QByteArray, hex);
- QFETCH(QByteArray, hex_alt1);
-
- {
- const QByteArray th = str.toHex();
- QCOMPARE(th.size(), hex.size());
- QCOMPARE(th, hex);
- }
-
- {
- const QByteArray fh = QByteArray::fromHex(hex);
- QCOMPARE(fh.size(), str.size());
- QCOMPARE(fh, str);
- }
-
- QCOMPARE(QByteArray::fromHex(hex_alt1), str);
-}
-
-void tst_QByteArray::toFromPercentEncoding()
-{
- QByteArray arr("Qt is great!");
-/*
- QByteArray data = arr.toPercentEncoding();
- QCOMPARE(QString(data), QString("Qt%20is%20great%21"));
- QCOMPARE(QByteArray::fromPercentEncoding(data), arr);
-*/
- QByteArray data = arr.toPercentEncoding("! ", "Qt");
- QCOMPARE(QString(data), QString("%51%74 is grea%74!"));
- QCOMPARE(QByteArray::fromPercentEncoding(data), arr);
-
- data = arr.toPercentEncoding(QByteArray(), "abcdefghijklmnopqrstuvwxyz", 'Q');
- QCOMPARE(QString(data), QString("Q51Q74Q20Q69Q73Q20Q67Q72Q65Q61Q74Q21"));
- QCOMPARE(QByteArray::fromPercentEncoding(data, 'Q'), arr);
-
- // verify that to/from percent encoding preserves nullity
- arr = "";
- QVERIFY(arr.isEmpty());
- QVERIFY(!arr.isNull());
- QVERIFY(arr.toPercentEncoding().isEmpty());
- QVERIFY(!arr.toPercentEncoding().isNull());
- QVERIFY(QByteArray::fromPercentEncoding("").isEmpty());
- QVERIFY(!QByteArray::fromPercentEncoding("").isNull());
-
- arr = QByteArray();
- QVERIFY(arr.isEmpty());
- QVERIFY(arr.isNull());
- QVERIFY(arr.toPercentEncoding().isEmpty());
- QVERIFY(arr.toPercentEncoding().isNull());
- QVERIFY(QByteArray::fromPercentEncoding(QByteArray()).isEmpty());
- QVERIFY(QByteArray::fromPercentEncoding(QByteArray()).isNull());
-}
-
-void tst_QByteArray::compare_data()
-{
- QTest::addColumn<QByteArray>("str1");
- QTest::addColumn<QByteArray>("str2");
- QTest::addColumn<int>("result");
-
- QTest::newRow("null") << QByteArray() << QByteArray() << 0;
- QTest::newRow("null-empty")<< QByteArray() << QByteArray("") << 0;
- QTest::newRow("empty-null")<< QByteArray("") << QByteArray() << 0;
- QTest::newRow("null-full") << QByteArray() << QByteArray("abc") << -1;
- QTest::newRow("full-null") << QByteArray("abc") << QByteArray() << +1;
- QTest::newRow("empty-full")<< QByteArray("") << QByteArray("abc") << -1;
- QTest::newRow("full-empty")<< QByteArray("abc") << QByteArray("") << +1;
- QTest::newRow("rawempty-full") << QByteArray::fromRawData("abc", 0) << QByteArray("abc") << -1;
- QTest::newRow("full-rawempty") << QByteArray("abc") << QByteArray::fromRawData("abc", 0) << +1;
-
- QTest::newRow("equal 1") << QByteArray("abc") << QByteArray("abc") << 0;
- QTest::newRow("equal 2") << QByteArray::fromRawData("abc", 3) << QByteArray("abc") << 0;
- QTest::newRow("equal 3") << QByteArray::fromRawData("abcdef", 3) << QByteArray("abc") << 0;
- QTest::newRow("equal 4") << QByteArray("abc") << QByteArray::fromRawData("abc", 3) << 0;
- QTest::newRow("equal 5") << QByteArray("abc") << QByteArray::fromRawData("abcdef", 3) << 0;
- QTest::newRow("equal 6") << QByteArray("a\0bc", 4) << QByteArray("a\0bc", 4) << 0;
- QTest::newRow("equal 7") << QByteArray::fromRawData("a\0bcdef", 4) << QByteArray("a\0bc", 4) << 0;
- QTest::newRow("equal 8") << QByteArray("a\0bc", 4) << QByteArray::fromRawData("a\0bcdef", 4) << 0;
-
- QTest::newRow("less 1") << QByteArray("000") << QByteArray("abc") << -1;
- QTest::newRow("less 2") << QByteArray::fromRawData("00", 3) << QByteArray("abc") << -1;
- QTest::newRow("less 3") << QByteArray("000") << QByteArray::fromRawData("abc", 3) << -1;
- QTest::newRow("less 4") << QByteArray("abc", 3) << QByteArray("abc", 4) << -1;
- QTest::newRow("less 5") << QByteArray::fromRawData("abc\0", 3) << QByteArray("abc\0", 4) << -1;
- QTest::newRow("less 6") << QByteArray("a\0bc", 4) << QByteArray("a\0bd", 4) << -1;
-
- QTest::newRow("greater 1") << QByteArray("abc") << QByteArray("000") << +1;
- QTest::newRow("greater 2") << QByteArray("abc") << QByteArray::fromRawData("00", 3) << +1;
- QTest::newRow("greater 3") << QByteArray("abcd") << QByteArray::fromRawData("abcd", 3) << +1;
- QTest::newRow("greater 4") << QByteArray("a\0bc", 4) << QByteArray("a\0bb", 4) << +1;
-}
-
-void tst_QByteArray::compare()
-{
- QFETCH(QByteArray, str1);
- QFETCH(QByteArray, str2);
- QFETCH(int, result);
-
- const bool isEqual = result == 0;
- const bool isLess = result < 0;
- const bool isGreater = result > 0;
-
- // basic tests:
- QCOMPARE(str1 == str2, isEqual);
- QCOMPARE(str1 < str2, isLess);
- QCOMPARE(str1 > str2, isGreater);
-
- // composed tests:
- QCOMPARE(str1 <= str2, isLess || isEqual);
- QCOMPARE(str1 >= str2, isGreater || isEqual);
- QCOMPARE(str1 != str2, !isEqual);
-
- // inverted tests:
- QCOMPARE(str2 == str1, isEqual);
- QCOMPARE(str2 < str1, isGreater);
- QCOMPARE(str2 > str1, isLess);
-
- // composed, inverted tests:
- QCOMPARE(str2 <= str1, isGreater || isEqual);
- QCOMPARE(str2 >= str1, isLess || isEqual);
- QCOMPARE(str2 != str1, !isEqual);
-}
-
-void tst_QByteArray::compareCharStar_data()
-{
- QTest::addColumn<QByteArray>("str1");
- QTest::addColumn<QString>("string2");
- QTest::addColumn<int>("result");
-
- QTest::newRow("null-null") << QByteArray() << QString() << 0;
- QTest::newRow("null-empty") << QByteArray() << "" << 0;
- QTest::newRow("null-full") << QByteArray() << "abc" << -1;
- QTest::newRow("empty-null") << QByteArray("") << QString() << 0;
- QTest::newRow("empty-empty") << QByteArray("") << "" << 0;
- QTest::newRow("empty-full") << QByteArray("") << "abc" << -1;
- QTest::newRow("raw-null") << QByteArray::fromRawData("abc", 0) << QString() << 0;
- QTest::newRow("raw-empty") << QByteArray::fromRawData("abc", 0) << QString("") << 0;
- QTest::newRow("raw-full") << QByteArray::fromRawData("abc", 0) << "abc" << -1;
-
- QTest::newRow("full-null") << QByteArray("abc") << QString() << +1;
- QTest::newRow("full-empty") << QByteArray("abc") << "" << +1;
-
- QTest::newRow("equal1") << QByteArray("abc") << "abc" << 0;
- QTest::newRow("equal2") << QByteArray("abcd", 3) << "abc" << 0;
- QTest::newRow("equal3") << QByteArray::fromRawData("abcd", 3) << "abc" << 0;
-
- QTest::newRow("less1") << QByteArray("ab") << "abc" << -1;
- QTest::newRow("less2") << QByteArray("abb") << "abc" << -1;
- QTest::newRow("less3") << QByteArray::fromRawData("abc", 2) << "abc" << -1;
- QTest::newRow("less4") << QByteArray("", 1) << "abc" << -1;
- QTest::newRow("less5") << QByteArray::fromRawData("", 1) << "abc" << -1;
- QTest::newRow("less6") << QByteArray("a\0bc", 4) << "a.bc" << -1;
-
- QTest::newRow("greater1") << QByteArray("ac") << "abc" << +1;
- QTest::newRow("greater2") << QByteArray("abd") << "abc" << +1;
- QTest::newRow("greater3") << QByteArray("abcd") << "abc" << +1;
- QTest::newRow("greater4") << QByteArray::fromRawData("abcd", 4) << "abc" << +1;
-}
-
-void tst_QByteArray::compareCharStar()
-{
- QFETCH(QByteArray, str1);
- QFETCH(QString, string2);
- QFETCH(int, result);
-
- const bool isEqual = result == 0;
- const bool isLess = result < 0;
- const bool isGreater = result > 0;
- QByteArray qba = string2.toLatin1();
- const char *str2 = qba.constData();
- if (string2.isNull())
- str2 = 0;
-
- // basic tests:
- QCOMPARE(str1 == str2, isEqual);
- QCOMPARE(str1 < str2, isLess);
- QCOMPARE(str1 > str2, isGreater);
-
- // composed tests:
- QCOMPARE(str1 <= str2, isLess || isEqual);
- QCOMPARE(str1 >= str2, isGreater || isEqual);
- QCOMPARE(str1 != str2, !isEqual);
-
- // inverted tests:
- QCOMPARE(str2 == str1, isEqual);
- QCOMPARE(str2 < str1, isGreater);
- QCOMPARE(str2 > str1, isLess);
-
- // composed, inverted tests:
- QCOMPARE(str2 <= str1, isGreater || isEqual);
- QCOMPARE(str2 >= str1, isLess || isEqual);
- QCOMPARE(str2 != str1, !isEqual);
-}
-
-void tst_QByteArray::repeatedSignature() const
-{
- /* repated() should be a const member. */
- const QByteArray string;
- string.repeated(3);
-}
-
-void tst_QByteArray::repeated() const
-{
- QFETCH(QByteArray, string);
- QFETCH(QByteArray, expected);
- QFETCH(int, count);
-
- QCOMPARE(string.repeated(count), expected);
-}
-
-void tst_QByteArray::repeated_data() const
-{
- QTest::addColumn<QByteArray>("string" );
- QTest::addColumn<QByteArray>("expected" );
- QTest::addColumn<int>("count" );
-
- /* Empty strings. */
- QTest::newRow("")
- << QByteArray()
- << QByteArray()
- << 0;
-
- QTest::newRow("")
- << QByteArray()
- << QByteArray()
- << -1004;
-
- QTest::newRow("")
- << QByteArray()
- << QByteArray()
- << 1;
-
- QTest::newRow("")
- << QByteArray()
- << QByteArray()
- << 5;
-
- /* On simple string. */
- QTest::newRow("")
- << QByteArray("abc")
- << QByteArray()
- << -1004;
-
- QTest::newRow("")
- << QByteArray("abc")
- << QByteArray()
- << -1;
-
- QTest::newRow("")
- << QByteArray("abc")
- << QByteArray()
- << 0;
-
- QTest::newRow("")
- << QByteArray("abc")
- << QByteArray("abc")
- << 1;
-
- QTest::newRow("")
- << QByteArray(("abc"))
- << QByteArray(("abcabc"))
- << 2;
-
- QTest::newRow("")
- << QByteArray(("abc"))
- << QByteArray(("abcabcabc"))
- << 3;
-
- QTest::newRow("")
- << QByteArray(("abc"))
- << QByteArray(("abcabcabcabc"))
- << 4;
-}
-
-void tst_QByteArray::byteRefDetaching() const
-{
- {
- QByteArray str = "str";
- QByteArray copy;
- copy[0] = 'S';
-
- QCOMPARE(str, QByteArray("str"));
- }
-
- {
- char buf[] = { 's', 't', 'r' };
- QByteArray str = QByteArray::fromRawData(buf, 3);
- str[0] = 'S';
-
- QCOMPARE(buf[0], char('s'));
- }
-
- {
- static const char buf[] = { 's', 't', 'r' };
- QByteArray str = QByteArray::fromRawData(buf, 3);
-
- // this causes a crash in most systems if the detaching doesn't work
- str[0] = 'S';
-
- QCOMPARE(buf[0], char('s'));
- }
-}
-
-void tst_QByteArray::reserve()
-{
- int capacity = 100;
- QByteArray qba;
- qba.reserve(capacity);
- QVERIFY(qba.capacity() == capacity);
- char *data = qba.data();
-
- for (int i = 0; i < capacity; i++) {
- qba.resize(i);
- QVERIFY(capacity == qba.capacity());
- QVERIFY(data == qba.data());
- }
-}
-
-void tst_QByteArray::literals()
-{
-#if defined(Q_COMPILER_LAMBDA) || defined(Q_CC_GNU)
- QByteArray str(QByteArrayLiteral("abcd"));
-
- QVERIFY(str.length() == 4);
- QVERIFY(str == "abcd");
- QVERIFY(str.data_ptr()->ref == -1);
- QVERIFY(str.data_ptr()->offset == 0);
-
- const char *s = str.constData();
- QByteArray str2 = str;
- QVERIFY(str2.constData() == s);
-
- // detach on non const access
- QVERIFY(str.data() != s);
-
- QVERIFY(str2.constData() == s);
- QVERIFY(str2.data() != s);
-
-#else
- QSKIP("Only tested on c++0x compliant compiler or gcc", SkipAll);
-#endif
-}
-
-const char globalChar = '1';
-
-QTEST_APPLESS_MAIN(tst_QByteArray)
-#include "tst_qbytearray.moc"
diff --git a/tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp b/tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp
deleted file mode 100644
index ff6de8e9f4..0000000000
--- a/tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qbytearraymatcher.h>
-
-class tst_QByteArrayMatcher : public QObject
-{
- Q_OBJECT
-
-private slots:
- void interface();
- void task251958();
-};
-
-static QByteArrayMatcher matcher1;
-
-void tst_QByteArrayMatcher::interface()
-{
- const char needle[] = "abc123";
- QByteArray haystack(500, 'a');
- haystack.insert(6, "123");
- haystack.insert(31, "abc");
- haystack.insert(42, "abc123");
- haystack.insert(84, "abc123");
-
- matcher1 = QByteArrayMatcher(QByteArray(needle));
- QByteArrayMatcher matcher2;
- matcher2.setPattern(QByteArray(needle));
-
- QByteArrayMatcher matcher3 = QByteArrayMatcher(QByteArray(needle));
- QByteArrayMatcher matcher4(needle, sizeof(needle) - 1);
- QByteArrayMatcher matcher5(matcher2);
- QByteArrayMatcher matcher6;
- matcher6 = matcher3;
-
- QCOMPARE(matcher1.indexIn(haystack), 42);
- QCOMPARE(matcher2.indexIn(haystack), 42);
- QCOMPARE(matcher3.indexIn(haystack), 42);
- QCOMPARE(matcher4.indexIn(haystack), 42);
- QCOMPARE(matcher5.indexIn(haystack), 42);
- QCOMPARE(matcher6.indexIn(haystack), 42);
-
- QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length()), 42);
-
- QCOMPARE(matcher1.indexIn(haystack, 43), 84);
- QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length(), 43), 84);
- QCOMPARE(matcher1.indexIn(haystack, 85), -1);
- QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length(), 85), -1);
-
- QByteArrayMatcher matcher7(QByteArray("123"));
- QCOMPARE(matcher7.indexIn(haystack), 6);
-
- matcher7 = QByteArrayMatcher(QByteArray("abc"));
- QCOMPARE(matcher7.indexIn(haystack), 31);
-
- matcher7.setPattern(matcher4.pattern());
- QCOMPARE(matcher7.indexIn(haystack), 42);
-}
-
-
-static QByteArrayMatcher matcher;
-
-void tst_QByteArrayMatcher::task251958()
-{
- const char p_data[] = { 0x0, 0x0, 0x1 };
- QByteArray pattern(p_data, sizeof(p_data));
-
- QByteArray haystack(8, '\0');
- haystack[7] = 0x1;
-
- matcher = QByteArrayMatcher(pattern);
- QCOMPARE(matcher.indexIn(haystack, 0), 5);
- QCOMPARE(matcher.indexIn(haystack, 1), 5);
- QCOMPARE(matcher.indexIn(haystack, 2), 5);
-
- matcher.setPattern(pattern);
- QCOMPARE(matcher.indexIn(haystack, 0), 5);
- QCOMPARE(matcher.indexIn(haystack, 1), 5);
- QCOMPARE(matcher.indexIn(haystack, 2), 5);
-}
-
-QTEST_APPLESS_MAIN(tst_QByteArrayMatcher)
-#include "tst_qbytearraymatcher.moc"
diff --git a/tests/auto/qcalendarwidget/qcalendarwidget.pro b/tests/auto/qcalendarwidget/qcalendarwidget.pro
index 62b137b347..d250b83537 100644
--- a/tests/auto/qcalendarwidget/qcalendarwidget.pro
+++ b/tests/auto/qcalendarwidget/qcalendarwidget.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qcalendarwidget.cpp
diff --git a/tests/auto/qcheckbox/qcheckbox.pro b/tests/auto/qcheckbox/qcheckbox.pro
index c2fee48133..aa1f35b3c9 100644
--- a/tests/auto/qcheckbox/qcheckbox.pro
+++ b/tests/auto/qcheckbox/qcheckbox.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qcheckbox.cpp
diff --git a/tests/auto/qclipboard/copier/copier.pro b/tests/auto/qclipboard/copier/copier.pro
deleted file mode 100644
index 1c188ca7de..0000000000
--- a/tests/auto/qclipboard/copier/copier.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-TEMPLATE = app
-TARGET =
-DEPENDPATH += .
-INCLUDEPATH += .
-CONFIG -= app_bundle
-win32: DESTDIR = ../copier
-# Input
-SOURCES += main.cpp
-
diff --git a/tests/auto/qclipboard/paster/paster.pro b/tests/auto/qclipboard/paster/paster.pro
deleted file mode 100644
index 8580644b1e..0000000000
--- a/tests/auto/qclipboard/paster/paster.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-TEMPLATE = app
-TARGET =
-DEPENDPATH += .
-INCLUDEPATH += .
-win32: DESTDIR = ../paster
-CONFIG -= app_bundle
-
-# Input
-SOURCES += main.cpp
-
-
diff --git a/tests/auto/qclipboard/tst_qclipboard.cpp b/tests/auto/qclipboard/tst_qclipboard.cpp
deleted file mode 100644
index 94981cf8e5..0000000000
--- a/tests/auto/qclipboard/tst_qclipboard.cpp
+++ /dev/null
@@ -1,422 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <QtCore/QDebug>
-#include <QtGui/QApplication>
-#include <QtGui/QClipboard>
-#ifdef Q_WS_MAC
-#include <Carbon/Carbon.h>
-#endif
-#ifdef Q_OS_SYMBIAN
-#include "private/qcore_symbian_p.h"
-#include "txtetext.h"
-#include <baclipb.h>
-#endif
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include "txtclipboard.h"
-#endif
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QClipboard : public QObject
-{
- Q_OBJECT
-private slots:
-
- void copy_exit_paste();
- void capabiliyFunctions();
- void modes();
- void testSignals();
- void setMimeData();
- void clearBeforeSetText();
-#ifdef Q_OS_SYMBIAN
- void pasteCopySymbian();
- void copyPasteSymbian();
-#endif
-
-private:
- bool nativeClipboardWorking();
-};
-
-
-bool tst_QClipboard::nativeClipboardWorking()
-{
-#ifdef Q_WS_MAC
- PasteboardRef pasteboard;
- OSStatus status = PasteboardCreate(0, &pasteboard);
- if (status == noErr)
- CFRelease(pasteboard);
- return status == noErr;
-#endif
- return true;
-}
-
-Q_DECLARE_METATYPE(QClipboard::Mode)
-
-/*
- Tests that the capability functions are implemented on all
- platforms.
-*/
-void tst_QClipboard::capabiliyFunctions()
-{
- QClipboard * const clipboard = QApplication::clipboard();
-
- clipboard->supportsSelection();
- clipboard->supportsFindBuffer();
- clipboard->ownsSelection();
- clipboard->ownsClipboard();
- clipboard->ownsFindBuffer();
-}
-
-/*
- Test that text inserted into the clipboard in different modes is
- kept separate.
-*/
-void tst_QClipboard::modes()
-{
- QClipboard * const clipboard = QApplication::clipboard();
-
- if (!nativeClipboardWorking())
- QSKIP("Native clipboard not working in this setup", SkipAll);
-
- const QString defaultMode = "default mode text;";
- clipboard->setText(defaultMode);
- QCOMPARE(clipboard->text(), defaultMode);
-
- if (clipboard->supportsSelection()) {
- const QString selectionMode = "selection mode text";
- clipboard->setText(selectionMode, QClipboard::Selection);
- QCOMPARE(clipboard->text(QClipboard::Selection), selectionMode);
- QCOMPARE(clipboard->text(), defaultMode);
- }
-
- if (clipboard->supportsFindBuffer()) {
- const QString searchMode = "find mode text";
- clipboard->setText(searchMode, QClipboard::FindBuffer);
- QCOMPARE(clipboard->text(QClipboard::FindBuffer), searchMode);
- QCOMPARE(clipboard->text(), defaultMode);
- }
-}
-
-/*
- Test that the appropriate signals are emitted when the cliboard
- contents is changed by calling the qt functions.
-*/
-void tst_QClipboard::testSignals()
-{
- qRegisterMetaType<QClipboard::Mode>("QClipboard::Mode");
-
- if (!nativeClipboardWorking())
- QSKIP("Native clipboard not working in this setup", SkipAll);
-
- QClipboard * const clipboard = QApplication::clipboard();
-
- QSignalSpy changedSpy(clipboard, SIGNAL(changed(QClipboard::Mode)));
- QSignalSpy dataChangedSpy(clipboard, SIGNAL(dataChanged()));
- QSignalSpy searchChangedSpy(clipboard, SIGNAL(findBufferChanged()));
- QSignalSpy selectionChangedSpy(clipboard, SIGNAL(selectionChanged()));
-
- const QString text = "clipboard text;";
-
- // Test the default mode signal.
- clipboard->setText(text);
- QCOMPARE(dataChangedSpy.count(), 1);
- QCOMPARE(searchChangedSpy.count(), 0);
- QCOMPARE(selectionChangedSpy.count(), 0);
- QCOMPARE(changedSpy.count(), 1);
- QCOMPARE(changedSpy.at(0).count(), 1);
- QCOMPARE(qVariantValue<QClipboard::Mode>(changedSpy.at(0).at(0)), QClipboard::Clipboard);
-
- changedSpy.clear();
-
- // Test the selection mode signal.
- if (clipboard->supportsSelection()) {
- clipboard->setText(text, QClipboard::Selection);
- QCOMPARE(selectionChangedSpy.count(), 1);
- QCOMPARE(changedSpy.count(), 1);
- QCOMPARE(changedSpy.at(0).count(), 1);
- QCOMPARE(qVariantValue<QClipboard::Mode>(changedSpy.at(0).at(0)), QClipboard::Selection);
- } else {
- QCOMPARE(selectionChangedSpy.count(), 0);
- }
- QCOMPARE(dataChangedSpy.count(), 1);
- QCOMPARE(searchChangedSpy.count(), 0);
-
- changedSpy.clear();
-
- // Test the search mode signal.
- if (clipboard->supportsFindBuffer()) {
- clipboard->setText(text, QClipboard::FindBuffer);
- QCOMPARE(searchChangedSpy.count(), 1);
- QCOMPARE(changedSpy.count(), 1);
- QCOMPARE(changedSpy.at(0).count(), 1);
- QCOMPARE(qVariantValue<QClipboard::Mode>(changedSpy.at(0).at(0)), QClipboard::FindBuffer);
- } else {
- QCOMPARE(searchChangedSpy.count(), 0);
- }
- QCOMPARE(dataChangedSpy.count(), 1);
-}
-
-/*
- Test that pasted text remain on the clipboard
- after a Qt application exits.
-*/
-void tst_QClipboard::copy_exit_paste()
-{
-#ifndef QT_NO_PROCESS
-#if defined Q_WS_X11 || defined Q_WS_QWS || defined (Q_WS_QPA)
- QSKIP("This test does not make sense on X11 and embedded, copied data disappears from the clipboard when the application exits ", SkipAll);
- // ### It's still possible to test copy/paste - just keep the apps running
-#elif defined (Q_OS_SYMBIAN) && defined (Q_CC_NOKIAX86)
- QSKIP("emulator cannot launch multiple processes",SkipAll);
-#endif
- if (!nativeClipboardWorking())
- QSKIP("Native clipboard not working in this setup", SkipAll);
- const QStringList stringArgument = QStringList() << "Test string.";
- QCOMPARE(QProcess::execute("copier/copier", stringArgument), 0);
-#ifdef Q_WS_MAC
- // The Pasteboard needs a moment to breathe (at least on older Macs).
- QTest::qWait(100);
-#endif
- QCOMPARE(QProcess::execute("paster/paster", stringArgument), 0);
-#endif
-}
-
-void tst_QClipboard::setMimeData()
-{
- if (!nativeClipboardWorking())
- QSKIP("Native clipboard not working in this setup", SkipAll);
- QMimeData *mimeData = new QMimeData;
- const QString TestName(QLatin1String("tst_QClipboard::setMimeData() mimeData"));
- mimeData->setObjectName(TestName);
-#if defined(Q_OS_WINCE)
- // need to set text on CE
- mimeData->setText(QLatin1String("Qt/CE foo"));
-#endif
-
- QApplication::clipboard()->setMimeData(mimeData);
- QCOMPARE(QApplication::clipboard()->mimeData(), (const QMimeData *)mimeData);
- QCOMPARE(QApplication::clipboard()->mimeData()->objectName(), TestName);
-
- // set it to the same data again, it shouldn't delete mimeData (and crash as a result)
- QApplication::clipboard()->setMimeData(mimeData);
- QCOMPARE(QApplication::clipboard()->mimeData(), (const QMimeData *)mimeData);
- QCOMPARE(QApplication::clipboard()->mimeData()->objectName(), TestName);
- QApplication::clipboard()->clear();
- const QMimeData *appMimeData = QApplication::clipboard()->mimeData();
- QVERIFY(appMimeData != mimeData || appMimeData->objectName() != TestName);
-
- // check for crash when using the same mimedata object on several clipboards
- QMimeData *data = new QMimeData;
- data->setText("foo");
-
- QApplication::clipboard()->setMimeData(data, QClipboard::Clipboard);
- QApplication::clipboard()->setMimeData(data, QClipboard::Selection);
- QApplication::clipboard()->setMimeData(data, QClipboard::FindBuffer);
-
- QSignalSpy spySelection(QApplication::clipboard(), SIGNAL(selectionChanged()));
- QSignalSpy spyData(QApplication::clipboard(), SIGNAL(dataChanged()));
- QSignalSpy spyFindBuffer(QApplication::clipboard(), SIGNAL(findBufferChanged()));
-
- QApplication::clipboard()->clear(QClipboard::Clipboard);
- QApplication::clipboard()->clear(QClipboard::Selection); // used to crash on X11
- QApplication::clipboard()->clear(QClipboard::FindBuffer);
-
-#if defined(Q_WS_X11)
- QCOMPARE(spySelection.count(), 1);
- QCOMPARE(spyData.count(), 1);
- QCOMPARE(spyFindBuffer.count(), 0);
-#elif defined(Q_WS_MAC)
- QCOMPARE(spySelection.count(), 0);
- QCOMPARE(spyData.count(), 1);
- QCOMPARE(spyFindBuffer.count(), 1);
-#elif defined(Q_WS_WIN)
- QCOMPARE(spySelection.count(), 0);
- QCOMPARE(spyData.count(), 1);
- QCOMPARE(spyFindBuffer.count(), 0);
-#endif
-
- // an other crash test
- data = new QMimeData;
- data->setText("foo");
-
- QApplication::clipboard()->setMimeData(data, QClipboard::Clipboard);
- QApplication::clipboard()->setMimeData(data, QClipboard::Selection);
- QApplication::clipboard()->setMimeData(data, QClipboard::FindBuffer);
-
- QMimeData *newData = new QMimeData;
- newData->setText("bar");
-
- spySelection.clear();
- spyData.clear();
- spyFindBuffer.clear();
-
- QApplication::clipboard()->setMimeData(newData, QClipboard::Clipboard);
- QApplication::clipboard()->setMimeData(newData, QClipboard::Selection); // used to crash on X11
- QApplication::clipboard()->setMimeData(newData, QClipboard::FindBuffer);
-
-#if defined(Q_WS_X11)
- QCOMPARE(spySelection.count(), 1);
- QCOMPARE(spyData.count(), 1);
- QCOMPARE(spyFindBuffer.count(), 0);
-#elif defined(Q_WS_MAC)
- QCOMPARE(spySelection.count(), 0);
- QCOMPARE(spyData.count(), 1);
- QCOMPARE(spyFindBuffer.count(), 1);
-#elif defined(Q_WS_WIN)
- QCOMPARE(spySelection.count(), 0);
- QCOMPARE(spyData.count(), 1);
- QCOMPARE(spyFindBuffer.count(), 0);
-#endif
-}
-
-void tst_QClipboard::clearBeforeSetText()
-{
- QApplication::processEvents();
-
- if (!nativeClipboardWorking())
- QSKIP("Native clipboard not working in this setup", SkipAll);
-
- const QString text = "tst_QClipboard::clearBeforeSetText()";
-
- // setText() should work after processEvents()
- QApplication::clipboard()->setText(text);
- QCOMPARE(QApplication::clipboard()->text(), text);
- QApplication::processEvents();
- QCOMPARE(QApplication::clipboard()->text(), text);
-
- // same with clear()
- QApplication::clipboard()->clear();
- QVERIFY(QApplication::clipboard()->text().isEmpty());
- QApplication::processEvents();
- QVERIFY(QApplication::clipboard()->text().isEmpty());
-
- // setText() again
- QApplication::clipboard()->setText(text);
- QCOMPARE(QApplication::clipboard()->text(), text);
- QApplication::processEvents();
- QCOMPARE(QApplication::clipboard()->text(), text);
-
- // clear() immediately followed by setText() should still return the text
- QApplication::clipboard()->clear();
- QVERIFY(QApplication::clipboard()->text().isEmpty());
- QApplication::clipboard()->setText(text);
- QCOMPARE(QApplication::clipboard()->text(), text);
- QApplication::processEvents();
- QCOMPARE(QApplication::clipboard()->text(), text);
-}
-
-/*
- Test that text copied from qt application
- can be pasted with symbian clipboard
-*/
-#ifdef Q_OS_SYMBIAN
-// ### This test case only makes sense in symbian
-void tst_QClipboard::pasteCopySymbian()
-{
- if (!nativeClipboardWorking())
- QSKIP("Native clipboard not working in this setup", SkipAll);
- const QString string("Test string symbian.");
- QApplication::clipboard()->setText(string);
-
- const TInt KPlainTextBegin = 0;
- RFs fs = qt_s60GetRFs();
- CClipboard* cb = CClipboard::NewForReadingLC(fs);
-
- CPlainText* text = CPlainText::NewL();
- CleanupStack::PushL(text);
- TInt dataLength = text->PasteFromStoreL(cb->Store(), cb->StreamDictionary(),
- KPlainTextBegin);
- if (dataLength == 0) {
- User::Leave(KErrNotFound);
- }
- HBufC* hBuf = HBufC::NewL(dataLength);
- TPtr buf = hBuf->Des();
- text->Extract(buf, KPlainTextBegin, dataLength);
-
- QString storeString = qt_TDesC2QString(buf);
- CleanupStack::PopAndDestroy(text);
- CleanupStack::PopAndDestroy(cb);
-
- QCOMPARE(string, storeString);
-}
-#endif
-
-/*
- Test that text copied to symbian clipboard
- can be pasted to qt clipboard
-*/
-#ifdef Q_OS_SYMBIAN
-// ### This test case only makes sense in symbian
-void tst_QClipboard::copyPasteSymbian()
-{
- if (!nativeClipboardWorking())
- QSKIP("Native clipboard not working in this setup", SkipAll);
- const QString string("Test string symbian.");
- const TInt KPlainTextBegin = 0;
-
- RFs fs = qt_s60GetRFs();
- CClipboard* cb = CClipboard::NewForWritingLC(fs);
- CStreamStore& store = cb->Store();
- CStreamDictionary& dict = cb->StreamDictionary();
- RStoreWriteStream symbianStream;
- TStreamId symbianStId = symbianStream.CreateLC(cb->Store());
-
- CPlainText* text = CPlainText::NewL();
- CleanupStack::PushL(text);
- TPtrC textPtr(qt_QString2TPtrC(string));
- text->InsertL(KPlainTextBegin, textPtr);
- text->CopyToStoreL(store, dict, KPlainTextBegin, textPtr.Length());
- CleanupStack::PopAndDestroy(text);
- (cb->StreamDictionary()).AssignL(KClipboardUidTypePlainText, symbianStId);
- cb->CommitL();
- CleanupStack::PopAndDestroy(2, cb);
-
- QCOMPARE(QApplication::clipboard()->text(), string);
-}
-#endif
-
-QTEST_MAIN(tst_QClipboard)
-
-#include "tst_qclipboard.moc"
diff --git a/tests/auto/qcolordialog/qcolordialog.pro b/tests/auto/qcolordialog/qcolordialog.pro
index 830f9fafe2..4f195dac2b 100644
--- a/tests/auto/qcolordialog/qcolordialog.pro
+++ b/tests/auto/qcolordialog/qcolordialog.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qcolordialog.cpp
diff --git a/tests/auto/qcolumnview/qcolumnview.pro b/tests/auto/qcolumnview/qcolumnview.pro
index e36df030c2..bca9e75ba5 100644
--- a/tests/auto/qcolumnview/qcolumnview.pro
+++ b/tests/auto/qcolumnview/qcolumnview.pro
@@ -1,4 +1,5 @@
CONFIG += qttest_p4
+QT += widgets widgets-private
QT += gui-private core-private
SOURCES += tst_qcolumnview.cpp
diff --git a/tests/auto/qcolumnview/tst_qcolumnview.cpp b/tests/auto/qcolumnview/tst_qcolumnview.cpp
index 7f6d43a45b..493e920262 100644
--- a/tests/auto/qcolumnview/tst_qcolumnview.cpp
+++ b/tests/auto/qcolumnview/tst_qcolumnview.cpp
@@ -44,9 +44,9 @@
#include <qstandarditemmodel.h>
#include <qitemdelegate.h>
#include <qcolumnview.h>
-#include "../../../src/gui/itemviews/qcolumnviewgrip_p.h"
+#include "../../../src/widgets/itemviews/qcolumnviewgrip_p.h"
#ifndef Q_OS_SYMBIAN
-#include "../../../src/gui/dialogs/qfilesystemmodel_p.h"
+#include "../../../src/widgets/dialogs/qfilesystemmodel_p.h"
#endif
#include <qdirmodel.h>
#include <qstringlistmodel.h>
diff --git a/tests/auto/qcombobox/qcombobox.pro b/tests/auto/qcombobox/qcombobox.pro
index a8f0e6ad23..18b2826710 100644
--- a/tests/auto/qcombobox/qcombobox.pro
+++ b/tests/auto/qcombobox/qcombobox.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
-QT += gui-private core-private
+QT += widgets widgets-private gui-private core-private
SOURCES += tst_qcombobox.cpp
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qcombobox/tst_qcombobox.cpp b/tests/auto/qcombobox/tst_qcombobox.cpp
index 137438b3ef..0e6d4b5f94 100644
--- a/tests/auto/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/qcombobox/tst_qcombobox.cpp
@@ -2163,8 +2163,8 @@ void tst_QComboBox::task247863_keyBoardSelection()
qApp->setEffectEnabled(Qt::UI_AnimateCombo, false);
QTest::keyClick(&combo, Qt::Key_Space);
qApp->setEffectEnabled(Qt::UI_AnimateCombo, true);
- QTest::keyClick(0, Qt::Key_Down);
- QTest::keyClick(0, Qt::Key_Enter);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Down);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Enter);
QCOMPARE(combo.currentText(), QLatin1String("222"));
QCOMPARE(spy.count(), 1);
}
@@ -2528,7 +2528,7 @@ void tst_QComboBox::task_QTBUG_1071_changingFocusEmitsActivated()
cb.setFocus();
QApplication::processEvents();
QTRY_VERIFY(cb.hasFocus());
- QTest::keyClick(0, '1');
+ QTest::keyClick(static_cast<QWindow *>(0), '1');
QCOMPARE(spy.count(), 0);
edit.setFocus();
QTRY_VERIFY(edit.hasFocus());
diff --git a/tests/auto/qcommandlinkbutton/qcommandlinkbutton.pro b/tests/auto/qcommandlinkbutton/qcommandlinkbutton.pro
index db3a336c36..497b8298a2 100644
--- a/tests/auto/qcommandlinkbutton/qcommandlinkbutton.pro
+++ b/tests/auto/qcommandlinkbutton/qcommandlinkbutton.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qcommandlinkbutton.cpp
diff --git a/tests/auto/qcompleter/qcompleter.pro b/tests/auto/qcompleter/qcompleter.pro
index bd352d819c..cde64ec672 100644
--- a/tests/auto/qcompleter/qcompleter.pro
+++ b/tests/auto/qcompleter/qcompleter.pro
@@ -1,6 +1,7 @@
load(qttest_p4)
TEMPLATE = app
TARGET = tst_qcompleter
+QT += widgets
DEPENDPATH += .
INCLUDEPATH += . ..
diff --git a/tests/auto/qcomplextext/qcomplextext.pro b/tests/auto/qcomplextext/qcomplextext.pro
index bd85daa6b4..b3d8308242 100644
--- a/tests/auto/qcomplextext/qcomplextext.pro
+++ b/tests/auto/qcomplextext/qcomplextext.pro
@@ -1,6 +1,7 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qcomplextext.cpp
INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/harfbuzz/src
-
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qdatastream/qdatastream.pro b/tests/auto/qdatastream/qdatastream.pro
deleted file mode 100644
index 5e503aea78..0000000000
--- a/tests/auto/qdatastream/qdatastream.pro
+++ /dev/null
@@ -1,20 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qdatastream.cpp
-
-wince*: {
- addFiles.files = datastream.q42
- addFiles.path = .
- DEPLOYMENT += addFiles
- DEFINES += SRCDIR=\\\"\\\"
-} else:symbian {
- # SRCDIR defined in code in symbian
- addFiles.files = datastream.q42
- addFiles.path = .
- DEPLOYMENT += addFiles
- TARGET.EPOCHEAPSIZE = 1000000 10000000
- TARGET.UID3 = 0xE0340001
- DEFINES += SYMBIAN_SRCDIR_UID=$$lower($$replace(TARGET.UID3,"0x",""))
-}else {
- DEFINES += SRCDIR=\\\"$$PWD/\\\"
-}
-
diff --git a/tests/auto/qdatawidgetmapper/qdatawidgetmapper.pro b/tests/auto/qdatawidgetmapper/qdatawidgetmapper.pro
index d8e0cd043c..64e3b57291 100644
--- a/tests/auto/qdatawidgetmapper/qdatawidgetmapper.pro
+++ b/tests/auto/qdatawidgetmapper/qdatawidgetmapper.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qdatawidgetmapper.cpp
diff --git a/tests/auto/qdatetimeedit/qdatetimeedit.pro b/tests/auto/qdatetimeedit/qdatetimeedit.pro
index 19e92d0155..47356d448c 100644
--- a/tests/auto/qdatetimeedit/qdatetimeedit.pro
+++ b/tests/auto/qdatetimeedit/qdatetimeedit.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qdatetimeedit.cpp
wincewm50smart-msvc2005: DEFINES += WINCE_NO_MODIFIER_KEYS
diff --git a/tests/auto/qdesktopservices/qdesktopservices.pro b/tests/auto/qdesktopservices/qdesktopservices.pro
deleted file mode 100644
index 43f6cba267..0000000000
--- a/tests/auto/qdesktopservices/qdesktopservices.pro
+++ /dev/null
@@ -1,29 +0,0 @@
-CONFIG += qttest_p4
-
-SOURCES += tst_qdesktopservices.cpp
-TARGET = tst_qdesktopservices
-symbian: {
- dummy.files = text\\testfile.txt
- dummy.path = .
-
- text.files = text\\*
- text.path = \\data\\others
-
- image.files = image\\*
- image.path = \\data\\images
-
- audio.files = audio\\*
- audio.path = \\data\\sounds
-
- video.files = video\\*
- video.path = \\data\\videos
-
- install.files = install\\*
- install.path = \\data\\installs
-
- DEPLOYMENT += image audio video install
-
- # These are only needed for manual tests
- #DEPLOYMENT += dummy text
- }
-
diff --git a/tests/auto/qdesktopwidget/qdesktopwidget.pro b/tests/auto/qdesktopwidget/qdesktopwidget.pro
index bc287c09b0..730b273c4f 100644
--- a/tests/auto/qdesktopwidget/qdesktopwidget.pro
+++ b/tests/auto/qdesktopwidget/qdesktopwidget.pro
@@ -1,5 +1,3 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qdesktopwidget.cpp
-
-
-
diff --git a/tests/auto/qdesktopwidget/tst_qdesktopwidget.cpp b/tests/auto/qdesktopwidget/tst_qdesktopwidget.cpp
index e11fbf09c3..fc696443a1 100644
--- a/tests/auto/qdesktopwidget/tst_qdesktopwidget.cpp
+++ b/tests/auto/qdesktopwidget/tst_qdesktopwidget.cpp
@@ -41,7 +41,7 @@
#include <QtTest/QtTest>
-#include <QtGui/QDesktopWidget>
+#include <QtWidgets/QDesktopWidget>
#include <QDebug>
//TESTED_CLASS=
diff --git a/tests/auto/qdial/qdial.pro b/tests/auto/qdial/qdial.pro
index 7cd245e6a9..acf66de430 100644
--- a/tests/auto/qdial/qdial.pro
+++ b/tests/auto/qdial/qdial.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qdial.cpp
diff --git a/tests/auto/qdialog/qdialog.pro b/tests/auto/qdialog/qdialog.pro
index 161a6b47f1..a3596b60f6 100644
--- a/tests/auto/qdialog/qdialog.pro
+++ b/tests/auto/qdialog/qdialog.pro
@@ -1,2 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qdialog.cpp
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qdialogbuttonbox/qdialogbuttonbox.pro b/tests/auto/qdialogbuttonbox/qdialogbuttonbox.pro
index 70b65f644e..efbeca0c1b 100644
--- a/tests/auto/qdialogbuttonbox/qdialogbuttonbox.pro
+++ b/tests/auto/qdialogbuttonbox/qdialogbuttonbox.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qdialogbuttonbox.cpp
TARGET = tst_qdialogbuttonbox
diff --git a/tests/auto/qdialogbuttonbox/tst_qdialogbuttonbox.cpp b/tests/auto/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
index 13ecd90bd3..def5e60549 100644
--- a/tests/auto/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
+++ b/tests/auto/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
@@ -39,11 +39,11 @@
**
****************************************************************************/
#include <QtTest/QtTest>
-#include <QtGui/QPushButton>
-#include <QtGui/QStyle>
-#include <QtGui/QLayout>
-#include <QtGui/QDialog>
-#include <QtGui/QAction>
+#include <QtWidgets/QPushButton>
+#include <QtWidgets/QStyle>
+#include <QtWidgets/QLayout>
+#include <QtWidgets/QDialog>
+#include <QtWidgets/QAction>
#include <qdialogbuttonbox.h>
#include <limits.h>
diff --git a/tests/auto/qdir/tst_qdir.cpp b/tests/auto/qdir/tst_qdir.cpp
deleted file mode 100644
index fd1ecd5793..0000000000
--- a/tests/auto/qdir/tst_qdir.cpp
+++ /dev/null
@@ -1,1965 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qcoreapplication.h>
-#include <qdebug.h>
-#include <qdir.h>
-#include <qfileinfo.h>
-#include <qregexp.h>
-#include <qstringlist.h>
-#include "../network-settings.h"
-
-#if defined(Q_OS_WIN)
-#define _WIN32_WINNT 0x500
-#endif
-
-#include "../../shared/filesystem.h"
-
-#if defined(Q_OS_SYMBIAN)
-# include <f32file.h>
-# define STRINGIFY(x) #x
-# define TOSTRING(x) STRINGIFY(x)
-# define SRCDIR "C:/Private/" TOSTRING(SYMBIAN_SRCDIR_UID) "/"
-#elif defined(Q_OS_UNIX)
-# include <unistd.h>
-# include <sys/stat.h>
-#endif
-
-#if defined(Q_OS_VXWORKS)
-#define Q_NO_SYMLINKS
-#endif
-
-#if defined(Q_OS_SYMBIAN)
-#define Q_NO_SYMLINKS
-#define Q_NO_SYMLINKS_TO_DIRS
-#endif
-
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QDir : public QObject
-{
-Q_OBJECT
-
-public:
- tst_QDir();
- virtual ~tst_QDir();
-
-private slots:
- void getSetCheck();
- void construction();
-
- void setPath_data();
- void setPath();
-
- void entryList_data();
- void entryList();
-
- void entryListSimple_data();
- void entryListSimple();
-
- void entryListWithSymLinks();
-
- void mkdir_data();
- void mkdir();
-
- void makedirReturnCode();
-
- void rmdir_data();
- void rmdir();
-
- void exists_data();
- void exists();
-
- void isRelativePath_data();
- void isRelativePath();
-
- void canonicalPath_data();
- void canonicalPath();
-
- void current_data();
- void current();
-
- void cd_data();
- void cd();
-
- void setNameFilters_data();
- void setNameFilters();
-
- void cleanPath_data();
- void cleanPath();
-
- void compare();
- void QDir_default();
-
- void filePath_data();
- void filePath();
-
- void absoluteFilePath_data();
- void absoluteFilePath();
-
- void absolutePath_data();
- void absolutePath();
-
- void relativeFilePath_data();
- void relativeFilePath();
-
- void remove();
- void rename();
-
- void exists2_data();
- void exists2();
-
- void dirName_data();
- void dirName();
-
- void operator_eq();
-
- void dotAndDotDot();
- void homePath();
- void tempPath();
- void rootPath();
-
- void nativeSeparators();
-
- void searchPaths();
- void searchPaths_data();
-
- void entryListWithSearchPaths();
-
- void longFileName_data();
- void longFileName();
-
- void updateFileLists();
-
- void detachingOperations();
-
- void testCaching();
-
- void isRoot_data();
- void isRoot();
-
-#ifndef QT_NO_REGEXP
- void match_data();
- void match();
-#endif
-
- void drives();
-
- void arrayOperator();
-
- void equalityOperator_data();
- void equalityOperator();
-
- void isRelative_data();
- void isRelative();
-
- void isReadable();
-};
-
-// Testing get/set functions
-void tst_QDir::getSetCheck()
-{
- QDir obj1;
- // Filters QDir::filter()
- // void QDir::setFilter(Filters)
- obj1.setFilter(QDir::Filters(QDir::Dirs));
- QCOMPARE(QDir::Filters(QDir::Dirs), obj1.filter());
- obj1.setFilter(QDir::Filters(QDir::Dirs | QDir::Files));
- QCOMPARE(QDir::Filters(QDir::Dirs | QDir::Files), obj1.filter());
- obj1.setFilter(QDir::Filters(QDir::NoFilter));
- QCOMPARE(QDir::Filters(QDir::NoFilter), obj1.filter());
-
- // SortFlags QDir::sorting()
- // void QDir::setSorting(SortFlags)
- obj1.setSorting(QDir::SortFlags(QDir::Name));
- QCOMPARE(QDir::SortFlags(QDir::Name), obj1.sorting());
- obj1.setSorting(QDir::SortFlags(QDir::Name | QDir::IgnoreCase));
- QCOMPARE(QDir::SortFlags(QDir::Name | QDir::IgnoreCase), obj1.sorting());
- obj1.setSorting(QDir::SortFlags(QDir::NoSort));
- QCOMPARE(QDir::SortFlags(QDir::NoSort), obj1.sorting());
-}
-
-tst_QDir::tst_QDir()
-{
-#ifdef Q_OS_SYMBIAN
- // Can't deploy empty test dir, so create it here
- QDir dir(SRCDIR);
- dir.mkdir("testData");
-#endif
-}
-
-tst_QDir::~tst_QDir()
-{
-#ifdef Q_OS_SYMBIAN
- // Remove created test dir
- QDir dir(SRCDIR);
- dir.rmdir("testData");
-#endif
-}
-
-void tst_QDir::construction()
-{
- QFileInfo myFileInfo("/machine/share/dir1/file1");
- QDir myDir(myFileInfo.absoluteDir()); // this asserted
- QCOMPARE(myFileInfo.absoluteDir().absolutePath(), myDir.absolutePath());
-}
-
-void tst_QDir::setPath_data()
-{
- QTest::addColumn<QString>("dir1");
- QTest::addColumn<QString>("dir2");
-
- QTest::newRow("data0") << QString(".") << QString("..");
-#if (defined(Q_WS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
- QTest::newRow("data1") << QString("c:/") << QDir::currentPath();
-#endif
-}
-
-void tst_QDir::setPath()
-{
- QFETCH(QString, dir1);
- QFETCH(QString, dir2);
-
- QDir shared;
- QDir qDir1(dir1);
- QStringList entries1 = qDir1.entryList();
- shared.setPath(dir1);
- QCOMPARE(shared.entryList(), entries1);
-
- QDir qDir2(dir2);
- QStringList entries2 = qDir2.entryList();
- shared.setPath(dir2);
- QCOMPARE(shared.entryList(), entries2);
-}
-
-void tst_QDir::mkdir_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("recurse");
-
- QStringList dirs;
- dirs << QDir::currentPath() + "/testdir/one/two/three"
- << QDir::currentPath() + "/testdir/two"
- << QDir::currentPath() + "/testdir/two/three";
- QTest::newRow("data0") << dirs.at(0) << true;
- QTest::newRow("data1") << dirs.at(1) << false;
- QTest::newRow("data2") << dirs.at(2) << false;
-
- // Ensure that none of these directories already exist
- QDir dir;
- for (int i = 0; i < dirs.count(); ++i)
- dir.rmpath(dirs.at(i));
-}
-
-void tst_QDir::mkdir()
-{
- QFETCH(QString, path);
- QFETCH(bool, recurse);
-
- QDir dir;
- dir.rmdir(path);
- if (recurse)
- QVERIFY(dir.mkpath(path));
- else
- QVERIFY(dir.mkdir(path));
-
- //make sure it really exists (ie that mkdir returns the right value)
- QFileInfo fi(path);
- QVERIFY(fi.exists() && fi.isDir());
-}
-
-void tst_QDir::makedirReturnCode()
-{
- QString dirName = QString::fromLatin1("makedirReturnCode");
- QDir::current().rmdir(dirName); // cleanup a previous run.
- QDir dir(dirName);
- QVERIFY(!dir.exists());
- QVERIFY(QDir::current().mkdir(dirName));
- QVERIFY(!QDir::current().mkdir(dirName)); // calling mkdir on an existing dir will fail.
- QVERIFY(QDir::current().mkpath(dirName)); // calling mkpath on an existing dir will pass
-}
-
-void tst_QDir::rmdir_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("recurse");
-
- QTest::newRow("data0") << QDir::currentPath() + "/testdir/one/two/three" << true;
- QTest::newRow("data1") << QDir::currentPath() + "/testdir/two/three" << false;
- QTest::newRow("data2") << QDir::currentPath() + "/testdir/two" << false;
-}
-
-void tst_QDir::rmdir()
-{
- QFETCH(QString, path);
- QFETCH(bool, recurse);
-
- QDir dir;
- if (recurse)
- QVERIFY(dir.rmpath(path));
- else
- QVERIFY(dir.rmdir(path));
-
- //make sure it really doesn't exist (ie that rmdir returns the right value)
- QFileInfo fi(path);
- QVERIFY(!fi.exists());
-}
-
-void tst_QDir::exists_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("expected");
-
- QTest::newRow("data0") << QDir::currentPath() << true;
- QTest::newRow("data0.1") << QDir::currentPath() + "/" << true;
- QTest::newRow("data1") << QString("/I/Do_not_expect_this_path_to_exist/") << false;
- QTest::newRow("resource0") << QString(":/tst_qdir/") << true;
- QTest::newRow("resource1") << QString(":/I/Do_not_expect_this_resource_to_exist/") << false;
-
- QTest::newRow("simple dir") << SRCDIR "resources" << true;
- QTest::newRow("simple dir with slash") << SRCDIR "resources/" << true;
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE))
- QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
- QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
- QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << true;
- QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << true;
- QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << true;
- QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << true;
- QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << false;
- QTest::newRow("unc 8") << "//" + QtNetworkSettings::winServerName() + "/asharethatshouldnotexist" << false;
- QTest::newRow("unc 9") << "//ahostthatshouldnotexist" << false;
-#endif
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
- QTest::newRow("This drive should exist") << "C:/" << true;
- // find a non-existing drive and check if it does not exist
- QFileInfoList drives = QFSFileEngine::drives();
- QStringList driveLetters;
- for (int i = 0; i < drives.count(); ++i) {
- driveLetters+=drives.at(i).absoluteFilePath();
- }
- char drive = 'Z';
- QString driv;
- do {
- driv = QString::fromAscii("%1:/").arg(drive);
- if (!driveLetters.contains(driv)) break;
- --drive;
- } while (drive >= 'A');
- if (drive >= 'A') {
- QTest::newRow("This drive should not exist") << driv << false;
- }
-#endif
-}
-
-void tst_QDir::exists()
-{
- QFETCH(QString, path);
- QFETCH(bool, expected);
-
- QDir dir(path);
- QCOMPARE(dir.exists(), expected);
-}
-
-void tst_QDir::isRelativePath_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("relative");
-
- QTest::newRow("data0") << "../somedir" << true;
-#if (defined(Q_WS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
- QTest::newRow("data1") << "C:/sOmedir" << false;
-#endif
- QTest::newRow("data2") << "somedir" << true;
- QTest::newRow("data3") << "/somedir" << false;
-
- QTest::newRow("resource0") << ":/prefix" << false;
- QTest::newRow("resource1") << ":/prefix/foo.bar" << false;
-}
-
-void tst_QDir::isRelativePath()
-{
- QFETCH(QString, path);
- QFETCH(bool, relative);
-
- QCOMPARE(QDir::isRelativePath(path),relative);
-}
-
-
-void tst_QDir::QDir_default()
-{
- //default constructor QDir();
- QDir dir; // according to documentation should be currentDirPath
- QCOMPARE(dir.absolutePath(), QDir::currentPath());
-}
-
-void tst_QDir::compare()
-{
- // operator==
- QDir dir;
- dir.makeAbsolute();
- QVERIFY(dir == QDir::currentPath());
-}
-
-static QStringList filterLinks(const QStringList &list)
-{
-#ifndef Q_NO_SYMLINKS
- return list;
-#else
- QStringList result;
- foreach (QString str, list) {
- if (!str.endsWith(QLatin1String(".lnk")))
- result.append(str);
- }
- return result;
-#endif
-}
-
-void tst_QDir::entryList_data()
-{
- QTest::addColumn<QString>("dirName"); // relative from current path or abs
- QTest::addColumn<QStringList>("nameFilters");
- QTest::addColumn<int>("filterspec");
- QTest::addColumn<int>("sortspec");
- QTest::addColumn<QStringList>("expected");
- QTest::newRow("spaces1") << SRCDIR "testdir/spaces" << QStringList("*. bar")
- << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
- << QStringList("foo. bar"); // notice how spaces5 works
- QTest::newRow("spaces2") << SRCDIR "testdir/spaces" << QStringList("*.bar")
- << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
- << QStringList("foo.bar");
- QTest::newRow("spaces3") << SRCDIR "testdir/spaces" << QStringList("foo.*")
- << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
- << QString("foo. bar,foo.bar").split(',');
- QTest::newRow("files1") << SRCDIR "testdir/dir" << QString("*r.cpp *.pro").split(" ")
- << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
- << QString("qdir.pro,qrc_qdir.cpp,tst_qdir.cpp").split(',');
- QTest::newRow("testdir1") << SRCDIR "testdir" << QStringList()
- << (int)(QDir::AllDirs) << (int)(QDir::NoSort)
- << QString(".,..,dir,spaces").split(',');
-// #### this test uses filenames that cannot be represented on all filesystems we test, in
-// particular HFS+ on the Mac. When checking out the files with perforce it silently ignores the
-// error that it cannot represent the file names stored in the repository and the test fails. That
-// is why the test is marked as 'skip' for the mac. When checking out the files with git on the mac
-// the error of not being able to represent the files stored in the repository is not silently
-// ignored but git reports an error. The test only tried to prevent QDir from _hanging_ when listing
-// the directory.
-// QTest::newRow("unprintablenames") << SRCDIR "unprintablenames" << QStringList("*")
-// << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
-// << QString(".,..").split(",");
- QTest::newRow("resources1") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data")
- << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
- << QString("file1.data,file2.data,file3.data").split(',');
- QTest::newRow("resources2") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data")
- << (int)(QDir::Files) << (int)(QDir::NoSort)
- << QString("file1.data,file2.data,file3.data").split(',');
-
- QTest::newRow("nofilter") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::NoFilter) << int(QDir::Name)
- << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
- QTest::newRow("QDir::AllEntries") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::AllEntries) << int(QDir::Name)
- << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
- QTest::newRow("QDir::Files") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::Files) << int(QDir::Name)
- << filterLinks(QString("file,linktofile.lnk,writable").split(','));
- QTest::newRow("QDir::Dirs") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::Dirs) << int(QDir::Name)
- << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
- QTest::newRow("QDir::Dirs | QDir::NoDotAndDotDot") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::Dirs | QDir::NoDotAndDotDot) << int(QDir::Name)
- << filterLinks(QString("directory,linktodirectory.lnk").split(','));
- QTest::newRow("QDir::AllDirs") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::AllDirs) << int(QDir::Name)
- << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
- QTest::newRow("QDir::AllDirs | QDir::Dirs") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::AllDirs | QDir::Dirs) << int(QDir::Name)
- << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
- QTest::newRow("QDir::AllDirs | QDir::Files") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::AllDirs | QDir::Files) << int(QDir::Name)
- << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
- QTest::newRow("QDir::AllEntries | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::AllEntries | QDir::NoSymLinks) << int(QDir::Name)
- << filterLinks(QString(".,..,directory,file,writable").split(','));
- QTest::newRow("QDir::AllEntries | QDir::NoSymLinks | QDir::NoDotAndDotDot") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::AllEntries | QDir::NoSymLinks | QDir::NoDotAndDotDot) << int(QDir::Name)
- << filterLinks(QString("directory,file,writable").split(','));
- QTest::newRow("QDir::Files | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::Files | QDir::NoSymLinks) << int(QDir::Name)
- << filterLinks(QString("file,writable").split(','));
- QTest::newRow("QDir::Dirs | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::Dirs | QDir::NoSymLinks) << int(QDir::Name)
- << filterLinks(QString(".,..,directory").split(','));
- QTest::newRow("QDir::Drives | QDir::Files | QDir::NoDotAndDotDot") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::Drives | QDir::Files | QDir::NoDotAndDotDot) << int(QDir::Name)
- << filterLinks(QString("file,linktofile.lnk,writable").split(','));
- QTest::newRow("QDir::System") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::System) << int(QDir::Name)
- << filterLinks(QStringList("brokenlink.lnk"));
- QTest::newRow("QDir::Hidden") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::Hidden) << int(QDir::Name)
- << QStringList();
- QTest::newRow("QDir::System | QDir::Hidden") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::System | QDir::Hidden) << int(QDir::Name)
- << filterLinks(QStringList("brokenlink.lnk"));
- QTest::newRow("QDir::AllDirs | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::AllDirs | QDir::NoSymLinks) << int(QDir::Name)
- << filterLinks(QString(".,..,directory").split(','));
- QTest::newRow("QDir::AllEntries | QDir::Hidden | QDir::System") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::AllEntries | QDir::Hidden | QDir::System) << int(QDir::Name)
- << filterLinks(QString(".,..,brokenlink.lnk,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
- QTest::newRow("QDir::AllEntries | QDir::Readable") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::AllEntries | QDir::Readable) << int(QDir::Name)
- << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
- QTest::newRow("QDir::AllEntries | QDir::Writable") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::AllEntries | QDir::Writable) << int(QDir::Name)
- << filterLinks(QString(".,..,directory,linktodirectory.lnk,writable").split(','));
- QTest::newRow("QDir::Files | QDir::Readable") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::Files | QDir::Readable) << int(QDir::Name)
- << filterLinks(QString("file,linktofile.lnk,writable").split(','));
- QTest::newRow("QDir::Dirs | QDir::Readable") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::Dirs | QDir::Readable) << int(QDir::Name)
- << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
- QTest::newRow("Namefilters b*") << SRCDIR "entrylist/" << QStringList("d*")
- << int(QDir::NoFilter) << int(QDir::Name)
- << filterLinks(QString("directory").split(','));
- QTest::newRow("Namefilters f*") << SRCDIR "entrylist/" << QStringList("f*")
- << int(QDir::NoFilter) << int(QDir::Name)
- << filterLinks(QString("file").split(','));
- QTest::newRow("Namefilters link*") << SRCDIR "entrylist/" << QStringList("link*")
- << int(QDir::NoFilter) << int(QDir::Name)
- << filterLinks(QString("linktodirectory.lnk,linktofile.lnk").split(','));
- QTest::newRow("Namefilters *to*") << SRCDIR "entrylist/" << QStringList("*to*")
- << int(QDir::NoFilter) << int(QDir::Name)
- << filterLinks(QString("directory,linktodirectory.lnk,linktofile.lnk").split(','));
- QTest::newRow("Sorting QDir::Name") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::NoFilter) << int(QDir::Name)
- << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
- QTest::newRow("Sorting QDir::Name | QDir::Reversed") << SRCDIR "entrylist/" << QStringList("*")
- << int(QDir::NoFilter) << int(QDir::Name | QDir::Reversed)
- << filterLinks(QString("writable,linktofile.lnk,linktodirectory.lnk,file,directory,..,.").split(','));
-
- QTest::newRow("Sorting QDir::Type") << SRCDIR "types/" << QStringList("*")
- << int(QDir::NoFilter) << int(QDir::Type)
- << QString(".,..,a,b,c,d,e,f,a.a,b.a,c.a,d.a,e.a,f.a,a.b,b.b,c.b,d.b,e.b,f.b,a.c,b.c,c.c,d.c,e.c,f.c").split(',');
- QTest::newRow("Sorting QDir::Type | QDir::Reversed") << SRCDIR "types/" << QStringList("*")
- << int(QDir::NoFilter) << int(QDir::Type | QDir::Reversed)
- << QString("f.c,e.c,d.c,c.c,b.c,a.c,f.b,e.b,d.b,c.b,b.b,a.b,f.a,e.a,d.a,c.a,b.a,a.a,f,e,d,c,b,a,..,.").split(',');
- QTest::newRow("Sorting QDir::Type | QDir::DirsLast") << SRCDIR "types/" << QStringList("*")
- << int(QDir::NoFilter) << int(QDir::Type | QDir::DirsLast)
- << QString("a,b,c,a.a,b.a,c.a,a.b,b.b,c.b,a.c,b.c,c.c,.,..,d,e,f,d.a,e.a,f.a,d.b,e.b,f.b,d.c,e.c,f.c").split(',');
- QTest::newRow("Sorting QDir::Type | QDir::DirsFirst") << SRCDIR "types/" << QStringList("*")
- << int(QDir::NoFilter) << int(QDir::Type | QDir::DirsFirst)
- << QString(".,..,d,e,f,d.a,e.a,f.a,d.b,e.b,f.b,d.c,e.c,f.c,a,b,c,a.a,b.a,c.a,a.b,b.b,c.b,a.c,b.c,c.c").split(',');
- QTest::newRow("Sorting QDir::Size") << SRCDIR "types/" << QStringList("*")
- << int(QDir::AllEntries|QDir::NoDotAndDotDot) << int(QDir::Size | QDir::DirsFirst)
- << QString("d,d.a,d.b,d.c,e,e.a,e.b,e.c,f,f.a,f.b,f.c,c.a,c.b,c.c,b.a,b.c,b.b,a.c,a.b,a.a,a,b,c").split(',');
- QTest::newRow("Sorting QDir::Size | QDir::Reversed") << SRCDIR "types/" << QStringList("*")
- << int(QDir::AllEntries|QDir::NoDotAndDotDot) << int(QDir::Size | QDir::Reversed | QDir::DirsLast)
- << QString("c,b,a,a.a,a.b,a.c,b.b,b.c,b.a,c.c,c.b,c.a,f.c,f.b,f.a,f,e.c,e.b,e.a,e,d.c,d.b,d.a,d").split(',');
-}
-
-void tst_QDir::entryList()
-{
- QFETCH(QString, dirName);
- QFETCH(QStringList, nameFilters);
- QFETCH(int, filterspec);
- QFETCH(int, sortspec);
- QFETCH(QStringList, expected);
-
- QFile(SRCDIR "entrylist/writable").open(QIODevice::ReadWrite);
- QFile(SRCDIR "entrylist/file").setPermissions(QFile::ReadOwner | QFile::ReadUser);
- QFile::remove(SRCDIR "entrylist/linktofile");
- QFile::remove(SRCDIR "entrylist/linktodirectory");
- QFile::remove(SRCDIR "entrylist/linktofile.lnk");
- QFile::remove(SRCDIR "entrylist/linktodirectory.lnk");
- QFile::remove(SRCDIR "entrylist/brokenlink.lnk");
- QFile::remove(SRCDIR "entrylist/brokenlink");
-
- // WinCE/Symbian does not have . and .. in the directory listing
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- expected.removeAll(".");
- expected.removeAll("..");
-#endif
-
-#ifndef Q_NO_SYMLINKS
-#if defined(Q_OS_WIN)
- // ### Sadly, this is a platform difference right now.
- QFile::link(SRCDIR "entryList/file", SRCDIR "entrylist/linktofile.lnk");
- QFile::link(SRCDIR "entryList/directory", SRCDIR "entrylist/linktodirectory.lnk");
- QFile::link(SRCDIR "entryList/nothing", SRCDIR "entrylist/brokenlink.lnk");
-#elif defined(Q_OS_SYMBIAN)
- // Symbian doesn't support links to directories
- expected.removeAll("linktodirectory.lnk");
-
- // Expecting failures from a couple of OpenC bugs. Do checks only once.
- static int xFailChecked = false;
- static int expectedFail1 = false;
- static int expectedFail2 = false;
-
- if (!expectedFail1) {
- // Can't create link if file doesn't exist in symbian, so create file temporarily,
- // But only if testing for
- QFile tempFile(SRCDIR "entryList/nothing");
- tempFile.open(QIODevice::WriteOnly);
- tempFile.link(SRCDIR "entryList/brokenlink.lnk");
- tempFile.remove();
- }
-
- if (!expectedFail2) {
- QFile::link(SRCDIR "entryList/file", SRCDIR "entrylist/linktofile.lnk");
- }
-
- if (!xFailChecked) {
- // ### Until OpenC supports stat correctly for symbolic links, expect them to fail.
- expectedFail1 = QFileInfo(SRCDIR "entryList/brokenlink.lnk").exists();
- expectedFail2 = !(QFileInfo(SRCDIR "entryList/linktofile.lnk").isFile());
-
- QEXPECT_FAIL("", "OpenC bug, stat for broken links returns normally, when it should return error.", Continue);
- QVERIFY(!expectedFail1);
-
- QEXPECT_FAIL("", "OpenC bug, stat for file links doesn't indicate them as such.", Continue);
- QVERIFY(!expectedFail2);
- xFailChecked = true;
- }
-
- if (expectedFail1) {
- expected.removeAll("brokenlink.lnk");
- QFile::remove(SRCDIR "entrylist/brokenlink.lnk");
- }
-
- if (expectedFail2) {
- expected.removeAll("linktofile.lnk");
- QFile::remove(SRCDIR "entrylist/linktofile.lnk");
- }
-#else
- QFile::link("file", SRCDIR "entrylist/linktofile.lnk");
- QFile::link("directory", SRCDIR "entrylist/linktodirectory.lnk");
- QFile::link("nothing", SRCDIR "entrylist/brokenlink.lnk");
-#endif
-#endif //Q_NO_SYMLINKS
-
-#ifdef Q_WS_MAC
- if (qstrcmp(QTest::currentDataTag(), "unprintablenames") == 0)
- QSKIP("p4 doesn't sync the files with the unprintable names properly on Mac",SkipSingle);
-#endif
- QDir dir(dirName);
- QVERIFY(dir.exists());
-
- QStringList actual = dir.entryList(nameFilters, (QDir::Filters)filterspec,
- (QDir::SortFlags)sortspec);
-
- int max = qMin(actual.count(), expected.count());
-
- if (qstrcmp(QTest::currentDataTag(), "unprintablenames") == 0) {
- // The purpose of this entry is to check that QDir doesn't
- // lock up. The actual result depends on the file system.
- return;
- }
- bool doContentCheck = true;
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
- if (qstrcmp(QTest::currentDataTag(), "QDir::AllEntries | QDir::Writable") == 0) {
- // for root, everything is writeable
- if (::getuid() == 0)
- doContentCheck = false;
- }
-#endif
-
- if (doContentCheck) {
- for (int i=0; i<max; ++i)
- QCOMPARE(actual[i], expected[i]);
-
- QCOMPARE(actual.count(), expected.count());
- }
-
-#if defined(Q_OS_SYMBIAN)
- // Test cleanup on device requires setting the permissions back to normal
- QFile(SRCDIR "entrylist/file").setPermissions(QFile::WriteUser | QFile::ReadUser);
-#endif
-
- QFile::remove(SRCDIR "entrylist/writable");
- QFile::remove(SRCDIR "entrylist/linktofile");
- QFile::remove(SRCDIR "entrylist/linktodirectory");
- QFile::remove(SRCDIR "entrylist/linktofile.lnk");
- QFile::remove(SRCDIR "entrylist/linktodirectory.lnk");
- QFile::remove(SRCDIR "entrylist/brokenlink.lnk");
- QFile::remove(SRCDIR "entrylist/brokenlink");
-}
-
-void tst_QDir::entryListSimple_data()
-{
- QTest::addColumn<QString>("dirName");
- QTest::addColumn<int>("countMin");
-
- QTest::newRow("data2") << "do_not_expect_this_path_to_exist/" << 0;
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QTest::newRow("simple dir") << SRCDIR "resources" << 0;
- QTest::newRow("simple dir with slash") << SRCDIR "resources/" << 0;
-#else
- QTest::newRow("simple dir") << SRCDIR "resources" << 2;
- QTest::newRow("simple dir with slash") << SRCDIR "resources/" << 2;
-#endif
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << 2;
- QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << 2;
- QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << 2;
- QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << 2;
- QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << 2;
- QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << 2;
- QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << 0;
- QTest::newRow("unc 8") << "//" + QtNetworkSettings::winServerName() + "/asharethatshouldnotexist" << 0;
- QTest::newRow("unc 9") << "//ahostthatshouldnotexist" << 0;
-#endif
-}
-
-void tst_QDir::entryListSimple()
-{
- QFETCH(QString, dirName);
- QFETCH(int, countMin);
-
- QDir dir(dirName);
- QStringList actual = dir.entryList();
- QVERIFY(actual.count() >= countMin);
-}
-
-void tst_QDir::entryListWithSymLinks()
-{
-#ifndef Q_NO_SYMLINKS
-# ifndef Q_NO_SYMLINKS_TO_DIRS
- QFile::remove("myLinkToDir.lnk");
-# endif
- QFile::remove("myLinkToFile.lnk");
- QFile::remove("testfile.cpp");
- QDir dir;
- dir.mkdir("myDir");
- QFile("testfile.cpp").open(QIODevice::WriteOnly);
-# ifndef Q_NO_SYMLINKS_TO_DIRS
- QVERIFY(QFile::link("myDir", "myLinkToDir.lnk"));
-# endif
- QVERIFY(QFile::link("testfile.cpp", "myLinkToFile.lnk"));
-
- {
- QStringList entryList = QDir().entryList();
- QVERIFY(entryList.contains("myDir"));
-# ifndef Q_NO_SYMLINKS_TO_DIRS
- QVERIFY(entryList.contains("myLinkToDir.lnk"));
-#endif
- QVERIFY(entryList.contains("myLinkToFile.lnk"));
- }
- {
- QStringList entryList = QDir().entryList(QDir::Dirs);
- QVERIFY(entryList.contains("myDir"));
-# ifndef Q_NO_SYMLINKS_TO_DIRS
- QVERIFY(entryList.contains("myLinkToDir.lnk"));
-#endif
-#if defined(Q_OS_SYMBIAN)
- QEXPECT_FAIL("", "OpenC stat for symlinks is buggy.", Continue);
-#endif
- QVERIFY(!entryList.contains("myLinkToFile.lnk"));
- }
- {
- QStringList entryList = QDir().entryList(QDir::Dirs | QDir::NoSymLinks);
- QVERIFY(entryList.contains("myDir"));
- QVERIFY(!entryList.contains("myLinkToDir.lnk"));
- QVERIFY(!entryList.contains("myLinkToFile.lnk"));
- }
-
- QFile::remove("myLinkToDir.lnk");
- QFile::remove("myLinkToFile.lnk");
- QFile::remove("testfile.cpp");
- dir.rmdir("myDir");
-#endif
-}
-
-void tst_QDir::canonicalPath_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<QString>("canonicalPath");
- QString appPath = SRCDIR;
- if (appPath.isEmpty())
- appPath = QCoreApplication::instance()->applicationDirPath();
- else
- appPath.chop(1); // remove the ending slash
-
-#if defined Q_WS_WIN
- if (appPath.endsWith("release", Qt::CaseInsensitive) || appPath.endsWith("debug", Qt::CaseInsensitive)) {
- QDir appDir(appPath);
- QVERIFY(appDir.cdUp());
- appPath = appDir.absolutePath();
- }
-#endif
-
- QTest::newRow("relative") << "." << appPath;
- QTest::newRow("relativeSubDir") << "./testData/../testData" << appPath + "/testData";
-
-#ifndef Q_WS_WIN
- QTest::newRow("absPath") << appPath + "/testData/../testData" << appPath + "/testData";
-#else
- QTest::newRow("absPath") << appPath + "\\testData\\..\\testData" << appPath + "/testData";
-#endif
- QTest::newRow("nonexistant") << "testd" << QString();
-
- QTest::newRow("rootPath") << QDir::rootPath() << QDir::rootPath();
-
-#ifdef Q_OS_MAC
- // On Mac OS X 10.5 and earlier, canonicalPath depends on cleanPath which
- // is itself very broken and fundamentally wrong on "/./" which, this would
- // exercise
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6)
-#endif
- QTest::newRow("rootPath + ./") << QDir::rootPath().append("./") << QDir::rootPath();
-
- QTest::newRow("rootPath + ../.. ") << QDir::rootPath().append("../..") << QDir::rootPath();
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- QTest::newRow("drive:\\") << QDir::toNativeSeparators(QDir::rootPath()) << QDir::rootPath();
- QTest::newRow("drive:\\.\\") << QDir::toNativeSeparators(QDir::rootPath().append("./")) << QDir::rootPath();
- QTest::newRow("drive:\\..\\..") << QDir::toNativeSeparators(QDir::rootPath().append("../..")) << QDir::rootPath();
- QTest::newRow("drive:") << QDir().canonicalPath().left(2) << QDir().canonicalPath();
-#endif
-
- QTest::newRow("resource") << ":/tst_qdir/resources/entryList" << ":/tst_qdir/resources/entryList";
-}
-
-void tst_QDir::canonicalPath()
-{
- QDir srcPath;
- if (strlen(SRCDIR) > 0)
- srcPath = QDir(SRCDIR);
- else
- srcPath = QDir(".");
- if (srcPath.absolutePath() != srcPath.canonicalPath())
- QSKIP("This test does not work if this directory path consists of symlinks.", SkipAll);
-
- QString oldpwd = QDir::currentPath();
- QDir::setCurrent(srcPath.absolutePath());
-
- QFETCH(QString, path);
- QFETCH(QString, canonicalPath);
-
- QDir dir(path);
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- QCOMPARE(dir.canonicalPath().toLower(), canonicalPath.toLower());
-#else
- QCOMPARE(dir.canonicalPath(), canonicalPath);
-#endif
-
- QDir::setCurrent(oldpwd);
-}
-
-void tst_QDir::current_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<QString>("currentDir");
- QString appPath = SRCDIR;
- if (appPath.isEmpty())
- appPath = QCoreApplication::instance()->applicationDirPath();
- else
- appPath.chop(1); // remove the ending slash
-#if defined Q_WS_WIN
- if (appPath.endsWith("release", Qt::CaseInsensitive))
- appPath = appPath.left(appPath.length()-8);
- else if (appPath.endsWith("debug", Qt::CaseInsensitive))
- appPath = appPath.left(appPath.length()-6);
-#endif
-
- QTest::newRow("startup") << QString() << appPath;
- QTest::newRow("relPath") << "testData" << appPath + "/testData";
-#ifndef Q_WS_WIN
- QTest::newRow("absPath") << appPath + "/testData" << appPath + "/testData";
-#else
- QTest::newRow("absPath") << appPath + "\\testData" << appPath + "/testData";
-#endif
- QTest::newRow("nonexistant") << "testd" << QString();
-
- QTest::newRow("parent") << ".." << appPath.left(appPath.lastIndexOf('/'));
-}
-
-void tst_QDir::current()
-{
- QString oldDir = QDir::currentPath();
- QString appPath = SRCDIR;
- if (appPath.isEmpty())
- appPath = QCoreApplication::instance()->applicationDirPath();
- QDir::setCurrent(appPath);
- QFETCH(QString, path);
- QFETCH(QString, currentDir);
-
- if (!path.isEmpty()) {
- bool b = QDir::setCurrent(path);
- // If path is non existent, then setCurrent should be false (currentDir is empty in testData)
- QVERIFY(b == !currentDir.isEmpty());
- }
- if (!currentDir.isEmpty()) {
- QDir newCurrent = QDir::current();
- QDir::setCurrent(oldDir);
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- QCOMPARE(newCurrent.absolutePath().toLower(), currentDir.toLower());
-#else
- QCOMPARE(newCurrent.absolutePath(), currentDir);
-#endif
- }
-
- QDir::setCurrent(oldDir);
-}
-
-void tst_QDir::cd_data()
-{
- QTest::addColumn<QString>("startDir");
- QTest::addColumn<QString>("cdDir");
- QTest::addColumn<bool>("successExpected");
- QTest::addColumn<QString>("newDir");
-
- QString appPath = QDir::currentPath();
- int index = appPath.lastIndexOf("/");
- QTest::newRow("cdUp") << QDir::currentPath() << ".." << true << appPath.left(index==0?1:index);
- QTest::newRow("noChange") << QDir::currentPath() << "." << true << appPath;
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN) // on windows QDir::root() is usually c:/ but cd "/" will not force it to be root
- QTest::newRow("absolute") << QDir::currentPath() << "/" << true << "/";
-#else
- QTest::newRow("absolute") << QDir::currentPath() << "/" << true << QDir::root().absolutePath();
-#endif
- QTest::newRow("non existant") << "." << "../anonexistingdir" << false << QDir::currentPath();
- QTest::newRow("self") << "." << (QString("../") + QFileInfo(QDir::currentPath()).fileName()) << true << QDir::currentPath();
- QTest::newRow("file") << "." << "qdir.pro" << false << "";
-}
-
-void tst_QDir::cd()
-{
- QFETCH(QString, startDir);
- QFETCH(QString, cdDir);
- QFETCH(bool, successExpected);
- QFETCH(QString, newDir);
-
- QDir d = startDir;
- bool notUsed = d.exists(); // make sure we cache this before so we can see if 'cd' fails to flush this
- Q_UNUSED(notUsed);
- QCOMPARE(d.cd(cdDir), successExpected);
- if (successExpected)
- QCOMPARE(d.absolutePath(), newDir);
-}
-
-void tst_QDir::setNameFilters_data()
-{
- // Effectively copied from entryList2() test
-
- QTest::addColumn<QString>("dirName"); // relative from current path or abs
- QTest::addColumn<QStringList>("nameFilters");
- QTest::addColumn<QStringList>("expected");
-
- QString appPath = SRCDIR;
- if (appPath.isEmpty())
- appPath = QCoreApplication::instance()->applicationDirPath();
- if (!appPath.endsWith("/"))
- appPath.append("/");
-
- QTest::newRow("spaces1") << appPath + "testdir/spaces" << QStringList("*. bar")
- << QStringList("foo. bar");
- QTest::newRow("spaces2") << appPath + "testdir/spaces" << QStringList("*.bar")
- << QStringList("foo.bar");
- QTest::newRow("spaces3") << appPath + "testdir/spaces" << QStringList("foo.*")
- << QString("foo. bar,foo.bar").split(",");
- QTest::newRow("files1") << appPath + "testdir/dir" << QString("*r.cpp *.pro").split(" ")
- << QString("qdir.pro,qrc_qdir.cpp,tst_qdir.cpp").split(",");
- QTest::newRow("resources1") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data")
- << QString("file1.data,file2.data,file3.data").split(',');
-}
-
-void tst_QDir::setNameFilters()
-{
- QFETCH(QString, dirName);
- QFETCH(QStringList, nameFilters);
- QFETCH(QStringList, expected);
-
- QDir dir(dirName);
- QVERIFY(dir.exists());
-
- dir.setNameFilters(nameFilters);
- QStringList actual = dir.entryList();
- int max = qMin(actual.count(), expected.count());
-
- for (int i=0; i<max; ++i)
- QCOMPARE(actual[i], expected[i]);
- QCOMPARE(actual.count(), expected.count());
-}
-
-void
-tst_QDir::cleanPath_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<QString>("expected");
-
- QTest::newRow("data0") << "/Users/sam/troll/qt4.0//.." << "/Users/sam/troll";
- QTest::newRow("data1") << "/Users/sam////troll/qt4.0//.." << "/Users/sam/troll";
- QTest::newRow("data2") << "/" << "/";
- QTest::newRow("data3") << QDir::cleanPath("../.") << "..";
- QTest::newRow("data4") << QDir::cleanPath("../..") << "../..";
-#if !defined(Q_OS_WINCE)
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- QTest::newRow("data5") << "d:\\a\\bc\\def\\.." << "d:/a/bc";
- QTest::newRow("data6") << "d:\\a\\bc\\def\\../../.." << "d:/";
-#else
- QTest::newRow("data5") << "d:\\a\\bc\\def\\.." << "d:\\a\\bc\\def\\..";
- QTest::newRow("data6") << "d:\\a\\bc\\def\\../../.." << "d:\\a\\bc\\def\\../../..";
-#endif
-#endif
- QTest::newRow("data7") << ".//file1.txt" << "file1.txt";
- QTest::newRow("data8") << "/foo/bar/..//file1.txt" << "/foo/file1.txt";
- QTest::newRow("data9") << "//" << "/";
-#if !defined(Q_OS_WINCE)
-#if defined Q_OS_WIN
- QTest::newRow("data10") << "c:\\" << "c:/";
-#else
- QTest::newRow("data10") << "/:/" << "/:";
-#endif
-#endif
-
- QTest::newRow("resource0") << ":/prefix/foo.bar" << ":/prefix/foo.bar";
- QTest::newRow("resource1") << "://prefix/..//prefix/foo.bar" << ":/prefix/foo.bar";
-}
-
-
-void
-tst_QDir::cleanPath()
-{
- QFETCH(QString, path);
- QFETCH(QString, expected);
- QString cleaned = QDir::cleanPath(path);
- QCOMPARE(cleaned, expected);
-}
-
-void tst_QDir::absoluteFilePath_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QString>("expectedFilePath");
-
- QTest::newRow("0") << "/etc" << "/passwd" << "/passwd";
- QTest::newRow("1") << "/etc" << "passwd" << "/etc/passwd";
- QTest::newRow("2") << "/" << "passwd" << "/passwd";
- QTest::newRow("3") << "relative" << "path" << QDir::currentPath() + "/relative/path";
- QTest::newRow("4") << "" << "" << QDir::currentPath();
- QTest::newRow("resource") << ":/prefix" << "foo.bar" << ":/prefix/foo.bar";
-}
-
-void tst_QDir::absoluteFilePath()
-{
- QFETCH(QString, path);
- QFETCH(QString, fileName);
- QFETCH(QString, expectedFilePath);
-
- QDir dir(path);
- QString absFilePath = dir.absoluteFilePath(fileName);
- QCOMPARE(absFilePath, expectedFilePath);
-}
-
-void tst_QDir::absolutePath_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<QString>("expectedPath");
-
- QTest::newRow("0") << "/machine/share/dir1" << "/machine/share/dir1";
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
- QTest::newRow("1") << "\\machine\\share\\dir1" << "/machine/share/dir1";
-# if !defined(Q_OS_SYMBIAN)
- QTest::newRow("2") << "//machine/share/dir1" << "//machine/share/dir1";
- QTest::newRow("3") << "\\\\machine\\share\\dir1" << "//machine/share/dir1";
-# endif
- QTest::newRow("4") << "c:/machine/share/dir1" << "c:/machine/share/dir1";
- QTest::newRow("5") << "c:\\machine\\share\\dir1" << "c:/machine/share/dir1";
-#endif
- //test dirty paths are cleaned (QTBUG-19995)
- QTest::newRow("/home/qt/.") << QDir::rootPath() + "home/qt/." << QDir::rootPath() + "home/qt";
- QTest::newRow("/system/data/../config") << QDir::rootPath() + "system/data/../config" << QDir::rootPath() + "system/config";
- QTest::newRow("//home//qt/") << QDir::rootPath() + "/home//qt/" << QDir::rootPath() + "home/qt";
- QTest::newRow("foo/../bar") << "foo/../bar" << QDir::currentPath() + "/bar";
- QTest::newRow("resource") << ":/prefix/foo.bar" << ":/prefix/foo.bar";
-}
-
-void tst_QDir::absolutePath()
-{
- QFETCH(QString, path);
- QFETCH(QString, expectedPath);
-
- QDir dir(path);
- QCOMPARE(dir.absolutePath(), expectedPath);
-}
-
-void tst_QDir::relativeFilePath_data()
-{
- QTest::addColumn<QString>("dir");
- QTest::addColumn<QString>("path");
- QTest::addColumn<QString>("expected");
-
- QTest::newRow("0") << "/foo/bar" << "ding.txt" << "ding.txt";
- QTest::newRow("1") << "/foo/bar" << "ding/dong.txt" << "ding/dong.txt";
- QTest::newRow("2") << "/foo/bar" << "../ding/dong.txt" << "../ding/dong.txt";
-
- QTest::newRow("3") << "/foo/bar" << "/foo/bar/ding.txt" << "ding.txt";
- QTest::newRow("4") << "/foo/bar/" << "/foo/bar/ding/dong.txt" << "ding/dong.txt";
- QTest::newRow("5") << "/foo/bar/" << "/ding/dong.txt" << "../../ding/dong.txt";
-
- QTest::newRow("6") << "/" << "/ding/dong.txt" << "ding/dong.txt";
- QTest::newRow("7") << "/" << "/ding/" << "ding";
- QTest::newRow("8") << "/" << "/ding//" << "ding";
- QTest::newRow("9") << "/" << "/ding/../dong" << "dong";
- QTest::newRow("10") << "/" << "/ding/../../../../dong" << "../../../dong";
-
- QTest::newRow("11") << "" << "" << "";
-
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
- QTest::newRow("12") << "C:/foo/bar" << "ding" << "ding";
- QTest::newRow("13") << "C:/foo/bar" << "C:/ding/dong" << "../../ding/dong";
- QTest::newRow("14") << "C:/foo/bar" << "/ding/dong" << "../../ding/dong";
- QTest::newRow("15") << "C:/foo/bar" << "D:/ding/dong" << "D:/ding/dong";
- QTest::newRow("16") << "C:" << "C:/ding/dong" << "ding/dong";
- QTest::newRow("17") << "C:/" << "C:/ding/dong" << "ding/dong";
- QTest::newRow("18") << "C:" << "C:" << "";
- QTest::newRow("19") << "C:/" << "C:" << "";
- QTest::newRow("20") << "C:" << "C:/" << "";
- QTest::newRow("21") << "C:/" << "C:/" << "";
- QTest::newRow("22") << "C:" << "C:file.txt" << "file.txt";
- QTest::newRow("23") << "C:/" << "C:file.txt" << "file.txt";
- QTest::newRow("24") << "C:" << "C:/file.txt" << "file.txt";
- QTest::newRow("25") << "C:/" << "C:/file.txt" << "file.txt";
- QTest::newRow("26") << "C:" << "D:" << "D:";
- QTest::newRow("27") << "C:" << "D:/" << "D:/";
- QTest::newRow("28") << "C:/" << "D:" << "D:";
- QTest::newRow("29") << "C:/" << "D:/" << "D:/";
-# if !defined(Q_OS_SYMBIAN)
- QTest::newRow("30") << "C:/foo/bar" << "//anotherHost/foo/bar" << "//anotherHost/foo/bar";
- QTest::newRow("31") << "//anotherHost/foo" << "//anotherHost/foo/bar" << "bar";
- QTest::newRow("32") << "//anotherHost/foo" << "bar" << "bar";
- QTest::newRow("33") << "//anotherHost/foo" << "C:/foo/bar" << "C:/foo/bar";
-# endif
-#endif
-
- QTest::newRow("resource0") << ":/prefix" << "foo.bar" << "foo.bar";
- QTest::newRow("resource1") << ":/prefix" << ":/prefix/foo.bar" << "foo.bar";
-}
-
-void tst_QDir::relativeFilePath()
-{
- QFETCH(QString, dir);
- QFETCH(QString, path);
- QFETCH(QString, expected);
-
- QCOMPARE(QDir(dir).relativeFilePath(path), expected);
-}
-
-void tst_QDir::filePath_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QString>("expectedFilePath");
-
- QTest::newRow("0") << "/etc" << "/passwd" << "/passwd";
- QTest::newRow("1") << "/etc" << "passwd" << "/etc/passwd";
- QTest::newRow("2") << "/" << "passwd" << "/passwd";
- QTest::newRow("3") << "relative" << "path" << "relative/path";
- QTest::newRow("4") << "" << "" << ".";
- QTest::newRow("resource") << ":/prefix" << "foo.bar" << ":/prefix/foo.bar";
-}
-
-void tst_QDir::filePath()
-{
- QFETCH(QString, path);
- QFETCH(QString, fileName);
- QFETCH(QString, expectedFilePath);
-
- QDir dir(path);
- QString absFilePath = dir.filePath(fileName);
- QCOMPARE(absFilePath, expectedFilePath);
-}
-
-void tst_QDir::remove()
-{
- QFile f("remove-test");
- f.open(QIODevice::WriteOnly);
- f.close();
- QDir dir;
- QVERIFY(dir.remove("remove-test"));
- QVERIFY(!dir.remove("/remove-test"));
- QTest::ignoreMessage(QtWarningMsg, "QDir::remove: Empty or null file name");
- QVERIFY(!dir.remove(""));
-}
-
-void tst_QDir::rename()
-{
- QFile f("rename-test");
- f.open(QIODevice::WriteOnly);
- f.close();
- QDir dir;
- QVERIFY(dir.rename("rename-test", "rename-test-renamed"));
- QVERIFY(dir.rename("rename-test-renamed", "rename-test"));
-#if defined(Q_OS_MAC)
- QVERIFY(!dir.rename("rename-test", "/etc/rename-test-renamed"));
-#elif defined(Q_OS_SYMBIAN)
- QVERIFY(!dir.rename("rename-test", "/resource/rename-test-renamed"));
-#elif !defined(Q_OS_WIN)
- // on windows this is possible - maybe make the test a bit better
- QVERIFY(!dir.rename("rename-test", "/rename-test-renamed"));
-#endif
- QTest::ignoreMessage(QtWarningMsg, "QDir::rename: Empty or null file name(s)");
- QVERIFY(!dir.rename("rename-test", ""));
- QTest::ignoreMessage(QtWarningMsg, "QDir::rename: Empty or null file name(s)");
- QVERIFY(!dir.rename("", "rename-test-renamed"));
- QVERIFY(!dir.rename("some-file-that-does-not-exist", "rename-test-renamed"));
-
- QVERIFY(dir.remove("rename-test"));
-}
-
-void tst_QDir::exists2_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("exists");
-
- QTest::newRow("0") << "." << true;
- QTest::newRow("1") << "/" << true;
- QTest::newRow("2") << "" << false;
- QTest::newRow("3") << "testData" << true;
- QTest::newRow("4") << "/testData" << false;
- QTest::newRow("5") << "tst_qdir.cpp" << true;
- QTest::newRow("6") << "/resources.cpp" << false;
- QTest::newRow("resource0") << ":/prefix/foo.bar" << false;
- QTest::newRow("resource1") << ":/tst_qdir/resources/entryList/file1.data" << true;
-}
-
-void tst_QDir::exists2()
-{
- QFETCH(QString, path);
- QFETCH(bool, exists);
-
- QString oldpwd = QDir::currentPath();
- if (strlen(SRCDIR) > 0)
- QDir::setCurrent(SRCDIR);
-
- if (path.isEmpty())
- QTest::ignoreMessage(QtWarningMsg, "QDir::exists: Empty or null file name");
-
- QDir dir;
- if (exists)
- QVERIFY(dir.exists(path));
- else
- QVERIFY(!dir.exists(path));
-
- QDir::setCurrent(oldpwd);
-}
-
-void tst_QDir::dirName_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<QString>("dirName");
-
- QTest::newRow("slash0") << "c:/winnt/system32" << "system32";
- QTest::newRow("slash1") << "/winnt/system32" << "system32";
- QTest::newRow("slash2") << "c:/winnt/system32/kernel32.dll" << "kernel32.dll";
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- QTest::newRow("bslash0") << "c:\\winnt\\system32" << "system32";
- QTest::newRow("bslash1") << "\\winnt\\system32" << "system32";
- QTest::newRow("bslash2") << "c:\\winnt\\system32\\kernel32.dll" << "kernel32.dll";
-#endif
-
- QTest::newRow("resource") << ":/prefix" << "prefix";
-}
-
-void tst_QDir::dirName()
-{
- QFETCH(QString, path);
- QFETCH(QString, dirName);
-
- QDir dir(path);
- QCOMPARE(dir.dirName(), dirName);
-}
-
-void tst_QDir::operator_eq()
-{
- QDir dir1(".");
- dir1 = dir1;
- dir1.setPath("..");
-}
-
-void tst_QDir::dotAndDotDot()
-{
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QSKIP("WinCE and Symbian do not have . nor ..", SkipAll);
-#else
- QDir dir(QString(SRCDIR "testdir/"));
- QStringList entryList = dir.entryList(QDir::Dirs);
- QCOMPARE(entryList, QStringList() << QString(".") << QString("..") << QString("dir") << QString("spaces"));
- entryList = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
- QCOMPARE(entryList, QStringList() << QString("dir") << QString("spaces"));
-#endif
-}
-
-void tst_QDir::homePath()
-{
- QDir homeDir = QDir::home();
- QString strHome = QDir::homePath();
-
- // docs say that homePath() is an absolute path
- QCOMPARE(strHome, homeDir.absolutePath());
- QVERIFY(QDir::isAbsolutePath(strHome));
-
-#ifdef Q_OS_UNIX
- if (strHome.length() > 1) // root dir = "/"
- QVERIFY(!strHome.endsWith('/'));
-#elif defined(Q_OS_WIN)
- if (strHome.length() > 3) // root dir = "c:/"; "//" is not really valid...
- QVERIFY(!strHome.endsWith('/'));
-#endif
-
- QStringList entries = homeDir.entryList();
- for (int i = 0; i < entries.count(); ++i) {
- QFileInfo fi(QDir::homePath() + "/" + entries[i]);
- QCOMPARE(fi.exists(), true);
- }
-}
-
-void tst_QDir::tempPath()
-{
- QDir dir = QDir::temp();
- QString path = QDir::tempPath();
-
- // docs say that tempPath() is an absolute path
- QCOMPARE(path, dir.absolutePath());
- QVERIFY(QDir::isAbsolutePath(path));
-
-#ifdef Q_OS_UNIX
- if (path.length() > 1) // root dir = "/"
- QVERIFY(!path.endsWith('/'));
-#elif defined(Q_OS_WIN)
- if (path.length() > 3) // root dir = "c:/"; "//" is not really valid...
- QVERIFY(!path.endsWith('/'));
-#endif
-}
-
-void tst_QDir::rootPath()
-{
- QDir dir = QDir::root();
- QString path = QDir::rootPath();
-
- // docs say that tempPath() is an absolute path
- QCOMPARE(path, dir.absolutePath());
- QVERIFY(QDir::isAbsolutePath(path));
-
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
- QCOMPARE(path, QString("/"));
-#endif
-}
-
-void tst_QDir::nativeSeparators()
-{
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- QCOMPARE(QDir::toNativeSeparators(QLatin1String("/")), QString("\\"));
- QCOMPARE(QDir::toNativeSeparators(QLatin1String("\\")), QString("\\"));
- QCOMPARE(QDir::fromNativeSeparators(QLatin1String("/")), QString("/"));
- QCOMPARE(QDir::fromNativeSeparators(QLatin1String("\\")), QString("/"));
-#else
- QCOMPARE(QDir::toNativeSeparators(QLatin1String("/")), QString("/"));
- QCOMPARE(QDir::toNativeSeparators(QLatin1String("\\")), QString("\\"));
- QCOMPARE(QDir::fromNativeSeparators(QLatin1String("/")), QString("/"));
- QCOMPARE(QDir::fromNativeSeparators(QLatin1String("\\")), QString("\\"));
-#endif
-}
-
-void tst_QDir::searchPaths_data()
-{
- QTest::addColumn<QString>("filename");
- QTest::addColumn<QString>("searchPathPrefixes");
- QTest::addColumn<QString>("searchPaths");
- QTest::addColumn<QString>("expectedAbsolutePath");
-
- QString srcdir = SRCDIR;
- if (srcdir.isEmpty())
- srcdir = QDir::currentPath();
- else
- srcdir.chop(1); // remove ending slash
- QString searchDir = srcdir + "/searchdir";
-
- // sanity
- QTest::newRow("nopath") << "picker.png" << QString() << QString() << QString();
- QTest::newRow("emptysearchpath") << "subdir1/picker.png" << QString() << QString() << QString();
- QTest::newRow("searchpathwithoutprefix") << SRCDIR "searchdir/subdir1/picker.png" << QString("searchpath") << QString("searchdir") << (searchDir+"/subdir1/picker.png");
-
- // new
- QTest::newRow("novalidsearchpath") << "searchpath:subdir1/picker.png" << QString() << QString() << QString();
- QTest::newRow("invalidsearchpath") << "searchpath:subdir1/picker.png" << QString("invalid") << QString("invalid") << QString();
- QTest::newRow("onlyvalidsearchpath") << "searchpath:subdir1/picker.png" << QString("searchpath") << QString(SRCDIR "searchdir") << (searchDir+"/subdir1/picker.png");
- QTest::newRow("validandinvalidsearchpath") << "searchpath:subdir1/picker.png" << QString("invalid;searchpath") << QString("invalid;" SRCDIR "searchdir") << (searchDir+"/subdir1/picker.png");
- QTest::newRow("precedence1") << "searchpath:picker.png" << QString("invalid;searchpath") << QString("invalid;" SRCDIR "searchdir/subdir1," SRCDIR "searchdir/subdir2") << (searchDir+"/subdir1/picker.png");
- QTest::newRow("precedence2") << "searchpath:picker.png" << QString("invalid;searchpath") << QString("invalid;" SRCDIR "searchdir/subdir2," SRCDIR "searchdir/subdir1") << (searchDir+"/subdir2/picker.png");
- QTest::newRow("precedence3") << "searchpath2:picker.png" << QString("searchpath1;searchpath2") << QString(SRCDIR "searchdir/subdir1;" SRCDIR "searchdir/subdir2") << (searchDir+"/subdir2/picker.png");
-
- // re
-}
-
-void tst_QDir::searchPaths()
-{
- QFETCH(QString, filename);
- QFETCH(QString, searchPathPrefixes);
- QStringList searchPathPrefixList = searchPathPrefixes.split(";", QString::SkipEmptyParts);
- QFETCH(QString, searchPaths);
- QStringList searchPathsList = searchPaths.split(";", QString::SkipEmptyParts);
- QFETCH(QString, expectedAbsolutePath);
- bool exists = !expectedAbsolutePath.isEmpty();
-
- for (int i = 0; i < searchPathPrefixList.count(); ++i) {
- QDir::setSearchPaths(searchPathPrefixList.at(i), searchPathsList.at(i).split(","));
- }
- for (int i = 0; i < searchPathPrefixList.count(); ++i) {
- QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)) == searchPathsList.at(i).split(","));
- }
-
- QCOMPARE(QFile(filename).exists(), exists);
- QCOMPARE(QFileInfo(filename).exists(), exists);
-
- if (exists) {
- QCOMPARE(QFileInfo(filename).absoluteFilePath(), expectedAbsolutePath);
- }
-
- for (int i = 0; i < searchPathPrefixList.count(); ++i) {
- QDir::setSearchPaths(searchPathPrefixList.at(i), QStringList());
- }
- for (int i = 0; i < searchPathPrefixList.count(); ++i) {
- QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)).isEmpty());
- }
-
- for (int i = 0; i < searchPathPrefixList.count(); ++i) {
- foreach (QString path, searchPathsList.at(i).split(",")) {
- QDir::addSearchPath(searchPathPrefixList.at(i), path);
- }
- }
- for (int i = 0; i < searchPathPrefixList.count(); ++i) {
- QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)) == searchPathsList.at(i).split(","));
- }
-
- QCOMPARE(QFile(filename).exists(), exists);
- QCOMPARE(QFileInfo(filename).exists(), exists);
-
- if (exists) {
- QCOMPARE(QFileInfo(filename).absoluteFilePath(), expectedAbsolutePath);
- }
-
- for (int i = 0; i < searchPathPrefixList.count(); ++i) {
- QDir::setSearchPaths(searchPathPrefixList.at(i), QStringList());
- }
- for (int i = 0; i < searchPathPrefixList.count(); ++i) {
- QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)).isEmpty());
- }
-}
-
-void tst_QDir::entryListWithSearchPaths()
-{
- QDir realDir(":/tst_qdir/resources/entryList");
- QVERIFY(realDir.exists());
- QVERIFY(!realDir.entryList().isEmpty());
- QVERIFY(realDir.entryList().contains("file3.data"));
-
- QDir::setSearchPaths("searchpath", QStringList(":/tst_qdir/resources"));
- QDir dir("searchpath:entryList/");
- QCOMPARE(dir.path(), QString(":/tst_qdir/resources/entryList"));
- QVERIFY(dir.exists());
- QStringList entryList = dir.entryList();
- QVERIFY(entryList.contains("file3.data"));
-}
-
-void tst_QDir::longFileName_data()
-{
- QTest::addColumn<int>("length");
-
- QTest::newRow("128") << 128;
- QTest::newRow("256") << 256;
- QTest::newRow("512") << 512;
- QTest::newRow("1024") << 1024;
- QTest::newRow("2048") << 2048;
- QTest::newRow("4096") << 4096;
-}
-
-void tst_QDir::longFileName()
-{
- QFETCH(int, length);
-
- QString fileName(length, QLatin1Char('a'));
- fileName += QLatin1String(".txt");
-
- QFile file(fileName);
- if (!file.open(QFile::WriteOnly))
- QSKIP("Cannot create long file names", SkipAll);
-
- QFile file2(fileName);
- QVERIFY(file2.open(QFile::ReadOnly));
-
- QVERIFY(QDir().entryList().contains(fileName));
-
- file.close();
- file2.close();
-
- QFile::remove(fileName);
-}
-
-void tst_QDir::updateFileLists()
-{
- // Test setup
-
- FileSystem fs;
-
- QVERIFY( fs.createDirectory("update-file-lists") );
- QVERIFY( fs.createFile("update-file-lists/file1.txt") );
- QVERIFY( fs.createFile("update-file-lists/file2.doc") );
-
- QVERIFY( fs.createDirectory("update-file-lists/sub-dir1") );
- QVERIFY( fs.createFile("update-file-lists/sub-dir1/file3.txt") );
- QVERIFY( fs.createFile("update-file-lists/sub-dir1/file4.doc") );
- QVERIFY( fs.createFile("update-file-lists/sub-dir1/file5.txt") );
-
- QVERIFY( fs.createDirectory("update-file-lists/sub-dir2") );
- QVERIFY( fs.createFile("update-file-lists/sub-dir2/file6.txt") );
- QVERIFY( fs.createFile("update-file-lists/sub-dir2/file7.txt") );
- QVERIFY( fs.createFile("update-file-lists/sub-dir2/file8.doc") );
- QVERIFY( fs.createFile("update-file-lists/sub-dir2/file9.doc") );
-
- // Actual test
-
- QDir dir("update-file-lists");
-
-#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE)
- //no . and .. on these OS.
- QCOMPARE(dir.count(), uint(4));
- QCOMPARE(dir.entryList().size(), 4);
- QCOMPARE(dir.entryInfoList().size(), 4);
-#else
- QCOMPARE(dir.count(), uint(6));
- QCOMPARE(dir.entryList().size(), 6);
- QCOMPARE(dir.entryInfoList().size(), 6);
-#endif
-
- dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot);
-
- QCOMPARE(dir.entryList().size(), 4);
- QCOMPARE(dir.count(), uint(4));
- QCOMPARE(dir.entryInfoList().size(), 4);
-
- dir.setPath("update-file-lists/sub-dir1");
-
- QCOMPARE(dir.entryInfoList().size(), 3);
- QCOMPARE(dir.count(), uint(3));
- QCOMPARE(dir.entryList().size(), 3);
-
- dir.setNameFilters(QStringList("*.txt"));
-
- QCOMPARE(dir.entryInfoList().size(), 2);
- QCOMPARE(dir.entryList().size(), 2);
- QCOMPARE(dir.count(), uint(2));
-
- dir.setPath("update-file-lists");
- dir = QDir(dir.path(),
- "*.txt",
- QDir::Name | QDir::DirsLast,
- QDir::AllEntries | QDir::AllDirs | QDir::NoDotAndDotDot);
-
- QCOMPARE(dir.count(), uint(3));
- QCOMPARE(dir.entryList().size(), 3);
- QCOMPARE(dir.entryInfoList().size(), 3);
- QCOMPARE(dir.entryList(), QStringList() << "file1.txt" << "sub-dir1" << "sub-dir2");
-
- dir.setSorting(QDir::Name | QDir::DirsFirst);
-
- QCOMPARE(dir.count(), uint(3));
- QCOMPARE(dir.entryList().size(), 3);
- QCOMPARE(dir.entryInfoList().size(), 3);
- QCOMPARE(dir.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "file1.txt");
-
- {
- QVERIFY( fs.createFile("update-file-lists/extra-file.txt") );
-
- QDir dir2(dir);
-
- QCOMPARE(dir2.count(), uint(3));
- QCOMPARE(dir2.entryList().size(), 3);
- QCOMPARE(dir2.entryInfoList().size(), 3);
- QCOMPARE(dir2.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "file1.txt");
-
- dir2.refresh();
-
- QCOMPARE(dir2.count(), uint(4));
- QCOMPARE(dir2.entryList().size(), 4);
- QCOMPARE(dir2.entryInfoList().size(), 4);
- QCOMPARE(dir2.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "extra-file.txt" << "file1.txt");
- }
-
- QCOMPARE(dir.count(), uint(3));
- QCOMPARE(dir.entryList().size(), 3);
- QCOMPARE(dir.entryInfoList().size(), 3);
- QCOMPARE(dir.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "file1.txt");
-}
-
-void tst_QDir::detachingOperations()
-{
- QString const defaultPath(".");
- QStringList const defaultNameFilters = QStringList("*");
- QDir::SortFlags const defaultSorting = QDir::Name | QDir::IgnoreCase;
- QDir::Filters const defaultFilter = QDir::AllEntries;
-
- QString const path1("..");
- QString const path2("./foo");
- QStringList const nameFilters = QStringList(QString("*.txt"));
- QDir::SortFlags const sorting = QDir::Name | QDir::DirsLast | QDir::Reversed;
- QDir::Filters const filter = QDir::Writable;
-
- QDir dir1;
-
- QCOMPARE(dir1.path(), defaultPath);
- QCOMPARE(dir1.filter(), defaultFilter);
- QCOMPARE(dir1.nameFilters(), defaultNameFilters);
- QCOMPARE(dir1.sorting(), defaultSorting);
-
- dir1.setPath(path1);
- QCOMPARE(dir1.path(), path1);
- QCOMPARE(dir1.filter(), defaultFilter);
- QCOMPARE(dir1.nameFilters(), defaultNameFilters);
- QCOMPARE(dir1.sorting(), defaultSorting);
-
- dir1.setFilter(filter);
- QCOMPARE(dir1.path(), path1);
- QCOMPARE(dir1.filter(), filter);
- QCOMPARE(dir1.nameFilters(), defaultNameFilters);
- QCOMPARE(dir1.sorting(), defaultSorting);
-
- dir1.setNameFilters(nameFilters);
- QCOMPARE(dir1.path(), path1);
- QCOMPARE(dir1.filter(), filter);
- QCOMPARE(dir1.nameFilters(), nameFilters);
- QCOMPARE(dir1.sorting(), defaultSorting);
-
- dir1.setSorting(sorting);
- QCOMPARE(dir1.path(), path1);
- QCOMPARE(dir1.filter(), filter);
- QCOMPARE(dir1.nameFilters(), nameFilters);
- QCOMPARE(dir1.sorting(), sorting);
-
- dir1.setPath(path2);
- QCOMPARE(dir1.path(), path2);
- QCOMPARE(dir1.filter(), filter);
- QCOMPARE(dir1.nameFilters(), nameFilters);
- QCOMPARE(dir1.sorting(), sorting);
-
- {
- QDir dir2(dir1);
- QCOMPARE(dir2.path(), path2);
- QCOMPARE(dir2.filter(), filter);
- QCOMPARE(dir2.nameFilters(), nameFilters);
- QCOMPARE(dir2.sorting(), sorting);
- }
-
- {
- QDir dir2;
- QCOMPARE(dir2.path(), defaultPath);
- QCOMPARE(dir2.filter(), defaultFilter);
- QCOMPARE(dir2.nameFilters(), defaultNameFilters);
- QCOMPARE(dir2.sorting(), defaultSorting);
-
- dir2 = dir1;
- QCOMPARE(dir2.path(), path2);
- QCOMPARE(dir2.filter(), filter);
- QCOMPARE(dir2.nameFilters(), nameFilters);
- QCOMPARE(dir2.sorting(), sorting);
-
- dir2 = path1;
- QCOMPARE(dir2.path(), path1);
- QCOMPARE(dir2.filter(), filter);
- QCOMPARE(dir2.nameFilters(), nameFilters);
- QCOMPARE(dir2.sorting(), sorting);
- }
-
- dir1.refresh();
- QCOMPARE(dir1.path(), path2);
- QCOMPARE(dir1.filter(), filter);
- QCOMPARE(dir1.nameFilters(), nameFilters);
- QCOMPARE(dir1.sorting(), sorting);
-
- QString const currentPath = QDir::currentPath();
- QVERIFY(dir1.cd(currentPath));
- QCOMPARE(dir1.path(), currentPath);
- QCOMPARE(dir1.filter(), filter);
- QCOMPARE(dir1.nameFilters(), nameFilters);
- QCOMPARE(dir1.sorting(), sorting);
-
- QVERIFY(dir1.cdUp());
- QCOMPARE(dir1.filter(), filter);
- QCOMPARE(dir1.nameFilters(), nameFilters);
- QCOMPARE(dir1.sorting(), sorting);
-}
-
-void tst_QDir::testCaching()
-{
- QString dirName = QString::fromLatin1("testCaching");
- QDir::current().rmdir(dirName); // cleanup a previous run.
- QDir dir(dirName);
- QVERIFY(!dir.exists());
- QDir::current().mkdir(dirName);
- QVERIFY(QDir(dirName).exists()); // dir exists
- QVERIFY(dir.exists()); // QDir doesn't cache the 'exist' between calls.
-}
-
-void tst_QDir::isRoot_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("isRoot");
-
- QString test = QDir::rootPath();
- QTest::newRow(QString("rootPath " + test).toLatin1()) << test << true;
- test = QDir::rootPath().append("./");
- QTest::newRow(QString("./ appended " + test).toLatin1()) << test << false;
-
- test = QDir(QDir::rootPath().append("./")).canonicalPath();
-#ifdef Q_OS_MAC
- // On Mac OS X 10.5 and earlier, canonicalPath depends on cleanPath which
- // is itself very broken and fundamentally wrong on "/./", which this would
- // exercise
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6)
-#endif
- QTest::newRow(QString("canonicalPath " + test).toLatin1()) << test << true;
-
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- test = QDir::rootPath().left(2);
- QTest::newRow(QString("drive relative " + test).toLatin1()) << test << false;
-#endif
-
- QTest::newRow("resources root") << ":/" << true;
- QTest::newRow("resources nonroot") << ":/entrylist" << false;
-}
-
-void tst_QDir::isRoot()
-{
- QFETCH(QString, path);
- QFETCH(bool, isRoot);
-
- QDir dir(path);
- QCOMPARE(dir.isRoot(),isRoot);
-}
-
-#ifndef QT_NO_REGEXP
-void tst_QDir::match_data()
-{
- QTest::addColumn<QString>("filter");
- QTest::addColumn<QString>("filename");
- QTest::addColumn<bool>("match");
-
- QTest::newRow("single, matching") << "*.cpp" << "tst_qdir.cpp" << true;
- QTest::newRow("single, not matching") << "*.cpp" << "tst_qdir.h" << false;
- QTest::newRow("multi, matching") << "*.cpp;*.h" << "tst_qdir.cpp" << true;
- QTest::newRow("multi, matching2") << "*.cpp;*.h" << "tst_qdir.h" << true;
- QTest::newRow("multi, not matching") << "*.cpp;*.h" << "readme.txt" << false;
-}
-
-void tst_QDir::match()
-{
- QFETCH(QString, filter);
- QFETCH(QString, filename);
- QFETCH(bool, match);
-
- QCOMPARE(QDir::match(filter, filename), match);
- QCOMPARE(QDir::match(filter.split(QLatin1Char(';')), filename), match);
-}
-#endif
-
-void tst_QDir::drives()
-{
- QFileInfoList list(QDir::drives());
-#if defined(Q_OS_WIN)
- QVERIFY(list.count() >= 1); //system
- QLatin1Char systemdrive('c');
-#elif defined(Q_OS_SYMBIAN)
- QVERIFY(list.count() >= 2); //system, rom
- QLatin1Char romdrive('z');
- QLatin1Char systemdrive('a' + int(RFs::GetSystemDrive()));
-#endif
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- QVERIFY(list.count() <= 26);
- bool foundsystem = false;
-#ifdef Q_OS_SYMBIAN
- bool foundrom = false;
-#endif
- foreach (QFileInfo fi, list) {
- QCOMPARE(fi.absolutePath().size(), 3); //"x:/"
- QCOMPARE(fi.absolutePath().at(1), QChar(QLatin1Char(':')));
- QCOMPARE(fi.absolutePath().at(2), QChar(QLatin1Char('/')));
- if (fi.absolutePath().at(0).toLower() == systemdrive)
- foundsystem = true;
-#ifdef Q_OS_SYMBIAN
- if (fi.absolutePath().at(0).toLower() == romdrive)
- foundrom = true;
-#endif
- }
- QCOMPARE(foundsystem, true);
-#ifdef Q_OS_SYMBIAN
- QCOMPARE(foundrom, true);
-#endif
-#else
- QCOMPARE(list.count(), 1); //root
- QCOMPARE(list.at(0).absolutePath(), QLatin1String("/"));
-#endif
-}
-
-void tst_QDir::arrayOperator()
-{
- QDir dir1(SRCDIR "entrylist/");
- QDir dir2(SRCDIR "entrylist/");
-
- QStringList entries(dir1.entryList());
- int i = dir2.count();
- QCOMPARE(i, entries.count());
- --i;
- for (;i>=0;--i) {
- QCOMPARE(dir2[i], entries.at(i));
- }
-}
-
-void tst_QDir::equalityOperator_data()
-{
- QTest::addColumn<QString>("leftPath");
- QTest::addColumn<QString>("leftNameFilters");
- QTest::addColumn<int>("leftSort");
- QTest::addColumn<int>("leftFilters");
- QTest::addColumn<QString>("rightPath");
- QTest::addColumn<QString>("rightNameFilters");
- QTest::addColumn<int>("rightSort");
- QTest::addColumn<int>("rightFilters");
- QTest::addColumn<bool>("expected");
-
- QTest::newRow("same") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
- << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
- << true;
-
- QTest::newRow("relativepaths") << "entrylist/" << "*.cpp" << int(QDir::Name) << int(QDir::Files)
- << "./entrylist" << "*.cpp" << int(QDir::Name) << int(QDir::Files)
- << true;
-
- QTest::newRow("QTBUG-20495") << QDir::currentPath() + "/entrylist/.." << "*.cpp" << int(QDir::Name) << int(QDir::Files)
- << "." << "*.cpp" << int(QDir::Name) << int(QDir::Files)
- << true;
-
- QTest::newRow("QTBUG-20495-root") << QDir::rootPath() + "tmp/.." << "*.cpp" << int(QDir::Name) << int(QDir::Files)
- << QDir::rootPath() << "*.cpp" << int(QDir::Name) << int(QDir::Files)
- << true;
-
- QTest::newRow("diff-filters") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
- << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Dirs)
- << false;
-
- QTest::newRow("diff-sort") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
- << SRCDIR << "*.cpp" << int(QDir::Time) << int(QDir::Files)
- << false;
-
- QTest::newRow("diff-namefilters") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
- << SRCDIR << "*.jpg" << int(QDir::Name) << int(QDir::Files)
- << false;
-}
-
-void tst_QDir::equalityOperator()
-{
- QFETCH(QString, leftPath);
- QFETCH(QString, leftNameFilters);
- QFETCH(int, leftSort);
- QFETCH(int, leftFilters);
- QFETCH(QString, rightPath);
- QFETCH(QString, rightNameFilters);
- QFETCH(int, rightSort);
- QFETCH(int, rightFilters);
- QFETCH(bool, expected);
-
- QDir dir1(leftPath, leftNameFilters, QDir::SortFlags(leftSort), QDir::Filters(leftFilters));
- QDir dir2(rightPath, rightNameFilters, QDir::SortFlags(rightSort), QDir::Filters(rightFilters));
-
- QCOMPARE((dir1 == dir2), expected);
- QCOMPARE((dir2 == dir1), expected);
- QCOMPARE((dir1 != dir2), !expected);
- QCOMPARE((dir2 != dir1), !expected);
-}
-
-void tst_QDir::isRelative_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("relative");
-
- QTest::newRow(".") << "./" << true;
- QTest::newRow("..") << "../" << true;
- QTest::newRow("content") << "entrylist/" << true;
- QTest::newRow("current") << QDir::currentPath() << false;
- QTest::newRow("homepath") << QDir::homePath() << false;
- QTest::newRow("temppath") << QDir::tempPath() << false;
- QTest::newRow("rootpath") << QDir::rootPath() << false;
- foreach (QFileInfo root, QDir::drives()) {
- QTest::newRow(root.absolutePath().toLocal8Bit()) << root.absolutePath() << false;
- }
-
- QTest::newRow("resource") << ":/prefix" << false;
-}
-
-void tst_QDir::isRelative()
-{
- QFETCH(QString, path);
- QFETCH(bool, relative);
-
- QCOMPARE(QDir(path).isRelative(), relative);
-}
-
-void tst_QDir::isReadable()
-{
- QDir dir;
-
- QVERIFY(dir.isReadable());
-#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
- QVERIFY(dir.mkdir("nonreadabledir"));
- QVERIFY(0 == ::chmod("nonreadabledir", 0));
- QVERIFY(!QDir("nonreadabledir").isReadable());
- QVERIFY(0 == ::chmod("nonreadabledir", S_IRUSR | S_IWUSR | S_IXUSR));
- QVERIFY(dir.rmdir("nonreadabledir"));
-#endif
-}
-
-QTEST_MAIN(tst_QDir)
-#include "tst_qdir.moc"
-
diff --git a/tests/auto/qdirectpainter/test/test.pro b/tests/auto/qdirectpainter/test/test.pro
index 6d820b1585..3621e11fa9 100644
--- a/tests/auto/qdirectpainter/test/test.pro
+++ b/tests/auto/qdirectpainter/test/test.pro
@@ -1,5 +1,5 @@
load(qttest_p4)
-
+QT += widgets
SOURCES += ../tst_qdirectpainter.cpp
TARGET = ../tst_qdirectpainter
diff --git a/tests/auto/qdiriterator/qdiriterator.pro b/tests/auto/qdiriterator/qdiriterator.pro
deleted file mode 100644
index 0807a18f8f..0000000000
--- a/tests/auto/qdiriterator/qdiriterator.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qdiriterator.cpp
-RESOURCES += qdiriterator.qrc
-QT = core
-
-wince*mips*|wincewm50smart-msvc200*: DEFINES += WINCE_BROKEN_ITERATE=1
-
-CONFIG += parallel_test
diff --git a/tests/auto/qdiriterator/tst_qdiriterator.cpp b/tests/auto/qdiriterator/tst_qdiriterator.cpp
deleted file mode 100644
index 42ac065645..0000000000
--- a/tests/auto/qdiriterator/tst_qdiriterator.cpp
+++ /dev/null
@@ -1,639 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qcoreapplication.h>
-#include <qdebug.h>
-#include <qdiriterator.h>
-#include <qfileinfo.h>
-#include <qstringlist.h>
-
-#if defined(Q_OS_VXWORKS)
-#define Q_NO_SYMLINKS
-#endif
-
-#if defined(Q_OS_SYMBIAN)
-#define Q_NO_SYMLINKS
-#define Q_NO_SYMLINKS_TO_DIRS
-#endif
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
-#include "../network-settings.h"
-#endif
-
-Q_DECLARE_METATYPE(QDirIterator::IteratorFlags)
-Q_DECLARE_METATYPE(QDir::Filters)
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QDirIterator : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QDirIterator();
- virtual ~tst_QDirIterator();
-
-private: // convenience functions
- QStringList createdDirectories;
- QStringList createdFiles;
-
- QDir currentDir;
- bool createDirectory(const QString &dirName)
- {
- if (currentDir.mkdir(dirName)) {
- createdDirectories.prepend(dirName);
- return true;
- }
- return false;
- }
-
- enum Cleanup { DoDelete, DontDelete };
- bool createFile(const QString &fileName, Cleanup cleanup = DoDelete)
- {
- QFile file(fileName);
- if (file.open(QIODevice::WriteOnly)) {
- if (cleanup == DoDelete)
- createdFiles << fileName;
- return true;
- }
- return false;
- }
-
- bool createLink(const QString &destination, const QString &linkName)
- {
- if (QFile::link(destination, linkName)) {
- createdFiles << linkName;
- return true;
- }
- return false;
- }
-
-private slots:
- void iterateRelativeDirectory_data();
- void iterateRelativeDirectory();
- void iterateResource_data();
- void iterateResource();
- void stopLinkLoop();
- void engineWithNoIterator();
- void absoluteFilePathsFromRelativeIteratorPath();
- void recurseWithFilters() const;
- void longPath();
- void task185502_dirorder();
- void relativePaths();
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- void uncPaths_data();
- void uncPaths();
-#endif
- void qtbug15421_hiddenDirs_hiddenFiles();
-};
-
-tst_QDirIterator::tst_QDirIterator()
-{
- QFile::remove("entrylist/entrylist1.lnk");
- QFile::remove("entrylist/entrylist2.lnk");
- QFile::remove("entrylist/entrylist3.lnk");
- QFile::remove("entrylist/entrylist4.lnk");
- QFile::remove("entrylist/directory/entrylist1.lnk");
- QFile::remove("entrylist/directory/entrylist2.lnk");
- QFile::remove("entrylist/directory/entrylist3.lnk");
- QFile::remove("entrylist/directory/entrylist4.lnk");
-
- createDirectory("entrylist");
- createDirectory("entrylist/directory");
- createFile("entrylist/file", DontDelete);
- createFile("entrylist/writable");
- createFile("entrylist/directory/dummy", DontDelete);
-
- createDirectory("recursiveDirs");
- createDirectory("recursiveDirs/dir1");
- createFile("recursiveDirs/textFileA.txt");
- createFile("recursiveDirs/dir1/aPage.html");
- createFile("recursiveDirs/dir1/textFileB.txt");
-
- createDirectory("foo");
- createDirectory("foo/bar");
- createFile("foo/bar/readme.txt");
-
- createDirectory("empty");
-
-#ifndef Q_NO_SYMLINKS
-# if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- // ### Sadly, this is a platform difference right now.
- createLink("entrylist/file", "entrylist/linktofile.lnk");
-# ifndef Q_NO_SYMLINKS_TO_DIRS
- createLink("entrylist/directory", "entrylist/linktodirectory.lnk");
-# endif
- createLink("entrylist/nothing", "entrylist/brokenlink.lnk");
-# else
- createLink("file", "entrylist/linktofile.lnk");
-# ifndef Q_NO_SYMLINKS_TO_DIRS
- createLink("directory", "entrylist/linktodirectory.lnk");
-# endif
- createLink("nothing", "entrylist/brokenlink.lnk");
-# endif
-#endif
-
- createDirectory("qtbug15421_hiddenDirs_hiddenFiles");
- createFile("qtbug15421_hiddenDirs_hiddenFiles/normalFile");
- createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenFile");
- createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory");
- createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory");
- createFile("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/normalFile");
- createFile("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/.hiddenFile");
- createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/normalFile");
- createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenFile");
- createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/normalDirectory");
- createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/.hiddenDirectory");
- createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/normalDirectory");
- createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenDirectory");
-}
-
-tst_QDirIterator::~tst_QDirIterator()
-{
- Q_FOREACH(QString fileName, createdFiles)
- QFile::remove(fileName);
-
- Q_FOREACH(QString dirName, createdDirectories)
- currentDir.rmdir(dirName);
-}
-
-void tst_QDirIterator::iterateRelativeDirectory_data()
-{
- QTest::addColumn<QString>("dirName"); // relative from current path or abs
- QTest::addColumn<QDirIterator::IteratorFlags>("flags");
- QTest::addColumn<QDir::Filters>("filters");
- QTest::addColumn<QStringList>("nameFilters");
- QTest::addColumn<QStringList>("entries");
-
- QTest::newRow("no flags")
- << QString("entrylist") << QDirIterator::IteratorFlags(0)
- << QDir::Filters(QDir::NoFilter) << QStringList("*")
- << QString(
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
- "entrylist/.,"
- "entrylist/..,"
-#endif
- "entrylist/file,"
-#ifndef Q_NO_SYMLINKS
- "entrylist/linktofile.lnk,"
-#endif
- "entrylist/directory,"
-#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
- "entrylist/linktodirectory.lnk,"
-#endif
- "entrylist/writable").split(',');
-
- QTest::newRow("NoDot")
- << QString("entrylist") << QDirIterator::IteratorFlags(0)
- << QDir::Filters(QDir::AllEntries | QDir::NoDot) << QStringList("*")
- << QString(
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
- "entrylist/..,"
-#endif
- "entrylist/file,"
-#ifndef Q_NO_SYMLINKS
- "entrylist/linktofile.lnk,"
-#endif
- "entrylist/directory,"
-#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
- "entrylist/linktodirectory.lnk,"
-#endif
- "entrylist/writable").split(',');
-
- QTest::newRow("NoDotDot")
- << QString("entrylist") << QDirIterator::IteratorFlags(0)
- << QDir::Filters(QDir::AllEntries | QDir::NoDotDot) << QStringList("*")
- << QString(
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
- "entrylist/.,"
-#endif
- "entrylist/file,"
-#ifndef Q_NO_SYMLINKS
- "entrylist/linktofile.lnk,"
-#endif
- "entrylist/directory,"
-#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
- "entrylist/linktodirectory.lnk,"
-#endif
- "entrylist/writable").split(',');
-
- QTest::newRow("NoDotAndDotDot")
- << QString("entrylist") << QDirIterator::IteratorFlags(0)
- << QDir::Filters(QDir::AllEntries | QDir::NoDotAndDotDot) << QStringList("*")
- << QString(
- "entrylist/file,"
-#ifndef Q_NO_SYMLINKS
- "entrylist/linktofile.lnk,"
-#endif
- "entrylist/directory,"
-#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
- "entrylist/linktodirectory.lnk,"
-#endif
- "entrylist/writable").split(',');
-
- QTest::newRow("QDir::Subdirectories | QDir::FollowSymlinks")
- << QString("entrylist") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories | QDirIterator::FollowSymlinks)
- << QDir::Filters(QDir::NoFilter) << QStringList("*")
- << QString(
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
- "entrylist/.,"
- "entrylist/..,"
- "entrylist/directory/.,"
- "entrylist/directory/..,"
-#endif
- "entrylist/file,"
-#ifndef Q_NO_SYMLINKS
- "entrylist/linktofile.lnk,"
-#endif
- "entrylist/directory,"
- "entrylist/directory/dummy,"
-#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
- "entrylist/linktodirectory.lnk,"
-#endif
- "entrylist/writable").split(',');
-
- QTest::newRow("QDir::Subdirectories / QDir::Files")
- << QString("entrylist") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories)
- << QDir::Filters(QDir::Files) << QStringList("*")
- << QString("entrylist/directory/dummy,"
- "entrylist/file,"
-#ifndef Q_NO_SYMLINKS
- "entrylist/linktofile.lnk,"
-#endif
- "entrylist/writable").split(',');
-
- QTest::newRow("QDir::Subdirectories | QDir::FollowSymlinks / QDir::Files")
- << QString("entrylist") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories | QDirIterator::FollowSymlinks)
- << QDir::Filters(QDir::Files) << QStringList("*")
- << QString("entrylist/file,"
-#ifndef Q_NO_SYMLINKS
- "entrylist/linktofile.lnk,"
-#endif
- "entrylist/directory/dummy,"
- "entrylist/writable").split(',');
-
- QTest::newRow("empty, default")
- << QString("empty") << QDirIterator::IteratorFlags(0)
- << QDir::Filters(QDir::NoFilter) << QStringList("*")
-#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE)
- << QStringList();
-#else
- << QString("empty/.,empty/..").split(',');
-#endif
-
- QTest::newRow("empty, QDir::NoDotAndDotDot")
- << QString("empty") << QDirIterator::IteratorFlags(0)
- << QDir::Filters(QDir::NoDotAndDotDot) << QStringList("*")
- << QStringList();
-}
-
-void tst_QDirIterator::iterateRelativeDirectory()
-{
- QFETCH(QString, dirName);
- QFETCH(QDirIterator::IteratorFlags, flags);
- QFETCH(QDir::Filters, filters);
- QFETCH(QStringList, nameFilters);
- QFETCH(QStringList, entries);
-
- QDirIterator it(dirName, nameFilters, filters, flags);
- QStringList list;
- while (it.hasNext()) {
- QString next = it.next();
-
- QString fileName = it.fileName();
- QString filePath = it.filePath();
- QString path = it.path();
-
- QFileInfo info = it.fileInfo();
-
- QCOMPARE(path, dirName);
- QCOMPARE(next, filePath);
-
- QCOMPARE(info, QFileInfo(next));
- QCOMPARE(fileName, info.fileName());
- QCOMPARE(filePath, info.filePath());
-
- // Using canonical file paths for final comparison
- list << info.canonicalFilePath();
- }
-
- // The order of items returned by QDirIterator is not guaranteed.
- list.sort();
-
- QStringList sortedEntries;
- foreach(QString item, entries)
- sortedEntries.append(QFileInfo(item).canonicalFilePath());
- sortedEntries.sort();
-
- if (sortedEntries != list) {
- qDebug() << "EXPECTED:" << sortedEntries;
- qDebug() << "ACTUAL: " << list;
- }
-
- QCOMPARE(list, sortedEntries);
-}
-
-void tst_QDirIterator::iterateResource_data()
-{
- QTest::addColumn<QString>("dirName"); // relative from current path or abs
- QTest::addColumn<QDirIterator::IteratorFlags>("flags");
- QTest::addColumn<QDir::Filters>("filters");
- QTest::addColumn<QStringList>("nameFilters");
- QTest::addColumn<QStringList>("entries");
-
- QTest::newRow("invalid") << QString::fromLatin1(":/burpaburpa") << QDirIterator::IteratorFlags(0)
- << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
- << QStringList();
- QTest::newRow(":/") << QString::fromLatin1(":/") << QDirIterator::IteratorFlags(0)
- << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
- << QString::fromLatin1(":/entrylist").split(QLatin1String(","));
- QTest::newRow(":/entrylist") << QString::fromLatin1(":/entrylist") << QDirIterator::IteratorFlags(0)
- << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
- << QString::fromLatin1(":/entrylist/directory,:/entrylist/file").split(QLatin1String(","));
- QTest::newRow(":/ recursive") << QString::fromLatin1(":/") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories)
- << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
- << QString::fromLatin1(":/entrylist,:/entrylist/directory,:/entrylist/directory/dummy,:/entrylist/file").split(QLatin1String(","));
-}
-
-void tst_QDirIterator::iterateResource()
-{
- QFETCH(QString, dirName);
- QFETCH(QDirIterator::IteratorFlags, flags);
- QFETCH(QDir::Filters, filters);
- QFETCH(QStringList, nameFilters);
- QFETCH(QStringList, entries);
-
- QDirIterator it(dirName, nameFilters, filters, flags);
- QStringList list;
- while (it.hasNext())
- list << it.next();
-
- list.sort();
- QStringList sortedEntries = entries;
- sortedEntries.sort();
-
- if (sortedEntries != list) {
- qDebug() << "EXPECTED:" << sortedEntries;
- qDebug() << "ACTUAL:" << list;
- }
-
- QCOMPARE(list, sortedEntries);
-}
-
-void tst_QDirIterator::stopLinkLoop()
-{
-#ifdef Q_OS_WIN
- // ### Sadly, this is a platform difference right now.
- createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/entrylist1.lnk");
- createLink("entrylist/.", "entrylist/entrylist2.lnk");
- createLink("entrylist/../entrylist/.", "entrylist/entrylist3.lnk");
- createLink("entrylist/..", "entrylist/entrylist4.lnk");
- createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/directory/entrylist1.lnk");
- createLink("entrylist/.", "entrylist/directory/entrylist2.lnk");
- createLink("entrylist/../directory/.", "entrylist/directory/entrylist3.lnk");
- createLink("entrylist/..", "entrylist/directory/entrylist4.lnk");
-#else
- createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/entrylist1.lnk");
- createLink(".", "entrylist/entrylist2.lnk");
- createLink("../entrylist/.", "entrylist/entrylist3.lnk");
- createLink("..", "entrylist/entrylist4.lnk");
- createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/directory/entrylist1.lnk");
- createLink(".", "entrylist/directory/entrylist2.lnk");
- createLink("../directory/.", "entrylist/directory/entrylist3.lnk");
- createLink("..", "entrylist/directory/entrylist4.lnk");
-#endif
-
- QDirIterator it(QLatin1String("entrylist"), QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
- QStringList list;
- int max = 200;
- while (--max && it.hasNext())
- it.next();
- QVERIFY(max);
-
- // The goal of this test is only to ensure that the test above don't malfunction
-}
-
-class EngineWithNoIterator : public QFSFileEngine
-{
-public:
- EngineWithNoIterator(const QString &fileName)
- : QFSFileEngine(fileName)
- { }
-
- QAbstractFileEngineIterator *beginEntryList(QDir::Filters, const QStringList &)
- { return 0; }
-};
-
-class EngineWithNoIteratorHandler : public QAbstractFileEngineHandler
-{
-public:
- QAbstractFileEngine *create(const QString &fileName) const
- {
- return new EngineWithNoIterator(fileName);
- }
-};
-
-void tst_QDirIterator::engineWithNoIterator()
-{
- EngineWithNoIteratorHandler handler;
-
- QDir("entrylist").entryList();
- QVERIFY(true); // test that the above line doesn't crash
-}
-
-void tst_QDirIterator::absoluteFilePathsFromRelativeIteratorPath()
-{
- QDirIterator it("entrylist/", QDir::NoDotAndDotDot);
- while (it.hasNext()) {
- it.next();
- QVERIFY(QFileInfo(it.filePath()).absoluteFilePath().contains("entrylist"));
- }
-}
-
-void tst_QDirIterator::recurseWithFilters() const
-{
- QStringList nameFilters;
- nameFilters.append("*.txt");
-
- QDirIterator it("recursiveDirs/", nameFilters, QDir::Files,
- QDirIterator::Subdirectories);
-
- QSet<QString> actualEntries;
- QSet<QString> expectedEntries;
- expectedEntries.insert(QString::fromLatin1("recursiveDirs/dir1/textFileB.txt"));
- expectedEntries.insert(QString::fromLatin1("recursiveDirs/textFileA.txt"));
-
- QVERIFY(it.hasNext());
- it.next();
- actualEntries.insert(it.fileInfo().filePath());
- QVERIFY(it.hasNext());
- it.next();
- actualEntries.insert(it.fileInfo().filePath());
- QVERIFY(actualEntries == expectedEntries);
-
- QVERIFY(!it.hasNext());
-}
-
-void tst_QDirIterator::longPath()
-{
- QDir dir;
- dir.mkdir("longpaths");
- dir.cd("longpaths");
-
- QString dirName = "x";
- int n = 0;
- while (dir.exists(dirName) || dir.mkdir(dirName)) {
- ++n;
- dirName.append('x');
-#if defined(Q_OS_WINCE) && defined(WINCE_BROKEN_ITERATE)
- // Some Windows CE devices/emulators are broken.
- // though one can create directories of length <= 217,
- // FindNextFile only reports entries until ~ 214.
- if (n >= 210)
- break;
-#endif
- }
-
- QDirIterator it(dir.absolutePath(), QDir::NoDotAndDotDot|QDir::Dirs, QDirIterator::Subdirectories);
- int m = 0;
- while (it.hasNext()) {
- ++m;
- it.next();
- }
-
- QCOMPARE(n, m);
-
- dirName.chop(1);
- while (dirName.length() > 0 && dir.exists(dirName) && dir.rmdir(dirName)) {
- dirName.chop(1);
- }
- dir.cdUp();
- dir.rmdir("longpaths");
-}
-
-void tst_QDirIterator::task185502_dirorder()
-{
- QDirIterator iterator("foo", QDirIterator::Subdirectories);
- while (iterator.hasNext() && iterator.next() != "foo/bar")
- { }
-
- QCOMPARE(iterator.filePath(), QString("foo/bar"));
- QCOMPARE(iterator.fileInfo().filePath(), QString("foo/bar"));
-}
-
-void tst_QDirIterator::relativePaths()
-{
- QDirIterator iterator("*", QDirIterator::Subdirectories);
- while(iterator.hasNext()) {
- QCOMPARE(iterator.filePath(), QDir::cleanPath(iterator.filePath()));
- }
-}
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
-void tst_QDirIterator::uncPaths_data()
-{
- QTest::addColumn<QString>("dirName");
- QTest::newRow("uncserver")
- <<QString("//" + QtNetworkSettings::winServerName());
- QTest::newRow("uncserver/testshare")
- <<QString("//" + QtNetworkSettings::winServerName() + "/testshare");
- QTest::newRow("uncserver/testshare/tmp")
- <<QString("//" + QtNetworkSettings::winServerName() + "/testshare/tmp");
-}
-void tst_QDirIterator::uncPaths()
-{
- QFETCH(QString, dirName);
- QDirIterator iterator(dirName, QDir::AllEntries|QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
- while(iterator.hasNext()) {
- iterator.next();
- QCOMPARE(iterator.filePath(), QDir::cleanPath(iterator.filePath()));
- }
-}
-#endif
-
-void tst_QDirIterator::qtbug15421_hiddenDirs_hiddenFiles()
-{
- // In Unix it is easy to create hidden files, but in Windows it requires
- // a special call since hidden files need to be "marked" while in Unix
- // anything starting by a '.' is a hidden file.
- // For that reason this test is not run in Windows.
-#if defined Q_OS_WIN || Q_OS_WINCE
- QSKIP("To create hidden files a special call is required in Windows.", SkipAll);
-#else
- // Only files
- {
- int matches = 0;
- int failures = 0;
- QDirIterator di("qtbug15421_hiddenDirs_hiddenFiles", QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
- while (di.hasNext()) {
- ++matches;
- QString filename = di.next();
- if (QFileInfo(filename).isDir())
- ++failures; // search was only supposed to find files
- }
- QCOMPARE(matches, 6);
- QCOMPARE(failures, 0);
- }
- // Only directories
- {
- int matches = 0;
- int failures = 0;
- QDirIterator di("qtbug15421_hiddenDirs_hiddenFiles", QDir::Dirs | QDir::Hidden | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
- while (di.hasNext()) {
- ++matches;
- QString filename = di.next();
- if (!QFileInfo(filename).isDir())
- ++failures; // search was only supposed to find files
- }
- QCOMPARE(matches, 6);
- QCOMPARE(failures, 0);
- }
-#endif // Q_OS_WIN || Q_OS_WINCE
-}
-
-QTEST_MAIN(tst_QDirIterator)
-
-#include "tst_qdiriterator.moc"
-
diff --git a/tests/auto/qdirmodel/qdirmodel.pro b/tests/auto/qdirmodel/qdirmodel.pro
index 7037a79934..7c0409334c 100644
--- a/tests/auto/qdirmodel/qdirmodel.pro
+++ b/tests/auto/qdirmodel/qdirmodel.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qdirmodel.cpp
wince*|symbian {
diff --git a/tests/auto/qdockwidget/qdockwidget.pro b/tests/auto/qdockwidget/qdockwidget.pro
index 5f92e5db19..e59728207f 100644
--- a/tests/auto/qdockwidget/qdockwidget.pro
+++ b/tests/auto/qdockwidget/qdockwidget.pro
@@ -1,8 +1,7 @@
load(qttest_p4)
-
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qdockwidget.cpp
-
-
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qdoublespinbox/qdoublespinbox.pro b/tests/auto/qdoublespinbox/qdoublespinbox.pro
index 3aec0de68e..ff0eb2edae 100644
--- a/tests/auto/qdoublespinbox/qdoublespinbox.pro
+++ b/tests/auto/qdoublespinbox/qdoublespinbox.pro
@@ -1,5 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qdoublespinbox.cpp
-
-
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qdoublespinbox/tst_qdoublespinbox.cpp b/tests/auto/qdoublespinbox/tst_qdoublespinbox.cpp
index 355b22f224..e0b6dc98a5 100644
--- a/tests/auto/qdoublespinbox/tst_qdoublespinbox.cpp
+++ b/tests/auto/qdoublespinbox/tst_qdoublespinbox.cpp
@@ -1080,7 +1080,7 @@ void tst_QDoubleSpinBox::taskQTBUG_5008_textFromValueAndValidate()
QTRY_COMPARE(static_cast<QWidget *>(&spinbox), QApplication::activeWindow());
QCOMPARE(spinbox.text(), spinbox.locale().toString(spinbox.value()));
spinbox.lineEdit()->setCursorPosition(2); //just after the first thousand separator
- QTest::keyClick(0, Qt::Key_0); // let's insert a 0
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_0); // let's insert a 0
QCOMPARE(spinbox.value(), 10000.);
spinbox.clearFocus(); //make sure the value is correctly formatted
QCOMPARE(spinbox.text(), spinbox.locale().toString(spinbox.value()));
diff --git a/tests/auto/qdoublevalidator/qdoublevalidator.pro b/tests/auto/qdoublevalidator/qdoublevalidator.pro
index 1fe3f7b838..7fbb72bb7f 100644
--- a/tests/auto/qdoublevalidator/qdoublevalidator.pro
+++ b/tests/auto/qdoublevalidator/qdoublevalidator.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qdoublevalidator.cpp
diff --git a/tests/auto/qdrag/qdrag.pro b/tests/auto/qdrag/qdrag.pro
deleted file mode 100644
index ad36fa5ada..0000000000
--- a/tests/auto/qdrag/qdrag.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-############################################################
-# Project file for autotest for file qdrag.h
-############################################################
-
-load(qttest_p4)
-
-SOURCES += tst_qdrag.cpp
-
-
diff --git a/tests/auto/qerrormessage/qerrormessage.pro b/tests/auto/qerrormessage/qerrormessage.pro
index 1c24aa83cb..363d085cbf 100644
--- a/tests/auto/qerrormessage/qerrormessage.pro
+++ b/tests/auto/qerrormessage/qerrormessage.pro
@@ -4,5 +4,7 @@ TARGET = tst_qerrormessage
DEPENDPATH += .
INCLUDEPATH += .
+QT += widgets
+
# Input
SOURCES += tst_qerrormessage.cpp
diff --git a/tests/auto/qeventloop/tst_qeventloop.cpp b/tests/auto/qeventloop/tst_qeventloop.cpp
deleted file mode 100644
index a702908549..0000000000
--- a/tests/auto/qeventloop/tst_qeventloop.cpp
+++ /dev/null
@@ -1,937 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-
-#include <qabstracteventdispatcher.h>
-#include <qcoreapplication.h>
-#include <qcoreevent.h>
-#include <qeventloop.h>
-#include <qmutex.h>
-#include <qthread.h>
-#include <qtimer.h>
-#include <qwaitcondition.h>
-#include <QTcpServer>
-#include <QTcpSocket>
-
-#ifdef Q_OS_SYMBIAN
-#include <e32base.h>
-#include <unistd.h>
-#endif
-
-#include "../../shared/util.h"
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class EventLoopExiter : public QObject
-{
- Q_OBJECT
- QEventLoop *eventLoop;
-public:
- inline EventLoopExiter(QEventLoop *el)
- : eventLoop(el)
- { }
-public slots:
- void exit();
- void exit1();
- void exit2();
-};
-
-void EventLoopExiter::exit()
-{ eventLoop->exit(); }
-
-void EventLoopExiter::exit1()
-{ eventLoop->exit(1); }
-
-void EventLoopExiter::exit2()
-{ eventLoop->exit(2); }
-
-class EventLoopThread : public QThread
-{
- Q_OBJECT
-signals:
- void checkPoint();
-public:
- QEventLoop *eventLoop;
- void run();
-};
-
-void EventLoopThread::run()
-{
- eventLoop = new QEventLoop;
- emit checkPoint();
- (void) eventLoop->exec();
- delete eventLoop;
- eventLoop = 0;
-}
-
-class MultipleExecThread : public QThread
-{
- Q_OBJECT
-signals:
- void checkPoint();
-public:
- QMutex mutex;
- QWaitCondition cond;
- volatile int result1;
- volatile int result2;
- MultipleExecThread() : result1(0xdead), result2(0xbeef) {}
-
- void run()
- {
- QMutexLocker locker(&mutex);
- // this exec should work
-
- cond.wakeOne();
- cond.wait(&mutex);
-
- QTimer timer;
- connect(&timer, SIGNAL(timeout()), SLOT(quit()), Qt::DirectConnection);
- timer.setInterval(1000);
- timer.start();
- result1 = exec();
-
- // this should return immediately, since exit() has been called
- cond.wakeOne();
- cond.wait(&mutex);
- QEventLoop eventLoop;
- result2 = eventLoop.exec();
- }
-};
-
-class StartStopEvent: public QEvent
-{
-public:
- StartStopEvent(int type, QEventLoop *loop = 0)
- : QEvent(Type(type)), el(loop)
- { }
-
- QEventLoop *el;
-};
-
-class EventLoopExecutor : public QObject
-{
- Q_OBJECT
- QEventLoop *eventLoop;
-public:
- int returnCode;
- EventLoopExecutor(QEventLoop *eventLoop)
- : QObject(), eventLoop(eventLoop), returnCode(-42)
- {
- }
-public slots:
- void exec()
- {
- QTimer::singleShot(100, eventLoop, SLOT(quit()));
- // this should return immediately, and the timer event should be delivered to
- // tst_QEventLoop::exec() test, letting the test complete
- returnCode = eventLoop->exec();
- }
-};
-
-#ifndef QT_NO_EXCEPTIONS
-class QEventLoopTestException { };
-
-class ExceptionThrower : public QObject
-{
- Q_OBJECT
-public:
- ExceptionThrower() : QObject() { }
-public slots:
- void throwException()
- {
- QEventLoopTestException e;
- throw e;
- }
-};
-#endif
-
-class tst_QEventLoop : public QObject
-{
- Q_OBJECT
-public:
- tst_QEventLoop();
- ~tst_QEventLoop();
-public slots:
- void init();
- void cleanup();
-private slots:
- // This test *must* run first. See the definition for why.
- void onlySymbianActiveScheduler();
- void symbianNestedActiveSchedulerLoop_data();
- void symbianNestedActiveSchedulerLoop();
- void processEvents();
- void exec();
- void throwInExec();
- void reexec();
- void exit();
- void execAfterExit();
- void wakeUp();
- void quit();
- void processEventsExcludeSocket();
- void processEventsExcludeTimers();
- void deliverInDefinedOrder_QTBUG19637();
-
- // keep this test last:
- void nestedLoops();
-
-protected:
- void customEvent(QEvent *e);
-};
-
-tst_QEventLoop::tst_QEventLoop()
-{ }
-
-tst_QEventLoop::~tst_QEventLoop()
-{ }
-
-void tst_QEventLoop::init()
-{ }
-
-void tst_QEventLoop::cleanup()
-{ }
-
-#ifdef Q_OS_SYMBIAN
-class OnlySymbianActiveScheduler_helper : public QObject
-{
- Q_OBJECT
-
-public:
- OnlySymbianActiveScheduler_helper(int fd, QTimer *zeroTimer)
- : fd(fd),
- timerCount(0),
- zeroTimer(zeroTimer),
- zeroTimerCount(0),
- notifierCount(0)
- {
- }
- ~OnlySymbianActiveScheduler_helper() {}
-
-public slots:
- void timerSlot()
- {
- // Let all the events occur twice so we know they reactivated after
- // each occurrence.
- if (++timerCount >= 2) {
- // This will hopefully run last, so stop the active scheduler.
- CActiveScheduler::Stop();
- }
- }
- void zeroTimerSlot()
- {
- if (++zeroTimerCount >= 2) {
- zeroTimer->stop();
- }
- }
- void notifierSlot()
- {
- if (++notifierCount >= 2) {
- char dummy;
- ::read(fd, &dummy, 1);
- }
- }
-
-private:
- int fd;
- int timerCount;
- QTimer *zeroTimer;
- int zeroTimerCount;
- int notifierCount;
-};
-#endif
-
-void tst_QEventLoop::onlySymbianActiveScheduler() {
-#ifndef Q_OS_SYMBIAN
- QSKIP("This is a Symbian-only test.", SkipAll);
-#else
- // In here we try to use timers and sockets exclusively using the Symbian
- // active scheduler and no processEvents().
- // This test should therefore be run first, so that we can verify that
- // the first occurrence of processEvents does not do any initialization that
- // we depend on.
-
- // Open up a pipe so we can test socket notifiers.
- int pipeEnds[2];
- if (::pipe(pipeEnds) != 0) {
- QFAIL("Could not open pipe");
- }
- QSocketNotifier notifier(pipeEnds[0], QSocketNotifier::Read);
- QSignalSpy notifierSpy(&notifier, SIGNAL(activated(int)));
- char dummy = 1;
- ::write(pipeEnds[1], &dummy, 1);
-
- QTimer zeroTimer;
- QSignalSpy zeroTimerSpy(&zeroTimer, SIGNAL(timeout()));
- zeroTimer.setInterval(0);
- zeroTimer.start();
-
- QTimer timer;
- QSignalSpy timerSpy(&timer, SIGNAL(timeout()));
- timer.setInterval(2000); // Generous timeout or this test will fail if there is high load
- timer.start();
-
- OnlySymbianActiveScheduler_helper helper(pipeEnds[0], &zeroTimer);
- connect(&notifier, SIGNAL(activated(int)), &helper, SLOT(notifierSlot()));
- connect(&zeroTimer, SIGNAL(timeout()), &helper, SLOT(zeroTimerSlot()));
- connect(&timer, SIGNAL(timeout()), &helper, SLOT(timerSlot()));
-
- CActiveScheduler::Start();
-
- ::close(pipeEnds[1]);
- ::close(pipeEnds[0]);
-
- QCOMPARE(notifierSpy.count(), 2);
- QCOMPARE(zeroTimerSpy.count(), 2);
- QCOMPARE(timerSpy.count(), 2);
-#endif
-}
-
-void tst_QEventLoop::processEvents()
-{
- QSignalSpy spy1(QAbstractEventDispatcher::instance(), SIGNAL(aboutToBlock()));
- QSignalSpy spy2(QAbstractEventDispatcher::instance(), SIGNAL(awake()));
-
- QEventLoop eventLoop;
-
- QCoreApplication::postEvent(&eventLoop, new QEvent(QEvent::User));
-
- // process posted events, QEventLoop::processEvents() should return
- // true
- QVERIFY(eventLoop.processEvents());
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 1);
-
- // allow any session manager to complete its handshake, so that
- // there are no pending events left.
- while (eventLoop.processEvents())
- ;
-
- // On mac we get application started events at this point,
- // so process events one more time just to be sure.
- eventLoop.processEvents();
-
- // no events to process, QEventLoop::processEvents() should return
- // false
- spy1.clear();
- spy2.clear();
- QVERIFY(!eventLoop.processEvents());
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 1);
-
- // make sure the test doesn't block forever
- int timerId = startTimer(100);
-
- // wait for more events to process, QEventLoop::processEvents()
- // should return true
- spy1.clear();
- spy2.clear();
- QVERIFY(eventLoop.processEvents(QEventLoop::WaitForMoreEvents));
-
- // Verify that the eventloop has blocked and woken up. Some eventloops
- // may block and wake up multiple times.
- QVERIFY(spy1.count() > 0);
- QVERIFY(spy2.count() > 0);
- // We should get one awake for each aboutToBlock, plus one awake when
- // processEvents is entered.
- QVERIFY(spy2.count() >= spy1.count());
-
- killTimer(timerId);
-}
-
-#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
-// Symbian needs bit longer timeout for emulator, as emulator startup causes additional delay
-# define EXEC_TIMEOUT 1000
-#else
-# define EXEC_TIMEOUT 100
-#endif
-
-
-void tst_QEventLoop::exec()
-{
- {
- QEventLoop eventLoop;
- EventLoopExiter exiter(&eventLoop);
- int returnCode;
-
- QTimer::singleShot(EXEC_TIMEOUT, &exiter, SLOT(exit()));
- returnCode = eventLoop.exec();
- QCOMPARE(returnCode, 0);
-
- QTimer::singleShot(EXEC_TIMEOUT, &exiter, SLOT(exit1()));
- returnCode = eventLoop.exec();
- QCOMPARE(returnCode, 1);
-
- QTimer::singleShot(EXEC_TIMEOUT, &exiter, SLOT(exit2()));
- returnCode = eventLoop.exec();
- QCOMPARE(returnCode, 2);
- }
-
- {
- // calling QEventLoop::exec() after a thread loop has exit()ed should return immediately
- // Note: this behaviour differs from QCoreApplication and QEventLoop
- // see tst_QCoreApplication::eventLoopExecAfterExit, tst_QEventLoop::reexec
- MultipleExecThread thread;
-
- // start thread and wait for checkpoint
- thread.mutex.lock();
- thread.start();
- thread.cond.wait(&thread.mutex);
-
- // make sure the eventloop runs
- QSignalSpy spy(QAbstractEventDispatcher::instance(&thread), SIGNAL(awake()));
- thread.cond.wakeOne();
- thread.cond.wait(&thread.mutex);
- QVERIFY(spy.count() > 0);
- int v = thread.result1;
- QCOMPARE(v, 0);
-
- // exec should return immediately
- spy.clear();
- thread.cond.wakeOne();
- thread.mutex.unlock();
- thread.wait();
- QCOMPARE(spy.count(), 0);
- v = thread.result2;
- QCOMPARE(v, -1);
- }
-
- {
- // a single instance of QEventLoop should not be allowed to recurse into exec()
- QEventLoop eventLoop;
- EventLoopExecutor executor(&eventLoop);
-
- QTimer::singleShot(EXEC_TIMEOUT, &executor, SLOT(exec()));
- int returnCode = eventLoop.exec();
- QCOMPARE(returnCode, 0);
- QCOMPARE(executor.returnCode, -1);
- }
-}
-
-void tst_QEventLoop::throwInExec()
-{
-#if defined(QT_NO_EXCEPTIONS) || defined(NO_EVENTLOOP_EXCEPTIONS)
- QSKIP("Exceptions are disabled", SkipAll);
-#elif defined(Q_OS_WINCE_WM) || defined(Q_OS_SYMBIAN)
- // Windows Mobile cannot handle cross library exceptions
- // qobject.cpp will try to rethrow the exception after handling
- // which causes gwes.exe to crash
-
- // Symbian doesn't propagate exceptions from eventloop, but converts them to
- // CActiveScheduler errors instead -> this test will hang.
- QSKIP("This platform doesn't support propagating exceptions through the event loop", SkipAll);
-#elif defined(Q_OS_LINUX)
- // C++ exceptions can't be passed through glib callbacks. Skip the test if
- // we're using the glib event loop.
- QByteArray dispatcher = QAbstractEventDispatcher::instance()->metaObject()->className();
- if (dispatcher.contains("Glib")) {
- QSKIP(
- qPrintable(QString(
- "Throwing exceptions in exec() won't work if %1 event dispatcher is used.\n"
- "Try running with QT_NO_GLIB=1 in environment."
- ).arg(QString::fromLatin1(dispatcher))),
- SkipAll
- );
- }
-#endif
-
- {
- // QEventLoop::exec() is exception safe
- QEventLoop eventLoop;
- int caughtExceptions = 0;
-
- try {
- ExceptionThrower exceptionThrower;
- QTimer::singleShot(EXEC_TIMEOUT, &exceptionThrower, SLOT(throwException()));
- (void) eventLoop.exec();
- } catch (...) {
- ++caughtExceptions;
- }
- try {
- ExceptionThrower exceptionThrower;
- QTimer::singleShot(EXEC_TIMEOUT, &exceptionThrower, SLOT(throwException()));
- (void) eventLoop.exec();
- } catch (...) {
- ++caughtExceptions;
- }
- QCOMPARE(caughtExceptions, 2);
- }
-}
-
-void tst_QEventLoop::reexec()
-{
- QEventLoop loop;
-
- // exec once
- QMetaObject::invokeMethod(&loop, "quit", Qt::QueuedConnection);
- QCOMPARE(loop.exec(), 0);
-
- // and again
- QMetaObject::invokeMethod(&loop, "quit", Qt::QueuedConnection);
- QCOMPARE(loop.exec(), 0);
-}
-
-void tst_QEventLoop::exit()
-{ DEPENDS_ON(exec()); }
-
-void tst_QEventLoop::execAfterExit()
-{
- QEventLoop loop;
- EventLoopExiter obj(&loop);
-
- QMetaObject::invokeMethod(&obj, "exit", Qt::QueuedConnection);
- loop.exit(1);
- QCOMPARE(loop.exec(), 0);
-}
-
-void tst_QEventLoop::wakeUp()
-{
- EventLoopThread thread;
- QEventLoop eventLoop;
- connect(&thread, SIGNAL(checkPoint()), &eventLoop, SLOT(quit()));
- connect(&thread, SIGNAL(finished()), &eventLoop, SLOT(quit()));
-
- thread.start();
- (void) eventLoop.exec();
-
- QSignalSpy spy(QAbstractEventDispatcher::instance(&thread), SIGNAL(awake()));
- thread.eventLoop->wakeUp();
-
- // give the thread time to wake up
- QTimer::singleShot(1000, &eventLoop, SLOT(quit()));
- (void) eventLoop.exec();
-
- QVERIFY(spy.count() > 0);
-
- thread.quit();
- (void) eventLoop.exec();
-}
-
-void tst_QEventLoop::quit()
-{
- QEventLoop eventLoop;
- int returnCode;
-
- QTimer::singleShot(100, &eventLoop, SLOT(quit()));
- returnCode = eventLoop.exec();
- QCOMPARE(returnCode, 0);
-}
-
-
-void tst_QEventLoop::nestedLoops()
-{
- QCoreApplication::postEvent(this, new StartStopEvent(QEvent::User));
- QCoreApplication::postEvent(this, new StartStopEvent(QEvent::User));
- QCoreApplication::postEvent(this, new StartStopEvent(QEvent::User));
-
- // without the fix, this will *wedge* and never return
- QTest::qWait(1000);
-}
-
-void tst_QEventLoop::customEvent(QEvent *e)
-{
- if (e->type() == QEvent::User) {
- QEventLoop loop;
- QCoreApplication::postEvent(this, new StartStopEvent(int(QEvent::User) + 1, &loop));
- loop.exec();
- } else {
- static_cast<StartStopEvent *>(e)->el->exit();
- }
-}
-
-class SocketEventsTester: public QObject
-{
- Q_OBJECT
-public:
- SocketEventsTester()
- {
- socket = 0;
- server = 0;
- dataArrived = false;
- testResult = false;
- }
- ~SocketEventsTester()
- {
- delete socket;
- delete server;
- }
- bool init()
- {
- bool ret = false;
- server = new QTcpServer();
- socket = new QTcpSocket();
- connect(server, SIGNAL(newConnection()), this, SLOT(sendHello()));
- connect(socket, SIGNAL(readyRead()), this, SLOT(sendAck()), Qt::DirectConnection);
- if((ret = server->listen(QHostAddress::LocalHost, 0))) {
- socket->connectToHost(server->serverAddress(), server->serverPort());
- socket->waitForConnected();
- }
- return ret;
- }
-
- QTcpSocket *socket;
- QTcpServer *server;
- bool dataArrived;
- bool testResult;
-public slots:
- void sendAck()
- {
- dataArrived = true;
- }
- void sendHello()
- {
- char data[10] ="HELLO";
- qint64 size = sizeof(data);
-
- QTcpSocket *serverSocket = server->nextPendingConnection();
- serverSocket->write(data, size);
- serverSocket->flush();
- QTest::qSleep(200); //allow the TCP/IP stack time to loopback the data, so our socket is ready to read
- QCoreApplication::processEvents(QEventLoop::ExcludeSocketNotifiers);
- testResult = dataArrived;
- QCoreApplication::processEvents(); //check the deferred event is processed
- serverSocket->close();
- QThread::currentThread()->exit(0);
- }
-};
-
-class SocketTestThread : public QThread
-{
- Q_OBJECT
-public:
- SocketTestThread():QThread(0),testResult(false){};
- void run()
- {
- SocketEventsTester *tester = new SocketEventsTester();
- if (tester->init())
- exec();
- testResult = tester->testResult;
- dataArrived = tester->dataArrived;
- delete tester;
- }
- bool testResult;
- bool dataArrived;
-};
-
-void tst_QEventLoop::processEventsExcludeSocket()
-{
- SocketTestThread thread;
- thread.start();
- QVERIFY(thread.wait());
- QVERIFY(!thread.testResult);
- QVERIFY(thread.dataArrived);
-}
-
-class TimerReceiver : public QObject
-{
-public:
- int gotTimerEvent;
-
- TimerReceiver()
- : QObject(), gotTimerEvent(-1)
- { }
-
- void timerEvent(QTimerEvent *event)
- {
- gotTimerEvent = event->timerId();
- }
-};
-
-void tst_QEventLoop::processEventsExcludeTimers()
-{
- TimerReceiver timerReceiver;
- int timerId = timerReceiver.startTimer(0);
-
- QEventLoop eventLoop;
-
- // normal process events will send timers
- eventLoop.processEvents();
- QCOMPARE(timerReceiver.gotTimerEvent, timerId);
- timerReceiver.gotTimerEvent = -1;
-
- // normal process events will send timers
- eventLoop.processEvents(QEventLoop::X11ExcludeTimers);
-#if !defined(Q_OS_UNIX) || defined(Q_OS_SYMBIAN)
- QEXPECT_FAIL("", "X11ExcludeTimers only works on UN*X", Continue);
-#endif
- QCOMPARE(timerReceiver.gotTimerEvent, -1);
- timerReceiver.gotTimerEvent = -1;
-
- // resume timer processing
- eventLoop.processEvents();
- QCOMPARE(timerReceiver.gotTimerEvent, timerId);
- timerReceiver.gotTimerEvent = -1;
-}
-
-#ifdef Q_OS_SYMBIAN
-class DummyActiveObject : public CActive
-{
-public:
- DummyActiveObject(int levels);
- ~DummyActiveObject();
-
- void Start();
-
-protected:
- void DoCancel();
- void RunL();
-
-public:
- bool succeeded;
-
-private:
- RTimer m_rTimer;
- int remainingLevels;
-};
-
-class ActiveSchedulerLoop : public QObject
-{
-public:
- ActiveSchedulerLoop(int levels) : succeeded(false), timerId(-1), remainingLevels(levels) {}
- ~ActiveSchedulerLoop() {}
-
- void timerEvent(QTimerEvent *e);
-
-public:
- bool succeeded;
- int timerId;
- int remainingLevels;
-};
-
-DummyActiveObject::DummyActiveObject(int levels)
- : CActive(CActive::EPriorityStandard),
- succeeded(false),
- remainingLevels(levels)
-{
- m_rTimer.CreateLocal();
-}
-
-DummyActiveObject::~DummyActiveObject()
-{
- Cancel();
- m_rTimer.Close();
-}
-
-void DummyActiveObject::DoCancel()
-{
- m_rTimer.Cancel();
-}
-
-void DummyActiveObject::RunL()
-{
- if (remainingLevels - 1 <= 0) {
- ActiveSchedulerLoop loop(remainingLevels - 1);
- loop.timerId = loop.startTimer(0);
- QCoreApplication::processEvents();
-
- succeeded = loop.succeeded;
- } else {
- succeeded = true;
- }
- CActiveScheduler::Stop();
-}
-
-void DummyActiveObject::Start()
-{
- m_rTimer.After(iStatus, 100000); // 100 ms
- SetActive();
-}
-
-void ActiveSchedulerLoop::timerEvent(QTimerEvent *e)
-{
- Q_UNUSED(e);
- DummyActiveObject *dummy = new(ELeave) DummyActiveObject(remainingLevels);
- CActiveScheduler::Add(dummy);
-
- dummy->Start();
-
- CActiveScheduler::Start();
-
- succeeded = dummy->succeeded;
-
- delete dummy;
-
- killTimer(timerId);
-}
-
-// We cannot trap panics when the test case fails, so run it in a different thread instead.
-class ActiveSchedulerThread : public QThread
-{
-public:
- ActiveSchedulerThread(QEventLoop::ProcessEventsFlag flags);
- ~ActiveSchedulerThread();
-
-protected:
- void run();
-
-public:
- volatile bool succeeded;
-
-private:
- QEventLoop::ProcessEventsFlag m_flags;
-};
-
-ActiveSchedulerThread::ActiveSchedulerThread(QEventLoop::ProcessEventsFlag flags)
- : succeeded(false),
- m_flags(flags)
-{
-}
-
-ActiveSchedulerThread::~ActiveSchedulerThread()
-{
-}
-
-void ActiveSchedulerThread::run()
-{
- ActiveSchedulerLoop loop(2);
- loop.timerId = loop.startTimer(0);
- // It may panic in here if the active scheduler and the Qt loop don't go together.
- QCoreApplication::processEvents(m_flags);
-
- succeeded = loop.succeeded;
-}
-#endif // ifdef Q_OS_SYMBIAN
-
-void tst_QEventLoop::symbianNestedActiveSchedulerLoop_data()
-{
- QTest::addColumn<int>("processEventFlags");
-
- QTest::newRow("AllEvents") << (int)QEventLoop::AllEvents;
- QTest::newRow("WaitForMoreEvents") << (int)QEventLoop::WaitForMoreEvents;
-}
-
-/*
- Before you start fiddling with this test, you should have a good understanding of how
- Symbian active objects work. What the test does is to try to screw up the semaphore count
- in the active scheduler to cause stray signals, by running the Qt event loop and the
- active scheduler inside each other. Naturally, its attempts to do this should be futile!
-*/
-void tst_QEventLoop::symbianNestedActiveSchedulerLoop()
-{
-#ifndef Q_OS_SYMBIAN
- QSKIP("This is a Symbian only test.", SkipAll);
-#else
- QFETCH(int, processEventFlags);
-
- ActiveSchedulerThread thread((QEventLoop::ProcessEventsFlag)processEventFlags);
- thread.start();
- thread.wait(2000);
-
- QVERIFY(thread.succeeded);
-#endif
-}
-
-Q_DECLARE_METATYPE(QThread*)
-
-namespace DeliverInDefinedOrder_QTBUG19637 {
- enum { NbThread = 3, NbObject = 500, NbEventQueue = 5, NbEvent = 50 };
-
- struct CustomEvent : public QEvent {
- CustomEvent(int q, int v) : QEvent(Type(User + q)), value(v) {}
- int value;
- };
-
- struct Object : public QObject {
- Q_OBJECT
- public:
- Object() : count(0) {
- for (int i = 0; i < NbEventQueue; i++)
- lastReceived[i] = -1;
- }
- int lastReceived[NbEventQueue];
- int count;
- virtual void customEvent(QEvent* e) {
- QVERIFY(e->type() >= QEvent::User);
- QVERIFY(e->type() < QEvent::User + 5);
- uint idx = e->type() - QEvent::User;
- int value = static_cast<CustomEvent *>(e)->value;
- QVERIFY(lastReceived[idx] < value);
- lastReceived[idx] = value;
- count++;
- }
-
- public slots:
- void moveToThread(QThread *t) {
- QObject::moveToThread(t);
- }
- };
-
-}
-
-void tst_QEventLoop::deliverInDefinedOrder_QTBUG19637()
-{
- using namespace DeliverInDefinedOrder_QTBUG19637;
- qMetaTypeId<QThread*>();
- QThread threads[NbThread];
- Object objects[NbObject];
- for (int t = 0; t < NbThread; t++) {
- threads[t].start();
- }
-
- int event = 0;
-
- for (int o = 0; o < NbObject; o++) {
- objects[o].moveToThread(&threads[o % NbThread]);
- for (int e = 0; e < NbEvent; e++) {
- int q = e % NbEventQueue;
- QCoreApplication::postEvent(&objects[o], new CustomEvent(q, ++event) , q);
- if (e % 7)
- QMetaObject::invokeMethod(&objects[o], "moveToThread", Qt::QueuedConnection, Q_ARG(QThread*, &threads[(e+o)%NbThread]));
- }
- }
-
- QTest::qWait(30);
- for (int o = 0; o < NbObject; o++) {
- QTRY_COMPARE(objects[o].count, int(NbEvent));
- }
-
- for (int t = 0; t < NbThread; t++) {
- threads[t].quit();
- threads[t].wait();
- }
-
-}
-
-
-QTEST_MAIN(tst_QEventLoop)
-#include "tst_qeventloop.moc"
diff --git a/tests/auto/qfile/largefile/largefile.pro b/tests/auto/qfile/largefile/largefile.pro
deleted file mode 100644
index 6407cb6b3e..0000000000
--- a/tests/auto/qfile/largefile/largefile.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-
-QT = core
-SOURCES += tst_largefile.cpp
-
-wince*: SOURCES += $$QT_SOURCE_TREE/src/corelib/kernel/qfunctions_wince.cpp
-
-CONFIG += parallel_test
diff --git a/tests/auto/qfile/test/test.pro b/tests/auto/qfile/test/test.pro
deleted file mode 100644
index f4ec12f874..0000000000
--- a/tests/auto/qfile/test/test.pro
+++ /dev/null
@@ -1,44 +0,0 @@
-load(qttest_p4)
-SOURCES += ../tst_qfile.cpp
-
-wince*|symbian {
- QT = core gui
- files.files += ..\\dosfile.txt ..\\noendofline.txt ..\\testfile.txt \
- ..\\testlog.txt ..\\two.dots.file ..\\tst_qfile.cpp \
- ..\\Makefile ..\\forCopying.txt ..\\forRenaming.txt
- files.path = .
- resour.files += ..\\resources\\file1.ext1
- resour.path = resources
-
- DEPLOYMENT += files resour
-}
-
-wince* {
- SOURCES += $$QT_SOURCE_TREE/src/corelib/kernel/qfunctions_wince.cpp # needed for QT_OPEN
- DEFINES += SRCDIR=\\\"\\\"
-} else:symbian {
- # do not define SRCDIR at all
- TARGET.EPOCHEAPSIZE = 0x100000 0x3000000
-} else {
- QT = core network
- DEFINES += SRCDIR=\\\"$$PWD/../\\\"
-}
-
-RESOURCES += ../qfile.qrc ../rename-fallback.qrc ../copy-fallback.qrc
-
-TARGET = ../tst_qfile
-
-win32 {
- CONFIG(debug, debug|release) {
- TARGET = ../../debug/tst_qfile
- } else {
- TARGET = ../../release/tst_qfile
- }
- LIBS+=-lole32 -luuid
-}
-
-symbian {
- LIBS+=-lefsrv
-}
-
-mac*:CONFIG+=insignificant_test
diff --git a/tests/auto/qfile/tst_qfile.cpp b/tests/auto/qfile/tst_qfile.cpp
deleted file mode 100644
index aafe79484e..0000000000
--- a/tests/auto/qfile/tst_qfile.cpp
+++ /dev/null
@@ -1,3406 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <qplatformdefs.h>
-
-#include <QAbstractFileEngine>
-#include <QFSFileEngine>
-#include <QCoreApplication>
-#include <QDebug>
-#include <QDir>
-#include <QFile>
-#include <QFileInfo>
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
-#include <QHostInfo>
-#endif
-#include <QProcess>
-#ifndef Q_OS_WIN
-# include <sys/types.h>
-# include <unistd.h>
-#endif
-#ifdef Q_OS_MAC
-# include <sys/mount.h>
-#elif defined(Q_OS_LINUX)
-# include <sys/vfs.h>
-#elif defined(Q_OS_FREEBSD)
-# include <sys/param.h>
-# include <sys/mount.h>
-#elif defined(Q_OS_IRIX)
-# include <sys/statfs.h>
-#elif defined(Q_OS_WINCE)
-# include <qplatformdefs.h>
-# include <private/qfsfileengine_p.h>
-#elif defined(Q_OS_SYMBIAN)
-# include <f32file.h>
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include "../network-settings.h"
-
-#if defined(Q_OS_SYMBIAN)
-# define SRCDIR ""
-#endif
-
-#ifndef STDIN_FILENO
-#define STDIN_FILENO 0
-#endif
-
-#ifndef STDOUT_FILENO
-#define STDOUT_FILENO 1
-#endif
-
-#ifndef STDERR_FILENO
-#define STDERR_FILENO 2
-#endif
-
-#ifndef QT_OPEN_BINARY
-#define QT_OPEN_BINARY 0
-#endif
-
-Q_DECLARE_METATYPE(QFile::FileError)
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QFile : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QFile();
- virtual ~tst_QFile();
-
-
-public slots:
- void init();
- void cleanup();
-private slots:
- void initTestCase();
- void cleanupTestCase();
- void exists();
- void open_data();
- void open();
- void openUnbuffered();
- void size_data();
- void size();
- void sizeNoExist();
- void seek();
- void setSize();
- void setSizeSeek();
- void atEnd();
- void readLine();
- void readLine2();
- void readLineNullInLine();
- void readAll_data();
- void readAll();
- void readAllBuffer();
- void readAllStdin();
- void readLineStdin();
- void readLineStdin_lineByLine();
- void text();
- void missingEndOfLine();
- void readBlock();
- void getch();
- void ungetChar();
- void createFile();
- void append();
- void permissions_data();
- void permissions();
- void setPermissions();
- void copy();
- void copyAfterFail();
- void copyRemovesTemporaryFile() const;
- void copyShouldntOverwrite();
- void copyFallback();
- void link();
- void linkToDir();
- void absolutePathLinkToRelativePath();
- void readBrokenLink();
- void readTextFile_data();
- void readTextFile();
- void readTextFile2();
- void writeTextFile_data();
- void writeTextFile();
- /* void largeFileSupport(); */
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- void largeUncFileSupport();
-#endif
- void tailFile();
- void flush();
- void bufferedRead();
- void isSequential();
- void encodeName();
- void truncate();
- void seekToPos();
- void seekAfterEndOfFile();
- void FILEReadWrite();
- void i18nFileName_data();
- void i18nFileName();
- void longFileName_data();
- void longFileName();
- void fileEngineHandler();
- void useQFileInAFileHandler();
- void getCharFF();
- void remove_and_exists();
- void removeOpenFile();
- void fullDisk();
- void writeLargeDataBlock_data();
- void writeLargeDataBlock();
- void readFromWriteOnlyFile();
- void writeToReadOnlyFile();
- void virtualFile();
- void textFile();
- void rename_data();
- void rename();
- void renameWithAtEndSpecialFile() const;
- void renameFallback();
- void renameMultiple();
- void appendAndRead();
- void miscWithUncPathAsCurrentDir();
- void standarderror();
- void handle();
- void nativeHandleLeaks();
-
- void readEof_data();
- void readEof();
-
- void map_data();
- void map();
- void mapResource_data();
- void mapResource();
- void mapOpenMode_data();
- void mapOpenMode();
-
- void openStandardStreams();
-
- void resize_data();
- void resize();
-
- void objectConstructors();
-#ifdef Q_OS_SYMBIAN
- void platformSecurity_data();
- void platformSecurity();
-#endif
- void caseSensitivity();
-
- void autocloseHandle();
-
- // --- Task related tests below this line
- void task167217();
-
- void openDirectory();
- void writeNothing();
-
-public:
-// disabled this test for the moment... it hangs
- void invalidFile_data();
- void invalidFile();
-
-private:
- enum FileType {
- OpenQFile,
- OpenFd,
- OpenStream,
-#ifdef Q_OS_SYMBIAN
- OpenRFile,
-#endif
- NumberOfFileTypes
- };
-
- void openStandardStreamsFileDescriptors();
- void openStandardStreamsBufferedStreams();
-
- bool openFd(QFile &file, QIODevice::OpenMode mode, QFile::FileHandleFlags handleFlags)
- {
- int fdMode = QT_OPEN_LARGEFILE | QT_OPEN_BINARY;
-
- // File will be truncated if in Write mode.
- if (mode & QIODevice::WriteOnly)
- fdMode |= QT_OPEN_WRONLY | QT_OPEN_TRUNC;
- if (mode & QIODevice::ReadOnly)
- fdMode |= QT_OPEN_RDONLY;
-
- fd_ = QT_OPEN(qPrintable(file.fileName()), fdMode);
-
- return (-1 != fd_) && file.open(fd_, mode, handleFlags);
- }
-
- bool openStream(QFile &file, QIODevice::OpenMode mode, QFile::FileHandleFlags handleFlags)
- {
- char const *streamMode = "";
-
- // File will be truncated if in Write mode.
- if (mode & QIODevice::WriteOnly)
- streamMode = "wb+";
- else if (mode & QIODevice::ReadOnly)
- streamMode = "rb";
-
- stream_ = QT_FOPEN(qPrintable(file.fileName()), streamMode);
-
- return stream_ && file.open(stream_, mode, handleFlags);
- }
-
-#ifdef Q_OS_SYMBIAN
- bool openRFile(QFile &file, QIODevice::OpenMode mode, QFile::FileHandleFlags handleFlags)
- {
- //connect file server first time
- if (!rfs_.Handle() && rfs_.Connect() != KErrNone)
- return false;
- //symbian does not like ./ in filenames, so open by absolute path
- QString fileName(QDir::toNativeSeparators(QFileInfo(file).absoluteFilePath()));
- TPtrC fn(fileName.utf16(), fileName.length());
- TInt smode = 0;
- if (mode & QIODevice::WriteOnly)
- smode |= EFileWrite;
- if (mode & QIODevice::ReadOnly)
- smode |= EFileRead;
- TInt r;
- if ((mode & QIODevice::Truncate) || (!(mode & QIODevice::ReadOnly) && !(mode & QIODevice::Append))) {
- r = rfile_.Replace(rfs_, fn, smode);
- } else {
- r = rfile_.Open(rfs_, fn, smode);
- if (r == KErrNotFound && (mode & QIODevice::WriteOnly)) {
- r = rfile_.Create(rfs_, fn, smode);
- }
- }
- return (r == KErrNone) && file.open(rfile_, mode, handleFlags);
- }
-#endif
-
- bool openFile(QFile &file, QIODevice::OpenMode mode, FileType type = OpenQFile, QFile::FileHandleFlags handleFlags = QFile::DontCloseHandle)
- {
- if (mode & QIODevice::WriteOnly && !file.exists())
- {
- // Make sure the file exists
- QFile createFile(file.fileName());
- if (!createFile.open(QIODevice::ReadWrite))
- return false;
- }
-
- // Note: openFd and openStream will truncate the file if write mode.
- switch (type)
- {
- case OpenQFile:
- return file.open(mode);
-
- case OpenFd:
- return openFd(file, mode, handleFlags);
-
- case OpenStream:
- return openStream(file, mode, handleFlags);
-#ifdef Q_OS_SYMBIAN
- case OpenRFile:
- return openRFile(file, mode, handleFlags);
-#endif
- case NumberOfFileTypes:
- break;
- }
-
- return false;
- }
-
- void closeFile(QFile &file)
- {
- file.close();
-
- if (-1 != fd_)
- QT_CLOSE(fd_);
- if (stream_)
- ::fclose(stream_);
-#ifdef Q_OS_SYMBIAN
- if (rfile_.SubSessionHandle())
- rfile_.Close();
-#endif
-
- fd_ = -1;
- stream_ = 0;
- }
-
- int fd_;
- FILE *stream_;
-#ifdef Q_OS_SYMBIAN
- RFs rfs_;
- RFile rfile_;
-#endif
-};
-
-tst_QFile::tst_QFile()
-{
-}
-
-tst_QFile::~tst_QFile()
-{
-
-}
-
-void tst_QFile::init()
-{
-// TODO: Add initialization code here.
-// This will be executed immediately before each test is run.
- fd_ = -1;
- stream_ = 0;
-}
-
-void tst_QFile::cleanup()
-{
-// TODO: Add cleanup code here.
-// This will be executed immediately after each test is run.
-
- // for copyFallback()
- if (QFile::exists("file-copy-destination.txt")) {
- QFile::setPermissions("file-copy-destination.txt",
- QFile::ReadOwner | QFile::WriteOwner);
- QFile::remove("file-copy-destination.txt");
- }
-
- // for renameFallback()
- QFile::remove("file-rename-destination.txt");
-
- // for copyAfterFail()
- QFile::remove("file-to-be-copied.txt");
- QFile::remove("existing-file.txt");
- QFile::remove("copied-file-1.txt");
- QFile::remove("copied-file-2.txt");
-
- // for renameMultiple()
- QFile::remove("file-to-be-renamed.txt");
- QFile::remove("existing-file.txt");
- QFile::remove("file-renamed-once.txt");
- QFile::remove("file-renamed-twice.txt");
-
- if (-1 != fd_)
- QT_CLOSE(fd_);
- if (stream_)
- ::fclose(stream_);
-}
-
-void tst_QFile::initTestCase()
-{
- QFile::remove("noreadfile");
-
- // create a file and make it read-only
- QFile file("readonlyfile");
- file.open(QFile::WriteOnly);
- file.write("a", 1);
- file.close();
- file.setPermissions(QFile::ReadOwner);
-
- // create another file and make it not readable
- file.setFileName("noreadfile");
- file.open(QFile::WriteOnly);
- file.write("b", 1);
- file.close();
- file.setPermissions(0);
-}
-
-void tst_QFile::cleanupTestCase()
-{
- // clean up the files we created
- QFile::remove("readonlyfile");
- QFile::remove("noreadfile");
- QFile::remove("myLink.lnk");
- QFile::remove("appendme.txt");
- QFile::remove("createme.txt");
- QFile::remove("file.txt");
- QFile::remove("genfile.txt");
- QFile::remove("seekToPos.txt");
- QFile::remove("setsizeseek.txt");
- QFile::remove("stdfile.txt");
- QFile::remove("textfile.txt");
- QFile::remove("truncate.txt");
- QFile::remove("winfile.txt");
- QFile::remove("writeonlyfile");
- QFile::remove("largeblockfile.txt");
- QFile::remove("tst_qfile_copy.cpp");
- QFile::remove("nullinline.txt");
- QFile::remove("myLink2.lnk");
- QFile::remove("resources");
- QFile::remove("qfile_map_testfile");
- QFile::remove("readAllBuffer.txt");
- QFile::remove("qt_file.tmp");
- QFile::remove("File.txt");
-}
-
-//------------------------------------------
-// The 'testfile' is currently just a
-// testfile. The path of this file, the
-// attributes and the contents itself
-// will be changed as far as we have a
-// proper way to handle files in the
-// testing environment.
-//------------------------------------------
-
-void tst_QFile::exists()
-{
- QFile f( SRCDIR "testfile.txt" );
- QCOMPARE( f.exists(), (bool)TRUE );
-
- QFile file("nobodyhassuchafile");
- file.remove();
- QVERIFY(!file.exists());
-
- QFile file2("nobodyhassuchafile");
- QVERIFY(file2.open(QIODevice::WriteOnly));
- file2.close();
-
- QVERIFY(file.exists());
-
- QVERIFY(file.open(QIODevice::WriteOnly));
- file.close();
- QVERIFY(file.exists());
-
- file.remove();
- QVERIFY(!file.exists());
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- QFile unc("//" + QtNetworkSettings::winServerName() + "/testshare/readme.txt");
- QVERIFY(unc.exists());
-#endif
-}
-
-void tst_QFile::open_data()
-{
- QTest::addColumn<QString>("filename");
- QTest::addColumn<int>("mode");
- QTest::addColumn<bool>("ok");
- QTest::addColumn<QFile::FileError>("status");
-
-#ifdef Q_OS_MAC
- static const QString denied("Operation not permitted");
-#else
- static const QString denied("Permission denied");
-#endif
- QTest::newRow( "exist_readOnly" )
- << QString(SRCDIR "testfile.txt") << int(QIODevice::ReadOnly)
- << (bool)TRUE << QFile::NoError;
-
- QTest::newRow( "exist_writeOnly" )
- << QString("readonlyfile")
- << int(QIODevice::WriteOnly)
- << (bool)FALSE
- << QFile::OpenError;
-
- QTest::newRow( "exist_append" )
- << QString("readonlyfile") << int(QIODevice::Append)
- << (bool)FALSE << QFile::OpenError;
-
- QTest::newRow( "nonexist_readOnly" )
- << QString("nonExist.txt") << int(QIODevice::ReadOnly)
- << (bool)FALSE << QFile::OpenError;
-
- QTest::newRow("emptyfile")
- << QString("")
- << int(QIODevice::ReadOnly)
- << (bool)FALSE
- << QFile::OpenError;
-
- QTest::newRow("nullfile") << QString() << int(QIODevice::ReadOnly) << (bool)FALSE
- << QFile::OpenError;
-
- QTest::newRow("two-dots") << QString(SRCDIR "two.dots.file") << int(QIODevice::ReadOnly) << (bool)TRUE
- << QFile::NoError;
-
- QTest::newRow("readonlyfile") << QString("readonlyfile") << int(QIODevice::WriteOnly)
- << (bool)FALSE << QFile::OpenError;
- QTest::newRow("noreadfile") << QString("noreadfile") << int(QIODevice::ReadOnly)
- << (bool)FALSE << QFile::OpenError;
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- QTest::newRow("//./PhysicalDrive0") << QString("//./PhysicalDrive0") << int(QIODevice::ReadOnly)
- << (bool)TRUE << QFile::NoError;
- QTest::newRow("uncFile") << "//" + QtNetworkSettings::winServerName() + "/testshare/test.pri" << int(QIODevice::ReadOnly)
- << true << QFile::NoError;
-#endif
-}
-
-void tst_QFile::open()
-{
- QFETCH( QString, filename );
- QFETCH( int, mode );
-
- QFile f( filename );
-
- QFETCH( bool, ok );
-
-#if defined(Q_OS_SYMBIAN)
- if (qstrcmp(QTest::currentDataTag(), "noreadfile") == 0)
- QSKIP("Symbian does not support non-readable files", SkipSingle);
-#elif defined(Q_OS_UNIX)
- if (::getuid() == 0)
- // root and Chuck Norris don't care for file permissions. Skip.
- QSKIP("Running this test as root doesn't make sense", SkipAll);
-#endif
-
-#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
- QEXPECT_FAIL("noreadfile", "Windows does not currently support non-readable files.", Abort);
-#endif
- if (filename.isEmpty())
- QTest::ignoreMessage(QtWarningMsg, "QFSFileEngine::open: No file name specified");
-
- QCOMPARE(f.open( QIODevice::OpenMode(mode) ), ok);
-
- QTEST( f.error(), "status" );
-}
-
-void tst_QFile::openUnbuffered()
-{
- QFile file(SRCDIR "testfile.txt");
- QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Unbuffered));
- char c = '\0';
- QVERIFY(file.seek(1));
- QCOMPARE(file.pos(), qint64(1));
- QVERIFY(file.getChar(&c));
- QCOMPARE(file.pos(), qint64(2));
- char d = '\0';
- QVERIFY(file.seek(3));
- QCOMPARE(file.pos(), qint64(3));
- QVERIFY(file.getChar(&d));
- QCOMPARE(file.pos(), qint64(4));
- QVERIFY(file.seek(1));
- QCOMPARE(file.pos(), qint64(1));
- char c2 = '\0';
- QVERIFY(file.getChar(&c2));
- QCOMPARE(file.pos(), qint64(2));
- QVERIFY(file.seek(3));
- QCOMPARE(file.pos(), qint64(3));
- char d2 = '\0';
- QVERIFY(file.getChar(&d2));
- QCOMPARE(file.pos(), qint64(4));
- QCOMPARE(c, c2);
- QCOMPARE(d, d2);
- QCOMPARE(c, '-');
- QCOMPARE(d, '-');
-}
-
-void tst_QFile::size_data()
-{
- QTest::addColumn<QString>("filename");
- QTest::addColumn<qint64>("size");
-
- QTest::newRow( "exist01" ) << QString(SRCDIR "testfile.txt") << (qint64)245;
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- // Only test UNC on Windows./
- QTest::newRow("unc") << "//" + QString(QtNetworkSettings::winServerName() + "/testshare/test.pri") << (qint64)34;
-#endif
-}
-
-void tst_QFile::size()
-{
- QFETCH( QString, filename );
- QFETCH( qint64, size );
-
-#ifdef Q_WS_WINCE
- filename = QFileInfo(filename).absoluteFilePath();
-#endif
-
- {
- QFile f( filename );
- QCOMPARE( f.size(), size );
-
- QVERIFY( f.open(QIODevice::ReadOnly) );
- QCOMPARE( f.size(), size );
- }
-
- {
- QFile f;
- FILE* stream = QT_FOPEN(filename.toLocal8Bit().constData(), "rb");
- QVERIFY( stream );
- QVERIFY( f.open(stream, QIODevice::ReadOnly) );
- QCOMPARE( f.size(), size );
-
- f.close();
- fclose(stream);
- }
-
- {
-#ifdef Q_WS_WINCE
- QSKIP("Currently low level file I/O not well supported on Windows CE", SkipSingle);
-#endif
- QFile f;
-
- int fd = QT_OPEN(filename.toLocal8Bit().constData(), QT_OPEN_RDONLY);
-
- QVERIFY( fd != -1 );
- QVERIFY( f.open(fd, QIODevice::ReadOnly) );
- QCOMPARE( f.size(), size );
-
- f.close();
- QT_CLOSE(fd);
- }
-}
-
-void tst_QFile::sizeNoExist()
-{
- QFile file("nonexist01");
- QVERIFY( !file.exists() );
- QCOMPARE( file.size(), (qint64)0 );
- QVERIFY( !file.open(QIODevice::ReadOnly) );
-}
-
-void tst_QFile::seek()
-{
- QFile::remove("newfile.txt");
- QFile file("newfile.txt");
- file.open(QIODevice::WriteOnly);
- QCOMPARE(file.size(), qint64(0));
- QCOMPARE(file.pos(), qint64(0));
- QVERIFY(file.seek(10));
- QCOMPARE(file.pos(), qint64(10));
- QCOMPARE(file.size(), qint64(0));
- file.close();
- QFile::remove("newfile.txt");
-}
-
-void tst_QFile::setSize()
-{
- DEPENDS_ON( "size" );
-
- if ( QFile::exists( "createme.txt" ) )
- QFile::remove( "createme.txt" );
- QVERIFY( !QFile::exists( "createme.txt" ) );
-
- QFile f("createme.txt");
- QVERIFY(f.open(QIODevice::Truncate | QIODevice::ReadWrite));
- f.putChar('a');
-
- f.seek(0);
- char c = '\0';
- f.getChar(&c);
- QCOMPARE(c, 'a');
-
- QCOMPARE(f.size(), (qlonglong)1);
- bool ok = f.resize(99);
- QVERIFY(ok);
- QCOMPARE(f.size(), (qlonglong)99);
-
- f.seek(0);
- c = '\0';
- f.getChar(&c);
- QCOMPARE(c, 'a');
-
- QVERIFY(f.resize(1));
- QCOMPARE(f.size(), (qlonglong)1);
-
- f.seek(0);
- c = '\0';
- f.getChar(&c);
- QCOMPARE(c, 'a');
-
- f.close();
-
- QCOMPARE(f.size(), (qlonglong)1);
- QVERIFY(f.resize(100));
- QCOMPARE(f.size(), (qlonglong)100);
- QVERIFY(f.resize(50));
- QCOMPARE(f.size(), (qlonglong)50);
-}
-
-void tst_QFile::setSizeSeek()
-{
- QFile::remove("setsizeseek.txt");
- QFile f("setsizeseek.txt");
- QVERIFY(f.open(QFile::WriteOnly));
- f.write("ABCD");
-
- QCOMPARE(f.pos(), qint64(4));
- f.resize(2);
- QCOMPARE(f.pos(), qint64(2));
- f.resize(4);
- QCOMPARE(f.pos(), qint64(2));
- f.resize(0);
- QCOMPARE(f.pos(), qint64(0));
- f.resize(4);
- QCOMPARE(f.pos(), qint64(0));
-
- f.seek(3);
- QCOMPARE(f.pos(), qint64(3));
- f.resize(2);
- QCOMPARE(f.pos(), qint64(2));
-}
-
-void tst_QFile::atEnd()
-{
- QFile f( SRCDIR "testfile.txt" );
- QVERIFY(f.open( QIODevice::ReadOnly ));
-
- int size = f.size();
- f.seek( size );
-
- bool end = f.atEnd();
- f.close();
- QCOMPARE( end, (bool)TRUE );
-}
-
-void tst_QFile::readLine()
-{
- QFile f( SRCDIR "testfile.txt" );
- QVERIFY(f.open( QIODevice::ReadOnly ));
-
- int i = 0;
- char p[128];
- int foo;
- while ( (foo=f.readLine( p, 128 )) > 0 ) {
- ++i;
- if ( i == 5 ) {
- QCOMPARE( p[0], 'T' );
- QCOMPARE( p[3], 's' );
- QCOMPARE( p[11], 'i' );
- }
- }
- f.close();
- QCOMPARE( i, 6 );
-}
-
-void tst_QFile::readLine2()
-{
- QFile f( SRCDIR "testfile.txt" );
- f.open( QIODevice::ReadOnly );
-
- char p[128];
- QCOMPARE(f.readLine(p, 60), qlonglong(59));
- QCOMPARE(f.readLine(p, 60), qlonglong(59));
- memset(p, '@', sizeof(p));
- QCOMPARE(f.readLine(p, 60), qlonglong(59));
-
- QCOMPARE(p[57], '-');
- QCOMPARE(p[58], '\n');
- QCOMPARE(p[59], '\0');
- QCOMPARE(p[60], '@');
-}
-
-void tst_QFile::readLineNullInLine()
-{
- QFile::remove("nullinline.txt");
- QFile file("nullinline.txt");
- QVERIFY(file.open(QIODevice::ReadWrite));
- QVERIFY(file.write("linewith\0null\nanotherline\0withnull\n\0\nnull\0", 42) > 0);
- QVERIFY(file.flush());
- file.reset();
-
- QCOMPARE(file.readLine(), QByteArray("linewith\0null\n", 14));
- QCOMPARE(file.readLine(), QByteArray("anotherline\0withnull\n", 21));
- QCOMPARE(file.readLine(), QByteArray("\0\n", 2));
- QCOMPARE(file.readLine(), QByteArray("null\0", 5));
- QCOMPARE(file.readLine(), QByteArray());
-}
-
-void tst_QFile::readAll_data()
-{
- QTest::addColumn<bool>("textMode");
- QTest::addColumn<QString>("fileName");
- QTest::newRow( "TextMode unixfile" ) << true << SRCDIR "testfile.txt";
- QTest::newRow( "BinaryMode unixfile" ) << false << SRCDIR "testfile.txt";
- QTest::newRow( "TextMode dosfile" ) << true << SRCDIR "dosfile.txt";
- QTest::newRow( "BinaryMode dosfile" ) << false << SRCDIR "dosfile.txt";
- QTest::newRow( "TextMode bigfile" ) << true << SRCDIR "tst_qfile.cpp";
- QTest::newRow( "BinaryMode bigfile" ) << false << SRCDIR "tst_qfile.cpp";
- QVERIFY(QFile(SRCDIR "tst_qfile.cpp").size() > 64*1024);
-}
-
-void tst_QFile::readAll()
-{
- QFETCH( bool, textMode );
- QFETCH( QString, fileName );
-
- QFile file(fileName);
- if (textMode)
- QVERIFY(file.open(QFile::Text | QFile::ReadOnly));
- else
- QVERIFY(file.open(QFile::ReadOnly));
-
- QByteArray a = file.readAll();
- file.reset();
- QVERIFY(file.pos() == 0);
-
- QVERIFY(file.bytesAvailable() > 7);
- QByteArray b = file.read(1);
- char x;
- file.getChar(&x);
- b.append(x);
- b.append(file.read(5));
- b.append(file.readAll());
-
- QCOMPARE(a, b);
-}
-
-void tst_QFile::readAllBuffer()
-{
- QString fileName = QLatin1String("readAllBuffer.txt");
-
- QFile::remove(fileName);
-
- QFile writer(fileName);
- QFile reader(fileName);
-
- QByteArray data1("This is arguably a very simple text.");
- QByteArray data2("This is surely not as simple a test.");
-
- QVERIFY( writer.open(QIODevice::ReadWrite | QIODevice::Unbuffered) );
- QVERIFY( reader.open(QIODevice::ReadOnly) );
-
- QCOMPARE( writer.write(data1), qint64(data1.size()) );
- QVERIFY( writer.seek(0) );
-
- QByteArray result;
- result = reader.read(18);
- QCOMPARE( result.size(), 18 );
-
- QCOMPARE( writer.write(data2), qint64(data2.size()) ); // new data, old version buffered in reader
- QCOMPARE( writer.write(data2), qint64(data2.size()) ); // new data, unbuffered in reader
-
- result += reader.readAll();
-
- QCOMPARE( result, data1 + data2 );
-
- QFile::remove(fileName);
-}
-
-void tst_QFile::readAllStdin()
-{
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QSKIP("Currently no stdin/out supported for Windows CE or Symbian", SkipAll);
-#endif
-#if defined(QT_NO_PROCESS)
- QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
-#else
- QByteArray lotsOfData(1024, '@'); // 10 megs
-
- QProcess process;
- process.start("stdinprocess/stdinprocess all");
- QVERIFY( process.waitForStarted() );
- for (int i = 0; i < 5; ++i) {
- QTest::qWait(1000);
- process.write(lotsOfData);
- while (process.bytesToWrite() > 0) {
- QVERIFY(process.waitForBytesWritten());
- }
- }
-
- process.closeWriteChannel();
- process.waitForFinished();
- QCOMPARE(process.readAll().size(), lotsOfData.size() * 5);
-#endif
-}
-
-void tst_QFile::readLineStdin()
-{
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QSKIP("Currently no stdin/out supported for Windows CE or Symbian", SkipAll);
-#endif
-#if defined(QT_NO_PROCESS)
- QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
-#else
-
- QByteArray lotsOfData(1024, '@'); // 10 megs
- for (int i = 0; i < lotsOfData.size(); ++i) {
- if ((i % 32) == 31)
- lotsOfData[i] = '\n';
- else
- lotsOfData[i] = char('0' + i % 32);
- }
-
- for (int i = 0; i < 2; ++i) {
- QProcess process;
- process.start(QString("stdinprocess/stdinprocess line %1").arg(i), QIODevice::Text | QIODevice::ReadWrite);
- for (int i = 0; i < 5; ++i) {
- QTest::qWait(1000);
- process.write(lotsOfData);
- while (process.bytesToWrite() > 0) {
- QVERIFY(process.waitForBytesWritten());
- }
- }
-
- process.closeWriteChannel();
- QVERIFY(process.waitForFinished(5000));
-
- QByteArray array = process.readAll();
- QCOMPARE(array.size(), lotsOfData.size() * 5);
- for (int i = 0; i < array.size(); ++i) {
- if ((i % 32) == 31)
- QCOMPARE(char(array[i]), '\n');
- else
- QCOMPARE(char(array[i]), char('0' + i % 32));
- }
- }
-#endif
-}
-
-void tst_QFile::readLineStdin_lineByLine()
-{
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QSKIP("Currently no stdin/out supported for Windows CE", SkipAll);
-#endif
-#if defined(QT_NO_PROCESS)
- QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
-#else
- for (int i = 0; i < 2; ++i) {
- QProcess process;
- process.start(QString("stdinprocess/stdinprocess line %1").arg(i), QIODevice::Text | QIODevice::ReadWrite);
- QVERIFY(process.waitForStarted());
-
- for (int j = 0; j < 3; ++j) {
- QByteArray line = "line " + QByteArray::number(j) + "\n";
- QCOMPARE(process.write(line), qint64(line.size()));
- QVERIFY(process.waitForBytesWritten(2000));
- if (process.bytesAvailable() == 0)
- QVERIFY(process.waitForReadyRead(2000));
- QCOMPARE(process.readAll(), line);
- }
-
- process.closeWriteChannel();
- QVERIFY(process.waitForFinished(5000));
- }
-#endif
-}
-
-void tst_QFile::text()
-{
- // dosfile.txt is a binary CRLF file
- QFile file(SRCDIR "dosfile.txt");
- QVERIFY(file.open(QFile::Text | QFile::ReadOnly));
- QCOMPARE(file.readLine(),
- QByteArray("/dev/system/root / reiserfs acl,user_xattr 1 1\n"));
- QCOMPARE(file.readLine(),
- QByteArray("/dev/sda1 /boot ext3 acl,user_xattr 1 2\n"));
- file.ungetChar('\n');
- file.ungetChar('2');
- QCOMPARE(file.readLine().constData(), QByteArray("2\n").constData());
-}
-
-void tst_QFile::missingEndOfLine()
-{
- QFile file(SRCDIR "noendofline.txt");
- QVERIFY(file.open(QFile::ReadOnly));
-
- int nlines = 0;
- while (!file.atEnd()) {
- ++nlines;
- file.readLine();
- }
-
- QCOMPARE(nlines, 3);
-}
-
-void tst_QFile::readBlock()
-{
- QFile f( SRCDIR "testfile.txt" );
- f.open( QIODevice::ReadOnly );
-
- int length = 0;
- char p[256];
- length = f.read( p, 256 );
- f.close();
- QCOMPARE( length, 245 );
- QCOMPARE( p[59], 'D' );
- QCOMPARE( p[178], 'T' );
- QCOMPARE( p[199], 'l' );
-}
-
-void tst_QFile::getch()
-{
- QFile f( SRCDIR "testfile.txt" );
- f.open( QIODevice::ReadOnly );
-
- char c;
- int i = 0;
- while (f.getChar(&c)) {
- QCOMPARE(f.pos(), qint64(i + 1));
- if ( i == 59 )
- QCOMPARE( c, 'D' );
- ++i;
- }
- f.close();
- QCOMPARE( i, 245 );
-}
-
-void tst_QFile::ungetChar()
-{
- QFile f(SRCDIR "testfile.txt");
- QVERIFY(f.open(QIODevice::ReadOnly));
-
- QByteArray array = f.readLine();
- QCOMPARE(array.constData(), "----------------------------------------------------------\n");
- f.ungetChar('\n');
-
- array = f.readLine();
- QCOMPARE(array.constData(), "\n");
-
- f.ungetChar('\n');
- f.ungetChar('-');
- f.ungetChar('-');
-
- array = f.readLine();
- QCOMPARE(array.constData(), "--\n");
-
- QFile::remove("genfile.txt");
- QFile out("genfile.txt");
- QVERIFY(out.open(QIODevice::ReadWrite));
- out.write("123");
- out.seek(0);
- QCOMPARE(out.readAll().constData(), "123");
- out.ungetChar('3');
- out.write("4");
- out.seek(0);
- QCOMPARE(out.readAll().constData(), "124");
- out.ungetChar('4');
- out.ungetChar('2');
- out.ungetChar('1');
- char buf[3];
- QCOMPARE(out.read(buf, sizeof(buf)), qint64(3));
- QCOMPARE(buf[0], '1');
- QCOMPARE(buf[1], '2');
- QCOMPARE(buf[2], '4');
-}
-
-void tst_QFile::invalidFile_data()
-{
- QTest::addColumn<QString>("fileName");
-#if !defined(Q_WS_WIN) && !defined(Q_OS_SYMBIAN)
- QTest::newRow( "x11" ) << QString( "qwe//" );
-#else
- QTest::newRow( "colon1" ) << QString( "fail:invalid" );
- QTest::newRow( "colon2" ) << QString( "f:ail:invalid" );
- QTest::newRow( "colon3" ) << QString( ":failinvalid" );
- QTest::newRow( "forwardslash" ) << QString( "fail/invalid" );
- QTest::newRow( "asterisk" ) << QString( "fail*invalid" );
- QTest::newRow( "questionmark" ) << QString( "fail?invalid" );
- QTest::newRow( "quote" ) << QString( "fail\"invalid" );
- QTest::newRow( "lt" ) << QString( "fail<invalid" );
- QTest::newRow( "gt" ) << QString( "fail>invalid" );
- QTest::newRow( "pipe" ) << QString( "fail|invalid" );
-#endif
-}
-
-void tst_QFile::invalidFile()
-{
- QFETCH( QString, fileName );
- QFile f( fileName );
- QVERIFY( !f.open( QIODevice::ReadWrite ) );
-}
-
-void tst_QFile::createFile()
-{
- if ( QFile::exists( "createme.txt" ) )
- QFile::remove( "createme.txt" );
- QVERIFY( !QFile::exists( "createme.txt" ) );
-
- QFile f( "createme.txt" );
- QVERIFY( f.open( QIODevice::WriteOnly ) );
- f.close();
- QVERIFY( QFile::exists( "createme.txt" ) );
-}
-
-void tst_QFile::append()
-{
- const QString name("appendme.txt");
- if (QFile::exists(name))
- QFile::remove(name);
- QVERIFY(!QFile::exists(name));
-
- QFile f(name);
- QVERIFY(f.open(QIODevice::WriteOnly | QIODevice::Truncate));
- f.putChar('a');
- f.close();
-
- QVERIFY(f.open(QIODevice::Append));
- QVERIFY(f.pos() == 1);
- f.putChar('a');
- f.close();
- QCOMPARE(int(f.size()), 2);
-}
-
-void tst_QFile::permissions_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<uint>("perms");
- QTest::addColumn<bool>("expected");
-
- QTest::newRow("data0") << QCoreApplication::instance()->applicationFilePath() << uint(QFile::ExeUser) << true;
- QTest::newRow("data1") << SRCDIR "tst_qfile.cpp" << uint(QFile::ReadUser) << true;
-// QTest::newRow("data2") << "tst_qfile.cpp" << int(QFile::WriteUser) << false;
- QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << uint(QFile::ReadUser) << true;
- QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1" << uint(QFile::WriteUser) << false;
- QTest::newRow("resource3") << ":/tst_qfileinfo/resources/file1.ext1" << uint(QFile::ExeUser) << false;
-}
-
-void tst_QFile::permissions()
-{
-#if defined(Q_OS_SYMBIAN)
- if (qstrcmp(QTest::currentDataTag(), "data0") == 0)
- QSKIP("Symbian does not have execution permissions", SkipSingle);
-#endif
- QFETCH(QString, file);
- QFETCH(uint, perms);
- QFETCH(bool, expected);
- QFile f(file);
- QCOMPARE(((f.permissions() & perms) == QFile::Permissions(perms)), expected);
- QCOMPARE(((QFile::permissions(file) & perms) == QFile::Permissions(perms)), expected);
-}
-
-void tst_QFile::setPermissions()
-{
- DEPENDS_ON( "permissions" ); //if that doesn't work...
-
- if ( QFile::exists( "createme.txt" ) )
- QFile::remove( "createme.txt" );
- QVERIFY( !QFile::exists( "createme.txt" ) );
-
- QFile f("createme.txt");
- QVERIFY(f.open(QIODevice::WriteOnly | QIODevice::Truncate));
- f.putChar('a');
- f.close();
-
- QFile::Permissions perms(QFile::WriteUser | QFile::ReadUser);
- QVERIFY(f.setPermissions(perms));
- QVERIFY((f.permissions() & perms) == perms);
-
-}
-
-void tst_QFile::copy()
-{
- QFile::setPermissions("tst_qfile_copy.cpp", QFile::WriteUser);
- QFile::remove("tst_qfile_copy.cpp");
- QFile::remove("test2");
- QVERIFY(QFile::copy(SRCDIR "tst_qfile.cpp", "tst_qfile_copy.cpp"));
- QFile in1(SRCDIR "tst_qfile.cpp"), in2("tst_qfile_copy.cpp");
- QVERIFY(in1.open(QFile::ReadOnly));
- QVERIFY(in2.open(QFile::ReadOnly));
- QByteArray data1 = in1.readAll(), data2 = in2.readAll();
- QCOMPARE(data1, data2);
- QFile::remove( "main_copy.cpp" );
-
- QFile::copy(QDir::currentPath(), QDir::currentPath() + QLatin1String("/test2"));
-}
-
-void tst_QFile::copyAfterFail()
-{
- QFile file1("file-to-be-copied.txt");
- QFile file2("existing-file.txt");
-
- QVERIFY(file1.open(QIODevice::ReadWrite) && "(test-precondition)");
- QVERIFY(file2.open(QIODevice::ReadWrite) && "(test-precondition)");
- file2.close();
- QVERIFY(!QFile::exists("copied-file-1.txt") && "(test-precondition)");
- QVERIFY(!QFile::exists("copied-file-2.txt") && "(test-precondition)");
-
- QVERIFY(!file1.copy("existing-file.txt"));
- QCOMPARE(file1.error(), QFile::CopyError);
-
- QVERIFY(file1.copy("copied-file-1.txt"));
- QVERIFY(!file1.isOpen());
- QCOMPARE(file1.error(), QFile::NoError);
-
- QVERIFY(!file1.copy("existing-file.txt"));
- QCOMPARE(file1.error(), QFile::CopyError);
-
- QVERIFY(file1.copy("copied-file-2.txt"));
- QVERIFY(!file1.isOpen());
- QCOMPARE(file1.error(), QFile::NoError);
-
- QVERIFY(QFile::exists("copied-file-1.txt"));
- QVERIFY(QFile::exists("copied-file-2.txt"));
-
- QVERIFY(QFile::remove("file-to-be-copied.txt") && "(test-cleanup)");
- QVERIFY(QFile::remove("existing-file.txt") && "(test-cleanup)");
- QVERIFY(QFile::remove("copied-file-1.txt") && "(test-cleanup)");
- QVERIFY(QFile::remove("copied-file-2.txt") && "(test-cleanup)");
-}
-
-void tst_QFile::copyRemovesTemporaryFile() const
-{
- const QString newName(QLatin1String("copyRemovesTemporaryFile"));
- QVERIFY(QFile::copy(SRCDIR "forCopying.txt", newName));
-
- QVERIFY(!QFile::exists(QLatin1String( SRCDIR "qt_temp.XXXXXX")));
- QVERIFY(QFile::remove(newName));
-}
-
-void tst_QFile::copyShouldntOverwrite()
-{
- // Copy should not overwrite existing files.
- QFile::remove("tst_qfile.cpy");
- QFile file(SRCDIR "tst_qfile.cpp");
- QVERIFY(file.copy("tst_qfile.cpy"));
-#if defined(Q_OS_SYMBIAN)
- bool ok = QFile::setPermissions("tst_qfile.cpy", QFile::WriteUser);
-#else
- bool ok = QFile::setPermissions("tst_qfile.cpy", QFile::WriteOther);
-#endif
- QVERIFY(ok);
- QVERIFY(!file.copy("tst_qfile.cpy"));
- QFile::remove("tst_qfile.cpy");
-}
-
-void tst_QFile::copyFallback()
-{
- // Using a resource file to trigger QFile::copy's fallback handling
- QFile file(":/copy-fallback.qrc");
- QFile::remove("file-copy-destination.txt");
-
- QVERIFY2(file.exists(), "test precondition");
- QVERIFY2(!QFile::exists("file-copy-destination.txt"), "test precondition");
-
- // Fallback copy of closed file.
- QVERIFY(file.copy("file-copy-destination.txt"));
- QVERIFY(QFile::exists("file-copy-destination.txt"));
- QVERIFY(!file.isOpen());
-
-#ifdef Q_WS_WINCE
- // Need to reset permissions on Windows to be able to delete
- QVERIFY(QFile::setPermissions("file-copy-destination.txt",
- QFile::WriteOther));
-#else
- // Need to reset permissions on Windows to be able to delete
- QVERIFY(QFile::setPermissions("file-copy-destination.txt",
- QFile::ReadOwner | QFile::WriteOwner));
-#endif
- QVERIFY(QFile::remove("file-copy-destination.txt"));
-
- // Fallback copy of open file.
- QVERIFY(file.open(QIODevice::ReadOnly));
- QVERIFY(file.copy("file-copy-destination.txt"));
- QVERIFY(QFile::exists("file-copy-destination.txt"));
- QVERIFY(!file.isOpen());
-
- file.close();
- QFile::remove("file-copy-destination.txt");
-}
-
-#ifdef Q_OS_WIN
-#include <objbase.h>
-#include <shlobj.h>
-#endif
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
-static QString getWorkingDirectoryForLink(const QString &linkFileName)
-{
- bool neededCoInit = false;
- QString ret;
-
- IShellLink *psl;
- HRESULT hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl);
- if (hres == CO_E_NOTINITIALIZED) { // COM was not initialized
- neededCoInit = true;
- CoInitialize(NULL);
- hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl);
- }
-
- if (SUCCEEDED(hres)) { // Get pointer to the IPersistFile interface.
- IPersistFile *ppf;
- hres = psl->QueryInterface(IID_IPersistFile, (LPVOID *)&ppf);
- if (SUCCEEDED(hres)) {
- hres = ppf->Load((LPOLESTR)linkFileName.utf16(), STGM_READ);
- //The original path of the link is retrieved. If the file/folder
- //was moved, the return value still have the old path.
- if(SUCCEEDED(hres)) {
- wchar_t szGotPath[MAX_PATH];
- if (psl->GetWorkingDirectory(szGotPath, MAX_PATH) == NOERROR)
- ret = QString::fromWCharArray(szGotPath);
- }
- ppf->Release();
- }
- psl->Release();
- }
-
- if (neededCoInit) {
- CoUninitialize();
- }
-
- return ret;
-}
-#endif
-
-void tst_QFile::link()
-{
-#if defined(Q_OS_SYMBIAN)
- QSKIP("Symbian does not support links", SkipAll);
-#endif
- QFile::remove("myLink.lnk");
-
- QFileInfo info1(SRCDIR "tst_qfile.cpp");
- QString referenceTarget = QDir::cleanPath(info1.absoluteFilePath());
-
- QVERIFY(QFile::link(SRCDIR "tst_qfile.cpp", "myLink.lnk"));
-
- QFileInfo info2("myLink.lnk");
- QVERIFY(info2.isSymLink());
- QCOMPARE(info2.symLinkTarget(), referenceTarget);
-
- QFile link("myLink.lnk");
- QVERIFY(link.open(QIODevice::ReadOnly));
- QCOMPARE(link.symLinkTarget(), referenceTarget);
- link.close();
-
- QCOMPARE(QFile::symLinkTarget("myLink.lnk"), referenceTarget);
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- QString wd = getWorkingDirectoryForLink(info2.absoluteFilePath());
- QCOMPARE(QDir::fromNativeSeparators(wd), QDir::cleanPath(info1.absolutePath()));
-#endif
-
- QVERIFY(QFile::remove(info2.absoluteFilePath()));
-}
-
-void tst_QFile::linkToDir()
-{
-#if defined(Q_OS_SYMBIAN)
- QSKIP("Symbian does not support linking to directories", SkipAll);
-#endif
- QFile::remove("myLinkToDir.lnk");
- QDir dir;
- dir.mkdir("myDir");
- QFileInfo info1("myDir");
- QVERIFY(QFile::link("myDir", "myLinkToDir.lnk"));
- QFileInfo info2("myLinkToDir.lnk");
-#if !(defined Q_OS_HPUX && defined(__ia64))
- // absurd HP-UX filesystem bug on gravlaks - checking if a symlink
- // resolves or not alters the file system to make the broken symlink
- // later fail...
- QVERIFY(info2.isSymLink());
-#endif
- QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath());
- QVERIFY(QFile::remove(info2.absoluteFilePath()));
- QFile::remove("myLinkToDir.lnk");
- dir.rmdir("myDir");
-}
-
-void tst_QFile::absolutePathLinkToRelativePath()
-{
-#if defined(Q_OS_SYMBIAN)
- QSKIP("Symbian does not support links", SkipAll);
-#endif
- QFile::remove("myDir/test.txt");
- QFile::remove("myDir/myLink.lnk");
- QDir dir;
- dir.mkdir("myDir");
- QFile("myDir/test.txt").open(QFile::WriteOnly);
-
-#ifdef Q_OS_WIN
- QVERIFY(QFile::link("test.txt", "myDir/myLink.lnk"));
-#else
- QVERIFY(QFile::link("myDir/test.txt", "myDir/myLink.lnk"));
-#endif
- QEXPECT_FAIL("", "Symlinking using relative paths is currently different on Windows and Unix/Symbian", Continue);
- QCOMPARE(QFileInfo(QFile(QFileInfo("myDir/myLink.lnk").absoluteFilePath()).symLinkTarget()).absoluteFilePath(),
- QFileInfo("myDir/test.txt").absoluteFilePath());
-
- QFile::remove("myDir/test.txt");
- QFile::remove("myDir/myLink.lnk");
- dir.rmdir("myDir");
-}
-
-void tst_QFile::readBrokenLink()
-{
-#if defined(Q_OS_SYMBIAN)
- QSKIP("Symbian does not support links", SkipAll);
-#endif
- QFile::remove("myLink2.lnk");
- QFileInfo info1("file12");
-#if defined(Q_OS_SYMBIAN)
- // In Symbian can't link to nonexisting file directly, so create the file temporarily
- QFile tempFile("file12");
- tempFile.open(QIODevice::WriteOnly);
- tempFile.link("myLink2.lnk");
- tempFile.remove();
-#else
- QVERIFY(QFile::link("file12", "myLink2.lnk"));
-#endif
- QFileInfo info2("myLink2.lnk");
- QVERIFY(info2.isSymLink());
- QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath());
- QVERIFY(QFile::remove(info2.absoluteFilePath()));
-
-#if !defined(Q_OS_SYMBIAN)
- QVERIFY(QFile::link("ole/..", "myLink2.lnk"));
- QCOMPARE(QFileInfo("myLink2.lnk").symLinkTarget(), QDir::currentPath());
-#endif
-}
-
-void tst_QFile::readTextFile_data()
-{
- QTest::addColumn<QByteArray>("in");
- QTest::addColumn<QByteArray>("out");
-
- QTest::newRow("empty") << QByteArray() << QByteArray();
- QTest::newRow("a") << QByteArray("a") << QByteArray("a");
- QTest::newRow("a\\rb") << QByteArray("a\rb") << QByteArray("ab");
- QTest::newRow("\\n") << QByteArray("\n") << QByteArray("\n");
- QTest::newRow("\\r\\n") << QByteArray("\r\n") << QByteArray("\n");
- QTest::newRow("\\r") << QByteArray("\r") << QByteArray();
- QTest::newRow("twolines") << QByteArray("Hello\r\nWorld\r\n") << QByteArray("Hello\nWorld\n");
- QTest::newRow("twolines no endline") << QByteArray("Hello\r\nWorld") << QByteArray("Hello\nWorld");
-}
-
-void tst_QFile::readTextFile()
-{
- QFETCH(QByteArray, in);
- QFETCH(QByteArray, out);
-
- QFile winfile("winfile.txt");
- QVERIFY(winfile.open(QFile::WriteOnly | QFile::Truncate));
- winfile.write(in);
- winfile.close();
-
- QVERIFY(winfile.open(QFile::ReadOnly));
- QCOMPARE(winfile.readAll(), in);
- winfile.close();
-
- QVERIFY(winfile.open(QFile::ReadOnly | QFile::Text));
- QCOMPARE(winfile.readAll(), out);
-}
-
-void tst_QFile::readTextFile2()
-{
- {
- QFile file(SRCDIR "testlog.txt");
- QVERIFY(file.open(QIODevice::ReadOnly));
- file.read(4097);
- }
-
- {
- QFile file(SRCDIR "testlog.txt");
- QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
- file.read(4097);
- }
-}
-
-void tst_QFile::writeTextFile_data()
-{
- QTest::addColumn<QByteArray>("in");
-
- QTest::newRow("empty") << QByteArray();
- QTest::newRow("a") << QByteArray("a");
- QTest::newRow("a\\rb") << QByteArray("a\rb");
- QTest::newRow("\\n") << QByteArray("\n");
- QTest::newRow("\\r\\n") << QByteArray("\r\n");
- QTest::newRow("\\r") << QByteArray("\r");
- QTest::newRow("twolines crlf") << QByteArray("Hello\r\nWorld\r\n");
- QTest::newRow("twolines crlf no endline") << QByteArray("Hello\r\nWorld");
- QTest::newRow("twolines lf") << QByteArray("Hello\nWorld\n");
- QTest::newRow("twolines lf no endline") << QByteArray("Hello\nWorld");
- QTest::newRow("mixed") << QByteArray("this\nis\r\na\nmixed\r\nfile\n");
-}
-
-void tst_QFile::writeTextFile()
-{
- QFETCH(QByteArray, in);
-
- QFile file("textfile.txt");
- QVERIFY(file.open(QFile::WriteOnly | QFile::Truncate | QFile::Text));
- QByteArray out = in;
-#ifdef Q_OS_WIN
- out.replace('\n', "\r\n");
-#endif
- QCOMPARE(file.write(in), qlonglong(in.size()));
- file.close();
-
- file.open(QFile::ReadOnly);
- QCOMPARE(file.readAll(), out);
-}
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
-void tst_QFile::largeUncFileSupport()
-{
- qint64 size = Q_INT64_C(8589934592);
- qint64 dataOffset = Q_INT64_C(8589914592);
- QByteArray knownData("LargeFile content at offset 8589914592");
- QString largeFile("//" + QtNetworkSettings::winServerName() + "/testsharelargefile/file.bin");
-
- {
- // 1) Native file handling.
- QFile file(largeFile);
- QCOMPARE(file.size(), size);
- QVERIFY(file.open(QIODevice::ReadOnly));
- QCOMPARE(file.size(), size);
- QVERIFY(file.seek(dataOffset));
- QCOMPARE(file.read(knownData.size()), knownData);
- }
- {
- // 2) stdlib file handling.
-#if _MSC_VER <= 1310
- QSKIP("platform SDK for MSVC 2003 does not support large files", SkipAll);
-#endif
- QFile file;
- FILE *fh = fopen(QFile::encodeName(largeFile).data(), "rb");
- QVERIFY(file.open(fh, QIODevice::ReadOnly));
- QCOMPARE(file.size(), size);
- QVERIFY(file.seek(dataOffset));
- QCOMPARE(file.read(knownData.size()), knownData);
- fclose(fh);
- }
- {
- // 3) stdio file handling.
- QFile file;
- FILE *fh = fopen(QFile::encodeName(largeFile).data(), "rb");
- int fd = int(_fileno(fh));
- QVERIFY(file.open(fd, QIODevice::ReadOnly));
- QCOMPARE(file.size(), size);
- QVERIFY(file.seek(dataOffset));
- QCOMPARE(file.read(knownData.size()), knownData);
- fclose(fh);
- }
-}
-#endif
-
-void tst_QFile::tailFile()
-{
- QSKIP("File change notifications are so far unsupported.", SkipAll);
-
- QFile file("tail.txt");
- QVERIFY(file.open(QFile::WriteOnly | QFile::Append));
-
- QFile tailFile("tail.txt");
- QVERIFY(tailFile.open(QFile::ReadOnly));
- tailFile.seek(file.size());
-
- QSignalSpy readSignal(&tailFile, SIGNAL(readyRead()));
-
- file.write("", 1);
-
- QTestEventLoop::instance().enterLoop(5);
-
- QVERIFY(!QTestEventLoop::instance().timeout());
- QCOMPARE(readSignal.count(), 1);
-}
-
-void tst_QFile::flush()
-{
- QString fileName("stdfile.txt");
-
- QFile::remove(fileName);
-
- {
- QFile file(fileName);
- QVERIFY(file.open(QFile::WriteOnly));
- QCOMPARE(file.write("abc", 3),qint64(3));
- }
-
- {
- QFile file(fileName);
- QVERIFY(file.open(QFile::WriteOnly | QFile::Append));
- QCOMPARE(file.pos(), qlonglong(3));
- QCOMPARE(file.write("def", 3), qlonglong(3));
- QCOMPARE(file.pos(), qlonglong(6));
- }
-
- {
- QFile file("stdfile.txt");
- QVERIFY(file.open(QFile::ReadOnly));
- QCOMPARE(file.readAll(), QByteArray("abcdef"));
- }
-
- QFile::remove(fileName);
-}
-
-void tst_QFile::bufferedRead()
-{
- QFile::remove("stdfile.txt");
-
- QFile file("stdfile.txt");
- QVERIFY(file.open(QFile::WriteOnly));
- file.write("abcdef");
- file.close();
-
-#if defined(Q_OS_WINCE)
- FILE *stdFile = fopen((QCoreApplication::applicationDirPath() + "/stdfile.txt").toAscii() , "r");
-#else
- FILE *stdFile = fopen("stdfile.txt", "r");
-#endif
- QVERIFY(stdFile);
- char c;
- QCOMPARE(int(fread(&c, 1, 1, stdFile)), 1);
- QCOMPARE(c, 'a');
- QCOMPARE(int(ftell(stdFile)), 1);
-
- {
- QFile file;
- QVERIFY(file.open(stdFile, QFile::ReadOnly));
- QCOMPARE(file.pos(), qlonglong(1));
- QCOMPARE(file.read(&c, 1), qlonglong(1));
- QCOMPARE(c, 'b');
- QCOMPARE(file.pos(), qlonglong(2));
- }
-
- fclose(stdFile);
-}
-
-void tst_QFile::isSequential()
-{
-#if defined (Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- QSKIP("Unix only test.", SkipAll);
-#endif
-
- QFile zero("/dev/null");
- QVERIFY(zero.open(QFile::ReadOnly));
- QVERIFY(zero.isSequential());
-}
-
-void tst_QFile::encodeName()
-{
- QCOMPARE(QFile::encodeName(QString::null), QByteArray());
-}
-
-void tst_QFile::truncate()
-{
- for (int i = 0; i < 2; ++i) {
- QFile file("truncate.txt");
- QVERIFY(file.open(QFile::WriteOnly));
- file.write(QByteArray(200, '@'));
- file.close();
-
- QVERIFY(file.open((i ? QFile::WriteOnly : QFile::ReadWrite) | QFile::Truncate));
- file.write(QByteArray(100, '$'));
- file.close();
-
- QVERIFY(file.open(QFile::ReadOnly));
- QCOMPARE(file.readAll(), QByteArray(100, '$'));
- }
-}
-
-void tst_QFile::seekToPos()
-{
- {
- QFile file("seekToPos.txt");
- QVERIFY(file.open(QFile::WriteOnly));
- file.write("a\r\nb\r\nc\r\n");
- file.flush();
- }
-
- QFile file("seekToPos.txt");
- QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
- file.seek(1);
- char c;
- QVERIFY(file.getChar(&c));
- QCOMPARE(c, '\n');
-
- QCOMPARE(file.pos(), qint64(3));
- file.seek(file.pos());
- QCOMPARE(file.pos(), qint64(3));
-
- file.seek(1);
- file.seek(file.pos());
- QCOMPARE(file.pos(), qint64(1));
-
-}
-
-void tst_QFile::seekAfterEndOfFile()
-{
- QLatin1String filename("seekAfterEof.dat");
- QFile::remove(filename);
- {
- QFile file(filename);
- QVERIFY(file.open(QFile::WriteOnly));
- file.write("abcd");
- QCOMPARE(file.size(), qint64(4));
- file.seek(8);
- file.write("ijkl");
- QCOMPARE(file.size(), qint64(12));
- file.seek(4);
- file.write("efgh");
- QCOMPARE(file.size(), qint64(12));
- file.seek(16);
- file.write("----");
- QCOMPARE(file.size(), qint64(20));
- file.flush();
- }
-
- QFile file(filename);
- QVERIFY(file.open(QFile::ReadOnly));
- QByteArray contents = file.readAll();
- QCOMPARE(contents.left(12), QByteArray("abcdefghijkl", 12));
- //bytes 12-15 are uninitialised so we don't care what they read as.
- QCOMPARE(contents.mid(16), QByteArray("----", 4));
- file.close();
- QFile::remove(filename);
-}
-
-void tst_QFile::FILEReadWrite()
-{
- // Tests modifying a file. First creates it then reads in 4 bytes and then overwrites these
- // 4 bytes with new values. At the end check to see the file contains the new values.
-
- QFile::remove("FILEReadWrite.txt");
-
- // create test file
- {
- QFile f("FILEReadWrite.txt");
- QVERIFY(f.open(QFile::WriteOnly));
- QDataStream ds(&f);
- qint8 c = 0;
- ds << c;
- c = 1;
- ds << c;
- c = 2;
- ds << c;
- c = 3;
- ds << c;
- c = 4;
- ds << c;
- c = 5;
- ds << c;
- c = 6;
- ds << c;
- c = 7;
- ds << c;
- c = 8;
- ds << c;
- c = 9;
- ds << c;
- c = 10;
- ds << c;
- c = 11;
- ds << c;
- f.close();
- }
-
-#ifdef Q_OS_WINCE
- FILE *fp = fopen(qPrintable(QCoreApplication::applicationDirPath() + "\\FILEReadWrite.txt"), "r+b");
-#else
- FILE *fp = fopen("FILEReadWrite.txt", "r+b");
-#endif
- QVERIFY(fp);
- QFile file;
- QVERIFY(file.open(fp, QFile::ReadWrite));
- QDataStream sfile(&file) ;
-
- qint8 var1,var2,var3,var4;
- while (!sfile.atEnd())
- {
- qint64 base = file.pos();
-
- QCOMPARE(file.pos(), base + 0);
- sfile >> var1;
- QCOMPARE(file.pos(), base + 1);
- file.flush(); // flushing should not change the base
- QCOMPARE(file.pos(), base + 1);
- sfile >> var2;
- QCOMPARE(file.pos(), base + 2);
- sfile >> var3;
- QCOMPARE(file.pos(), base + 3);
- sfile >> var4;
- QCOMPARE(file.pos(), base + 4);
- file.seek(file.pos() - 4) ; // Move it back 4, for we are going to write new values based on old ones
- QCOMPARE(file.pos(), base + 0);
- sfile << qint8(var1 + 5);
- QCOMPARE(file.pos(), base + 1);
- sfile << qint8(var2 + 5);
- QCOMPARE(file.pos(), base + 2);
- sfile << qint8(var3 + 5);
- QCOMPARE(file.pos(), base + 3);
- sfile << qint8(var4 + 5);
- QCOMPARE(file.pos(), base + 4);
-
- }
- file.close();
- fclose(fp);
-
- // check modified file
- {
- QFile f("FILEReadWrite.txt");
- QVERIFY(f.open(QFile::ReadOnly));
- QDataStream ds(&f);
- qint8 c = 0;
- ds >> c;
- QCOMPARE(c, (qint8)5);
- ds >> c;
- QCOMPARE(c, (qint8)6);
- ds >> c;
- QCOMPARE(c, (qint8)7);
- ds >> c;
- QCOMPARE(c, (qint8)8);
- ds >> c;
- QCOMPARE(c, (qint8)9);
- ds >> c;
- QCOMPARE(c, (qint8)10);
- ds >> c;
- QCOMPARE(c, (qint8)11);
- ds >> c;
- QCOMPARE(c, (qint8)12);
- ds >> c;
- QCOMPARE(c, (qint8)13);
- ds >> c;
- QCOMPARE(c, (qint8)14);
- ds >> c;
- QCOMPARE(c, (qint8)15);
- ds >> c;
- QCOMPARE(c, (qint8)16);
- f.close();
- }
-
- QFile::remove("FILEReadWrite.txt");
-}
-
-
-/*
-#include <qglobal.h>
-#define BUFFSIZE 1
-#define FILESIZE 0x10000000f
-void tst_QFile::largeFileSupport()
-{
-#ifdef Q_OS_SOLARIS
- QSKIP("Solaris does not support statfs", SkipAll);
-#else
- qlonglong sizeNeeded = 2147483647;
- sizeNeeded *= 2;
- sizeNeeded += 1024;
- qlonglong freespace = qlonglong(0);
-#ifdef Q_WS_WIN
- _ULARGE_INTEGER free;
- if (::GetDiskFreeSpaceEx((wchar_t*)QDir::currentPath().utf16(), &free, 0, 0))
- freespace = free.QuadPart;
- if (freespace != 0) {
-#elif defined(Q_OS_IRIX)
- struct statfs info;
- if (statfs(QDir::currentPath().local8Bit(), &info, sizeof(struct statfs), 0) == 0) {
- freespace = qlonglong(info.f_bfree * info.f_bsize);
-#else
- struct statfs info;
- if (statfs(const_cast<char *>(QDir::currentPath().toLocal8Bit().constData()), &info) == 0) {
- freespace = qlonglong(info.f_bavail * info.f_bsize);
-#endif
- if (freespace > sizeNeeded) {
- QFile bigFile("bigfile");
- if (bigFile.open(QFile::ReadWrite)) {
- char c[BUFFSIZE] = {'a'};
- QVERIFY(bigFile.write(c, BUFFSIZE) == BUFFSIZE);
- qlonglong oldPos = bigFile.pos();
- QVERIFY(bigFile.resize(sizeNeeded));
- QCOMPARE(oldPos, bigFile.pos());
- QVERIFY(bigFile.seek(sizeNeeded - BUFFSIZE));
- QVERIFY(bigFile.write(c, BUFFSIZE) == BUFFSIZE);
-
- bigFile.close();
- if (bigFile.open(QFile::ReadOnly)) {
- QVERIFY(bigFile.read(c, BUFFSIZE) == BUFFSIZE);
- int i = 0;
- for (i=0; i<BUFFSIZE; i++)
- QCOMPARE(c[i], 'a');
- QVERIFY(bigFile.seek(sizeNeeded - BUFFSIZE));
- QVERIFY(bigFile.read(c, BUFFSIZE) == BUFFSIZE);
- for (i=0; i<BUFFSIZE; i++)
- QCOMPARE(c[i], 'a');
- bigFile.close();
- QVERIFY(bigFile.remove());
- } else {
- QVERIFY(bigFile.remove());
- QFAIL("Could not reopen file");
- }
- } else {
- QFAIL("Could not open file");
- }
- } else {
- QSKIP("Not enough space to run test", SkipSingle);
- }
- } else {
- QFAIL("Could not determin disk space");
- }
-#endif
-}
-*/
-
-void tst_QFile::i18nFileName_data()
-{
- QTest::addColumn<QString>("fileName");
-
- QTest::newRow( "01" ) << QString::fromUtf8("xxxxxxx.txt");
-}
-
-void tst_QFile::i18nFileName()
-{
- QFETCH(QString, fileName);
- if (QFile::exists(fileName)) {
- QVERIFY(QFile::remove(fileName));
- }
- {
- QFile file(fileName);
- QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
- QTextStream ts(&file);
- ts.setCodec("UTF-8");
- ts << fileName << endl;
- }
- {
- QFile file(fileName);
- QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
- QTextStream ts(&file);
- ts.setCodec("UTF-8");
- QString line = ts.readLine();
- QCOMPARE(line, fileName);
- }
- QVERIFY(QFile::remove(fileName));
-}
-
-
-void tst_QFile::longFileName_data()
-{
- QTest::addColumn<QString>("fileName");
-
- QTest::newRow( "16 chars" ) << QString::fromLatin1("longFileName.txt");
- QTest::newRow( "52 chars" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName.txt");
- QTest::newRow( "148 chars" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName.txt");
- QTest::newRow( "244 chars" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName.txt");
- QTest::newRow( "244 chars to absolutepath" ) << QFileInfo(QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName.txt")).absoluteFilePath();
- /* needs to be put on a windows 2000 > test machine
- QTest::newRow( "244 chars on UNC" ) << QString::fromLatin1("//arsia/D/troll/tmp/longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName.txt");*/
-}
-
-void tst_QFile::longFileName()
-{
- QFETCH(QString, fileName);
- if (QFile::exists(fileName)) {
- QVERIFY(QFile::remove(fileName));
- }
- {
- QFile file(fileName);
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QEXPECT_FAIL("244 chars", "Full pathname must be less than 260 chars", Abort);
- QEXPECT_FAIL("244 chars to absolutepath", "Full pathname must be less than 260 chars", Abort);
-#endif
- QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
- QTextStream ts(&file);
- ts << fileName << endl;
- }
- {
- QFile file(fileName);
- QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
- QTextStream ts(&file);
- QString line = ts.readLine();
- QCOMPARE(line, fileName);
- }
- QString newName = fileName + QLatin1String("1");
- {
- QVERIFY(QFile::copy(fileName, newName));
- QFile file(newName);
- QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
- QTextStream ts(&file);
- QString line = ts.readLine();
- QCOMPARE(line, fileName);
-
- }
- QVERIFY(QFile::remove(newName));
- {
- QVERIFY(QFile::rename(fileName, newName));
- QFile file(newName);
- QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
- QTextStream ts(&file);
- QString line = ts.readLine();
- QCOMPARE(line, fileName);
- }
- QVERIFY(QFile::exists(newName));
- QVERIFY(QFile::remove(newName));
-}
-
-class MyEngine : public QAbstractFileEngine
-{
-public:
- MyEngine(int n) { number = n; }
- virtual ~MyEngine() {}
-
- void setFileName(const QString &) {}
- bool open(int ) { return false; }
- bool close() { return false; }
- bool flush() { return false; }
- qint64 size() const { return 123 + number; }
- qint64 at() const { return -1; }
- bool seek(qint64) { return false; }
- bool isSequential() const { return false; }
- qint64 read(char *, qint64) { return -1; }
- qint64 write(const char *, qint64) { return -1; }
- bool remove() { return false; }
- bool copy(const QString &) { return false; }
- bool rename(const QString &) { return false; }
- bool link(const QString &) { return false; }
- bool mkdir(const QString &, bool) const { return false; }
- bool rmdir(const QString &, bool) const { return false; }
- bool setSize(qint64) { return false; }
- QStringList entryList(QDir::Filters, const QStringList &) const { return QStringList(); }
- bool caseSensitive() const { return false; }
- bool isRelativePath() const { return false; }
- FileFlags fileFlags(FileFlags) const { return 0; }
- bool chmod(uint) { return false; }
- QString fileName(FileName) const { return name; }
- uint ownerId(FileOwner) const { return 0; }
- QString owner(FileOwner) const { return QString(); }
- QDateTime fileTime(FileTime) const { return QDateTime(); }
-
-private:
- int number;
- QString name;
-};
-
-class MyHandler : public QAbstractFileEngineHandler
-{
-public:
- inline QAbstractFileEngine *create(const QString &) const
- {
- return new MyEngine(1);
- }
-};
-
-class MyHandler2 : public QAbstractFileEngineHandler
-{
-public:
- inline QAbstractFileEngine *create(const QString &) const
- {
- return new MyEngine(2);
- }
-};
-
-void tst_QFile::fileEngineHandler()
-{
- // A file that does not exist has a size of 0.
- QFile::remove("ole.bull");
- QFile file("ole.bull");
- QCOMPARE(file.size(), qint64(0));
-
- // Instantiating our handler will enable the new engine.
- MyHandler handler;
- file.setFileName("ole.bull");
- QCOMPARE(file.size(), qint64(124));
-
- // A new, identical handler should take preference over the last one.
- MyHandler2 handler2;
- file.setFileName("ole.bull");
- QCOMPARE(file.size(), qint64(125));
-
-}
-
-class MyRecursiveHandler : public QAbstractFileEngineHandler
-{
-public:
- inline QAbstractFileEngine *create(const QString &fileName) const
- {
- if (fileName.startsWith(":!")) {
- QDir dir;
- QString realFile = SRCDIR + fileName.mid(2);
- if (dir.exists(realFile))
- return new QFSFileEngine(realFile);
- }
- return 0;
- }
-};
-
-void tst_QFile::useQFileInAFileHandler()
-{
- // This test should not dead-lock
- MyRecursiveHandler handler;
- QFile file(":!tst_qfile.cpp");
- QVERIFY(file.exists());
-}
-
-void tst_QFile::getCharFF()
-{
- QFile file("file.txt");
- file.open(QFile::ReadWrite);
- file.write("\xff\xff\xff");
- file.flush();
- file.seek(0);
-
- char c;
- QVERIFY(file.getChar(&c));
- QVERIFY(file.getChar(&c));
- QVERIFY(file.getChar(&c));
-}
-
-void tst_QFile::remove_and_exists()
-{
- QFile::remove("tull_i_grunn.txt");
- QFile f("tull_i_grunn.txt");
-
- QVERIFY(!f.exists());
-
- bool opened = f.open(QIODevice::WriteOnly);
- QVERIFY(opened);
-
- f.write(QString("testing that remove/exists work...").toLatin1());
- f.close();
-
- QVERIFY(f.exists());
-
- f.remove();
- QVERIFY(!f.exists());
-}
-
-void tst_QFile::removeOpenFile()
-{
- {
- // remove an opened, write-only file
- QFile::remove("remove_unclosed.txt");
- QFile f("remove_unclosed.txt");
-
- QVERIFY(!f.exists());
- bool opened = f.open(QIODevice::WriteOnly);
- QVERIFY(opened);
- f.write(QString("testing that remove closes the file first...").toLatin1());
-
- bool removed = f.remove(); // remove should both close and remove the file
- QVERIFY(removed);
- QVERIFY(!f.isOpen());
- QVERIFY(!f.exists());
- QVERIFY(f.error() == QFile::NoError);
- }
-
- {
- // remove an opened, read-only file
- QFile::remove("remove_unclosed.txt");
-
- // first, write a file that we can remove
- {
- QFile f("remove_unclosed.txt");
- QVERIFY(!f.exists());
- bool opened = f.open(QIODevice::WriteOnly);
- QVERIFY(opened);
- f.write(QString("testing that remove closes the file first...").toLatin1());
- f.close();
- }
-
- QFile f("remove_unclosed.txt");
- bool opened = f.open(QIODevice::ReadOnly);
- QVERIFY(opened);
- f.readAll();
- // this used to only fail on FreeBSD (and Mac OS X)
- QVERIFY(f.flush());
- bool removed = f.remove(); // remove should both close and remove the file
- QVERIFY(removed);
- QVERIFY(!f.isOpen());
- QVERIFY(!f.exists());
- QVERIFY(f.error() == QFile::NoError);
- }
-}
-
-void tst_QFile::fullDisk()
-{
- QFile file("/dev/full");
- if (!file.exists())
- QSKIP("/dev/full doesn't exist on this system", SkipAll);
-
- QVERIFY(file.open(QIODevice::WriteOnly));
- file.write("foobar", 6);
-
- QVERIFY(!file.flush());
- QCOMPARE(file.error(), QFile::ResourceError);
- QVERIFY(!file.flush());
- QCOMPARE(file.error(), QFile::ResourceError);
-
- char c = 0;
- file.write(&c, 0);
- QVERIFY(!file.flush());
- QCOMPARE(file.error(), QFile::ResourceError);
- QCOMPARE(file.write(&c, 1), qint64(1));
- QVERIFY(!file.flush());
- QCOMPARE(file.error(), QFile::ResourceError);
-
- file.close();
- QVERIFY(!file.isOpen());
- QCOMPARE(file.error(), QFile::ResourceError);
-
- file.open(QIODevice::WriteOnly);
- QCOMPARE(file.error(), QFile::NoError);
- QVERIFY(file.flush()); // Shouldn't inherit write buffer
- file.close();
- QCOMPARE(file.error(), QFile::NoError);
-
- // try again without flush:
- QVERIFY(file.open(QIODevice::WriteOnly));
- file.write("foobar", 6);
- file.close();
- QVERIFY(file.error() != QFile::NoError);
-}
-
-void tst_QFile::writeLargeDataBlock_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<int>("type");
-
- QTest::newRow("localfile-QFile") << "./largeblockfile.txt" << (int)OpenQFile;
- QTest::newRow("localfile-Fd") << "./largeblockfile.txt" << (int)OpenFd;
- QTest::newRow("localfile-Stream") << "./largeblockfile.txt" << (int)OpenStream;
-#ifdef Q_OS_SYMBIAN
- QTest::newRow("localfile-RFile") << "./largeblockfile.txt" << (int)OpenRFile;
-#endif
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- // Some semi-randomness to avoid collisions.
- QTest::newRow("unc file")
- << QString("//" + QtNetworkSettings::winServerName() + "/TESTSHAREWRITABLE/largefile-%1-%2.txt")
- .arg(QHostInfo::localHostName())
- .arg(QTime::currentTime().msec()) << (int)OpenQFile;
-#endif
-}
-
-static QByteArray getLargeDataBlock()
-{
- static QByteArray array;
-
- if (array.isNull())
- {
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- int resizeSize = 1024 * 1024; // WinCE and Symbian do not have much space
-#else
- int resizeSize = 64 * 1024 * 1024;
-#endif
- array.resize(resizeSize);
- for (int i = 0; i < array.size(); ++i)
- array[i] = uchar(i);
- }
-
- return array;
-}
-
-void tst_QFile::writeLargeDataBlock()
-{
- QFETCH(QString, fileName);
- QFETCH( int, type );
-
- QByteArray const originalData = getLargeDataBlock();
-
- {
- QFile file(fileName);
-
- QVERIFY2( openFile(file, QIODevice::WriteOnly, (FileType)type),
- qPrintable(QString("Couldn't open file for writing: [%1]").arg(fileName)) );
- QCOMPARE( file.write(originalData), (qint64)originalData.size() );
- QVERIFY( file.flush() );
-
- closeFile(file);
- }
-
- QByteArray readData;
-
- {
- QFile file(fileName);
-
- QVERIFY2( openFile(file, QIODevice::ReadOnly, (FileType)type),
- qPrintable(QString("Couldn't open file for reading: [%1]").arg(fileName)) );
- readData = file.readAll();
- closeFile(file);
- }
-
- QCOMPARE( readData, originalData );
- QVERIFY( QFile::remove(fileName) );
-}
-
-void tst_QFile::readFromWriteOnlyFile()
-{
- QFile file("writeonlyfile");
- QVERIFY(file.open(QFile::WriteOnly));
- char c;
- QTest::ignoreMessage(QtWarningMsg, "QIODevice::read: WriteOnly device");
- QCOMPARE(file.read(&c, 1), qint64(-1));
-}
-
-void tst_QFile::writeToReadOnlyFile()
-{
- QFile file("readonlyfile");
- QVERIFY(file.open(QFile::ReadOnly));
- char c = 0;
- QTest::ignoreMessage(QtWarningMsg, "QIODevice::write: ReadOnly device");
- QCOMPARE(file.write(&c, 1), qint64(-1));
-}
-
-void tst_QFile::virtualFile()
-{
- // test if QFile works with virtual files
- QString fname;
-#if defined(Q_OS_LINUX)
- fname = "/proc/self/maps";
-#elif defined(Q_OS_AIX)
- fname = QString("/proc/%1/map").arg(getpid());
-#elif defined(Q_OS_FREEBSD) || defined(Q_OS_NETBSD)
- fname = "/proc/curproc/map";
-#else
- QSKIP("This platform does not have 0-sized virtual files", SkipAll);
-#endif
-
- // consistency check
- QFileInfo fi(fname);
- QVERIFY(fi.exists());
- QVERIFY(fi.isFile());
- QCOMPARE(fi.size(), Q_INT64_C(0));
-
- // open the file
- QFile f(fname);
- QVERIFY(f.open(QIODevice::ReadOnly));
- QCOMPARE(f.size(), Q_INT64_C(0));
- QVERIFY(f.atEnd());
-
- // read data
- QByteArray data = f.read(16);
- QCOMPARE(data.size(), 16);
- QCOMPARE(f.pos(), Q_INT64_C(16));
-
- // line-reading
- data = f.readLine();
- QVERIFY(!data.isEmpty());
-
- // read all:
- data = f.readAll();
- QVERIFY(f.pos() != 0);
- QVERIFY(!data.isEmpty());
-
- // seeking
- QVERIFY(f.seek(1));
- QCOMPARE(f.pos(), Q_INT64_C(1));
-}
-
-void tst_QFile::textFile()
-{
-#if defined(Q_OS_WINCE)
- FILE *fs = ::fopen((QCoreApplication::applicationDirPath() + "/writeabletextfile").toAscii() , "wt");
-#elif defined(Q_OS_WIN)
- FILE *fs = ::fopen("writeabletextfile", "wt");
-#else
- FILE *fs = ::fopen("writeabletextfile", "w");
-#endif
- QFile f;
- QByteArray part1("This\nis\na\nfile\nwith\nnewlines\n");
- QByteArray part2("Add\nsome\nmore\nnewlines\n");
-
- QVERIFY(f.open(fs, QIODevice::WriteOnly));
- f.write(part1);
- f.write(part2);
- f.close();
- ::fclose(fs);
-
- QFile file("writeabletextfile");
- QVERIFY(file.open(QIODevice::ReadOnly));
-
- QByteArray data = file.readAll();
-
- QByteArray expected = part1 + part2;
-#ifdef Q_OS_WIN
- expected.replace("\n", "\015\012");
-#endif
- QCOMPARE(data, expected);
- file.close();
- file.remove();
-}
-
-void tst_QFile::rename_data()
-{
- QTest::addColumn<QString>("source");
- QTest::addColumn<QString>("destination");
- QTest::addColumn<bool>("result");
-
- QTest::newRow("a -> b") << QString("a") << QString("b") << false;
- QTest::newRow("a -> .") << QString("a") << QString(".") << false;
- QTest::newRow("renamefile -> renamefile") << QString("renamefile") << QString("renamefile") << false;
- QTest::newRow("renamefile -> noreadfile") << QString("renamefile") << QString("noreadfile") << false;
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
- QTest::newRow("renamefile -> /etc/renamefile") << QString("renamefile") << QString("/etc/renamefile") << false;
-#endif
- QTest::newRow("renamefile -> renamedfile") << QString("renamefile") << QString("renamedfile") << true;
- QTest::newRow("renamefile -> ..") << QString("renamefile") << QString("..") << false;
-}
-
-void tst_QFile::rename()
-{
- QFETCH(QString, source);
- QFETCH(QString, destination);
- QFETCH(bool, result);
-
- QFile::remove("renamedfile");
- QFile f("renamefile");
- f.open(QFile::WriteOnly);
- f.close();
-
- QFile file(source);
- QCOMPARE(file.rename(destination), result);
-
- if (result)
- QCOMPARE(file.error(), QFile::NoError);
- else
- QCOMPARE(file.error(), QFile::RenameError);
-
- QFile::remove("renamefile");
-}
-
-/*!
- \since 4.5
-
- Some special files have QFile::atEnd() returning true, even though there is
- more data available. True for corner cases, as well as some mounts on OS X.
-
- Here, we reproduce that condition by having a QFile sub-class with this
- peculiar atEnd() behavior.
-
- See task 231583.
- */
-void tst_QFile::renameWithAtEndSpecialFile() const
-{
- class PeculiarAtEnd : public QFile
- {
- public:
- virtual bool atEnd() const
- {
- return true;
- }
- };
-
- const QString newName(QLatin1String("newName.txt"));
- /* Cleanup, so we're a bit more robust. */
- QFile::remove(newName);
-
- const QString originalName(QString(SRCDIR "forRenaming.txt"));
-
- PeculiarAtEnd file;
- file.setFileName(originalName);
- QVERIFY(file.open(QIODevice::ReadOnly));
-
- QVERIFY(file.rename(newName));
-
- file.close();
- /* Guess what, we have to rename it back, otherwise we'll fail on second
- * invocation. */
- QVERIFY(QFile::rename(newName, originalName));
-}
-
-void tst_QFile::renameFallback()
-{
- // Using a resource file both to trigger QFile::rename's fallback handling
- // and as a *read-only* source whose move should fail.
- QFile file(":/rename-fallback.qrc");
- QVERIFY(file.exists() && "(test-precondition)");
- QFile::remove("file-rename-destination.txt");
-
- QVERIFY(!file.rename("file-rename-destination.txt"));
- QVERIFY(!QFile::exists("file-rename-destination.txt"));
- QVERIFY(!file.isOpen());
-}
-
-void tst_QFile::renameMultiple()
-{
- // create the file if it doesn't exist
- QFile file("file-to-be-renamed.txt");
- QFile file2("existing-file.txt");
- QVERIFY(file.open(QIODevice::ReadWrite) && "(test-precondition)");
- QVERIFY(file2.open(QIODevice::ReadWrite) && "(test-precondition)");
-
- // any stale files from previous test failures?
- QFile::remove("file-renamed-once.txt");
- QFile::remove("file-renamed-twice.txt");
-
- // begin testing
- QVERIFY(QFile::exists("existing-file.txt"));
- QVERIFY(!file.rename("existing-file.txt"));
- QCOMPARE(file.error(), QFile::RenameError);
- QCOMPARE(file.fileName(), QString("file-to-be-renamed.txt"));
-
- QVERIFY(file.rename("file-renamed-once.txt"));
- QVERIFY(!file.isOpen());
- QCOMPARE(file.fileName(), QString("file-renamed-once.txt"));
-
- QVERIFY(QFile::exists("existing-file.txt"));
- QVERIFY(!file.rename("existing-file.txt"));
- QCOMPARE(file.error(), QFile::RenameError);
- QCOMPARE(file.fileName(), QString("file-renamed-once.txt"));
-
- QVERIFY(file.rename("file-renamed-twice.txt"));
- QVERIFY(!file.isOpen());
- QCOMPARE(file.fileName(), QString("file-renamed-twice.txt"));
-
- QVERIFY(QFile::exists("existing-file.txt"));
- QVERIFY(!QFile::exists("file-to-be-renamed.txt"));
- QVERIFY(!QFile::exists("file-renamed-once.txt"));
- QVERIFY(QFile::exists("file-renamed-twice.txt"));
-
- file.remove();
- file2.remove();
- QVERIFY(!QFile::exists("file-renamed-twice.txt"));
- QVERIFY(!QFile::exists("existing-file.txt"));
-}
-
-void tst_QFile::appendAndRead()
-{
- QFile writeFile(QLatin1String("appendfile.txt"));
- QVERIFY(writeFile.open(QIODevice::WriteOnly | QIODevice::Truncate));
-
- QFile readFile(QLatin1String("appendfile.txt"));
- QVERIFY(readFile.open(QIODevice::ReadOnly));
-
- // Write to the end of the file, then read that character back, and so on.
- for (int i = 0; i < 100; ++i) {
- char c = '\0';
- writeFile.putChar(char(i % 256));
- writeFile.flush();
- QVERIFY(readFile.getChar(&c));
- QCOMPARE(c, char(i % 256));
- QCOMPARE(readFile.pos(), writeFile.pos());
- }
-
- // Write blocks and read them back
- for (int j = 0; j < 18; ++j) {
- writeFile.write(QByteArray(1 << j, '@'));
- writeFile.flush();
- QCOMPARE(readFile.read(1 << j).size(), 1 << j);
- }
-
- readFile.close();
- QFile::remove(QLatin1String("appendfile.txt"));
-}
-
-void tst_QFile::miscWithUncPathAsCurrentDir()
-{
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- QString current = QDir::currentPath();
- QVERIFY(QDir::setCurrent("//" + QtNetworkSettings::winServerName() + "/testshare"));
- QFile file("test.pri");
- QVERIFY(file.exists());
- QCOMPARE(int(file.size()), 34);
- QVERIFY(file.open(QIODevice::ReadOnly));
- QVERIFY(QDir::setCurrent(current));
-#endif
-}
-
-void tst_QFile::standarderror()
-{
- QFile f;
- bool ok = f.open(stderr, QFile::WriteOnly);
- QVERIFY(ok);
- f.close();
-}
-
-void tst_QFile::handle()
-{
- int fd;
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
- QFile file(SRCDIR "tst_qfile.cpp");
- QVERIFY(file.open(QIODevice::ReadOnly));
- fd = int(file.handle());
- QVERIFY(fd > 2);
- QCOMPARE(int(file.handle()), fd);
- char c = '\0';
- QT_READ(int(file.handle()), &c, 1);
- QCOMPARE(c, '/');
-
- // test if the QFile and the handle remain in sync
- QVERIFY(file.getChar(&c));
- QCOMPARE(c, '*');
-
- // same, but read from QFile first now
- file.close();
- QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Unbuffered));
- fd = int(file.handle());
- QVERIFY(fd > 2);
- QVERIFY(file.getChar(&c));
- QCOMPARE(c, '/');
-#ifdef Q_OS_UNIX
- QCOMPARE(QT_READ(fd, &c, 1), ssize_t(1));
-#else
- QCOMPARE(QT_READ(fd, &c, 1), 1);
-#endif
-
- QCOMPARE(c, '*');
-#endif
-
- //test round trip of adopted stdio file handle
- QFile file2;
- FILE *fp = fopen(SRCDIR "tst_qfile.cpp", "r");
- file2.open(fp, QIODevice::ReadOnly);
- QCOMPARE(int(file2.handle()), int(fileno(fp)));
- QCOMPARE(int(file2.handle()), int(fileno(fp)));
- fclose(fp);
-
- //test round trip of adopted posix file handle
-#ifdef Q_OS_UNIX
- QFile file3;
- fd = QT_OPEN(SRCDIR "tst_qfile.cpp", QT_OPEN_RDONLY);
- file3.open(fd, QIODevice::ReadOnly);
- QCOMPARE(int(file3.handle()), fd);
- QT_CLOSE(fd);
-#endif
-}
-
-void tst_QFile::nativeHandleLeaks()
-{
-#ifdef Q_OS_SYMBIAN
- QSKIP("test assumptions invalid for symbian", SkipAll);
-#else
- int fd1, fd2;
-
-#ifdef Q_OS_WIN
- HANDLE handle1, handle2;
-#endif
-
- {
- QFile file("qt_file.tmp");
- QVERIFY( file.open(QIODevice::ReadWrite) );
-
- fd1 = file.handle();
- QVERIFY( -1 != fd1 );
- }
-
-#ifdef Q_OS_WIN
- handle1 = ::CreateFileA("qt_file.tmp", GENERIC_READ, 0, NULL,
- OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- QVERIFY( INVALID_HANDLE_VALUE != handle1 );
- QVERIFY( ::CloseHandle(handle1) );
-#endif
-
- {
- QFile file("qt_file.tmp");
- QVERIFY( file.open(QIODevice::ReadOnly) );
-
- fd2 = file.handle();
- QVERIFY( -1 != fd2 );
- }
-
-#ifdef Q_OS_WIN
- handle2 = ::CreateFileA("qt_file.tmp", GENERIC_READ, 0, NULL,
- OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- QVERIFY( INVALID_HANDLE_VALUE != handle2 );
- QVERIFY( ::CloseHandle(handle2) );
-#endif
-
- QCOMPARE( fd2, fd1 );
-
-#ifdef Q_OS_WIN
- QCOMPARE( handle2, handle1 );
-#endif
-#endif
-}
-
-void tst_QFile::readEof_data()
-{
- QTest::addColumn<QString>("filename");
- QTest::addColumn<int>("imode");
-
- QTest::newRow("buffered") << SRCDIR "testfile.txt" << 0;
- QTest::newRow("unbuffered") << SRCDIR "testfile.txt" << int(QIODevice::Unbuffered);
-
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
- QTest::newRow("sequential,buffered") << "/dev/null" << 0;
- QTest::newRow("sequential,unbuffered") << "/dev/null" << int(QIODevice::Unbuffered);
-#endif
-}
-
-void tst_QFile::readEof()
-{
- QFETCH(QString, filename);
- QFETCH(int, imode);
- QIODevice::OpenMode mode = QIODevice::OpenMode(imode);
-
- {
- QFile file(filename);
- QVERIFY(file.open(QIODevice::ReadOnly | mode));
- bool isSequential = file.isSequential();
- if (!isSequential) {
- QVERIFY(file.seek(245));
- QVERIFY(file.atEnd());
- }
-
- char buf[10];
- int ret = file.read(buf, sizeof buf);
- QCOMPARE(ret, 0);
- QVERIFY(file.error() == QFile::NoError);
- QVERIFY(file.atEnd());
-
- // Do it again to ensure that we get the same result
- ret = file.read(buf, sizeof buf);
- QCOMPARE(ret, 0);
- QVERIFY(file.error() == QFile::NoError);
- QVERIFY(file.atEnd());
- }
-
- {
- QFile file(filename);
- QVERIFY(file.open(QIODevice::ReadOnly | mode));
- bool isSequential = file.isSequential();
- if (!isSequential) {
- QVERIFY(file.seek(245));
- QVERIFY(file.atEnd());
- }
-
- QByteArray ret = file.read(10);
- QVERIFY(ret.isEmpty());
- QVERIFY(file.error() == QFile::NoError);
- QVERIFY(file.atEnd());
-
- // Do it again to ensure that we get the same result
- ret = file.read(10);
- QVERIFY(ret.isEmpty());
- QVERIFY(file.error() == QFile::NoError);
- QVERIFY(file.atEnd());
- }
-
- {
- QFile file(filename);
- QVERIFY(file.open(QIODevice::ReadOnly | mode));
- bool isSequential = file.isSequential();
- if (!isSequential) {
- QVERIFY(file.seek(245));
- QVERIFY(file.atEnd());
- }
-
- char buf[10];
- int ret = file.readLine(buf, sizeof buf);
- QCOMPARE(ret, -1);
- QVERIFY(file.error() == QFile::NoError);
- QVERIFY(file.atEnd());
-
- // Do it again to ensure that we get the same result
- ret = file.readLine(buf, sizeof buf);
- QCOMPARE(ret, -1);
- QVERIFY(file.error() == QFile::NoError);
- QVERIFY(file.atEnd());
- }
-
- {
- QFile file(filename);
- QVERIFY(file.open(QIODevice::ReadOnly | mode));
- bool isSequential = file.isSequential();
- if (!isSequential) {
- QVERIFY(file.seek(245));
- QVERIFY(file.atEnd());
- }
-
- QByteArray ret = file.readLine();
- QVERIFY(ret.isNull());
- QVERIFY(file.error() == QFile::NoError);
- QVERIFY(file.atEnd());
-
- // Do it again to ensure that we get the same result
- ret = file.readLine();
- QVERIFY(ret.isNull());
- QVERIFY(file.error() == QFile::NoError);
- QVERIFY(file.atEnd());
- }
-
- {
- QFile file(filename);
- QVERIFY(file.open(QIODevice::ReadOnly | mode));
- bool isSequential = file.isSequential();
- if (!isSequential) {
- QVERIFY(file.seek(245));
- QVERIFY(file.atEnd());
- }
-
- char c;
- QVERIFY(!file.getChar(&c));
- QVERIFY(file.error() == QFile::NoError);
- QVERIFY(file.atEnd());
-
- // Do it again to ensure that we get the same result
- QVERIFY(!file.getChar(&c));
- QVERIFY(file.error() == QFile::NoError);
- QVERIFY(file.atEnd());
- }
-}
-
-void tst_QFile::task167217()
-{
- // Regression introduced in 4.3.0; after a failed stat, pos() could no
- // longer be calculated correctly.
- QFile::remove("tmp.txt");
- QFile file("tmp.txt");
- QVERIFY(!file.exists());
- QVERIFY(file.open(QIODevice::Append));
- QVERIFY(file.exists());
- file.write("qt430", 5);
- QVERIFY(!file.isSequential());
- QCOMPARE(file.pos(), qint64(5));
- file.remove();
-}
-
-#define FILESIZE 65536 * 3
-
-void tst_QFile::map_data()
-{
- QTest::addColumn<int>("fileSize");
- QTest::addColumn<int>("offset");
- QTest::addColumn<int>("size");
- QTest::addColumn<QFile::FileError>("error");
-
- QTest::newRow("zero") << FILESIZE << 0 << FILESIZE << QFile::NoError;
- QTest::newRow("small, but 0") << FILESIZE << 30 << FILESIZE - 30 << QFile::NoError;
- QTest::newRow("a page") << FILESIZE << 4096 << FILESIZE - 4096 << QFile::NoError;
- QTest::newRow("+page") << FILESIZE << 5000 << FILESIZE - 5000 << QFile::NoError;
- QTest::newRow("++page") << FILESIZE << 65576 << FILESIZE - 65576 << QFile::NoError;
- QTest::newRow("bad size") << FILESIZE << 0 << -1 << QFile::ResourceError;
- QTest::newRow("bad offset") << FILESIZE << -1 << 1 << QFile::UnspecifiedError;
- QTest::newRow("zerozero") << FILESIZE << 0 << 0 << QFile::UnspecifiedError;
-}
-
-void tst_QFile::map()
-{
- QFETCH(int, fileSize);
- QFETCH(int, offset);
- QFETCH(int, size);
- QFETCH(QFile::FileError, error);
-
- QString fileName = QDir::currentPath() + '/' + "qfile_map_testfile";
-
-#ifdef Q_WS_WINCE
- fileName = QFileInfo(fileName).absoluteFilePath();
-#endif
-
- if (QFile::exists(fileName)) {
- QVERIFY(QFile::setPermissions(fileName,
- QFile::WriteOwner | QFile::ReadOwner | QFile::WriteUser | QFile::ReadUser));
- QFile::remove(fileName);
- }
- QFile file(fileName);
-
- // invalid, not open
- uchar *memory = file.map(0, size);
- QVERIFY(!memory);
- QCOMPARE(file.error(), QFile::PermissionsError);
- QVERIFY(!file.unmap(memory));
- QCOMPARE(file.error(), QFile::PermissionsError);
-
- // make a file
- QVERIFY(file.open(QFile::ReadWrite));
- QVERIFY(file.resize(fileSize));
- QVERIFY(file.flush());
- file.close();
- QVERIFY(file.open(QFile::ReadWrite));
- memory = file.map(offset, size);
- if (error != QFile::NoError) {
-
- QVERIFY(file.error() != QFile::NoError);
- return;
- }
-
- QCOMPARE(file.error(), error);
- QVERIFY(memory);
- memory[0] = 'Q';
- QVERIFY(file.unmap(memory));
- QCOMPARE(file.error(), QFile::NoError);
-
- // Verify changes were saved
- memory = file.map(offset, size);
- QCOMPARE(file.error(), QFile::NoError);
- QVERIFY(memory);
- QVERIFY(memory[0] == 'Q');
- QVERIFY(file.unmap(memory));
- QCOMPARE(file.error(), QFile::NoError);
-
- // hpux wont let you map multiple times.
-#if !defined(Q_OS_HPUX) && !defined(Q_USE_DEPRECATED_MAP_API) && !defined(Q_OS_WINCE)
- // exotic test to make sure that multiple maps work
-
- // note: windows ce does not reference count mutliple maps
- // it's essentially just the same reference but it
- // cause a resource lock on the file which prevents it
- // from being removed uchar *memory1 = file.map(0, file.size());
- uchar *memory1 = file.map(0, file.size());
- QCOMPARE(file.error(), QFile::NoError);
- uchar *memory2 = file.map(0, file.size());
- QCOMPARE(file.error(), QFile::NoError);
- QVERIFY(memory1);
- QVERIFY(memory2);
- QVERIFY(file.unmap(memory1));
- QCOMPARE(file.error(), QFile::NoError);
- QVERIFY(file.unmap(memory2));
- QCOMPARE(file.error(), QFile::NoError);
- memory1 = file.map(0, file.size());
- QCOMPARE(file.error(), QFile::NoError);
- QVERIFY(memory1);
- QVERIFY(file.unmap(memory1));
- QCOMPARE(file.error(), QFile::NoError);
-#endif
-
- file.close();
-
-#if defined(Q_OS_SYMBIAN)
- if (false) // No permissions for user makes no sense in Symbian
-#elif defined(Q_OS_UNIX)
- if (::getuid() != 0)
- // root always has permissions
-#endif
- {
- // Change permissions on a file, just to confirm it would fail
- QFile::Permissions originalPermissions = file.permissions();
- QVERIFY(file.setPermissions(QFile::ReadOther));
- QVERIFY(!file.open(QFile::ReadWrite));
- memory = file.map(offset, size);
- QCOMPARE(file.error(), QFile::PermissionsError);
- QVERIFY(!memory);
- QVERIFY(file.setPermissions(originalPermissions));
- }
- QVERIFY(file.remove());
-}
-
-void tst_QFile::mapResource_data()
-{
- QTest::addColumn<int>("offset");
- QTest::addColumn<int>("size");
- QTest::addColumn<QFile::FileError>("error");
- QTest::addColumn<QString>("fileName");
-
- QString validFile = ":/tst_qfileinfo/resources/file1.ext1";
- QString invalidFile = ":/tst_qfileinfo/resources/filefoo.ext1";
-
- for (int i = 0; i < 2; ++i) {
- QString file = (i == 0) ? validFile : invalidFile;
- QTest::newRow("0, 0") << 0 << 0 << QFile::UnspecifiedError << file;
- QTest::newRow("0, BIG") << 0 << 4096 << QFile::UnspecifiedError << file;
- QTest::newRow("-1, 0") << -1 << 0 << QFile::UnspecifiedError << file;
- QTest::newRow("0, -1") << 0 << -1 << QFile::UnspecifiedError << file;
- }
-
- QTest::newRow("0, 1") << 0 << 1 << QFile::NoError << validFile;
-}
-
-void tst_QFile::mapResource()
-{
- QFETCH(QString, fileName);
- QFETCH(int, offset);
- QFETCH(int, size);
- QFETCH(QFile::FileError, error);
-
- QFile file(fileName);
- uchar *memory = file.map(offset, size);
- QCOMPARE(file.error(), error);
- QVERIFY((error == QFile::NoError) ? (memory != 0) : (memory == 0));
- if (error == QFile::NoError)
- QCOMPARE(QString(memory[0]), QString::number(offset + 1));
- QVERIFY(file.unmap(memory));
-}
-
-void tst_QFile::mapOpenMode_data()
-{
- QTest::addColumn<int>("openMode");
-
- QTest::newRow("ReadOnly") << int(QIODevice::ReadOnly);
- //QTest::newRow("WriteOnly") << int(QIODevice::WriteOnly); // this doesn't make sense
- QTest::newRow("ReadWrite") << int(QIODevice::ReadWrite);
- QTest::newRow("ReadOnly,Unbuffered") << int(QIODevice::ReadOnly | QIODevice::Unbuffered);
- QTest::newRow("ReadWrite,Unbuffered") << int(QIODevice::ReadWrite | QIODevice::Unbuffered);
-}
-
-void tst_QFile::mapOpenMode()
-{
- QFETCH(int, openMode);
- static const qint64 fileSize = 4096;
-
- QByteArray pattern(fileSize, 'A');
-
- QString fileName = QDir::currentPath() + '/' + "qfile_map_testfile";
- if (QFile::exists(fileName)) {
- QVERIFY(QFile::setPermissions(fileName,
- QFile::WriteOwner | QFile::ReadOwner | QFile::WriteUser | QFile::ReadUser));
- QFile::remove(fileName);
- }
- QFile file(fileName);
-
- // make a file
- QVERIFY(file.open(QFile::ReadWrite));
- QVERIFY(file.write(pattern));
- QVERIFY(file.flush());
- file.close();
-
- // open according to our mode
- QVERIFY(file.open(QIODevice::OpenMode(openMode)));
-
- uchar *memory = file.map(0, fileSize);
- QVERIFY(memory);
- QVERIFY(memcmp(memory, pattern, fileSize) == 0);
-
- if (openMode & QIODevice::WriteOnly) {
- // try to write to the file
- *memory = 'a';
- file.unmap(memory);
- file.close();
- file.open(QIODevice::OpenMode(openMode));
- file.seek(0);
- char c;
- QVERIFY(file.getChar(&c));
- QCOMPARE(c, 'a');
- }
-
- file.close();
-}
-
-void tst_QFile::openDirectory()
-{
- QFile f1(SRCDIR "resources");
- // it's a directory, it must exist
- QVERIFY(f1.exists());
-
- // ...but not be openable
- QVERIFY(!f1.open(QIODevice::ReadOnly));
- f1.close();
- QVERIFY(!f1.open(QIODevice::ReadOnly|QIODevice::Unbuffered));
- f1.close();
- QVERIFY(!f1.open(QIODevice::ReadWrite));
- f1.close();
- QVERIFY(!f1.open(QIODevice::WriteOnly));
- f1.close();
- QVERIFY(!f1.open(QIODevice::WriteOnly|QIODevice::Unbuffered));
- f1.close();
-}
-
-void tst_QFile::openStandardStreamsFileDescriptors()
-{
-#ifdef Q_WS_WINCE
- //allthough Windows CE (not mobile!) has functions that allow redirecting
- //the standard file descriptors to a file (see SetStdioPathW/GetStdioPathW)
- //it does not have functions to simply open them like below .
- QSKIP("Opening standard streams on Windows CE via descriptor not implemented", SkipAll);
-#endif
- // Using file descriptors
- {
- QFile in;
- in.open(STDIN_FILENO, QIODevice::ReadOnly);
- QCOMPARE( in.pos(), (qint64)0 );
- QCOMPARE( in.size(), (qint64)0 );
- QVERIFY( in.isSequential() );
- }
-
- {
- QFile out;
- out.open(STDOUT_FILENO, QIODevice::WriteOnly);
- QCOMPARE( out.pos(), (qint64)0 );
- QCOMPARE( out.size(), (qint64)0 );
- QVERIFY( out.isSequential() );
- }
-
- {
- QFile err;
- err.open(STDERR_FILENO, QIODevice::WriteOnly);
- QCOMPARE( err.pos(), (qint64)0 );
- QCOMPARE( err.size(), (qint64)0 );
- QVERIFY( err.isSequential() );
- }
-}
-
-void tst_QFile::openStandardStreamsBufferedStreams()
-{
-#if defined (Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- QSKIP("Unix only test.", SkipAll);
-#endif
- // Using streams
- {
- QFile in;
- in.open(stdin, QIODevice::ReadOnly);
- QCOMPARE( in.pos(), (qint64)0 );
- QCOMPARE( in.size(), (qint64)0 );
- QVERIFY( in.isSequential() );
- }
-
- {
- QFile out;
- out.open(stdout, QIODevice::WriteOnly);
- QCOMPARE( out.pos(), (qint64)0 );
- QCOMPARE( out.size(), (qint64)0 );
- QVERIFY( out.isSequential() );
- }
-
- {
- QFile err;
- err.open(stderr, QIODevice::WriteOnly);
- QCOMPARE( err.pos(), (qint64)0 );
- QCOMPARE( err.size(), (qint64)0 );
- QVERIFY( err.isSequential() );
- }
-}
-
-void tst_QFile::openStandardStreams()
-{
- openStandardStreamsFileDescriptors();
- openStandardStreamsBufferedStreams();
-}
-
-void tst_QFile::writeNothing()
-{
- for (int i = 0; i < NumberOfFileTypes; ++i) {
- QFile file("file.txt");
- QVERIFY( openFile(file, QIODevice::WriteOnly | QIODevice::Unbuffered, FileType(i)) );
- QVERIFY( 0 == file.write((char *)0, 0) );
- QCOMPARE( file.error(), QFile::NoError );
- closeFile(file);
- }
-}
-
-void tst_QFile::resize_data()
-{
- QTest::addColumn<int>("filetype");
-
- QTest::newRow("native") << int(OpenQFile);
- QTest::newRow("fileno") << int(OpenFd);
- QTest::newRow("stream") << int(OpenStream);
-#ifdef Q_OS_SYMBIAN
- QTest::newRow("rfile") << int(OpenRFile);
-#endif
-}
-
-void tst_QFile::resize()
-{
- QFETCH(int, filetype);
- QString filename(QLatin1String("file.txt"));
- QFile file(filename);
- QVERIFY(openFile(file, QIODevice::ReadWrite, FileType(filetype)));
- QVERIFY(file.resize(8));
- QCOMPARE(file.size(), qint64(8));
- closeFile(file);
- QFile::resize(filename, 4);
- QCOMPARE(QFileInfo(filename).size(), qint64(4));
- QVERIFY(QFile::remove(filename));
-}
-
-void tst_QFile::objectConstructors()
-{
- QObject ob;
- QFile* file1 = new QFile(SRCDIR "testfile.txt", &ob);
- QFile* file2 = new QFile(&ob);
- QVERIFY(file1->exists());
- QVERIFY(!file2->exists());
-}
-
-#ifdef Q_OS_SYMBIAN
-void tst_QFile::platformSecurity_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<bool>("readable");
- QTest::addColumn<bool>("writable");
-
- QString selfname = QCoreApplication::applicationFilePath();
- QString ownprivate = QCoreApplication::applicationDirPath();
- QString owndrive = selfname.left(2);
- bool amiprivileged = RProcess().HasCapability(ECapabilityAllFiles);
- QTest::newRow("resource") << owndrive + "/resource/apps/tst_qfile.rsc" << true << amiprivileged;
- QTest::newRow("sys") << selfname << amiprivileged << false;
- QTest::newRow("own private") << ownprivate + "/testfile.txt" << true << true;
- QTest::newRow("other private") << owndrive + "/private/10003a3f/import/apps/tst_qfile_reg.rsc" << amiprivileged << amiprivileged;
-}
-
-void tst_QFile::platformSecurity()
-{
- QFETCH(QString,file);
- QFETCH(bool,readable);
- QFETCH(bool,writable);
-
- {
- QFile f(file);
- QCOMPARE(f.open(QIODevice::ReadOnly), readable);
- }
-
- {
- QFile f(file);
- QCOMPARE(f.open(QIODevice::ReadOnly | QIODevice::Unbuffered), readable);
- }
-
- //append mode used to avoid truncating the files.
- {
- QFile f(file);
- QCOMPARE(f.open(QIODevice::WriteOnly | QIODevice::Append), writable);
- }
-
- {
- QFile f(file);
- QCOMPARE(f.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Unbuffered), writable);
- }
-
- {
- QFile f(file);
- QCOMPARE(f.open(QIODevice::ReadWrite), writable);
- }
-
- {
- QFile f(file);
- QCOMPARE(f.open(QIODevice::ReadWrite | QIODevice::Unbuffered), writable);
- }
-}
-#endif
-
-void tst_QFile::caseSensitivity()
-{
-#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_OS_MAC)
- const bool caseSensitive = false;
-#else
- const bool caseSensitive = true;
-#endif
- QByteArray testData("a little test");
- QString filename("File.txt");
- {
- QFile f(filename);
- QVERIFY(f.open(QIODevice::WriteOnly));
- QVERIFY(f.write(testData));
- f.close();
- }
- QStringList alternates;
- QFileInfo fi(filename);
- QVERIFY(fi.exists());
- alternates << "file.txt" << "File.TXT" << "fIlE.TxT" << fi.absoluteFilePath().toUpper() << fi.absoluteFilePath().toLower();
- foreach (QString alt, alternates) {
- QFileInfo fi2(alt);
- QCOMPARE(fi2.exists(), !caseSensitive);
- QCOMPARE(fi.size() == fi2.size(), !caseSensitive);
- QFile f2(alt);
- QCOMPARE(f2.open(QIODevice::ReadOnly), !caseSensitive);
- if (!caseSensitive)
- QCOMPARE(f2.readAll(), testData);
- }
-}
-
-//MSVCRT asserts when any function is called with a closed file handle.
-//This replaces the default crashing error handler with one that ignores the error (allowing EBADF to be returned)
-class AutoIgnoreInvalidParameter
-{
-public:
-#if defined(Q_OS_WIN) && defined (Q_CC_MSVC)
- static void ignore_invalid_parameter(const wchar_t*, const wchar_t*, const wchar_t*, unsigned int, uintptr_t) {}
- AutoIgnoreInvalidParameter()
- {
- oldHandler = _set_invalid_parameter_handler(ignore_invalid_parameter);
- //also disable the abort/retry/ignore popup
- oldReportMode = _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG);
- }
- ~AutoIgnoreInvalidParameter()
- {
- //restore previous settings
- _set_invalid_parameter_handler(oldHandler);
- _CrtSetReportMode(_CRT_ASSERT, oldReportMode);
- }
- _invalid_parameter_handler oldHandler;
- int oldReportMode;
-#endif
-};
-
-void tst_QFile::autocloseHandle()
-{
-#ifdef Q_OS_SYMBIAN
- // these tests are a bit different, because using a closed file handle results in a panic rather than error
- {
- QFile file("readonlyfile");
- QFile file2("readonlyfile");
- QVERIFY(openFile(file, QIODevice::ReadOnly, OpenRFile, QFile::AutoCloseHandle));
- // file is opened with mandatory lock, so opening again should fail
- QVERIFY(!file2.open(QIODevice::ReadOnly));
-
- file.close();
- // opening again should now succeed (because handle is closed)
- QVERIFY(file2.open(QIODevice::ReadOnly));
- }
-
- {
- QFile file("readonlyfile");
- QFile file2("readonlyfile");
- QVERIFY(openFile(file, QIODevice::ReadOnly, OpenRFile, QFile::DontCloseHandle));
- // file is opened with mandatory lock, so opening again should fail
- QVERIFY(!file2.open(QIODevice::ReadOnly));
-
- file.close();
- // opening again should still fail (because handle is not auto closed)
- QVERIFY(!file2.open(QIODevice::ReadOnly));
-
- rfile_.Close();
- // now it should succeed
- QVERIFY(file2.open(QIODevice::ReadOnly));
- }
-#endif
-
- {
- QFile file("readonlyfile");
- QVERIFY(openFile(file, QIODevice::ReadOnly, OpenFd, QFile::AutoCloseHandle));
- int fd = fd_;
- QCOMPARE(file.handle(), fd);
- file.close();
- fd_ = -1;
- QCOMPARE(file.handle(), -1);
- AutoIgnoreInvalidParameter a;
- Q_UNUSED(a);
- //file is closed, read should fail
- char buf;
- QCOMPARE((int)QT_READ(fd, &buf, 1), -1);
- QVERIFY(errno = EBADF);
- }
-
- {
- QFile file("readonlyfile");
- QVERIFY(openFile(file, QIODevice::ReadOnly, OpenFd, QFile::DontCloseHandle));
- QCOMPARE(file.handle(), fd_);
- file.close();
- QCOMPARE(file.handle(), -1);
- //file is not closed, read should succeed
- char buf;
- QCOMPARE((int)QT_READ(fd_, &buf, 1), 1);
- ::close(fd_);
- fd_ = -1;
- }
-
- {
- QFile file("readonlyfile");
- QVERIFY(openFile(file, QIODevice::ReadOnly, OpenStream, QFile::AutoCloseHandle));
- int fd = fileno(stream_);
- QCOMPARE(file.handle(), fd);
- file.close();
- stream_ = 0;
- QCOMPARE(file.handle(), -1);
- AutoIgnoreInvalidParameter a;
- Q_UNUSED(a);
- //file is closed, read should fail
- char buf;
- QCOMPARE((int)QT_READ(fd, &buf, 1), -1); //not using fread because the FILE* was freed by fclose
- }
-
- {
- QFile file("readonlyfile");
- QVERIFY(openFile(file, QIODevice::ReadOnly, OpenStream, QFile::DontCloseHandle));
- QCOMPARE(file.handle(), fileno(stream_));
- file.close();
- QCOMPARE(file.handle(), -1);
- //file is not closed, read should succeed
- char buf;
- QCOMPARE(int(::fread(&buf, 1, 1, stream_)), 1);
- ::fclose(stream_);
- stream_ = 0;
- }
-}
-
-QTEST_MAIN(tst_QFile)
-#include "tst_qfile.moc"
diff --git a/tests/auto/qfiledialog/qfiledialog.pro b/tests/auto/qfiledialog/qfiledialog.pro
index ec93f12a95..2bf215bbba 100644
--- a/tests/auto/qfiledialog/qfiledialog.pro
+++ b/tests/auto/qfiledialog/qfiledialog.pro
@@ -3,7 +3,7 @@
############################################################
load(qttest_p4)
-
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qfiledialog.cpp
diff --git a/tests/auto/qfiledialog/tst_qfiledialog.cpp b/tests/auto/qfiledialog/tst_qfiledialog.cpp
index 81da8a3f62..d9fd736e09 100644
--- a/tests/auto/qfiledialog/tst_qfiledialog.cpp
+++ b/tests/auto/qfiledialog/tst_qfiledialog.cpp
@@ -62,9 +62,9 @@
#include <qlayout.h>
#include "../../shared/util.h"
#if defined QT_BUILD_INTERNAL
-#include "../../../src/gui/dialogs/qsidebar_p.h"
-#include "../../../src/gui/dialogs/qfilesystemmodel_p.h"
-#include "../../../src/gui/dialogs/qfiledialog_p.h"
+#include "../../../src/widgets/dialogs/qsidebar_p.h"
+#include "../../../src/widgets/dialogs/qfilesystemmodel_p.h"
+#include "../../../src/widgets/dialogs/qfiledialog_p.h"
#endif
#include <QFileDialog>
#include <QFileSystemModel>
diff --git a/tests/auto/qfiledialog2/qfiledialog2.pro b/tests/auto/qfiledialog2/qfiledialog2.pro
index 5d1d72195d..14de040ec5 100644
--- a/tests/auto/qfiledialog2/qfiledialog2.pro
+++ b/tests/auto/qfiledialog2/qfiledialog2.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qfiledialog2.cpp
diff --git a/tests/auto/qfiledialog2/tst_qfiledialog2.cpp b/tests/auto/qfiledialog2/tst_qfiledialog2.cpp
index afa2e8f64a..085bdbc80e 100644
--- a/tests/auto/qfiledialog2/tst_qfiledialog2.cpp
+++ b/tests/auto/qfiledialog2/tst_qfiledialog2.cpp
@@ -61,9 +61,9 @@
#include <qlineedit.h>
#include <qlayout.h>
#include "../../shared/util.h"
-#include "../../../src/gui/dialogs/qsidebar_p.h"
-#include "../../../src/gui/dialogs/qfilesystemmodel_p.h"
-#include "../../../src/gui/dialogs/qfiledialog_p.h"
+#include "../../../src/widgets/dialogs/qsidebar_p.h"
+#include "../../../src/widgets/dialogs/qfilesystemmodel_p.h"
+#include "../../../src/widgets/dialogs/qfiledialog_p.h"
#include "../network-settings.h"
diff --git a/tests/auto/qfileiconprovider/qfileiconprovider.pro b/tests/auto/qfileiconprovider/qfileiconprovider.pro
index 3bf83ae5da..1e3d26de00 100644
--- a/tests/auto/qfileiconprovider/qfileiconprovider.pro
+++ b/tests/auto/qfileiconprovider/qfileiconprovider.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qfileiconprovider.cpp
diff --git a/tests/auto/qfileinfo/tst_qfileinfo.cpp b/tests/auto/qfileinfo/tst_qfileinfo.cpp
deleted file mode 100644
index 878493b8e3..0000000000
--- a/tests/auto/qfileinfo/tst_qfileinfo.cpp
+++ /dev/null
@@ -1,1811 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qfile.h>
-#include <qdir.h>
-#include <qcoreapplication.h>
-#include <qlibrary.h>
-#include <qtemporaryfile.h>
-#include <qdir.h>
-#include <qfileinfo.h>
-#ifdef Q_OS_UNIX
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <pwd.h>
-#endif
-#ifdef Q_OS_WIN
-#define _WIN32_WINNT 0x500
-#include <qt_windows.h>
-#include <qlibrary.h>
-#include <lm.h>
-#endif
-#include <qplatformdefs.h>
-#include <qdebug.h>
-#ifdef Q_OS_SYMBIAN
-#include <f32file.h>
-#include <private/qcore_symbian_p.h>
-#endif
-#include "../network-settings.h"
-#include <private/qfileinfo_p.h>
-#include "../../shared/filesystem.h"
-
-#if defined(Q_OS_SYMBIAN)
-# define SRCDIR ""
-# define NO_SYMLINKS
-#endif
-
-QT_BEGIN_NAMESPACE
-extern Q_AUTOTEST_EXPORT bool qIsLikelyToBeNfs(int /* handle */);
-QT_END_NAMESPACE
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QFileInfo : public QObject
-{
-Q_OBJECT
-
-public:
- tst_QFileInfo();
- ~tst_QFileInfo();
-
-private slots:
- void getSetCheck();
-
- void copy();
-
- void isFile_data();
- void isFile();
-
- void isDir_data();
- void isDir();
-
- void isRoot_data();
- void isRoot();
-
- void exists_data();
- void exists();
-
- void absolutePath_data();
- void absolutePath();
-
- void absFilePath_data();
- void absFilePath();
-
- void canonicalPath();
- void canonicalFilePath();
-
- void fileName_data();
- void fileName();
-
- void bundleName_data();
- void bundleName();
-
- void dir_data();
- void dir();
-
- void suffix_data();
- void suffix();
-
- void completeSuffix_data();
- void completeSuffix();
-
- void baseName_data();
- void baseName();
-
- void completeBaseName_data();
- void completeBaseName();
-
- void permission_data();
- void permission();
-
- void size_data();
- void size();
-
- void systemFiles();
-
- void compare_data();
- void compare();
-
- void consistent_data();
- void consistent();
-
- void fileTimes_data();
- void fileTimes();
- void fileTimes_oldFile();
-
- void isSymLink_data();
- void isSymLink();
-
- void isHidden_data();
- void isHidden();
-#if defined(Q_OS_MAC)
- void isHiddenFromFinder();
-#endif
-
- void isBundle_data();
- void isBundle();
-
- void isLocalFs_data();
- void isLocalFs();
-
- void refresh();
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- void ntfsJunctionPointsAndSymlinks_data();
- void ntfsJunctionPointsAndSymlinks();
- void brokenShortcut();
-#endif
-
- void isWritable();
- void isExecutable();
- void testDecomposedUnicodeNames_data();
- void testDecomposedUnicodeNames();
-
- void equalOperator() const;
- void equalOperatorWithDifferentSlashes() const;
- void notEqualOperator() const;
-
- void detachingOperations();
-
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
- void owner();
-#endif
- void group();
-
- void invalidState();
-};
-
-tst_QFileInfo::tst_QFileInfo()
-{
-}
-
-tst_QFileInfo::~tst_QFileInfo()
-{
- QFile::remove("brokenlink.lnk");
- QFile::remove("link.lnk");
- QFile::remove("file1");
- QFile::remove("dummyfile");
- QFile::remove("simplefile.txt");
- QFile::remove("longFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileName.txt");
-#ifdef Q_OS_SYMBIAN
- QFile::remove("hidden.txt");
- QFile::remove("nothidden.txt");
-#else
- QFile::remove("tempfile.txt");
-#endif
-
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
- QDir().rmdir("./.hidden-directory");
- QFile::remove("link_to_tst_qfileinfo");
-#endif
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- QDir().rmdir("./hidden-directory");
- QDir().rmdir("abs_symlink");
- QDir().rmdir("rel_symlink");
- QDir().rmdir("junction_pwd");
- QDir().rmdir("junction_root");
- QDir().rmdir("mountpoint");
- QFile::remove("abs_symlink.cpp");
- QFile::remove("rel_symlink.cpp");
-#endif
-}
-
-// Testing get/set functions
-void tst_QFileInfo::getSetCheck()
-{
- QFileInfo obj1;
- // bool QFileInfo::caching()
- // void QFileInfo::setCaching(bool)
- obj1.setCaching(false);
- QCOMPARE(false, obj1.caching());
- obj1.setCaching(true);
- QCOMPARE(true, obj1.caching());
-}
-
-static QFileInfoPrivate* getPrivate(QFileInfo &info)
-{
- return (*reinterpret_cast<QFileInfoPrivate**>(&info));
-}
-
-void tst_QFileInfo::copy()
-{
- QTemporaryFile *t;
- t = new QTemporaryFile;
- t->open();
- QFileInfo info(t->fileName());
- QVERIFY(info.exists());
-
- //copy constructor
- QFileInfo info2(info);
- QFileInfoPrivate *privateInfo = getPrivate(info);
- QFileInfoPrivate *privateInfo2 = getPrivate(info2);
- QCOMPARE(privateInfo, privateInfo2);
-
- //operator =
- QFileInfo info3 = info;
- QFileInfoPrivate *privateInfo3 = getPrivate(info3);
- QCOMPARE(privateInfo, privateInfo3);
- QCOMPARE(privateInfo2, privateInfo3);
-
- //refreshing info3 will detach it
- QFile file(info.absoluteFilePath());
- QVERIFY(file.open(QFile::WriteOnly));
- QCOMPARE(file.write("JAJAJAA"), qint64(7));
- file.flush();
-
- QTest::qWait(250);
-#if defined(Q_OS_WIN) || defined(Q_OS_WINCE)
- if (QSysInfo::windowsVersion() & QSysInfo::WV_VISTA ||
- QSysInfo::windowsVersion() & QSysInfo::WV_CE_based)
- file.close();
-#endif
-#if defined(Q_OS_WINCE)
- // On Windows CE we need to close the file.
- // Otherwise the content will be cached and not
- // flushed to the storage, although we flushed it
- // manually!!! CE has interim cache, we cannot influence.
- QTest::qWait(5000);
-#endif
- info3.refresh();
- privateInfo3 = getPrivate(info3);
- QVERIFY(privateInfo != privateInfo3);
- QVERIFY(privateInfo2 != privateInfo3);
- QCOMPARE(privateInfo, privateInfo2);
-}
-
-void tst_QFileInfo::isFile_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("expected");
-
- QTest::newRow("data0") << QDir::currentPath() << false;
- QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << true;
- QTest::newRow("data2") << ":/tst_qfileinfo/resources/" << false;
- QTest::newRow("data3") << ":/tst_qfileinfo/resources/file1" << true;
- QTest::newRow("data4") << ":/tst_qfileinfo/resources/afilethatshouldnotexist" << false;
-}
-
-void tst_QFileInfo::isFile()
-{
- QFETCH(QString, path);
- QFETCH(bool, expected);
-
- QFileInfo fi(path);
- QCOMPARE(fi.isFile(), expected);
-}
-
-
-void tst_QFileInfo::isDir_data()
-{
- // create a broken symlink
- QFile::remove("brokenlink.lnk");
- QFile::remove("dummyfile");
- QFile file3("dummyfile");
- file3.open(QIODevice::WriteOnly);
- if (file3.link("brokenlink.lnk")) {
- file3.remove();
- QFileInfo info3("brokenlink.lnk");
- QVERIFY( info3.isSymLink() );
- }
-
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("expected");
-
- QTest::newRow("data0") << QDir::currentPath() << true;
- QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << false;
- QTest::newRow("data2") << ":/tst_qfileinfo/resources/" << true;
- QTest::newRow("data3") << ":/tst_qfileinfo/resources/file1" << false;
- QTest::newRow("data4") << ":/tst_qfileinfo/resources/afilethatshouldnotexist" << false;
-
- QTest::newRow("simple dir") << SRCDIR "resources" << true;
- QTest::newRow("simple dir with slash") << SRCDIR "resources/" << true;
-
- QTest::newRow("broken link") << "brokenlink.lnk" << false;
-
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
- QTest::newRow("drive 1") << "c:" << true;
- QTest::newRow("drive 2") << "c:/" << true;
- //QTest::newRow("drive 2") << "t:s" << false;
-#endif
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
- QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
- QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << true;
- QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << true;
- QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << true;
- QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << true;
- QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << false;
-#endif
-}
-
-void tst_QFileInfo::isDir()
-{
- QFETCH(QString, path);
- QFETCH(bool, expected);
-
- QFileInfo fi(path);
- QCOMPARE(fi.isDir(), expected);
-}
-
-void tst_QFileInfo::isRoot_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("expected");
- QTest::newRow("data0") << QDir::currentPath() << false;
- QTest::newRow("data1") << "/" << true;
- QTest::newRow("data2") << "*" << false;
- QTest::newRow("data3") << "/*" << false;
- QTest::newRow("data4") << ":/tst_qfileinfo/resources/" << false;
- QTest::newRow("data5") << ":/" << true;
-
- QTest::newRow("simple dir") << SRCDIR "resources" << false;
- QTest::newRow("simple dir with slash") << SRCDIR "resources/" << false;
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
- QTest::newRow("drive 1") << "c:" << false;
- QTest::newRow("drive 2") << "c:/" << true;
- QTest::newRow("drive 3") << "p:/" << false;
-#endif
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
- QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
- QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << false;
- QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << false;
- QTest::newRow("unc 7") << "//ahostthatshouldnotexist" << false;
-#endif
-}
-
-void tst_QFileInfo::isRoot()
-{
- QFETCH(QString, path);
- QFETCH(bool, expected);
-
- QFileInfo fi(path);
- QCOMPARE(fi.isRoot(), expected);
-}
-
-void tst_QFileInfo::exists_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("expected");
-
- QTest::newRow("data0") << QDir::currentPath() << true;
- QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << true;
- QTest::newRow("data2") << "/I/do_not_expect_this_path_to_exist/" << false;
- QTest::newRow("data3") << ":/tst_qfileinfo/resources/" << true;
- QTest::newRow("data4") << ":/tst_qfileinfo/resources/file1" << true;
- QTest::newRow("data5") << ":/I/do_not_expect_this_path_to_exist/" << false;
- QTest::newRow("data6") << SRCDIR "resources/*" << false;
- QTest::newRow("data7") << SRCDIR "resources/*.foo" << false;
- QTest::newRow("data8") << SRCDIR "resources/*.ext1" << false;
- QTest::newRow("data9") << SRCDIR "resources/file?.ext1" << false;
- QTest::newRow("data10") << "." << true;
- QTest::newRow("data11") << ". " << false;
- QTest::newRow("empty") << "" << false;
-
- QTest::newRow("simple dir") << SRCDIR "resources" << true;
- QTest::newRow("simple dir with slash") << SRCDIR "resources/" << true;
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
- QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
- QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << true;
- QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << true;
- QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << true;
- QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << true;
- QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << false;
- QTest::newRow("unc 8") << "//" + QtNetworkSettings::winServerName() + "/asharethatshouldnotexist" << false;
- QTest::newRow("unc 9") << "//ahostthatshouldnotexist" << false;
-#endif
-}
-
-void tst_QFileInfo::exists()
-{
- QFETCH(QString, path);
- QFETCH(bool, expected);
-
- QFileInfo fi(path);
- QCOMPARE(fi.exists(), expected);
-}
-
-void tst_QFileInfo::absolutePath_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<QString>("path");
- QTest::addColumn<QString>("filename");
-
- QString drivePrefix;
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
- drivePrefix = QDir::currentPath().left(2);
- QString nonCurrentDrivePrefix =
- drivePrefix.left(1).compare("X", Qt::CaseInsensitive) == 0 ? QString("Y:") : QString("X:");
-
- // Make sure drive-relative paths return correct absolute paths (task 255326)
- QTest::newRow("<current drive>:my.dll") << drivePrefix + "my.dll" << QDir::currentPath() << "my.dll";
- QTest::newRow("<not current drive>:my.dll") << nonCurrentDrivePrefix + "my.dll"
- << nonCurrentDrivePrefix + "/"
- << "my.dll";
-#endif
- QTest::newRow("0") << "/machine/share/dir1/" << drivePrefix + "/machine/share/dir1" << "";
- QTest::newRow("1") << "/machine/share/dir1" << drivePrefix + "/machine/share" << "dir1";
- QTest::newRow("2") << "/usr/local/bin" << drivePrefix + "/usr/local" << "bin";
- QTest::newRow("3") << "/usr/local/bin/" << drivePrefix + "/usr/local/bin" << "";
- QTest::newRow("/test") << "/test" << drivePrefix + "/" << "test";
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- // see task 102898
- QTest::newRow("c:\\autoexec.bat") << "c:\\autoexec.bat" << "C:/"
- << "autoexec.bat";
-#endif
- QTest::newRow("QTBUG-19995.1") << drivePrefix + "/System/Library/StartupItems/../Frameworks"
- << drivePrefix + "/System/Library"
- << "Frameworks";
- QTest::newRow("QTBUG-19995.2") << drivePrefix + "/System/Library/StartupItems/../Frameworks/"
- << drivePrefix + "/System/Library/Frameworks" << "";
-}
-
-void tst_QFileInfo::absolutePath()
-{
- QFETCH(QString, file);
- QFETCH(QString, path);
- QFETCH(QString, filename);
-
- QFileInfo fi(file);
-
- QCOMPARE(fi.absolutePath(), path);
- QCOMPARE(fi.fileName(), filename);
-}
-
-void tst_QFileInfo::absFilePath_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<QString>("expected");
-
- QTest::newRow("relativeFile") << "tmp.txt" << QDir::currentPath() + "/tmp.txt";
- QTest::newRow("relativeFileInSubDir") << "temp/tmp.txt" << QDir::currentPath() + "/" + "temp/tmp.txt";
- QString drivePrefix;
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
- QString curr = QDir::currentPath();
-
- curr.remove(0, 2); // Make it a absolute path with no drive specifier: \depot\qt-4.2\tests\auto\qfileinfo
- QTest::newRow(".") << curr << QDir::currentPath();
- QTest::newRow("absFilePath") << "c:\\home\\andy\\tmp.txt" << "C:/home/andy/tmp.txt";
-
- // Make sure drive-relative paths return correct absolute paths (task 255326)
- drivePrefix = QDir::currentPath().left(2);
- QString nonCurrentDrivePrefix =
- drivePrefix.left(1).compare("X", Qt::CaseInsensitive) == 0 ? QString("Y:") : QString("X:");
-
- QTest::newRow("<current drive>:my.dll") << drivePrefix + "temp/my.dll" << QDir::currentPath() + "/temp/my.dll";
- QTest::newRow("<not current drive>:my.dll") << nonCurrentDrivePrefix + "temp/my.dll"
- << nonCurrentDrivePrefix + "/temp/my.dll";
-#else
- QTest::newRow("absFilePath") << "/home/andy/tmp.txt" << "/home/andy/tmp.txt";
-#endif
- QTest::newRow("QTBUG-19995") << drivePrefix + "/System/Library/StartupItems/../Frameworks"
- << drivePrefix + "/System/Library/Frameworks";
-}
-
-void tst_QFileInfo::absFilePath()
-{
- QFETCH(QString, file);
- QFETCH(QString, expected);
-
- QFileInfo fi(file);
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- QVERIFY(QString::compare(fi.absoluteFilePath(), expected, Qt::CaseInsensitive) == 0);
-#else
- QCOMPARE(fi.absoluteFilePath(), expected);
-#endif
-}
-
-void tst_QFileInfo::canonicalPath()
-{
- QTemporaryFile tempFile;
- tempFile.setAutoRemove(true);
- tempFile.open();
- QFileInfo fi(tempFile.fileName());
- QCOMPARE(fi.canonicalPath(), QFileInfo(QDir::tempPath()).canonicalFilePath());
-}
-
-void tst_QFileInfo::canonicalFilePath()
-{
- const QString fileName("tmp.canon");
- QFile tempFile(fileName);
- QVERIFY(tempFile.open(QFile::WriteOnly));
- QFileInfo fi(tempFile.fileName());
- QCOMPARE(fi.canonicalFilePath(), QDir::currentPath() + "/" + fileName);
- tempFile.remove();
-
- // This used to crash on Mac, verify that it doesn't anymore.
- QFileInfo info("/tmp/../../../../../../../../../../../../../../../../../");
- info.canonicalFilePath();
-
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
- // This used to crash on Mac
- QFileInfo dontCrash(QLatin1String("/"));
- QCOMPARE(dontCrash.canonicalFilePath(), QLatin1String("/"));
-#endif
-
-#ifndef Q_OS_WIN
- // test symlinks
- QFile::remove("link.lnk");
- {
- QFile file(SRCDIR "tst_qfileinfo.cpp");
- if (file.link("link.lnk")) {
- QFileInfo info1(file);
- QFileInfo info2("link.lnk");
- QCOMPARE(info1.canonicalFilePath(), info2.canonicalFilePath());
- }
- }
-# if !defined(Q_OS_SYMBIAN)
- // Symbian doesn't support links to directories
- {
- const QString link(QDir::tempPath() + QDir::separator() + "tst_qfileinfo");
- QFile::remove(link);
- QFile file(QDir::currentPath());
- if (file.link(link)) {
- QFile tempfile("tempfile.txt");
- tempfile.open(QIODevice::ReadWrite);
- tempfile.write("This file is generated by the QFileInfo autotest.");
- QVERIFY(tempfile.flush());
- tempfile.close();
-
- QFileInfo info1("tempfile.txt");
- QFileInfo info2(link + QDir::separator() + "tempfile.txt");
-
- QVERIFY(info1.exists());
- QVERIFY(info2.exists());
- QCOMPARE(info1.canonicalFilePath(), info2.canonicalFilePath());
-
- QFileInfo info3(link + QDir::separator() + "link.lnk");
- QFileInfo info4(SRCDIR "tst_qfileinfo.cpp");
- QVERIFY(!info3.canonicalFilePath().isEmpty());
- QCOMPARE(info4.canonicalFilePath(), info3.canonicalFilePath());
-
- tempfile.remove();
- }
- }
- {
- QString link(QDir::tempPath() + QDir::separator() + "tst_qfileinfo"
- + QDir::separator() + "link_to_tst_qfileinfo");
- QFile::remove(link);
-
- QFile file(QDir::tempPath() + QDir::separator() + "tst_qfileinfo"
- + QDir::separator() + "tst_qfileinfo.cpp");
- if (file.link(link))
- {
- QFileInfo info1("tst_qfileinfo.cpp");
- QFileInfo info2(link);
- QCOMPARE(info1.canonicalFilePath(), info2.canonicalFilePath());
- }
- }
-# endif
-#endif
-
-#ifdef Q_OS_WIN
- typedef BOOL (WINAPI *PtrCreateSymbolicLink)(LPTSTR, LPTSTR, DWORD);
- PtrCreateSymbolicLink ptrCreateSymbolicLink =
- (PtrCreateSymbolicLink)QLibrary::resolve(QLatin1String("kernel32"), "CreateSymbolicLinkW");
-
- if (!ptrCreateSymbolicLink) {
- QSKIP("Symbolic links aren't supported by FS", SkipAll);
- } else {
- // CreateSymbolicLink can return TRUE & still fail to create the link,
- // the error code in that case is ERROR_PRIVILEGE_NOT_HELD (1314)
- SetLastError(0);
- BOOL ret = ptrCreateSymbolicLink((wchar_t*)QString("res").utf16(), (wchar_t*)QString("resources").utf16(), 1);
- DWORD dwErr = GetLastError();
- if (!ret)
- QSKIP("Symbolic links aren't supported by FS", SkipAll);
- QString currentPath = QDir::currentPath();
- bool is_res_Current = QDir::setCurrent("res");
- if (!is_res_Current && dwErr == 1314)
- QSKIP("Not enough privilages to create Symbolic links", SkipAll);
- QCOMPARE(is_res_Current, true);
-
- QCOMPARE(QFileInfo("file1").canonicalFilePath(), currentPath + "/resources/file1");
-
- QCOMPARE(QDir::setCurrent(currentPath), true);
- QDir::current().rmdir("res");
- }
-#endif
-}
-
-void tst_QFileInfo::fileName_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<QString>("expected");
-
- QTest::newRow("relativeFile") << "tmp.txt" << "tmp.txt";
- QTest::newRow("relativeFileInSubDir") << "temp/tmp.txt" << "tmp.txt";
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
- QTest::newRow("absFilePath") << "c:\\home\\andy\\tmp.txt" << "tmp.txt";
-#else
- QTest::newRow("absFilePath") << "/home/andy/tmp.txt" << "tmp.txt";
-#endif
- QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "file1.ext1";
- QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "file1.ext1.ext2";
-
- QTest::newRow("ending slash [small]") << QString::fromLatin1("/a/") << QString::fromLatin1("");
- QTest::newRow("no ending slash [small]") << QString::fromLatin1("/a") << QString::fromLatin1("a");
-
- QTest::newRow("ending slash") << QString::fromLatin1("/somedir/") << QString::fromLatin1("");
- QTest::newRow("no ending slash") << QString::fromLatin1("/somedir") << QString::fromLatin1("somedir");
-}
-
-void tst_QFileInfo::fileName()
-{
- QFETCH(QString, file);
- QFETCH(QString, expected);
-
- QFileInfo fi(file);
- QCOMPARE(fi.fileName(), expected);
-}
-
-void tst_QFileInfo::bundleName_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<QString>("expected");
-
- QTest::newRow("root") << "/" << "";
- QTest::newRow("etc") << "/etc" << "";
-#ifdef Q_OS_MAC
- QTest::newRow("safari") << "/Applications/Safari.app" << "Safari";
-#endif
-}
-
-void tst_QFileInfo::bundleName()
-{
- QFETCH(QString, file);
- QFETCH(QString, expected);
-
- QFileInfo fi(file);
- QCOMPARE(fi.bundleName(), expected);
-}
-
-void tst_QFileInfo::dir_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<bool>("absPath");
- QTest::addColumn<QString>("expected");
-
- QTest::newRow("relativeFile") << "tmp.txt" << false << ".";
- QTest::newRow("relativeFileAbsPath") << "tmp.txt" << true << QDir::currentPath();
- QTest::newRow("relativeFileInSubDir") << "temp/tmp.txt" << false << "temp";
- QTest::newRow("relativeFileInSubDirAbsPath") << "temp/tmp.txt" << true << QDir::currentPath() + "/temp";
- QTest::newRow("absFilePath") << QDir::currentPath() + "/tmp.txt" << false << QDir::currentPath();
- QTest::newRow("absFilePathAbsPath") << QDir::currentPath() + "/tmp.txt" << true << QDir::currentPath();
- QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << true << ":/tst_qfileinfo/resources";
-}
-
-void tst_QFileInfo::dir()
-{
- QFETCH(QString, file);
- QFETCH(bool, absPath);
- QFETCH(QString, expected);
-
- QFileInfo fi(file);
- if (absPath) {
- QCOMPARE(fi.absolutePath(), expected);
- QCOMPARE(fi.absoluteDir().path(), expected);
- } else {
- QCOMPARE(fi.path(), expected);
- QCOMPARE(fi.dir().path(), expected);
- }
-}
-
-
-void tst_QFileInfo::suffix_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<QString>("expected");
-
- QTest::newRow("noextension0") << "file" << "";
- QTest::newRow("noextension1") << "/path/to/file" << "";
- QTest::newRow("data0") << "file.tar" << "tar";
- QTest::newRow("data1") << "file.tar.gz" << "gz";
- QTest::newRow("data2") << "/path/file/file.tar.gz" << "gz";
- QTest::newRow("data3") << "/path/file.tar" << "tar";
- QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "ext1";
- QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "ext2";
- QTest::newRow("hidden1") << ".ext1" << "ext1";
- QTest::newRow("hidden1") << ".ext" << "ext";
- QTest::newRow("hidden1") << ".ex" << "ex";
- QTest::newRow("hidden1") << ".e" << "e";
- QTest::newRow("hidden2") << ".ext1.ext2" << "ext2";
- QTest::newRow("hidden2") << ".ext.ext2" << "ext2";
- QTest::newRow("hidden2") << ".ex.ext2" << "ext2";
- QTest::newRow("hidden2") << ".e.ext2" << "ext2";
- QTest::newRow("hidden2") << "..ext2" << "ext2";
-}
-
-void tst_QFileInfo::suffix()
-{
- QFETCH(QString, file);
- QFETCH(QString, expected);
-
- QFileInfo fi(file);
- QCOMPARE(fi.suffix(), expected);
-}
-
-
-void tst_QFileInfo::completeSuffix_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<QString>("expected");
-
- QTest::newRow("noextension0") << "file" << "";
- QTest::newRow("noextension1") << "/path/to/file" << "";
- QTest::newRow("data0") << "file.tar" << "tar";
- QTest::newRow("data1") << "file.tar.gz" << "tar.gz";
- QTest::newRow("data2") << "/path/file/file.tar.gz" << "tar.gz";
- QTest::newRow("data3") << "/path/file.tar" << "tar";
- QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "ext1";
- QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "ext1.ext2";
-}
-
-void tst_QFileInfo::completeSuffix()
-{
- QFETCH(QString, file);
- QFETCH(QString, expected);
-
- QFileInfo fi(file);
- QCOMPARE(fi.completeSuffix(), expected);
-}
-
-void tst_QFileInfo::baseName_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<QString>("expected");
-
- QTest::newRow("data0") << "file.tar" << "file";
- QTest::newRow("data1") << "file.tar.gz" << "file";
- QTest::newRow("data2") << "/path/file/file.tar.gz" << "file";
- QTest::newRow("data3") << "/path/file.tar" << "file";
- QTest::newRow("data4") << "/path/file" << "file";
- QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "file1";
- QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "file1";
-}
-
-void tst_QFileInfo::baseName()
-{
- QFETCH(QString, file);
- QFETCH(QString, expected);
-
- QFileInfo fi(file);
- QCOMPARE(fi.baseName(), expected);
-}
-
-void tst_QFileInfo::completeBaseName_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<QString>("expected");
-
- QTest::newRow("data0") << "file.tar" << "file";
- QTest::newRow("data1") << "file.tar.gz" << "file.tar";
- QTest::newRow("data2") << "/path/file/file.tar.gz" << "file.tar";
- QTest::newRow("data3") << "/path/file.tar" << "file";
- QTest::newRow("data4") << "/path/file" << "file";
- QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "file1";
- QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "file1.ext1";
-}
-
-void tst_QFileInfo::completeBaseName()
-{
- QFETCH(QString, file);
- QFETCH(QString, expected);
-
- QFileInfo fi(file);
- QCOMPARE(fi.completeBaseName(), expected);
-}
-
-void tst_QFileInfo::permission_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<int>("perms");
- QTest::addColumn<bool>("expected");
-
- QTest::newRow("data0") << QCoreApplication::instance()->applicationFilePath() << int(QFile::ExeUser) << true;
- QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << int(QFile::ReadUser) << true;
-// QTest::newRow("data2") << "tst_qfileinfo.cpp" << int(QFile::WriteUser) << false;
- QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::ReadUser) << true;
- QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::WriteUser) << false;
- QTest::newRow("resource3") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::ExeUser) << false;
-}
-
-void tst_QFileInfo::permission()
-{
- QFETCH(QString, file);
- QFETCH(int, perms);
- QFETCH(bool, expected);
-#ifdef Q_OS_SYMBIAN
- QSKIP("No user based rights in Symbian OS - SOS needs platform security tests instead", SkipAll);
-#endif
- QFileInfo fi(file);
- QCOMPARE(fi.permission(QFile::Permissions(perms)), expected);
-}
-
-void tst_QFileInfo::size_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<int>("size");
-
- QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << 0;
- QFile::remove("file1");
- QFile file("file1");
- QVERIFY(file.open(QFile::WriteOnly));
- QCOMPARE(file.write("JAJAJAA"), qint64(7));
- QTest::newRow("created-file") << "file1" << 7;
-
- QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << 0;
-}
-
-void tst_QFileInfo::size()
-{
- QFETCH(QString, file);
-
- QFileInfo fi(file);
- (void)fi.permissions(); // see task 104198
- QTEST(int(fi.size()), "size");
-}
-
-void tst_QFileInfo::systemFiles()
-{
-#if !defined(Q_OS_WIN) || defined(Q_OS_WINCE)
- QSKIP("This is a Windows only test", SkipAll);
-#endif
- QFileInfo fi("c:\\pagefile.sys");
- QVERIFY(fi.exists()); // task 167099
- QVERIFY(fi.size() > 0); // task 189202
- QVERIFY(fi.lastModified().isValid());
-}
-
-void tst_QFileInfo::compare_data()
-{
- QTest::addColumn<QString>("file1");
- QTest::addColumn<QString>("file2");
- QTest::addColumn<bool>("same");
-
-#if defined(Q_OS_MAC)
- // Since 10.6 we use realpath() in qfsfileengine, and it properly handles
- // file system case sensitivity. However here in the autotest we don't
- // check if the file system is case sensitive, so to make it pass in the
- // default OS X installation we assume we are running on a case insensitive
- // file system if on 10.6 and on a case sensitive file system if on 10.5
- bool caseSensitiveOnMac = true;
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6)
- caseSensitiveOnMac = false;
-#endif
-
- QTest::newRow("data0")
- << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
- << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
- << true;
- QTest::newRow("data1")
- << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
- << QString::fromLatin1("/tst_qfileinfo.cpp")
- << false;
- QTest::newRow("data2")
- << QString::fromLatin1("tst_qfileinfo.cpp")
- << QDir::currentPath() + QString::fromLatin1("/tst_qfileinfo.cpp")
- << true;
- QTest::newRow("casesense1")
- << QString::fromLatin1(SRCDIR "tst_qfileInfo.cpp")
- << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- << true;
-#elif defined(Q_OS_MAC)
- << !caseSensitiveOnMac;
-#else
- << false;
-#endif
-}
-
-void tst_QFileInfo::compare()
-{
- QFETCH(QString, file1);
- QFETCH(QString, file2);
- QFETCH(bool, same);
- QFileInfo fi1(file1), fi2(file2);
- QCOMPARE(fi1 == fi2, same);
-}
-
-void tst_QFileInfo::consistent_data()
-{
- QTest::addColumn<QString>("file");
- QTest::addColumn<QString>("expected");
-
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- QTest::newRow("slashes") << QString::fromLatin1("\\a\\a\\a\\a") << QString::fromLatin1("/a/a/a/a");
-#endif
- QTest::newRow("ending slash") << QString::fromLatin1("/a/somedir/") << QString::fromLatin1("/a/somedir/");
- QTest::newRow("no ending slash") << QString::fromLatin1("/a/somedir") << QString::fromLatin1("/a/somedir");
-}
-
-void tst_QFileInfo::consistent()
-{
- QFETCH(QString, file);
- QFETCH(QString, expected);
-
- QFileInfo fi(file);
- QCOMPARE(fi.filePath(), expected);
- QCOMPARE(fi.dir().path() + "/" + fi.fileName(), expected);
-}
-
-
-void tst_QFileInfo::fileTimes_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::newRow("simple") << QString::fromLatin1("simplefile.txt");
- QTest::newRow( "longfile" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName.txt");
- QTest::newRow( "longfile absolutepath" ) << QFileInfo(QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName"
- "longFileNamelongFileNamelongFileNamelongFileName.txt")).absoluteFilePath();
-}
-
-void tst_QFileInfo::fileTimes()
-{
-#if defined(Q_OS_WINCE)
- int sleepTime = 3000;
-#else
- int sleepTime = 2000;
-#endif
- QFETCH(QString, fileName);
- if (QFile::exists(fileName)) {
- QVERIFY(QFile::remove(fileName));
- }
- QTest::qSleep(sleepTime);
- {
- QFile file(fileName);
-#if defined(Q_OS_WINCE)
- QEXPECT_FAIL("longfile", "No long filenames on WinCE", Abort);
- QEXPECT_FAIL("longfile absolutepath", "No long filenames on WinCE", Abort);
-#elif defined(Q_OS_SYMBIAN)
- QEXPECT_FAIL("longfile", "Maximum total filepath cannot exceed 256 characters in Symbian", Abort);
- QEXPECT_FAIL("longfile absolutepath", "Maximum total filepath cannot exceed 256 characters in Symbian", Abort);
-#endif
- QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
-#ifdef Q_OS_UNIX
- if (qIsLikelyToBeNfs(file.handle()))
- QSKIP("This Test doesn't work on NFS", SkipAll);
-#endif
- QTextStream ts(&file);
- ts << fileName << endl;
- }
- QTest::qSleep(sleepTime);
- QDateTime beforeWrite = QDateTime::currentDateTime();
- QTest::qSleep(sleepTime);
- {
- QFileInfo fileInfo(fileName);
- QVERIFY(fileInfo.created() < beforeWrite);
- QFile file(fileName);
- QVERIFY(file.open(QFile::ReadWrite | QFile::Text));
- QTextStream ts(&file);
- ts << fileName << endl;
- }
- QTest::qSleep(sleepTime);
- QDateTime beforeRead = QDateTime::currentDateTime();
- QTest::qSleep(sleepTime);
- {
- QFileInfo fileInfo(fileName);
-// On unix created() returns the same as lastModified().
-#if !defined(Q_OS_UNIX) && !defined(Q_OS_WINCE)
- QVERIFY(fileInfo.created() < beforeWrite);
-#endif
- QVERIFY(fileInfo.lastModified() > beforeWrite);
- QFile file(fileName);
- QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
- QTextStream ts(&file);
- QString line = ts.readLine();
- QCOMPARE(line, fileName);
- }
-
- QFileInfo fileInfo(fileName);
-#if !defined(Q_OS_UNIX) && !defined(Q_OS_WINCE)
- QVERIFY(fileInfo.created() < beforeWrite);
-#endif
- //In Vista the last-access timestamp is not updated when the file is accessed/touched (by default).
- //To enable this the HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate
- //is set to 0, in the test machine.
-#ifdef Q_OS_WINCE
- QEXPECT_FAIL("simple", "WinCE only stores date of access data, not the time", Continue);
-#endif
-#ifdef Q_OS_SYMBIAN
- QEXPECT_FAIL("simple", "Symbian implementation of stat doesn't return read time right", Abort);
-#endif
- QVERIFY(fileInfo.lastRead() > beforeRead);
- QVERIFY(fileInfo.lastModified() > beforeWrite);
- QVERIFY(fileInfo.lastModified() < beforeRead);
-}
-
-void tst_QFileInfo::fileTimes_oldFile()
-{
- // This is not supported on WinCE
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- // All files are opened in share mode (both read and write).
- DWORD shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
-
- // All files on Windows can be read; there's no such thing as an
- // unreadable file. Add GENERIC_WRITE if WriteOnly is passed.
- int accessRights = GENERIC_READ | GENERIC_WRITE;
-
- SECURITY_ATTRIBUTES securityAtts = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };
-
- // Regular file mode. In Unbuffered mode, pass the no-buffering flag.
- DWORD flagsAndAtts = FILE_ATTRIBUTE_NORMAL;
-
- // WriteOnly can create files, ReadOnly cannot.
- DWORD creationDisp = OPEN_ALWAYS;
-
- // Create the file handle.
- HANDLE fileHandle = CreateFile(L"oldfile.txt",
- accessRights,
- shareMode,
- &securityAtts,
- creationDisp,
- flagsAndAtts,
- NULL);
-
- // Set file times back to 1601.
- SYSTEMTIME stime;
- stime.wYear = 1601;
- stime.wMonth = 1;
- stime.wDayOfWeek = 1;
- stime.wDay = 1;
- stime.wHour = 1;
- stime.wMinute = 0;
- stime.wSecond = 0;
- stime.wMilliseconds = 0;
-
- FILETIME ctime;
- QVERIFY(SystemTimeToFileTime(&stime, &ctime));
- FILETIME atime = ctime;
- FILETIME mtime = atime;
- QVERIFY(fileHandle);
- QVERIFY(SetFileTime(fileHandle, &ctime, &atime, &mtime) != 0);
-
- CloseHandle(fileHandle);
-
- QFileInfo info("oldfile.txt");
- QCOMPARE(info.lastModified(), QDateTime(QDate(1601, 1, 1), QTime(1, 0), Qt::UTC).toLocalTime());
-#endif
-}
-
-void tst_QFileInfo::isSymLink_data()
-{
-#ifndef NO_SYMLINKS
- QFile::remove("link.lnk");
- QFile::remove("brokenlink.lnk");
- QFile::remove("dummyfile");
-
- QFile file1(SRCDIR "tst_qfileinfo.cpp");
- QVERIFY(file1.link("link.lnk"));
-
- QFile file2("dummyfile");
- file2.open(QIODevice::WriteOnly);
- QVERIFY(file2.link("brokenlink.lnk"));
- file2.remove();
-
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("isSymLink");
- QTest::addColumn<QString>("linkTarget");
-
- QTest::newRow("existent file") << SRCDIR "tst_qfileinfo.cpp" << false << "";
- QTest::newRow("link") << "link.lnk" << true << QFileInfo(SRCDIR "tst_qfileinfo.cpp").absoluteFilePath();
- QTest::newRow("broken link") << "brokenlink.lnk" << true << QFileInfo("dummyfile").absoluteFilePath();
-#endif
-}
-
-void tst_QFileInfo::isSymLink()
-{
-#ifndef NO_SYMLINKS
- QFETCH(QString, path);
- QFETCH(bool, isSymLink);
- QFETCH(QString, linkTarget);
-
- QFileInfo fi(path);
- QCOMPARE(fi.isSymLink(), isSymLink);
- QCOMPARE(fi.symLinkTarget(), linkTarget);
-#else
- QSKIP("no symbolic link support on this platform", SkipAll);
-#endif
-}
-
-void tst_QFileInfo::isHidden_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("isHidden");
- foreach (const QFileInfo& info, QDir::drives()) {
- QTest::newRow(qPrintable("drive." + info.path())) << info.path() << false;
- }
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- QVERIFY(QDir("./hidden-directory").exists() || QDir().mkdir("./hidden-directory"));
- QVERIFY(SetFileAttributesW(reinterpret_cast<LPCWSTR>(QString("./hidden-directory").utf16()),FILE_ATTRIBUTE_HIDDEN));
- QTest::newRow("C:/path/to/hidden-directory") << QDir::currentPath() + QString::fromLatin1("/hidden-directory") << true;
- QTest::newRow("C:/path/to/hidden-directory/.") << QDir::currentPath() + QString::fromLatin1("/hidden-directory/.") << true;
-#endif
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
- QVERIFY(QDir("./.hidden-directory").exists() || QDir().mkdir("./.hidden-directory"));
- QTest::newRow("/path/to/.hidden-directory") << QDir::currentPath() + QString("/.hidden-directory") << true;
- QTest::newRow("/path/to/.hidden-directory/.") << QDir::currentPath() + QString("/.hidden-directory/.") << true;
- QTest::newRow("/path/to/.hidden-directory/..") << QDir::currentPath() + QString("/.hidden-directory/..") << true;
-#endif
-
-#if defined(Q_OS_MAC)
- // /bin has the hidden attribute on Mac OS X
- QTest::newRow("/bin/") << QString::fromLatin1("/bin/") << true;
-#elif !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
- QTest::newRow("/bin/") << QString::fromLatin1("/bin/") << false;
-#endif
-
-#ifdef Q_OS_MAC
- QTest::newRow("mac_etc") << QString::fromLatin1("/etc") << true;
- QTest::newRow("mac_private_etc") << QString::fromLatin1("/private/etc") << false;
- QTest::newRow("mac_Applications") << QString::fromLatin1("/Applications") << false;
-#endif
-
-#ifdef Q_OS_SYMBIAN
- // No guaranteed hidden file knows to exist in Symbian filesystem, so make one.
- QString hiddenFileName("hidden.txt");
- QString notHiddenFileName("nothidden.txt");
- QTest::newRow("hidden file") << hiddenFileName << true;
- QTest::newRow("non-hidden file") << notHiddenFileName << false;
-
- {
- QFile file(hiddenFileName);
- QVERIFY(file.open(QIODevice::WriteOnly));
- QTextStream t(&file);
- t << "foobar";
-
- QFile file2(notHiddenFileName);
- QVERIFY(file2.open(QIODevice::WriteOnly));
- QTextStream t2(&file2);
- t2 << "foobar";
- }
-
- RFs rfs;
- TInt err = rfs.Connect();
- QCOMPARE(err, KErrNone);
- HBufC* symFile = qt_QString2HBufC(hiddenFileName);
- err = rfs.SetAtt(*symFile, KEntryAttHidden, 0);
- rfs.Close();
- delete symFile;
- QCOMPARE(err, KErrNone);
-#endif
-}
-
-void tst_QFileInfo::isHidden()
-{
- QFETCH(QString, path);
- QFETCH(bool, isHidden);
- QFileInfo fi(path);
-
- QCOMPARE(fi.isHidden(), isHidden);
-}
-
-#if defined(Q_OS_MAC)
-void tst_QFileInfo::isHiddenFromFinder()
-{
- const char *filename = "test_foobar.txt";
-
- QFile testFile(filename);
- testFile.open(QIODevice::WriteOnly | QIODevice::Append);
- testFile.write(QByteArray("world"));
- testFile.close();
-
- struct stat buf;
- stat(filename, &buf);
- chflags(filename, buf.st_flags | UF_HIDDEN);
-
- QFileInfo fi(filename);
- QCOMPARE(fi.isHidden(), true);
-
- testFile.remove();
-}
-#endif
-
-void tst_QFileInfo::isBundle_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("isBundle");
- QTest::newRow("root") << QString::fromLatin1("/") << false;
-#ifdef Q_OS_MAC
- QTest::newRow("mac_Applications") << QString::fromLatin1("/Applications") << false;
- QTest::newRow("mac_Applications") << QString::fromLatin1("/Applications/Safari.app") << true;
-#endif
-}
-
-void tst_QFileInfo::isBundle()
-{
- QFETCH(QString, path);
- QFETCH(bool, isBundle);
- QFileInfo fi(path);
- QCOMPARE(fi.isBundle(), isBundle);
-}
-
-void tst_QFileInfo::isLocalFs_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("isLocalFs");
-
- QTest::newRow("local root") << QString::fromLatin1("/") << true;
- QTest::newRow("local non-existent file") << QString::fromLatin1("/abrakadabra.boo") << true;
-
- QTest::newRow("qresource root") << QString::fromLatin1(":/") << false;
-}
-
-void tst_QFileInfo::isLocalFs()
-{
- QFETCH(QString, path);
- QFETCH(bool, isLocalFs);
-
- QFileInfo info(path);
- QFileInfoPrivate *privateInfo = getPrivate(info);
- QCOMPARE((privateInfo->fileEngine == 0), isLocalFs);
- if (privateInfo->fileEngine)
- QCOMPARE(bool(privateInfo->fileEngine->fileFlags(QAbstractFileEngine::LocalDiskFlag)
- & QAbstractFileEngine::LocalDiskFlag), isLocalFs);
-}
-
-void tst_QFileInfo::refresh()
-{
-#if defined(Q_OS_WINCE) || defined(Q_OS_WIN)
- int sleepTime = 3000;
-#else
- int sleepTime = 2000;
-#endif
-
- QFile::remove("file1");
- QFile file("file1");
- QVERIFY(file.open(QFile::WriteOnly));
- QCOMPARE(file.write("JAJAJAA"), qint64(7));
- file.flush();
-
- QFileInfo info(file);
- QDateTime lastModified = info.lastModified();
- QCOMPARE(info.size(), qint64(7));
-
- QTest::qSleep(sleepTime);
-
- QCOMPARE(file.write("JOJOJO"), qint64(6));
- file.flush();
- QVERIFY(info.lastModified() == lastModified);
-
- QCOMPARE(info.size(), qint64(7));
-#if defined(Q_OS_WIN) || defined(Q_OS_WINCE)
- if (QSysInfo::windowsVersion() & QSysInfo::WV_VISTA ||
- QSysInfo::windowsVersion() & QSysInfo::WV_CE_based)
- file.close();
-#endif
-#if defined(Q_OS_WINCE)
- // On Windows CE we need to close the file.
- // Otherwise the content will be cached and not
- // flushed to the storage, although we flushed it
- // manually!!! CE has interim cache, we cannot influence.
- QTest::qWait(5000);
-#endif
- info.refresh();
- QCOMPARE(info.size(), qint64(13));
- QVERIFY(info.lastModified() > lastModified);
-
- QFileInfo info2 = info;
- QCOMPARE(info2.size(), info.size());
-
- info2.refresh();
- QCOMPARE(info2.size(), info.size());
-}
-
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
-void tst_QFileInfo::ntfsJunctionPointsAndSymlinks_data()
-{
- QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("isSymLink");
- QTest::addColumn<QString>("linkTarget");
- QTest::addColumn<QString>("canonicalFilePath");
-
- QDir pwd;
- pwd.mkdir("target");
-
- QLibrary kernel32("kernel32");
- typedef BOOLEAN (WINAPI *PtrCreateSymbolicLink)(LPCWSTR, LPCWSTR, DWORD);
- PtrCreateSymbolicLink createSymbolicLinkW = 0;
- createSymbolicLinkW = (PtrCreateSymbolicLink) kernel32.resolve("CreateSymbolicLinkW");
- if (!createSymbolicLinkW) {
- //we need at least one data set for the test not to fail when skipping _data function
- QDir target("target");
- QTest::newRow("dummy") << target.path() << false << "" << target.canonicalPath();
- QSKIP("symbolic links not supported by operating system",SkipSingle);
- }
- {
- //Directory symlinks
- QDir target("target");
- QVERIFY(target.exists());
-
- QString absTarget = QDir::toNativeSeparators(target.absolutePath());
- QString absSymlink = QDir::toNativeSeparators(pwd.absolutePath()).append("\\abs_symlink");
- QString relTarget = "target";
- QString relSymlink = "rel_symlink";
- QString fileInTarget(absTarget);
- fileInTarget.append("\\file");
- QString fileInSymlink(absSymlink);
- fileInSymlink.append("\\file");
- QFile file(fileInTarget);
- file.open(QIODevice::ReadWrite);
- file.close();
-
- DWORD err = ERROR_SUCCESS ;
- if (!pwd.exists("abs_symlink"))
- if (!createSymbolicLinkW((wchar_t*)absSymlink.utf16(),(wchar_t*)absTarget.utf16(),0x1))
- err = GetLastError();
- if (err == ERROR_SUCCESS && !pwd.exists(relSymlink))
- if (!createSymbolicLinkW((wchar_t*)relSymlink.utf16(),(wchar_t*)relTarget.utf16(),0x1))
- err = GetLastError();
- if (err != ERROR_SUCCESS) {
- wchar_t errstr[0x100];
- DWORD count = FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM,
- 0, err, 0, errstr, 0x100, 0);
- QString error(QString::fromWCharArray (errstr, count));
- qWarning() << error;
- //we need at least one data set for the test not to assert fail when skipping _data function
- QDir target("target");
- QTest::newRow("dummy") << target.path() << false << "" << target.canonicalPath();
- QSKIP("link not supported by FS or insufficient privilege", SkipSingle);
- }
- QVERIFY(file.exists());
-
- QTest::newRow("absolute dir symlink") << absSymlink << true << QDir::fromNativeSeparators(absTarget) << target.canonicalPath();
- QTest::newRow("relative dir symlink") << relSymlink << true << QDir::fromNativeSeparators(relTarget) << target.canonicalPath();
- QTest::newRow("file in symlink dir") << fileInSymlink << false << "" << target.canonicalPath().append("/file");
- }
- {
- //File symlinks
- QFileInfo target(SRCDIR "tst_qfileinfo.cpp");
- QString absTarget = QDir::toNativeSeparators(target.absoluteFilePath());
- QString absSymlink = QDir::toNativeSeparators(pwd.absolutePath()).append("\\abs_symlink.cpp");
- QString relTarget = QDir::toNativeSeparators(pwd.relativeFilePath(target.absoluteFilePath()));
- QString relSymlink = "rel_symlink.cpp";
- QVERIFY(pwd.exists("abs_symlink.cpp") || createSymbolicLinkW((wchar_t*)absSymlink.utf16(),(wchar_t*)absTarget.utf16(),0x0));
- QVERIFY(pwd.exists(relSymlink) || createSymbolicLinkW((wchar_t*)relSymlink.utf16(),(wchar_t*)relTarget.utf16(),0x0));
-
- QTest::newRow("absolute file symlink") << absSymlink << true << QDir::fromNativeSeparators(absTarget) << target.canonicalFilePath();
- QTest::newRow("relative file symlink") << relSymlink << true << QDir::fromNativeSeparators(relTarget) << target.canonicalFilePath();
- }
-
- //Junctions
- QString target = "target";
- QString junction = "junction_pwd";
- FileSystem::createNtfsJunction(target, junction);
- QFileInfo targetInfo(target);
- QTest::newRow("junction_pwd") << junction << true << targetInfo.absoluteFilePath() << targetInfo.canonicalFilePath();
-
- QFileInfo fileInJunction(targetInfo.absoluteFilePath().append("/file"));
- QFile file(fileInJunction.absoluteFilePath());
- file.open(QIODevice::ReadWrite);
- file.close();
- QVERIFY(file.exists());
- QTest::newRow("file in junction") << fileInJunction.absoluteFilePath() << false << "" << fileInJunction.canonicalFilePath();
-
- target = QDir::rootPath();
- junction = "junction_root";
- FileSystem::createNtfsJunction(target, junction);
- targetInfo.setFile(target);
- QTest::newRow("junction_root") << junction << true << targetInfo.absoluteFilePath() << targetInfo.canonicalFilePath();
-
- //Mountpoint
- typedef BOOLEAN (WINAPI *PtrGetVolumeNameForVolumeMountPointW)(LPCWSTR, LPWSTR, DWORD);
- PtrGetVolumeNameForVolumeMountPointW getVolumeNameForVolumeMountPointW = 0;
- getVolumeNameForVolumeMountPointW = (PtrGetVolumeNameForVolumeMountPointW) kernel32.resolve("GetVolumeNameForVolumeMountPointW");
- if(getVolumeNameForVolumeMountPointW)
- {
- wchar_t buffer[MAX_PATH];
- QString rootPath = QDir::toNativeSeparators(QDir::rootPath());
- QVERIFY(getVolumeNameForVolumeMountPointW((wchar_t*)rootPath.utf16(), buffer, MAX_PATH));
- QString rootVolume = QString::fromWCharArray(buffer);
- junction = "mountpoint";
- rootVolume.replace("\\\\?\\","\\??\\");
- FileSystem::createNtfsJunction(rootVolume, junction);
- QTest::newRow("mountpoint") << junction << true << QDir::fromNativeSeparators(rootPath) << QDir::rootPath();
- }
-}
-
-void tst_QFileInfo::ntfsJunctionPointsAndSymlinks()
-{
- QFETCH(QString, path);
- QFETCH(bool, isSymLink);
- QFETCH(QString, linkTarget);
- QFETCH(QString, canonicalFilePath);
-
- QFileInfo fi(path);
- QCOMPARE(fi.isSymLink(), isSymLink);
- QCOMPARE(fi.symLinkTarget(), linkTarget);
- QCOMPARE(fi.canonicalFilePath(), canonicalFilePath);
-}
-
-void tst_QFileInfo::brokenShortcut()
-{
- QString linkName("borkenlink.lnk");
- QFile::remove(linkName);
- QFile file(linkName);
- file.open(QFile::WriteOnly);
- file.write("b0rk");
- file.close();
-
- QFileInfo info(linkName);
- QVERIFY(info.isSymLink());
- QVERIFY(!info.exists());
- QFile::remove(linkName);
-}
-#endif
-
-void tst_QFileInfo::isWritable()
-{
- QFile tempfile("tempfile.txt");
- tempfile.open(QIODevice::WriteOnly);
- tempfile.write("This file is generated by the QFileInfo autotest.");
- tempfile.close();
-
- QVERIFY(QFileInfo("tempfile.txt").isWritable());
- tempfile.remove();
-
-#ifdef Q_OS_WIN
-#ifdef Q_OS_WINCE
- QFileInfo fi("\\Windows\\wince.nls");
-#else
- QFileInfo fi("c:\\pagefile.sys");
-#endif
- QVERIFY(fi.exists());
- QVERIFY(!fi.isWritable());
-#endif
-#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
- if (::getuid() == 0)
- QVERIFY(QFileInfo("/etc/passwd").isWritable());
- else
- QVERIFY(!QFileInfo("/etc/passwd").isWritable());
-#endif
-}
-
-void tst_QFileInfo::isExecutable()
-{
-#ifdef Q_OS_SYMBIAN
- QString appPath = "c:/sys/bin/tst_qfileinfo.exe";
-#else
- QString appPath = QCoreApplication::applicationDirPath();
- appPath += "/tst_qfileinfo";
-# if defined(Q_OS_WIN)
- appPath += ".exe";
-# endif
-#endif
- QFileInfo fi(appPath);
- QCOMPARE(fi.isExecutable(), true);
-
- QCOMPARE(QFileInfo("qfileinfo.pro").isExecutable(), false);
-}
-
-
-void tst_QFileInfo::testDecomposedUnicodeNames_data()
-{
- QTest::addColumn<QString>("filePath");
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<bool>("exists");
- QString currPath = QDir::currentPath();
- QTest::newRow("latin-only") << currPath + "/4.pdf" << "4.pdf" << true;
- QTest::newRow("one-decomposed uni") << currPath + QString::fromUtf8("/4 ä.pdf") << QString::fromUtf8("4 ä.pdf") << true;
- QTest::newRow("many-decomposed uni") << currPath + QString::fromUtf8("/4 äääcopy.pdf") << QString::fromUtf8("4 äääcopy.pdf") << true;
- QTest::newRow("no decomposed") << currPath + QString::fromUtf8("/4 øøøcopy.pdf") << QString::fromUtf8("4 øøøcopy.pdf") << true;
-}
-
-static void createFileNative(const QString &filePath)
-{
-#ifdef Q_OS_UNIX
- int fd = open(filePath.normalized(QString::NormalizationForm_D).toUtf8().constData(), O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
- if (fd < 0) {
- QFAIL("couldn't create file");
- } else {
- close(fd);
- }
-#else
- Q_UNUSED(filePath);
-#endif
-}
-
-static void removeFileNative(const QString &filePath)
-{
-#ifdef Q_OS_UNIX
- unlink(filePath.normalized(QString::NormalizationForm_D).toUtf8().constData());
-#else
- Q_UNUSED(filePath);
-#endif
-}
-
-void tst_QFileInfo::testDecomposedUnicodeNames()
-{
-#ifndef Q_OS_MAC
- QSKIP("This is a OS X only test (unless you know more about filesystems, then maybe you should try it ;)", SkipAll);
-#endif
- QFETCH(QString, filePath);
- createFileNative(filePath);
-
- QFileInfo file(filePath);
- QTEST(file.fileName(), "fileName");
- QTEST(file.exists(), "exists");
- removeFileNative(filePath);
-}
-
-void tst_QFileInfo::equalOperator() const
-{
- /* Compare two default constructed values. Yes, to me it seems it should be the opposite too, but
- * this is how the code was written. */
- QVERIFY(!(QFileInfo() == QFileInfo()));
-}
-
-
-void tst_QFileInfo::equalOperatorWithDifferentSlashes() const
-{
- const QFileInfo fi1("/usr");
- const QFileInfo fi2("/usr/");
-
- QCOMPARE(fi1, fi2);
-}
-
-void tst_QFileInfo::notEqualOperator() const
-{
- /* Compare two default constructed values. Yes, to me it seems it should be the opposite too, but
- * this is how the code was written. */
- QVERIFY(QFileInfo() != QFileInfo());
-}
-
-void tst_QFileInfo::detachingOperations()
-{
- QFileInfo info1;
- QVERIFY(info1.caching());
- info1.setCaching(false);
-
- {
- QFileInfo info2 = info1;
-
- QVERIFY(!info1.caching());
- QVERIFY(!info2.caching());
-
- info2.setCaching(true);
- QVERIFY(info2.caching());
-
- info1.setFile("foo");
- QVERIFY(!info1.caching());
- }
-
- {
- QFile file("foo");
- info1.setFile(file);
- QVERIFY(!info1.caching());
- }
-
- info1.setFile(QDir(), "foo");
- QVERIFY(!info1.caching());
-
- {
- QFileInfo info3;
- QVERIFY(info3.caching());
-
- info3 = info1;
- QVERIFY(!info3.caching());
- }
-
- info1.refresh();
- QVERIFY(!info1.caching());
-
- QVERIFY(info1.makeAbsolute());
- QVERIFY(!info1.caching());
-
- info1.detach();
- QVERIFY(!info1.caching());
-}
-
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
-#if defined (Q_OS_WIN)
-BOOL IsUserAdmin()
-{
- BOOL b;
- SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
- PSID AdministratorsGroup;
- b = AllocateAndInitializeSid(
- &NtAuthority,
- 2,
- SECURITY_BUILTIN_DOMAIN_RID,
- DOMAIN_ALIAS_RID_ADMINS,
- 0, 0, 0, 0, 0, 0,
- &AdministratorsGroup);
- if (b) {
- if (!CheckTokenMembership( NULL, AdministratorsGroup, &b))
- b = FALSE;
- FreeSid(AdministratorsGroup);
- }
-
- return(b);
-}
-#endif
-
-void tst_QFileInfo::owner()
-{
- QString userName;
-#if defined(Q_OS_UNIX)
- {
- passwd *user = getpwuid(geteuid());
- QVERIFY(user);
- char *usernameBuf = user->pw_name;
- userName = QString::fromLocal8Bit(usernameBuf);
- }
-#endif
-#if defined(Q_OS_WIN)
- wchar_t usernameBuf[1024];
- DWORD bufSize = 1024;
- if (GetUserNameW(usernameBuf, &bufSize)) {
- userName = QString::fromWCharArray(usernameBuf);
- if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && IsUserAdmin()) {
- // Special case : If the user is a member of Administrators group, all files
- // created by the current user are owned by the Administrators group.
- LPLOCALGROUP_USERS_INFO_0 pBuf = NULL;
- DWORD dwLevel = 0;
- DWORD dwFlags = LG_INCLUDE_INDIRECT ;
- DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
- DWORD dwEntriesRead = 0;
- DWORD dwTotalEntries = 0;
- NET_API_STATUS nStatus;
- nStatus = NetUserGetLocalGroups(0, usernameBuf, dwLevel, dwFlags, (LPBYTE *) &pBuf,
- dwPrefMaxLen, &dwEntriesRead, &dwTotalEntries);
- // Check if the current user is a member of Administrators group
- if (nStatus == NERR_Success && pBuf){
- for (int i = 0; i < dwEntriesRead; i++) {
- QString groupName = QString::fromWCharArray(pBuf[i].lgrui0_name);
- if (!groupName.compare(QLatin1String("Administrators")))
- userName = groupName;
- }
- }
- if (pBuf != NULL)
- NetApiBufferFree(pBuf);
- }
- }
- extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
- qt_ntfs_permission_lookup = 1;
-#endif
- if (userName.isEmpty())
- QSKIP("Can't retrieve the user name", SkipAll);
- QString fileName("ownertest.txt");
- QVERIFY(!QFile::exists(fileName) || QFile::remove(fileName));
- {
- QFile testFile(fileName);
- QVERIFY(testFile.open(QIODevice::WriteOnly | QIODevice::Text));
- QByteArray testData("testfile");
- QVERIFY(testFile.write(testData) != -1);
- }
- QFileInfo fi(fileName);
- QVERIFY(fi.exists());
- QCOMPARE(fi.owner(), userName);
-
- QFile::remove(fileName);
-#if defined(Q_OS_WIN)
- qt_ntfs_permission_lookup = 0;
-#endif
-}
-#endif
-
-void tst_QFileInfo::group()
-{
- QString expected;
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
- struct group *gr;
- gid_t gid = getegid();
- gr = getgrgid(gid);
- expected = QString::fromLocal8Bit(gr->gr_name);
-#endif
-
- QString fileName("ownertest.txt");
- if (QFile::exists(fileName))
- QFile::remove(fileName);
- QFile testFile(fileName);
- QVERIFY(testFile.open(QIODevice::WriteOnly | QIODevice::Text));
- QByteArray testData("testfile");
- QVERIFY(testFile.write(testData) != -1);
- testFile.close();
- QFileInfo fi(fileName);
- QVERIFY(fi.exists());
-
- QCOMPARE(fi.group(), expected);
-}
-
-void tst_QFileInfo::invalidState()
-{
- // Shouldn't crash;
-
- {
- QFileInfo info;
- QCOMPARE(info.size(), qint64(0));
- QVERIFY(!info.exists());
-
- info.setCaching(false);
-
- info.created();
- info.lastRead();
- info.lastModified();
- }
-
- {
- QFileInfo info("");
- QCOMPARE(info.size(), qint64(0));
- QVERIFY(!info.exists());
-
- info.setCaching(false);
-
- info.created();
- info.lastRead();
- info.lastModified();
- }
-
- {
- QFileInfo info("file-doesn't-really-exist.txt");
- QCOMPARE(info.size(), qint64(0));
- QVERIFY(!info.exists());
-
- info.setCaching(false);
-
- info.created();
- info.lastRead();
- info.lastModified();
- }
-
- QVERIFY(true);
-}
-
-QTEST_MAIN(tst_QFileInfo)
-#include "tst_qfileinfo.moc"
diff --git a/tests/auto/qfileopenevent/qfileopenevent.pro b/tests/auto/qfileopenevent/qfileopenevent.pro
deleted file mode 100644
index 45978d7b7e..0000000000
--- a/tests/auto/qfileopenevent/qfileopenevent.pro
+++ /dev/null
@@ -1,2 +0,0 @@
-TEMPLATE = subdirs
-SUBDIRS = test qfileopeneventexternal
diff --git a/tests/auto/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.pro b/tests/auto/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.pro
deleted file mode 100644
index b95ed45edd..0000000000
--- a/tests/auto/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.pro
+++ /dev/null
@@ -1,10 +0,0 @@
-TEMPLATE = app
-TARGET = qfileopeneventexternal
-QT += core gui
-SOURCES += qfileopeneventexternal.cpp
-symbian: {
- RSS_RULES += "embeddability=KAppEmbeddable;"
- RSS_RULES.datatype_list += "priority = EDataTypePriorityHigh; type = \"application/x-tst_qfileopenevent\";"
- LIBS += -lapparc \
- -leikcore -lefsrv -lcone
-}
diff --git a/tests/auto/qfilesystementry/qfilesystementry.pro b/tests/auto/qfilesystementry/qfilesystementry.pro
deleted file mode 100644
index 31f0064bd1..0000000000
--- a/tests/auto/qfilesystementry/qfilesystementry.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-
-SOURCES += tst_qfilesystementry.cpp \
- ../../../src/corelib/io/qfilesystementry.cpp
-HEADERS += ../../../src/corelib/io/qfilesystementry_p.h
-QT = core core-private
-
-CONFIG += parallel_test
diff --git a/tests/auto/qfilesystemmodel/qfilesystemmodel.pro b/tests/auto/qfilesystemmodel/qfilesystemmodel.pro
index ab121306e3..b0b6d7a18d 100644
--- a/tests/auto/qfilesystemmodel/qfilesystemmodel.pro
+++ b/tests/auto/qfilesystemmodel/qfilesystemmodel.pro
@@ -1,6 +1,7 @@
CONFIG += qttest_p4
-QT = core-private gui
+QT += widgets widgets-private
+QT += core-private gui
SOURCES += tst_qfilesystemmodel.cpp
TARGET = tst_qfilesystemmodel
diff --git a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp
index 5afcf40800..a9a4fc7fc3 100644
--- a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -42,7 +42,7 @@
#include <QtTest/QtTest>
#ifdef QT_BUILD_INTERNAL
-#include "../../../src/gui/dialogs/qfilesystemmodel_p.h"
+#include "../../../src/widgets/dialogs/qfilesystemmodel_p.h"
#endif
#include <QFileSystemModel>
#include <QFileIconProvider>
diff --git a/tests/auto/qfocusevent/qfocusevent.pro b/tests/auto/qfocusevent/qfocusevent.pro
index 851d616173..e709a547ec 100644
--- a/tests/auto/qfocusevent/qfocusevent.pro
+++ b/tests/auto/qfocusevent/qfocusevent.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qfocusevent.cpp
CONFIG+=insignificant_test
diff --git a/tests/auto/qfocusframe/qfocusframe.pro b/tests/auto/qfocusframe/qfocusframe.pro
index afb7206b00..0fcc9bf23d 100644
--- a/tests/auto/qfocusframe/qfocusframe.pro
+++ b/tests/auto/qfocusframe/qfocusframe.pro
@@ -3,7 +3,7 @@
############################################################
load(qttest_p4)
-
+QT += widgets
SOURCES += tst_qfocusframe.cpp
diff --git a/tests/auto/qfont/qfont.pro b/tests/auto/qfont/qfont.pro
deleted file mode 100644
index b071d88dce..0000000000
--- a/tests/auto/qfont/qfont.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qfont.cpp
-
-
diff --git a/tests/auto/qfontcombobox/qfontcombobox.pro b/tests/auto/qfontcombobox/qfontcombobox.pro
index b7d32f5484..7faa0e36bd 100644
--- a/tests/auto/qfontcombobox/qfontcombobox.pro
+++ b/tests/auto/qfontcombobox/qfontcombobox.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qfontcombobox.cpp
-
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qfontdialog/qfontdialog.pro b/tests/auto/qfontdialog/qfontdialog.pro
index 656c4d12f8..e4ad2f1a41 100644
--- a/tests/auto/qfontdialog/qfontdialog.pro
+++ b/tests/auto/qfontdialog/qfontdialog.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qfontdialog.cpp
diff --git a/tests/auto/qformlayout/qformlayout.pro b/tests/auto/qformlayout/qformlayout.pro
index baeb6741ca..24c452af9f 100644
--- a/tests/auto/qformlayout/qformlayout.pro
+++ b/tests/auto/qformlayout/qformlayout.pro
@@ -1,2 +1,3 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qformlayout.cpp
diff --git a/tests/auto/qformlayout/tst_qformlayout.cpp b/tests/auto/qformlayout/tst_qformlayout.cpp
index 8da79ef60a..f35933d0dc 100644
--- a/tests/auto/qformlayout/tst_qformlayout.cpp
+++ b/tests/auto/qformlayout/tst_qformlayout.cpp
@@ -46,9 +46,8 @@
#include <qwidget.h>
#include <qwindowsstyle.h>
#include <qsizepolicy.h>
-#include <QtGui>
-#include <QtGui/QWindowsStyle>
+#include <QtWidgets/QWindowsStyle>
#include <QStyleFactory>
#include <qformlayout.h>
diff --git a/tests/auto/qfreelist/qfreelist.pro b/tests/auto/qfreelist/qfreelist.pro
deleted file mode 100644
index b7f2b3d38f..0000000000
--- a/tests/auto/qfreelist/qfreelist.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qfreelist.cpp
-QT += core-private
-QT -= gui
-
-!private_tests:SOURCES += $$QT_SOURCE_TREE/src/corelib/tools/qfreelist.cpp
diff --git a/tests/auto/qftp/tst_qftp.cpp b/tests/auto/qftp/tst_qftp.cpp
deleted file mode 100644
index e31b5acda3..0000000000
--- a/tests/auto/qftp/tst_qftp.cpp
+++ /dev/null
@@ -1,2170 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qcoreapplication.h>
-#include <qfile.h>
-#include <qbuffer.h>
-#include "qftp.h"
-#include <qmap.h>
-#include <time.h>
-#include <stdlib.h>
-#include <QNetworkProxy>
-#include <QNetworkConfiguration>
-#include <qnetworkconfigmanager.h>
-#include <QNetworkSession>
-#include <QtNetwork/private/qnetworksession_p.h>
-
-#include "../network-settings.h"
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-#ifdef Q_OS_SYMBIAN
-// In Symbian OS test data is located in applications private dir
-// Application private dir is default serach path for files, so SRCDIR can be set to empty
-#define SRCDIR ""
-#endif
-
-#ifndef QT_NO_BEARERMANAGEMENT
-Q_DECLARE_METATYPE(QNetworkConfiguration)
-#endif
-
-class tst_QFtp : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QFtp();
- virtual ~tst_QFtp();
-
-
-public slots:
- void initTestCase_data();
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-private slots:
- void connectToHost_data();
- void connectToHost();
- void connectToUnresponsiveHost();
- void login_data();
- void login();
- void close_data();
- void close();
-
- void list_data();
- void list();
- void cd_data();
- void cd();
- void get_data();
- void get();
- void put_data();
- void put();
- void remove();
- void mkdir_data();
- void mkdir();
- void mkdir2();
- void rmdir();
- void rename_data();
- void rename();
-
- void commandSequence_data();
- void commandSequence();
-
- void abort_data();
- void abort();
-
- void bytesAvailable_data();
- void bytesAvailable();
-
- void activeMode();
-
- void proxy_data();
- void proxy();
-
- void binaryAscii();
-
- void doneSignal();
- void queueMoreCommandsInDoneSlot();
-
- void qtbug7359Crash();
-
-protected slots:
- void stateChanged( int );
- void listInfo( const QUrlInfo & );
- void readyRead();
- void dataTransferProgress(qint64, qint64);
-
- void commandStarted( int );
- void commandFinished( int, bool );
- void done( bool );
- void activeModeDone( bool );
- void mkdir2Slot(int id, bool error);
- void cdUpSlot(bool);
-
-private:
- QFtp *newFtp();
- void addCommand( QFtp::Command, int );
- bool fileExists( const QString &host, quint16 port, const QString &user, const QString &password, const QString &file, const QString &cdDir = QString::null );
- bool dirExists( const QString &host, quint16 port, const QString &user, const QString &password, const QString &cdDir, const QString &dirToCreate );
-
- void renameInit( const QString &host, const QString &user, const QString &password, const QString &createFile );
- void renameCleanup( const QString &host, const QString &user, const QString &password, const QString &fileToDelete );
-
- QFtp *ftp;
-#ifndef QT_NO_BEARERMANAGEMENT
- QSharedPointer<QNetworkSession> networkSessionExplicit;
- QSharedPointer<QNetworkSession> networkSessionImplicit;
-#endif
-
- QList<int> ids; // helper to make sure that all expected signals are emitted
- int current_id;
-
- int connectToHost_state;
- int close_state;
- int login_state;
- int cur_state;
- struct CommandResult
- {
- int id;
- int success;
- };
- QMap< QFtp::Command, CommandResult > resultMap;
- typedef QMap<QFtp::Command,CommandResult>::Iterator ResMapIt;
-
- int done_success;
- int commandSequence_success;
-
- qlonglong bytesAvailable_finishedGet;
- qlonglong bytesAvailable_finished;
- qlonglong bytesAvailable_done;
-
- QList<QUrlInfo> listInfo_i;
- QByteArray newData_ba;
- qlonglong bytesTotal;
- qlonglong bytesDone;
-
- bool inFileDirExistsFunction;
-
- QString uniqueExtension;
-};
-
-//#define DUMP_SIGNALS
-
-const int bytesTotal_init = -10;
-const int bytesDone_init = -10;
-
-tst_QFtp::tst_QFtp() :
- ftp(0)
-{
-}
-
-tst_QFtp::~tst_QFtp()
-{
-}
-
-void tst_QFtp::initTestCase_data()
-{
- QTest::addColumn<bool>("setProxy");
- QTest::addColumn<int>("proxyType");
- QTest::addColumn<bool>("setSession");
-
- QTest::newRow("WithoutProxy") << false << 0 << false;
- QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy) << false;
- //### doesn't work well yet.
- //QTest::newRow("WithHttpProxy") << true << int(QNetworkProxy::HttpProxy);
-
-#ifndef QT_NO_BEARERMANAGEMENT
- QTest::newRow("WithoutProxyWithSession") << false << 0 << true;
- QTest::newRow("WithSocks5ProxyAndSession") << true << int(QNetworkProxy::Socks5Proxy) << true;
-#endif
-}
-
-void tst_QFtp::initTestCase()
-{
-#ifndef QT_NO_BEARERMANAGEMENT
- QNetworkConfigurationManager manager;
- networkSessionImplicit = QSharedPointer<QNetworkSession>(new QNetworkSession(manager.defaultConfiguration()));
- networkSessionImplicit->open();
- QVERIFY(networkSessionImplicit->waitForOpened(60000)); //there may be user prompt on 1st connect
-#endif
-}
-
-void tst_QFtp::cleanupTestCase()
-{
-#ifndef QT_NO_BEARERMANAGEMENT
- networkSessionExplicit.clear();
- networkSessionImplicit.clear();
-#endif
-}
-
-void tst_QFtp::init()
-{
- QFETCH_GLOBAL(bool, setProxy);
- QFETCH_GLOBAL(int, proxyType);
- QFETCH_GLOBAL(bool, setSession);
- if (setProxy) {
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
- } else if (proxyType == QNetworkProxy::HttpProxy) {
- QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128));
- }
- }
-#ifndef QT_NO_BEARERMANAGEMENT
- if (setSession) {
- networkSessionExplicit = networkSessionImplicit;
- if (!networkSessionExplicit->isOpen()) {
- networkSessionExplicit->open();
- QVERIFY(networkSessionExplicit->waitForOpened(30000));
- }
- } else {
- networkSessionExplicit.clear();
- }
-#endif
-
- delete ftp;
- ftp = 0;
-
- ids.clear();
- current_id = 0;
-
- resultMap.clear();
- connectToHost_state = -1;
- close_state = -1;
- login_state = -1;
- cur_state = QFtp::Unconnected;
-
- listInfo_i.clear();
- newData_ba = QByteArray();
- bytesTotal = bytesTotal_init;
- bytesDone = bytesDone_init;
-
- done_success = -1;
- commandSequence_success = -1;
-
- bytesAvailable_finishedGet = 1234567890;
- bytesAvailable_finished = 1234567890;
- bytesAvailable_done = 1234567890;
-
- inFileDirExistsFunction = FALSE;
-
-#if !defined(Q_OS_WINCE)
- srand(time(0));
- uniqueExtension = QString("%1%2%3").arg((qulonglong)this).arg(rand()).arg((qulonglong)time(0));
-#else
- srand(0);
- uniqueExtension = QString("%1%2%3").arg((qulonglong)this).arg(rand()).arg((qulonglong)(0));
-#endif
-}
-
-void tst_QFtp::cleanup()
-{
- if (ftp) {
- delete ftp;
- ftp = 0;
- }
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
- }
-
- delete ftp;
- ftp = 0;
-#ifndef QT_NO_BEARERMANAGEMENT
- networkSessionExplicit.clear();
-#endif
-}
-
-void tst_QFtp::connectToHost_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<int>("state");
-
- QTest::newRow( "ok01" ) << QtNetworkSettings::serverName() << (uint)21 << (int)QFtp::Connected;
- QTest::newRow( "error01" ) << QtNetworkSettings::serverName() << (uint)2222 << (int)QFtp::Unconnected;
- QTest::newRow( "error02" ) << QString("foo.bar") << (uint)21 << (int)QFtp::Unconnected;
-}
-
-void tst_QFtp::connectToHost()
-{
- QFETCH( QString, host );
- QFETCH( uint, port );
-
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
-
- QTestEventLoop::instance().enterLoop( 61 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- QTEST( connectToHost_state, "state" );
-
- ResMapIt it = resultMap.find( QFtp::ConnectToHost );
- QVERIFY( it != resultMap.end() );
- QFETCH( int, state );
- if ( state == QFtp::Connected ) {
- QVERIFY( it.value().success == 1 );
- } else {
- QVERIFY( it.value().success == 0 );
- }
-}
-
-void tst_QFtp::connectToUnresponsiveHost()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- QSKIP( "This test takes too long if we test with proxies too", SkipSingle );
-
- QString host = "192.0.2.42"; // IP out of TEST-NET, should be unreachable
- uint port = 21;
-
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
-
- qDebug( "About to connect to host that won't reply (this test takes 60 seconds)" );
- QTestEventLoop::instance().enterLoop( 61 );
-#ifdef Q_OS_WIN
- /* On Windows, we do not get a timeout, because Winsock is behaving in a strange way:
- We issue two "WSAConnect()" calls, after the first, as a result we get WSAEWOULDBLOCK,
- after the second, we get WSAEISCONN, which means that the socket is connected, which cannot be.
- However, after some seconds we get a socket error saying that the remote host closed the connection,
- which can neither be. For this test, that would actually enable us to finish before timout, but handling that case
- (in void QFtpPI::error(QAbstractSocket::SocketError e)) breaks
- a lot of other stuff in QFtp, so we just expect this test to fail on Windows.
- */
- QEXPECT_FAIL("", "timeout not working due to strange Windows socket behaviour (see source file of this test for explanation)", Abort);
-#else
- QEXPECT_FAIL("", "QTBUG-20687", Abort);
-#endif
- QVERIFY2(! QTestEventLoop::instance().timeout(), "Network timeout longer than expected (should have been 60 seconds)");
-
- QVERIFY( ftp->state() == QFtp::Unconnected);
- ResMapIt it = resultMap.find( QFtp::ConnectToHost );
- QVERIFY( it != resultMap.end() );
- QVERIFY( it.value().success == 0 );
-
- delete ftp;
- ftp = 0;
-}
-
-void tst_QFtp::login_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<QString>("user");
- QTest::addColumn<QString>("password");
- QTest::addColumn<int>("success");
-
- QTest::newRow( "ok01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << 1;
- QTest::newRow( "ok02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftp") << QString() << 1;
- QTest::newRow( "ok03" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftp") << QString("foo") << 1;
- QTest::newRow( "ok04" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << 1;
-
- QTest::newRow( "error01" ) << QtNetworkSettings::serverName() << (uint)21 << QString("foo") << QString() << 0;
- QTest::newRow( "error02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("foo") << QString("bar") << 0;
-}
-
-void tst_QFtp::login()
-{
- QFETCH( QString, host );
- QFETCH( uint, port );
- QFETCH( QString, user );
- QFETCH( QString, password );
-
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt it = resultMap.find( QFtp::Login );
- QVERIFY( it != resultMap.end() );
- QTEST( it.value().success, "success" );
-
- if ( it.value().success ) {
- QVERIFY( login_state == QFtp::LoggedIn );
- } else {
- QVERIFY( login_state != QFtp::LoggedIn );
- }
-}
-
-void tst_QFtp::close_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<QString>("user");
- QTest::addColumn<QString>("password");
- QTest::addColumn<bool>("login");
-
- QTest::newRow( "login01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << (bool)TRUE;
- QTest::newRow( "login02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftp") << QString() << (bool)TRUE;
- QTest::newRow( "login03" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftp") << QString("foo") << (bool)TRUE;
- QTest::newRow( "login04" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << (bool)TRUE;
-
- QTest::newRow( "no-login01" ) << QtNetworkSettings::serverName() << (uint)21 << QString("") << QString("") << (bool)FALSE;
-}
-
-void tst_QFtp::close()
-{
- QFETCH( QString, host );
- QFETCH( uint, port );
- QFETCH( QString, user );
- QFETCH( QString, password );
- QFETCH( bool, login );
-
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- if ( login )
- addCommand( QFtp::Login, ftp->login( user, password ) );
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- QCOMPARE( close_state, (int)QFtp::Unconnected );
-
- ResMapIt it = resultMap.find( QFtp::Close );
- QVERIFY( it != resultMap.end() );
- QVERIFY( it.value().success == 1 );
-}
-
-void tst_QFtp::list_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<QString>("user");
- QTest::addColumn<QString>("password");
- QTest::addColumn<QString>("dir");
- QTest::addColumn<int>("success");
- QTest::addColumn<QStringList>("entryNames"); // ### we should rather use a QList<QUrlInfo> here
-
- QStringList flukeRoot;
- flukeRoot << "pub";
- flukeRoot << "qtest";
- QStringList flukeQtest;
- flukeQtest << "bigfile";
- flukeQtest << "nonASCII";
- flukeQtest << "rfc3252";
- flukeQtest << "rfc3252.txt";
- flukeQtest << "upload";
-
- QTest::newRow( "workDir01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString() << 1 << flukeRoot;
- QTest::newRow( "workDir02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString() << 1 << flukeRoot;
-
- QTest::newRow( "relPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("qtest") << 1 << flukeQtest;
- QTest::newRow( "relPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("qtest") << 1 << flukeQtest;
-
- QTest::newRow( "absPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/qtest") << 1 << flukeQtest;
- QTest::newRow( "absPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("/var/ftp/qtest") << 1 << flukeQtest;
-
- QTest::newRow( "nonExist01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("foo") << 1 << QStringList();
- QTest::newRow( "nonExist02" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/foo") << 1 << QStringList();
- // ### The microsoft server does not seem to work properly at the moment --
- // I am also not able to open a data connection with other, non-Qt FTP
- // clients to it.
- // QTest::newRow( "nonExist03" ) << "ftp.microsoft.com" << (uint)21 << QString() << QString() << QString("/foo") << 0 << QStringList();
-
- QStringList susePub;
- susePub << "README.mirror-policy" << "axp" << "i386" << "ia64" << "install" << "noarch" << "pubring.gpg-build.suse.de" << "update" << "x86_64";
- QTest::newRow( "epsvNotSupported" ) << QString("ftp.funet.fi") << (uint)21 << QString::fromLatin1("ftp") << QString::fromLatin1("root@") << QString("/pub/Linux/suse/suse") << 1 << susePub;
-}
-
-void tst_QFtp::list()
-{
- QFETCH( QString, host );
- QFETCH( uint, port );
- QFETCH( QString, user );
- QFETCH( QString, password );
- QFETCH( QString, dir );
-
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- addCommand( QFtp::List, ftp->list( dir ) );
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt it = resultMap.find( QFtp::List );
- QVERIFY( it != resultMap.end() );
- QTEST( it.value().success, "success" );
- QFETCH( QStringList, entryNames );
- QCOMPARE( listInfo_i.count(), entryNames.count() );
- for ( uint i=0; i < (uint) entryNames.count(); i++ ) {
- QCOMPARE( listInfo_i[i].name(), entryNames[i] );
- }
-}
-
-void tst_QFtp::cd_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<QString>("user");
- QTest::addColumn<QString>("password");
- QTest::addColumn<QString>("dir");
- QTest::addColumn<int>("success");
- QTest::addColumn<QStringList>("entryNames"); // ### we should rather use a QList<QUrlInfo> here
-
- QStringList flukeRoot;
- flukeRoot << "qtest";
- QStringList flukeQtest;
- flukeQtest << "bigfile";
- flukeQtest << "nonASCII";
- flukeQtest << "rfc3252";
- flukeQtest << "rfc3252.txt";
- flukeQtest << "upload";
-
- QTest::newRow( "relPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("qtest") << 1 << flukeQtest;
- QTest::newRow( "relPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("qtest") << 1 << flukeQtest;
-
- QTest::newRow( "absPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/qtest") << 1 << flukeQtest;
- QTest::newRow( "absPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("/var/ftp/qtest") << 1 << flukeQtest;
-
- QTest::newRow( "nonExist01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("foo") << 0 << QStringList();
- QTest::newRow( "nonExist03" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/foo") << 0 << QStringList();
-}
-
-void tst_QFtp::cd()
-{
- QFETCH( QString, host );
- QFETCH( uint, port );
- QFETCH( QString, user );
- QFETCH( QString, password );
- QFETCH( QString, dir );
-
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- addCommand( QFtp::Cd, ftp->cd( dir ) );
- addCommand( QFtp::List, ftp->list() );
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 30 );
-
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() ) {
- QFAIL( "Network operation timed out" );
- }
-
- ResMapIt it = resultMap.find( QFtp::Cd );
- QVERIFY( it != resultMap.end() );
- QTEST( it.value().success, "success" );
- QFETCH( QStringList, entryNames );
- QCOMPARE( listInfo_i.count(), entryNames.count() );
- for ( uint i=0; i < (uint) entryNames.count(); i++ ) {
- QCOMPARE( listInfo_i[i].name(), entryNames[i] );
- }
-}
-
-void tst_QFtp::get_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<QString>("user");
- QTest::addColumn<QString>("password");
- QTest::addColumn<QString>("file");
- QTest::addColumn<int>("success");
- QTest::addColumn<QByteArray>("res");
- QTest::addColumn<bool>("useIODevice");
-
- // ### move this into external testdata
- QFile file( SRCDIR "rfc3252.txt" );
- QVERIFY( file.open( QIODevice::ReadOnly ) );
- QByteArray rfc3252 = file.readAll();
-
- // test the two get() overloads in one routine
- for ( int i=0; i<2; i++ ) {
- QTest::newRow( QString("relPath01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << "qtest/rfc3252" << 1 << rfc3252 << (bool)(i==1);
- QTest::newRow( QString("relPath02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
- << "qtest/rfc3252" << 1 << rfc3252 << (bool)(i==1);
-
- QTest::newRow( QString("absPath01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << "/qtest/rfc3252" << 1 << rfc3252 << (bool)(i==1);
- QTest::newRow( QString("absPath02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
- << "/var/ftp/qtest/rfc3252" << 1 << rfc3252 << (bool)(i==1);
-
- QTest::newRow( QString("nonExist01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << QString("foo") << 0 << QByteArray() << (bool)(i==1);
- QTest::newRow( QString("nonExist02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << QString("/foo") << 0 << QByteArray() << (bool)(i==1);
- }
-}
-
-void tst_QFtp::get()
-{
- // for the overload that takes a QIODevice
- QByteArray buf_ba;
- QBuffer buf( &buf_ba );
-
- QFETCH( QString, host );
- QFETCH( uint, port );
- QFETCH( QString, user );
- QFETCH( QString, password );
- QFETCH( QString, file );
- QFETCH( bool, useIODevice );
-
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- if ( useIODevice ) {
- buf.open( QIODevice::WriteOnly );
- addCommand( QFtp::Get, ftp->get( file, &buf ) );
- } else {
- addCommand( QFtp::Get, ftp->get( file ) );
- }
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 50 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt it = resultMap.find( QFtp::Get );
- QVERIFY( it != resultMap.end() );
- QTEST( it.value().success, "success" );
- if ( useIODevice ) {
- QTEST( buf_ba, "res" );
- } else {
- QTEST( newData_ba, "res" );
- }
- QVERIFY( bytesTotal != bytesTotal_init );
- if ( bytesTotal != -1 ) {
- QVERIFY( bytesDone == bytesTotal );
- }
- if ( useIODevice ) {
- if ( bytesDone != bytesDone_init ) {
- QVERIFY( (int)buf_ba.size() == bytesDone );
- }
- } else {
- if ( bytesDone != bytesDone_init ) {
- QVERIFY( (int)newData_ba.size() == bytesDone );
- }
- }
-}
-
-void tst_QFtp::put_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<QString>("user");
- QTest::addColumn<QString>("password");
- QTest::addColumn<QString>("file");
- QTest::addColumn<QByteArray>("fileData");
- QTest::addColumn<bool>("useIODevice");
- QTest::addColumn<int>("success");
-
- // ### move this into external testdata
- QFile file( SRCDIR "rfc3252.txt" );
- QVERIFY( file.open( QIODevice::ReadOnly ) );
- QByteArray rfc3252 = file.readAll();
-
- QByteArray bigData( 10*1024*1024, 0 );
- bigData.fill( 'A' );
-
- // test the two put() overloads in one routine
- for ( int i=0; i<2; i++ ) {
- QTest::newRow( QString("relPath01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << QString("qtest/upload/rel01_%1") << rfc3252
- << (bool)(i==1) << 1;
- /*
- QTest::newRow( QString("relPath02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
- << QString("qtest/upload/rel02_%1") << rfc3252
- << (bool)(i==1) << 1;
- QTest::newRow( QString("relPath03_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
- << QString("qtest/upload/rel03_%1") << QByteArray()
- << (bool)(i==1) << 1;
- QTest::newRow( QString("relPath04_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
- << QString("qtest/upload/rel04_%1") << bigData
- << (bool)(i==1) << 1;
-
- QTest::newRow( QString("absPath01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << QString("/qtest/upload/abs01_%1") << rfc3252
- << (bool)(i==1) << 1;
- QTest::newRow( QString("absPath02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
- << QString("/srv/ftp/qtest/upload/abs02_%1") << rfc3252
- << (bool)(i==1) << 1;
-
- QTest::newRow( QString("nonExist01_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << QString("foo") << QByteArray()
- << (bool)(i==1) << 0;
- QTest::newRow( QString("nonExist02_%1").arg(i).toLatin1().constData() ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << QString("/foo") << QByteArray()
- << (bool)(i==1) << 0;
-*/
- }
-}
-
-void tst_QFtp::put()
-{
- QFETCH( QString, host );
- QFETCH( uint, port );
- QFETCH( QString, user );
- QFETCH( QString, password );
- QFETCH( QString, file );
- QFETCH( QByteArray, fileData );
- QFETCH( bool, useIODevice );
-
-#ifdef Q_OS_WIN
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QSKIP("With socks5 the put() test takes too long time on Windows.", SkipAll);
- }
- }
-#endif
-
- const int timestep = 50;
-
- if(file.contains('%'))
- file = file.arg(uniqueExtension);
-
- // for the overload that takes a QIODevice
- QBuffer buf_fileData( &fileData );
- buf_fileData.open( QIODevice::ReadOnly );
-
- ResMapIt it;
- //////////////////////////////////////////////////////////////////
- // upload the file
- init();
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- if ( useIODevice )
- addCommand( QFtp::Put, ftp->put( &buf_fileData, file ) );
- else
- addCommand( QFtp::Put, ftp->put( fileData, file ) );
- addCommand( QFtp::Close, ftp->close() );
-
- for(int time = 0; time <= fileData.length() / 20000; time += timestep) {
- QTestEventLoop::instance().enterLoop( timestep );
- if(ftp->currentCommand() == QFtp::None)
- break;
- }
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- it = resultMap.find( QFtp::Put );
- QVERIFY( it != resultMap.end() );
- QTEST( it.value().success, "success" );
- if ( !it.value().success ) {
- QVERIFY( !fileExists( host, port, user, password, file ) );
- return; // the following tests are only meaningful if the file could be put
- }
- QVERIFY( bytesTotal == (int)fileData.size() );
- QVERIFY( bytesDone == bytesTotal );
-
- QVERIFY( fileExists( host, port, user, password, file ) );
-
- //////////////////////////////////////////////////////////////////
- // fetch file to make sure that it is equal to the uploaded file
- init();
- ftp = newFtp();
- QBuffer buf;
- buf.open( QIODevice::WriteOnly );
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- addCommand( QFtp::Get, ftp->get( file, &buf ) );
- addCommand( QFtp::Close, ftp->close() );
-
- for(int time = 0; time <= fileData.length() / 20000; time += timestep) {
- QTestEventLoop::instance().enterLoop( timestep );
- if(ftp->currentCommand() == QFtp::None)
- break;
- }
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- QVERIFY( done_success == 1 );
- QTEST( buf.buffer(), "fileData" );
-
- //////////////////////////////////////////////////////////////////
- // cleanup (i.e. remove the file) -- this also tests the remove command
- init();
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- addCommand( QFtp::Remove, ftp->remove( file ) );
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( timestep );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- it = resultMap.find( QFtp::Remove );
- QVERIFY( it != resultMap.end() );
- QCOMPARE( it.value().success, 1 );
-
- QVERIFY( !fileExists( host, port, user, password, file ) );
-}
-
-void tst_QFtp::remove()
-{
- DEPENDS_ON( "put" );
-}
-
-void tst_QFtp::mkdir_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<QString>("user");
- QTest::addColumn<QString>("password");
- QTest::addColumn<QString>("cdDir");
- QTest::addColumn<QString>("dirToCreate");
- QTest::addColumn<int>("success");
-
- QTest::newRow( "relPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << "qtest/upload" << QString("rel01_%1") << 1;
- QTest::newRow( "relPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
- << "qtest/upload" << QString("rel02_%1") << 1;
- QTest::newRow( "relPath03" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
- << "qtest/upload" << QString("rel03_%1") << 1;
-
- QTest::newRow( "absPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << "." << QString("/qtest/upload/abs01_%1") << 1;
- QTest::newRow( "absPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password")
- << "." << QString("/var/ftp/qtest/upload/abs02_%1") << 1;
-
- // QTest::newRow( "nonExist01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("foo") << 0;
- QTest::newRow( "nonExist01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << "." << QString("foo") << 0;
- QTest::newRow( "nonExist02" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString()
- << "." << QString("/foo") << 0;
-}
-
-void tst_QFtp::mkdir()
-{
- QFETCH( QString, host );
- QFETCH( uint, port );
- QFETCH( QString, user );
- QFETCH( QString, password );
- QFETCH( QString, cdDir );
- QFETCH( QString, dirToCreate );
-
- if(dirToCreate.contains('%'))
- dirToCreate = dirToCreate.arg(uniqueExtension);
-
- //////////////////////////////////////////////////////////////////
- // create the directory
- init();
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- addCommand( QFtp::Cd, ftp->cd( cdDir ) );
- addCommand( QFtp::Mkdir, ftp->mkdir( dirToCreate ) );
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt it = resultMap.find( QFtp::Mkdir );
- QVERIFY( it != resultMap.end() );
- QTEST( it.value().success, "success" );
- if ( !it.value().success ) {
- QVERIFY( !dirExists( host, port, user, password, cdDir, dirToCreate ) );
- return; // the following tests are only meaningful if the dir could be created
- }
- QVERIFY( dirExists( host, port, user, password, cdDir, dirToCreate ) );
-
- //////////////////////////////////////////////////////////////////
- // create the directory again (should always fail!)
- init();
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- addCommand( QFtp::Cd, ftp->cd( cdDir ) );
- addCommand( QFtp::Mkdir, ftp->mkdir( dirToCreate ) );
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- it = resultMap.find( QFtp::Mkdir );
- QVERIFY( it != resultMap.end() );
- QCOMPARE( it.value().success, 0 );
-
- //////////////////////////////////////////////////////////////////
- // remove the directory
- init();
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- addCommand( QFtp::Cd, ftp->cd( cdDir ) );
- addCommand( QFtp::Rmdir, ftp->rmdir( dirToCreate ) );
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- it = resultMap.find( QFtp::Rmdir );
- QVERIFY( it != resultMap.end() );
- QCOMPARE( it.value().success, 1 );
-
- QVERIFY( !dirExists( host, port, user, password, cdDir, dirToCreate ) );
-}
-
-void tst_QFtp::mkdir2()
-{
- ftp = new QFtp;
- ftp->connectToHost(QtNetworkSettings::serverName());
- ftp->login();
- current_id = ftp->cd("kake/test");
-
- QEventLoop loop;
- connect(ftp, SIGNAL(done(bool)), &loop, SLOT(quit()));
- connect(ftp, SIGNAL(commandFinished(int, bool)), this, SLOT(mkdir2Slot(int, bool)));
- QTimer::singleShot(5000, &loop, SLOT(quit()));
-
- QSignalSpy commandStartedSpy(ftp, SIGNAL(commandStarted(int)));
- QSignalSpy commandFinishedSpy(ftp, SIGNAL(commandFinished(int, bool)));
-
- loop.exec();
-
- QCOMPARE(commandStartedSpy.count(), 4); // connect, login, cd, mkdir
- QCOMPARE(commandFinishedSpy.count(), 4);
-
- for (int i = 0; i < 4; ++i)
- QCOMPARE(commandFinishedSpy.at(i).at(0), commandStartedSpy.at(i).at(0));
-
- QVERIFY(!commandFinishedSpy.at(0).at(1).toBool());
- QVERIFY(!commandFinishedSpy.at(1).at(1).toBool());
- QVERIFY(commandFinishedSpy.at(2).at(1).toBool());
- QVERIFY(commandFinishedSpy.at(3).at(1).toBool());
-
- delete ftp;
- ftp = 0;
-}
-
-void tst_QFtp::mkdir2Slot(int id, bool)
-{
- if (id == current_id)
- ftp->mkdir("kake/test");
-}
-
-void tst_QFtp::rmdir()
-{
- DEPENDS_ON( "mkdir" );
-}
-
-void tst_QFtp::rename_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("user");
- QTest::addColumn<QString>("password");
- QTest::addColumn<QString>("cdDir");
- QTest::addColumn<QString>("oldfile");
- QTest::addColumn<QString>("newfile");
- QTest::addColumn<QString>("createFile");
- QTest::addColumn<QString>("renamedFile");
- QTest::addColumn<int>("success");
-
- QTest::newRow("relPath01") << QtNetworkSettings::serverName() << QString() << QString()
- << "qtest/upload"
- << QString("rel_old01_%1") << QString("rel_new01_%1")
- << QString("qtest/upload/rel_old01_%1") << QString("qtest/upload/rel_new01_%1")
- << 1;
- QTest::newRow("relPath02") << QtNetworkSettings::serverName() << QString("ftptest") << "password"
- << "qtest/upload"
- << QString("rel_old02_%1") << QString("rel_new02_%1")
- << QString("qtest/upload/rel_old02_%1") << QString("qtest/upload/rel_new02_%1")
- << 1;
- QTest::newRow("relPath03") << QtNetworkSettings::serverName() << QString("ftptest") << "password"
- << "qtest/upload"
- << QString("rel_old03_%1")<< QString("rel_new03_%1")
- << QString("qtest/upload/rel_old03_%1") << QString("qtest/upload/rel_new03_%1")
- << 1;
-
- QTest::newRow("absPath01") << QtNetworkSettings::serverName() << QString() << QString()
- << QString()
- << QString("/qtest/upload/abs_old01_%1") << QString("/qtest/upload/abs_new01_%1")
- << QString("/qtest/upload/abs_old01_%1") << QString("/qtest/upload/abs_new01_%1")
- << 1;
- QTest::newRow("absPath02") << QtNetworkSettings::serverName() << QString("ftptest") << "password"
- << QString()
- << QString("/var/ftp/qtest/upload/abs_old02_%1") << QString("/var/ftp/qtest/upload/abs_new02_%1")
- << QString("/var/ftp/qtest/upload/abs_old02_%1") << QString("/var/ftp/qtest/upload/abs_new02_%1")
- << 1;
-
- QTest::newRow("nonExist01") << QtNetworkSettings::serverName() << QString() << QString()
- << QString()
- << QString("foo") << "new_foo"
- << QString() << QString()
- << 0;
- QTest::newRow("nonExist02") << QtNetworkSettings::serverName() << QString() << QString()
- << QString()
- << QString("/foo") << QString("/new_foo")
- << QString() << QString()
- << 0;
-}
-
-void tst_QFtp::renameInit( const QString &host, const QString &user, const QString &password, const QString &createFile )
-{
- if ( !createFile.isNull() ) {
- // upload the file
- init();
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- addCommand( QFtp::Put, ftp->put( QByteArray(), createFile ) );
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 50 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt it = resultMap.find( QFtp::Put );
- QVERIFY( it != resultMap.end() );
- QVERIFY( it.value().success == 1 );
-
- QVERIFY( fileExists( host, 21, user, password, createFile ) );
- }
-}
-
-void tst_QFtp::renameCleanup( const QString &host, const QString &user, const QString &password, const QString &fileToDelete )
-{
- if ( !fileToDelete.isNull() ) {
- // cleanup (i.e. remove the file)
- init();
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- addCommand( QFtp::Remove, ftp->remove( fileToDelete ) );
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt it = resultMap.find( QFtp::Remove );
- QVERIFY( it != resultMap.end() );
- QVERIFY( it.value().success == 1 );
-
- QVERIFY( !fileExists( host, 21, user, password, fileToDelete ) );
- }
-}
-
-void tst_QFtp::rename()
-{
- QFETCH( QString, host );
- QFETCH( QString, user );
- QFETCH( QString, password );
- QFETCH( QString, cdDir );
- QFETCH( QString, oldfile );
- QFETCH( QString, newfile );
- QFETCH( QString, createFile );
- QFETCH( QString, renamedFile );
-
- if(oldfile.contains('%'))
- oldfile = oldfile.arg(uniqueExtension);
- if(newfile.contains('%'))
- newfile = newfile.arg(uniqueExtension);
- if(createFile.contains('%'))
- createFile = createFile.arg(uniqueExtension);
- if(renamedFile.contains('%'))
- renamedFile = renamedFile.arg(uniqueExtension);
-
- renameInit( host, user, password, createFile );
-
- init();
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- if ( !cdDir.isNull() )
- addCommand( QFtp::Cd, ftp->cd( cdDir ) );
- addCommand( QFtp::Rename, ftp->rename( oldfile, newfile ) );
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt it = resultMap.find( QFtp::Rename );
- QVERIFY( it != resultMap.end() );
- QTEST( it.value().success, "success" );
-
- if ( it.value().success ) {
- QVERIFY( !fileExists( host, 21, user, password, oldfile, cdDir ) );
- QVERIFY( fileExists( host, 21, user, password, newfile, cdDir ) );
- QVERIFY( fileExists( host, 21, user, password, renamedFile ) );
- } else {
- QVERIFY( !fileExists( host, 21, user, password, newfile, cdDir ) );
- QVERIFY( !fileExists( host, 21, user, password, renamedFile ) );
- }
-
- renameCleanup( host, user, password, renamedFile );
-}
-
-/*
- The commandSequence() test does not test any particular function. It rather
- tests a sequence of arbitrary commands specified in the test data.
-*/
-class FtpCommand
-{
-public:
- FtpCommand() :
- cmd(QFtp::None)
- { }
-
- FtpCommand( QFtp::Command command ) :
- cmd(command)
- { }
-
- FtpCommand( QFtp::Command command, const QStringList &arguments ) :
- cmd(command), args(arguments)
- { }
-
- FtpCommand( const FtpCommand &c )
- { *this = c; }
-
- FtpCommand &operator=( const FtpCommand &c )
- {
- this->cmd = c.cmd;
- this->args = c.args;
- return *this;
- }
-
- QFtp::Command cmd;
- QStringList args;
-};
-QDataStream &operator<<( QDataStream &s, const FtpCommand &command )
-{
- s << (int)command.cmd;
- s << command.args;
- return s;
-}
-QDataStream &operator>>( QDataStream &s, FtpCommand &command )
-{
- int tmp;
- s >> tmp;
- command.cmd = (QFtp::Command)tmp;
- s >> command.args;
- return s;
-}
-Q_DECLARE_METATYPE(QList<FtpCommand>)
-
-void tst_QFtp::commandSequence_data()
-{
- // some "constants"
- QStringList argConnectToHost01;
- argConnectToHost01 << QtNetworkSettings::serverName() << "21";
-
- QStringList argLogin01, argLogin02, argLogin03, argLogin04;
- argLogin01 << QString() << QString();
- argLogin02 << "ftp" << QString();
- argLogin03 << "ftp" << "foo";
- argLogin04 << QString("ftptest") << "password";
-
- FtpCommand connectToHost01( QFtp::ConnectToHost, argConnectToHost01 );
- FtpCommand login01( QFtp::Login, argLogin01 );
- FtpCommand login02( QFtp::Login, argLogin01 );
- FtpCommand login03( QFtp::Login, argLogin01 );
- FtpCommand login04( QFtp::Login, argLogin01 );
- FtpCommand close01( QFtp::Close );
-
- QTest::addColumn<QList<FtpCommand> >("cmds");
- QTest::addColumn<int>("success");
-
- // success data
- {
- QList<FtpCommand> cmds;
- cmds << connectToHost01;
- QTest::newRow( "simple_ok01" ) << cmds << 1;
- }
- {
- QList<FtpCommand> cmds;
- cmds << connectToHost01;
- cmds << login01;
- QTest::newRow( "simple_ok02" ) << cmds << 1;
- }
- {
- QList<FtpCommand> cmds;
- cmds << connectToHost01;
- cmds << login01;
- cmds << close01;
- QTest::newRow( "simple_ok03" ) << cmds << 1;
- }
- {
- QList<FtpCommand> cmds;
- cmds << connectToHost01;
- cmds << close01;
- QTest::newRow( "simple_ok04" ) << cmds << 1;
- }
- {
- QList<FtpCommand> cmds;
- cmds << connectToHost01;
- cmds << login01;
- cmds << close01;
- cmds << connectToHost01;
- cmds << login02;
- cmds << close01;
- QTest::newRow( "connect_twice" ) << cmds << 1;
- }
-
- // error data
- {
- QList<FtpCommand> cmds;
- cmds << close01;
- QTest::newRow( "error01" ) << cmds << 0;
- }
- {
- QList<FtpCommand> cmds;
- cmds << login01;
- QTest::newRow( "error02" ) << cmds << 0;
- }
- {
- QList<FtpCommand> cmds;
- cmds << login01;
- cmds << close01;
- QTest::newRow( "error03" ) << cmds << 0;
- }
- {
- QList<FtpCommand> cmds;
- cmds << connectToHost01;
- cmds << login01;
- cmds << close01;
- cmds << login01;
- QTest::newRow( "error04" ) << cmds << 0;
- }
-}
-
-void tst_QFtp::commandSequence()
-{
- QFETCH( QList<FtpCommand>, cmds );
-
- ftp = newFtp();
- QList<FtpCommand>::iterator it;
- for ( it = cmds.begin(); it != cmds.end(); ++it ) {
- switch ( (*it).cmd ) {
- case QFtp::ConnectToHost:
- {
- QVERIFY( (*it).args.count() == 2 );
- uint port;
- bool portOk;
- port = (*it).args[1].toUInt( &portOk );
- QVERIFY( portOk );
- ids << ftp->connectToHost( (*it).args[0], port );
- }
- break;
- case QFtp::Login:
- QVERIFY( (*it).args.count() == 2 );
- ids << ftp->login( (*it).args[0], (*it).args[1] );
- break;
- case QFtp::Close:
- QVERIFY( (*it).args.count() == 0 );
- ids << ftp->close();
- break;
- default:
- QFAIL( "Error in test: unexpected enum value" );
- break;
- }
- }
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- QTEST( commandSequence_success, "success" );
-}
-
-void tst_QFtp::abort_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<QString>("file");
- QTest::addColumn<QByteArray>("uploadData");
-
- QTest::newRow( "get_fluke01" ) << QtNetworkSettings::serverName() << (uint)21 << QString("qtest/bigfile") << QByteArray();
- QTest::newRow( "get_fluke02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("qtest/rfc3252") << QByteArray();
-
- // Qt/CE and Symbian test environment has to less memory for this test
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
- QByteArray bigData( 10*1024*1024, 0 );
-#else
- QByteArray bigData( 1*1024*1024, 0 );
-#endif
- bigData.fill( 'B' );
- QTest::newRow( "put_fluke01" ) << QtNetworkSettings::serverName() << (uint)21 << QString("qtest/upload/abort_put") << bigData;
-}
-
-void tst_QFtp::abort()
-{
- // In case you wonder where the abort() actually happens, look into
- // tst_QFtp::dataTransferProgress
- //
- QFETCH( QString, host );
- QFETCH( uint, port );
- QFETCH( QString, file );
- QFETCH( QByteArray, uploadData );
-
- QFtp::Command cmd;
- if ( uploadData.size() == 0 )
- cmd = QFtp::Get;
- else
- cmd = QFtp::Put;
-
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login() );
- if ( cmd == QFtp::Get )
- addCommand( cmd, ftp->get( file ) );
- else
- addCommand( cmd, ftp->put( uploadData, file ) );
- addCommand( QFtp::Close, ftp->close() );
-
- for(int time = 0; time <= uploadData.length() / 30000; time += 30) {
- QTestEventLoop::instance().enterLoop( 50 );
- if(ftp->currentCommand() == QFtp::None)
- break;
- }
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt it = resultMap.find( cmd );
- QVERIFY( it != resultMap.end() );
- // ### how to test the abort?
- if ( it.value().success ) {
- // The FTP server on fluke is sadly returning a success, even when
- // the operation was aborted. So we have to use some heuristics.
- if ( host == QtNetworkSettings::serverName() ) {
- if ( cmd == QFtp::Get ) {
- QVERIFY(bytesDone <= bytesTotal);
- } else {
- // put commands should always be aborted, since we use really
- // big data
- QVERIFY( bytesDone != bytesTotal );
- }
- } else {
- // this could be tested by verifying that no more progress signals are emitted
- QVERIFY(bytesDone <= bytesTotal);
- }
- } else {
- QVERIFY( bytesDone != bytesTotal );
- }
-
- if ( cmd == QFtp::Put ) {
- //////////////////////////////////////
- // cleanup (i.e. remove the file)
- init();
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login() );
- addCommand( QFtp::Remove, ftp->remove( file ) );
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- it = resultMap.find( QFtp::Remove );
- QVERIFY( it != resultMap.end() );
- QVERIFY( it.value().success == 1 );
- }
-}
-
-void tst_QFtp::bytesAvailable_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("file");
- QTest::addColumn<int>("type");
- QTest::addColumn<qlonglong>("bytesAvailFinishedGet");
- QTest::addColumn<qlonglong>("bytesAvailFinished");
- QTest::addColumn<qlonglong>("bytesAvailDone");
-
- QTest::newRow( "fluke01" ) << QtNetworkSettings::serverName() << QString("qtest/bigfile") << 0 << (qlonglong)519240 << (qlonglong)519240 << (qlonglong)519240;
- QTest::newRow( "fluke02" ) << QtNetworkSettings::serverName() << QString("qtest/rfc3252") << 0 << (qlonglong)25962 << (qlonglong)25962 << (qlonglong)25962;
-
- QTest::newRow( "fluke03" ) << QtNetworkSettings::serverName() << QString("qtest/bigfile") << 1 << (qlonglong)519240 << (qlonglong)0 << (qlonglong)0;
- QTest::newRow( "fluke04" ) << QtNetworkSettings::serverName() << QString("qtest/rfc3252") << 1 << (qlonglong)25962 << (qlonglong)0 << (qlonglong)0;
-}
-
-void tst_QFtp::bytesAvailable()
-{
- QFETCH( QString, host );
- QFETCH( QString, file );
- QFETCH( int, type );
-
- ftp = newFtp();
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host ) );
- addCommand( QFtp::Login, ftp->login() );
- addCommand( QFtp::Get, ftp->get( file ) );
- if ( type != 0 )
- addCommand( QFtp::Close, ftp->close() );
-
- QTestEventLoop::instance().enterLoop( 40 );
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt it = resultMap.find( QFtp::Get );
- QVERIFY( it != resultMap.end() );
- QVERIFY( it.value().success );
-
- QFETCH(qlonglong, bytesAvailFinishedGet);
- QCOMPARE(bytesAvailable_finishedGet, bytesAvailFinishedGet);
-
- QFETCH(qlonglong, bytesAvailFinished);
- QCOMPARE(bytesAvailable_finished, bytesAvailFinished);
-
- QFETCH(qlonglong, bytesAvailDone);
- QCOMPARE(bytesAvailable_done, bytesAvailDone);
-
- ftp->readAll();
- QVERIFY( ftp->bytesAvailable() == 0 );
- delete ftp;
- ftp = 0;
-}
-
-void tst_QFtp::activeMode()
-{
- QFile file("tst_QFtp_activeMode_inittab");
- file.open(QIODevice::ReadWrite);
- QFtp ftp;
- ftp.setTransferMode(QFtp::Active);
- ftp.connectToHost(QtNetworkSettings::serverName(), 21);
- ftp.login();
- ftp.list();
- ftp.get("/qtest/rfc3252.txt", &file);
- connect(&ftp, SIGNAL(done(bool)), SLOT(activeModeDone(bool)));
- QTestEventLoop::instance().enterLoop(900);
- QFile::remove("tst_QFtp_activeMode_inittab");
- QVERIFY(done_success == 1);
-
-}
-
-void tst_QFtp::activeModeDone(bool error)
-{
- done_success = error ? -1 : 1;
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QFtp::proxy_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<QString>("user");
- QTest::addColumn<QString>("password");
- QTest::addColumn<QString>("dir");
- QTest::addColumn<int>("success");
- QTest::addColumn<QStringList>("entryNames"); // ### we should rather use a QList<QUrlInfo> here
-
- QStringList flukeRoot;
- flukeRoot << "qtest";
- QStringList flukeQtest;
- flukeQtest << "bigfile";
- flukeQtest << "nonASCII";
- flukeQtest << "rfc3252";
- flukeQtest << "rfc3252.txt";
- flukeQtest << "upload";
-
- QTest::newRow( "proxy_relPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("qtest") << 1 << flukeQtest;
- QTest::newRow( "proxy_relPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("qtest") << 1 << flukeQtest;
-
- QTest::newRow( "proxy_absPath01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/qtest") << 1 << flukeQtest;
- QTest::newRow( "proxy_absPath02" ) << QtNetworkSettings::serverName() << (uint)21 << QString("ftptest") << QString("password") << QString("/var/ftp/qtest") << 1 << flukeQtest;
-
- QTest::newRow( "proxy_nonExist01" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("foo") << 0 << QStringList();
- QTest::newRow( "proxy_nonExist03" ) << QtNetworkSettings::serverName() << (uint)21 << QString() << QString() << QString("/foo") << 0 << QStringList();
-}
-
-void tst_QFtp::proxy()
-{
- QFETCH( QString, host );
- QFETCH( uint, port );
- QFETCH( QString, user );
- QFETCH( QString, password );
- QFETCH( QString, dir );
-
- ftp = newFtp();
- addCommand( QFtp::SetProxy, ftp->setProxy( QtNetworkSettings::serverName(), 2121 ) );
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- addCommand( QFtp::Cd, ftp->cd( dir ) );
- addCommand( QFtp::List, ftp->list() );
-
- QTestEventLoop::instance().enterLoop( 50 );
-
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() ) {
- QFAIL( "Network operation timed out" );
- }
-
- ResMapIt it = resultMap.find( QFtp::Cd );
- QVERIFY( it != resultMap.end() );
- QFETCH( int, success );
- QCOMPARE( it.value().success, success );
- QFETCH( QStringList, entryNames );
- QCOMPARE( listInfo_i.count(), entryNames.count() );
- for ( uint i=0; i < (uint) entryNames.count(); i++ ) {
- QCOMPARE( listInfo_i[i].name(), entryNames[i] );
- }
-}
-
-void tst_QFtp::binaryAscii()
-{
- QString file = "asciifile%1.txt";
-
- if(file.contains('%'))
- file = file.arg(uniqueExtension);
-
- QByteArray putData = "a line of text\r\n";
-
- init();
- ftp = newFtp();
- addCommand(QFtp::ConnectToHost, ftp->connectToHost(QtNetworkSettings::serverName(), 21));
- addCommand(QFtp::Login, ftp->login("ftptest", "password"));
- addCommand(QFtp::Cd, ftp->cd("qtest/upload"));
- addCommand(QFtp::Put, ftp->put(putData, file, QFtp::Ascii));
- addCommand(QFtp::Close, ftp->close());
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt it = resultMap.find(QFtp::Put);
- QVERIFY(it != resultMap.end());
- QVERIFY(it.value().success);
-
- QByteArray getData;
- QBuffer getBuf(&getData);
- getBuf.open(QBuffer::WriteOnly);
-
- init();
- ftp = newFtp();
- addCommand(QFtp::ConnectToHost, ftp->connectToHost(QtNetworkSettings::serverName(), 21));
- addCommand(QFtp::Login, ftp->login("ftptest", "password"));
- addCommand(QFtp::Cd, ftp->cd("qtest/upload"));
- addCommand(QFtp::Get, ftp->get(file, &getBuf, QFtp::Binary));
- addCommand(QFtp::Close, ftp->close());
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt it2 = resultMap.find(QFtp::Get);
- QVERIFY(it2 != resultMap.end());
- QVERIFY(it2.value().success);
- // most modern ftp servers leave the file as it is by default
- // (and do not remove the windows line ending), the -1 below could be
- // deleted in the future
- QVERIFY(getData.size() == putData.size()-1);
- //////////////////////////////////////////////////////////////////
- // cleanup (i.e. remove the file) -- this also tests the remove command
- init();
- ftp = newFtp();
- addCommand(QFtp::ConnectToHost, ftp->connectToHost(QtNetworkSettings::serverName(), 21));
- addCommand(QFtp::Login, ftp->login("ftptest", "password"));
- addCommand(QFtp::Cd, ftp->cd("qtest/upload"));
- addCommand(QFtp::Remove, ftp->remove(file));
- addCommand(QFtp::Close, ftp->close());
-
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- it = resultMap.find( QFtp::Remove );
- QVERIFY( it != resultMap.end() );
- QCOMPARE( it.value().success, 1 );
-
- QVERIFY(!fileExists(QtNetworkSettings::serverName(), 21, "ftptest", "password", file));
-}
-
-
-// test QFtp::currentId() and QFtp::currentCommand()
-#define CURRENTCOMMAND_TEST \
-{ \
- ResMapIt it; \
- for ( it = resultMap.begin(); it != resultMap.end(); ++it ) { \
- if ( it.value().id == ftp->currentId() ) { \
- QVERIFY( it.key() == ftp->currentCommand() ); \
- } \
-} \
-}
-
-void tst_QFtp::commandStarted( int id )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d:commandStarted( %d )", ftp->currentId(), id );
-#endif
- // make sure that the commandStarted and commandFinished are nested correctly
- QVERIFY( current_id == 0 );
- current_id = id;
-
- QVERIFY( !ids.isEmpty() );
- QVERIFY( ids.first() == id );
- if ( ids.count() > 1 ) {
- QVERIFY( ftp->hasPendingCommands() );
- } else {
- QVERIFY( !ftp->hasPendingCommands() );
- }
-
- QVERIFY( ftp->currentId() == id );
- QVERIFY( cur_state == ftp->state() );
- CURRENTCOMMAND_TEST;
-
- QVERIFY( ftp->error() == QFtp::NoError );
-}
-
-void tst_QFtp::commandFinished( int id, bool error )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d:commandFinished( %d, %d ) -- errorString: '%s'",
- ftp->currentId(), id, (int)error, ftp->errorString().toLatin1().constData() );
-#endif
- if ( ftp->currentCommand() == QFtp::Get ) {
- bytesAvailable_finishedGet = ftp->bytesAvailable();
- }
- bytesAvailable_finished = ftp->bytesAvailable();
-
- // make sure that the commandStarted and commandFinished are nested correctly
- QVERIFY( current_id == id );
- current_id = 0;
-
- QVERIFY( !ids.isEmpty() );
- QVERIFY( ids.first() == id );
- if ( !error && ids.count() > 1) {
- QVERIFY( ftp->hasPendingCommands() );
- } else {
- QVERIFY( !ftp->hasPendingCommands() );
- }
- if ( error ) {
- QVERIFY( ftp->error() != QFtp::NoError );
- ids.clear();
- } else {
- QVERIFY( ftp->error() == QFtp::NoError );
- ids.pop_front();
- }
-
- QVERIFY( ftp->currentId() == id );
- QVERIFY( cur_state == ftp->state() );
- CURRENTCOMMAND_TEST;
-
- if ( QTest::currentTestFunction() != QLatin1String("commandSequence") ) {
- ResMapIt it = resultMap.find( ftp->currentCommand() );
- QVERIFY( it != resultMap.end() );
- QVERIFY( it.value().success == -1 );
- if ( error )
- it.value().success = 0;
- else
- it.value().success = 1;
- }
-}
-
-void tst_QFtp::done( bool error )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d:done( %d )", ftp->currentId(), (int)error );
-#endif
- bytesAvailable_done = ftp->bytesAvailable();
-
- QVERIFY( ftp->currentId() == 0 );
- QVERIFY( current_id == 0 );
- QVERIFY( ids.isEmpty() );
- QVERIFY( cur_state == ftp->state() );
- QVERIFY( !ftp->hasPendingCommands() );
-
- if ( QTest::currentTestFunction() == QLatin1String("commandSequence") ) {
- QVERIFY( commandSequence_success == -1 );
- if ( error )
- commandSequence_success = 0;
- else
- commandSequence_success = 1;
- }
- QVERIFY( done_success == -1 );
- if ( error ) {
- QVERIFY( ftp->error() != QFtp::NoError );
- done_success = 0;
- } else {
- QVERIFY( ftp->error() == QFtp::NoError );
- done_success = 1;
- }
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QFtp::stateChanged( int state )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d: stateChanged( %d )", ftp->currentId(), state );
-#endif
- QCOMPARE( ftp->currentId(), current_id );
- CURRENTCOMMAND_TEST;
-
- QVERIFY( state != cur_state );
- QCOMPARE( state, (int)ftp->state() );
- if ( state != QFtp::Unconnected ) {
- // make sure that the states are always emitted in the right order (for
- // this, we assume an ordering on the enum values, which they have at
- // the moment)
- QVERIFY( cur_state < state );
-
- // make sure that state changes are only emitted in response to certain
- // commands
- switch ( state ) {
- case QFtp::HostLookup:
- case QFtp::Connecting:
- case QFtp::Connected:
- QCOMPARE( (int)ftp->currentCommand(), (int)QFtp::ConnectToHost );
- break;
- case QFtp::LoggedIn:
- QCOMPARE( (int)ftp->currentCommand(), (int)QFtp::Login );
- break;
- case QFtp::Closing:
- QCOMPARE( (int)ftp->currentCommand(), (int)QFtp::Close );
- break;
- default:
- QWARN( QString("Unexpected state '%1'").arg(state).toLatin1().constData() );
- break;
- }
- }
- cur_state = state;
-
- if ( QTest::currentTestFunction() == QLatin1String("connectToHost") ) {
- switch ( state ) {
- case QFtp::HostLookup:
- case QFtp::Connecting:
- case QFtp::LoggedIn:
- case QFtp::Closing:
- // ignore
- break;
- case QFtp::Connected:
- case QFtp::Unconnected:
- QVERIFY( connectToHost_state == -1 );
- connectToHost_state = state;
- break;
- default:
- QWARN( QString("Unknown state '%1'").arg(state).toLatin1().constData() );
- break;
- }
- } else if ( QTest::currentTestFunction() == QLatin1String("close") ) {
- ResMapIt it = resultMap.find( QFtp::Close );
- if ( it!=resultMap.end() && ftp->currentId()==it.value().id ) {
- if ( state == QFtp::Closing ) {
- QVERIFY( close_state == -1 );
- close_state = state;
- } else if ( state == QFtp::Unconnected ) {
- QVERIFY( close_state == QFtp::Closing );
- close_state = state;
- }
- }
- } else if ( QTest::currentTestFunction() == QLatin1String("login") ) {
- ResMapIt it = resultMap.find( QFtp::Login );
- if ( it!=resultMap.end() && ftp->currentId()==it.value().id ) {
- if ( state == QFtp::LoggedIn ) {
- QVERIFY( login_state == -1 );
- login_state = state;
- }
- }
- }
-}
-
-void tst_QFtp::listInfo( const QUrlInfo &i )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d: listInfo( %s )", ftp->currentId(), i.name().toLatin1().constData() );
-#endif
- QCOMPARE( ftp->currentId(), current_id );
- if ( ids.count() > 1 ) {
- QVERIFY( ftp->hasPendingCommands() );
- } else {
- QVERIFY( !ftp->hasPendingCommands() );
- }
- QVERIFY( cur_state == ftp->state() );
- CURRENTCOMMAND_TEST;
-
- if ( QTest::currentTestFunction()==QLatin1String("list") || QTest::currentTestFunction()==QLatin1String("cd") || QTest::currentTestFunction()==QLatin1String("proxy") || inFileDirExistsFunction ) {
- ResMapIt it = resultMap.find( QFtp::List );
- QVERIFY( it != resultMap.end() );
- QVERIFY( ftp->currentId() == it.value().id );
- listInfo_i << i;
- }
-}
-
-void tst_QFtp::readyRead()
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d: readyRead(), bytesAvailable == %lu", ftp->currentId(), ftp->bytesAvailable() );
-#endif
- QCOMPARE( ftp->currentId(), current_id );
- if ( ids.count() > 1 ) {
- QVERIFY( ftp->hasPendingCommands() );
- } else {
- QVERIFY( !ftp->hasPendingCommands() );
- }
- QVERIFY( cur_state == ftp->state() );
- CURRENTCOMMAND_TEST;
-
- if ( QTest::currentTestFunction() != QLatin1String("bytesAvailable") ) {
- int oldSize = newData_ba.size();
- qlonglong bytesAvail = ftp->bytesAvailable();
- QByteArray ba = ftp->readAll();
- QVERIFY( ba.size() == (int) bytesAvail );
- newData_ba.resize( oldSize + ba.size() );
- memcpy( newData_ba.data()+oldSize, ba.data(), ba.size() );
-
- if ( bytesTotal != -1 ) {
- QVERIFY( (int)newData_ba.size() <= bytesTotal );
- }
- QVERIFY( (int)newData_ba.size() == bytesDone );
- }
-}
-
-void tst_QFtp::dataTransferProgress( qint64 done, qint64 total )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d: dataTransferProgress( %lli, %lli )", ftp->currentId(), done, total );
-#endif
- QCOMPARE( ftp->currentId(), current_id );
- if ( ids.count() > 1 ) {
- QVERIFY( ftp->hasPendingCommands() );
- } else {
- QVERIFY( !ftp->hasPendingCommands() );
- }
- QVERIFY( cur_state == ftp->state() );
- CURRENTCOMMAND_TEST;
-
- if ( bytesTotal == bytesTotal_init ) {
- bytesTotal = total;
- } else {
- QVERIFY( bytesTotal == total );
- }
-
- QVERIFY( bytesTotal != bytesTotal_init );
- QVERIFY( bytesDone <= done );
- bytesDone = done;
- if ( bytesTotal != -1 ) {
- QVERIFY( bytesDone <= bytesTotal );
- }
-
- if ( QTest::currentTestFunction() == QLatin1String("abort") ) {
- // ### it would be nice if we could specify in our testdata when to do
- // the abort
- if ( done >= total/100000 ) {
- if ( ids.count() != 1 ) {
- // do abort only once
- int tmpId = ids.first();
- ids.clear();
- ids << tmpId;
- ftp->abort();
- }
- }
- }
-}
-
-
-QFtp *tst_QFtp::newFtp()
-{
- QFtp *nFtp = new QFtp( this );
-#ifndef QT_NO_BEARERMANAGEMENT
- if (networkSessionExplicit) {
- nFtp->setProperty("_q_networksession", QVariant::fromValue(networkSessionExplicit));
- }
-#endif
- connect( nFtp, SIGNAL(commandStarted(int)),
- SLOT(commandStarted(int)) );
- connect( nFtp, SIGNAL(commandFinished(int,bool)),
- SLOT(commandFinished(int,bool)) );
- connect( nFtp, SIGNAL(done(bool)),
- SLOT(done(bool)) );
- connect( nFtp, SIGNAL(stateChanged(int)),
- SLOT(stateChanged(int)) );
- connect( nFtp, SIGNAL(listInfo(const QUrlInfo&)),
- SLOT(listInfo(const QUrlInfo&)) );
- connect( nFtp, SIGNAL(readyRead()),
- SLOT(readyRead()) );
- connect( nFtp, SIGNAL(dataTransferProgress(qint64, qint64)),
- SLOT(dataTransferProgress(qint64, qint64)) );
-
- return nFtp;
-}
-
-void tst_QFtp::addCommand( QFtp::Command cmd, int id )
-{
- ids << id;
- CommandResult res;
- res.id = id;
- res.success = -1;
- resultMap[ cmd ] = res;
-}
-
-bool tst_QFtp::fileExists( const QString &host, quint16 port, const QString &user, const QString &password, const QString &file, const QString &cdDir )
-{
- init();
- ftp = newFtp();
- // ### make these tests work
- if (ftp->currentId() != 0) {
- qWarning("ftp->currentId() != 0");
- return FALSE;
- }
-
- if (ftp->state() != QFtp::Unconnected) {
- qWarning("ftp->state() != QFtp::Unconnected");
- return FALSE;
- }
-
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- if ( !cdDir.isNull() )
- addCommand( QFtp::Cd, ftp->cd( cdDir ) );
- addCommand( QFtp::List, ftp->list( file ) );
- addCommand( QFtp::Close, ftp->close() );
-
- inFileDirExistsFunction = TRUE;
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() ) {
- // ### make this test work
- qWarning("tst_QFtp::fileExists: Network operation timed out");
- return FALSE;
- }
- inFileDirExistsFunction = FALSE;
-
- ResMapIt it = resultMap.find( QFtp::ConnectToHost );
- // ### make these tests work
- if (it == resultMap.end()) {
- qWarning("it != resultMap.end()");
- return FALSE;
- }
-
- if (it.value().success == -1) {
- qWarning("it.value().success != -1");
- return FALSE;
- }
-
- if ( it.value().success == 1 ) {
- for ( uint i=0; i < (uint) listInfo_i.count(); i++ ) {
- if ( QFileInfo(listInfo_i[i].name()).fileName() == QFileInfo(file).fileName() )
- return TRUE;
- }
- }
-
- //this is not a good warning considering sometime this function is used to test that a file does not exist
- //qWarning("file doesn't exist");
- return FALSE;
-}
-
-bool tst_QFtp::dirExists( const QString &host, quint16 port, const QString &user, const QString &password, const QString &cdDir, const QString &dirToCreate )
-{
- init();
- ftp = newFtp();
- // ### make these tests work
- // QCOMPARE( ftp->currentId(), 0 );
- // QCOMPARE( (int)ftp->state(), (int)QFtp::Unconnected );
-
- addCommand( QFtp::ConnectToHost, ftp->connectToHost( host, port ) );
- addCommand( QFtp::Login, ftp->login( user, password ) );
- if ( dirToCreate.startsWith( "/" ) )
- addCommand( QFtp::Cd, ftp->cd( dirToCreate ) );
- else
- addCommand( QFtp::Cd, ftp->cd( cdDir + "/" + dirToCreate ) );
- addCommand( QFtp::Close, ftp->close() );
-
- inFileDirExistsFunction = TRUE;
- QTestEventLoop::instance().enterLoop( 30 );
- delete ftp;
- ftp = 0;
- if ( QTestEventLoop::instance().timeout() ) {
- // ### make this test work
- // QFAIL( "Network operation timed out" );
- qWarning("tst_QFtp::dirExists: Network operation timed out");
- return FALSE;
- }
- inFileDirExistsFunction = FALSE;
-
- ResMapIt it = resultMap.find( QFtp::Cd );
- // ### make these tests work
- // QVERIFY( it != resultMap.end() );
- // QVERIFY( it.value().success != -1 );
- return it.value().success == 1;
-}
-
-void tst_QFtp::doneSignal()
-{
- QFtp ftp;
- QSignalSpy spy(&ftp, SIGNAL(done(bool)));
-
- ftp.connectToHost(QtNetworkSettings::serverName());
- ftp.login("anonymous");
- ftp.list();
- ftp.close();
-
- done_success = 0;
- connect(&ftp, SIGNAL(done(bool)), &(QTestEventLoop::instance()), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(61);
- if (QTestEventLoop::instance().timeout())
- QFAIL("Network operation timed out");
-
- QTest::qWait(200);
-
- QCOMPARE(spy.count(), 1);
- QCOMPARE(spy.first().first().toBool(), false);
-}
-
-void tst_QFtp::queueMoreCommandsInDoneSlot()
-{
- QSKIP("Task 127050 && 113966", SkipSingle);
-
- QFtp ftp;
- QSignalSpy doneSpy(&ftp, SIGNAL(done(bool)));
- QSignalSpy commandFinishedSpy(&ftp, SIGNAL(commandFinished(int, bool)));
-
- this->ftp = &ftp;
- connect(&ftp, SIGNAL(done(bool)), this, SLOT(cdUpSlot(bool)));
-
- ftp.connectToHost("ftp.qt.nokia.com");
- ftp.login();
- ftp.cd("qt");
- ftp.rmdir("qtest-removedir-noexist");
-
- while ( ftp.hasPendingCommands() || ftp.currentCommand() != QFtp::None ) {
- QCoreApplication::instance()->processEvents(QEventLoop::AllEvents
- | QEventLoop::WaitForMoreEvents);
- }
-
- QCOMPARE(doneSpy.count(), 2);
- QCOMPARE(doneSpy.first().first().toBool(), true);
- QCOMPARE(doneSpy.last().first().toBool(), false);
-
- QCOMPARE(commandFinishedSpy.count(), 6);
- int firstId = commandFinishedSpy.at(0).at(0).toInt();
- QCOMPARE(commandFinishedSpy.at(0).at(1).toBool(), false);
- QCOMPARE(commandFinishedSpy.at(1).at(0).toInt(), firstId + 1);
- QCOMPARE(commandFinishedSpy.at(1).at(1).toBool(), false);
- QCOMPARE(commandFinishedSpy.at(2).at(0).toInt(), firstId + 2);
- QCOMPARE(commandFinishedSpy.at(2).at(1).toBool(), false);
- QCOMPARE(commandFinishedSpy.at(3).at(0).toInt(), firstId + 3);
- QCOMPARE(commandFinishedSpy.at(3).at(1).toBool(), true);
- QCOMPARE(commandFinishedSpy.at(4).at(0).toInt(), firstId + 4);
- QCOMPARE(commandFinishedSpy.at(4).at(1).toBool(), false);
- QCOMPARE(commandFinishedSpy.at(5).at(0).toInt(), firstId + 5);
- QCOMPARE(commandFinishedSpy.at(5).at(1).toBool(), false);
-
- this->ftp = 0;
-}
-
-void tst_QFtp::cdUpSlot(bool error)
-{
- if (error) {
- ftp->cd("..");
- ftp->cd("qt");
- }
-}
-
-void tst_QFtp::qtbug7359Crash()
-{
- QFtp ftp;
- ftp.connectToHost("127.0.0.1");
-
- QTime t;
- int elapsed;
-
- t.start();
- while ((elapsed = t.elapsed()) < 200)
- QCoreApplication::processEvents(QEventLoop::AllEvents, 200 - elapsed);
-
- ftp.close();
- t.restart();
- while ((elapsed = t.elapsed()) < 1000)
- QCoreApplication::processEvents(QEventLoop::AllEvents, 1000 - elapsed);
-
- ftp.connectToHost("127.0.0.1");
-
- t.restart();
- while ((elapsed = t.elapsed()) < 2000)
- QCoreApplication::processEvents(QEventLoop::AllEvents, 2000 - elapsed);
-}
-
-QTEST_MAIN(tst_QFtp)
-
-#include "tst_qftp.moc"
diff --git a/tests/auto/qfuture/tst_qfuture.cpp b/tests/auto/qfuture/tst_qfuture.cpp
deleted file mode 100644
index 2178489bd9..0000000000
--- a/tests/auto/qfuture/tst_qfuture.cpp
+++ /dev/null
@@ -1,1469 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QCoreApplication>
-#include <QDebug>
-
-#define QFUTURE_TEST
-
-#include <QtTest/QtTest>
-#include <qfuture.h>
-#include "versioncheck.h"
-#include <qfuturewatcher.h>
-#include <qtconcurrentresultstore.h>
-#include <qtconcurrentexception.h>
-
-#ifndef QT_NO_CONCURRENT_TEST
-#include <private/qfutureinterface_p.h>
-
-using namespace QtConcurrent;
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QFuture: public QObject
-{
- Q_OBJECT
-private slots:
- void resultStore();
- void future();
- void futureInterface();
- void refcounting();
- void cancel();
- void statePropagation();
- void multipleResults();
- void indexedResults();
- void progress();
- void progressText();
- void resultsAfterFinished();
- void resultsAsList();
- void implicitConversions();
- void iterators();
- void pause();
- void throttling();
- void voidConversions();
-#ifndef QT_NO_EXCEPTIONS
- void exceptions();
- void exceptions_QTBUG18149();
-#endif
-};
-
-QTEST_MAIN(tst_QFuture)
-
-void tst_QFuture::resultStore()
-{
- int int0 = 0;
- int int1 = 1;
- int int2 = 2;
-
- {
- ResultStore<int> store;
- ResultIteratorBase it = store.begin();
- QVERIFY(store.begin() == store.end());
- QVERIFY(store.resultAt(0) == store.end());
- QVERIFY(store.resultAt(1) == store.end());
- }
-
-
- {
- ResultStoreBase store;
- store.addResult(-1, &int0); // note to self: adding a pointer to the stack here is ok since
- store.addResult(1, &int1); // ResultStoreBase does not take ownership, only ResultStore<> does.
- ResultIteratorBase it = store.begin();
- QCOMPARE(it.resultIndex(), 0);
- QVERIFY(it == store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 1);
- QVERIFY(it != store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QVERIFY(it != store.begin());
- QVERIFY(it == store.end());
- }
-
- QVector<int> vec0 = QVector<int>() << 2 << 3;
- QVector<int> vec1 = QVector<int>() << 4 << 5;
-
- {
- ResultStoreBase store;
- store.addResults(-1, &vec0, 2, 2);
- store.addResults(-1, &vec1, 2, 2);
- ResultIteratorBase it = store.begin();
- QCOMPARE(it.resultIndex(), 0);
- QVERIFY(it == store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 1);
- QVERIFY(it != store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 2);
-
- ++it;
- QCOMPARE(it.resultIndex(), 3);
-
- ++it;
- QVERIFY(it == store.end());
- }
- {
- ResultStoreBase store;
- store.addResult(-1, &int0);
- store.addResults(-1, &vec1, 2, 2);
- store.addResult(-1, &int1);
-
- ResultIteratorBase it = store.begin();
- QCOMPARE(it.resultIndex(), 0);
- QVERIFY(it == store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 1);
- QVERIFY(it != store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 2);
- QVERIFY(it != store.end());
- ++it;
- QCOMPARE(it.resultIndex(), 3);
- QVERIFY(it != store.end());
- ++it;
- QVERIFY(it == store.end());
-
- QCOMPARE(store.resultAt(0).resultIndex(), 0);
- QCOMPARE(store.resultAt(1).resultIndex(), 1);
- QCOMPARE(store.resultAt(2).resultIndex(), 2);
- QCOMPARE(store.resultAt(3).resultIndex(), 3);
- QCOMPARE(store.resultAt(4), store.end());
- }
- {
- ResultStore<int> store;
- store.addResult(-1, &int0);
- store.addResults(-1, &vec0);
- store.addResult(-1, &int1);
-
- ResultIteratorBase it = store.begin();
- QCOMPARE(it.resultIndex(), 0);
- QVERIFY(it == store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 1);
- QVERIFY(it != store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 2);
- QVERIFY(it != store.end());
- ++it;
- QCOMPARE(it.resultIndex(), 3);
- QVERIFY(it != store.end());
- ++it;
- QVERIFY(it == store.end());
-
- QCOMPARE(store.resultAt(0).value(), int0);
- QCOMPARE(store.resultAt(1).value(), vec0[0]);
- QCOMPARE(store.resultAt(2).value(), vec0[1]);
- QCOMPARE(store.resultAt(3).value(), int1);
- }
- {
- ResultStore<int> store;
- store.addResult(-1, &int0);
- store.addResults(-1, &vec0);
- store.addResult(200, &int1);
-
- QCOMPARE(store.resultAt(0).value(), int0);
- QCOMPARE(store.resultAt(1).value(), vec0[0]);
- QCOMPARE(store.resultAt(2).value(), vec0[1]);
- QCOMPARE(store.resultAt(200).value(), int1);
- }
-
- {
- ResultStore<int> store;
- store.addResult(1, &int1);
- store.addResult(0, &int0);
- store.addResult(-1, &int2);
-
- QCOMPARE(store.resultAt(0).value(), int0);
- QCOMPARE(store.resultAt(1).value(), int1);
- QCOMPARE(store.resultAt(2).value(), int2);
- }
-
- {
- ResultStore<int> store;
- QCOMPARE(store.contains(0), false);
- QCOMPARE(store.contains(1), false);
- QCOMPARE(store.contains(INT_MAX), false);
- }
-
- {
- // Test filter mode, where "gaps" in the result array aren't allowed.
- ResultStore<int> store;
- store.setFilterMode(true);
-
- store.addResult(0, &int0);
- QCOMPARE(store.contains(0), true);
-
- store.addResult(2, &int2); // add result at index 2
- QCOMPARE(store.contains(2), false); // but 1 is missing, so this 2 won't be reported yet.
-
- store.addResult(1, &int1);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), true); // 2 should be visible now.
-
- store.addResult(4, &int0);
- store.addResult(5, &int0);
- store.addResult(7, &int0);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(7), false);
-
- store.addResult(3, &int0); // adding 3 makes 4 and 5 visible
- QCOMPARE(store.contains(4), true);
- QCOMPARE(store.contains(5), true);
- QCOMPARE(store.contains(7), false);
-
- store.addResult(6, &int0); // adding 6 makes 7 visible
-
- QCOMPARE(store.contains(6), true);
- QCOMPARE(store.contains(7), true);
- QCOMPARE(store.contains(8), false);
- }
-
- {
- // test canceled results
- ResultStore<int> store;
- store.setFilterMode(true);
-
- store.addResult(0, &int0);
- QCOMPARE(store.contains(0), true);
-
- store.addResult(2, &int0);
- QCOMPARE(store.contains(2), false);
-
- store.addCanceledResult(1); // report no result at 1
-
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), true); // 2 gets renamed to 1
- QCOMPARE(store.contains(2), false);
-
- store.addResult(3, &int0);
- QCOMPARE(store.contains(2), true); //3 gets renamed to 2
-
- store.addResult(6, &int0);
- store.addResult(7, &int0);
- QCOMPARE(store.contains(3), false);
-
- store.addCanceledResult(4);
- store.addCanceledResult(5);
-
- QCOMPARE(store.contains(3), true); //6 gets renamed to 3
- QCOMPARE(store.contains(4), true); //7 gets renamed to 4
-
- store.addResult(8, &int0);
- QCOMPARE(store.contains(5), true); //8 gets renamed to 4
-
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
- }
-
- {
- // test addResult return value
- ResultStore<int> store;
- store.setFilterMode(true);
-
- store.addResult(0, &int0);
- QCOMPARE(store.count(), 1); // result 0 becomes available
- QCOMPARE(store.contains(0), true);
-
- store.addResult(2, &int0);
- QCOMPARE(store.count(), 1);
- QCOMPARE(store.contains(2), false);
-
- store.addCanceledResult(1);
- QCOMPARE(store.count(), 2); // result 2 is renamed to 1 and becomes available
-
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), false);
-
- store.addResult(3, &int0);
- QCOMPARE(store.count(), 3);
- QCOMPARE(store.contains(2), true);
-
- store.addResult(6, &int0);
- QCOMPARE(store.count(), 3);
- store.addResult(7, &int0);
- QCOMPARE(store.count(), 3);
- QCOMPARE(store.contains(3), false);
-
- store.addCanceledResult(4);
- store.addCanceledResult(5);
- QCOMPARE(store.count(), 5); // 6 and 7 is renamed to 3 and 4 and becomes available
-
- QCOMPARE(store.contains(3), true);
- QCOMPARE(store.contains(4), true);
-
- store.addResult(8, &int0);
- QCOMPARE(store.contains(5), true);
- QCOMPARE(store.count(), 6);
-
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
- }
-
- {
- // test resultCount in non-filtered mode. It should always be possible
- // to iterate through the results 0 to resultCount.
- ResultStore<int> store;
- store.addResult(0, &int0);
-
- QCOMPARE(store.count(), 1);
-
- store.addResult(2, &int0);
-
- QCOMPARE(store.count(), 1);
-
- store.addResult(1, &int0);
- QCOMPARE(store.count(), 3);
- }
-
- {
- ResultStore<int> store;
- store.addResult(2, &int0);
- QCOMPARE(store.count(), 0);
-
- store.addResult(1, &int0);
- QCOMPARE(store.count(), 0);
-
- store.addResult(0, &int0);
- QCOMPARE(store.count(), 3);
- }
-
- {
- ResultStore<int> store;
- store.addResults(2, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResult(1, &int0);
- QCOMPARE(store.count(), 0);
-
- store.addResult(0, &int0);
- QCOMPARE(store.count(), 4);
- }
-
- {
- ResultStore<int> store;
- store.addResults(2, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResults(0, &vec0);
- QCOMPARE(store.count(), 4);
- }
- {
- ResultStore<int> store;
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResults(0, &vec0);
- QCOMPARE(store.count(), 2);
-
- store.addResult(2, &int0);
- QCOMPARE(store.count(), 5);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResults(0, &vec0);
- QCOMPARE(store.count(), 2);
-
- store.addCanceledResult(2);
- QCOMPARE(store.count(), 4);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addCanceledResults(0, 3);
- QCOMPARE(store.count(), 2);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addCanceledResults(0, 3);
- QCOMPARE(store.count(), 2); // results at 3 and 4 become available at index 0, 1
-
- store.addResult(5, &int0);
- QCOMPARE(store.count(), 3);// result 5 becomes available at index 2
- }
-
- {
- ResultStore<int> store;
- store.addResult(1, &int0);
- store.addResult(3, &int0);
- store.addResults(6, &vec0);
- QCOMPARE(store.contains(0), false);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), false);
- QCOMPARE(store.contains(3), true);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(6), true);
- QCOMPARE(store.contains(7), true);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResult(1, &int0);
- store.addResult(3, &int0);
- store.addResults(6, &vec0);
- QCOMPARE(store.contains(0), false);
- QCOMPARE(store.contains(1), false);
- QCOMPARE(store.contains(2), false);
- QCOMPARE(store.contains(3), false);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
-
- store.addCanceledResult(0);
- store.addCanceledResult(2);
- store.addCanceledResults(4, 2);
-
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), true);
- QCOMPARE(store.contains(3), true);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
- }
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addCanceledResult(0);
- QCOMPARE(store.contains(0), false);
-
- store.addResult(1, &int0);
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), false);
- }
-}
-
-void tst_QFuture::future()
-{
- // default constructors
- QFuture<int> intFuture;
- intFuture.waitForFinished();
- QFuture<QString> stringFuture;
- stringFuture.waitForFinished();
- QFuture<void> voidFuture;
- voidFuture.waitForFinished();
- QFuture<void> defaultVoidFuture;
- defaultVoidFuture.waitForFinished();
-
- // copy constructor
- QFuture<int> intFuture2(intFuture);
- QFuture<void> voidFuture2(defaultVoidFuture);
-
- // assigmnent operator
- intFuture2 = QFuture<int>();
- voidFuture2 = QFuture<void>();
-
- // state
- QCOMPARE(intFuture2.isStarted(), true);
- QCOMPARE(intFuture2.isFinished(), true);
-}
-
-class IntResult : public QFutureInterface<int>
-{
-public:
- QFuture<int> run()
- {
- this->reportStarted();
- QFuture<int> future = QFuture<int>(this);
-
- int res = 10;
- reportFinished(&res);
- return future;
- }
-};
-
-int value = 10;
-
-class VoidResult : public QFutureInterfaceBase
-{
-public:
- QFuture<void> run()
- {
- this->reportStarted();
- QFuture<void> future = QFuture<void>(this);
- reportFinished();
- return future;
- }
-};
-
-void tst_QFuture::futureInterface()
-{
- {
- QFuture<void> future;
- {
- QFutureInterface<void> i;
- i.reportStarted();
- future = i.future();
- i.reportFinished();
- }
- }
- {
- QFuture<int> future;
- {
- QFutureInterface<int> i;
- i.reportStarted();
- i.reportResult(10);
- future = i.future();
- i.reportFinished();
- }
- QCOMPARE(future.resultAt(0), 10);
- }
-
- {
- QFuture<int> intFuture;
-
- QCOMPARE(intFuture.isStarted(), true);
- QCOMPARE(intFuture.isFinished(), true);
-
- IntResult result;
-
- result.reportStarted();
- intFuture = result.future();
-
- QCOMPARE(intFuture.isStarted(), true);
- QCOMPARE(intFuture.isFinished(), false);
-
- result.reportFinished(&value);
-
- QCOMPARE(intFuture.isStarted(), true);
- QCOMPARE(intFuture.isFinished(), true);
-
- int e = intFuture.result();
-
- QCOMPARE(intFuture.isStarted(), true);
- QCOMPARE(intFuture.isFinished(), true);
- QCOMPARE(intFuture.isCanceled(), false);
-
- QCOMPARE(e, value);
- intFuture.waitForFinished();
-
- IntResult intAlgo;
- intFuture = intAlgo.run();
- QFuture<int> intFuture2(intFuture);
- QCOMPARE(intFuture.result(), value);
- QCOMPARE(intFuture2.result(), value);
- intFuture.waitForFinished();
-
- VoidResult a;
- a.run().waitForFinished();
- }
-}
-
-template <typename T>
-void testRefCounting()
-{
- QFutureInterface<T> interface;
- QCOMPARE(int(interface.d->refCount), 1);
-
- {
- interface.reportStarted();
-
- QFuture<T> f = interface.future();
- QCOMPARE(int(interface.d->refCount), 2);
-
- QFuture<T> f2(f);
- QCOMPARE(int(interface.d->refCount), 3);
-
- QFuture<T> f3;
- f3 = f2;
- QCOMPARE(int(interface.d->refCount), 4);
-
- interface.reportFinished(0);
- QCOMPARE(int(interface.d->refCount), 4);
- }
-
- QCOMPARE(int(interface.d->refCount), 1);
-}
-
-void tst_QFuture::refcounting()
-{
- testRefCounting<int>();
-}
-
-void tst_QFuture::cancel()
-{
- {
- QFuture<void> f;
- QFutureInterface<void> result;
-
- result.reportStarted();
- f = result.future();
- QVERIFY(f.isCanceled() == false);
- result.reportCanceled();
- QVERIFY(f.isCanceled());
- result.reportFinished();
- QVERIFY(f.isCanceled());
- f.waitForFinished();
- QVERIFY(f.isCanceled());
- }
-
- // Cancel from the QFuture side and test if the result
- // interface detects it.
- {
- QFutureInterface<void> result;
-
- QFuture<void> f;
- QVERIFY(f.isStarted() == true);
-
- result.reportStarted();
- f = result.future();
-
- QVERIFY(f.isStarted() == true);
-
- QVERIFY(result.isCanceled() == false);
- f.cancel();
-
- QVERIFY(result.isCanceled());
-
- result.reportFinished();
- }
-
- // Test that finished futures can be canceled.
- {
- QFutureInterface<void> result;
-
- QFuture<void> f;
- QVERIFY(f.isStarted() == true);
-
- result.reportStarted();
- f = result.future();
-
- QVERIFY(f.isStarted() == true);
-
- result.reportFinished();
-
- f.cancel();
-
- QVERIFY(result.isCanceled());
- QVERIFY(f.isCanceled());
- }
-
- // Results reported after canceled is called should not be propagated.
- {
-
- QFutureInterface<int> futureInterface;
- futureInterface.reportStarted();
- QFuture<int> f = futureInterface.future();
-
- int result = 0;
- futureInterface.reportResult(&result);
- result = 1;
- futureInterface.reportResult(&result);
- f.cancel();
- result = 2;
- futureInterface.reportResult(&result);
- result = 3;
- futureInterface.reportResult(&result);
- futureInterface.reportFinished();
- QCOMPARE(f.results(), QList<int>());
- }
-}
-
-void tst_QFuture::statePropagation()
-{
- QFuture<void> f1;
- QFuture<void> f2;
-
- QCOMPARE(f1.isStarted(), true);
-
- QFutureInterface<void> result;
- result.reportStarted();
- f1 = result.future();
-
- f2 = f1;
-
- QCOMPARE(f2.isStarted(), true);
-
- result.reportCanceled();
-
- QCOMPARE(f2.isStarted(), true);
- QCOMPARE(f2.isCanceled(), true);
-
- QFuture<void> f3 = f2;
-
- QCOMPARE(f3.isStarted(), true);
- QCOMPARE(f3.isCanceled(), true);
-
- result.reportFinished();
-
- QCOMPARE(f2.isStarted(), true);
- QCOMPARE(f2.isCanceled(), true);
-
- QCOMPARE(f3.isStarted(), true);
- QCOMPARE(f3.isCanceled(), true);
-}
-
-/*
- Tests that a QFuture can return multiple results.
-*/
-void tst_QFuture::multipleResults()
-{
- IntResult a;
- a.reportStarted();
- QFuture<int> f = a.future();
-
- QFuture<int> copy = f;
- int result;
-
- result = 1;
- a.reportResult(&result);
- QCOMPARE(f.resultAt(0), 1);
-
- result = 2;
- a.reportResult(&result);
- QCOMPARE(f.resultAt(1), 2);
-
- result = 3;
- a.reportResult(&result);
-
- result = 4;
- a.reportFinished(&result);
-
- QCOMPARE(f.results(), QList<int>() << 1 << 2 << 3 << 4);
-
- // test foreach
- QList<int> fasit = QList<int>() << 1 << 2 << 3 << 4;
- {
- QList<int> results;
- foreach(int result, f)
- results.append(result);
- QCOMPARE(results, fasit);
- }
- {
- QList<int> results;
- foreach(int result, copy)
- results.append(result);
- QCOMPARE(results, fasit);
- }
-}
-
-/*
- Test out-of-order result reporting using indexes
-*/
-void tst_QFuture::indexedResults()
-{
- {
- QFutureInterface<QChar> Interface;
- QFuture<QChar> f;
- QVERIFY(f.isStarted() == true);
-
- Interface.reportStarted();
- f = Interface.future();
-
- QVERIFY(f.isStarted() == true);
-
- QChar result;
-
- result = 'B';
- Interface.reportResult(&result, 1);
-
- QCOMPARE(f.resultAt(1), result);
-
- result = 'A';
- Interface.reportResult(&result, 0);
- QCOMPARE(f.resultAt(0), result);
-
- result = 'C';
- Interface.reportResult(&result); // no index
- QCOMPARE(f.resultAt(2), result);
-
- Interface.reportFinished();
-
- QCOMPARE(f.results(), QList<QChar>() << 'A' << 'B' << 'C');
- }
-
- {
- // Test result reporting with a missing result in the middle
- QFutureInterface<int> Interface;
- Interface.reportStarted();
- QFuture<int> f = Interface.future();
- int result;
-
- result = 0;
- Interface.reportResult(&result, 0);
- QVERIFY(f.isResultReadyAt(0));
- QCOMPARE(f.resultAt(0), 0);
-
- result = 3;
- Interface.reportResult(&result, 3);
- QVERIFY(f.isResultReadyAt(3));
- QCOMPARE(f.resultAt(3), 3);
-
- result = 2;
- Interface.reportResult(&result, 2);
- QVERIFY(f.isResultReadyAt(2));
- QCOMPARE(f.resultAt(2), 2);
-
- result = 4;
- Interface.reportResult(&result); // no index
- QVERIFY(f.isResultReadyAt(4));
- QCOMPARE(f.resultAt(4), 4);
-
- Interface.reportFinished();
-
- QCOMPARE(f.results(), QList<int>() << 0 << 2 << 3 << 4);
- }
-}
-
-void tst_QFuture::progress()
-{
- QFutureInterface<QChar> result;
- QFuture<QChar> f;
-
- QCOMPARE (f.progressValue(), 0);
-
- result.reportStarted();
- f = result.future();
-
- QCOMPARE (f.progressValue(), 0);
-
- result.setProgressValue(50);
-
- QCOMPARE (f.progressValue(), 50);
-
- result.reportFinished();
-
- QCOMPARE (f.progressValue(), 50);
-}
-
-void tst_QFuture::progressText()
-{
- QFutureInterface<void> i;
- i.reportStarted();
- QFuture<void> f = i.future();
-
- QCOMPARE(f.progressText(), QLatin1String(""));
- i.setProgressValueAndText(1, QLatin1String("foo"));
- QCOMPARE(f.progressText(), QLatin1String("foo"));
- i.reportFinished();
-}
-
-/*
- Test that results reported after finished are ignored.
-*/
-void tst_QFuture::resultsAfterFinished()
-{
- {
- IntResult a;
- a.reportStarted();
- QFuture<int> f = a.future();
- int result;
-
- QCOMPARE(f.resultCount(), 0);
-
- result = 1;
- a.reportResult(&result);
- QCOMPARE(f.resultAt(0), 1);
-
- a.reportFinished();
-
- QCOMPARE(f.resultAt(0), 1);
- QCOMPARE(f.resultCount(), 1);
- result = 2;
- a.reportResult(&result);
- QCOMPARE(f.resultCount(), 1);
- }
- // cancel it
- {
- IntResult a;
- a.reportStarted();
- QFuture<int> f = a.future();
- int result;
-
- QCOMPARE(f.resultCount(), 0);
-
- result = 1;
- a.reportResult(&result);
- QCOMPARE(f.resultAt(0), 1);
- QCOMPARE(f.resultCount(), 1);
-
- a.reportCanceled();
-
- QCOMPARE(f.resultAt(0), 1);
- QCOMPARE(f.resultCount(), 1);
-
- result = 2;
- a.reportResult(&result);
- a.reportFinished();
- }
-}
-
-void tst_QFuture::resultsAsList()
-{
- IntResult a;
- a.reportStarted();
- QFuture<int> f = a.future();
-
- int result;
- result = 1;
- a.reportResult(&result);
- result = 2;
- a.reportResult(&result);
-
- a.reportFinished();
-
- QList<int> results = f.results();
- QCOMPARE(results, QList<int>() << 1 << 2);
-}
-
-/*
- Test that QFuture<T> can be implicitly converted to T
-*/
-void tst_QFuture::implicitConversions()
-{
- QFutureInterface<QString> iface;
- iface.reportStarted();
-
- QFuture<QString> f(&iface);
-
- const QString input("FooBar 2000");
- iface.reportFinished(&input);
-
- const QString result = f;
- QCOMPARE(result, input);
- QCOMPARE(QString(f), input);
- QCOMPARE(static_cast<QString>(f), input);
-}
-
-void tst_QFuture::iterators()
-{
- {
- QFutureInterface<int> e;
- e.reportStarted();
- QFuture<int> f = e.future();
-
- int result;
- result = 1;
- e.reportResult(&result);
- result = 2;
- e.reportResult(&result);
- result = 3;
- e.reportResult(&result);
- e.reportFinished();
-
- QList<int> results;
- QFutureIterator<int> i(f);
- while (i.hasNext()) {
- results.append(i.next());
- }
-
- QCOMPARE(results, f.results());
-
- QFuture<int>::const_iterator i1 = f.begin(), i2 = i1 + 1;
- QFuture<int>::const_iterator c1 = i1, c2 = c1 + 1;
-
- QVERIFY(i1 == i1);
- QVERIFY(i1 == c1);
- QVERIFY(c1 == i1);
- QVERIFY(c1 == c1);
- QVERIFY(i2 == i2);
- QVERIFY(i2 == c2);
- QVERIFY(c2 == i2);
- QVERIFY(c2 == c2);
-
- QVERIFY(i1 != i2);
- QVERIFY(i1 != c2);
- QVERIFY(c1 != i2);
- QVERIFY(c1 != c2);
- QVERIFY(i2 != i1);
- QVERIFY(i2 != c1);
- QVERIFY(c2 != i1);
- QVERIFY(c2 != c1);
-
- int x1 = *i1;
- Q_UNUSED(x1);
- int x2 = *i2;
- Q_UNUSED(x2);
- int y1 = *c1;
- Q_UNUSED(y1);
- int y2 = *c2;
- Q_UNUSED(y2);
- }
-
- {
- QFutureInterface<QString> e;
- e.reportStarted();
- QFuture<QString> f = e.future();
-
- e.reportResult(QString("one"));
- e.reportResult(QString("two"));
- e.reportResult(QString("three"));
- e.reportFinished();
-
- QList<QString> results;
- QFutureIterator<QString> i(f);
- while (i.hasNext()) {
- results.append(i.next());
- }
-
- QCOMPARE(results, f.results());
-
- QFuture<QString>::const_iterator i1 = f.begin(), i2 = i1 + 1;
- QFuture<QString>::const_iterator c1 = i1, c2 = c1 + 1;
-
- QVERIFY(i1 == i1);
- QVERIFY(i1 == c1);
- QVERIFY(c1 == i1);
- QVERIFY(c1 == c1);
- QVERIFY(i2 == i2);
- QVERIFY(i2 == c2);
- QVERIFY(c2 == i2);
- QVERIFY(c2 == c2);
-
- QVERIFY(i1 != i2);
- QVERIFY(i1 != c2);
- QVERIFY(c1 != i2);
- QVERIFY(c1 != c2);
- QVERIFY(i2 != i1);
- QVERIFY(i2 != c1);
- QVERIFY(c2 != i1);
- QVERIFY(c2 != c1);
-
- QString x1 = *i1;
- QString x2 = *i2;
- QString y1 = *c1;
- QString y2 = *c2;
-
- QCOMPARE(x1, y1);
- QCOMPARE(x2, y2);
-
- int i1Size = i1->size();
- int i2Size = i2->size();
- int c1Size = c1->size();
- int c2Size = c2->size();
-
- QCOMPARE(i1Size, c1Size);
- QCOMPARE(i2Size, c2Size);
- }
-
- {
- const int resultCount = 20;
-
- QFutureInterface<int> e;
- e.reportStarted();
- QFuture<int> f = e.future();
-
- for (int i = 0; i < resultCount; ++i) {
- e.reportResult(i);
- }
-
- e.reportFinished();
-
- {
- QFutureIterator<int> it(f);
- QFutureIterator<int> it2(it);
- }
-
- {
- QFutureIterator<int> it(f);
-
- for (int i = 0; i < resultCount - 1; ++i) {
- QVERIFY(it.hasNext());
- QCOMPARE(it.peekNext(), i);
- QCOMPARE(it.next(), i);
- }
-
- QVERIFY(it.hasNext());
- QCOMPARE(it.peekNext(), resultCount - 1);
- QCOMPARE(it.next(), resultCount - 1);
- QVERIFY(it.hasNext() == false);
- }
-
- {
- QFutureIterator<int> it(f);
- QVERIFY(it.hasNext());
- it.toBack();
- QVERIFY(it.hasNext() == false);
- it.toFront();
- QVERIFY(it.hasNext());
- }
- }
-}
-
-class SignalSlotObject : public QObject
-{
-Q_OBJECT
-public:
- SignalSlotObject()
- : finishedCalled(false),
- canceledCalled(false),
- rangeBegin(0),
- rangeEnd(0) { }
-
-public slots:
- void finished()
- {
-// qDebug() << "finished called";
- finishedCalled = true;
- }
-
- void canceled()
- {
-// qDebug() << "canceled called";
- canceledCalled = true;
- }
-
- void resultReady(int index)
- {
-// qDebug() << "result" << index << "ready";
- results.insert(index);
- }
-
- void progressRange(int begin, int end)
- {
-// qDebug() << "progress range" << begin << end;
- rangeBegin = begin;
- rangeEnd = end;
- }
-
- void progress(int progress)
- {
-// qDebug() << "progress" << progress;
- reportedProgress.insert(progress);
- }
-public:
- bool finishedCalled;
- bool canceledCalled;
- QSet<int> results;
- int rangeBegin;
- int rangeEnd;
- QSet<int> reportedProgress;
-};
-
-void tst_QFuture::pause()
-{
- QFutureInterface<void> Interface;
-
- Interface.reportStarted();
- QFuture<void> f = Interface.future();
-
- QVERIFY(Interface.isPaused() == false);
- f.pause();
- QVERIFY(Interface.isPaused() == true);
- f.resume();
- QVERIFY(Interface.isPaused() == false);
- f.togglePaused();
- QVERIFY(Interface.isPaused() == true);
- f.togglePaused();
- QVERIFY(Interface.isPaused() == false);
-
- Interface.reportFinished();
-}
-
-const int resultCount = 1000;
-
-class ResultObject : public QObject
-{
-Q_OBJECT
-public slots:
- void resultReady(int)
- {
-
- }
-public:
-};
-
-// Test that that the isPaused() on future result interface returns true
-// if we report a lot of results that are not handled.
-void tst_QFuture::throttling()
-{
- {
- QFutureInterface<void> i;
-
- i.reportStarted();
- QFuture<void> f = i.future();
-
- QVERIFY(i.isThrottled() == false);
-
- i.setThrottled(true);
- QVERIFY(i.isThrottled());
-
- i.setThrottled(false);
- QVERIFY(i.isThrottled() == false);
-
- i.setThrottled(true);
- QVERIFY(i.isThrottled());
-
- i.reportFinished();
- }
-/*
- QFutureInterface<int> *Interface = new QFutureInterface<int>();
- Interface.reportStarted();
- QFuture<int> f = QFuture<int>(Interface);
-
- ResultObject object;
- f.connectTo(ThrottledResultReadyAtSignal, &object, SLOT(resultReady(int)), Qt::DirectConnection);
-
- for (int i = 0; i < 100; ++i)
- Interface.reportResult(&i);
-
- QVERIFY(Interface.isPaused() == true);
-
- // read the results, this should resume the task.
- for (int i = 0; i < 100; ++i)
- f.throttledResult(i);
-
- QVERIFY(Interface.isPaused() == false);
- Interface.reportFinished();
-*/
-}
-
-void tst_QFuture::voidConversions()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> intFuture(&iface);
-
- int value = 10;
- iface.reportFinished(&value);
-
- QFuture<void> voidFuture(intFuture);
- voidFuture = intFuture;
-
- QVERIFY(voidFuture == intFuture);
-}
-
-
-#ifndef QT_NO_EXCEPTIONS
-
-QFuture<void> createExceptionFuture()
-{
- QFutureInterface<void> i;
- i.reportStarted();
- QFuture<void> f = i.future();
-
- Exception e;
- i.reportException(e);
- i.reportFinished();
- return f;
-}
-
-QFuture<int> createExceptionResultFuture()
-{
- QFutureInterface<int> i;
- i.reportStarted();
- QFuture<int> f = i.future();
- int r = 0;
- i.reportResult(r);
-
- Exception e;
- i.reportException(e);
- i.reportFinished();
- return f;
-}
-
-class DerivedException : public Exception
-{
-public:
- void raise() const { throw *this; }
- Exception *clone() const { return new DerivedException(*this); }
-};
-
-QFuture<void> createDerivedExceptionFuture()
-{
- QFutureInterface<void> i;
- i.reportStarted();
- QFuture<void> f = i.future();
-
- DerivedException e;
- i.reportException(e);
- i.reportFinished();
- return f;
-}
-
-void tst_QFuture::exceptions()
-{
-
-// test throwing from waitForFinished
-{
- QFuture<void> f = createExceptionFuture();
- bool caught = false;
- try {
- f.waitForFinished();
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
-}
-
-// test result()
-{
- QFuture<int> f = createExceptionResultFuture();
- bool caught = false;
- try {
- f.result();
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
-}
-
-// test result() and destroy
-{
- bool caught = false;
- try {
- createExceptionResultFuture().result();
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
-}
-
-// test results()
-{
- QFuture<int> f = createExceptionResultFuture();
- bool caught = false;
- try {
- f.results();
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
-}
-
-// test foreach
-{
- QFuture<int> f = createExceptionResultFuture();
- bool caught = false;
- try {
- foreach (int e, f.results()) {
- Q_UNUSED(e);
- QFAIL("did not get exception");
- }
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
-}
-
-// catch derived exceptions
-{
- bool caught = false;
- try {
- createDerivedExceptionFuture().waitForFinished();
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
-}
-
-{
- bool caught = false;
- try {
- createDerivedExceptionFuture().waitForFinished();
- } catch (DerivedException &) {
- caught = true;
- }
- QVERIFY(caught);
-}
-
-}
-
-
-void tst_QFuture::exceptions_QTBUG18149()
-{
- class MyClass
- {
- public:
- ~MyClass()
- {
- QFuture<void> f = createExceptionFuture();
- bool caught = false;
- try {
- f.waitForFinished();
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
- }
- };
-
- try {
- MyClass m;
- Q_UNUSED(m);
- throw 0;
- } catch (int) {}
-
-}
-
-
-#endif // QT_NO_EXCEPTIONS
-
-#include "tst_qfuture.moc"
-
-#else
-QTEST_NOOP_MAIN
-#endif
diff --git a/tests/auto/qfuturewatcher/tst_qfuturewatcher.cpp b/tests/auto/qfuturewatcher/tst_qfuturewatcher.cpp
deleted file mode 100644
index f45bd9f989..0000000000
--- a/tests/auto/qfuturewatcher/tst_qfuturewatcher.cpp
+++ /dev/null
@@ -1,930 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QCoreApplication>
-#include <QDebug>
-#include <QtTest/QtTest>
-
-#include <qfuture.h>
-#include "../qfuture/versioncheck.h"
-#include <qfuturewatcher.h>
-#include <qtconcurrentrun.h>
-#include <qtconcurrentmap.h>
-#include "../../shared/util.h"
-
-#ifndef QT_NO_CONCURRENT_TEST
-#include <private/qfutureinterface_p.h>
-
-using namespace QtConcurrent;
-
-#include <QtTest/QtTest>
-
-//#define PRINT
-
-class tst_QFutureWatcher: public QObject
-{
- Q_OBJECT
-private slots:
- void startFinish();
- void progressValueChanged();
- void canceled();
- void resultAt();
- void resultReadyAt();
- void futureSignals();
- void watchFinishedFuture();
- void watchCanceledFuture();
- void disconnectRunningFuture();
- void toMuchProgress();
- void progressText();
- void sharedFutureInterface();
- void changeFuture();
- void cancelEvents();
- void pauseEvents();
- void finishedState();
- void throttling();
- void incrementalMapResults();
- void incrementalFilterResults();
- void qfutureSynchornizer();
- void warnRace();
-};
-
-QTEST_MAIN(tst_QFutureWatcher)
-
-void sleeper()
-{
- QTest::qSleep(100);
-}
-
-void tst_QFutureWatcher::startFinish()
-{
- QFutureWatcher<void> futureWatcher;
-
- QSignalSpy started(&futureWatcher, SIGNAL(started()));
- QSignalSpy finished(&futureWatcher, SIGNAL(finished()));
-
- futureWatcher.setFuture(QtConcurrent::run(sleeper));
- QTest::qWait(10); // spin the event loop to deliver queued signals.
- QCOMPARE(started.count(), 1);
- QCOMPARE(finished.count(), 0);
- futureWatcher.future().waitForFinished();
- QTest::qWait(10);
- QCOMPARE(started.count(), 1);
- QCOMPARE(finished.count(), 1);
-}
-
-void mapSleeper(int &)
-{
- QTest::qSleep(100);
-}
-
-QSet<int> progressValues;
-QSet<QString> progressTexts;
-QMutex mutex;
-class ProgressObject : public QObject
-{
-Q_OBJECT
-public slots:
- void printProgress(int);
- void printText(const QString &text);
- void registerProgress(int);
- void registerText(const QString &text);
-};
-
-void ProgressObject::printProgress(int progress)
-{
- qDebug() << "thread" << QThread::currentThread() << "reports progress" << progress;
-}
-
-void ProgressObject::printText(const QString &text)
-{
- qDebug() << "thread" << QThread::currentThread() << "reports progress text" << text;
-}
-
-void ProgressObject::registerProgress(int progress)
-{
- QTest::qSleep(1);
- progressValues.insert(progress);
-}
-
-void ProgressObject::registerText(const QString &text)
-{
- QTest::qSleep(1);
- progressTexts.insert(text);
-}
-
-
-QList<int> createList(int listSize)
-{
- QList<int> list;
- for (int i = 0; i < listSize; ++i) {
- list.append(i);
- }
- return list;
-}
-
-void tst_QFutureWatcher::progressValueChanged()
-{
-#ifdef PRINT
- qDebug() << "main thread" << QThread::currentThread();
-#endif
-
- progressValues.clear();
- const int listSize = 20;
- QList<int> list = createList(listSize);
-
- QFutureWatcher<void> futureWatcher;
- ProgressObject progressObject;
- QObject::connect(&futureWatcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-#ifdef PRINT
- QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &progressObject, SLOT(printProgress(int)), Qt::DirectConnection );
-#endif
- QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &progressObject, SLOT(registerProgress(int)));
-
- futureWatcher.setFuture(QtConcurrent::map(list, mapSleeper));
-
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
- futureWatcher.disconnect();
- QVERIFY(progressValues.contains(0));
- QVERIFY(progressValues.contains(listSize));
-}
-
-class CancelObject : public QObject
-{
-Q_OBJECT
-public:
- bool wasCanceled;
- CancelObject() : wasCanceled(false) {};
-public slots:
- void cancel();
-};
-
-void CancelObject::cancel()
-{
-#ifdef PRINT
- qDebug() << "thread" << QThread::currentThread() << "reports canceled";
-#endif
- wasCanceled = true;
-}
-
-void tst_QFutureWatcher::canceled()
-{
- const int listSize = 20;
- QList<int> list = createList(listSize);
-
- QFutureWatcher<void> futureWatcher;
- QFuture<void> future;
- CancelObject cancelObject;
-
- QObject::connect(&futureWatcher, SIGNAL(canceled()), &cancelObject, SLOT(cancel()));
- QObject::connect(&futureWatcher, SIGNAL(canceled()),
- &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
-
- future = QtConcurrent::map(list, mapSleeper);
- futureWatcher.setFuture(future);
- futureWatcher.cancel();
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QVERIFY(future.isCanceled());
- QVERIFY(cancelObject.wasCanceled);
- futureWatcher.disconnect();
- future.waitForFinished();
-}
-
-class IntTask : public RunFunctionTask<int>
-{
-public:
- void runFunctor()
- {
- result = 10;
- }
-};
-
-void tst_QFutureWatcher::resultAt()
-{
- QFutureWatcher<int> futureWatcher;
- futureWatcher.setFuture((new IntTask())->start());
- futureWatcher.waitForFinished();
- QCOMPARE(futureWatcher.result(), 10);
- QCOMPARE(futureWatcher.resultAt(0), 10);
-}
-
-void tst_QFutureWatcher::resultReadyAt()
-{
- QFutureWatcher<int> futureWatcher;
- QObject::connect(&futureWatcher, SIGNAL(resultReadyAt(int)), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
-
- QFuture<int> future = (new IntTask())->start();
- futureWatcher.setFuture(future);
-
- QTestEventLoop::instance().enterLoop(1);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- // Setting the future again should give us another signal.
- // (this is to prevent the race where the task associated
- // with the future finishes before setFuture is called.)
- futureWatcher.setFuture(QFuture<int>());
- futureWatcher.setFuture(future);
-
- QTestEventLoop::instance().enterLoop(1);
- QVERIFY(!QTestEventLoop::instance().timeout());
-}
-
-class SignalSlotObject : public QObject
-{
-Q_OBJECT
-
-signals:
- void cancel();
-
-public slots:
- void started()
- {
- qDebug() << "started called";
- }
-
- void finished()
- {
- qDebug() << "finished called";
- }
-
- void canceled()
- {
- qDebug() << "canceled called";
- }
-
-#ifdef PRINT
- void resultReadyAt(int index)
- {
- qDebug() << "result" << index << "ready";
- }
-#else
- void resultReadyAt(int) { }
-#endif
- void progressValueChanged(int progress)
- {
- qDebug() << "progress" << progress;
- }
-
- void progressRangeChanged(int min, int max)
- {
- qDebug() << "progress range" << min << max;
- }
-
-};
-
-void tst_QFutureWatcher::futureSignals()
-{
- {
- QFutureInterface<int> a;
- QFutureWatcher<int> f;
-
- SignalSlotObject object;
-#ifdef PRINT
- connect(&f, SIGNAL(finished()), &object, SLOT(finished()));
- connect(&f, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
-#endif
- // must connect to resultReadyAt so that the watcher can detect the connection
- // (QSignalSpy does not trigger it.)
- connect(&f, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
- a.reportStarted();
- f.setFuture(a.future());
-
- QSignalSpy progressSpy(&f, SIGNAL(progressValueChanged(int)));
- const int progress = 1;
- a.setProgressValue(progress);
- QTest::qWait(10);
- QCOMPARE(progressSpy.count(), 2);
- QCOMPARE(progressSpy.takeFirst().at(0).toInt(), 0);
- QCOMPARE(progressSpy.takeFirst().at(0).toInt(), 1);
-
- QSignalSpy finishedSpy(&f, SIGNAL(finished()));
- QSignalSpy resultReadySpy(&f, SIGNAL(resultReadyAt(int)));
-
- const int result = 10;
- a.reportResult(&result);
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 1);
- a.reportFinished(&result);
- QTest::qWait(10);
-
- QCOMPARE(resultReadySpy.count(), 2);
- QCOMPARE(resultReadySpy.takeFirst().at(0).toInt(), 0); // check the index
- QCOMPARE(resultReadySpy.takeFirst().at(0).toInt(), 1);
-
- QCOMPARE(finishedSpy.count(), 1);
- }
-}
-
-void tst_QFutureWatcher::watchFinishedFuture()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> f = iface.future();
-
- int value = 100;
- iface.reportFinished(&value);
-
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
-#ifdef PRINT
- connect(&watcher, SIGNAL(started()), &object, SLOT(started()));
- connect(&watcher, SIGNAL(canceled()), &object, SLOT(canceled()));
- connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
- connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
- connect(&watcher, SIGNAL(progressRangeChanged(int, int)), &object, SLOT(progressRangeChanged(int, int)));
-#endif
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
-
- QSignalSpy startedSpy(&watcher, SIGNAL(started()));
- QSignalSpy finishedSpy(&watcher, SIGNAL(finished()));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
- QSignalSpy canceledSpy(&watcher, SIGNAL(canceled()));
-
- watcher.setFuture(f);
- QTest::qWait(10);
-
- QCOMPARE(startedSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 1);
- QCOMPARE(resultReadySpy.count(), 1);
- QCOMPARE(canceledSpy.count(), 0);
-}
-
-void tst_QFutureWatcher::watchCanceledFuture()
-{
- QFuture<int> f;
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
-#ifdef PRINT
- connect(&watcher, SIGNAL(started()), &object, SLOT(started()));
- connect(&watcher, SIGNAL(canceled()), &object, SLOT(canceled()));
- connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
- connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
- connect(&watcher, SIGNAL(progressRangeChanged(int, int)), &object, SLOT(progressRangeChanged(int, int)));
-#endif
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
-
- QSignalSpy startedSpy(&watcher, SIGNAL(started()));
- QSignalSpy finishedSpy(&watcher, SIGNAL(finished()));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
- QSignalSpy canceledSpy(&watcher, SIGNAL(canceled()));
-
- watcher.setFuture(f);
- QTest::qWait(10);
-
- QCOMPARE(startedSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 1);
- QCOMPARE(resultReadySpy.count(), 0);
- QCOMPARE(canceledSpy.count(), 1);
-}
-
-void tst_QFutureWatcher::disconnectRunningFuture()
-{
- QFutureInterface<int> a;
- a.reportStarted();
-
- QFuture<int> f = a.future();
- QFutureWatcher<int> *watcher = new QFutureWatcher<int>();
- watcher->setFuture(f);
-
- SignalSlotObject object;
- connect(watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
-
- QSignalSpy finishedSpy(watcher, SIGNAL(finished()));
- QSignalSpy resultReadySpy(watcher, SIGNAL(resultReadyAt(int)));
-
- const int result = 10;
- a.reportResult(&result);
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 1);
-
- delete watcher;
-
- a.reportResult(&result);
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 1);
-
- a.reportFinished(&result);
- QTest::qWait(10);
- QCOMPARE(finishedSpy.count(), 0);
-}
-
-const int maxProgress = 100000;
-class ProgressEmitterTask : public RunFunctionTask<void>
-{
-public:
- void runFunctor()
- {
- setProgressRange(0, maxProgress);
- for (int p = 0; p <= maxProgress; ++p)
- setProgressValue(p);
- }
-};
-
-void tst_QFutureWatcher::toMuchProgress()
-{
- progressValues.clear();
- ProgressObject o;
-
- QFutureWatcher<void> f;
- QObject::connect(&f, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-#ifdef PRINT
- QObject::connect(&f, SIGNAL(progressValueChanged(int)), &o, SLOT(printProgress(int)));
-#endif
- QObject::connect(&f, SIGNAL(progressValueChanged(int)), &o, SLOT(registerProgress(int)));
- f.setFuture((new ProgressEmitterTask())->start());
-
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(progressValues.contains(maxProgress));
-}
-
-template <typename T>
-class ProgressTextTask : public RunFunctionTask<T>
-{
-public:
- void runFunctor()
- {
- this->setProgressValueAndText(1, QLatin1String("Foo 1"));
-
- while (this->isProgressUpdateNeeded() == false)
- QTest::qSleep(1);
- this->setProgressValueAndText(2, QLatin1String("Foo 2"));
-
- while (this->isProgressUpdateNeeded() == false)
- QTest::qSleep(1);
- this->setProgressValueAndText(3, QLatin1String("Foo 3"));
-
- while (this->isProgressUpdateNeeded() == false)
- QTest::qSleep(1);
- this->setProgressValueAndText(4, QLatin1String("Foo 4"));
- }
-};
-
-void tst_QFutureWatcher::progressText()
-{
- { // instantiate API for T=int and T=void.
- ProgressTextTask<int> a;
- ProgressTextTask<void> b;
- }
- {
- progressValues.clear();
- progressTexts.clear();
- QFuture<int> f = ((new ProgressTextTask<int>())->start());
- QFutureWatcher<int> watcher;
- ProgressObject o;
- QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-#ifdef PRINT
- QObject::connect(&watcher, SIGNAL(progressValueChanged(int)), &o, SLOT(printProgress(int)));
- QObject::connect(&watcher, SIGNAL(progressTextChanged(const QString &)), &o, SLOT(printText(const QString &)));
-#endif
- QObject::connect(&watcher, SIGNAL(progressValueChanged(int)), &o, SLOT(registerProgress(int)));
- QObject::connect(&watcher, SIGNAL(progressTextChanged(const QString &)), &o, SLOT(registerText(const QString &)));
-
- watcher.setFuture(f);
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(f.progressText(), QLatin1String("Foo 4"));
- QCOMPARE(f.progressValue(), 4);
- QVERIFY(progressValues.contains(1));
- QVERIFY(progressValues.contains(2));
- QVERIFY(progressValues.contains(3));
- QVERIFY(progressValues.contains(4));
- QVERIFY(progressTexts.contains(QLatin1String("Foo 1")));
- QVERIFY(progressTexts.contains(QLatin1String("Foo 2")));
- QVERIFY(progressTexts.contains(QLatin1String("Foo 3")));
- QVERIFY(progressTexts.contains(QLatin1String("Foo 4")));
- }
-}
-
-template <typename T>
-void callInterface(T &obj)
-{
- obj.progressValue();
- obj.progressMinimum();
- obj.progressMaximum();
- obj.progressText();
-
- obj.isStarted();
- obj.isFinished();
- obj.isRunning();
- obj.isCanceled();
- obj.isPaused();
-
- obj.cancel();
- obj.pause();
- obj.resume();
- obj.togglePaused();
- obj.waitForFinished();
-
- const T& objConst = obj;
- objConst.progressValue();
- objConst.progressMinimum();
- objConst.progressMaximum();
- objConst.progressText();
-
- objConst.isStarted();
- objConst.isFinished();
- objConst.isRunning();
- objConst.isCanceled();
- objConst.isPaused();
-}
-
-template <typename T>
-void callInterface(const T &obj)
-{
- obj.result();
- obj.resultAt(0);
-}
-
-
-// QFutureWatcher and QFuture has a similar interface. Test
-// that the functions we want ot have in both are actually
-// there.
-void tst_QFutureWatcher::sharedFutureInterface()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> intFuture = iface.future();
-
- int value = 0;
- iface.reportFinished(&value);
-
- QFuture<void> voidFuture;
- QFutureWatcher<int> intWatcher;
- intWatcher.setFuture(intFuture);
- QFutureWatcher<void> voidWatcher;
-
- callInterface(intFuture);
- callInterface(voidFuture);
- callInterface(intWatcher);
- callInterface(voidWatcher);
-
- callInterface(intFuture);
- callInterface(intWatcher);
-}
-
-void tst_QFutureWatcher::changeFuture()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> a = iface.future();
-
- int value = 0;
- iface.reportFinished(&value);
-
- QFuture<int> b;
-
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
-
- watcher.setFuture(a); // Watch 'a' which will genere a resultReady event.
- watcher.setFuture(b); // But oh no! we're switching to another future
- QTest::qWait(10); // before the event gets delivered.
-
- QCOMPARE(resultReadySpy.count(), 0);
-
- watcher.setFuture(a);
- watcher.setFuture(b);
- watcher.setFuture(a); // setting it back gets us one event, not two.
- QTest::qWait(10);
-
- QCOMPARE(resultReadySpy.count(), 1);
-}
-
-// Test that events aren't delivered from canceled futures
-void tst_QFutureWatcher::cancelEvents()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> a = iface.future();
-
- int value = 0;
- iface.reportFinished(&value);
-
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
-
- watcher.setFuture(a);
- watcher.cancel();
-
- QTest::qWait(10);
-
- QCOMPARE(resultReadySpy.count(), 0);
-}
-
-// Tests that events from paused futures are saved and
-// delivered on resume.
-void tst_QFutureWatcher::pauseEvents()
-{
- {
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> a = iface.future();
-
- int value = 0;
- iface.reportFinished(&value);
-
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
-
- watcher.setFuture(a);
- watcher.pause();
-
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 0);
-
- watcher.resume();
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 1);
- }
- {
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> a = iface.future();
-
- int value = 0;
- iface.reportFinished(&value);
-
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
-
- watcher.setFuture(a);
- a.pause();
-
- QFuture<int> b;
- watcher.setFuture(b); // If we watch b instead, resuming a
- a.resume(); // should give us no results.
-
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 0);
- }
-}
-
-// Test that the finished state for the watcher gets
-// set when the finished event is delivered.
-// This means it will lag the finished state for the future,
-// but makes it more useful.
-void tst_QFutureWatcher::finishedState()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
- QFuture<int> future = iface.future();
- QFutureWatcher<int> watcher;
-
- watcher.setFuture(future);
- QTest::qWait(10);
-
- iface.reportFinished();
- QVERIFY(future.isFinished());
- QVERIFY(watcher.isFinished() == false);
-
- QTest::qWait(10);
- QVERIFY(watcher.isFinished());
-}
-
-/*
- Verify that throttling kicks in if you report a lot of results,
- and that it clears when the result events are processed.
-*/
-void tst_QFutureWatcher::throttling()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
- QFuture<int> future = iface.future();
- QFutureWatcher<int> watcher;
- watcher.setFuture(future);
-
- QVERIFY(iface.isThrottled() == false);
-
- for (int i = 0; i < 1000; ++i) {
- int result = 0;
- iface.reportResult(result);
- }
-
- QVERIFY(iface.isThrottled() == true);
-
- QTest::qWait(100); // process events.
-
- QVERIFY(iface.isThrottled() == false);
-
- iface.reportFinished();
-}
-
-int mapper(const int &i)
-{
- return i;
-}
-
-class ResultReadyTester : public QObject
-{
-Q_OBJECT
-public:
- ResultReadyTester(QFutureWatcher<int> *watcher)
- :m_watcher(watcher), filter(false), ok(true), count(0)
- {
-
- }
-public slots:
- void resultReadyAt(int index)
- {
- ++count;
- if (m_watcher->future().isResultReadyAt(index) == false)
- ok = false;
- if (!filter && m_watcher->future().resultAt(index) != index)
- ok = false;
- if (filter && m_watcher->future().resultAt(index) != index * 2 + 1)
- ok = false;
- }
-public:
- QFutureWatcher<int> *m_watcher;
- bool filter;
- bool ok;
- int count;
-};
-
-void tst_QFutureWatcher::incrementalMapResults()
-{
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
-#ifdef PRINT
- connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
- connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
-#endif
-
- QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- ResultReadyTester resultReadyTester(&watcher);
- connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
-
- const int count = 10000;
- QList<int> ints;
- for (int i = 0; i < count; ++i)
- ints << i;
-
- QFuture<int> future = QtConcurrent::mapped(ints, mapper);
- watcher.setFuture(future);
-
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QCOMPARE(resultReadyTester.count, count);
- QVERIFY(resultReadyTester.ok);
- QVERIFY(watcher.isFinished());
- future.waitForFinished();
-}
-
-bool filterer(int i)
-{
- return (i % 2);
-}
-
-void tst_QFutureWatcher::incrementalFilterResults()
-{
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
-#ifdef PRINT
- connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
- connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
-#endif
-
- QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
-
- ResultReadyTester resultReadyTester(&watcher);
- resultReadyTester.filter = true;
- connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
-
- const int count = 10000;
- QList<int> ints;
- for (int i = 0; i < count; ++i)
- ints << i;
-
- QFuture<int> future = QtConcurrent::filtered(ints, filterer);
- watcher.setFuture(future);
-
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QCOMPARE(resultReadyTester.count, count / 2);
- QVERIFY(resultReadyTester.ok);
- QVERIFY(watcher.isFinished());
- future.waitForFinished();
-}
-
-void tst_QFutureWatcher::qfutureSynchornizer()
-{
- int taskCount = 1000;
- QTime t;
- t.start();
-
- {
- QFutureSynchronizer<void> sync;
-
- sync.setCancelOnWait(true);
- for (int i = 0; i < taskCount; ++i) {
- sync.addFuture(run(sleeper));
- }
- }
-
- // Test that we're not running each task.
- QVERIFY(t.elapsed() < taskCount * 10);
-}
-
-class DummyObject : public QObject {
- Q_OBJECT
-public slots:
- void dummySlot() {}
-public:
- static void function(QMutex *m)
- {
- QMutexLocker lock(m);
- }
-};
-
-void tst_QFutureWatcher::warnRace()
-{
-#ifndef Q_OS_MAC //I don't know why it is not working on mac
-#ifndef QT_NO_DEBUG
- QTest::ignoreMessage(QtWarningMsg, "QFutureWatcher::connect: connecting after calling setFuture() is likely to produce race");
-#endif
-#endif
- QFutureWatcher<void> watcher;
- DummyObject object;
- QMutex mutex;
- mutex.lock();
-
- QFuture<void> future = QtConcurrent::run(DummyObject::function, &mutex);
- watcher.setFuture(future);
- QTRY_VERIFY(future.isStarted());
- connect(&watcher, SIGNAL(finished()), &object, SLOT(dummySlot()));
- mutex.unlock();
- future.waitForFinished();
-}
-
-#include "tst_qfuturewatcher.moc"
-
-#else
-QTEST_NOOP_MAIN
-#endif
diff --git a/tests/auto/qgl/qgl.pro b/tests/auto/qgl/qgl.pro
deleted file mode 100644
index cec7f23f07..0000000000
--- a/tests/auto/qgl/qgl.pro
+++ /dev/null
@@ -1,15 +0,0 @@
-############################################################
-# Project file for autotest for file qgl.h
-############################################################
-
-load(qttest_p4)
-requires(contains(QT_CONFIG,opengl))
-QT += opengl-private gui-private core-private
-
-contains(QT_CONFIG,egl):DEFINES += QGL_EGL
-win32:!wince*: DEFINES += QT_NO_EGL
-
-SOURCES += tst_qgl.cpp
-RESOURCES = qgl.qrc
-
-CONFIG+=insignificant_test
diff --git a/tests/auto/qgl/qgl.qrc b/tests/auto/qgl/qgl.qrc
deleted file mode 100644
index 653794a166..0000000000
--- a/tests/auto/qgl/qgl.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource>
- <file alias="designer.png">../qpixmap/images/designer.png</file>
-</qresource>
-</RCC>
diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp
deleted file mode 100644
index 7d46ada820..0000000000
--- a/tests/auto/qgl/tst_qgl.cpp
+++ /dev/null
@@ -1,2402 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qcoreapplication.h>
-#include <qdebug.h>
-#include <qgl.h>
-#include <qglpixelbuffer.h>
-#include <qglframebufferobject.h>
-#include <qglcolormap.h>
-#include <qpaintengine.h>
-
-#include <QGraphicsView>
-#include <QGraphicsProxyWidget>
-#include <QVBoxLayout>
-
-#ifdef QT_BUILD_INTERNAL
-#include <QtOpenGL/private/qgl_p.h>
-#include <QtGui/private/qpixmapdata_p.h>
-#include <QtGui/private/qimage_p.h>
-#include <QtGui/private/qimagepixmapcleanuphooks_p.h>
-#endif
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QGL : public QObject
-{
-Q_OBJECT
-
-public:
- tst_QGL();
- virtual ~tst_QGL();
-
-private slots:
- void getSetCheck();
- void openGLVersionCheck();
- void graphicsViewClipping();
- void partialGLWidgetUpdates_data();
- void partialGLWidgetUpdates();
- void glWidgetWithAlpha();
- void glWidgetRendering();
- void glFBOSimpleRendering();
- void glFBORendering();
- void multipleFBOInterleavedRendering();
- void glFBOUseInGLWidget();
- void glPBufferRendering();
- void glWidgetReparent();
- void glWidgetRenderPixmap();
- void colormap();
- void fboFormat();
- void testDontCrashOnDanglingResources();
- void replaceClipping();
- void clipTest();
- void destroyFBOAfterContext();
- void shareRegister();
- void qglContextDefaultBindTexture();
- void textureCleanup();
- void threadImages();
- void nullRectCrash();
-};
-
-tst_QGL::tst_QGL()
-{
-}
-
-tst_QGL::~tst_QGL()
-{
-}
-
-class MyGLContext : public QGLContext
-{
-public:
- MyGLContext(const QGLFormat& format) : QGLContext(format) {}
- bool windowCreated() const { return QGLContext::windowCreated(); }
- void setWindowCreated(bool on) { QGLContext::setWindowCreated(on); }
- bool initialized() const { return QGLContext::initialized(); }
- void setInitialized(bool on) { QGLContext::setInitialized(on); }
-};
-
-class MyGLWidget : public QGLWidget
-{
-public:
- MyGLWidget() : QGLWidget() {}
- bool autoBufferSwap() const { return QGLWidget::autoBufferSwap(); }
- void setAutoBufferSwap(bool on) { QGLWidget::setAutoBufferSwap(on); }
-};
-
-static int appDefaultDepth()
-{
- static int depth = 0;
- if (depth == 0) {
- QPixmap pm(1, 1);
- depth = pm.depth();
- }
- return depth;
-}
-
-// Using INT_MIN and INT_MAX will cause failures on systems
-// where "int" is 64-bit, so use the explicit values instead.
-#define TEST_INT_MIN (-2147483647 - 1)
-#define TEST_INT_MAX 2147483647
-
-// Testing get/set functions
-void tst_QGL::getSetCheck()
-{
- if (!QGLFormat::hasOpenGL())
- QSKIP("QGL not supported on this platform", SkipAll);
-
- QGLFormat obj1;
- // int QGLFormat::depthBufferSize()
- // void QGLFormat::setDepthBufferSize(int)
- QCOMPARE(-1, obj1.depthBufferSize());
- obj1.setDepthBufferSize(0);
- QCOMPARE(0, obj1.depthBufferSize());
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setDepthBufferSize: Cannot set negative depth buffer size -2147483648");
- obj1.setDepthBufferSize(TEST_INT_MIN);
- QCOMPARE(0, obj1.depthBufferSize()); // Makes no sense with a negative buffer size
- obj1.setDepthBufferSize(3);
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setDepthBufferSize: Cannot set negative depth buffer size -1");
- obj1.setDepthBufferSize(-1);
- QCOMPARE(3, obj1.depthBufferSize());
- obj1.setDepthBufferSize(TEST_INT_MAX);
- QCOMPARE(TEST_INT_MAX, obj1.depthBufferSize());
-
- // int QGLFormat::accumBufferSize()
- // void QGLFormat::setAccumBufferSize(int)
- QCOMPARE(-1, obj1.accumBufferSize());
- obj1.setAccumBufferSize(0);
- QCOMPARE(0, obj1.accumBufferSize());
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setAccumBufferSize: Cannot set negative accumulate buffer size -2147483648");
- obj1.setAccumBufferSize(TEST_INT_MIN);
- QCOMPARE(0, obj1.accumBufferSize()); // Makes no sense with a negative buffer size
- obj1.setAccumBufferSize(3);
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setAccumBufferSize: Cannot set negative accumulate buffer size -1");
- obj1.setAccumBufferSize(-1);
- QCOMPARE(3, obj1.accumBufferSize());
- obj1.setAccumBufferSize(TEST_INT_MAX);
- QCOMPARE(TEST_INT_MAX, obj1.accumBufferSize());
-
- // int QGLFormat::redBufferSize()
- // void QGLFormat::setRedBufferSize(int)
- QCOMPARE(-1, obj1.redBufferSize());
- obj1.setRedBufferSize(0);
- QCOMPARE(0, obj1.redBufferSize());
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setRedBufferSize: Cannot set negative red buffer size -2147483648");
- obj1.setRedBufferSize(TEST_INT_MIN);
- QCOMPARE(0, obj1.redBufferSize()); // Makes no sense with a negative buffer size
- obj1.setRedBufferSize(3);
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setRedBufferSize: Cannot set negative red buffer size -1");
- obj1.setRedBufferSize(-1);
- QCOMPARE(3, obj1.redBufferSize());
- obj1.setRedBufferSize(TEST_INT_MAX);
- QCOMPARE(TEST_INT_MAX, obj1.redBufferSize());
-
- // int QGLFormat::greenBufferSize()
- // void QGLFormat::setGreenBufferSize(int)
- QCOMPARE(-1, obj1.greenBufferSize());
- obj1.setGreenBufferSize(0);
- QCOMPARE(0, obj1.greenBufferSize());
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setGreenBufferSize: Cannot set negative green buffer size -2147483648");
- obj1.setGreenBufferSize(TEST_INT_MIN);
- QCOMPARE(0, obj1.greenBufferSize()); // Makes no sense with a negative buffer size
- obj1.setGreenBufferSize(3);
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setGreenBufferSize: Cannot set negative green buffer size -1");
- obj1.setGreenBufferSize(-1);
- QCOMPARE(3, obj1.greenBufferSize());
- obj1.setGreenBufferSize(TEST_INT_MAX);
- QCOMPARE(TEST_INT_MAX, obj1.greenBufferSize());
-
- // int QGLFormat::blueBufferSize()
- // void QGLFormat::setBlueBufferSize(int)
- QCOMPARE(-1, obj1.blueBufferSize());
- obj1.setBlueBufferSize(0);
- QCOMPARE(0, obj1.blueBufferSize());
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setBlueBufferSize: Cannot set negative blue buffer size -2147483648");
- obj1.setBlueBufferSize(TEST_INT_MIN);
- QCOMPARE(0, obj1.blueBufferSize()); // Makes no sense with a negative buffer size
- obj1.setBlueBufferSize(3);
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setBlueBufferSize: Cannot set negative blue buffer size -1");
- obj1.setBlueBufferSize(-1);
- QCOMPARE(3, obj1.blueBufferSize());
- obj1.setBlueBufferSize(TEST_INT_MAX);
- QCOMPARE(TEST_INT_MAX, obj1.blueBufferSize());
-
- // int QGLFormat::alphaBufferSize()
- // void QGLFormat::setAlphaBufferSize(int)
- QCOMPARE(-1, obj1.alphaBufferSize());
- QCOMPARE(false, obj1.alpha());
- QVERIFY(!obj1.testOption(QGL::AlphaChannel));
- QVERIFY(obj1.testOption(QGL::NoAlphaChannel));
- obj1.setAlphaBufferSize(1);
- QCOMPARE(true, obj1.alpha()); // setAlphaBufferSize() enables alpha.
- QCOMPARE(1, obj1.alphaBufferSize());
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setAlphaBufferSize: Cannot set negative alpha buffer size -2147483648");
- obj1.setAlphaBufferSize(TEST_INT_MIN);
- QCOMPARE(1, obj1.alphaBufferSize()); // Makes no sense with a negative buffer size
- obj1.setAlphaBufferSize(3);
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setAlphaBufferSize: Cannot set negative alpha buffer size -1");
- obj1.setAlphaBufferSize(-1);
- QCOMPARE(3, obj1.alphaBufferSize());
- obj1.setAlphaBufferSize(TEST_INT_MAX);
- QCOMPARE(TEST_INT_MAX, obj1.alphaBufferSize());
-
- // int QGLFormat::stencilBufferSize()
- // void QGLFormat::setStencilBufferSize(int)
- QCOMPARE(-1, obj1.stencilBufferSize());
- obj1.setStencilBufferSize(1);
- QCOMPARE(1, obj1.stencilBufferSize());
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setStencilBufferSize: Cannot set negative stencil buffer size -2147483648");
- obj1.setStencilBufferSize(TEST_INT_MIN);
- QCOMPARE(1, obj1.stencilBufferSize()); // Makes no sense with a negative buffer size
- obj1.setStencilBufferSize(3);
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setStencilBufferSize: Cannot set negative stencil buffer size -1");
- obj1.setStencilBufferSize(-1);
- QCOMPARE(3, obj1.stencilBufferSize());
- obj1.setStencilBufferSize(TEST_INT_MAX);
- QCOMPARE(TEST_INT_MAX, obj1.stencilBufferSize());
-
- // bool QGLFormat::sampleBuffers()
- // void QGLFormat::setSampleBuffers(bool)
- QCOMPARE(false, obj1.sampleBuffers());
- QVERIFY(!obj1.testOption(QGL::SampleBuffers));
- QVERIFY(obj1.testOption(QGL::NoSampleBuffers));
-
- obj1.setSampleBuffers(false);
- QCOMPARE(false, obj1.sampleBuffers());
- QVERIFY(obj1.testOption(QGL::NoSampleBuffers));
- obj1.setSampleBuffers(true);
- QCOMPARE(true, obj1.sampleBuffers());
- QVERIFY(obj1.testOption(QGL::SampleBuffers));
-
- // int QGLFormat::samples()
- // void QGLFormat::setSamples(int)
- QCOMPARE(-1, obj1.samples());
- obj1.setSamples(0);
- QCOMPARE(0, obj1.samples());
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setSamples: Cannot have negative number of samples per pixel -2147483648");
- obj1.setSamples(TEST_INT_MIN);
- QCOMPARE(0, obj1.samples()); // Makes no sense with a negative sample size
- obj1.setSamples(3);
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setSamples: Cannot have negative number of samples per pixel -1");
- obj1.setSamples(-1);
- QCOMPARE(3, obj1.samples());
- obj1.setSamples(TEST_INT_MAX);
- QCOMPARE(TEST_INT_MAX, obj1.samples());
-
- // int QGLFormat::swapInterval()
- // void QGLFormat::setSwapInterval(int)
- QCOMPARE(-1, obj1.swapInterval());
- obj1.setSwapInterval(0);
- QCOMPARE(0, obj1.swapInterval());
- obj1.setSwapInterval(TEST_INT_MIN);
- QCOMPARE(TEST_INT_MIN, obj1.swapInterval());
- obj1.setSwapInterval(-1);
- QCOMPARE(-1, obj1.swapInterval());
- obj1.setSwapInterval(TEST_INT_MAX);
- QCOMPARE(TEST_INT_MAX, obj1.swapInterval());
-
- // bool QGLFormat::doubleBuffer()
- // void QGLFormat::setDoubleBuffer(bool)
- QCOMPARE(true, obj1.doubleBuffer());
- QVERIFY(obj1.testOption(QGL::DoubleBuffer));
- QVERIFY(!obj1.testOption(QGL::SingleBuffer));
- obj1.setDoubleBuffer(false);
- QCOMPARE(false, obj1.doubleBuffer());
- QVERIFY(!obj1.testOption(QGL::DoubleBuffer));
- QVERIFY(obj1.testOption(QGL::SingleBuffer));
- obj1.setDoubleBuffer(true);
- QCOMPARE(true, obj1.doubleBuffer());
- QVERIFY(obj1.testOption(QGL::DoubleBuffer));
- QVERIFY(!obj1.testOption(QGL::SingleBuffer));
-
- // bool QGLFormat::depth()
- // void QGLFormat::setDepth(bool)
- QCOMPARE(true, obj1.depth());
- QVERIFY(obj1.testOption(QGL::DepthBuffer));
- QVERIFY(!obj1.testOption(QGL::NoDepthBuffer));
- obj1.setDepth(false);
- QCOMPARE(false, obj1.depth());
- QVERIFY(!obj1.testOption(QGL::DepthBuffer));
- QVERIFY(obj1.testOption(QGL::NoDepthBuffer));
- obj1.setDepth(true);
- QCOMPARE(true, obj1.depth());
- QVERIFY(obj1.testOption(QGL::DepthBuffer));
- QVERIFY(!obj1.testOption(QGL::NoDepthBuffer));
-
- // bool QGLFormat::rgba()
- // void QGLFormat::setRgba(bool)
- QCOMPARE(true, obj1.rgba());
- QVERIFY(obj1.testOption(QGL::Rgba));
- QVERIFY(!obj1.testOption(QGL::ColorIndex));
- obj1.setRgba(false);
- QCOMPARE(false, obj1.rgba());
- QVERIFY(!obj1.testOption(QGL::Rgba));
- QVERIFY(obj1.testOption(QGL::ColorIndex));
- obj1.setRgba(true);
- QCOMPARE(true, obj1.rgba());
- QVERIFY(obj1.testOption(QGL::Rgba));
- QVERIFY(!obj1.testOption(QGL::ColorIndex));
-
- // bool QGLFormat::alpha()
- // void QGLFormat::setAlpha(bool)
- QVERIFY(obj1.testOption(QGL::AlphaChannel));
- QVERIFY(!obj1.testOption(QGL::NoAlphaChannel));
- obj1.setAlpha(false);
- QCOMPARE(false, obj1.alpha());
- QVERIFY(!obj1.testOption(QGL::AlphaChannel));
- QVERIFY(obj1.testOption(QGL::NoAlphaChannel));
- obj1.setAlpha(true);
- QCOMPARE(true, obj1.alpha());
- QVERIFY(obj1.testOption(QGL::AlphaChannel));
- QVERIFY(!obj1.testOption(QGL::NoAlphaChannel));
-
- // bool QGLFormat::accum()
- // void QGLFormat::setAccum(bool)
- obj1.setAccumBufferSize(0);
- QCOMPARE(false, obj1.accum());
- QVERIFY(!obj1.testOption(QGL::AccumBuffer));
- QVERIFY(obj1.testOption(QGL::NoAccumBuffer));
- obj1.setAccum(false);
- QCOMPARE(false, obj1.accum());
- QVERIFY(!obj1.testOption(QGL::AccumBuffer));
- QVERIFY(obj1.testOption(QGL::NoAccumBuffer));
- obj1.setAccum(true);
- QCOMPARE(true, obj1.accum());
- QVERIFY(obj1.testOption(QGL::AccumBuffer));
- QVERIFY(!obj1.testOption(QGL::NoAccumBuffer));
-
- // bool QGLFormat::stencil()
- // void QGLFormat::setStencil(bool)
- QCOMPARE(true, obj1.stencil());
- QVERIFY(obj1.testOption(QGL::StencilBuffer));
- QVERIFY(!obj1.testOption(QGL::NoStencilBuffer));
- obj1.setStencil(false);
- QCOMPARE(false, obj1.stencil());
- QVERIFY(!obj1.testOption(QGL::StencilBuffer));
- QVERIFY(obj1.testOption(QGL::NoStencilBuffer));
- obj1.setStencil(true);
- QCOMPARE(true, obj1.stencil());
- QVERIFY(obj1.testOption(QGL::StencilBuffer));
- QVERIFY(!obj1.testOption(QGL::NoStencilBuffer));
-
- // bool QGLFormat::stereo()
- // void QGLFormat::setStereo(bool)
- QCOMPARE(false, obj1.stereo());
- QVERIFY(!obj1.testOption(QGL::StereoBuffers));
- QVERIFY(obj1.testOption(QGL::NoStereoBuffers));
- obj1.setStereo(false);
- QCOMPARE(false, obj1.stereo());
- QVERIFY(!obj1.testOption(QGL::StereoBuffers));
- QVERIFY(obj1.testOption(QGL::NoStereoBuffers));
- obj1.setStereo(true);
- QCOMPARE(true, obj1.stereo());
- QVERIFY(obj1.testOption(QGL::StereoBuffers));
- QVERIFY(!obj1.testOption(QGL::NoStereoBuffers));
-
- // bool QGLFormat::directRendering()
- // void QGLFormat::setDirectRendering(bool)
- QCOMPARE(true, obj1.directRendering());
- QVERIFY(obj1.testOption(QGL::DirectRendering));
- QVERIFY(!obj1.testOption(QGL::IndirectRendering));
- obj1.setDirectRendering(false);
- QCOMPARE(false, obj1.directRendering());
- QVERIFY(!obj1.testOption(QGL::DirectRendering));
- QVERIFY(obj1.testOption(QGL::IndirectRendering));
- obj1.setDirectRendering(true);
- QCOMPARE(true, obj1.directRendering());
- QVERIFY(obj1.testOption(QGL::DirectRendering));
- QVERIFY(!obj1.testOption(QGL::IndirectRendering));
-
- // bool QGLFormat::overlay()
- // void QGLFormat::setOverlay(bool)
- QCOMPARE(false, obj1.hasOverlay());
- QVERIFY(!obj1.testOption(QGL::HasOverlay));
- QVERIFY(obj1.testOption(QGL::NoOverlay));
- obj1.setOverlay(false);
- QCOMPARE(false, obj1.hasOverlay());
- QVERIFY(!obj1.testOption(QGL::HasOverlay));
- QVERIFY(obj1.testOption(QGL::NoOverlay));
- obj1.setOverlay(true);
- QCOMPARE(true, obj1.hasOverlay());
- QVERIFY(obj1.testOption(QGL::HasOverlay));
- QVERIFY(!obj1.testOption(QGL::NoOverlay));
-
- // int QGLFormat::plane()
- // void QGLFormat::setPlane(int)
- QCOMPARE(0, obj1.plane());
- obj1.setPlane(0);
- QCOMPARE(0, obj1.plane());
- obj1.setPlane(TEST_INT_MIN);
- QCOMPARE(TEST_INT_MIN, obj1.plane());
- obj1.setPlane(TEST_INT_MAX);
- QCOMPARE(TEST_INT_MAX, obj1.plane());
-
- // int QGLFormat::major/minorVersion()
- // void QGLFormat::setVersion(int, int)
- QCOMPARE(obj1.majorVersion(), 1);
- QCOMPARE(obj1.minorVersion(), 0);
- obj1.setVersion(3, 2);
- QCOMPARE(obj1.majorVersion(), 3);
- QCOMPARE(obj1.minorVersion(), 2);
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setVersion: Cannot set zero or negative version number 0.1");
- obj1.setVersion(0, 1);
- QCOMPARE(obj1.majorVersion(), 3);
- QCOMPARE(obj1.minorVersion(), 2);
- QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setVersion: Cannot set zero or negative version number 3.-1");
- obj1.setVersion(3, -1);
- QCOMPARE(obj1.majorVersion(), 3);
- QCOMPARE(obj1.minorVersion(), 2);
- obj1.setVersion(TEST_INT_MAX, TEST_INT_MAX - 1);
- QCOMPARE(obj1.majorVersion(), TEST_INT_MAX);
- QCOMPARE(obj1.minorVersion(), TEST_INT_MAX - 1);
-
-
- // operator== and operator!= for QGLFormat
- QGLFormat format1;
- QGLFormat format2;
-
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
- format1.setDoubleBuffer(false);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setDoubleBuffer(false);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setDepthBufferSize(8);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setDepthBufferSize(8);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setAccumBufferSize(8);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setAccumBufferSize(8);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setRedBufferSize(8);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setRedBufferSize(8);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setGreenBufferSize(8);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setGreenBufferSize(8);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setBlueBufferSize(8);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setBlueBufferSize(8);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setAlphaBufferSize(8);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setAlphaBufferSize(8);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setStencilBufferSize(8);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setStencilBufferSize(8);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setSamples(8);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setSamples(8);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setSwapInterval(8);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setSwapInterval(8);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setPlane(8);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setPlane(8);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setVersion(3, 2);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setVersion(3, 2);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setProfile(QGLFormat::CoreProfile);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setProfile(QGLFormat::CoreProfile);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- format1.setOption(QGL::NoDeprecatedFunctions);
- QVERIFY(!(format1 == format2));
- QVERIFY(format1 != format2);
- format2.setOption(QGL::NoDeprecatedFunctions);
- QVERIFY(format1 == format2);
- QVERIFY(!(format1 != format2));
-
- // Copy constructor and assignment for QGLFormat.
- QGLFormat format3(format1);
- QGLFormat format4;
- QVERIFY(format1 == format3);
- QVERIFY(format1 != format4);
- format4 = format1;
- QVERIFY(format1 == format4);
-
- // Check that modifying a copy doesn't affect the original.
- format3.setRedBufferSize(16);
- format4.setPlane(16);
- QCOMPARE(format1.redBufferSize(), 8);
- QCOMPARE(format1.plane(), 8);
-
- // Check the QGLFormat constructor that takes an option list.
- QGLFormat format5
- (QGL::DepthBuffer | QGL::StereoBuffers | QGL::ColorIndex, 3);
- QVERIFY(format5.depth());
- QVERIFY(format5.stereo());
- QVERIFY(format5.doubleBuffer()); // From defaultFormat()
- QVERIFY(!format5.hasOverlay()); // From defaultFormat()
- QVERIFY(!format5.rgba());
- QCOMPARE(format5.plane(), 3);
-
- // The default format should be the same as QGLFormat().
- QVERIFY(QGLFormat::defaultFormat() == QGLFormat());
-
- // Modify the default format and check that it was changed.
- QGLFormat::setDefaultFormat(format1);
- QVERIFY(QGLFormat::defaultFormat() == format1);
-
- // Restore the default format.
- QGLFormat::setDefaultFormat(QGLFormat());
- QVERIFY(QGLFormat::defaultFormat() == QGLFormat());
-
- // Check the default overlay format's expected values.
- QGLFormat overlay(QGLFormat::defaultOverlayFormat());
- QCOMPARE(overlay.depthBufferSize(), -1);
- QCOMPARE(overlay.accumBufferSize(), -1);
- QCOMPARE(overlay.redBufferSize(), -1);
- QCOMPARE(overlay.greenBufferSize(), -1);
- QCOMPARE(overlay.blueBufferSize(), -1);
- QCOMPARE(overlay.alphaBufferSize(), -1);
- QCOMPARE(overlay.samples(), -1);
- QCOMPARE(overlay.swapInterval(), -1);
- QCOMPARE(overlay.plane(), 1);
- QVERIFY(!overlay.sampleBuffers());
- QVERIFY(!overlay.doubleBuffer());
- QVERIFY(!overlay.depth());
- QVERIFY(!overlay.rgba());
- QVERIFY(!overlay.alpha());
- QVERIFY(!overlay.accum());
- QVERIFY(!overlay.stencil());
- QVERIFY(!overlay.stereo());
- QVERIFY(overlay.directRendering()); // Only option that should be on.
- QVERIFY(!overlay.hasOverlay()); // Overlay doesn't need an overlay!
-
- // Modify the default overlay format and check that it was changed.
- QGLFormat::setDefaultOverlayFormat(format1);
- QVERIFY(QGLFormat::defaultOverlayFormat() == format1);
-
- // Restore the default overlay format.
- QGLFormat::setDefaultOverlayFormat(overlay);
- QVERIFY(QGLFormat::defaultOverlayFormat() == overlay);
-
- MyGLContext obj2(obj1);
- // bool QGLContext::windowCreated()
- // void QGLContext::setWindowCreated(bool)
- obj2.setWindowCreated(false);
- QCOMPARE(false, obj2.windowCreated());
- obj2.setWindowCreated(true);
- QCOMPARE(true, obj2.windowCreated());
-
- // bool QGLContext::initialized()
- // void QGLContext::setInitialized(bool)
- obj2.setInitialized(false);
- QCOMPARE(false, obj2.initialized());
- obj2.setInitialized(true);
- QCOMPARE(true, obj2.initialized());
-
- MyGLWidget obj3;
- // bool QGLWidget::autoBufferSwap()
- // void QGLWidget::setAutoBufferSwap(bool)
- obj3.setAutoBufferSwap(false);
- QCOMPARE(false, obj3.autoBufferSwap());
- obj3.setAutoBufferSwap(true);
- QCOMPARE(true, obj3.autoBufferSwap());
-}
-
-#ifdef QT_BUILD_INTERNAL
-QT_BEGIN_NAMESPACE
-extern QGLFormat::OpenGLVersionFlags qOpenGLVersionFlagsFromString(const QString &versionString);
-QT_END_NAMESPACE
-#endif
-
-void tst_QGL::openGLVersionCheck()
-{
-#ifdef QT_BUILD_INTERNAL
- if (!QGLFormat::hasOpenGL())
- QSKIP("QGL not supported on this platform", SkipAll);
-
- QString versionString;
- QGLFormat::OpenGLVersionFlags expectedFlag;
- QGLFormat::OpenGLVersionFlags versionFlag;
-
- versionString = "1.1 Irix 6.5";
- expectedFlag = QGLFormat::OpenGL_Version_1_1;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "1.2 Microsoft";
- expectedFlag = QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "1.2.1";
- expectedFlag = QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "1.3 NVIDIA";
- expectedFlag = QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "1.4";
- expectedFlag = QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "1.5 NVIDIA";
- expectedFlag = QGLFormat::OpenGL_Version_1_5 | QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "2.0.2 NVIDIA 87.62";
- expectedFlag = QGLFormat::OpenGL_Version_2_0 | QGLFormat::OpenGL_Version_1_5 | QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "2.1 NVIDIA";
- expectedFlag = QGLFormat::OpenGL_Version_2_1 | QGLFormat::OpenGL_Version_2_0 | QGLFormat::OpenGL_Version_1_5 | QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "2.1";
- expectedFlag = QGLFormat::OpenGL_Version_2_1 | QGLFormat::OpenGL_Version_2_0 | QGLFormat::OpenGL_Version_1_5 | QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "OpenGL ES-CM 1.0 ATI";
- expectedFlag = QGLFormat::OpenGL_ES_Common_Version_1_0 | QGLFormat::OpenGL_ES_CommonLite_Version_1_0;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "OpenGL ES-CL 1.0 ATI";
- expectedFlag = QGLFormat::OpenGL_ES_CommonLite_Version_1_0;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "OpenGL ES-CM 1.1 ATI";
- expectedFlag = QGLFormat::OpenGL_ES_Common_Version_1_1 | QGLFormat::OpenGL_ES_CommonLite_Version_1_1 | QGLFormat::OpenGL_ES_Common_Version_1_0 | QGLFormat::OpenGL_ES_CommonLite_Version_1_0;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "OpenGL ES-CL 1.1 ATI";
- expectedFlag = QGLFormat::OpenGL_ES_CommonLite_Version_1_1 | QGLFormat::OpenGL_ES_CommonLite_Version_1_0;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "OpenGL ES 2.0 ATI";
- expectedFlag = QGLFormat::OpenGL_ES_Version_2_0;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- versionString = "3.0";
- expectedFlag = QGLFormat::OpenGL_Version_3_0 | QGLFormat::OpenGL_Version_2_1 | QGLFormat::OpenGL_Version_2_0 | QGLFormat::OpenGL_Version_1_5 | QGLFormat::OpenGL_Version_1_4 | QGLFormat::OpenGL_Version_1_3 | QGLFormat::OpenGL_Version_1_2 | QGLFormat::OpenGL_Version_1_1;
- versionFlag = qOpenGLVersionFlagsFromString(versionString);
- QCOMPARE(versionFlag, expectedFlag);
-
- QGLWidget glWidget;
- glWidget.show();
- glWidget.makeCurrent();
-
- // This is unfortunately the only test we can make on the actual openGLVersionFlags()
- // However, the complicated parts are in openGLVersionFlags(const QString &versionString)
- // tested above
-
-#if defined(QT_OPENGL_ES_1)
- QVERIFY(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Common_Version_1_0);
-#elif defined(QT_OPENGL_ES_2)
- QVERIFY(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0);
-#else
- QVERIFY(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_1_1);
-#endif //defined(QT_OPENGL_ES_1)
-#endif //QT_BUILD_INTERNAL
-}
-
-static bool fuzzyComparePixels(const QRgb testPixel, const QRgb refPixel, const char* file, int line, int x = -1, int y = -1)
-{
- static int maxFuzz = 1;
- static bool maxFuzzSet = false;
-
- // On 16 bpp systems, we need to allow for more fuzz:
- if (!maxFuzzSet) {
- maxFuzzSet = true;
- if (appDefaultDepth() < 24)
- maxFuzz = 32;
- }
-
- int redFuzz = qAbs(qRed(testPixel) - qRed(refPixel));
- int greenFuzz = qAbs(qGreen(testPixel) - qGreen(refPixel));
- int blueFuzz = qAbs(qBlue(testPixel) - qBlue(refPixel));
- int alphaFuzz = qAbs(qAlpha(testPixel) - qAlpha(refPixel));
-
- if (refPixel != 0 && testPixel == 0) {
- QString msg;
- if (x >= 0) {
- msg = QString("Test pixel [%1, %2] is null (black) when it should be (%3,%4,%5,%6)")
- .arg(x).arg(y)
- .arg(qRed(refPixel)).arg(qGreen(refPixel)).arg(qBlue(refPixel)).arg(qAlpha(refPixel));
- } else {
- msg = QString("Test pixel is null (black) when it should be (%2,%3,%4,%5)")
- .arg(qRed(refPixel)).arg(qGreen(refPixel)).arg(qBlue(refPixel)).arg(qAlpha(refPixel));
- }
-
- QTest::qFail(msg.toLatin1(), file, line);
- return false;
- }
-
- if (redFuzz > maxFuzz || greenFuzz > maxFuzz || blueFuzz > maxFuzz || alphaFuzz > maxFuzz) {
- QString msg;
-
- if (x >= 0)
- msg = QString("Pixel [%1,%2]: ").arg(x).arg(y);
- else
- msg = QString("Pixel ");
-
- msg += QString("Max fuzz (%1) exceeded: (%2,%3,%4,%5) vs (%6,%7,%8,%9)")
- .arg(maxFuzz)
- .arg(qRed(testPixel)).arg(qGreen(testPixel)).arg(qBlue(testPixel)).arg(qAlpha(testPixel))
- .arg(qRed(refPixel)).arg(qGreen(refPixel)).arg(qBlue(refPixel)).arg(qAlpha(refPixel));
- QTest::qFail(msg.toLatin1(), file, line);
- return false;
- }
- return true;
-}
-
-static void fuzzyCompareImages(const QImage &testImage, const QImage &referenceImage, const char* file, int line)
-{
- QCOMPARE(testImage.width(), referenceImage.width());
- QCOMPARE(testImage.height(), referenceImage.height());
-
- for (int y = 0; y < testImage.height(); y++) {
- for (int x = 0; x < testImage.width(); x++) {
- if (!fuzzyComparePixels(testImage.pixel(x, y), referenceImage.pixel(x, y), file, line, x, y)) {
- // Might as well save the images for easier debugging:
- referenceImage.save("referenceImage.png");
- testImage.save("testImage.png");
- return;
- }
- }
- }
-}
-
-#define QFUZZY_COMPARE_IMAGES(A,B) \
- fuzzyCompareImages(A, B, __FILE__, __LINE__)
-
-#define QFUZZY_COMPARE_PIXELS(A,B) \
- fuzzyComparePixels(A, B, __FILE__, __LINE__)
-
-class UnclippedWidget : public QWidget
-{
-public:
- void paintEvent(QPaintEvent *)
- {
- QPainter p(this);
- p.fillRect(rect().adjusted(-1000, -1000, 1000, 1000), Qt::black);
- }
-};
-
-void tst_QGL::graphicsViewClipping()
-{
- const int size = 64;
- UnclippedWidget *widget = new UnclippedWidget;
- widget->setFixedSize(size, size);
-
- QGraphicsScene scene;
-
- scene.addWidget(widget)->setPos(0, 0);
-
- QGraphicsView view(&scene);
- view.setBackgroundBrush(Qt::white);
-#ifdef Q_WS_QWS
- view.setWindowFlags(Qt::FramelessWindowHint);
-#endif
- view.resize(2*size, 2*size);
-
- QGLWidget *viewport = new QGLWidget;
- view.setViewport(viewport);
- view.show();
-
- if (!viewport->isValid())
- return;
-
- scene.setSceneRect(view.viewport()->rect());
-
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&view);
-#endif
- QTest::qWait(500);
-
- QImage image = viewport->grabFrameBuffer();
- QImage expected = image;
-
- QPainter p(&expected);
- p.fillRect(expected.rect(), Qt::white);
- p.fillRect(QRect(0, 0, size, size), Qt::black);
- p.end();
-
- QFUZZY_COMPARE_IMAGES(image, expected);
-}
-
-void tst_QGL::partialGLWidgetUpdates_data()
-{
- QTest::addColumn<bool>("doubleBufferedContext");
- QTest::addColumn<bool>("autoFillBackground");
- QTest::addColumn<bool>("supportsPartialUpdates");
-
- QTest::newRow("Double buffered context") << true << true << false;
- QTest::newRow("Double buffered context without auto-fill background") << true << false << false;
- QTest::newRow("Single buffered context") << false << true << false;
- QTest::newRow("Single buffered context without auto-fill background") << false << false << true;
-}
-
-void tst_QGL::partialGLWidgetUpdates()
-{
- if (!QGLFormat::hasOpenGL())
- QSKIP("QGL not supported on this platform", SkipAll);
-
- QFETCH(bool, doubleBufferedContext);
- QFETCH(bool, autoFillBackground);
- QFETCH(bool, supportsPartialUpdates);
-
- class MyGLWidget : public QGLWidget
- {
- public:
- QRegion paintEventRegion;
- void paintEvent(QPaintEvent *e)
- {
- paintEventRegion = e->region();
- }
- };
-
- QGLFormat format = QGLFormat::defaultFormat();
- format.setDoubleBuffer(doubleBufferedContext);
- QGLFormat::setDefaultFormat(format);
-
- MyGLWidget widget;
- widget.setFixedSize(150, 150);
- widget.setAutoFillBackground(autoFillBackground);
- widget.show();
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&widget);
-#endif
- QTest::qWait(200);
-
- if (widget.format().doubleBuffer() != doubleBufferedContext)
- QSKIP("Platform does not support requested format", SkipAll);
-
- widget.paintEventRegion = QRegion();
- widget.repaint(50, 50, 50, 50);
-#ifdef Q_WS_MAC
- // repaint() is not immediate on the Mac; it has to go through the event loop.
- QTest::qWait(200);
-#endif
- if (supportsPartialUpdates)
- QCOMPARE(widget.paintEventRegion, QRegion(50, 50, 50, 50));
- else
- QCOMPARE(widget.paintEventRegion, QRegion(widget.rect()));
-}
-
-
-// This tests that rendering to a QGLPBuffer using QPainter works.
-void tst_QGL::glPBufferRendering()
-{
- if (!QGLPixelBuffer::hasOpenGLPbuffers())
- QSKIP("QGLPixelBuffer not supported on this platform", SkipSingle);
-
- QGLPixelBuffer* pbuf = new QGLPixelBuffer(128, 128);
-
- QPainter p;
- bool begun = p.begin(pbuf);
- QVERIFY(begun);
-
- QPaintEngine::Type engineType = p.paintEngine()->type();
- QVERIFY(engineType == QPaintEngine::OpenGL || engineType == QPaintEngine::OpenGL2);
-
- p.fillRect(0, 0, 128, 128, Qt::red);
- p.fillRect(32, 32, 64, 64, Qt::blue);
- p.end();
-
- QImage fb = pbuf->toImage();
- delete pbuf;
-
- QImage reference(128, 128, fb.format());
- p.begin(&reference);
- p.fillRect(0, 0, 128, 128, Qt::red);
- p.fillRect(32, 32, 64, 64, Qt::blue);
- p.end();
-
- QFUZZY_COMPARE_IMAGES(fb, reference);
-}
-
-void tst_QGL::glWidgetWithAlpha()
-{
- QGLWidget* w = new QGLWidget(QGLFormat(QGL::AlphaChannel));
- w->show();
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(w);
-#endif
-
- delete w;
-}
-
-
-void qt_opengl_draw_test_pattern(QPainter* painter, int width, int height)
-{
- QPainterPath intersectingPath;
- intersectingPath.moveTo(0, 0);
- intersectingPath.lineTo(100, 0);
- intersectingPath.lineTo(0, 100);
- intersectingPath.lineTo(100, 100);
- intersectingPath.closeSubpath();
-
- QPainterPath trianglePath;
- trianglePath.moveTo(50, 0);
- trianglePath.lineTo(100, 100);
- trianglePath.lineTo(0, 100);
- trianglePath.closeSubpath();
-
- painter->setTransform(QTransform()); // reset xform
- painter->fillRect(-1, -1, width+2, height+2, Qt::red); // Background
- painter->translate(14, 14);
- painter->fillPath(intersectingPath, Qt::blue); // Test stencil buffer works
- painter->translate(128, 0);
- painter->setClipPath(trianglePath); // Test depth buffer works
- painter->setTransform(QTransform()); // reset xform ready for fill
- painter->fillRect(-1, -1, width+2, height+2, Qt::green);
-}
-
-void qt_opengl_check_test_pattern(const QImage& img)
-{
- // As we're doing more than trivial painting, we can't just compare to
- // an image rendered with raster. Instead, we sample at well-defined
- // test-points:
- QFUZZY_COMPARE_PIXELS(img.pixel(39, 64), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(img.pixel(89, 64), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(img.pixel(64, 39), QColor(Qt::blue).rgb());
- QFUZZY_COMPARE_PIXELS(img.pixel(64, 89), QColor(Qt::blue).rgb());
-
- QFUZZY_COMPARE_PIXELS(img.pixel(167, 39), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(img.pixel(217, 39), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(img.pixel(192, 64), QColor(Qt::green).rgb());
-}
-
-class GLWidget : public QGLWidget
-{
-public:
- GLWidget(QWidget* p = 0)
- : QGLWidget(p), beginOk(false), engineType(QPaintEngine::MaxUser) {}
- bool beginOk;
- QPaintEngine::Type engineType;
- void paintGL()
- {
- QPainter p;
- beginOk = p.begin(this);
- QPaintEngine* pe = p.paintEngine();
- engineType = pe->type();
-
- qt_opengl_draw_test_pattern(&p, width(), height());
-
- // No p.end() or swap buffers, should be done automatically
- }
-
-};
-
-void tst_QGL::glWidgetRendering()
-{
- GLWidget w;
-#ifdef Q_WS_QWS
- w.setWindowFlags(Qt::FramelessWindowHint);
-#endif
- w.resize(256, 128);
- w.show();
-
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&w);
-#endif
- QTest::qWait(200);
-
- QVERIFY(w.beginOk);
- QVERIFY(w.engineType == QPaintEngine::OpenGL || w.engineType == QPaintEngine::OpenGL2);
-
- QImage fb = w.grabFrameBuffer(false);
- qt_opengl_check_test_pattern(fb);
-}
-
-void tst_QGL::glFBOSimpleRendering()
-{
- if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
- QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
-
- QGLWidget glw;
- glw.makeCurrent();
-
- // No multisample with combined depth/stencil attachment:
- QGLFramebufferObjectFormat fboFormat;
- fboFormat.setAttachment(QGLFramebufferObject::NoAttachment);
-
- QGLFramebufferObject *fbo = new QGLFramebufferObject(200, 100, fboFormat);
-
- fbo->bind();
-
- glClearColor(1.0, 0.0, 0.0, 1.0);
- glClear(GL_COLOR_BUFFER_BIT);
- glFinish();
-
- QImage fb = fbo->toImage().convertToFormat(QImage::Format_RGB32);
- QImage reference(fb.size(), QImage::Format_RGB32);
- reference.fill(0xffff0000);
-
- QFUZZY_COMPARE_IMAGES(fb, reference);
-
- delete fbo;
-}
-
-// NOTE: This tests that CombinedDepthStencil attachment works by assuming the
-// GL2 engine is being used and is implemented the same way as it was when
-// this autotest was written. If this is not the case, there may be some
-// false-positives: I.e. The test passes when either the depth or stencil
-// buffer is actually missing. But that's probably ok anyway.
-void tst_QGL::glFBORendering()
-{
- if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
- QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
-
- QGLWidget glw;
- glw.makeCurrent();
-
- // No multisample with combined depth/stencil attachment:
- QGLFramebufferObjectFormat fboFormat;
- fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
-
- // Don't complicate things by using NPOT:
- QGLFramebufferObject *fbo = new QGLFramebufferObject(256, 128, fboFormat);
-
- if (fbo->attachment() != QGLFramebufferObject::CombinedDepthStencil) {
- delete fbo;
- QSKIP("FBOs missing combined depth~stencil support", SkipSingle);
- }
-
- QPainter fboPainter;
- bool painterBegun = fboPainter.begin(fbo);
- QVERIFY(painterBegun);
-
- qt_opengl_draw_test_pattern(&fboPainter, fbo->width(), fbo->height());
-
- fboPainter.end();
-
- QImage fb = fbo->toImage().convertToFormat(QImage::Format_RGB32);
- delete fbo;
-
- qt_opengl_check_test_pattern(fb);
-}
-
-
-// Tests multiple QPainters active on different FBOs at the same time, with
-// interleaving painting. Performance-wise, this is sub-optimal, but it still
-// has to work flawlessly
-void tst_QGL::multipleFBOInterleavedRendering()
-{
- if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
- QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
-
- QGLWidget glw;
- glw.makeCurrent();
-
- // No multisample with combined depth/stencil attachment:
- QGLFramebufferObjectFormat fboFormat;
- fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
-
- QGLFramebufferObject *fbo1 = new QGLFramebufferObject(256, 128, fboFormat);
- QGLFramebufferObject *fbo2 = new QGLFramebufferObject(256, 128, fboFormat);
- QGLFramebufferObject *fbo3 = new QGLFramebufferObject(256, 128, fboFormat);
-
- if ( (fbo1->attachment() != QGLFramebufferObject::CombinedDepthStencil) ||
- (fbo2->attachment() != QGLFramebufferObject::CombinedDepthStencil) ||
- (fbo3->attachment() != QGLFramebufferObject::CombinedDepthStencil) )
- {
- delete fbo1;
- delete fbo2;
- delete fbo3;
- QSKIP("FBOs missing combined depth~stencil support", SkipSingle);
- }
-
- QPainter fbo1Painter;
- QPainter fbo2Painter;
- QPainter fbo3Painter;
-
- QVERIFY(fbo1Painter.begin(fbo1));
- QVERIFY(fbo2Painter.begin(fbo2));
- QVERIFY(fbo3Painter.begin(fbo3));
-
- // Confirm we're using the GL2 engine, as interleaved rendering isn't supported
- // on the GL1 engine:
- if (fbo1Painter.paintEngine()->type() != QPaintEngine::OpenGL2)
- QSKIP("Interleaved GL rendering requires OpenGL 2.0 or higher", SkipSingle);
-
- QPainterPath intersectingPath;
- intersectingPath.moveTo(0, 0);
- intersectingPath.lineTo(100, 0);
- intersectingPath.lineTo(0, 100);
- intersectingPath.lineTo(100, 100);
- intersectingPath.closeSubpath();
-
- QPainterPath trianglePath;
- trianglePath.moveTo(50, 0);
- trianglePath.lineTo(100, 100);
- trianglePath.lineTo(0, 100);
- trianglePath.closeSubpath();
-
- fbo1Painter.fillRect(0, 0, fbo1->width(), fbo1->height(), Qt::red); // Background
- fbo2Painter.fillRect(0, 0, fbo2->width(), fbo2->height(), Qt::green); // Background
- fbo3Painter.fillRect(0, 0, fbo3->width(), fbo3->height(), Qt::blue); // Background
-
- fbo1Painter.translate(14, 14);
- fbo2Painter.translate(14, 14);
- fbo3Painter.translate(14, 14);
-
- fbo1Painter.fillPath(intersectingPath, Qt::blue); // Test stencil buffer works
- fbo2Painter.fillPath(intersectingPath, Qt::red); // Test stencil buffer works
- fbo3Painter.fillPath(intersectingPath, Qt::green); // Test stencil buffer works
-
- fbo1Painter.translate(128, 0);
- fbo2Painter.translate(128, 0);
- fbo3Painter.translate(128, 0);
-
- fbo1Painter.setClipPath(trianglePath);
- fbo2Painter.setClipPath(trianglePath);
- fbo3Painter.setClipPath(trianglePath);
-
- fbo1Painter.setTransform(QTransform()); // reset xform
- fbo2Painter.setTransform(QTransform()); // reset xform
- fbo3Painter.setTransform(QTransform()); // reset xform
-
- fbo1Painter.fillRect(0, 0, fbo1->width(), fbo1->height(), Qt::green);
- fbo2Painter.fillRect(0, 0, fbo2->width(), fbo2->height(), Qt::blue);
- fbo3Painter.fillRect(0, 0, fbo3->width(), fbo3->height(), Qt::red);
-
- fbo1Painter.end();
- fbo2Painter.end();
- fbo3Painter.end();
-
- QImage fb1 = fbo1->toImage().convertToFormat(QImage::Format_RGB32);
- QImage fb2 = fbo2->toImage().convertToFormat(QImage::Format_RGB32);
- QImage fb3 = fbo3->toImage().convertToFormat(QImage::Format_RGB32);
- delete fbo1;
- delete fbo2;
- delete fbo3;
-
- // As we're doing more than trivial painting, we can't just compare to
- // an image rendered with raster. Instead, we sample at well-defined
- // test-points:
- QFUZZY_COMPARE_PIXELS(fb1.pixel(39, 64), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb1.pixel(89, 64), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb1.pixel(64, 39), QColor(Qt::blue).rgb());
- QFUZZY_COMPARE_PIXELS(fb1.pixel(64, 89), QColor(Qt::blue).rgb());
- QFUZZY_COMPARE_PIXELS(fb1.pixel(167, 39), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb1.pixel(217, 39), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb1.pixel(192, 64), QColor(Qt::green).rgb());
-
- QFUZZY_COMPARE_PIXELS(fb2.pixel(39, 64), QColor(Qt::green).rgb());
- QFUZZY_COMPARE_PIXELS(fb2.pixel(89, 64), QColor(Qt::green).rgb());
- QFUZZY_COMPARE_PIXELS(fb2.pixel(64, 39), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb2.pixel(64, 89), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb2.pixel(167, 39), QColor(Qt::green).rgb());
- QFUZZY_COMPARE_PIXELS(fb2.pixel(217, 39), QColor(Qt::green).rgb());
- QFUZZY_COMPARE_PIXELS(fb2.pixel(192, 64), QColor(Qt::blue).rgb());
-
- QFUZZY_COMPARE_PIXELS(fb3.pixel(39, 64), QColor(Qt::blue).rgb());
- QFUZZY_COMPARE_PIXELS(fb3.pixel(89, 64), QColor(Qt::blue).rgb());
- QFUZZY_COMPARE_PIXELS(fb3.pixel(64, 39), QColor(Qt::green).rgb());
- QFUZZY_COMPARE_PIXELS(fb3.pixel(64, 89), QColor(Qt::green).rgb());
- QFUZZY_COMPARE_PIXELS(fb3.pixel(167, 39), QColor(Qt::blue).rgb());
- QFUZZY_COMPARE_PIXELS(fb3.pixel(217, 39), QColor(Qt::blue).rgb());
- QFUZZY_COMPARE_PIXELS(fb3.pixel(192, 64), QColor(Qt::red).rgb());
-}
-
-class FBOUseInGLWidget : public QGLWidget
-{
-public:
- bool widgetPainterBeginOk;
- bool fboPainterBeginOk;
- QImage fboImage;
-protected:
- void paintEvent(QPaintEvent*)
- {
- QPainter widgetPainter;
- widgetPainterBeginOk = widgetPainter.begin(this);
- QGLFramebufferObjectFormat fboFormat;
- fboFormat.setAttachment(QGLFramebufferObject::NoAttachment);
- QGLFramebufferObject *fbo = new QGLFramebufferObject(100, 100, fboFormat);
-
- QPainter fboPainter;
- fboPainterBeginOk = fboPainter.begin(fbo);
- fboPainter.fillRect(-1, -1, 130, 130, Qt::red);
- fboPainter.end();
- fboImage = fbo->toImage();
-
- widgetPainter.fillRect(-1, -1, width()+2, width()+2, Qt::blue);
-
- delete fbo;
- }
-
-};
-
-void tst_QGL::glFBOUseInGLWidget()
-{
- if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
- QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
-
- FBOUseInGLWidget w;
-#ifdef Q_WS_QWS
- w.setWindowFlags(Qt::FramelessWindowHint);
-#endif
- w.resize(100, 100);
- w.show();
-
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&w);
-#endif
- QTest::qWait(200);
-
- QVERIFY(w.widgetPainterBeginOk);
- QVERIFY(w.fboPainterBeginOk);
-
- QImage widgetFB = w.grabFrameBuffer(false);
- QImage widgetReference(widgetFB.size(), widgetFB.format());
- widgetReference.fill(0xff0000ff);
- QFUZZY_COMPARE_IMAGES(widgetFB, widgetReference);
-
- QImage fboReference(w.fboImage.size(), w.fboImage.format());
- fboReference.fill(0xffff0000);
- QFUZZY_COMPARE_IMAGES(w.fboImage, fboReference);
-}
-
-void tst_QGL::glWidgetReparent()
-{
- // Try it as a top-level first:
- GLWidget *widget = new GLWidget;
- widget->setGeometry(0, 0, 200, 30);
- widget->show();
-
- QWidget grandParentWidget;
- grandParentWidget.setPalette(Qt::blue);
- QVBoxLayout grandParentLayout(&grandParentWidget);
-
- QWidget parentWidget(&grandParentWidget);
- grandParentLayout.addWidget(&parentWidget);
- parentWidget.setPalette(Qt::green);
- parentWidget.setAutoFillBackground(true);
- QVBoxLayout parentLayout(&parentWidget);
-
- grandParentWidget.setGeometry(0, 100, 200, 200);
- grandParentWidget.show();
-
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(widget);
- qt_x11_wait_for_window_manager(&parentWidget);
-#endif
- QTest::qWait(200);
-
- QVERIFY(parentWidget.children().count() == 1); // The layout
-
- // Now both widgets should be created & shown, time to re-parent:
- parentLayout.addWidget(widget);
-
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&parentWidget);
-#endif
- QTest::qWait(200);
-
- QVERIFY(parentWidget.children().count() == 2); // Layout & glwidget
- QVERIFY(parentWidget.children().contains(widget));
- QVERIFY(widget->height() > 30);
-
- delete widget;
-
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&parentWidget);
-#endif
- QTest::qWait(200);
-
- QVERIFY(parentWidget.children().count() == 1); // The layout
-
- // Now do pretty much the same thing, but don't show the
- // widget first:
- widget = new GLWidget;
- parentLayout.addWidget(widget);
-
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&parentWidget);
-#endif
- QTest::qWait(200);
-
- QVERIFY(parentWidget.children().count() == 2); // Layout & glwidget
- QVERIFY(parentWidget.children().contains(widget));
- QVERIFY(widget->height() > 30);
-
- delete widget;
-}
-
-class RenderPixmapWidget : public QGLWidget
-{
-protected:
- void initializeGL() {
- // Set some gl state:
- glClearColor(1.0, 0.0, 0.0, 1.0);
- }
-
- void paintGL() {
- glClear(GL_COLOR_BUFFER_BIT);
- }
-};
-
-void tst_QGL::glWidgetRenderPixmap()
-{
- RenderPixmapWidget *w = new RenderPixmapWidget;
-
- QPixmap pm = w->renderPixmap(100, 100, false);
-
- delete w;
-
- QImage fb = pm.toImage().convertToFormat(QImage::Format_RGB32);
- QImage reference(fb.size(), QImage::Format_RGB32);
- reference.fill(0xffff0000);
-
-#if defined(QGL_EGL) && !defined(Q_WS_X11)
- QSKIP("renderPixmap() not yet supported under EGL on your platform", SkipAll);
-#endif
-
- QFUZZY_COMPARE_IMAGES(fb, reference);
-}
-
-class ColormapExtended : public QGLColormap
-{
-public:
- ColormapExtended() {}
-
- Qt::HANDLE handle() { return QGLColormap::handle(); }
- void setHandle(Qt::HANDLE handle) { QGLColormap::setHandle(handle); }
-};
-
-void tst_QGL::colormap()
-{
- // Check the properties of the default empty colormap.
- QGLColormap cmap1;
- QVERIFY(cmap1.isEmpty());
- QCOMPARE(cmap1.size(), 0);
- QVERIFY(cmap1.entryRgb(0) == 0);
- QVERIFY(cmap1.entryRgb(-1) == 0);
- QVERIFY(cmap1.entryRgb(100) == 0);
- QVERIFY(!cmap1.entryColor(0).isValid());
- QVERIFY(!cmap1.entryColor(-1).isValid());
- QVERIFY(!cmap1.entryColor(100).isValid());
- QCOMPARE(cmap1.find(qRgb(255, 0, 0)), -1);
- QCOMPARE(cmap1.findNearest(qRgb(255, 0, 0)), -1);
-
- // Set an entry and re-test.
- cmap1.setEntry(56, qRgb(255, 0, 0));
- // The colormap is still considered "empty" even though it
- // has entries in it now. The isEmpty() method is used to
- // detect when the colormap is in use by a GL widget,
- // not to detect when it is empty!
- QVERIFY(cmap1.isEmpty());
- QCOMPARE(cmap1.size(), 256);
- QVERIFY(cmap1.entryRgb(0) == 0);
- QVERIFY(cmap1.entryColor(0) == QColor(0, 0, 0, 255));
- QVERIFY(cmap1.entryRgb(56) == qRgb(255, 0, 0));
- QVERIFY(cmap1.entryColor(56) == QColor(255, 0, 0, 255));
- QCOMPARE(cmap1.find(qRgb(255, 0, 0)), 56);
- QCOMPARE(cmap1.findNearest(qRgb(255, 0, 0)), 56);
-
- // Set some more entries.
- static QRgb const colors[] = {
- qRgb(255, 0, 0),
- qRgb(0, 255, 0),
- qRgb(255, 255, 255),
- qRgb(0, 0, 255),
- qRgb(0, 0, 0)
- };
- cmap1.setEntry(57, QColor(0, 255, 0));
- cmap1.setEntries(3, colors + 2, 58);
- cmap1.setEntries(5, colors, 251);
- int idx;
- for (idx = 0; idx < 5; ++idx) {
- QVERIFY(cmap1.entryRgb(56 + idx) == colors[idx]);
- QVERIFY(cmap1.entryColor(56 + idx) == QColor(colors[idx]));
- QVERIFY(cmap1.entryRgb(251 + idx) == colors[idx]);
- QVERIFY(cmap1.entryColor(251 + idx) == QColor(colors[idx]));
- }
- QCOMPARE(cmap1.size(), 256);
-
- // Perform color lookups.
- QCOMPARE(cmap1.find(qRgb(255, 0, 0)), 56);
- QCOMPARE(cmap1.find(qRgb(0, 0, 0)), 60); // Actually finds 0, 0, 0, 255.
- QCOMPARE(cmap1.find(qRgba(0, 0, 0, 0)), 0);
- QCOMPARE(cmap1.find(qRgb(0, 255, 0)), 57);
- QCOMPARE(cmap1.find(qRgb(255, 255, 255)), 58);
- QCOMPARE(cmap1.find(qRgb(0, 0, 255)), 59);
- QCOMPARE(cmap1.find(qRgb(140, 0, 0)), -1);
- QCOMPARE(cmap1.find(qRgb(0, 140, 0)), -1);
- QCOMPARE(cmap1.find(qRgb(0, 0, 140)), -1);
- QCOMPARE(cmap1.find(qRgb(64, 0, 0)), -1);
- QCOMPARE(cmap1.find(qRgb(0, 64, 0)), -1);
- QCOMPARE(cmap1.find(qRgb(0, 0, 64)), -1);
- QCOMPARE(cmap1.findNearest(qRgb(255, 0, 0)), 56);
- QCOMPARE(cmap1.findNearest(qRgb(0, 0, 0)), 60);
- QCOMPARE(cmap1.findNearest(qRgba(0, 0, 0, 0)), 0);
- QCOMPARE(cmap1.findNearest(qRgb(0, 255, 0)), 57);
- QCOMPARE(cmap1.findNearest(qRgb(255, 255, 255)), 58);
- QCOMPARE(cmap1.findNearest(qRgb(0, 0, 255)), 59);
- QCOMPARE(cmap1.findNearest(qRgb(140, 0, 0)), 56);
- QCOMPARE(cmap1.findNearest(qRgb(0, 140, 0)), 57);
- QCOMPARE(cmap1.findNearest(qRgb(0, 0, 140)), 59);
- QCOMPARE(cmap1.findNearest(qRgb(64, 0, 0)), 0);
- QCOMPARE(cmap1.findNearest(qRgb(0, 64, 0)), 0);
- QCOMPARE(cmap1.findNearest(qRgb(0, 0, 64)), 0);
-
- // Make some copies of the colormap and check that they are the same.
- QGLColormap cmap2(cmap1);
- QGLColormap cmap3;
- cmap3 = cmap1;
- QVERIFY(cmap2.isEmpty());
- QVERIFY(cmap3.isEmpty());
- QCOMPARE(cmap2.size(), 256);
- QCOMPARE(cmap3.size(), 256);
- for (idx = 0; idx < 256; ++idx) {
- QCOMPARE(cmap1.entryRgb(idx), cmap2.entryRgb(idx));
- QCOMPARE(cmap1.entryRgb(idx), cmap3.entryRgb(idx));
- }
-
- // Modify an entry in one of the copies and recheck the original.
- cmap2.setEntry(45, qRgb(255, 0, 0));
- for (idx = 0; idx < 256; ++idx) {
- if (idx != 45)
- QCOMPARE(cmap1.entryRgb(idx), cmap2.entryRgb(idx));
- else
- QCOMPARE(cmap2.entryRgb(45), qRgb(255, 0, 0));
- QCOMPARE(cmap1.entryRgb(idx), cmap3.entryRgb(idx));
- }
-
- // Check that setting the handle will cause isEmpty() to work right.
- ColormapExtended cmap4;
- cmap4.setEntry(56, qRgb(255, 0, 0));
- QVERIFY(cmap4.isEmpty());
- QCOMPARE(cmap4.size(), 256);
- cmap4.setHandle(Qt::HANDLE(42));
- QVERIFY(cmap4.handle() == Qt::HANDLE(42));
- QVERIFY(!cmap4.isEmpty());
- QCOMPARE(cmap4.size(), 256);
-}
-
-#ifndef QT_OPENGL_ES
-#define DEFAULT_FORMAT GL_RGBA8
-#else
-#define DEFAULT_FORMAT GL_RGBA
-#endif
-
-#ifndef GL_TEXTURE_3D
-#define GL_TEXTURE_3D 0x806F
-#endif
-
-#ifndef GL_RGB16
-#define GL_RGB16 0x8054
-#endif
-
-void tst_QGL::fboFormat()
-{
- // Check the initial conditions.
- QGLFramebufferObjectFormat format1;
- QCOMPARE(format1.samples(), 0);
- QVERIFY(format1.attachment() == QGLFramebufferObject::NoAttachment);
- QCOMPARE(int(format1.textureTarget()), int(GL_TEXTURE_2D));
- QCOMPARE(int(format1.internalTextureFormat()), int(DEFAULT_FORMAT));
-
- // Modify the values and re-check.
- format1.setSamples(8);
- format1.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
- format1.setTextureTarget(GL_TEXTURE_3D);
- format1.setInternalTextureFormat(GL_RGB16);
- QCOMPARE(format1.samples(), 8);
- QVERIFY(format1.attachment() == QGLFramebufferObject::CombinedDepthStencil);
- QCOMPARE(int(format1.textureTarget()), int(GL_TEXTURE_3D));
- QCOMPARE(int(format1.internalTextureFormat()), int(GL_RGB16));
-
- // Make copies and check that they are the same.
- QGLFramebufferObjectFormat format2(format1);
- QGLFramebufferObjectFormat format3;
- QCOMPARE(format2.samples(), 8);
- QVERIFY(format2.attachment() == QGLFramebufferObject::CombinedDepthStencil);
- QCOMPARE(int(format2.textureTarget()), int(GL_TEXTURE_3D));
- QCOMPARE(int(format2.internalTextureFormat()), int(GL_RGB16));
- format3 = format1;
- QCOMPARE(format3.samples(), 8);
- QVERIFY(format3.attachment() == QGLFramebufferObject::CombinedDepthStencil);
- QCOMPARE(int(format3.textureTarget()), int(GL_TEXTURE_3D));
- QCOMPARE(int(format3.internalTextureFormat()), int(GL_RGB16));
-
- // Modify the copies and check that the original is unchanged.
- format2.setSamples(9);
- format3.setTextureTarget(GL_TEXTURE_2D);
- QCOMPARE(format1.samples(), 8);
- QVERIFY(format1.attachment() == QGLFramebufferObject::CombinedDepthStencil);
- QCOMPARE(int(format1.textureTarget()), int(GL_TEXTURE_3D));
- QCOMPARE(int(format1.internalTextureFormat()), int(GL_RGB16));
-
- // operator== and operator!= for QGLFramebufferObjectFormat.
- QGLFramebufferObjectFormat format1c;
- QGLFramebufferObjectFormat format2c;
-
- QVERIFY(format1c == format2c);
- QVERIFY(!(format1c != format2c));
- format1c.setSamples(8);
- QVERIFY(!(format1c == format2c));
- QVERIFY(format1c != format2c);
- format2c.setSamples(8);
- QVERIFY(format1c == format2c);
- QVERIFY(!(format1c != format2c));
-
- format1c.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
- QVERIFY(!(format1c == format2c));
- QVERIFY(format1c != format2c);
- format2c.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
- QVERIFY(format1c == format2c);
- QVERIFY(!(format1c != format2c));
-
- format1c.setTextureTarget(GL_TEXTURE_3D);
- QVERIFY(!(format1c == format2c));
- QVERIFY(format1c != format2c);
- format2c.setTextureTarget(GL_TEXTURE_3D);
- QVERIFY(format1c == format2c);
- QVERIFY(!(format1c != format2c));
-
- format1c.setInternalTextureFormat(GL_RGB16);
- QVERIFY(!(format1c == format2c));
- QVERIFY(format1c != format2c);
- format2c.setInternalTextureFormat(GL_RGB16);
- QVERIFY(format1c == format2c);
- QVERIFY(!(format1c != format2c));
-
- QGLFramebufferObjectFormat format3c(format1c);
- QGLFramebufferObjectFormat format4c;
- QVERIFY(format1c == format3c);
- QVERIFY(!(format1c != format3c));
- format3c.setInternalTextureFormat(DEFAULT_FORMAT);
- QVERIFY(!(format1c == format3c));
- QVERIFY(format1c != format3c);
-
- format4c = format1c;
- QVERIFY(format1c == format4c);
- QVERIFY(!(format1c != format4c));
- format4c.setInternalTextureFormat(DEFAULT_FORMAT);
- QVERIFY(!(format1c == format4c));
- QVERIFY(format1c != format4c);
-}
-
-void tst_QGL::testDontCrashOnDanglingResources()
-{
- // We have a number of Q_GLOBAL_STATICS inside the QtOpenGL
- // library. This test is verify that we don't crash as a result of
- // them calling into libgl on application shutdown.
- QWidget *widget = new UnclippedWidget();
- widget->show();
- qApp->processEvents();
- widget->hide();
-}
-
-class ReplaceClippingGLWidget : public QGLWidget
-{
-public:
- void paint(QPainter *painter)
- {
- painter->fillRect(rect(), Qt::white);
-
- QPainterPath path;
- path.addRect(0, 0, 100, 100);
- path.addRect(50, 50, 100, 100);
-
- painter->setClipRect(0, 0, 150, 150);
- painter->fillPath(path, Qt::red);
-
- painter->translate(150, 150);
- painter->setClipRect(0, 0, 150, 150);
- painter->fillPath(path, Qt::red);
- }
-
-protected:
- void paintEvent(QPaintEvent*)
- {
- // clear the stencil with junk
- glStencilMask(0xFFFF);
- glClearStencil(0xFFFF);
- glDisable(GL_STENCIL_TEST);
- glDisable(GL_SCISSOR_TEST);
- glClear(GL_STENCIL_BUFFER_BIT);
-
- QPainter painter(this);
- paint(&painter);
- }
-};
-
-void tst_QGL::replaceClipping()
-{
- ReplaceClippingGLWidget glw;
-#ifdef Q_WS_QWS
- glw.setWindowFlags(Qt::FramelessWindowHint);
-#endif
- glw.resize(300, 300);
- glw.show();
-
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&glw);
-#endif
- QTest::qWait(200);
-
- QImage reference(300, 300, QImage::Format_RGB32);
- QPainter referencePainter(&reference);
- glw.paint(&referencePainter);
- referencePainter.end();
-
- const QImage widgetFB = glw.grabFrameBuffer(false).convertToFormat(QImage::Format_RGB32);
-
- // Sample pixels in a grid pattern which avoids false failures due to
- // off-by-one pixel errors on some buggy GL implementations
- for (int x = 25; x < reference.width(); x += 50) {
- for (int y = 25; y < reference.width(); y += 50) {
- QFUZZY_COMPARE_PIXELS(widgetFB.pixel(x, y), reference.pixel(x, y));
- }
- }
-}
-
-class ClipTestGLWidget : public QGLWidget
-{
-public:
- void paint(QPainter *painter)
- {
- painter->fillRect(-1, -1, width()+2, height()+2, Qt::white);
- painter->setClipRect(10, 10, width()-20, height()-20);
- painter->fillRect(rect(), Qt::cyan);
-
- painter->save();
- painter->setClipRect(10, 10, 100, 100, Qt::IntersectClip);
-
- painter->fillRect(rect(), Qt::blue);
-
- painter->save();
- painter->setClipRect(10, 10, 50, 50, Qt::IntersectClip);
- painter->fillRect(rect(), Qt::red);
- painter->restore();
- painter->fillRect(0, 0, 40, 40, Qt::white);
- painter->save();
-
- painter->setClipRect(0, 0, 35, 35, Qt::IntersectClip);
- painter->fillRect(rect(), Qt::black);
- painter->restore();
-
- painter->fillRect(0, 0, 30, 30, Qt::magenta);
-
- painter->save();
- painter->setClipRect(60, 10, 50, 50, Qt::ReplaceClip);
- painter->fillRect(rect(), Qt::green);
- painter->restore();
-
- painter->restore();
-
- painter->translate(100, 100);
-
- {
- QPainterPath path;
- path.addRect(10, 10, 100, 100);
- path.addRect(10, 10, 10, 10);
- painter->setClipPath(path, Qt::IntersectClip);
- }
-
- painter->fillRect(rect(), Qt::blue);
-
- painter->save();
- {
- QPainterPath path;
- path.addRect(10, 10, 50, 50);
- path.addRect(10, 10, 10, 10);
- painter->setClipPath(path, Qt::IntersectClip);
- }
- painter->fillRect(rect(), Qt::red);
- painter->restore();
- painter->fillRect(0, 0, 40, 40, Qt::white);
- painter->save();
-
- {
- QPainterPath path;
- path.addRect(0, 0, 35, 35);
- path.addRect(10, 10, 10, 10);
- painter->setClipPath(path, Qt::IntersectClip);
- }
- painter->fillRect(rect(), Qt::black);
- painter->restore();
-
- painter->fillRect(0, 0, 30, 30, Qt::magenta);
-
- painter->save();
- {
- QPainterPath path;
- path.addRect(60, 10, 50, 50);
- path.addRect(10, 10, 10, 10);
- painter->setClipPath(path, Qt::ReplaceClip);
- }
- painter->fillRect(rect(), Qt::green);
- painter->restore();
- }
-
-protected:
- void paintEvent(QPaintEvent*)
- {
- QPainter painter(this);
- paint(&painter);
- }
-};
-
-void tst_QGL::clipTest()
-{
- ClipTestGLWidget glw;
-#ifdef Q_WS_QWS
- glw.setWindowFlags(Qt::FramelessWindowHint);
-#endif
- glw.resize(220, 220);
- glw.show();
-
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&glw);
-#endif
- QTest::qWait(200);
-
- QImage reference(glw.size(), QImage::Format_RGB32);
- QPainter referencePainter(&reference);
- glw.paint(&referencePainter);
- referencePainter.end();
-
- const QImage widgetFB = glw.grabFrameBuffer(false).convertToFormat(QImage::Format_RGB32);
-
- // Sample pixels in a grid pattern which avoids false failures due to
- // off-by-one pixel errors on some buggy GL implementations
- for (int x = 2; x < reference.width(); x += 5) {
- for (int y = 2; y < reference.height(); y += 5) {
- QFUZZY_COMPARE_PIXELS(widgetFB.pixel(x, y), reference.pixel(x, y));
- }
- }
-}
-
-void tst_QGL::destroyFBOAfterContext()
-{
- if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
- QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
-
- QGLWidget *glw = new QGLWidget();
- glw->makeCurrent();
-
- // No multisample with combined depth/stencil attachment:
- QGLFramebufferObjectFormat fboFormat;
- fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
-
- // Don't complicate things by using NPOT:
- QGLFramebufferObject *fbo = new QGLFramebufferObject(256, 128, fboFormat);
-
- // The handle should be valid until the context is destroyed.
- QVERIFY(fbo->handle() != 0);
- QVERIFY(fbo->isValid());
-
- delete glw;
-
- // The handle should now be zero.
- QVERIFY(fbo->handle() == 0);
- QVERIFY(!fbo->isValid());
-
- delete fbo;
-}
-
-#ifdef QT_BUILD_INTERNAL
-
-class tst_QGLResource
-{
-public:
- tst_QGLResource(const QGLContext * = 0) {}
- ~tst_QGLResource() { ++deletions; }
-
- static int deletions;
-};
-
-int tst_QGLResource::deletions = 0;
-
-Q_GLOBAL_STATIC(QGLContextGroupResource<tst_QGLResource>, qt_shared_test)
-
-#endif
-
-void tst_QGL::shareRegister()
-{
-#ifdef QT_BUILD_INTERNAL
- // Create a context.
- QGLWidget *glw1 = new QGLWidget();
- glw1->makeCurrent();
-
- // Nothing should be sharing with glw1's context yet.
- QVERIFY(!glw1->isSharing());
-
- // Create a guard for the first context.
- QGLSharedResourceGuard guard(glw1->context());
- QVERIFY(guard.id() == 0);
- guard.setId(3);
- QVERIFY(guard.id() == 3);
-
- // Request a tst_QGLResource object for the first context.
- tst_QGLResource *res1 = qt_shared_test()->value(glw1->context());
- QVERIFY(res1);
- QVERIFY(qt_shared_test()->value(glw1->context()) == res1);
-
- // Create another context that shares with the first.
- QVERIFY(!glw1->isSharing());
- QGLWidget *glw2 = new QGLWidget(0, glw1);
- if (!glw2->isSharing()) {
- delete glw2;
- delete glw1;
- QSKIP("Context sharing is not supported", SkipSingle);
- }
- QVERIFY(glw1->isSharing());
- QVERIFY(glw1->context() != glw2->context());
-
- // Check that the first context's resource is also on the second.
- QVERIFY(qt_shared_test()->value(glw1->context()) == res1);
- QVERIFY(qt_shared_test()->value(glw2->context()) == res1);
-
- // Guard should still be the same.
- QVERIFY(guard.context() == glw1->context());
- QVERIFY(guard.id() == 3);
-
- // Check the sharing relationships.
- QVERIFY(QGLContext::areSharing(glw1->context(), glw1->context()));
- QVERIFY(QGLContext::areSharing(glw2->context(), glw2->context()));
- QVERIFY(QGLContext::areSharing(glw1->context(), glw2->context()));
- QVERIFY(QGLContext::areSharing(glw2->context(), glw1->context()));
- QVERIFY(!QGLContext::areSharing(0, glw2->context()));
- QVERIFY(!QGLContext::areSharing(glw1->context(), 0));
- QVERIFY(!QGLContext::areSharing(0, 0));
-
- // Create a third context, not sharing with the others.
- QGLWidget *glw3 = new QGLWidget();
- QVERIFY(!glw3->isSharing());
-
- // Create a guard on the standalone context.
- QGLSharedResourceGuard guard3(glw3->context());
- guard3.setId(5);
-
- // Request a resource to the third context.
- tst_QGLResource *res3 = qt_shared_test()->value(glw3->context());
- QVERIFY(res3);
- QVERIFY(qt_shared_test()->value(glw1->context()) == res1);
- QVERIFY(qt_shared_test()->value(glw2->context()) == res1);
- QVERIFY(qt_shared_test()->value(glw3->context()) == res3);
-
- // Check the sharing relationships again.
- QVERIFY(QGLContext::areSharing(glw1->context(), glw1->context()));
- QVERIFY(QGLContext::areSharing(glw2->context(), glw2->context()));
- QVERIFY(QGLContext::areSharing(glw1->context(), glw2->context()));
- QVERIFY(QGLContext::areSharing(glw2->context(), glw1->context()));
- QVERIFY(!QGLContext::areSharing(glw1->context(), glw3->context()));
- QVERIFY(!QGLContext::areSharing(glw2->context(), glw3->context()));
- QVERIFY(!QGLContext::areSharing(glw3->context(), glw1->context()));
- QVERIFY(!QGLContext::areSharing(glw3->context(), glw2->context()));
- QVERIFY(QGLContext::areSharing(glw3->context(), glw3->context()));
- QVERIFY(!QGLContext::areSharing(0, glw2->context()));
- QVERIFY(!QGLContext::areSharing(glw1->context(), 0));
- QVERIFY(!QGLContext::areSharing(0, glw3->context()));
- QVERIFY(!QGLContext::areSharing(glw3->context(), 0));
- QVERIFY(!QGLContext::areSharing(0, 0));
-
- // Shared guard should still be the same.
- QVERIFY(guard.context() == glw1->context());
- QVERIFY(guard.id() == 3);
-
- // Delete the first context.
- delete glw1;
-
- // The second context should no longer register as sharing.
- QVERIFY(!glw2->isSharing());
-
- // The first context's resource should transfer to the second context.
- QCOMPARE(tst_QGLResource::deletions, 0);
- QVERIFY(qt_shared_test()->value(glw2->context()) == res1);
- QVERIFY(qt_shared_test()->value(glw3->context()) == res3);
-
- // Shared guard should now be the second context, with the id the same.
- QVERIFY(guard.context() == glw2->context());
- QVERIFY(guard.id() == 3);
- QVERIFY(guard3.context() == glw3->context());
- QVERIFY(guard3.id() == 5);
-
- // Clean up and check that the resources are properly deleted.
- delete glw2;
- QCOMPARE(tst_QGLResource::deletions, 1);
- delete glw3;
- QCOMPARE(tst_QGLResource::deletions, 2);
-
- // Guards should now be null and the id zero.
- QVERIFY(guard.context() == 0);
- QVERIFY(guard.id() == 0);
- QVERIFY(guard3.context() == 0);
- QVERIFY(guard3.id() == 0);
-#endif
-}
-
-// Tests QGLContext::bindTexture with default options
-void tst_QGL::qglContextDefaultBindTexture()
-{
-#ifdef QT_BUILD_INTERNAL
- QGLWidget w;
- w.makeCurrent();
- QGLContext *ctx = const_cast<QGLContext*>(w.context());
-
- QImage *boundImage = new QImage(256, 256, QImage::Format_RGB32);
- boundImage->fill(0xFFFFFFFF);
- QPixmap *boundPixmap = new QPixmap(256, 256);
- boundPixmap->fill(Qt::red);
-
- int startCacheItemCount = QGLTextureCache::instance()->size();
-
- GLuint boundImageTextureId = ctx->bindTexture(*boundImage);
- GLuint boundPixmapTextureId = ctx->bindTexture(*boundPixmap);
-
- // Make sure the image & pixmap have been added to the cache:
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
-
- // Make sure the image & pixmap have the is_cached flag set:
- QVERIFY(QImagePixmapCleanupHooks::isImageCached(*boundImage));
- QVERIFY(QImagePixmapCleanupHooks::isPixmapCached(*boundPixmap));
-
- // Make sure the texture IDs returned are valid:
- QCOMPARE((bool)glIsTexture(boundImageTextureId), GL_TRUE);
- QCOMPARE((bool)glIsTexture(boundPixmapTextureId), GL_TRUE);
-
- // Make sure the textures are still valid after we delete the image/pixmap:
- // Also check that although the textures are left intact, the cache entries are removed:
- delete boundImage;
- boundImage = 0;
- QCOMPARE((bool)glIsTexture(boundImageTextureId), GL_TRUE);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
- delete boundPixmap;
- boundPixmap = 0;
- QCOMPARE((bool)glIsTexture(boundPixmapTextureId), GL_TRUE);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
-
- // Finally, make sure QGLContext::deleteTexture deletes the texture IDs:
- ctx->deleteTexture(boundImageTextureId);
- ctx->deleteTexture(boundPixmapTextureId);
- QCOMPARE((bool)glIsTexture(boundImageTextureId), GL_FALSE);
- QCOMPARE((bool)glIsTexture(boundPixmapTextureId), GL_FALSE);
-#endif
-}
-
-void tst_QGL::textureCleanup()
-{
-#ifdef QT_BUILD_INTERNAL
- QGLWidget w;
- w.resize(200,200);
- w.show();
- w.makeCurrent();
-
- // Test pixmaps which have been loaded via QPixmapCache are removed from the texture cache
- // when the pixmap cache is cleared
- {
- int startCacheItemCount = QGLTextureCache::instance()->size();
- QPainter p(&w);
-
- QPixmap boundPixmap(":designer.png");
-
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
-
- p.drawPixmap(0, 0, boundPixmap);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
- p.end();
-
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- // Check that the texture doesn't get removed from the cache when the pixmap is cleared
- // as it should still be in the cache:
- boundPixmap = QPixmap();
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- QPixmapCache::clear();
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
- }
-
- // Test pixmaps which have been loaded via QPixmapCache are removed from the texture cache
- // when they are explicitly removed from the pixmap cache
- {
- int startCacheItemCount = QGLTextureCache::instance()->size();
- QPainter p(&w);
-
- QPixmap boundPixmap(128, 128);
- QString cacheKey = QString::fromLatin1("myPixmap");
- QPixmapCache::insert(cacheKey, boundPixmap);
-
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
-
- p.drawPixmap(0, 0, boundPixmap);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
- p.end();
-
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- // Check that the texture doesn't get removed from the cache when the pixmap is cleared
- // as it should still be in the cache:
- boundPixmap = QPixmap();
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- // Finally, we check that the texture cache entry is removed when we remove the
- // pixmap cache entry, which should hold the last reference:
- QPixmapCache::remove(cacheKey);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
- }
-
- // Check images & pixmaps are removed from the cache when they are deleted
- {
- int startCacheItemCount = QGLTextureCache::instance()->size();
- QPainter p(&w);
-
- QImage *boundImage = new QImage(256, 256, QImage::Format_RGB32);
- boundImage->fill(0xFFFFFFFF);
- QPixmap *boundPixmap = new QPixmap(256, 256);
- boundPixmap->fill(Qt::red);
-
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
-
- p.drawImage(0, 0, *boundImage);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- p.drawPixmap(0, 0, *boundPixmap);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
-
- // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
- p.end();
-
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
-
- delete boundImage;
- boundImage = 0;
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- delete boundPixmap;
- boundPixmap = 0;
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
- }
-
- // Check images & pixmaps are removed from the cache when they are assigned to
- {
- int startCacheItemCount = QGLTextureCache::instance()->size();
- QPainter p(&w);
-
- QImage boundImage(256, 256, QImage::Format_RGB32);
- boundImage.fill(0xFFFFFFFF);
- QPixmap boundPixmap(256, 256);
- boundPixmap.fill(Qt::red);
-
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
-
- p.drawImage(0, 0, boundImage);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- p.drawPixmap(0, 0, boundPixmap);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
-
- // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
- p.end();
-
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
-
- boundImage = QImage(64, 64, QImage::Format_RGB32);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- boundPixmap = QPixmap(64, 64);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
- }
-
- // Check images & pixmaps are removed from the cache when they are modified (detached)
- {
- int startCacheItemCount = QGLTextureCache::instance()->size();
- QPainter p(&w);
-
- QImage boundImage(256, 256, QImage::Format_RGB32);
- boundImage.fill(0xFFFFFFFF);
- QPixmap boundPixmap(256, 256);
- boundPixmap.fill(Qt::red);
-
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
-
- p.drawImage(0, 0, boundImage);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- p.drawPixmap(0, 0, boundPixmap);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
-
- // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
- p.end();
-
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
-
- boundImage.fill(0x00000000);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- boundPixmap.fill(Qt::blue);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
- }
-
- // Check that images/pixmaps aren't removed from the cache if a shallow copy has been made
- QImage copyOfImage;
- QPixmap copyOfPixmap;
- int startCacheItemCount = QGLTextureCache::instance()->size();
- {
- QPainter p(&w);
-
- QImage boundImage(256, 256, QImage::Format_RGB32);
- boundImage.fill(0xFFFFFFFF);
- QPixmap boundPixmap(256, 256);
- boundPixmap.fill(Qt::red);
-
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
-
- p.drawImage(0, 0, boundImage);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- p.drawPixmap(0, 0, boundPixmap);
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
-
- // Need to call end for the GL2 paint engine to release references to pixmap if using tfp
- p.end();
-
- copyOfImage = boundImage;
- copyOfPixmap = boundPixmap;
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
- } // boundImage & boundPixmap would have been deleted when they went out of scope
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+2);
-
- copyOfImage = QImage();
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount+1);
-
- copyOfPixmap = QPixmap();
- QCOMPARE(QGLTextureCache::instance()->size(), startCacheItemCount);
-#endif
-}
-
-namespace ThreadImages {
-
-class Producer : public QObject
-{
- Q_OBJECT
-public:
- Producer()
- {
- startTimer(20);
-
- QThread *thread = new QThread;
- thread->start();
-
- connect(this, SIGNAL(destroyed()), thread, SLOT(quit()));
-
- moveToThread(thread);
- connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
- }
-
-signals:
- void imageReady(const QImage &image);
-
-protected:
- void timerEvent(QTimerEvent *)
- {
- QImage image(256, 256, QImage::Format_RGB32);
- QLinearGradient g(0, 0, 0, 256);
- g.setColorAt(0, QColor(255, 180, 180));
- g.setColorAt(1, Qt::white);
- g.setSpread(QGradient::ReflectSpread);
-
- QBrush brush(g);
- brush.setTransform(QTransform::fromTranslate(0, delta));
- delta += 10;
-
- QPainter p(&image);
- p.fillRect(image.rect(), brush);
-
- if (images.size() > 10)
- images.removeFirst();
-
- images.append(image);
-
- emit imageReady(image);
- }
-
-private:
- QList<QImage> images;
- int delta;
-};
-
-
-class DisplayWidget : public QGLWidget
-{
- Q_OBJECT
-public:
- DisplayWidget(QWidget *parent) : QGLWidget(parent) {}
- void paintEvent(QPaintEvent *)
- {
- QPainter p(this);
- p.drawImage(rect(), m_image);
- }
-
-public slots:
- void setImage(const QImage &image)
- {
- m_image = image;
- update();
- }
-
-private:
- QImage m_image;
-};
-
-class Widget : public QWidget
-{
- Q_OBJECT
-public:
- Widget()
- : iterations(0)
- , display(0)
- , producer(new Producer)
- {
- startTimer(400);
- connect(this, SIGNAL(destroyed()), producer, SLOT(deleteLater()));
- }
-
- int iterations;
-
-protected:
- void timerEvent(QTimerEvent *)
- {
- ++iterations;
-
- delete display;
- display = new DisplayWidget(this);
- connect(producer, SIGNAL(imageReady(const QImage &)), display, SLOT(setImage(const QImage &)));
-
- display->setGeometry(rect());
- display->show();
- }
-
-private:
- DisplayWidget *display;
- Producer *producer;
-};
-
-}
-
-void tst_QGL::threadImages()
-{
- ThreadImages::Widget *widget = new ThreadImages::Widget;
- widget->show();
-
- while (widget->iterations <= 5) {
- qApp->processEvents();
- }
-
- delete widget;
-}
-
-void tst_QGL::nullRectCrash()
-{
- if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
- QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
-
- QGLWidget glw;
- glw.makeCurrent();
-
- QGLFramebufferObjectFormat fboFormat;
- fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
-
- QGLFramebufferObject *fbo = new QGLFramebufferObject(128, 128, fboFormat);
-
- QPainter fboPainter(fbo);
-
- fboPainter.setPen(QPen(QColor(255, 127, 127, 127), 2));
- fboPainter.setBrush(QColor(127, 255, 127, 127));
- fboPainter.drawRect(QRectF());
-
- fboPainter.end();
-}
-
-class tst_QGLDummy : public QObject
-{
-Q_OBJECT
-
-public:
- tst_QGLDummy() {}
-
-private slots:
- void qglSkipTests() {
- QSKIP("QGL not supported on this system.", SkipAll);
- }
-};
-
-int main(int argc, char **argv)
-{
- QApplication app(argc, argv);
- QTEST_DISABLE_KEYPAD_NAVIGATION \
- QGLWidget glWidget;
- if (!glWidget.isValid()) {
- tst_QGLDummy tc;
- return QTest::qExec(&tc, argc, argv);
- }
- tst_QGL tc;
- return QTest::qExec(&tc, argc, argv);
-}
-
-#include "tst_qgl.moc"
diff --git a/tests/auto/qglbuffer/qglbuffer.pro b/tests/auto/qglbuffer/qglbuffer.pro
deleted file mode 100644
index 5627d2d6cb..0000000000
--- a/tests/auto/qglbuffer/qglbuffer.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-############################################################
-# Project file for autotest for file qglbuffer.h
-############################################################
-
-load(qttest_p4)
-requires(contains(QT_CONFIG,opengl))
-QT += opengl
-
-win32:!wince*: DEFINES += QT_NO_EGL
-
-SOURCES += tst_qglbuffer.cpp
diff --git a/tests/auto/qglfunctions/qglfunctions.pro b/tests/auto/qglfunctions/qglfunctions.pro
deleted file mode 100644
index aa81547de5..0000000000
--- a/tests/auto/qglfunctions/qglfunctions.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-load(qttest_p4)
-requires(contains(QT_CONFIG,opengl))
-QT += opengl
-
-win32:!wince*: DEFINES += QT_NO_EGL
-
-SOURCES += tst_qglfunctions.cpp
diff --git a/tests/auto/qglthreads/qglthreads.pro b/tests/auto/qglthreads/qglthreads.pro
deleted file mode 100644
index bd27ce8e68..0000000000
--- a/tests/auto/qglthreads/qglthreads.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-load(qttest_p4)
-requires(contains(QT_CONFIG,opengl))
-QT += opengl
-
-win32:!wince*: DEFINES += QT_NO_EGL
-
-HEADERS += tst_qglthreads.h
-SOURCES += tst_qglthreads.cpp
-
-x11 {
- LIBS += $$QMAKE_LIBS_X11
-}
-
-CONFIG+=insignificant_test
diff --git a/tests/auto/qglthreads/tst_qglthreads.cpp b/tests/auto/qglthreads/tst_qglthreads.cpp
deleted file mode 100644
index 472379ab7a..0000000000
--- a/tests/auto/qglthreads/tst_qglthreads.cpp
+++ /dev/null
@@ -1,757 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include <QtCore/QtCore>
-#include <QtGui/QtGui>
-#include <QtOpenGL/QtOpenGL>
-#include "tst_qglthreads.h"
-
-#ifdef Q_OS_SYMBIAN
-#define RUNNING_TIME 2000 // save GPU mem by running shorter time.
-#else
-#define RUNNING_TIME 5000
-#endif
-
-
-
-
-tst_QGLThreads::tst_QGLThreads(QObject *parent)
- : QObject(parent)
-{
-}
-
-/*
-
- swapInThread
-
- The purpose of this testcase is to verify that it is possible to do rendering into
- a GL context from the GUI thread, then swap the contents in from a background thread.
-
- The usecase for this is to have the background thread do the waiting for vertical
- sync while the GUI thread is idle.
-
- Currently the locking is handled directly in the paintEvent(). For the actual usecase
- in Qt, the locking is done in the windowsurface before starting any drawing while
- unlocking is done after all drawing has been done.
- */
-
-
-class SwapThread : public QThread
-{
- Q_OBJECT
-public:
- SwapThread(QGLWidget *widget)
- : m_widget(widget)
- {
- moveToThread(this);
- }
-
- void run() {
- QTime time;
- time.start();
- while (time.elapsed() < RUNNING_TIME) {
- lock();
- wait();
-
- m_widget->makeCurrent();
- m_widget->swapBuffers();
- m_widget->doneCurrent();
- unlock();
- }
- }
-
- void lock() { m_mutex.lock(); }
- void unlock() { m_mutex.unlock(); }
-
- void wait() { m_wait_condition.wait(&m_mutex); }
- void notify() { m_wait_condition.wakeAll(); }
-
-private:
- QGLWidget *m_widget;
- QMutex m_mutex;
- QWaitCondition m_wait_condition;
-};
-
-class ForegroundWidget : public QGLWidget
-{
-public:
- ForegroundWidget(const QGLFormat &format)
- : QGLWidget(format), m_thread(0)
- {
- setAutoBufferSwap(false);
- }
-
- void paintEvent(QPaintEvent *)
- {
- m_thread->lock();
- makeCurrent();
- QPainter p(this);
- p.fillRect(rect(), QColor(rand() % 256, rand() % 256, rand() % 256));
- p.setPen(Qt::red);
- p.setFont(QFont("SansSerif", 24));
- p.drawText(rect(), Qt::AlignCenter, "This is an autotest");
- p.end();
- doneCurrent();
- m_thread->notify();
- m_thread->unlock();
-
- update();
- }
-
- void setThread(SwapThread *thread) {
- m_thread = thread;
- }
-
- SwapThread *m_thread;
-};
-
-void tst_QGLThreads::swapInThread()
-{
-#ifdef Q_OS_MAC
- QSKIP("OpenGL threading tests are currently disabled on mac as they were causing reboots", SkipAll);
-#endif
-
- QGLFormat format;
- format.setSwapInterval(1);
- ForegroundWidget widget(format);
- SwapThread thread(&widget);
- widget.setThread(&thread);
- widget.show();
-
- QTest::qWaitForWindowShown(&widget);
- thread.start();
-
- while (thread.isRunning()) {
- qApp->processEvents();
- }
-
- widget.hide();
-
- QVERIFY(true);
-}
-
-
-
-
-
-
-
-/*
- textureUploadInThread
-
- The purpose of this testcase is to verify that doing texture uploads in a background
- thread is possible and that it works.
- */
-
-class CreateAndUploadThread : public QThread
-{
- Q_OBJECT
-public:
- CreateAndUploadThread(QGLWidget *shareWidget)
- {
- m_gl = new QGLWidget(0, shareWidget);
- moveToThread(this);
- }
-
- ~CreateAndUploadThread()
- {
- delete m_gl;
- }
-
- void run() {
- m_gl->makeCurrent();
- QTime time;
- time.start();
- while (time.elapsed() < RUNNING_TIME) {
- int width = 400;
- int height = 300;
-#ifdef Q_OS_SYMBIAN
- // GPU mem is very scarce resource on Symbian currently.
- // That's why we create only small textures.
- width = 50;
- height = 20;
-#endif
- QImage image(width, height, QImage::Format_RGB32);
- QPainter p(&image);
- p.fillRect(image.rect(), QColor(rand() % 256, rand() % 256, rand() % 256));
- p.setPen(Qt::red);
- p.setFont(QFont("SansSerif", 24));
- p.drawText(image.rect(), Qt::AlignCenter, "This is an autotest");
- p.end();
- m_gl->bindTexture(image, GL_TEXTURE_2D, GL_RGBA, QGLContext::InternalBindOption);
-
- createdAndUploaded(image);
- }
- }
-
-signals:
- void createdAndUploaded(const QImage &image);
-
-private:
- QGLWidget *m_gl;
-};
-
-class TextureDisplay : public QGLWidget
-{
- Q_OBJECT
-public:
- void paintEvent(QPaintEvent *) {
- QPainter p(this);
- for (int i=0; i<m_images.size(); ++i) {
- p.drawImage(m_positions.at(i), m_images.at(i));
- m_positions[i] += QPoint(1, 1);
- }
- update();
- }
-
-public slots:
- void receiveImage(const QImage &image) {
- m_images << image;
- m_positions << QPoint(-rand() % width() / 2, -rand() % height() / 2);
-
- if (m_images.size() > 100) {
- m_images.takeFirst();
- m_positions.takeFirst();
- }
- }
-
-private:
- QList <QImage> m_images;
- QList <QPoint> m_positions;
-};
-
-void tst_QGLThreads::textureUploadInThread()
-{
-#ifdef Q_OS_MAC
- QSKIP("OpenGL threading tests are currently disabled on mac as they were causing reboots", SkipAll);
-#endif
-
- TextureDisplay display;
- CreateAndUploadThread thread(&display);
-
- connect(&thread, SIGNAL(createdAndUploaded(QImage)), &display, SLOT(receiveImage(QImage)));
-
- display.show();
- QTest::qWaitForWindowShown(&display);
-
- thread.start();
-
- while (thread.isRunning()) {
- qApp->processEvents();
- }
-
- QVERIFY(true);
-}
-
-
-
-
-
-
-/*
- renderInThread
-
- This test sets up a scene and renders it in a different thread.
- For simplicity, the scene is simply a bunch of rectangles, but
- if that works, we're in good shape..
- */
-
-static inline float qrandom() { return (rand() % 100) / 100.f; }
-
-void renderAScene(int w, int h)
-{
-#ifdef QT_OPENGL_ES_2
- QGLShaderProgram program;
- program.addShaderFromSourceCode(QGLShader::Vertex, "attribute highp vec2 pos; void main() { gl_Position = vec4(pos.xy, 1.0, 1.0); }");
- program.addShaderFromSourceCode(QGLShader::Fragment, "uniform lowp vec4 color; void main() { gl_FragColor = color; }");
- program.bindAttributeLocation("pos", 0);
- program.bind();
- int colorId = program.uniformLocation("color");
-
- glEnableVertexAttribArray(0);
-
- for (int i=0; i<1000; ++i) {
- GLfloat pos[] = {
- (rand() % 100) / 100.,
- (rand() % 100) / 100.,
- (rand() % 100) / 100.,
- (rand() % 100) / 100.,
- (rand() % 100) / 100.,
- (rand() % 100) / 100.
- };
-
- glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, pos);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
- }
-#else
- glViewport(0, 0, w, h);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(0, w, h, 0, 1, 100);
- glTranslated(0, 0, -1);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- for (int i=0;i<1000; ++i) {
- glBegin(GL_TRIANGLES);
- glColor3f(qrandom(), qrandom(), qrandom());
- glVertex2f(qrandom() * w, qrandom() * h);
- glColor3f(qrandom(), qrandom(), qrandom());
- glVertex2f(qrandom() * w, qrandom() * h);
- glColor3f(qrandom(), qrandom(), qrandom());
- glVertex2f(qrandom() * w, qrandom() * h);
- glEnd();
- }
-#endif
-}
-
-class ThreadSafeGLWidget : public QGLWidget
-{
-public:
- ThreadSafeGLWidget(QWidget *parent = 0) : QGLWidget(parent) {}
- void paintEvent(QPaintEvent *)
- {
- // ignored as we're anyway swapping as fast as we can
- };
-
- void resizeEvent(QResizeEvent *e)
- {
- mutex.lock();
- newSize = e->size();
- mutex.unlock();
- };
-
- QMutex mutex;
- QSize newSize;
-};
-
-class SceneRenderingThread : public QThread
-{
- Q_OBJECT
-public:
- SceneRenderingThread(ThreadSafeGLWidget *widget)
- : m_widget(widget)
- {
- moveToThread(this);
- m_size = widget->size();
- }
-
- void run() {
- QTime time;
- time.start();
- failure = false;
-
- m_widget->makeCurrent();
-
- while (time.elapsed() < RUNNING_TIME && !failure) {
-
-
- m_widget->mutex.lock();
- QSize s = m_widget->newSize;
- m_widget->mutex.unlock();
-
- if (s != m_size) {
- glViewport(0, 0, s.width(), s.height());
- }
-
- if (QGLContext::currentContext() != m_widget->context()) {
- failure = true;
- break;
- }
-
- glClear(GL_COLOR_BUFFER_BIT);
-
- int w = m_widget->width();
- int h = m_widget->height();
-
- renderAScene(w, h);
-
- int color;
- glReadPixels(w / 2, h / 2, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &color);
-
- m_widget->swapBuffers();
- }
-
- m_widget->doneCurrent();
- }
-
- bool failure;
-
-private:
- ThreadSafeGLWidget *m_widget;
- QSize m_size;
-};
-
-void tst_QGLThreads::renderInThread_data()
-{
- QTest::addColumn<bool>("resize");
- QTest::addColumn<bool>("update");
-
- QTest::newRow("basic") << false << false;
- QTest::newRow("with-resize") << true << false;
- QTest::newRow("with-update") << false << true;
- QTest::newRow("with-resize-and-update") << true << true;
-}
-
-void tst_QGLThreads::renderInThread()
-{
-#ifdef Q_OS_MAC
- QSKIP("OpenGL threading tests are currently disabled on Mac as they were causing reboots", SkipAll);
-#endif
-
-#ifdef Q_OS_SYMBIAN
- QSKIP("OpenGL threading tests are disabled on Symbian as accessing RWindow from a secondary thread is not supported", SkipAll);
-#endif
-
- QFETCH(bool, resize);
- QFETCH(bool, update);
-
- ThreadSafeGLWidget widget;
- widget.resize(200, 200);
- SceneRenderingThread thread(&widget);
-
- widget.show();
- QTest::qWaitForWindowShown(&widget);
- widget.doneCurrent();
-
- thread.start();
-
- int value = 10;
- while (thread.isRunning()) {
- if (resize)
- widget.resize(200 + value, 200 + value);
- if (update)
- widget.update(100 + value, 100 + value, 20, 20);
- qApp->processEvents();
- value = -value;
-
- QThread::msleep(100);
- }
-
- QVERIFY(!thread.failure);
-}
-
-class Device
-{
-public:
- virtual ~Device() {}
- virtual QPaintDevice *realPaintDevice() = 0;
- virtual void prepareDevice() {}
-};
-
-class GLWidgetWrapper : public Device
-{
-public:
- GLWidgetWrapper() {
- widget.resize(150, 150);
- widget.show();
- QTest::qWaitForWindowShown(&widget);
- widget.doneCurrent();
- }
- QPaintDevice *realPaintDevice() { return &widget; }
-
- ThreadSafeGLWidget widget;
-};
-
-class PixmapWrapper : public Device
-{
-public:
- PixmapWrapper() { pixmap = new QPixmap(512, 512); }
- ~PixmapWrapper() { delete pixmap; }
- QPaintDevice *realPaintDevice() { return pixmap; }
-
- QPixmap *pixmap;
-};
-
-class PixelBufferWrapper : public Device
-{
-public:
- PixelBufferWrapper() { pbuffer = new QGLPixelBuffer(512, 512); }
- ~PixelBufferWrapper() { delete pbuffer; }
- QPaintDevice *realPaintDevice() { return pbuffer; }
-
- QGLPixelBuffer *pbuffer;
-};
-
-
-class FrameBufferObjectWrapper : public Device
-{
-public:
- FrameBufferObjectWrapper() {
- widget.makeCurrent();
- fbo = new QGLFramebufferObject(512, 512);
- widget.doneCurrent();
- }
- ~FrameBufferObjectWrapper() { delete fbo; }
- QPaintDevice *realPaintDevice() { return fbo; }
- void prepareDevice() { widget.makeCurrent(); }
-
- ThreadSafeGLWidget widget;
- QGLFramebufferObject *fbo;
-};
-
-
-class ThreadPainter : public QObject
-{
- Q_OBJECT
-public:
- ThreadPainter(Device *pd) : device(pd), fail(true) {
- pixmap = QPixmap(40, 40);
- pixmap.fill(Qt::green);
- QPainter p(&pixmap);
- p.drawLine(0, 0, 40, 40);
- p.drawLine(0, 40, 40, 0);
- }
-
-public slots:
- void draw() {
- bool beginFailed = false;
- QTime time;
- time.start();
- int rotAngle = 10;
- device->prepareDevice();
- QPaintDevice *paintDevice = device->realPaintDevice();
- QSize s(paintDevice->width(), paintDevice->height());
- while (time.elapsed() < RUNNING_TIME) {
- QPainter p;
- if (!p.begin(paintDevice)) {
- beginFailed = true;
- break;
- }
- p.translate(s.width()/2, s.height()/2);
- p.rotate(rotAngle);
- p.translate(-s.width()/2, -s.height()/2);
- p.fillRect(0, 0, s.width(), s.height(), Qt::red);
- QRect rect(QPoint(0, 0), s);
- p.drawPixmap(10, 10, pixmap);
- p.drawTiledPixmap(50, 50, 100, 100, pixmap);
- p.drawText(rect.center(), "This is a piece of text");
- p.end();
- rotAngle += 2;
- QThread::msleep(20);
- }
-
- fail = beginFailed;
- QThread::currentThread()->quit();
- }
-
- bool failed() { return fail; }
-
-private:
- QPixmap pixmap;
- Device *device;
- bool fail;
-};
-
-template <class T>
-class PaintThreadManager
-{
-public:
- PaintThreadManager(int count) : numThreads(count)
- {
- for (int i=0; i<numThreads; ++i) {
- devices.append(new T);
- threads.append(new QThread);
- painters.append(new ThreadPainter(devices.at(i)));
- painters.at(i)->moveToThread(threads.at(i));
- painters.at(i)->connect(threads.at(i), SIGNAL(started()), painters.at(i), SLOT(draw()));
- }
- }
-
- ~PaintThreadManager() {
- qDeleteAll(threads);
- qDeleteAll(painters);
- qDeleteAll(devices);
- }
-
-
- void start() {
- for (int i=0; i<numThreads; ++i)
- threads.at(i)->start();
- }
-
- bool areRunning() {
- bool running = false;
- for (int i=0; i<numThreads; ++i){
- if (threads.at(i)->isRunning())
- running = true;
- }
-
- return running;
- }
-
- bool failed() {
- for (int i=0; i<numThreads; ++i) {
- if (painters.at(i)->failed())
- return true;
- }
-
- return false;
- }
-
-private:
- QList<QThread *> threads;
- QList<Device *> devices;
- QList<ThreadPainter *> painters;
- int numThreads;
-};
-
-/*
- This test uses QPainter to draw onto different QGLWidgets in
- different threads at the same time. The ThreadSafeGLWidget is
- necessary to handle paint and resize events that might come from
- the main thread at any time while the test is running. The resize
- and paint events would cause makeCurrent() calls to be issued from
- within the QGLWidget while the widget's context was current in
- another thread, which would cause errors.
-*/
-void tst_QGLThreads::painterOnGLWidgetInThread()
-{
-#ifdef Q_OS_MAC
- QSKIP("OpenGL threading tests are currently disabled on Mac as they were causing reboots", SkipAll);
-#endif
- if (!((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_0) ||
- (QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0))) {
- QSKIP("The OpenGL based threaded QPainter tests requires OpenGL/ES 2.0.", SkipAll);
- }
-
- PaintThreadManager<GLWidgetWrapper> painterThreads(5);
- painterThreads.start();
-
- while (painterThreads.areRunning()) {
- qApp->processEvents();
- QThread::msleep(100);
- }
- QVERIFY(!painterThreads.failed());
-}
-
-/*
- This test uses QPainter to draw onto different QPixmaps in
- different threads at the same time.
-*/
-void tst_QGLThreads::painterOnPixmapInThread()
-{
-#ifdef Q_WS_X11
- QSKIP("Drawing text in threads onto X11 drawables currently crashes on some X11 servers.", SkipAll);
-#endif
- PaintThreadManager<PixmapWrapper> painterThreads(5);
- painterThreads.start();
-
- while (painterThreads.areRunning()) {
- qApp->processEvents();
- QThread::msleep(100);
- }
- QVERIFY(!painterThreads.failed());
-}
-
-/* This test uses QPainter to draw onto different QGLPixelBuffer
- objects in different threads at the same time.
-*/
-void tst_QGLThreads::painterOnPboInThread()
-{
-#ifdef Q_OS_MAC
- QSKIP("OpenGL threading tests are currently disabled on Mac as they were causing reboots", SkipAll);
-#endif
- if (!((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_0) ||
- (QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0))) {
- QSKIP("The OpenGL based threaded QPainter tests requires OpenGL/ES 2.0.", SkipAll);
- return;
- }
-
- if (!QGLPixelBuffer::hasOpenGLPbuffers()) {
- QSKIP("This system doesn't support pbuffers.", SkipAll);
- return;
- }
-
- PaintThreadManager<PixelBufferWrapper> painterThreads(5);
- painterThreads.start();
-
- while (painterThreads.areRunning()) {
- qApp->processEvents();
- QThread::msleep(100);
- }
- QVERIFY(!painterThreads.failed());
-}
-
-/* This test uses QPainter to draw onto different
- QGLFramebufferObjects (bound in a QGLWidget's context) in different
- threads at the same time.
-*/
-void tst_QGLThreads::painterOnFboInThread()
-{
-#ifdef Q_OS_MAC
- QSKIP("OpenGL threading tests are currently disabled on Mac as they were causing reboots", SkipAll);
-#endif
- if (!((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_0) ||
- (QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0))) {
- QSKIP("The OpenGL based threaded QPainter tests requires OpenGL/ES 2.0.", SkipAll);
- return;
- }
-
- if (!QGLFramebufferObject::hasOpenGLFramebufferObjects()) {
- QSKIP("This system doesn't support framebuffer objects.", SkipAll);
- return;
- }
-
- PaintThreadManager<FrameBufferObjectWrapper> painterThreads(5);
- painterThreads.start();
-
- while (painterThreads.areRunning()) {
- qApp->processEvents();
- QThread::msleep(100);
- }
- QVERIFY(!painterThreads.failed());
-}
-
-int main(int argc, char **argv)
-{
- QApplication::setAttribute(Qt::AA_X11InitThreads);
- QApplication app(argc, argv);
- QTEST_DISABLE_KEYPAD_NAVIGATION \
-
- tst_QGLThreads tc;
- return QTest::qExec(&tc, argc, argv);
-}
-
-#include "tst_qglthreads.moc"
diff --git a/tests/auto/qgraphicsanchorlayout/qgraphicsanchorlayout.pro b/tests/auto/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
index e1829b0b6b..5aa2936e3e 100644
--- a/tests/auto/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
+++ b/tests/auto/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qgraphicsanchorlayout.cpp
CONFIG += parallel_test
diff --git a/tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp b/tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
index 5987f4a8a3..5dbe501ea8 100644
--- a/tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
+++ b/tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
@@ -40,12 +40,13 @@
****************************************************************************/
#include <QtTest/QtTest>
-#include <QtGui/qgraphicsanchorlayout.h>
+#include <QtWidgets/qgraphicsanchorlayout.h>
#include <private/qgraphicsanchorlayout_p.h>
-#include <QtGui/qgraphicswidget.h>
-#include <QtGui/qgraphicsproxywidget.h>
-#include <QtGui/qgraphicsview.h>
-#include <QtGui/qwindowsstyle.h>
+#include <QtWidgets/qgraphicswidget.h>
+#include <QtWidgets/qgraphicsproxywidget.h>
+#include <QtWidgets/qgraphicsview.h>
+#include <QtWidgets/qwindowsstyle.h>
+
class tst_QGraphicsAnchorLayout : public QObject {
Q_OBJECT
@@ -209,13 +210,13 @@ void tst_QGraphicsAnchorLayout::simple()
void tst_QGraphicsAnchorLayout::simple_center()
{
- QSizeF min(10, 10);
+ QSizeF minSize(10, 10);
QSizeF pref(50, 10);
- QSizeF max(100, 10);
+ QSizeF maxSize(100, 10);
- QGraphicsWidget *a = createItem(min, pref, max, "a");
- QGraphicsWidget *b = createItem(min, pref, max, "b");
- QGraphicsWidget *c = createItem(min, pref, max, "c");
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize, "a");
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize, "b");
+ QGraphicsWidget *c = createItem(minSize, pref, maxSize, "c");
QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout;
l->setContentsMargins(0, 0, 0, 0);
@@ -257,14 +258,14 @@ void tst_QGraphicsAnchorLayout::simple_semifloat()
// Useful for testing simplification between A_left and B_left.
// Unfortunately the only way to really test that now is to manually inspect the
// simplified graph.
- QSizeF min(10, 10);
+ QSizeF minSize(10, 10);
QSizeF pref(50, 10);
- QSizeF max(100, 10);
+ QSizeF maxSize(100, 10);
- QGraphicsWidget *A = createItem(min, pref, max, "A");
- QGraphicsWidget *B = createItem(min, pref, max, "B");
- QGraphicsWidget *a = createItem(min, pref, max, "a");
- QGraphicsWidget *b = createItem(min, pref, max, "b");
+ QGraphicsWidget *A = createItem(minSize, pref, maxSize, "A");
+ QGraphicsWidget *B = createItem(minSize, pref, maxSize, "B");
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize, "a");
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize, "b");
QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout;
l->setContentsMargins(0, 0, 0, 0);
@@ -303,13 +304,13 @@ void tst_QGraphicsAnchorLayout::simple_semifloat()
void tst_QGraphicsAnchorLayout::layoutDirection()
{
- QSizeF min(10, 10);
+ QSizeF minSize(10, 10);
QSizeF pref(50, 10);
- QSizeF max(100, 10);
+ QSizeF maxSize(100, 10);
- QGraphicsWidget *a = createItem(min, pref, max, "a");
- QGraphicsWidget *b = createItem(min, pref, max, "b");
- QGraphicsWidget *c = createItem(min, pref, QSizeF(100, 20), "c");
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize, "a");
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize, "b");
+ QGraphicsWidget *c = createItem(minSize, pref, QSizeF(100, 20), "c");
a->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
b->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
@@ -358,15 +359,15 @@ void tst_QGraphicsAnchorLayout::layoutDirection()
void tst_QGraphicsAnchorLayout::diagonal()
{
- QSizeF min(10, 100);
+ QSizeF minSize(10, 100);
QSizeF pref(70, 100);
- QSizeF max(100, 100);
+ QSizeF maxSize(100, 100);
- QGraphicsWidget *a = createItem(min, pref, max, "A");
- QGraphicsWidget *b = createItem(min, pref, max, "B");
- QGraphicsWidget *c = createItem(min, pref, max, "C");
- QGraphicsWidget *d = createItem(min, pref, max, "D");
- QGraphicsWidget *e = createItem(min, pref, max, "E");
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize, "A");
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize, "B");
+ QGraphicsWidget *c = createItem(minSize, pref, maxSize, "C");
+ QGraphicsWidget *d = createItem(minSize, pref, maxSize, "D");
+ QGraphicsWidget *e = createItem(minSize, pref, maxSize, "E");
QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout;
l->setContentsMargins(0, 0, 0, 0);
@@ -902,12 +903,12 @@ void tst_QGraphicsAnchorLayout::fairDistributionOppositeDirections()
void tst_QGraphicsAnchorLayout::proportionalPreferred()
{
- QSizeF min(0, 100);
+ QSizeF minSize(0, 100);
- QGraphicsWidget *a = createItem(min, QSizeF(10, 100), QSizeF(20, 100), "A");
- QGraphicsWidget *b = createItem(min, QSizeF(20, 100), QSizeF(30, 100), "B");
- QGraphicsWidget *c = createItem(min, QSizeF(14, 100), QSizeF(20, 100), "C");
- QGraphicsWidget *d = createItem(min, QSizeF(10, 100), QSizeF(20, 100), "D");
+ QGraphicsWidget *a = createItem(minSize, QSizeF(10, 100), QSizeF(20, 100), "A");
+ QGraphicsWidget *b = createItem(minSize, QSizeF(20, 100), QSizeF(30, 100), "B");
+ QGraphicsWidget *c = createItem(minSize, QSizeF(14, 100), QSizeF(20, 100), "C");
+ QGraphicsWidget *d = createItem(minSize, QSizeF(10, 100), QSizeF(20, 100), "D");
QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout;
l->setContentsMargins(0, 0, 0, 0);
@@ -969,17 +970,17 @@ void tst_QGraphicsAnchorLayout::proportionalPreferred()
void tst_QGraphicsAnchorLayout::example()
{
- QSizeF min(30, 100);
+ QSizeF minSize(30, 100);
QSizeF pref(210, 100);
- QSizeF max(300, 100);
+ QSizeF maxSize(300, 100);
- QGraphicsWidget *a = createItem(min, pref, max, "A");
- QGraphicsWidget *b = createItem(min, pref, max, "B");
- QGraphicsWidget *c = createItem(min, pref, max, "C");
- QGraphicsWidget *d = createItem(min, pref, max, "D");
- QGraphicsWidget *e = createItem(min, pref, max, "E");
- QGraphicsWidget *f = createItem(QSizeF(30, 50), QSizeF(150, 50), max, "F");
- QGraphicsWidget *g = createItem(QSizeF(30, 50), QSizeF(30, 100), max, "G");
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize, "A");
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize, "B");
+ QGraphicsWidget *c = createItem(minSize, pref, maxSize, "C");
+ QGraphicsWidget *d = createItem(minSize, pref, maxSize, "D");
+ QGraphicsWidget *e = createItem(minSize, pref, maxSize, "E");
+ QGraphicsWidget *f = createItem(QSizeF(30, 50), QSizeF(150, 50), maxSize, "F");
+ QGraphicsWidget *g = createItem(QSizeF(30, 50), QSizeF(30, 100), maxSize, "G");
QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout;
l->setContentsMargins(0, 0, 0, 0);
@@ -1057,13 +1058,13 @@ void tst_QGraphicsAnchorLayout::example()
void tst_QGraphicsAnchorLayout::setSpacing()
{
- QSizeF min(10, 10);
+ QSizeF minSize(10, 10);
QSizeF pref(20, 20);
- QSizeF max(50, 50);
+ QSizeF maxSize(50, 50);
- QGraphicsWidget *a = createItem(min, pref, max);
- QGraphicsWidget *b = createItem(min, pref, max);
- QGraphicsWidget *c = createItem(min, pref, max);
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize);
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize);
+ QGraphicsWidget *c = createItem(minSize, pref, maxSize);
QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout;
l->addCornerAnchors(l, Qt::TopLeftCorner, a, Qt::TopLeftCorner);
@@ -1199,9 +1200,9 @@ int CustomLayoutStyle::pixelMetric(PixelMetric metric, const QStyleOption * opti
void tst_QGraphicsAnchorLayout::styleDefaults()
{
- QSizeF min (10, 10);
+ QSizeF minSize (10, 10);
QSizeF pref(20, 20);
- QSizeF max (50, 50);
+ QSizeF maxSize (50, 50);
/*
create this layout, where a,b have controlType QSizePolicy::RadioButton
@@ -1214,20 +1215,20 @@ void tst_QGraphicsAnchorLayout::styleDefaults()
+-------+
*/
QGraphicsScene scene;
- QGraphicsWidget *a = createItem(min, pref, max);
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize);
QSizePolicy spRadioButton = a->sizePolicy();
spRadioButton.setControlType(QSizePolicy::RadioButton);
a->setSizePolicy(spRadioButton);
- QGraphicsWidget *b = createItem(min, pref, max);
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize);
b->setSizePolicy(spRadioButton);
- QGraphicsWidget *c = createItem(min, pref, max);
+ QGraphicsWidget *c = createItem(minSize, pref, maxSize);
QSizePolicy spPushButton = c->sizePolicy();
spPushButton.setControlType(QSizePolicy::PushButton);
c->setSizePolicy(spPushButton);
- QGraphicsWidget *d = createItem(min, pref, max);
+ QGraphicsWidget *d = createItem(minSize, pref, maxSize);
d->setSizePolicy(spPushButton);
QGraphicsWidget *window = new QGraphicsWidget(0, Qt::Window);
@@ -1301,17 +1302,17 @@ static QGraphicsAnchorLayout *createAmbiguousS60Layout()
l->setContentsMargins(0, 0, 0, 0);
l->setSpacing(0);
- QSizeF min(0, 10);
+ QSizeF minSize(0, 10);
QSizeF pref(50, 10);
- QSizeF max(100, 10);
+ QSizeF maxSize(100, 10);
- QGraphicsWidget *a = createItem(min, pref, max, "a");
- QGraphicsWidget *b = createItem(min, pref, max, "b");
- QGraphicsWidget *c = createItem(min, pref, max, "c");
- QGraphicsWidget *d = createItem(min, pref, max, "d");
- QGraphicsWidget *e = createItem(min, pref, max, "e");
- QGraphicsWidget *f = createItem(min, pref, max, "f");
- QGraphicsWidget *g = createItem(min, pref, max, "g");
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize, "a");
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize, "b");
+ QGraphicsWidget *c = createItem(minSize, pref, maxSize, "c");
+ QGraphicsWidget *d = createItem(minSize, pref, maxSize, "d");
+ QGraphicsWidget *e = createItem(minSize, pref, maxSize, "e");
+ QGraphicsWidget *f = createItem(minSize, pref, maxSize, "f");
+ QGraphicsWidget *g = createItem(minSize, pref, maxSize, "g");
//<!-- Trunk -->
setAnchor(l, l, Qt::AnchorLeft, a, Qt::AnchorLeft, 10);
@@ -1681,15 +1682,15 @@ void tst_QGraphicsAnchorLayout::infiniteMaxSizes()
l->setContentsMargins(0, 0, 0, 0);
l->setSpacing(0);
- QSizeF min(10, 10);
+ QSizeF minSize(10, 10);
QSizeF pref(50, 10);
- QSizeF max(QWIDGETSIZE_MAX, 10);
+ QSizeF maxSize(QWIDGETSIZE_MAX, 10);
- QGraphicsWidget *a = createItem(min, pref, max, "a");
- QGraphicsWidget *b = createItem(min, pref, max, "b");
- QGraphicsWidget *c = createItem(min, pref, max, "c");
- QGraphicsWidget *d = createItem(min, pref, max, "d");
- QGraphicsWidget *e = createItem(min, pref, max, "e");
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize, "a");
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize, "b");
+ QGraphicsWidget *c = createItem(minSize, pref, maxSize, "c");
+ QGraphicsWidget *d = createItem(minSize, pref, maxSize, "d");
+ QGraphicsWidget *e = createItem(minSize, pref, maxSize, "e");
//<!-- Trunk -->
setAnchor(l, l, Qt::AnchorLeft, a, Qt::AnchorLeft, 0);
@@ -1781,13 +1782,13 @@ void tst_QGraphicsAnchorLayout::simplifiableUnfeasible()
*/
void tst_QGraphicsAnchorLayout::simplificationVsOrder()
{
- QSizeF min(10, 10);
+ QSizeF minSize(10, 10);
QSizeF pref(20, 10);
- QSizeF max(50, 10);
+ QSizeF maxSize(50, 10);
- QGraphicsWidget *a = createItem(min, pref, max, "A");
- QGraphicsWidget *b = createItem(min, pref, max, "B");
- QGraphicsWidget *c = createItem(min, pref, max, "C");
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize, "A");
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize, "B");
+ QGraphicsWidget *c = createItem(minSize, pref, maxSize, "C");
QGraphicsWidget frame;
QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout(&frame);
@@ -1822,12 +1823,12 @@ void tst_QGraphicsAnchorLayout::simplificationVsOrder()
void tst_QGraphicsAnchorLayout::parallelSimplificationOfCenter()
{
- QSizeF min(10, 10);
+ QSizeF minSize(10, 10);
QSizeF pref(20, 10);
- QSizeF max(50, 10);
+ QSizeF maxSize(50, 10);
- QGraphicsWidget *a = createItem(min, pref, max, "A");
- QGraphicsWidget *b = createItem(min, pref, max, "B");
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize, "A");
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize, "B");
QGraphicsWidget parent;
QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout(&parent);
@@ -1851,13 +1852,13 @@ void tst_QGraphicsAnchorLayout::parallelSimplificationOfCenter()
*/
void tst_QGraphicsAnchorLayout::simplificationVsRedundance()
{
- QSizeF min(10, 10);
+ QSizeF minSize(10, 10);
QSizeF pref(20, 10);
- QSizeF max(50, 30);
+ QSizeF maxSize(50, 30);
- QGraphicsWidget *a = createItem(min, pref, max, "A");
- QGraphicsWidget *b = createItem(min, pref, max, "B");
- QGraphicsWidget *c = createItem(min, pref, max, "C");
+ QGraphicsWidget *a = createItem(minSize, pref, maxSize, "A");
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize, "B");
+ QGraphicsWidget *c = createItem(minSize, pref, maxSize, "C");
QGraphicsWidget frame;
QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout(&frame);
@@ -1916,13 +1917,13 @@ void tst_QGraphicsAnchorLayout::spacingPersistency()
*/
void tst_QGraphicsAnchorLayout::snakeParallelWithLayout()
{
- QSizeF min(10, 20);
+ QSizeF minSize(10, 20);
QSizeF pref(50, 20);
- QSizeF max(100, 20);
+ QSizeF maxSize(100, 20);
- QGraphicsWidget *a = createItem(max, max, max, "A");
- QGraphicsWidget *b = createItem(min, pref, max, "B");
- QGraphicsWidget *c = createItem(max, max, max, "C");
+ QGraphicsWidget *a = createItem(maxSize, maxSize, maxSize, "A");
+ QGraphicsWidget *b = createItem(minSize, pref, maxSize, "B");
+ QGraphicsWidget *c = createItem(maxSize, maxSize, maxSize, "C");
QGraphicsWidget parent;
QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout(&parent);
@@ -1944,9 +1945,9 @@ void tst_QGraphicsAnchorLayout::snakeParallelWithLayout()
// Note that A and C are fixed in the maximum size
QCOMPARE(l->geometry(), QRectF(QPointF(0, 0), QSizeF(150, 60)));
- QCOMPARE(a->geometry(), QRectF(QPointF(0, 0), max));
+ QCOMPARE(a->geometry(), QRectF(QPointF(0, 0), maxSize));
QCOMPARE(b->geometry(), QRectF(QPointF(50, 20), pref));
- QCOMPARE(c->geometry(), QRectF(QPointF(50, 40), max));
+ QCOMPARE(c->geometry(), QRectF(QPointF(50, 40), maxSize));
// Then, we change the "snake" to be in parallel with half of the layout
delete l->anchor(c, Qt::AnchorRight, l, Qt::AnchorRight);
@@ -1955,9 +1956,9 @@ void tst_QGraphicsAnchorLayout::snakeParallelWithLayout()
parent.resize(l->effectiveSizeHint(Qt::PreferredSize));
QCOMPARE(l->geometry(), QRectF(QPointF(0, 0), QSizeF(300, 60)));
- QCOMPARE(a->geometry(), QRectF(QPointF(0, 0), max));
+ QCOMPARE(a->geometry(), QRectF(QPointF(0, 0), maxSize));
QCOMPARE(b->geometry(), QRectF(QPointF(50, 20), pref));
- QCOMPARE(c->geometry(), QRectF(QPointF(50, 40), max));
+ QCOMPARE(c->geometry(), QRectF(QPointF(50, 40), maxSize));
}
/*
diff --git a/tests/auto/qgraphicsanchorlayout1/qgraphicsanchorlayout1.pro b/tests/auto/qgraphicsanchorlayout1/qgraphicsanchorlayout1.pro
index 535de0c07e..bcad43fc12 100644
--- a/tests/auto/qgraphicsanchorlayout1/qgraphicsanchorlayout1.pro
+++ b/tests/auto/qgraphicsanchorlayout1/qgraphicsanchorlayout1.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qgraphicsanchorlayout1.cpp
CONFIG += parallel_test
diff --git a/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp b/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp
index 4329f1350b..05f08e8719 100644
--- a/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp
+++ b/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp
@@ -43,7 +43,7 @@
#include <QtTest/QtTest>
#include <QTest>
#include <QMetaType>
-#include <QtGui/qgraphicsanchorlayout.h>
+#include <QtWidgets/qgraphicsanchorlayout.h>
#include <private/qgraphicsanchorlayout_p.h>
#define TEST_COMPLEX_CASES
diff --git a/tests/auto/qgraphicseffect/qgraphicseffect.pro b/tests/auto/qgraphicseffect/qgraphicseffect.pro
index db69e19cac..d0d1f11d0c 100644
--- a/tests/auto/qgraphicseffect/qgraphicseffect.pro
+++ b/tests/auto/qgraphicseffect/qgraphicseffect.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qgraphicseffect.cpp
diff --git a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
index 1f5563c6b7..334406272e 100644
--- a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
+++ b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
@@ -41,13 +41,13 @@
#include <QtTest/QtTest>
-#include <QtGui/qdesktopwidget.h>
-#include <QtGui/qgraphicseffect.h>
-#include <QtGui/qgraphicsview.h>
-#include <QtGui/qgraphicsscene.h>
-#include <QtGui/qgraphicsitem.h>
-#include <QtGui/qgraphicswidget.h>
-#include <QtGui/qstyleoption.h>
+#include <QtWidgets/qdesktopwidget.h>
+#include <QtWidgets/qgraphicseffect.h>
+#include <QtWidgets/qgraphicsview.h>
+#include <QtWidgets/qgraphicsscene.h>
+#include <QtWidgets/qgraphicsitem.h>
+#include <QtWidgets/qgraphicswidget.h>
+#include <QtWidgets/qstyleoption.h>
#include "../../shared/util.h"
#include <private/qgraphicseffect_p.h>
@@ -533,8 +533,8 @@ public:
void draw(QPainter *painter)
{
- QVERIFY(sourcePixmap(Qt::LogicalCoordinates).pixmapData() == pixmap.pixmapData());
- QVERIFY((painter->worldTransform().type() <= QTransform::TxTranslate) == (sourcePixmap(Qt::DeviceCoordinates).pixmapData() == pixmap.pixmapData()));
+ QVERIFY(sourcePixmap(Qt::LogicalCoordinates).handle() == pixmap.handle());
+ QVERIFY((painter->worldTransform().type() <= QTransform::TxTranslate) == (sourcePixmap(Qt::DeviceCoordinates).handle() == pixmap.handle()));
++repaints;
}
@@ -688,18 +688,18 @@ void tst_QGraphicsEffect::childrenVisibilityShouldInvalidateCache()
view.show();
QApplication::setActiveWindow(&view);
QTest::qWaitForWindowShown(&view);
- QTRY_COMPARE(parent.nbPaint, 1);
+ QTRY_VERIFY(parent.nbPaint >= 1);
//we set an effect on the parent
parent.setGraphicsEffect(new QGraphicsDropShadowEffect(&parent));
//flush the events
QApplication::processEvents();
//new effect applied->repaint
- QCOMPARE(parent.nbPaint, 2);
+ QVERIFY(parent.nbPaint >= 2);
child.setVisible(true);
//flush the events
QApplication::processEvents();
//a new child appears we need to redraw the effect.
- QCOMPARE(parent.nbPaint, 3);
+ QVERIFY(parent.nbPaint >= 3);
}
void tst_QGraphicsEffect::prepareGeometryChangeInvalidateCache()
@@ -716,7 +716,7 @@ void tst_QGraphicsEffect::prepareGeometryChangeInvalidateCache()
else
view.show();
QTest::qWaitForWindowShown(&view);
- QTRY_COMPARE(item->nbPaint, 1);
+ QTRY_VERIFY(item->nbPaint >= 1);
item->nbPaint = 0;
item->setGraphicsEffect(new QGraphicsDropShadowEffect);
@@ -747,7 +747,7 @@ void tst_QGraphicsEffect::itemHasNoContents()
QGraphicsView view(&scene);
view.show();
QTest::qWaitForWindowShown(&view);
- QTRY_COMPARE(child->nbPaint, 1);
+ QTRY_VERIFY(child->nbPaint >= 1);
CustomEffect *effect = new CustomEffect;
parent->setGraphicsEffect(effect);
diff --git a/tests/auto/qgraphicseffectsource/qgraphicseffectsource.pro b/tests/auto/qgraphicseffectsource/qgraphicseffectsource.pro
index da437e959c..44ec70eef3 100644
--- a/tests/auto/qgraphicseffectsource/qgraphicseffectsource.pro
+++ b/tests/auto/qgraphicseffectsource/qgraphicseffectsource.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qgraphicseffectsource.cpp
diff --git a/tests/auto/qgraphicseffectsource/tst_qgraphicseffectsource.cpp b/tests/auto/qgraphicseffectsource/tst_qgraphicseffectsource.cpp
index 5d684c5beb..a5dcf738e7 100644
--- a/tests/auto/qgraphicseffectsource/tst_qgraphicseffectsource.cpp
+++ b/tests/auto/qgraphicseffectsource/tst_qgraphicseffectsource.cpp
@@ -40,11 +40,11 @@
****************************************************************************/
#include <QtTest/QtTest>
-#include <QtGui/qgraphicseffect.h>
-#include <QtGui/qgraphicsview.h>
-#include <QtGui/qgraphicsscene.h>
-#include <QtGui/qgraphicsitem.h>
-#include <QtGui/qstyleoption.h>
+#include <QtWidgets/qgraphicseffect.h>
+#include <QtWidgets/qgraphicsview.h>
+#include <QtWidgets/qgraphicsscene.h>
+#include <QtWidgets/qgraphicsitem.h>
+#include <QtWidgets/qstyleoption.h>
#include <private/qgraphicseffect_p.h>
diff --git a/tests/auto/qgraphicsgridlayout/qgraphicsgridlayout.pro b/tests/auto/qgraphicsgridlayout/qgraphicsgridlayout.pro
index bde005fcf6..7db7c1ae6f 100644
--- a/tests/auto/qgraphicsgridlayout/qgraphicsgridlayout.pro
+++ b/tests/auto/qgraphicsgridlayout/qgraphicsgridlayout.pro
@@ -1,4 +1,6 @@
load(qttest_p4)
+
+QT += widgets
SOURCES += tst_qgraphicsgridlayout.cpp
CONFIG += parallel_test
contains(QT_CONFIG,xcb):qpa:CONFIG+=insignificant_test # QTBUG-20756 crashes on qpa, xcb
diff --git a/tests/auto/qgraphicsitem/qgraphicsitem.pro b/tests/auto/qgraphicsitem/qgraphicsitem.pro
index 77fd00fe5d..51a4426680 100644
--- a/tests/auto/qgraphicsitem/qgraphicsitem.pro
+++ b/tests/auto/qgraphicsitem/qgraphicsitem.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qgraphicsitem.cpp
DEFINES += QT_NO_CAST_TO_ASCII
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index a8cc3b0e62..79dd2bdd7d 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -42,7 +42,6 @@
#include <QtTest/QtTest>
-#include <private/qtextcontrol_p.h>
#include <private/qgraphicsitem_p.h>
#include <private/qgraphicsview_p.h>
#include <private/qgraphicsscene_p.h>
diff --git a/tests/auto/qgraphicsitemanimation/qgraphicsitemanimation.pro b/tests/auto/qgraphicsitemanimation/qgraphicsitemanimation.pro
index 01875c7b50..5d723da32e 100644
--- a/tests/auto/qgraphicsitemanimation/qgraphicsitemanimation.pro
+++ b/tests/auto/qgraphicsitemanimation/qgraphicsitemanimation.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qgraphicsitemanimation.cpp
DEFINES += QT_NO_CAST_TO_ASCII
CONFIG += parallel_test
diff --git a/tests/auto/qgraphicslayout/qgraphicslayout.pro b/tests/auto/qgraphicslayout/qgraphicslayout.pro
index eafd21310a..ea176c98fe 100644
--- a/tests/auto/qgraphicslayout/qgraphicslayout.pro
+++ b/tests/auto/qgraphicslayout/qgraphicslayout.pro
@@ -3,6 +3,7 @@
############################################################
load(qttest_p4)
+QT += widgets
SOURCES += tst_qgraphicslayout.cpp
DEFINES += QT_USE_USING_NAMESPACE
CONFIG += parallel_test
diff --git a/tests/auto/qgraphicslayoutitem/qgraphicslayoutitem.pro b/tests/auto/qgraphicslayoutitem/qgraphicslayoutitem.pro
index 816224bd8b..ed9adf87fd 100644
--- a/tests/auto/qgraphicslayoutitem/qgraphicslayoutitem.pro
+++ b/tests/auto/qgraphicslayoutitem/qgraphicslayoutitem.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qgraphicslayoutitem.cpp
CONFIG += parallel_test
diff --git a/tests/auto/qgraphicslinearlayout/qgraphicslinearlayout.pro b/tests/auto/qgraphicslinearlayout/qgraphicslinearlayout.pro
index df5a827787..1f7ff0cc6e 100644
--- a/tests/auto/qgraphicslinearlayout/qgraphicslinearlayout.pro
+++ b/tests/auto/qgraphicslinearlayout/qgraphicslinearlayout.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qgraphicslinearlayout.cpp
CONFIG += parallel_test
diff --git a/tests/auto/qgraphicsobject/qgraphicsobject.pro b/tests/auto/qgraphicsobject/qgraphicsobject.pro
index 648a81f6c6..5232ec8372 100644
--- a/tests/auto/qgraphicsobject/qgraphicsobject.pro
+++ b/tests/auto/qgraphicsobject/qgraphicsobject.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets
QT += core-private
SOURCES += tst_qgraphicsobject.cpp
diff --git a/tests/auto/qgraphicspixmapitem/qgraphicspixmapitem.pro b/tests/auto/qgraphicspixmapitem/qgraphicspixmapitem.pro
index 6b4db95ebe..6b1ad34057 100644
--- a/tests/auto/qgraphicspixmapitem/qgraphicspixmapitem.pro
+++ b/tests/auto/qgraphicspixmapitem/qgraphicspixmapitem.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qgraphicspixmapitem.cpp
CONFIG += parallel_test
diff --git a/tests/auto/qgraphicspolygonitem/qgraphicspolygonitem.pro b/tests/auto/qgraphicspolygonitem/qgraphicspolygonitem.pro
index 4da949b71a..2aa16751e6 100644
--- a/tests/auto/qgraphicspolygonitem/qgraphicspolygonitem.pro
+++ b/tests/auto/qgraphicspolygonitem/qgraphicspolygonitem.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qgraphicspolygonitem.cpp
CONFIG += parallel_test
diff --git a/tests/auto/qgraphicsproxywidget/qgraphicsproxywidget.pro b/tests/auto/qgraphicsproxywidget/qgraphicsproxywidget.pro
index 9f63a48998..a649ae1a3c 100644
--- a/tests/auto/qgraphicsproxywidget/qgraphicsproxywidget.pro
+++ b/tests/auto/qgraphicsproxywidget/qgraphicsproxywidget.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qgraphicsproxywidget.cpp
diff --git a/tests/auto/qgraphicsscene/qgraphicsscene.pro b/tests/auto/qgraphicsscene/qgraphicsscene.pro
index 7dfb30a2c6..9f961a11b8 100644
--- a/tests/auto/qgraphicsscene/qgraphicsscene.pro
+++ b/tests/auto/qgraphicsscene/qgraphicsscene.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qgraphicsscene.cpp
RESOURCES += images.qrc
diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
index b8741fe3aa..194e023d05 100644
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -50,7 +50,7 @@
#include <private/qgraphicssceneindex_p.h>
#include <math.h>
#include "../../shared/util.h"
-#include "../qpathclipper/pathcompare.h"
+#include "../gui/painting/qpathclipper/pathcompare.h"
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
#include <windows.h>
diff --git a/tests/auto/qgraphicssceneindex/qgraphicssceneindex.pro b/tests/auto/qgraphicssceneindex/qgraphicssceneindex.pro
index 0d0fd0db1a..5e61034d7c 100644
--- a/tests/auto/qgraphicssceneindex/qgraphicssceneindex.pro
+++ b/tests/auto/qgraphicssceneindex/qgraphicssceneindex.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
requires(contains(QT_CONFIG,private_tests))
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qgraphicssceneindex.cpp
CONFIG += parallel_test
diff --git a/tests/auto/qgraphicssceneindex/tst_qgraphicssceneindex.cpp b/tests/auto/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
index 09b16d7200..0b223c62eb 100644
--- a/tests/auto/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
+++ b/tests/auto/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
@@ -41,7 +41,7 @@
#include <QtTest/QtTest>
-#include <QtGui/qgraphicsscene.h>
+#include <QtWidgets/qgraphicsscene.h>
#include <private/qgraphicsscenebsptreeindex_p.h>
#include <private/qgraphicssceneindex_p.h>
#include <private/qgraphicsscenelinearindex_p.h>
diff --git a/tests/auto/qgraphicstransform/qgraphicstransform.pro b/tests/auto/qgraphicstransform/qgraphicstransform.pro
index 3da3408d29..de7f01f36f 100644
--- a/tests/auto/qgraphicstransform/qgraphicstransform.pro
+++ b/tests/auto/qgraphicstransform/qgraphicstransform.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qgraphicstransform.cpp
CONFIG += parallel_test
diff --git a/tests/auto/qgraphicsview/qgraphicsview.pro b/tests/auto/qgraphicsview/qgraphicsview.pro
index 9e603af4f9..053093f9bd 100644
--- a/tests/auto/qgraphicsview/qgraphicsview.pro
+++ b/tests/auto/qgraphicsview/qgraphicsview.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qgraphicsview.cpp tst_qgraphicsview_2.cpp
diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
index cdb87b57d7..d6bc8ff3e8 100644
--- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
@@ -51,25 +51,25 @@
#include <math.h>
-#include <QtGui/QLabel>
+#include <QtWidgets/QLabel>
#if !defined(QT_NO_STYLE_MOTIF)
-#include <QtGui/QMotifStyle>
+#include <QtWidgets/QMotifStyle>
#endif
#if !defined(QT_NO_STYLE_WINDOWS)
-#include <QtGui/QWindowsStyle>
+#include <QtWidgets/QWindowsStyle>
#endif
#if !defined(QT_NO_STYLE_PLASTIQUE)
-#include <QtGui/QPlastiqueStyle>
+#include <QtWidgets/QPlastiqueStyle>
#endif
#include <QtGui/QPainterPath>
-#include <QtGui/QRubberBand>
-#include <QtGui/QScrollBar>
-#include <QtGui/QStyleOption>
-#include <QtGui/QBoxLayout>
-#include <QtGui/QStyle>
-#include <QtGui/QPushButton>
-#include <QtGui/QInputContext>
-#include <QtGui/QDesktopWidget>
+#include <QtWidgets/QRubberBand>
+#include <QtWidgets/QScrollBar>
+#include <QtWidgets/QStyleOption>
+#include <QtWidgets/QBoxLayout>
+#include <QtWidgets/QStyle>
+#include <QtWidgets/QPushButton>
+#include <QtWidgets/QInputContext>
+#include <QtWidgets/QDesktopWidget>
#include <private/qgraphicsview_p.h>
#include "../../shared/util.h"
#include "../platformquirks.h"
diff --git a/tests/auto/qgraphicswidget/qgraphicswidget.pro b/tests/auto/qgraphicswidget/qgraphicswidget.pro
index 64de1fc739..330076eafc 100644
--- a/tests/auto/qgraphicswidget/qgraphicswidget.pro
+++ b/tests/auto/qgraphicswidget/qgraphicswidget.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qgraphicswidget.cpp
diff --git a/tests/auto/qgridlayout/qgridlayout.pro b/tests/auto/qgridlayout/qgridlayout.pro
index d034f1d031..6bd42fe432 100644
--- a/tests/auto/qgridlayout/qgridlayout.pro
+++ b/tests/auto/qgridlayout/qgridlayout.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qgridlayout.cpp
diff --git a/tests/auto/qgridlayout/tst_qgridlayout.cpp b/tests/auto/qgridlayout/tst_qgridlayout.cpp
index 921168da8e..d52729a273 100644
--- a/tests/auto/qgridlayout/tst_qgridlayout.cpp
+++ b/tests/auto/qgridlayout/tst_qgridlayout.cpp
@@ -46,9 +46,9 @@
#include <qwidget.h>
#include <qwindowsstyle.h>
#include <qsizepolicy.h>
-#include <QtGui>
+//#include <QtGui>
-#include <QtGui/QWindowsStyle>
+#include <QtWidgets/QWindowsStyle>
#include <QStyleFactory>
#include "../../shared/util.h"
diff --git a/tests/auto/qgroupbox/qgroupbox.pro b/tests/auto/qgroupbox/qgroupbox.pro
index 5f5370f0cb..f4181a33ed 100644
--- a/tests/auto/qgroupbox/qgroupbox.pro
+++ b/tests/auto/qgroupbox/qgroupbox.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qgroupbox.cpp
diff --git a/tests/auto/qheaderview/qheaderview.pro b/tests/auto/qheaderview/qheaderview.pro
index 9910e4e89d..3b3afa7e49 100644
--- a/tests/auto/qheaderview/qheaderview.pro
+++ b/tests/auto/qheaderview/qheaderview.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qheaderview.cpp
diff --git a/tests/auto/qhostinfo/tst_qhostinfo.cpp b/tests/auto/qhostinfo/tst_qhostinfo.cpp
deleted file mode 100644
index 1c7df1bdae..0000000000
--- a/tests/auto/qhostinfo/tst_qhostinfo.cpp
+++ /dev/null
@@ -1,665 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-// When using WinSock2 on Windows, it's the first thing that can be included
-// (except qglobal.h), or else you'll get tons of compile errors
-#include <qglobal.h>
-
-// MinGW doesn't provide getaddrinfo(), so we test for Q_OS_WIN
-// and Q_CC_GNU, which indirectly tells us whether we're using MinGW.
-#if defined(Q_OS_WIN) && defined(Q_CC_GNU)
-# define QT_NO_GETADDRINFO
-#endif
-
-#if defined(Q_OS_WIN) && !defined(QT_NO_GETADDRINFO)
-# include <winsock2.h>
-# include <ws2tcpip.h>
-#endif
-
-#include <QtTest/QtTest>
-#include <qcoreapplication.h>
-#include <QDebug>
-#include <QTcpSocket>
-#include <private/qthread_p.h>
-#include <QTcpServer>
-
-#ifndef QT_NO_BEARERMANAGEMENT
-#include <QtNetwork/qnetworkconfigmanager.h>
-#include <QtNetwork/qnetworkconfiguration.h>
-#include <QtNetwork/qnetworksession.h>
-#endif
-
-#include <time.h>
-#include <qlibrary.h>
-#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
-#include <windows.h>
-#else
-#include <unistd.h>
-#include <signal.h>
-#endif
-
-#include <qhostinfo.h>
-#include "private/qhostinfo_p.h"
-
-#if !defined(QT_NO_GETADDRINFO)
-# if !defined(Q_OS_WINCE)
-# include <sys/types.h>
-# else
-# include <types.h>
-# endif
-# if defined(Q_OS_UNIX)
-# include <sys/socket.h>
-# endif
-# if !defined(Q_OS_WIN)
-# include <netdb.h>
-# endif
-#endif
-
-#include "../network-settings.h"
-#include "../../shared/util.h"
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-const char * const lupinellaIp = "10.3.4.6";
-
-
-class tst_QHostInfo : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QHostInfo();
- virtual ~tst_QHostInfo();
-
-
-public slots:
- void init();
- void cleanup();
- void initTestCase();
-
-private slots:
- void getSetCheck();
- void staticInformation();
- void lookupIPv4_data();
- void lookupIPv4();
- void lookupIPv6_data();
- void lookupIPv6();
- void reverseLookup_data();
- void reverseLookup();
-
- void blockingLookup_data();
- void blockingLookup();
-
- void raceCondition();
- void threadSafety();
- void threadSafetyAsynchronousAPI();
-
- void multipleSameLookups();
- void multipleDifferentLookups_data();
- void multipleDifferentLookups();
-
- void cache();
-
- void abortHostLookup();
- void abortHostLookupInDifferentThread();
-protected slots:
- void resultsReady(const QHostInfo &);
-
-private:
- bool ipv6LookupsAvailable;
- bool ipv6Available;
- bool lookupDone;
- int lookupsDoneCounter;
- QHostInfo lookupResults;
-#ifndef QT_NO_BEARERMANAGEMENT
- QNetworkConfigurationManager *netConfMan;
- QNetworkConfiguration networkConfiguration;
- QScopedPointer<QNetworkSession> networkSession;
-#endif
-};
-
-// Testing get/set functions
-void tst_QHostInfo::getSetCheck()
-{
- QHostInfo obj1;
- // HostInfoError QHostInfo::error()
- // void QHostInfo::setError(HostInfoError)
- obj1.setError(QHostInfo::HostInfoError(0));
- QCOMPARE(QHostInfo::HostInfoError(0), obj1.error());
- obj1.setError(QHostInfo::HostInfoError(1));
- QCOMPARE(QHostInfo::HostInfoError(1), obj1.error());
-
- // int QHostInfo::lookupId()
- // void QHostInfo::setLookupId(int)
- obj1.setLookupId(0);
- QCOMPARE(0, obj1.lookupId());
- obj1.setLookupId(INT_MIN);
- QCOMPARE(INT_MIN, obj1.lookupId());
- obj1.setLookupId(INT_MAX);
- QCOMPARE(INT_MAX, obj1.lookupId());
-}
-
-void tst_QHostInfo::staticInformation()
-{
- qDebug() << "Hostname:" << QHostInfo::localHostName();
- qDebug() << "Domain name:" << QHostInfo::localDomainName();
-}
-
-tst_QHostInfo::tst_QHostInfo()
-{
- Q_SET_DEFAULT_IAP
-}
-
-tst_QHostInfo::~tst_QHostInfo()
-{
-}
-
-void tst_QHostInfo::initTestCase()
-{
-#ifndef QT_NO_BEARERMANAGEMENT
- //start the default network
- netConfMan = new QNetworkConfigurationManager(this);
- networkConfiguration = netConfMan->defaultConfiguration();
- networkSession.reset(new QNetworkSession(networkConfiguration));
- if (!networkSession->isOpen()) {
- networkSession->open();
- QVERIFY(networkSession->waitForOpened(30000));
- }
-#endif
-
-#ifdef Q_OS_SYMBIAN
- ipv6Available = true;
- ipv6LookupsAvailable = true;
-#else
- ipv6Available = false;
- ipv6LookupsAvailable = false;
-
- QTcpServer server;
- if (server.listen(QHostAddress("::1"))) {
- // We have IPv6 support
- ipv6Available = true;
- }
-
-#if !defined(QT_NO_GETADDRINFO)
- // check if the system getaddrinfo can do IPv6 lookups
- struct addrinfo hint, *result = 0;
- memset(&hint, 0, sizeof hint);
- hint.ai_family = AF_UNSPEC;
-# ifdef AI_ADDRCONFIG
- hint.ai_flags = AI_ADDRCONFIG;
-# endif
-
- int res = getaddrinfo("::1", "80", &hint, &result);
- if (res == 0) {
- // this test worked
- freeaddrinfo(result);
- res = getaddrinfo("ipv6-test.dev.troll.no", "80", &hint, &result);
- if (res == 0 && result != 0 && result->ai_family != AF_INET) {
- freeaddrinfo(result);
- ipv6LookupsAvailable = true;
- }
- }
-#endif
-#endif
-
- // run each testcase with and without test enabled
- QTest::addColumn<bool>("cache");
- QTest::newRow("WithCache") << true;
- QTest::newRow("WithoutCache") << false;
-}
-
-void tst_QHostInfo::init()
-{
- // delete the cache so inidividual testcase results are independent from each other
- qt_qhostinfo_clear_cache();
-
- QFETCH_GLOBAL(bool, cache);
- qt_qhostinfo_enable_cache(cache);
-}
-
-void tst_QHostInfo::cleanup()
-{
-}
-
-void tst_QHostInfo::lookupIPv4_data()
-{
- QTest::addColumn<QString>("hostname");
- QTest::addColumn<QString>("addresses");
- QTest::addColumn<int>("err");
-
- // Test server lookup
- QTest::newRow("lookup_01") << QtNetworkSettings::serverName() << QtNetworkSettings::serverIP().toString() << int(QHostInfo::NoError);
- QTest::newRow("empty") << "" << "" << int(QHostInfo::HostNotFound);
-
- QTest::newRow("single_ip4") << "lupinella.troll.no" << lupinellaIp << int(QHostInfo::NoError);
- QTest::newRow("multiple_ip4") << "multi.dev.troll.no" << "1.2.3.4 1.2.3.5 10.3.3.31" << int(QHostInfo::NoError);
- QTest::newRow("literal_ip4") << lupinellaIp << lupinellaIp << int(QHostInfo::NoError);
-
- QTest::newRow("notfound") << "this-name-does-not-exist-hopefully." << "" << int(QHostInfo::HostNotFound);
-
- QTest::newRow("idn-ace") << "xn--alqualond-34a.troll.no" << "10.3.3.55" << int(QHostInfo::NoError);
- QTest::newRow("idn-unicode") << QString::fromLatin1("alqualond\353.troll.no") << "10.3.3.55" << int(QHostInfo::NoError);
-}
-
-void tst_QHostInfo::lookupIPv4()
-{
- QFETCH(QString, hostname);
- QFETCH(int, err);
- QFETCH(QString, addresses);
-
- lookupDone = false;
- QHostInfo::lookupHost(hostname, this, SLOT(resultsReady(const QHostInfo&)));
-
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(lookupDone);
-
- if ((int)lookupResults.error() != (int)err) {
- qWarning() << hostname << "=>" << lookupResults.errorString();
- }
- QCOMPARE((int)lookupResults.error(), (int)err);
-
- QStringList tmp;
- for (int i = 0; i < lookupResults.addresses().count(); ++i)
- tmp.append(lookupResults.addresses().at(i).toString());
- tmp.sort();
-
- QStringList expected = addresses.split(' ');
- expected.sort();
-
- QCOMPARE(tmp.join(" "), expected.join(" "));
-}
-
-void tst_QHostInfo::lookupIPv6_data()
-{
- QTest::addColumn<QString>("hostname");
- QTest::addColumn<QString>("addresses");
- QTest::addColumn<int>("err");
-
- QTest::newRow("ipv6-net") << "www.ipv6-net.org" << "62.93.217.177 2001:618:1401::4" << int(QHostInfo::NoError);
- QTest::newRow("ipv6-test") << "ipv6-test.dev.troll.no" << "2001:638:a00:2::2" << int(QHostInfo::NoError);
- QTest::newRow("dns6-test") << "dns6-test-dev.troll.no" << "2001:470:1f01:115::10" << int(QHostInfo::NoError);
- QTest::newRow("multi-dns6") << "multi-dns6-test-dev.troll.no" << "2001:470:1f01:115::11 2001:470:1f01:115::12" << int(QHostInfo::NoError);
- QTest::newRow("dns46-test") << "dns46-test-dev.troll.no" << "10.3.4.90 2001:470:1f01:115::13" << int(QHostInfo::NoError);
-
- // avoid using real IPv6 addresses here because this will do a DNS query
- // real addresses are between 2000:: and 3fff:ffff:ffff:ffff:ffff:ffff:ffff
- QTest::newRow("literal_ip6") << "f001:6b0:1:ea:202:a5ff:fecd:13a6" << "f001:6b0:1:ea:202:a5ff:fecd:13a6" << int(QHostInfo::NoError);
- QTest::newRow("literal_shortip6") << "f001:618:1401::4" << "f001:618:1401::4" << int(QHostInfo::NoError);
-}
-
-void tst_QHostInfo::lookupIPv6()
-{
- QFETCH(QString, hostname);
- QFETCH(int, err);
- QFETCH(QString, addresses);
-
- if (!ipv6LookupsAvailable)
- QSKIP("This platform does not support IPv6 lookups", SkipAll);
-
- lookupDone = false;
- QHostInfo::lookupHost(hostname, this, SLOT(resultsReady(const QHostInfo&)));
-
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(lookupDone);
-
- QCOMPARE((int)lookupResults.error(), (int)err);
-
- QStringList tmp;
- for (int i = 0; i < lookupResults.addresses().count(); ++i)
- tmp.append(lookupResults.addresses().at(i).toString());
- tmp.sort();
-
- QStringList expected = addresses.split(' ');
- expected.sort();
-
- QCOMPARE(tmp.join(" ").toLower(), expected.join(" ").toLower());
-}
-
-void tst_QHostInfo::reverseLookup_data()
-{
- QTest::addColumn<QString>("address");
- QTest::addColumn<QStringList>("hostNames");
- QTest::addColumn<int>("err");
-
- QTest::newRow("trolltech.com") << QString("62.70.27.69") << QStringList(QString("diverse.troll.no")) << 0;
-
- // ### Use internal DNS instead. Discussed with Andreas.
- //QTest::newRow("classical.hexago.com") << QString("2001:5c0:0:2::24") << QStringList(QString("classical.hexago.com")) << 0;
- QTest::newRow("gitorious.org") << QString("87.238.52.168") << QStringList(QString("gitorious.org")) << 0;
- QTest::newRow("bogus-name") << QString("1::2::3::4") << QStringList() << 1;
-}
-
-void tst_QHostInfo::reverseLookup()
-{
- QFETCH(QString, address);
- QFETCH(QStringList, hostNames);
- QFETCH(int, err);
-
- if (!ipv6LookupsAvailable && hostNames.contains("classical.hexago.com")) {
- QSKIP("IPv6 lookups are not supported on this platform", SkipSingle);
- }
-#if defined(Q_OS_HPUX) && defined(__ia64)
- if (hostNames.contains("classical.hexago.com"))
- QSKIP("HP-UX 11i does not support IPv6 reverse lookups.", SkipSingle);
-#endif
-
- QHostInfo info = QHostInfo::fromName(address);
-
- if (err == 0) {
- QVERIFY(hostNames.contains(info.hostName()));
- QCOMPARE(info.addresses().first(), QHostAddress(address));
- } else {
- QCOMPARE(info.hostName(), address);
- QCOMPARE(info.error(), QHostInfo::HostNotFound);
- }
-
-}
-
-void tst_QHostInfo::blockingLookup_data()
-{
- lookupIPv4_data();
- if (ipv6LookupsAvailable)
- lookupIPv6_data();
-}
-
-void tst_QHostInfo::blockingLookup()
-{
- QFETCH(QString, hostname);
- QFETCH(int, err);
- QFETCH(QString, addresses);
-
- QHostInfo hostInfo = QHostInfo::fromName(hostname);
- QStringList tmp;
- for (int i = 0; i < hostInfo.addresses().count(); ++i)
- tmp.append(hostInfo.addresses().at(i).toString());
- tmp.sort();
-
- if ((int)hostInfo.error() != (int)err) {
- qWarning() << hostname << "=>" << lookupResults.errorString();
- }
- QCOMPARE((int)hostInfo.error(), (int)err);
-
- QStringList expected = addresses.split(' ');
- expected.sort();
-
- QCOMPARE(tmp.join(" ").toUpper(), expected.join(" ").toUpper());
-}
-
-void tst_QHostInfo::raceCondition()
-{
- for (int i = 0; i < 1000; ++i) {
- QTcpSocket socket;
- socket.connectToHost("notavalidname.troll.no", 80);
- }
-}
-
-class LookupThread : public QThread
-{
-protected:
- inline void run()
- {
- QHostInfo info = QHostInfo::fromName("qt.nokia.com");
- QCOMPARE(info.error(), QHostInfo::NoError);
- QVERIFY(info.addresses().count() > 0);
- QCOMPARE(info.addresses().at(0).toString(), QString("87.238.50.178"));
- }
-};
-
-void tst_QHostInfo::threadSafety()
-{
- const int nattempts = 5;
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- const int runs = 10;
-#else
- const int runs = 100;
-#endif
- LookupThread thr[nattempts];
- for (int j = 0; j < runs; ++j) {
- for (int i = 0; i < nattempts; ++i)
- thr[i].start();
- for (int k = nattempts - 1; k >= 0; --k)
- thr[k].wait();
- }
-}
-
-class LookupReceiver : public QObject
-{
- Q_OBJECT
-public slots:
- void start();
- void resultsReady(const QHostInfo&);
-public:
- QHostInfo result;
- int numrequests;
-};
-
-void LookupReceiver::start()
-{
- for (int i=0;i<numrequests;i++)
- QHostInfo::lookupHost(QString("qt.nokia.com"), this, SLOT(resultsReady(const QHostInfo&)));
-}
-
-void LookupReceiver::resultsReady(const QHostInfo &info)
-{
- result = info;
- numrequests--;
- if (numrequests == 0 || info.error() != QHostInfo::NoError)
- QThread::currentThread()->quit();
-}
-
-void tst_QHostInfo::threadSafetyAsynchronousAPI()
-{
- const int nattempts = 10;
- const int lookupsperthread = 10;
- QList<QThread*> threads;
- QList<LookupReceiver*> receivers;
- for (int i = 0; i < nattempts; ++i) {
- QThread* thread = new QThread;
- LookupReceiver* receiver = new LookupReceiver;
- receiver->numrequests = lookupsperthread;
- receivers.append(receiver);
- receiver->moveToThread(thread);
- connect(thread, SIGNAL(started()), receiver, SLOT(start()));
- thread->start();
- threads.append(thread);
- }
- for (int k = threads.count() - 1; k >= 0; --k)
- QVERIFY(threads.at(k)->wait(60000));
- foreach (LookupReceiver* receiver, receivers) {
- QCOMPARE(receiver->result.error(), QHostInfo::NoError);
- QCOMPARE(receiver->result.addresses().at(0).toString(), QString("87.238.50.178"));
- QCOMPARE(receiver->numrequests, 0);
- }
-}
-
-// this test is for the multi-threaded QHostInfo rewrite. It is about getting results at all,
-// not about getting correct IPs
-void tst_QHostInfo::multipleSameLookups()
-{
- const int COUNT = 10;
- lookupsDoneCounter = 0;
-
- for (int i = 0; i < COUNT; i++)
- QHostInfo::lookupHost("localhost", this, SLOT(resultsReady(const QHostInfo)));
-
- QElapsedTimer timer;
- timer.start();
- while (timer.elapsed() < 10000 && lookupsDoneCounter < COUNT) {
- QTestEventLoop::instance().enterLoop(2);
- }
- QCOMPARE(lookupsDoneCounter, COUNT);
-}
-
-// this test is for the multi-threaded QHostInfo rewrite. It is about getting results at all,
-// not about getting correct IPs
-void tst_QHostInfo::multipleDifferentLookups_data()
-{
- QTest::addColumn<int>("repeats");
- QTest::newRow("1") << 1;
- QTest::newRow("2") << 2;
- QTest::newRow("5") << 5;
- QTest::newRow("10") << 10;
-}
-
-void tst_QHostInfo::multipleDifferentLookups()
-{
- QStringList hostnameList;
- hostnameList << "www.ovi.com" << "www.nokia.com" << "qt.nokia.com" << "www.trolltech.com" << "troll.no"
- << "www.qtcentre.org" << "forum.nokia.com" << "www.nokia.com" << "wiki.forum.nokia.com"
- << "www.nokia.com" << "nokia.de" << "127.0.0.1" << "----";
-
- QFETCH(int, repeats);
- const int COUNT = hostnameList.size();
- lookupsDoneCounter = 0;
-
- for (int i = 0; i < hostnameList.size(); i++)
- for (int j = 0; j < repeats; ++j)
- QHostInfo::lookupHost(hostnameList.at(i), this, SLOT(resultsReady(const QHostInfo)));
-
- QElapsedTimer timer;
- timer.start();
- while (timer.elapsed() < 60000 && lookupsDoneCounter < repeats*COUNT) {
- QTestEventLoop::instance().enterLoop(2);
- //qDebug() << "t:" << timer.elapsed();
- }
- QCOMPARE(lookupsDoneCounter, repeats*COUNT);
-}
-
-void tst_QHostInfo::cache()
-{
- QFETCH_GLOBAL(bool, cache);
- if (!cache)
- return; // test makes only sense when cache enabled
-
- // reset slot counter
- lookupsDoneCounter = 0;
-
- // lookup once, wait in event loop, result should not come directly.
- bool valid = true;
- int id = -1;
- QHostInfo result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid, &id);
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(valid == false);
- QVERIFY(result.addresses().isEmpty());
-
- // loopkup second time, result should come directly
- valid = false;
- result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid, &id);
- QVERIFY(valid == true);
- QVERIFY(!result.addresses().isEmpty());
-
- // clear the cache
- qt_qhostinfo_clear_cache();
-
- // lookup third time, result should not come directly.
- valid = true;
- result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid, &id);
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(valid == false);
- QVERIFY(result.addresses().isEmpty());
-
- // the slot should have been called 2 times.
- QCOMPARE(lookupsDoneCounter, 2);
-}
-
-void tst_QHostInfo::resultsReady(const QHostInfo &hi)
-{
- lookupDone = true;
- lookupResults = hi;
- lookupsDoneCounter++;
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QHostInfo::abortHostLookup()
-{
- //reset counter
- lookupsDoneCounter = 0;
- bool valid = false;
- int id = -1;
- QHostInfo result = qt_qhostinfo_lookup("qt.nokia.com", this, SLOT(resultsReady(QHostInfo)), &valid, &id);
- QVERIFY(!valid);
- //it is assumed that the DNS request/response in the backend is slower than it takes to call abort
- QHostInfo::abortHostLookup(id);
- QTestEventLoop::instance().enterLoop(5);
- QCOMPARE(lookupsDoneCounter, 0);
-}
-
-class LookupAborter : public QObject
-{
- Q_OBJECT
-public slots:
- void abort()
- {
- QHostInfo::abortHostLookup(id);
- QThread::currentThread()->quit();
- }
-public:
- int id;
-};
-
-void tst_QHostInfo::abortHostLookupInDifferentThread()
-{
- //reset counter
- lookupsDoneCounter = 0;
- bool valid = false;
- int id = -1;
- QHostInfo result = qt_qhostinfo_lookup("qt.nokia.com", this, SLOT(resultsReady(QHostInfo)), &valid, &id);
- QVERIFY(!valid);
- QThread thread;
- LookupAborter aborter;
- aborter.id = id;
- aborter.moveToThread(&thread);
- connect(&thread, SIGNAL(started()), &aborter, SLOT(abort()));
- //it is assumed that the DNS request/response in the backend is slower than it takes to schedule the thread and call abort
- thread.start();
- QVERIFY(thread.wait(5000));
- QTestEventLoop::instance().enterLoop(5);
- QCOMPARE(lookupsDoneCounter, 0);
-}
-
-QTEST_MAIN(tst_QHostInfo)
-#include "tst_qhostinfo.moc"
diff --git a/tests/auto/qhttp/tst_qhttp.cpp b/tests/auto/qhttp/tst_qhttp.cpp
deleted file mode 100644
index 2af81958d1..0000000000
--- a/tests/auto/qhttp/tst_qhttp.cpp
+++ /dev/null
@@ -1,1576 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qbuffer.h>
-#include <qcoreapplication.h>
-#include <qfile.h>
-#include <qhostinfo.h>
-#include <qhttp.h>
-#include <qlist.h>
-#include <qpointer.h>
-#include <qtcpsocket.h>
-#include <qtcpserver.h>
-#include <qauthenticator.h>
-#include <QNetworkProxy>
-#ifndef QT_NO_OPENSSL
-# include <qsslsocket.h>
-#endif
-
-#include "../network-settings.h"
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-#ifdef Q_OS_SYMBIAN
-// In Symbian OS test data is located in applications private dir
-// And underlying Open C have application private dir in default search path
-#define SRCDIR ""
-#endif
-
-Q_DECLARE_METATYPE(QHttpResponseHeader)
-
-class tst_QHttp : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QHttp();
- virtual ~tst_QHttp();
-
-
-public slots:
- void initTestCase_data();
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-private slots:
- void constructing();
- void invalidRequests();
- void get_data();
- void get();
- void head_data();
- void head();
- void post_data();
- void post();
- void request_data();
- void request();
- void authorization_data();
- void authorization();
- void proxy_data();
- void proxy();
- void proxy2();
- void proxy3();
- void postAuthNtlm();
- void proxyAndSsl();
- void cachingProxyAndSsl();
- void reconnect();
- void setSocket();
- void unexpectedRemoteClose();
- void pctEncodedPath();
- void caseInsensitiveKeys();
- void emptyBodyInReply();
- void abortInReadyRead();
- void abortInResponseHeaderReceived();
- void nestedEventLoop();
- void connectionClose();
-
-protected slots:
- void stateChanged( int );
- void responseHeaderReceived( const QHttpResponseHeader & );
- void readyRead( const QHttpResponseHeader& );
- void dataSendProgress( int, int );
- void dataReadProgress( int , int );
-
- void requestStarted( int );
- void requestFinished( int, bool );
- void done( bool );
-
- void reconnect_state(int state);
- void proxy2_slot();
- void nestedEventLoop_slot(int id);
-
- void abortSender();
- void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth);
-
-private:
- QHttp *newHttp(bool withAuth = false);
- void addRequest( QHttpRequestHeader, int );
- bool headerAreEqual( const QHttpHeader&, const QHttpHeader& );
-
- QHttp *http;
-
- struct RequestResult
- {
- QHttpRequestHeader req;
- QHttpResponseHeader resp;
- int success;
- };
- QMap< int, RequestResult > resultMap;
- typedef QMap<int,RequestResult>::Iterator ResMapIt;
- QList<int> ids; // helper to make sure that all expected signals are emitted
-
- int current_id;
- int cur_state;
- int done_success;
-
- QByteArray readyRead_ba;
-
- int bytesTotalSend;
- int bytesDoneSend;
- int bytesTotalRead;
- int bytesDoneRead;
-
- int getId;
- int headId;
- int postId;
-
- int reconnect_state_connect_count;
-
- bool connectionWithAuth;
- bool proxyAuthCalled;
-};
-
-class ClosingServer: public QTcpServer
-{
- Q_OBJECT
-public:
- ClosingServer()
- {
- connect(this, SIGNAL(newConnection()), SLOT(handleConnection()));
- listen();
- }
-
-public slots:
- void handleConnection()
- {
- delete nextPendingConnection();
- }
-};
-
-//#define DUMP_SIGNALS
-
-const int bytesTotal_init = -10;
-const int bytesDone_init = -10;
-
-tst_QHttp::tst_QHttp()
-{
- Q_SET_DEFAULT_IAP
-}
-
-tst_QHttp::~tst_QHttp()
-{
-}
-
-void tst_QHttp::initTestCase_data()
-{
- QTest::addColumn<bool>("setProxy");
- QTest::addColumn<int>("proxyType");
-
- QTest::newRow("WithoutProxy") << false << 0;
- QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy);
-}
-
-void tst_QHttp::initTestCase()
-{
-}
-
-void tst_QHttp::cleanupTestCase()
-{
-}
-
-void tst_QHttp::init()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
- }
- }
-
- http = 0;
-
- resultMap.clear();
- ids.clear();
-
- current_id = 0;
- cur_state = QHttp::Unconnected;
- done_success = -1;
-
- readyRead_ba = QByteArray();
-
- getId = -1;
- headId = -1;
- postId = -1;
-}
-
-void tst_QHttp::cleanup()
-{
- delete http;
- http = 0;
-
- QCoreApplication::processEvents();
-
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
- }
-}
-
-void tst_QHttp::constructing()
-{
- //QHeader
- {
- QHttpRequestHeader header;
- header.addValue("key1", "val1");
- header.addValue("key2", "val2");
- header.addValue("key1", "val3");
- QCOMPARE(header.values().size(), 3);
- QCOMPARE(header.allValues("key1").size(), 2);
- QVERIFY(header.hasKey("key2"));
- QCOMPARE(header.keys().count(), 2);
-
- }
-
- {
- QHttpResponseHeader header(200);
- }
-}
-
-void tst_QHttp::invalidRequests()
-{
- QHttp http;
- http.setHost("localhost"); // we will not actually connect
-
- QTest::ignoreMessage(QtWarningMsg, "QHttp: empty path requested is invalid -- using '/'");
- http.get(QString());
-
- QTest::ignoreMessage(QtWarningMsg, "QHttp: empty path requested is invalid -- using '/'");
- http.head(QString());
-
- QTest::ignoreMessage(QtWarningMsg, "QHttp: empty path requested is invalid -- using '/'");
- http.post(QString(), QByteArray());
-
- QTest::ignoreMessage(QtWarningMsg, "QHttp: empty path requested is invalid -- using '/'");
- http.request(QHttpRequestHeader("PROPFIND", QString()));
-}
-
-void tst_QHttp::get_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<QString>("path");
- QTest::addColumn<int>("success");
- QTest::addColumn<int>("statusCode");
- QTest::addColumn<QByteArray>("res");
- QTest::addColumn<bool>("useIODevice");
-
- // ### move this into external testdata
- QFile file( SRCDIR "rfc3252.txt" );
- QVERIFY( file.open( QIODevice::ReadOnly ) );
- QByteArray rfc3252 = file.readAll();
- file.close();
-
- file.setFileName( SRCDIR "trolltech" );
- QVERIFY( file.open( QIODevice::ReadOnly ) );
- QByteArray trolltech = file.readAll();
- file.close();
-
- // test the two get() modes in one routine
- for ( int i=0; i<2; i++ ) {
- QTest::newRow(QString("path_01_%1").arg(i).toLatin1()) << QtNetworkSettings::serverName() << 80u
- << QString("/qtest/rfc3252.txt") << 1 << 200 << rfc3252 << (bool)(i==1);
- QTest::newRow( QString("path_02_%1").arg(i).toLatin1() ) << QString("www.ietf.org") << 80u
- << QString("/rfc/rfc3252.txt") << 1 << 200 << rfc3252 << (bool)(i==1);
-
- QTest::newRow( QString("uri_01_%1").arg(i).toLatin1() ) << QtNetworkSettings::serverName() << 80u
- << QString("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt") << 1 << 200 << rfc3252 << (bool)(i==1);
- QTest::newRow( QString("uri_02_%1").arg(i).toLatin1() ) << "www.ietf.org" << 80u
- << QString("http://www.ietf.org/rfc/rfc3252.txt") << 1 << 200 << rfc3252 << (bool)(i==1);
-
- QTest::newRow( QString("fail_01_%1").arg(i).toLatin1() ) << QString("this-host-will-not-exist.") << 80u
- << QString("/qtest/rfc3252.txt") << 0 << 0 << QByteArray() << (bool)(i==1);
-
- QTest::newRow( QString("failprot_01_%1").arg(i).toLatin1() ) << QtNetworkSettings::serverName() << 80u
- << QString("/t") << 1 << 404 << QByteArray() << (bool)(i==1);
- QTest::newRow( QString("failprot_02_%1").arg(i).toLatin1() ) << QtNetworkSettings::serverName() << 80u
- << QString("qtest/rfc3252.txt") << 1 << 400 << QByteArray() << (bool)(i==1);
-
- // qt.nokia.com/doc uses transfer-encoding=chunked
- /* qt.nokia.com/doc no longer seams to be using chuncked encodig.
- QTest::newRow( QString("chunked_01_%1").arg(i).toLatin1() ) << QString("test.troll.no") << 80u
- << QString("/") << 1 << 200 << trolltech << (bool)(i==1);
- */
- QTest::newRow( QString("chunked_02_%1").arg(i).toLatin1() ) << QtNetworkSettings::serverName() << 80u
- << QString("/qtest/cgi-bin/rfc.cgi") << 1 << 200 << rfc3252 << (bool)(i==1);
- }
-}
-
-void tst_QHttp::get()
-{
- // for the overload that takes a QIODevice
- QByteArray buf_ba;
- QBuffer buf( &buf_ba );
-
- QFETCH( QString, host );
- QFETCH( uint, port );
- QFETCH( QString, path );
- QFETCH( bool, useIODevice );
-
- http = newHttp();
- QCOMPARE( http->currentId(), 0 );
- QCOMPARE( (int)http->state(), (int)QHttp::Unconnected );
-
- addRequest( QHttpRequestHeader(), http->setHost( host, port ) );
- if ( useIODevice ) {
- buf.open( QIODevice::WriteOnly );
- getId = http->get( path, &buf );
- } else {
- getId = http->get( path );
- }
- addRequest( QHttpRequestHeader(), getId );
-
- QTestEventLoop::instance().enterLoop( 50 );
-
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt res = resultMap.find( getId );
- QVERIFY( res != resultMap.end() );
- if ( res.value().success!=1 && host=="www.ietf.org" ) {
- // The nightly tests fail from time to time. In order to make them more
- // stable, add some debug output that might help locate the problem (I
- // can't reproduce the problem in the non-nightly builds).
- qDebug( "Error %d: %s", http->error(), http->errorString().toLatin1().constData() );
- }
- QTEST( res.value().success, "success" );
- if ( res.value().success ) {
- QTEST( res.value().resp.statusCode(), "statusCode" );
-
- QFETCH( QByteArray, res );
- if ( res.count() > 0 ) {
- if ( useIODevice ) {
- QCOMPARE(buf_ba, res);
- if ( bytesDoneRead != bytesDone_init )
- QVERIFY( (int)buf_ba.size() == bytesDoneRead );
- } else {
- QCOMPARE(readyRead_ba, res);
- if ( bytesDoneRead != bytesDone_init )
- QVERIFY( (int)readyRead_ba.size() == bytesDoneRead );
- }
- }
- QVERIFY( bytesTotalRead != bytesTotal_init );
- if ( bytesTotalRead > 0 )
- QVERIFY( bytesDoneRead == bytesTotalRead );
- } else {
- QVERIFY( !res.value().resp.isValid() );
- }
-}
-
-void tst_QHttp::head_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<uint>("port");
- QTest::addColumn<QString>("path");
- QTest::addColumn<int>("success");
- QTest::addColumn<int>("statusCode");
- QTest::addColumn<uint>("contentLength");
-
- QTest::newRow( "path_01" ) << QtNetworkSettings::serverName() << 80u
- << QString("/qtest/rfc3252.txt") << 1 << 200 << 25962u;
-
- QTest::newRow( "path_02" ) << QString("www.ietf.org") << 80u
- << QString("/rfc/rfc3252.txt") << 1 << 200 << 25962u;
-
- QTest::newRow( "uri_01" ) << QtNetworkSettings::serverName() << 80u
- << QString("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt") << 1 << 200 << 25962u;
-
- QTest::newRow( "uri_02" ) << QString("www.ietf.org") << 80u
- << QString("http://www.ietf.org/rfc/rfc3252.txt") << 1 << 200 << 25962u;
-
- QTest::newRow( "fail_01" ) << QString("this-host-will-not-exist.") << 80u
- << QString("/qtest/rfc3252.txt") << 0 << 0 << 0u;
-
- QTest::newRow( "failprot_01" ) << QtNetworkSettings::serverName() << 80u
- << QString("/t") << 1 << 404 << 0u;
-
- QTest::newRow( "failprot_02" ) << QtNetworkSettings::serverName() << 80u
- << QString("qtest/rfc3252.txt") << 1 << 400 << 0u;
-
- /* qt.nokia.com/doc no longer seams to be using chuncked encodig.
- QTest::newRow( "chunked_01" ) << QString("qt.nokia.com/doc") << 80u
- << QString("/index.html") << 1 << 200 << 0u;
- */
- QTest::newRow( "chunked_02" ) << QtNetworkSettings::serverName() << 80u
- << QString("/qtest/cgi-bin/rfc.cgi") << 1 << 200 << 0u;
-}
-
-void tst_QHttp::head()
-{
- QFETCH( QString, host );
- QFETCH( uint, port );
- QFETCH( QString, path );
-
- http = newHttp();
- QCOMPARE( http->currentId(), 0 );
- QCOMPARE( (int)http->state(), (int)QHttp::Unconnected );
-
- addRequest( QHttpRequestHeader(), http->setHost( host, port ) );
- headId = http->head( path );
- addRequest( QHttpRequestHeader(), headId );
-
- QTestEventLoop::instance().enterLoop( 30 );
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt res = resultMap.find( headId );
- QVERIFY( res != resultMap.end() );
- if ( res.value().success!=1 && host=="www.ietf.org" ) {
- // The nightly tests fail from time to time. In order to make them more
- // stable, add some debug output that might help locate the problem (I
- // can't reproduce the problem in the non-nightly builds).
- qDebug( "Error %d: %s", http->error(), http->errorString().toLatin1().constData() );
- }
- QTEST( res.value().success, "success" );
- if ( res.value().success ) {
- QTEST( res.value().resp.statusCode(), "statusCode" );
- QTEST( res.value().resp.contentLength(), "contentLength" );
-
- QCOMPARE( (uint)readyRead_ba.size(), 0u );
- QVERIFY( bytesTotalRead == bytesTotal_init );
- QVERIFY( bytesDoneRead == bytesDone_init );
- } else {
- QVERIFY( !res.value().resp.isValid() );
- }
-}
-
-void tst_QHttp::post_data()
-{
- QTest::addColumn<QString>("source");
- QTest::addColumn<bool>("useIODevice");
- QTest::addColumn<bool>("useProxy");
- QTest::addColumn<QString>("host");
- QTest::addColumn<int>("port");
- QTest::addColumn<bool>("ssl");
- QTest::addColumn<QString>("path");
- QTest::addColumn<QByteArray>("result");
-
- QByteArray md5sum;
- md5sum = "d41d8cd98f00b204e9800998ecf8427e";
- QTest::newRow("empty-data")
- << QString() << false << false
- << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
- QTest::newRow("empty-device")
- << QString() << true << false
- << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
- QTest::newRow("proxy-empty-data")
- << QString() << false << true
- << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
-
- md5sum = "b3e32ac459b99d3f59318f3ac31e4bee";
- QTest::newRow("data") << "rfc3252.txt" << false << false
- << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi"
- << md5sum;
- QTest::newRow("device") << "rfc3252.txt" << true << false
- << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi"
- << md5sum;
- QTest::newRow("proxy-data") << "rfc3252.txt" << false << true
- << QtNetworkSettings::serverName() << 80 << false << "/qtest/cgi-bin/md5sum.cgi"
- << md5sum;
-
-#ifndef QT_NO_OPENSSL
- md5sum = "d41d8cd98f00b204e9800998ecf8427e";
- QTest::newRow("empty-data-ssl")
- << QString() << false << false
- << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
- QTest::newRow("empty-device-ssl")
- << QString() << true << false
- << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
- QTest::newRow("proxy-empty-data-ssl")
- << QString() << false << true
- << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi" << md5sum;
- md5sum = "b3e32ac459b99d3f59318f3ac31e4bee";
- QTest::newRow("data-ssl") << "rfc3252.txt" << false << false
- << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi"
- << md5sum;
- QTest::newRow("device-ssl") << "rfc3252.txt" << true << false
- << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi"
- << md5sum;
- QTest::newRow("proxy-data-ssl") << "rfc3252.txt" << false << true
- << QtNetworkSettings::serverName() << 443 << true << "/qtest/cgi-bin/md5sum.cgi"
- << md5sum;
-#endif
-
- // the following test won't work. See task 185996
-/*
- QTest::newRow("proxy-device") << "rfc3252.txt" << true << true
- << QtNetworkSettings::serverName() << 80 << "/qtest/cgi-bin/md5sum.cgi"
- << md5sum;
-*/
-}
-
-void tst_QHttp::post()
-{
- QFETCH(QString, source);
- QFETCH(bool, useIODevice);
- QFETCH(bool, useProxy);
- QFETCH(QString, host);
- QFETCH(int, port);
- QFETCH(bool, ssl);
- QFETCH(QString, path);
-
- http = newHttp(useProxy);
-#ifndef QT_NO_OPENSSL
- QObject::connect(http, SIGNAL(sslErrors(const QList<QSslError> &)),
- http, SLOT(ignoreSslErrors()));
-#endif
- QCOMPARE(http->currentId(), 0);
- QCOMPARE((int)http->state(), (int)QHttp::Unconnected);
- if (useProxy)
- addRequest(QHttpRequestHeader(), http->setProxy(QtNetworkSettings::serverName(), 3129));
- addRequest(QHttpRequestHeader(), http->setHost(host, (ssl ? QHttp::ConnectionModeHttps : QHttp::ConnectionModeHttp), port));
-
- // add the POST request
- QFile file(SRCDIR + source);
- QBuffer emptyBuffer;
- QIODevice *dev;
- if (!source.isEmpty()) {
- QVERIFY(file.open(QIODevice::ReadOnly));
- dev = &file;
- } else {
- emptyBuffer.open(QIODevice::ReadOnly);
- dev = &emptyBuffer;
- }
-
- if (useIODevice)
- postId = http->post(path, dev);
- else
- postId = http->post(path, dev->readAll());
- addRequest(QHttpRequestHeader(), postId);
-
- // run request
- connect(http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- QTestEventLoop::instance().enterLoop( 30 );
-
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt res = resultMap.find(postId);
- QVERIFY(res != resultMap.end());
- QVERIFY(res.value().success);
- QCOMPARE(res.value().resp.statusCode(), 200);
- QTEST(readyRead_ba.trimmed(), "result");
-}
-
-void tst_QHttp::request_data()
-{
- QTest::addColumn<QString>("source");
- QTest::addColumn<bool>("useIODevice");
- QTest::addColumn<bool>("useProxy");
- QTest::addColumn<QString>("host");
- QTest::addColumn<int>("port");
- QTest::addColumn<QString>("method");
- QTest::addColumn<QString>("path");
- QTest::addColumn<QByteArray>("result");
-
- QFile source(SRCDIR "rfc3252.txt");
- if (!source.open(QIODevice::ReadOnly))
- return;
-
- QByteArray contents = source.readAll();
- QByteArray md5sum = QCryptographicHash::hash(contents, QCryptographicHash::Md5).toHex() + '\n';
- QByteArray emptyMd5sum = "d41d8cd98f00b204e9800998ecf8427e\n";
-
- QTest::newRow("head") << QString() << false << false << QtNetworkSettings::serverName() << 80
- << "HEAD" << "/qtest/rfc3252.txt"
- << QByteArray();
- QTest::newRow("get") << QString() << false << false << QtNetworkSettings::serverName() << 80
- << "GET" << "/qtest/rfc3252.txt"
- << contents;
- QTest::newRow("post-empty-data") << QString() << false << false
- << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
- << emptyMd5sum;
- QTest::newRow("post-empty-device") << QString() << true << false
- << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
- << emptyMd5sum;
- QTest::newRow("post-data") << "rfc3252.txt" << false << false
- << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
- << md5sum;
- QTest::newRow("post-device") << "rfc3252.txt" << true << false
- << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
- << md5sum;
-
- QTest::newRow("proxy-head") << QString() << false << true << QtNetworkSettings::serverName() << 80
- << "HEAD" << "/qtest/rfc3252.txt"
- << QByteArray();
- QTest::newRow("proxy-get") << QString() << false << true << QtNetworkSettings::serverName() << 80
- << "GET" << "/qtest/rfc3252.txt"
- << contents;
- QTest::newRow("proxy-post-empty-data") << QString() << false << true
- << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
- << emptyMd5sum;
- QTest::newRow("proxy-post-data") << "rfc3252.txt" << false << true
- << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
- << md5sum;
- // the following test won't work. See task 185996
-/*
- QTest::newRow("proxy-post-device") << "rfc3252.txt" << true << true
- << QtNetworkSettings::serverName() << 80 << "POST" << "/qtest/cgi-bin/md5sum.cgi"
- << md5sum;
-*/
-}
-
-void tst_QHttp::request()
-{
- QFETCH(QString, source);
- QFETCH(bool, useIODevice);
- QFETCH(bool, useProxy);
- QFETCH(QString, host);
- QFETCH(int, port);
- QFETCH(QString, method);
- QFETCH(QString, path);
-
- http = newHttp(useProxy);
- QCOMPARE(http->currentId(), 0);
- QCOMPARE((int)http->state(), (int)QHttp::Unconnected);
- if (useProxy)
- addRequest(QHttpRequestHeader(), http->setProxy(QtNetworkSettings::serverName(), 3129));
- addRequest(QHttpRequestHeader(), http->setHost(host, port));
-
- QFile file(SRCDIR + source);
- QBuffer emptyBuffer;
- QIODevice *dev;
- if (!source.isEmpty()) {
- QVERIFY(file.open(QIODevice::ReadOnly));
- dev = &file;
- } else {
- emptyBuffer.open(QIODevice::ReadOnly);
- dev = &emptyBuffer;
- }
-
- // prepare the request
- QHttpRequestHeader request;
- request.setRequest(method, path, 1,1);
- request.addValue("Host", host);
- int *theId;
-
- if (method == "POST")
- theId = &postId;
- else if (method == "GET")
- theId = &getId;
- else if (method == "HEAD")
- theId = &headId;
- else
- QFAIL("You're lazy! Please implement your test!");
-
- // now send the request
- if (useIODevice)
- *theId = http->request(request, dev);
- else
- *theId = http->request(request, dev->readAll());
- addRequest(QHttpRequestHeader(), *theId);
-
- // run request
- connect(http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- QTestEventLoop::instance().enterLoop( 30 );
-
- if ( QTestEventLoop::instance().timeout() )
- QFAIL( "Network operation timed out" );
-
- ResMapIt res = resultMap.find(*theId);
- QVERIFY(res != resultMap.end());
- QVERIFY(res.value().success);
- QCOMPARE(res.value().resp.statusCode(), 200);
- QTEST(readyRead_ba, "result");
-}
-
-void tst_QHttp::authorization_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("path");
- QTest::addColumn<QString>("user");
- QTest::addColumn<QString>("pass");
- QTest::addColumn<int>("result");
-
- QTest::newRow("correct password") << QtNetworkSettings::serverName()
- << QString::fromLatin1("/qtest/rfcs-auth/index.html")
- << QString::fromLatin1("httptest")
- << QString::fromLatin1("httptest")
- << 200;
-
- QTest::newRow("no password") << QtNetworkSettings::serverName()
- << QString::fromLatin1("/qtest/rfcs-auth/index.html")
- << QString::fromLatin1("")
- << QString::fromLatin1("")
- << 401;
-
- QTest::newRow("wrong password") << QtNetworkSettings::serverName()
- << QString::fromLatin1("/qtest/rfcs-auth/index.html")
- << QString::fromLatin1("maliciu0s")
- << QString::fromLatin1("h4X0r")
- << 401;
-}
-
-void tst_QHttp::authorization()
-{
- QFETCH(QString, host);
- QFETCH(QString, path);
- QFETCH(QString, user);
- QFETCH(QString, pass);
- QFETCH(int, result);
-
- QEventLoop loop;
-
- QHttp http;
- connect(&http, SIGNAL(done(bool)), &loop, SLOT(quit()));
-
- if (!user.isEmpty())
- http.setUser(user, pass);
- http.setHost(host);
- int id = http.get(path);
- Q_UNUSED(id);
-
- QTimer::singleShot(5000, &loop, SLOT(quit()));
- loop.exec();
-
- QCOMPARE(http.lastResponse().statusCode(), result);
-}
-
-void tst_QHttp::proxy_data()
-{
- QTest::addColumn<QString>("proxyhost");
- QTest::addColumn<int>("port");
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("path");
- QTest::addColumn<QString>("proxyuser");
- QTest::addColumn<QString>("proxypass");
-
- QTest::newRow("qt-test-server") << QtNetworkSettings::serverName() << 3128
- << QString::fromLatin1("qt.nokia.com") << QString::fromLatin1("/")
- << QString::fromLatin1("") << QString::fromLatin1("");
- QTest::newRow("qt-test-server pct") << QtNetworkSettings::serverName() << 3128
- << QString::fromLatin1("qt.nokia.com") << QString::fromLatin1("/%64eveloper")
- << QString::fromLatin1("") << QString::fromLatin1("");
- QTest::newRow("qt-test-server-basic") << QtNetworkSettings::serverName() << 3129
- << QString::fromLatin1("qt.nokia.com") << QString::fromLatin1("/")
- << QString::fromLatin1("qsockstest") << QString::fromLatin1("password");
-
-#if 0
- // NTLM requires sending the same request three times for it to work
- // the tst_QHttp class is too strict to handle the byte counts sent by dataSendProgress
- // So don't run this test:
- QTest::newRow("qt-test-server-ntlm") << QtNetworkSettings::serverName() << 3130
- << QString::fromLatin1("qt.nokia.com") << QString::fromLatin1("/")
- << QString::fromLatin1("qsockstest") << QString::fromLatin1("password");
-#endif
-}
-
-void tst_QHttp::proxy()
-{
- QFETCH(QString, proxyhost);
- QFETCH(int, port);
- QFETCH(QString, host);
- QFETCH(QString, path);
- QFETCH(QString, proxyuser);
- QFETCH(QString, proxypass);
-
- http = newHttp(!proxyuser.isEmpty());
-
- QCOMPARE(http->currentId(), 0);
- QCOMPARE((int)http->state(), (int)QHttp::Unconnected);
-
- addRequest(QHttpRequestHeader(), http->setProxy(proxyhost, port, proxyuser, proxypass));
- addRequest(QHttpRequestHeader(), http->setHost(host));
- getId = http->get(path);
- addRequest(QHttpRequestHeader(), getId);
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout())
- QFAIL("Network operation timed out");
-
- ResMapIt res = resultMap.find(getId);
- QVERIFY(res != resultMap.end());
- QVERIFY(res.value().success);
- QCOMPARE(res.value().resp.statusCode(), 200);
-}
-
-void tst_QHttp::proxy2()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- readyRead_ba.clear();
-
- QHttp http;
- http.setProxy(QtNetworkSettings::serverName(), 3128);
- http.setHost(QtNetworkSettings::serverName());
- http.get("/index.html");
- http.get("/index.html");
-
- connect(&http, SIGNAL(requestFinished(int, bool)),
- this, SLOT(proxy2_slot()));
- QTestEventLoop::instance().enterLoop(30);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(readyRead_ba.count("Welcome to qt-test-server"), 2);
-
- readyRead_ba.clear();
-}
-
-void tst_QHttp::proxy2_slot()
-{
- QHttp *http = static_cast<QHttp *>(sender());
- readyRead_ba.append(http->readAll());
- if (!http->hasPendingRequests())
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QHttp::proxy3()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- readyRead_ba.clear();
-
- QTcpSocket socket;
- socket.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128));
-
- QHttp http;
- http.setSocket(&socket);
- http.setHost(QtNetworkSettings::serverName());
- http.get("/index.html");
- http.get("/index.html");
-
- connect(&http, SIGNAL(requestFinished(int, bool)),
- this, SLOT(proxy2_slot()));
- QTestEventLoop::instance().enterLoop(30);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(readyRead_ba.count("Welcome to qt-test-server"), 2);
-
- readyRead_ba.clear();
-}
-
-// test QHttp::currentId() and QHttp::currentRequest()
-#define CURRENTREQUEST_TEST \
- { \
- ResMapIt res = resultMap.find( http->currentId() ); \
- QVERIFY( res != resultMap.end() ); \
- if ( http->currentId() == getId ) { \
- QCOMPARE( http->currentRequest().method(), QString("GET") ); \
- } else if ( http->currentId() == headId ) { \
- QCOMPARE( http->currentRequest().method(), QString("HEAD") ); \
- } else if ( http->currentId() == postId ) { \
- QCOMPARE( http->currentRequest().method(), QString("POST") ); \
- } else { \
- QVERIFY( headerAreEqual( http->currentRequest(), res.value().req ) ); \
- } \
- }
-
-void tst_QHttp::requestStarted( int id )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d:requestStarted( %d )", http->currentId(), id );
-#endif
- // make sure that the requestStarted and requestFinished are nested correctly
- QVERIFY( current_id == 0 );
- current_id = id;
-
- QVERIFY( !ids.isEmpty() );
- QVERIFY( ids.first() == id );
- if ( ids.count() > 1 ) {
- QVERIFY( http->hasPendingRequests() );
- } else {
- QVERIFY( !http->hasPendingRequests() );
- }
-
- QVERIFY( http->currentId() == id );
- QVERIFY( cur_state == http->state() );
-
-
-
-
- CURRENTREQUEST_TEST;
-
- QVERIFY( http->error() == QHttp::NoError );
-}
-
-void tst_QHttp::requestFinished( int id, bool error )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d:requestFinished( %d, %d ) -- errorString: '%s'",
- http->currentId(), id, (int)error, http->errorString().toAscii().data() );
-#endif
- // make sure that the requestStarted and requestFinished are nested correctly
- QVERIFY( current_id == id );
- current_id = 0;
-
- QVERIFY( !ids.isEmpty() );
- QVERIFY( ids.first() == id );
- if ( ids.count() > 1 ) {
- QVERIFY( http->hasPendingRequests() );
- } else {
- QVERIFY( !http->hasPendingRequests() );
- }
-
- if ( error ) {
- QVERIFY( http->error() != QHttp::NoError );
- ids.clear();
- } else {
- QVERIFY( http->error() == QHttp::NoError );
- ids.pop_front();
- }
-
- QVERIFY( http->currentId() == id );
- QVERIFY( cur_state == http->state() );
- CURRENTREQUEST_TEST;
-
- ResMapIt res = resultMap.find( http->currentId() );
- QVERIFY( res != resultMap.end() );
- QVERIFY( res.value().success == -1 );
- if ( error )
- res.value().success = 0;
- else
- res.value().success = 1;
-}
-
-void tst_QHttp::done( bool error )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d:done( %d )", http->currentId(), (int)error );
-#endif
- QVERIFY( http->currentId() == 0 );
- QVERIFY( current_id == 0 );
- QVERIFY( ids.isEmpty() );
- QVERIFY( cur_state == http->state() );
- QVERIFY( !http->hasPendingRequests() );
-
- QVERIFY( done_success == -1 );
- if ( error ) {
- QVERIFY( http->error() != QHttp::NoError );
- done_success = 0;
- } else {
- QVERIFY( http->error() == QHttp::NoError );
- done_success = 1;
- }
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QHttp::stateChanged( int state )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d: stateChanged( %d )", http->currentId(), state );
-#endif
- QCOMPARE( http->currentId(), current_id );
- if ( ids.count() > 0 )
- CURRENTREQUEST_TEST;
-
- QVERIFY( state != cur_state );
- QVERIFY( state == http->state() );
- if ( state != QHttp::Unconnected && !connectionWithAuth ) {
- // make sure that the states are always emitted in the right order (for
- // this, we assume an ordering on the enum values, which they have at
- // the moment)
- // connections with authentication will possibly reconnect, so ignore them
- QVERIFY( cur_state < state );
- }
- cur_state = state;
-
- if (state == QHttp::Connecting) {
- bytesTotalSend = bytesTotal_init;
- bytesDoneSend = bytesDone_init;
- bytesTotalRead = bytesTotal_init;
- bytesDoneRead = bytesDone_init;
- }
-}
-
-void tst_QHttp::responseHeaderReceived( const QHttpResponseHeader &header )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d: responseHeaderReceived(\n---{\n%s}---)", http->currentId(), header.toString().toAscii().data() );
-#endif
- QCOMPARE( http->currentId(), current_id );
- if ( ids.count() > 1 ) {
- QVERIFY( http->hasPendingRequests() );
- } else {
- QVERIFY( !http->hasPendingRequests() );
- }
- CURRENTREQUEST_TEST;
-
- resultMap[ http->currentId() ].resp = header;
-}
-
-void tst_QHttp::readyRead( const QHttpResponseHeader & )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d: readyRead()", http->currentId() );
-#endif
- QCOMPARE( http->currentId(), current_id );
- if ( ids.count() > 1 ) {
- QVERIFY( http->hasPendingRequests() );
- } else {
- QVERIFY( !http->hasPendingRequests() );
- }
- QVERIFY( cur_state == http->state() );
- CURRENTREQUEST_TEST;
-
- if ( QTest::currentTestFunction() != QLatin1String("bytesAvailable") ) {
- int oldSize = readyRead_ba.size();
- quint64 bytesAvail = http->bytesAvailable();
- QByteArray ba = http->readAll();
- QVERIFY( (quint64) ba.size() == bytesAvail );
- readyRead_ba.resize( oldSize + ba.size() );
- memcpy( readyRead_ba.data()+oldSize, ba.data(), ba.size() );
-
- if ( bytesTotalRead > 0 ) {
- QVERIFY( (int)readyRead_ba.size() <= bytesTotalRead );
- }
- QVERIFY( (int)readyRead_ba.size() == bytesDoneRead );
- }
-}
-
-void tst_QHttp::dataSendProgress( int done, int total )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d: dataSendProgress( %d, %d )", http->currentId(), done, total );
-#endif
- QCOMPARE( http->currentId(), current_id );
- if ( ids.count() > 1 ) {
- QVERIFY( http->hasPendingRequests() );
- } else {
- QVERIFY( !http->hasPendingRequests() );
- }
- QVERIFY( cur_state == http->state() );
- CURRENTREQUEST_TEST;
-
- if ( bytesTotalSend == bytesTotal_init ) {
- bytesTotalSend = total;
- } else {
- QCOMPARE( bytesTotalSend, total );
- }
-
- QVERIFY( bytesTotalSend != bytesTotal_init );
- QVERIFY( bytesDoneSend <= done );
- bytesDoneSend = done;
- if ( bytesTotalSend > 0 ) {
- QVERIFY( bytesDoneSend <= bytesTotalSend );
- }
-
- if ( QTest::currentTestFunction() == QLatin1String("abort") ) {
- // ### it would be nice if we could specify in our testdata when to do
- // the abort
- if ( done >= total/100000 ) {
- if ( ids.count() != 1 ) {
- // do abort only once
- int tmpId = ids.first();
- ids.clear();
- ids << tmpId;
- http->abort();
- }
- }
- }
-}
-
-void tst_QHttp::dataReadProgress( int done, int total )
-{
-#if defined( DUMP_SIGNALS )
- qDebug( "%d: dataReadProgress( %d, %d )", http->currentId(), done, total );
-#endif
- QCOMPARE( http->currentId(), current_id );
- if ( ids.count() > 1 ) {
- QVERIFY( http->hasPendingRequests() );
- } else {
- QVERIFY( !http->hasPendingRequests() );
- }
- QVERIFY( cur_state == http->state() );
- CURRENTREQUEST_TEST;
-
- if ( bytesTotalRead == bytesTotal_init )
- bytesTotalRead = total;
- else {
- QVERIFY( bytesTotalRead == total );
- }
-
- QVERIFY( bytesTotalRead != bytesTotal_init );
- QVERIFY( bytesDoneRead <= done );
- bytesDoneRead = done;
- if ( bytesTotalRead > 0 ) {
- QVERIFY( bytesDoneRead <= bytesTotalRead );
- }
-
- if ( QTest::currentTestFunction() == QLatin1String("abort") ) {
- // ### it would be nice if we could specify in our testdata when to do
- // the abort
- if ( done >= total/100000 ) {
- if ( ids.count() != 1 ) {
- // do abort only once
- int tmpId = ids.first();
- ids.clear();
- ids << tmpId;
- http->abort();
- }
- }
- }
-}
-
-
-QHttp *tst_QHttp::newHttp(bool withAuth)
-{
- QHttp *nHttp = new QHttp( 0 );
- connect( nHttp, SIGNAL(requestStarted(int)),
- SLOT(requestStarted(int)) );
- connect( nHttp, SIGNAL(requestFinished(int,bool)),
- SLOT(requestFinished(int,bool)) );
- connect( nHttp, SIGNAL(done(bool)),
- SLOT(done(bool)) );
- connect( nHttp, SIGNAL(stateChanged(int)),
- SLOT(stateChanged(int)) );
- connect( nHttp, SIGNAL(responseHeaderReceived(const QHttpResponseHeader&)),
- SLOT(responseHeaderReceived(const QHttpResponseHeader&)) );
- connect( nHttp, SIGNAL(readyRead(const QHttpResponseHeader&)),
- SLOT(readyRead(const QHttpResponseHeader&)) );
- connect( nHttp, SIGNAL(dataSendProgress(int,int)),
- SLOT(dataSendProgress(int,int)) );
- connect( nHttp, SIGNAL(dataReadProgress(int,int)),
- SLOT(dataReadProgress(int,int)) );
-
- connectionWithAuth = withAuth;
- return nHttp;
-}
-
-void tst_QHttp::addRequest( QHttpRequestHeader header, int id )
-{
- ids << id;
- RequestResult res;
- res.req = header;
- res.success = -1;
- resultMap[ id ] = res;
-}
-
-bool tst_QHttp::headerAreEqual( const QHttpHeader &h1, const QHttpHeader &h2 )
-{
- if ( !h1.isValid() )
- return !h2.isValid();
- if ( !h2.isValid() )
- return !h1.isValid();
-
- return h1.toString() == h2.toString();
-}
-
-
-void tst_QHttp::reconnect()
-{
- reconnect_state_connect_count = 0;
-
- QHttp http;
-
- QObject::connect(&http, SIGNAL(stateChanged(int)), this, SLOT(reconnect_state(int)));
- http.setHost("trolltech.com", 80);
- http.get("/company/index.html");
- http.setHost("trolltech.com", 8080);
- http.get("/company/index.html");
-
- QTestEventLoop::instance().enterLoop(60);
- if (QTestEventLoop::instance().timeout())
- QFAIL("Network operation timed out");
-
- QCOMPARE(reconnect_state_connect_count, 1);
-
- QTestEventLoop::instance().enterLoop(60);
- if (QTestEventLoop::instance().timeout())
- QFAIL("Network operation timed out");
-
- QCOMPARE(reconnect_state_connect_count, 2);
-}
-
-void tst_QHttp::reconnect_state(int state)
-{
- if (state == QHttp::Connecting) {
- ++reconnect_state_connect_count;
- QTestEventLoop::instance().exitLoop();
- }
-}
-
-void tst_QHttp::setSocket()
-{
- QHttp *http = new QHttp;
- QPointer<QTcpSocket> replacementSocket = new QTcpSocket;
- http->setSocket(replacementSocket);
- QCoreApplication::processEvents();
- delete http;
- QVERIFY(replacementSocket);
- delete replacementSocket;
-}
-
-class Server : public QTcpServer
-{
- Q_OBJECT
-public:
- Server()
- {
- connect(this, SIGNAL(newConnection()),
- this, SLOT(serveConnection()));
- }
-
-private slots:
- void serveConnection()
- {
- QTcpSocket *socket = nextPendingConnection();
- socket->write("HTTP/1.1 404 Not found\r\n"
- "content-length: 4\r\n\r\nabcd");
- socket->disconnectFromHost();
- };
-};
-
-void tst_QHttp::unexpectedRemoteClose()
-{
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- // This test doesn't make sense for SOCKS5
- return;
- }
-
- Server server;
- server.listen();
- QCoreApplication::instance()->processEvents();
-
- QEventLoop loop;
- QTimer::singleShot(3000, &loop, SLOT(quit()));
-
- QHttp http;
- QObject::connect(&http, SIGNAL(done(bool)), &loop, SLOT(quit()));
- QSignalSpy finishedSpy(&http, SIGNAL(requestFinished(int, bool)));
- QSignalSpy doneSpy(&http, SIGNAL(done(bool)));
-
- http.setHost("localhost", server.serverPort());
- http.get("/");
- http.get("/");
- http.get("/");
-
- loop.exec();
-
- QCOMPARE(finishedSpy.count(), 4);
- QVERIFY(!finishedSpy.at(1).at(1).toBool());
- QVERIFY(!finishedSpy.at(2).at(1).toBool());
- QVERIFY(!finishedSpy.at(3).at(1).toBool());
- QCOMPARE(doneSpy.count(), 1);
- QVERIFY(!doneSpy.at(0).at(0).toBool());
-}
-
-void tst_QHttp::pctEncodedPath()
-{
- QHttpRequestHeader header;
- header.setRequest("GET", "/index.asp/a=%20&b=%20&c=%20");
- QCOMPARE(header.toString(), QString("GET /index.asp/a=%20&b=%20&c=%20 HTTP/1.1\r\n\r\n"));
-}
-
-void tst_QHttp::caseInsensitiveKeys()
-{
- QHttpResponseHeader header("HTTP/1.1 200 OK\r\nContent-Length: 213\r\nX-Been-There: True\r\nLocation: http://www.TrollTech.com/\r\n\r\n");
- QVERIFY(header.hasKey("Content-Length"));
- QVERIFY(header.hasKey("X-Been-There"));
- QVERIFY(header.hasKey("Location"));
- QVERIFY(header.hasKey("content-length"));
- QVERIFY(header.hasKey("x-been-there"));
- QVERIFY(header.hasKey("location"));
- QCOMPARE(header.value("Content-Length"), QString("213"));
- QCOMPARE(header.value("X-Been-There"), QString("True"));
- QCOMPARE(header.value("Location"), QString("http://www.TrollTech.com/"));
- QCOMPARE(header.value("content-length"), QString("213"));
- QCOMPARE(header.value("x-been-there"), QString("True"));
- QCOMPARE(header.value("location"), QString("http://www.TrollTech.com/"));
- QCOMPARE(header.allValues("location"), QStringList("http://www.TrollTech.com/"));
-
- header.addValue("Content-Length", "213");
- header.addValue("Content-Length", "214");
- header.addValue("Content-Length", "215");
- qDebug() << header.toString();
-}
-
-void tst_QHttp::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
-{
- proxyAuthCalled = true;
- auth->setUser("qsockstest");
- auth->setPassword("password");
-}
-
-void tst_QHttp::postAuthNtlm()
-{
- QSKIP("NTLM not working", SkipAll);
-
- QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName());
- QByteArray postData("Hello World");
- QHttp http;
-
- http.setHost(QtNetworkSettings::serverName());
- http.setProxy(QtNetworkSettings::serverName(), 3130);
- http.post("/", postData);
-
- proxyAuthCalled = false;
- connect(&http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-
- QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(3);
- QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- QVERIFY(proxyAuthCalled);
- QVERIFY(!QTestEventLoop::instance().timeout());
-};
-
-void tst_QHttp::proxyAndSsl()
-{
-#ifdef QT_NO_OPENSSL
- QSKIP("No OpenSSL support in this platform", SkipAll);
-#else
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QHttp http;
-
- http.setHost(QtNetworkSettings::serverName(), QHttp::ConnectionModeHttps);
- http.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129));
- http.get("/");
-
- proxyAuthCalled = false;
- connect(&http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(&http, SIGNAL(sslErrors(QList<QSslError>)),
- &http, SLOT(ignoreSslErrors()));
-
- QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(3);
- QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(proxyAuthCalled);
-
- QHttpResponseHeader header = http.lastResponse();
- QVERIFY(header.isValid());
- QVERIFY(header.statusCode() < 400); // Should be 200, but as long as it's not an error, we're happy
-#endif
-}
-
-void tst_QHttp::cachingProxyAndSsl()
-{
-#ifdef QT_NO_OPENSSL
- QSKIP("No OpenSSL support in this platform", SkipAll);
-#else
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QHttp http;
-
- http.setHost(QtNetworkSettings::serverName(), QHttp::ConnectionModeHttps);
- http.setProxy(QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129));
- http.get("/");
-
- proxyAuthCalled = false;
- connect(&http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-
- QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(3);
- QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(!proxyAuthCalled); // NOT called! QHttp should get a socket error
- QVERIFY(http.state() != QHttp::Connected);
-
- QHttpResponseHeader header = http.lastResponse();
- QVERIFY(!header.isValid());
-#endif
-}
-
-void tst_QHttp::emptyBodyInReply()
-{
- // Note: if this test starts failing, please verify the date on the file
- // returned by Apache on http://netiks.troll.no/
- // It is right now hard-coded to the date below
- QHttp http;
- http.setHost(QtNetworkSettings::serverName());
-
- QHttpRequestHeader headers("GET", "/");
- headers.addValue("If-Modified-Since", "Sun, 16 Nov 2008 12:29:51 GMT");
- headers.addValue("Host", QtNetworkSettings::serverName());
- http.request(headers);
-
- QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- // check the reply
- if (http.lastResponse().statusCode() != 304) {
- qWarning() << http.lastResponse().statusCode() << qPrintable(http.lastResponse().reasonPhrase());
- qWarning() << "Last-Modified:" << qPrintable(http.lastResponse().value("last-modified"));
- QFAIL("Server replied with the wrong status code; see warning output");
- }
-}
-
-void tst_QHttp::abortSender()
-{
- QHttp *http = qobject_cast<QHttp *>(sender());
- if (http)
- http->abort();
-}
-
-void tst_QHttp::abortInReadyRead()
-{
- QHttp http;
- http.setHost(QtNetworkSettings::serverName());
- http.get("/qtest/bigfile");
-
- qRegisterMetaType<QHttpResponseHeader>();
- QSignalSpy spy(&http, SIGNAL(readyRead(QHttpResponseHeader)));
-
- QObject::connect(&http, SIGNAL(readyRead(QHttpResponseHeader)), this, SLOT(abortSender()));
- QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- QVERIFY2(!QTestEventLoop::instance().timeout(), "Network timeout");
- QVERIFY(http.state() != QHttp::Connected);
-
- QCOMPARE(spy.count(), 1);
-}
-
-void tst_QHttp::abortInResponseHeaderReceived()
-{
- QHttp http;
- http.setHost(QtNetworkSettings::serverName());
- http.get("/qtest/bigfile");
-
- qRegisterMetaType<QHttpResponseHeader>();
- QSignalSpy spy(&http, SIGNAL(readyRead(QHttpResponseHeader)));
-
- QObject::connect(&http, SIGNAL(responseHeaderReceived(QHttpResponseHeader)), this, SLOT(abortSender()));
- QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- QVERIFY2(!QTestEventLoop::instance().timeout(), "Network timeout");
- QVERIFY(http.state() != QHttp::Connected);
-
- QCOMPARE(spy.count(), 0);
-}
-
-void tst_QHttp::connectionClose()
-{
- // This was added in response to bug 176822
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QHttp http;
- ClosingServer server;
- http.setHost("localhost", QHttp::ConnectionModeHttps, server.serverPort());
- http.get("/login/gateway/processLogin");
-
- // another possibility:
- //http.setHost("nexus.passport.com", QHttp::ConnectionModeHttps, 443);
- //http.get("/rdr/pprdr.asp");
-
- QObject::connect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(900);
- QObject::disconnect(&http, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- QVERIFY(!QTestEventLoop::instance().timeout());
-}
-
-void tst_QHttp::nestedEventLoop_slot(int id)
-{
- if (!ids.contains(id))
- return;
- QEventLoop subloop;
-
- // 16 seconds: fluke times out in 15 seconds, which triggers a QTcpSocket error
- QTimer::singleShot(16000, &subloop, SLOT(quit()));
- subloop.exec();
-
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QHttp::nestedEventLoop()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- http = new QHttp;
- http->setHost(QtNetworkSettings::serverName());
- int getId = http->get("/");
-
- ids.clear();
- ids << getId;
-
- QSignalSpy spy(http, SIGNAL(requestStarted(int)));
- QSignalSpy spy2(http, SIGNAL(done(bool)));
-
- connect(http, SIGNAL(requestFinished(int,bool)), SLOT(nestedEventLoop_slot(int)));
- QTestEventLoop::instance().enterLoop(20);
-
- QVERIFY2(!QTestEventLoop::instance().timeout(), "Network timeout");
-
- // Find out how many signals with the first argument equalling our id were found
- int spyCount = 0;
- for (int i = 0; i < spy.count(); ++i)
- if (spy.at(i).at(0).toInt() == getId)
- ++spyCount;
-
- // each signal spied should have been emitted only once
- QCOMPARE(spyCount, 1);
- QCOMPARE(spy2.count(), 1);
-}
-
-QTEST_MAIN(tst_QHttp)
-#include "tst_qhttp.moc"
diff --git a/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp b/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
deleted file mode 100644
index ceb0a074da..0000000000
--- a/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
+++ /dev/null
@@ -1,1131 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include "private/qhttpnetworkconnection_p.h"
-#include "private/qnoncontiguousbytedevice_p.h"
-#include <QAuthenticator>
-
-#include "../network-settings.h"
-
-class tst_QHttpNetworkConnection: public QObject
-{
- Q_OBJECT
-
-public:
- tst_QHttpNetworkConnection();
-
-public Q_SLOTS:
- void finishedReply();
- void finishedWithError(QNetworkReply::NetworkError errorCode, const QString &detail);
- void challenge401(const QHttpNetworkRequest &request, QAuthenticator *authenticator);
-#ifndef QT_NO_OPENSSL
- void sslErrors(const QList<QSslError> &errors);
-#endif
-private:
- bool finishedCalled;
- bool finishedWithErrorCalled;
- QNetworkReply::NetworkError netErrorCode;
-
-private Q_SLOTS:
- void init();
- void cleanup();
- void initTestCase();
- void cleanupTestCase();
-
- void options_data();
- void options();
- void get_data();
- void get();
- void head_data();
- void head();
- void post_data();
- void post();
- void put_data();
- void put();
- void _delete_data();
- void _delete();
- void trace_data();
- void trace();
- void _connect_data();
- void _connect();
-#ifndef QT_NO_COMPRESS
- void compression_data();
- void compression();
-#endif
-#ifndef QT_NO_OPENSSL
- void ignoresslerror_data();
- void ignoresslerror();
-#endif
-#ifdef QT_NO_OPENSSL
- void nossl_data();
- void nossl();
-#endif
- void get401_data();
- void get401();
-
- void getMultiple_data();
- void getMultiple();
- void getMultipleWithPipeliningAndMultiplePriorities();
- void getMultipleWithPriorities();
-
- void getEmptyWithPipelining();
-
- void getAndEverythingShouldBePipelined();
-
- void getAndThenDeleteObject();
- void getAndThenDeleteObject_data();
-};
-
-tst_QHttpNetworkConnection::tst_QHttpNetworkConnection()
-{
- Q_SET_DEFAULT_IAP
-}
-
-void tst_QHttpNetworkConnection::initTestCase()
-{
-}
-
-void tst_QHttpNetworkConnection::cleanupTestCase()
-{
-}
-
-void tst_QHttpNetworkConnection::init()
-{
-}
-
-void tst_QHttpNetworkConnection::cleanup()
-{
-}
-
-void tst_QHttpNetworkConnection::options_data()
-{
- // not tested yet
-}
-
-void tst_QHttpNetworkConnection::options()
-{
- QEXPECT_FAIL("", "not tested yet", Continue);
- QVERIFY(false);
-}
-
-void tst_QHttpNetworkConnection::head_data()
-{
- QTest::addColumn<QString>("protocol");
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("path");
- QTest::addColumn<ushort>("port");
- QTest::addColumn<bool>("encrypt");
- QTest::addColumn<int>("statusCode");
- QTest::addColumn<QString>("statusString");
- QTest::addColumn<int>("contentLength");
-
- QTest::newRow("success-internal") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfc3252.txt" << ushort(80) << false << 200 << "OK" << 25962;
- QTest::newRow("success-external") << "http://" << "www.ietf.org" << "/rfc/rfc3252.txt" << ushort(80) << false << 200 << "OK" << 25962;
-
- QTest::newRow("failure-path") << "http://" << QtNetworkSettings::serverName() << "/t" << ushort(80) << false << 404 << "Not Found" << -1;
- QTest::newRow("failure-protocol") << "" << QtNetworkSettings::serverName() << "/qtest/rfc3252.txt" << ushort(80) << false << 400 << "Bad Request" << -1;
-}
-
-void tst_QHttpNetworkConnection::head()
-{
- QFETCH(QString, protocol);
- QFETCH(QString, host);
- QFETCH(QString, path);
- QFETCH(ushort, port);
- QFETCH(bool, encrypt);
- QFETCH(int, statusCode);
- QFETCH(QString, statusString);
- QFETCH(int, contentLength);
-
- QHttpNetworkConnection connection(host, port, encrypt);
- QCOMPARE(connection.port(), port);
- QCOMPARE(connection.hostName(), host);
- QCOMPARE(connection.isSsl(), encrypt);
-
- QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Head);
- QHttpNetworkReply *reply = connection.sendRequest(request);
-
- QTime stopWatch;
- stopWatch.start();
- do {
- QCoreApplication::instance()->processEvents();
- if (stopWatch.elapsed() >= 30000)
- break;
- } while (!reply->isFinished());
-
- QCOMPARE(reply->statusCode(), statusCode);
- QCOMPARE(reply->reasonPhrase(), statusString);
- // only check it if it is set and expected
- if (reply->contentLength() != -1 && contentLength != -1)
- QCOMPARE(reply->contentLength(), qint64(contentLength));
-
- QVERIFY(reply->isFinished());
-
- delete reply;
-}
-
-void tst_QHttpNetworkConnection::get_data()
-{
- QTest::addColumn<QString>("protocol");
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("path");
- QTest::addColumn<ushort>("port");
- QTest::addColumn<bool>("encrypt");
- QTest::addColumn<int>("statusCode");
- QTest::addColumn<QString>("statusString");
- QTest::addColumn<int>("contentLength");
- QTest::addColumn<int>("downloadSize");
-
- QTest::newRow("success-internal") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfc3252.txt" << ushort(80) << false << 200 << "OK" << 25962 << 25962;
- QTest::newRow("success-external") << "http://" << "www.ietf.org" << "/rfc/rfc3252.txt" << ushort(80) << false << 200 << "OK" << 25962 << 25962;
-
- QTest::newRow("failure-path") << "http://" << QtNetworkSettings::serverName() << "/t" << ushort(80) << false << 404 << "Not Found" << -1 << -1;
- QTest::newRow("failure-protocol") << "" << QtNetworkSettings::serverName() << "/qtest/rfc3252.txt" << ushort(80) << false << 400 << "Bad Request" << -1 << -1;
-}
-
-void tst_QHttpNetworkConnection::get()
-{
- QFETCH(QString, protocol);
- QFETCH(QString, host);
- QFETCH(QString, path);
- QFETCH(ushort, port);
- QFETCH(bool, encrypt);
- QFETCH(int, statusCode);
- QFETCH(QString, statusString);
- QFETCH(int, contentLength);
- QFETCH(int, downloadSize);
-
- QHttpNetworkConnection connection(host, port, encrypt);
- QCOMPARE(connection.port(), port);
- QCOMPARE(connection.hostName(), host);
- QCOMPARE(connection.isSsl(), encrypt);
-
- QHttpNetworkRequest request(protocol + host + path);
- QHttpNetworkReply *reply = connection.sendRequest(request);
-
- QTime stopWatch;
- stopWatch.start();
- forever {
- QCoreApplication::instance()->processEvents();
- if (reply->bytesAvailable())
- break;
- if (stopWatch.elapsed() >= 30000)
- break;
- }
-
- QCOMPARE(reply->statusCode(), statusCode);
- QCOMPARE(reply->reasonPhrase(), statusString);
- // only check it if it is set and expected
- if (reply->contentLength() != -1 && contentLength != -1)
- QCOMPARE(reply->contentLength(), qint64(contentLength));
-
- stopWatch.start();
- QByteArray ba;
- do {
- QCoreApplication::instance()->processEvents();
- while (reply->bytesAvailable())
- ba += reply->readAny();
- if (stopWatch.elapsed() >= 30000)
- break;
- } while (!reply->isFinished());
-
- QVERIFY(reply->isFinished());
- //do not require server generated error pages to be a fixed size
- if (downloadSize != -1)
- QCOMPARE(ba.size(), downloadSize);
- //but check against content length if it was sent
- if (reply->contentLength() != -1)
- QCOMPARE(ba.size(), (int)reply->contentLength());
-
- delete reply;
-}
-
-void tst_QHttpNetworkConnection::finishedReply()
-{
- finishedCalled = true;
-}
-
-void tst_QHttpNetworkConnection::finishedWithError(QNetworkReply::NetworkError errorCode, const QString &detail)
-{
- Q_UNUSED(detail)
- finishedWithErrorCalled = true;
- netErrorCode = errorCode;
-}
-
-void tst_QHttpNetworkConnection::put_data()
-{
-
- QTest::addColumn<QString>("protocol");
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("path");
- QTest::addColumn<ushort>("port");
- QTest::addColumn<bool>("encrypt");
- QTest::addColumn<QString>("data");
- QTest::addColumn<bool>("succeed");
-
- QTest::newRow("success-internal") << "http://" << QtNetworkSettings::serverName() << "/dav/file1.txt" << ushort(80) << false << "Hello World\nEnd of file\n"<<true;
- QTest::newRow("fail-internal") << "http://" << QtNetworkSettings::serverName() << "/dav2/file1.txt" << ushort(80) << false << "Hello World\nEnd of file\n"<<false;
- QTest::newRow("fail-host") << "http://" << "fluke-nosuchhost.troll.no" << "/dav2/file1.txt" << ushort(80) << false << "Hello World\nEnd of file\n"<<false;
-}
-
-void tst_QHttpNetworkConnection::put()
-{
- QFETCH(QString, protocol);
- QFETCH(QString, host);
- QFETCH(QString, path);
- QFETCH(ushort, port);
- QFETCH(bool, encrypt);
- QFETCH(QString, data);
- QFETCH(bool, succeed);
-
- QHttpNetworkConnection connection(host, port, encrypt);
- QCOMPARE(connection.port(), port);
- QCOMPARE(connection.hostName(), host);
- QCOMPARE(connection.isSsl(), encrypt);
-
- QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Put);
-
- QByteArray array = data.toLatin1();
- QNonContiguousByteDevice *bd = QNonContiguousByteDeviceFactory::create(&array);
- bd->setParent(this);
- request.setUploadByteDevice(bd);
-
- finishedCalled = false;
- finishedWithErrorCalled = false;
-
- QHttpNetworkReply *reply = connection.sendRequest(request);
- connect(reply, SIGNAL(finished()), SLOT(finishedReply()));
- connect(reply, SIGNAL(finishedWithError(QNetworkReply::NetworkError, const QString &)),
- SLOT(finishedWithError(QNetworkReply::NetworkError, const QString &)));
-
- QTime stopWatch;
- stopWatch.start();
- do {
- QCoreApplication::instance()->processEvents();
- if (stopWatch.elapsed() >= 30000)
- break;
- } while (!reply->isFinished() && !finishedCalled && !finishedWithErrorCalled);
-
- if (reply->isFinished()) {
- QByteArray ba;
- while (reply->bytesAvailable())
- ba += reply->readAny();
- } else if(finishedWithErrorCalled) {
- if(!succeed) {
- delete reply;
- return;
- } else {
- QFAIL("Error in PUT");
- }
- } else {
- QFAIL("PUT timed out");
- }
-
- int status = reply->statusCode();
- if (status != 200 && status != 201 && status != 204) {
- if (succeed) {
- qDebug()<<"PUT failed, Status Code:" <<status;
- QFAIL("Error in PUT");
- }
- } else {
- if (!succeed) {
- qDebug()<<"PUT Should fail, Status Code:" <<status;
- QFAIL("Error in PUT");
- }
- }
- delete reply;
-}
-
-void tst_QHttpNetworkConnection::post_data()
-{
- QTest::addColumn<QString>("protocol");
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("path");
- QTest::addColumn<ushort>("port");
- QTest::addColumn<bool>("encrypt");
- QTest::addColumn<QString>("data");
- QTest::addColumn<int>("statusCode");
- QTest::addColumn<QString>("statusString");
- QTest::addColumn<int>("contentLength");
- QTest::addColumn<int>("downloadSize");
-
- QTest::newRow("success-internal") << "http://" << QtNetworkSettings::serverName() << "/qtest/cgi-bin/echo.cgi" << ushort(80) << false << "7 bytes" << 200 << "OK" << 7 << 7;
- QTest::newRow("failure-internal") << "http://" << QtNetworkSettings::serverName() << "/t" << ushort(80) << false << "Hello World" << 404 << "Not Found" << -1 << -1;
-}
-
-void tst_QHttpNetworkConnection::post()
-{
- QFETCH(QString, protocol);
- QFETCH(QString, host);
- QFETCH(QString, path);
- QFETCH(ushort, port);
- QFETCH(bool, encrypt);
- QFETCH(QString, data);
- QFETCH(int, statusCode);
- QFETCH(QString, statusString);
- QFETCH(int, contentLength);
- QFETCH(int, downloadSize);
-
- QHttpNetworkConnection connection(host, port, encrypt);
- QCOMPARE(connection.port(), port);
- QCOMPARE(connection.hostName(), host);
- QCOMPARE(connection.isSsl(), encrypt);
-
- QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Post);
-
- QByteArray array = data.toLatin1();
- QNonContiguousByteDevice *bd = QNonContiguousByteDeviceFactory::create(&array);
- bd->setParent(this);
- request.setUploadByteDevice(bd);
-
- QHttpNetworkReply *reply = connection.sendRequest(request);
-
- QTime stopWatch;
- stopWatch.start();
- forever {
- QCoreApplication::instance()->processEvents();
- if (reply->bytesAvailable())
- break;
- if (stopWatch.elapsed() >= 30000)
- break;
- }
-
- QCOMPARE(reply->statusCode(), statusCode);
- QCOMPARE(reply->reasonPhrase(), statusString);
-
- qint64 cLen = reply->contentLength();
- if (contentLength != -1) {
- // only check the content length if test expected it to be set
- if (cLen==-1) {
- // HTTP 1.1 server may respond with chunked encoding and in that
- // case contentLength is not present in reply -> verify that it is the case
- QByteArray transferEnc = reply->headerField("Transfer-Encoding");
- QCOMPARE(transferEnc, QByteArray("chunked"));
- } else {
- QCOMPARE(cLen, qint64(contentLength));
- }
- }
-
- stopWatch.start();
- QByteArray ba;
- do {
- QCoreApplication::instance()->processEvents();
- while (reply->bytesAvailable())
- ba += reply->readAny();
- if (stopWatch.elapsed() >= 30000)
- break;
- } while (!reply->isFinished());
-
- QVERIFY(reply->isFinished());
- //don't require fixed size for generated error pages
- if (downloadSize != -1)
- QCOMPARE(ba.size(), downloadSize);
- //but do compare with content length if possible
- if (cLen != -1)
- QCOMPARE(ba.size(), (int)cLen);
-
- delete reply;
-}
-
-void tst_QHttpNetworkConnection::_delete_data()
-{
- // not tested yet
-}
-
-void tst_QHttpNetworkConnection::_delete()
-{
- QEXPECT_FAIL("", "not tested yet", Continue);
- QVERIFY(false);
-}
-
-void tst_QHttpNetworkConnection::trace_data()
-{
- // not tested yet
-}
-
-void tst_QHttpNetworkConnection::trace()
-{
- QEXPECT_FAIL("", "not tested yet", Continue);
- QVERIFY(false);
-}
-
-void tst_QHttpNetworkConnection::_connect_data()
-{
- // not tested yet
-}
-
-void tst_QHttpNetworkConnection::_connect()
-{
- QEXPECT_FAIL("", "not tested yet", Continue);
- QVERIFY(false);
-}
-
-void tst_QHttpNetworkConnection::challenge401(const QHttpNetworkRequest &request,
- QAuthenticator *authenticator)
-{
- Q_UNUSED(request)
-
- QHttpNetworkReply *reply = qobject_cast<QHttpNetworkReply*>(sender());
- if (reply) {
- QHttpNetworkConnection *c = reply->connection();
-
- QVariant val = c->property("setCredentials");
- if (val.toBool()) {
- QVariant user = c->property("username");
- QVariant password = c->property("password");
- authenticator->setUser(user.toString());
- authenticator->setPassword(password.toString());
- c->setProperty("setCredentials", false);
- }
- }
-}
-
-void tst_QHttpNetworkConnection::get401_data()
-{
- QTest::addColumn<QString>("protocol");
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("path");
- QTest::addColumn<ushort>("port");
- QTest::addColumn<bool>("encrypt");
- QTest::addColumn<bool>("setCredentials");
- QTest::addColumn<QString>("username");
- QTest::addColumn<QString>("password");
- QTest::addColumn<int>("statusCode");
-
- QTest::newRow("no-credentials") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfcs-auth/index.html" << ushort(80) << false << false << "" << ""<<401;
- QTest::newRow("invalid-credentials") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfcs-auth/index.html" << ushort(80) << false << true << "test" << "test"<<401;
- QTest::newRow("valid-credentials") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfcs-auth/index.html" << ushort(80) << false << true << "httptest" << "httptest"<<200;
- QTest::newRow("digest-authentication-invalid") << "http://" << QtNetworkSettings::serverName() << "/qtest/auth-digest/index.html" << ushort(80) << false << true << "wrong" << "wrong"<<401;
- QTest::newRow("digest-authentication-valid") << "http://" << QtNetworkSettings::serverName() << "/qtest/auth-digest/index.html" << ushort(80) << false << true << "httptest" << "httptest"<<200;
-}
-
-void tst_QHttpNetworkConnection::get401()
-{
- QFETCH(QString, protocol);
- QFETCH(QString, host);
- QFETCH(QString, path);
- QFETCH(ushort, port);
- QFETCH(bool, encrypt);
- QFETCH(bool, setCredentials);
- QFETCH(QString, username);
- QFETCH(QString, password);
- QFETCH(int, statusCode);
-
- QHttpNetworkConnection connection(host, port, encrypt);
- QCOMPARE(connection.port(), port);
- QCOMPARE(connection.hostName(), host);
- QCOMPARE(connection.isSsl(), encrypt);
- connection.setProperty("setCredentials", setCredentials);
- connection.setProperty("username", username);
- connection.setProperty("password", password);
-
- QHttpNetworkRequest request(protocol + host + path);
- QHttpNetworkReply *reply = connection.sendRequest(request);
- connect(reply, SIGNAL(authenticationRequired(const QHttpNetworkRequest&, QAuthenticator *)),
- SLOT(challenge401(const QHttpNetworkRequest&, QAuthenticator *)));
-
- finishedCalled = false;
- finishedWithErrorCalled = false;
-
- connect(reply, SIGNAL(finished()), SLOT(finishedReply()));
- connect(reply, SIGNAL(finishedWithError(QNetworkReply::NetworkError, const QString &)),
- SLOT(finishedWithError(QNetworkReply::NetworkError, const QString &)));
-
- QTime stopWatch;
- stopWatch.start();
- forever {
- QCoreApplication::instance()->processEvents();
- if (finishedCalled)
- break;
- if (finishedWithErrorCalled)
- break;
- if (stopWatch.elapsed() >= 30000)
- break;
- }
- QCOMPARE(reply->statusCode(), statusCode);
- delete reply;
-}
-
-#ifndef QT_NO_COMPRESS
-void tst_QHttpNetworkConnection::compression_data()
-{
- QTest::addColumn<QString>("protocol");
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("path");
- QTest::addColumn<ushort>("port");
- QTest::addColumn<bool>("encrypt");
- QTest::addColumn<int>("statusCode");
- QTest::addColumn<QString>("statusString");
- QTest::addColumn<int>("contentLength");
- QTest::addColumn<int>("downloadSize");
- QTest::addColumn<bool>("autoCompress");
- QTest::addColumn<QString>("contentCoding");
-
- QTest::newRow("success-autogzip-temp") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfcs/rfc2616.html" << ushort(80) << false << 200 << "OK" << -1 << 418321 << true << "";
- QTest::newRow("success-nogzip-temp") << "http://" << QtNetworkSettings::serverName() << "/qtest/rfcs/rfc2616.html" << ushort(80) << false << 200 << "OK" << 418321 << 418321 << false << "identity";
- QTest::newRow("success-manualgzip-temp") << "http://" << QtNetworkSettings::serverName() << "/qtest/deflate/rfc2616.html" << ushort(80) << false << 200 << "OK" << 119124 << 119124 << false << "gzip";
-
-}
-
-void tst_QHttpNetworkConnection::compression()
-{
- QFETCH(QString, protocol);
- QFETCH(QString, host);
- QFETCH(QString, path);
- QFETCH(ushort, port);
- QFETCH(bool, encrypt);
- QFETCH(int, statusCode);
- QFETCH(QString, statusString);
- QFETCH(int, contentLength);
- QFETCH(int, downloadSize);
- QFETCH(bool, autoCompress);
- QFETCH(QString, contentCoding);
-
- QHttpNetworkConnection connection(host, port, encrypt);
- QCOMPARE(connection.port(), port);
- QCOMPARE(connection.hostName(), host);
- QCOMPARE(connection.isSsl(), encrypt);
-
- QHttpNetworkRequest request(protocol + host + path);
- if (!autoCompress)
- request.setHeaderField("Accept-Encoding", contentCoding.toLatin1());
- QHttpNetworkReply *reply = connection.sendRequest(request);
- QTime stopWatch;
- stopWatch.start();
- forever {
- QCoreApplication::instance()->processEvents();
- if (reply->bytesAvailable())
- break;
- if (stopWatch.elapsed() >= 30000)
- break;
- }
-
- QCOMPARE(reply->statusCode(), statusCode);
- QCOMPARE(reply->reasonPhrase(), statusString);
- bool isLengthOk = (reply->contentLength() == qint64(contentLength)
- || reply->contentLength() == qint64(downloadSize)
- || reply->contentLength() == -1); //apache2 does not send content-length for compressed pages
-
- QVERIFY(isLengthOk);
-
- stopWatch.start();
- QByteArray ba;
- do {
- QCoreApplication::instance()->processEvents();
- while (reply->bytesAvailable())
- ba += reply->readAny();
- if (stopWatch.elapsed() >= 30000)
- break;
- } while (!reply->isFinished());
-
- QVERIFY(reply->isFinished());
- QCOMPARE(ba.size(), downloadSize);
-
- delete reply;
-}
-#endif
-
-#ifndef QT_NO_OPENSSL
-void tst_QHttpNetworkConnection::sslErrors(const QList<QSslError> &errors)
-{
- Q_UNUSED(errors)
-
- QHttpNetworkReply *reply = qobject_cast<QHttpNetworkReply*>(sender());
- if (reply) {
- QHttpNetworkConnection *connection = reply->connection();
-
- QVariant val = connection->property("ignoreFromSignal");
- if (val.toBool())
- connection->ignoreSslErrors();
- finishedWithErrorCalled = true;
- }
-}
-
-void tst_QHttpNetworkConnection::ignoresslerror_data()
-{
- QTest::addColumn<QString>("protocol");
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("path");
- QTest::addColumn<ushort>("port");
- QTest::addColumn<bool>("encrypt");
- QTest::addColumn<bool>("ignoreInit");
- QTest::addColumn<bool>("ignoreFromSignal");
- QTest::addColumn<int>("statusCode");
-
- // This test will work only if the website has ssl errors.
- // fluke's certificate is signed by a non-standard authority.
- // Since we don't introduce that CA into the SSL verification chain,
- // connecting should fail.
- QTest::newRow("success-init") << "https://" << QtNetworkSettings::serverName() << "/" << ushort(443) << true << true << false << 200;
- QTest::newRow("success-fromSignal") << "https://" << QtNetworkSettings::serverName() << "/" << ushort(443) << true << false << true << 200;
- QTest::newRow("failure") << "https://" << QtNetworkSettings::serverName() << "/" << ushort(443) << true << false << false << 100;
-}
-
-void tst_QHttpNetworkConnection::ignoresslerror()
-{
- QFETCH(QString, protocol);
- QFETCH(QString, host);
- QFETCH(QString, path);
- QFETCH(ushort, port);
- QFETCH(bool, encrypt);
- QFETCH(bool, ignoreInit);
- QFETCH(bool, ignoreFromSignal);
- QFETCH(int, statusCode);
-
- QHttpNetworkConnection connection(host, port, encrypt);
- QCOMPARE(connection.port(), port);
- QCOMPARE(connection.hostName(), host);
- if (ignoreInit)
- connection.ignoreSslErrors();
- QCOMPARE(connection.isSsl(), encrypt);
- connection.setProperty("ignoreFromSignal", ignoreFromSignal);
-
- QHttpNetworkRequest request(protocol + host + path);
- QHttpNetworkReply *reply = connection.sendRequest(request);
- connect(reply, SIGNAL(sslErrors(const QList<QSslError>&)),
- SLOT(sslErrors(const QList<QSslError>&)));
-
- finishedWithErrorCalled = false;
-
- connect(reply, SIGNAL(finished()), SLOT(finishedReply()));
-
- QTime stopWatch;
- stopWatch.start();
- forever {
- QCoreApplication::instance()->processEvents();
- if (reply->bytesAvailable())
- break;
- if (statusCode == 100 && finishedWithErrorCalled)
- break;
- if (stopWatch.elapsed() >= 30000)
- break;
- }
- QCOMPARE(reply->statusCode(), statusCode);
- delete reply;
-}
-#endif
-
-#ifdef QT_NO_OPENSSL
-Q_DECLARE_METATYPE(QNetworkReply::NetworkError)
-void tst_QHttpNetworkConnection::nossl_data()
-{
- QTest::addColumn<QString>("protocol");
- QTest::addColumn<QString>("host");
- QTest::addColumn<QString>("path");
- QTest::addColumn<ushort>("port");
- QTest::addColumn<bool>("encrypt");
- QTest::addColumn<QNetworkReply::NetworkError>("networkError");
-
- QTest::newRow("protocol-error") << "https://" << QtNetworkSettings::serverName() << "/" << ushort(443) << true <<QNetworkReply::ProtocolUnknownError;
-}
-
-void tst_QHttpNetworkConnection::nossl()
-{
- QFETCH(QString, protocol);
- QFETCH(QString, host);
- QFETCH(QString, path);
- QFETCH(ushort, port);
- QFETCH(bool, encrypt);
- QFETCH(QNetworkReply::NetworkError, networkError);
-
- QHttpNetworkConnection connection(host, port, encrypt);
- QCOMPARE(connection.port(), port);
- QCOMPARE(connection.hostName(), host);
-
- QHttpNetworkRequest request(protocol + host + path);
- QHttpNetworkReply *reply = connection.sendRequest(request);
-
- finishedWithErrorCalled = false;
- netErrorCode = QNetworkReply::NoError;
-
- connect(reply, SIGNAL(finished()), SLOT(finishedReply()));
- connect(reply, SIGNAL(finishedWithError(QNetworkReply::NetworkError, const QString &)),
- SLOT(finishedWithError(QNetworkReply::NetworkError, const QString &)));
-
- QTime stopWatch;
- stopWatch.start();
- forever {
- QCoreApplication::instance()->processEvents();
- if (finishedWithErrorCalled)
- break;
- if (stopWatch.elapsed() >= 30000)
- break;
- }
- QCOMPARE(netErrorCode, networkError);
- delete reply;
-}
-#endif
-
-
-void tst_QHttpNetworkConnection::getMultiple_data()
-{
- QTest::addColumn<quint16>("connectionCount");
- QTest::addColumn<bool>("pipeliningAllowed");
- // send 100 requests. apache will usually force-close after 100 requests in a single tcp connection
- QTest::addColumn<int>("requestCount");
-
- QTest::newRow("6 connections, no pipelining, 100 requests") << quint16(6) << false << 100;
- QTest::newRow("1 connection, no pipelining, 100 requests") << quint16(1) << false << 100;
- QTest::newRow("6 connections, pipelining allowed, 100 requests") << quint16(6) << true << 100;
- QTest::newRow("1 connection, pipelining allowed, 100 requests") << quint16(1) << true << 100;
-}
-
-void tst_QHttpNetworkConnection::getMultiple()
-{
- QFETCH(quint16, connectionCount);
- QFETCH(bool, pipeliningAllowed);
- QFETCH(int, requestCount);
-
- QHttpNetworkConnection connection(connectionCount, QtNetworkSettings::serverName());
-
- QList<QHttpNetworkRequest*> requests;
- QList<QHttpNetworkReply*> replies;
-
- for (int i = 0; i < requestCount; i++) {
- // depending on what you use the results will vary.
- // for the "real" results, use a URL that has "internet latency" for you. Then (6 connections, pipelining) will win.
- // for LAN latency, you will possibly get that (1 connection, no pipelining) is the fastest
- QHttpNetworkRequest *request = new QHttpNetworkRequest("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
- // located in Berlin:
- //QHttpNetworkRequest *request = new QHttpNetworkRequest(QUrl("http://klinsmann.nokia.trolltech.de/~berlin/qtcreatorad.gif"));
- if (pipeliningAllowed)
- request->setPipeliningAllowed(true);
- requests.append(request);
- QHttpNetworkReply *reply = connection.sendRequest(*request);
- replies.append(reply);
- }
-
- QTime stopWatch;
- stopWatch.start();
- int finishedCount = 0;
- do {
- QCoreApplication::instance()->processEvents();
- if (stopWatch.elapsed() >= 60000)
- break;
-
- finishedCount = 0;
- for (int i = 0; i < replies.length(); i++)
- if (replies.at(i)->isFinished())
- finishedCount++;
-
- } while (finishedCount != replies.length());
-
- // redundant
- for (int i = 0; i < replies.length(); i++)
- QVERIFY(replies.at(i)->isFinished());
-
- qDebug() << "===" << stopWatch.elapsed() << "msec ===";
-
- qDeleteAll(requests);
- qDeleteAll(replies);
-}
-
-void tst_QHttpNetworkConnection::getMultipleWithPipeliningAndMultiplePriorities()
-{
- quint16 requestCount = 100;
-
- // use 2 connections.
- QHttpNetworkConnection connection(2, QtNetworkSettings::serverName());
-
- QList<QHttpNetworkRequest*> requests;
- QList<QHttpNetworkReply*> replies;
-
- for (int i = 0; i < requestCount; i++) {
- QHttpNetworkRequest *request = 0;
- if (i % 3)
- request = new QHttpNetworkRequest("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt", QHttpNetworkRequest::Get);
- else
- request = new QHttpNetworkRequest("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt", QHttpNetworkRequest::Head);
-
- if (i % 2 || i % 3)
- request->setPipeliningAllowed(true);
-
- if (i % 3)
- request->setPriority(QHttpNetworkRequest::HighPriority);
- else if (i % 5)
- request->setPriority(QHttpNetworkRequest::NormalPriority);
- else if (i % 7)
- request->setPriority(QHttpNetworkRequest::LowPriority);
-
- requests.append(request);
- QHttpNetworkReply *reply = connection.sendRequest(*request);
- replies.append(reply);
- }
-
- QTime stopWatch;
- stopWatch.start();
- int finishedCount = 0;
- do {
- QCoreApplication::instance()->processEvents();
- if (stopWatch.elapsed() >= 60000)
- break;
-
- finishedCount = 0;
- for (int i = 0; i < replies.length(); i++)
- if (replies.at(i)->isFinished())
- finishedCount++;
-
- } while (finishedCount != replies.length());
-
- int pipelinedCount = 0;
- for (int i = 0; i < replies.length(); i++) {
- QVERIFY(replies.at(i)->isFinished());
- QVERIFY (!(replies.at(i)->request().isPipeliningAllowed() == false
- && replies.at(i)->isPipeliningUsed()));
-
- if (replies.at(i)->isPipeliningUsed())
- pipelinedCount++;
- }
-
- // We allow pipelining for every 2nd,3rd,4th,6th,8th,9th,10th etc request.
- // Assume that half of the requests had been pipelined.
- // (this is a very relaxed condition, when last measured 79 of 100
- // requests had been pipelined)
- QVERIFY(pipelinedCount >= requestCount / 2);
-
- qDebug() << "===" << stopWatch.elapsed() << "msec ===";
-
- qDeleteAll(requests);
- qDeleteAll(replies);
-}
-
-class GetMultipleWithPrioritiesReceiver : public QObject
-{
- Q_OBJECT
-public:
- int highPrioReceived;
- int lowPrioReceived;
- int requestCount;
- GetMultipleWithPrioritiesReceiver(int rq) : highPrioReceived(0), lowPrioReceived(0), requestCount(rq) { }
-public Q_SLOTS:
- void finishedSlot() {
- QHttpNetworkReply *reply = (QHttpNetworkReply*) sender();
- if (reply->request().priority() == QHttpNetworkRequest::HighPriority)
- highPrioReceived++;
- else if (reply->request().priority() == QHttpNetworkRequest::LowPriority)
- lowPrioReceived++;
- else
- QFAIL("Wrong priority!?");
-
- QVERIFY(highPrioReceived + 7 >= lowPrioReceived);
-
- if (highPrioReceived + lowPrioReceived == requestCount)
- QTestEventLoop::instance().exitLoop();
- }
-};
-
-void tst_QHttpNetworkConnection::getMultipleWithPriorities()
-{
- quint16 requestCount = 100;
- // use 2 connections.
- QHttpNetworkConnection connection(2, QtNetworkSettings::serverName());
- GetMultipleWithPrioritiesReceiver receiver(requestCount);
- QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
- QList<QHttpNetworkRequest*> requests;
- QList<QHttpNetworkReply*> replies;
-
- for (int i = 0; i < requestCount; i++) {
- QHttpNetworkRequest *request = 0;
- if (i % 3)
- request = new QHttpNetworkRequest(url, QHttpNetworkRequest::Get);
- else
- request = new QHttpNetworkRequest(url, QHttpNetworkRequest::Head);
-
- if (i % 2)
- request->setPriority(QHttpNetworkRequest::HighPriority);
- else
- request->setPriority(QHttpNetworkRequest::LowPriority);
-
- requests.append(request);
- QHttpNetworkReply *reply = connection.sendRequest(*request);
- connect(reply, SIGNAL(finished()), &receiver, SLOT(finishedSlot()));
- replies.append(reply);
- }
-
- QTestEventLoop::instance().enterLoop(40);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- qDeleteAll(requests);
- qDeleteAll(replies);
-}
-
-
-class GetEmptyWithPipeliningReceiver : public QObject
-{
- Q_OBJECT
-public:
- int receivedCount;
- int requestCount;
- GetEmptyWithPipeliningReceiver(int rq) : receivedCount(0),requestCount(rq) { }
-public Q_SLOTS:
- void finishedSlot() {
- QHttpNetworkReply *reply = (QHttpNetworkReply*) sender();
- Q_UNUSED(reply);
- receivedCount++;
-
- if (receivedCount == requestCount)
- QTestEventLoop::instance().exitLoop();
- }
-};
-
-void tst_QHttpNetworkConnection::getEmptyWithPipelining()
-{
- quint16 requestCount = 50;
- // use 2 connections.
- QHttpNetworkConnection connection(2, QtNetworkSettings::serverName());
- GetEmptyWithPipeliningReceiver receiver(requestCount);
-
- QUrl url("http://" + QtNetworkSettings::serverName() + "/cgi-bin/echo.cgi"); // a get on this = getting an empty file
- QList<QHttpNetworkRequest*> requests;
- QList<QHttpNetworkReply*> replies;
-
- for (int i = 0; i < requestCount; i++) {
- QHttpNetworkRequest *request = 0;
- request = new QHttpNetworkRequest(url, QHttpNetworkRequest::Get);
- request->setPipeliningAllowed(true);
-
- requests.append(request);
- QHttpNetworkReply *reply = connection.sendRequest(*request);
- connect(reply, SIGNAL(finished()), &receiver, SLOT(finishedSlot()));
- replies.append(reply);
- }
-
- QTestEventLoop::instance().enterLoop(20);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- qDeleteAll(requests);
- qDeleteAll(replies);
-}
-
-class GetAndEverythingShouldBePipelinedReceiver : public QObject
-{
- Q_OBJECT
-public:
- int receivedCount;
- int requestCount;
- GetAndEverythingShouldBePipelinedReceiver(int rq) : receivedCount(0),requestCount(rq) { }
-public Q_SLOTS:
- void finishedSlot() {
- QHttpNetworkReply *reply = (QHttpNetworkReply*) sender();
- Q_UNUSED(reply);
- receivedCount++;
-
- if (receivedCount == requestCount)
- QTestEventLoop::instance().exitLoop();
- }
-};
-
-void tst_QHttpNetworkConnection::getAndEverythingShouldBePipelined()
-{
- quint16 requestCount = 100;
- // use 1 connection.
- QHttpNetworkConnection connection(1, QtNetworkSettings::serverName());
- QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
- QList<QHttpNetworkRequest*> requests;
- QList<QHttpNetworkReply*> replies;
-
- GetAndEverythingShouldBePipelinedReceiver receiver(requestCount);
-
- for (int i = 0; i < requestCount; i++) {
- QHttpNetworkRequest *request = 0;
- request = new QHttpNetworkRequest(url, QHttpNetworkRequest::Get);
- request->setPipeliningAllowed(true);
- requests.append(request);
- QHttpNetworkReply *reply = connection.sendRequest(*request);
- connect(reply, SIGNAL(finished()), &receiver, SLOT(finishedSlot()));
- replies.append(reply);
- }
- QTestEventLoop::instance().enterLoop(40);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- qDeleteAll(requests);
- qDeleteAll(replies);
-
-}
-
-
-void tst_QHttpNetworkConnection::getAndThenDeleteObject_data()
-{
- QTest::addColumn<bool>("replyFirst");
-
- QTest::newRow("delete-reply-first") << true;
- QTest::newRow("delete-connection-first") << false;
-}
-
-void tst_QHttpNetworkConnection::getAndThenDeleteObject()
-{
- // yes, this will leak if the testcase fails. I don't care. It must not fail then :P
- QHttpNetworkConnection *connection = new QHttpNetworkConnection(QtNetworkSettings::serverName());
- QHttpNetworkRequest request("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile");
- QHttpNetworkReply *reply = connection->sendRequest(request);
- reply->setDownstreamLimited(true);
-
- QTime stopWatch;
- stopWatch.start();
- forever {
- QCoreApplication::instance()->processEvents();
- if (reply->bytesAvailable())
- break;
- if (stopWatch.elapsed() >= 30000)
- break;
- }
-
- QVERIFY(reply->bytesAvailable());
- QCOMPARE(reply->statusCode() ,200);
- QVERIFY(!reply->isFinished()); // must not be finished
-
- QFETCH(bool, replyFirst);
-
- if (replyFirst) {
- delete reply;
- delete connection;
- } else {
- delete connection;
- delete reply;
- }
-}
-
-
-
-QTEST_MAIN(tst_QHttpNetworkConnection)
-#include "tst_qhttpnetworkconnection.moc"
diff --git a/tests/auto/qhttpsocketengine/tst_qhttpsocketengine.cpp b/tests/auto/qhttpsocketengine/tst_qhttpsocketengine.cpp
deleted file mode 100644
index ee914bd04e..0000000000
--- a/tests/auto/qhttpsocketengine/tst_qhttpsocketengine.cpp
+++ /dev/null
@@ -1,746 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qcoreapplication.h>
-
-#include <private/qhttpsocketengine_p.h>
-#include <qhostinfo.h>
-#include <qhostaddress.h>
-#include <qtcpsocket.h>
-#include <qhttp.h>
-#include <qdebug.h>
-#include <qtcpserver.h>
-
-#include "../network-settings.h"
-
-class tst_QHttpSocketEngine : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QHttpSocketEngine();
- virtual ~tst_QHttpSocketEngine();
-
-
-public slots:
- void init();
- void cleanup();
-private slots:
- void construction();
- void errorTest_data();
- void errorTest();
- void simpleConnectToIMAP();
- void simpleErrorsAndStates();
-
- void tcpSocketBlockingTest();
- void tcpSocketNonBlockingTest();
- void downloadBigFile();
- // void tcpLoopbackPerformance();
- void passwordAuth();
-
-protected slots:
- void tcpSocketNonBlocking_hostFound();
- void tcpSocketNonBlocking_connected();
- void tcpSocketNonBlocking_closed();
- void tcpSocketNonBlocking_readyRead();
- void tcpSocketNonBlocking_bytesWritten(qint64);
- void exitLoopSlot();
- void downloadBigFileSlot();
-
-private:
- QTcpSocket *tcpSocketNonBlocking_socket;
- QStringList tcpSocketNonBlocking_data;
- qint64 tcpSocketNonBlocking_totalWritten;
- QTcpSocket *tmpSocket;
- qint64 bytesAvailable;
-};
-
-class MiniHttpServer: public QTcpServer
-{
- Q_OBJECT
- QTcpSocket *client;
- QList<QByteArray> dataToTransmit;
-
-public:
- QByteArray receivedData;
-
- MiniHttpServer(const QList<QByteArray> &data) : client(0), dataToTransmit(data)
- {
- listen();
- connect(this, SIGNAL(newConnection()), this, SLOT(doAccept()));
- }
-
-public slots:
- void doAccept()
- {
- client = nextPendingConnection();
- connect(client, SIGNAL(readyRead()), this, SLOT(sendData()));
- }
-
- void sendData()
- {
- receivedData += client->readAll();
- int idx = client->property("dataTransmitionIdx").toInt();
- if (receivedData.contains("\r\n\r\n") ||
- receivedData.contains("\n\n")) {
- if (idx < dataToTransmit.length())
- client->write(dataToTransmit.at(idx++));
- if (idx == dataToTransmit.length()) {
- client->disconnectFromHost();
- disconnect(client, 0, this, 0);
- client = 0;
- } else {
- client->setProperty("dataTransmitionIdx", idx);
- }
- }
- }
-};
-
-tst_QHttpSocketEngine::tst_QHttpSocketEngine()
-{
- Q_SET_DEFAULT_IAP
-}
-
-tst_QHttpSocketEngine::~tst_QHttpSocketEngine()
-{
-}
-
-
-void tst_QHttpSocketEngine::init()
-{
- tmpSocket = 0;
- bytesAvailable = 0;
-}
-
-void tst_QHttpSocketEngine::cleanup()
-{
-}
-
-//---------------------------------------------------------------------------
-void tst_QHttpSocketEngine::construction()
-{
- QHttpSocketEngine socketDevice;
-
- QVERIFY(!socketDevice.isValid());
-
- // Initialize device
- QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(socketDevice.isValid());
- QVERIFY(socketDevice.protocol() == QAbstractSocket::IPv4Protocol);
- QVERIFY(socketDevice.socketType() == QAbstractSocket::TcpSocket);
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
- // QVERIFY(socketDevice.socketDescriptor() != -1);
- QVERIFY(socketDevice.localAddress() == QHostAddress());
- QVERIFY(socketDevice.localPort() == 0);
- QVERIFY(socketDevice.peerAddress() == QHostAddress());
- QVERIFY(socketDevice.peerPort() == 0);
- QVERIFY(socketDevice.error() == QAbstractSocket::UnknownSocketError);
-
- //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::bytesAvailable() was called in QAbstractSocket::UnconnectedState");
- QVERIFY(socketDevice.bytesAvailable() == 0);
-
- //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::hasPendingDatagrams() was called in QAbstractSocket::UnconnectedState");
- QVERIFY(!socketDevice.hasPendingDatagrams());
-}
-
-//---------------------------------------------------------------------------
-void tst_QHttpSocketEngine::errorTest_data()
-{
- QTest::addColumn<QString>("hostname");
- QTest::addColumn<int>("port");
- QTest::addColumn<QString>("username");
- QTest::addColumn<QString>("response");
- QTest::addColumn<int>("expectedError");
-
- QQueue<QByteArray> responses;
- QTest::newRow("proxy-host-not-found") << "this-host-does-not-exist." << 1080 << QString()
- << QString()
- << int(QAbstractSocket::ProxyNotFoundError);
- QTest::newRow("proxy-connection-refused") << QtNetworkSettings::serverName() << 2 << QString()
- << QString()
- << int(QAbstractSocket::ProxyConnectionRefusedError);
-
- QTest::newRow("garbage1") << QString() << 0 << QString()
- << "This is not HTTP\r\n\r\n"
- << int(QAbstractSocket::ProxyProtocolError);
-
- QTest::newRow("garbage2") << QString() << 0 << QString()
- << "This is not HTTP"
- << int(QAbstractSocket::ProxyConnectionClosedError);
-
- QTest::newRow("garbage3") << QString() << 0 << QString()
- << ""
- << int(QAbstractSocket::ProxyConnectionClosedError);
-
- QTest::newRow("forbidden") << QString() << 0 << QString()
- << "HTTP/1.0 403 Forbidden\r\n\r\n"
- << int(QAbstractSocket::SocketAccessError);
-
- QTest::newRow("method-not-allowed") << QString() << 0 << QString()
- << "HTTP/1.0 405 Method Not Allowed\r\n\r\n"
- << int(QAbstractSocket::SocketAccessError);
-
- QTest::newRow("proxy-authentication-too-short")
- << QString() << 0 << "foo"
- << "HTTP/1.0 407 Proxy Authentication Required\r\n\r\n"
- << int(QAbstractSocket::ProxyProtocolError);
-
- QTest::newRow("proxy-authentication-invalid-method")
- << QString() << 0 << "foo"
- << "HTTP/1.0 407 Proxy Authentication Required\r\n"
- "Proxy-Authenticate: Frobnicator\r\n\r\n"
- << int(QAbstractSocket::ProxyProtocolError);
-
- QTest::newRow("proxy-authentication-required")
- << QString() << 0 << "foo"
- << "HTTP/1.0 407 Proxy Authentication Required\r\n"
- "Proxy-Connection: close\r\n"
- "Proxy-Authenticate: Basic, realm=wonderland\r\n\r\n"
- << int(QAbstractSocket::ProxyAuthenticationRequiredError);
-
- QTest::newRow("proxy-authentication-required2")
- << QString() << 0 << "foo"
- << "HTTP/1.0 407 Proxy Authentication Required\r\n"
- "Proxy-Connection: keep-alive\r\n"
- "Proxy-Authenticate: Basic, realm=wonderland\r\n\r\n"
- "\1"
- "HTTP/1.0 407 Proxy Authentication Required\r\n"
- "Proxy-Authenticate: Basic, realm=wonderland\r\n\r\n"
- << int(QAbstractSocket::ProxyAuthenticationRequiredError);
-
- QTest::newRow("proxy-authentication-required-noclose")
- << QString() << 0 << "foo"
- << "HTTP/1.0 407 Proxy Authentication Required\r\n"
- "Proxy-Authenticate: Basic\r\n"
- "\r\n"
- << int(QAbstractSocket::ProxyAuthenticationRequiredError);
-
- QTest::newRow("connection-refused") << QString() << 0 << QString()
- << "HTTP/1.0 503 Service Unavailable\r\n\r\n"
- << int(QAbstractSocket::ConnectionRefusedError);
-
- QTest::newRow("host-not-found") << QString() << 0 << QString()
- << "HTTP/1.0 404 Not Found\r\n\r\n"
- << int(QAbstractSocket::HostNotFoundError);
-
- QTest::newRow("weird-http-reply") << QString() << 0 << QString()
- << "HTTP/1.0 206 Partial Content\r\n\r\n"
- << int(QAbstractSocket::ProxyProtocolError);
-}
-
-void tst_QHttpSocketEngine::errorTest()
-{
- QFETCH(QString, hostname);
- QFETCH(int, port);
- QFETCH(QString, username);
- QFETCH(QString, response);
- QFETCH(int, expectedError);
-
- MiniHttpServer server(response.toLatin1().split('\1'));
-
- if (hostname.isEmpty()) {
- hostname = "127.0.0.1";
- port = server.serverPort();
- }
- QTcpSocket socket;
- socket.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, hostname, port, username, username));
- socket.connectToHost("0.1.2.3", 12345);
-
- connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)),
- &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(int(socket.error()), expectedError);
-}
-
-//---------------------------------------------------------------------------
-void tst_QHttpSocketEngine::simpleConnectToIMAP()
-{
- QHttpSocketEngine socketDevice;
-
- // Initialize device
- QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-
- socketDevice.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128));
-
- QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
- QVERIFY(socketDevice.waitForWrite());
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
- QVERIFY(!socketDevice.localAddress().isNull());
- QVERIFY(socketDevice.localPort() > 0);
-
- // Wait for the greeting
- QVERIFY(socketDevice.waitForRead());
-
- // Read the greeting
- qint64 available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- QByteArray array;
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
-
-
- // Write a logout message
- QByteArray array2 = "XXXX LOGOUT\r\n";
- QVERIFY(socketDevice.write(array2.data(),
- array2.size()) == array2.size());
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
-
- available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QCOMPARE(array.constData(), "* BYE LOGOUT received\r\nXXXX OK Completed\r\n");
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
- char c;
- QCOMPARE(socketDevice.read(&c, sizeof(c)), (qint64) -1);
- QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-}
-
-//---------------------------------------------------------------------------
-void tst_QHttpSocketEngine::simpleErrorsAndStates()
-{
- {
- QHttpSocketEngine socketDevice;
-
- // Initialize device
- QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
-
- socketDevice.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128));
-
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
- QVERIFY(!socketDevice.connectToHost(QHostAddress(QtNetworkSettings::serverName()), 8088));
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
- if (socketDevice.waitForWrite(15000)) {
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState ||
- socketDevice.state() == QAbstractSocket::UnconnectedState);
- } else {
- QVERIFY(socketDevice.error() == QAbstractSocket::SocketTimeoutError);
- }
- }
-
-}
-
-/*
-//---------------------------------------------------------------------------
-void tst_QHttpSocketEngine::tcpLoopbackPerformance()
-{
- QTcpServer server;
-
- // Bind to any port on all interfaces
- QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
- QVERIFY(server.state() == QAbstractSocket::BoundState);
- quint16 port = server.localPort();
-
- // Listen for incoming connections
- QVERIFY(server.listen());
- QVERIFY(server.state() == QAbstractSocket::ListeningState);
-
- // Initialize a Tcp socket
- QHttpSocketEngine client;
- QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
-
- client.setProxy(QHostAddress("80.232.37.158"), 1081);
-
- // Connect to our server
- if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) {
- QVERIFY(client.waitForWrite());
- QVERIFY(client.connectToHost(QHostAddress("127.0.0.1"), port));
- }
-
- // The server accepts the connectio
- int socketDescriptor = server.accept();
- QVERIFY(socketDescriptor > 0);
-
- // A socket device is initialized on the server side, passing the
- // socket descriptor from accept(). It's pre-connected.
- QSocketLayer serverSocket;
- QVERIFY(serverSocket.initialize(socketDescriptor));
- QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
-
- const int messageSize = 1024 * 256;
- QByteArray message1(messageSize, '@');
- QByteArray answer(messageSize, '@');
-
- QTime timer;
- timer.start();
- qlonglong readBytes = 0;
- while (timer.elapsed() < 5000) {
- qlonglong written = serverSocket.write(message1.data(), message1.size());
- while (written > 0) {
- client.waitForRead();
- if (client.bytesAvailable() > 0) {
- qlonglong readNow = client.read(answer.data(), answer.size());
- written -= readNow;
- readBytes += readNow;
- }
- }
- }
-
- qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
- readBytes / (1024.0 * 1024.0),
- timer.elapsed() / 1024.0,
- (readBytes / (timer.elapsed() / 1000.0)) / (1024 * 1024));
-}
-*/
-
-
-
-void tst_QHttpSocketEngine::tcpSocketBlockingTest()
-{
- QHttpSocketEngineHandler http;
-
- QTcpSocket socket;
-
- // Connect
- socket.connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket.waitForConnected());
- QCOMPARE(socket.state(), QTcpSocket::ConnectedState);
-
- // Read greeting
- QVERIFY(socket.waitForReadyRead(5000));
- QString s = socket.readLine();
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(s.toLatin1()), qPrintable(s));
-
- // Write NOOP
- QCOMPARE((int) socket.write("1 NOOP\r\n", 8), 8);
-
- if (!socket.canReadLine())
- QVERIFY(socket.waitForReadyRead(5000));
-
- // Read response
- s = socket.readLine();
- QCOMPARE(s.toLatin1().constData(), "1 OK Completed\r\n");
-
- // Write LOGOUT
- QCOMPARE((int) socket.write("2 LOGOUT\r\n", 10), 10);
-
- if (!socket.canReadLine())
- QVERIFY(socket.waitForReadyRead(5000));
-
- // Read two lines of respose
- s = socket.readLine();
- QCOMPARE(s.toLatin1().constData(), "* BYE LOGOUT received\r\n");
-
- if (!socket.canReadLine())
- QVERIFY(socket.waitForReadyRead(5000));
-
- s = socket.readLine();
- QCOMPARE(s.toLatin1().constData(), "2 OK Completed\r\n");
-
- // Close the socket
- socket.close();
-
- // Check that it's closed
- QCOMPARE(socket.state(), QTcpSocket::UnconnectedState);
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QHttpSocketEngine::tcpSocketNonBlockingTest()
-{
- QHttpSocketEngineHandler http;
-
- QTcpSocket socket;
- connect(&socket, SIGNAL(hostFound()), SLOT(tcpSocketNonBlocking_hostFound()));
- connect(&socket, SIGNAL(connected()), SLOT(tcpSocketNonBlocking_connected()));
- connect(&socket, SIGNAL(disconnected()), SLOT(tcpSocketNonBlocking_closed()));
- connect(&socket, SIGNAL(bytesWritten(qint64)), SLOT(tcpSocketNonBlocking_bytesWritten(qint64)));
- connect(&socket, SIGNAL(readyRead()), SLOT(tcpSocketNonBlocking_readyRead()));
- tcpSocketNonBlocking_socket = &socket;
-
- // Connect
- socket.connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket.state() == QTcpSocket::HostLookupState ||
- socket.state() == QTcpSocket::ConnectingState);
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
- if (socket.state() == QTcpSocket::ConnectingState) {
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
- }
-
- QCOMPARE(socket.state(), QTcpSocket::ConnectedState);
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
- // Read greeting
- QVERIFY(!tcpSocketNonBlocking_data.isEmpty());
- QByteArray data = tcpSocketNonBlocking_data.at(0).toLatin1();
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(data), data.constData());
-
-
- tcpSocketNonBlocking_data.clear();
-
- tcpSocketNonBlocking_totalWritten = 0;
-
- // Write NOOP
- QCOMPARE((int) socket.write("1 NOOP\r\n", 8), 8);
-
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
- QVERIFY(tcpSocketNonBlocking_totalWritten == 8);
-
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
-
- // Read response
- QVERIFY(!tcpSocketNonBlocking_data.isEmpty());
- QCOMPARE(tcpSocketNonBlocking_data.at(0).toLatin1().constData(), "1 OK Completed\r\n");
- tcpSocketNonBlocking_data.clear();
-
-
- tcpSocketNonBlocking_totalWritten = 0;
-
- // Write LOGOUT
- QCOMPARE((int) socket.write("2 LOGOUT\r\n", 10), 10);
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
- QVERIFY(tcpSocketNonBlocking_totalWritten == 10);
-
- // Wait for greeting
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
- // Read two lines of respose
- QCOMPARE(tcpSocketNonBlocking_data.at(0).toLatin1().constData(), "* BYE LOGOUT received\r\n");
- QCOMPARE(tcpSocketNonBlocking_data.at(1).toLatin1().constData(), "2 OK Completed\r\n");
- tcpSocketNonBlocking_data.clear();
-
- // Close the socket
- socket.close();
-
- // Check that it's closed
- QCOMPARE(socket.state(), QTcpSocket::UnconnectedState);
-}
-
-void tst_QHttpSocketEngine::tcpSocketNonBlocking_hostFound()
-{
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QHttpSocketEngine::tcpSocketNonBlocking_connected()
-{
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QHttpSocketEngine::tcpSocketNonBlocking_readyRead()
-{
- while (tcpSocketNonBlocking_socket->canReadLine())
- tcpSocketNonBlocking_data.append(tcpSocketNonBlocking_socket->readLine());
-
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QHttpSocketEngine::tcpSocketNonBlocking_bytesWritten(qint64 written)
-{
- tcpSocketNonBlocking_totalWritten += written;
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QHttpSocketEngine::tcpSocketNonBlocking_closed()
-{
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QHttpSocketEngine::downloadBigFile()
-{
- QHttpSocketEngineHandler http;
-
- if (tmpSocket)
- delete tmpSocket;
- tmpSocket = new QTcpSocket;
-
- connect(tmpSocket, SIGNAL(connected()), SLOT(exitLoopSlot()));
- connect(tmpSocket, SIGNAL(readyRead()), SLOT(downloadBigFileSlot()));
-
- tmpSocket->connectToHost(QtNetworkSettings::serverName(), 80);
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout())
- QFAIL("Network operation timed out");
-
- QByteArray hostName = QtNetworkSettings::serverName().toLatin1();
- QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState);
- QVERIFY(tmpSocket->write("GET /qtest/mediumfile HTTP/1.0\r\n") > 0);
- QVERIFY(tmpSocket->write("Host: ") > 0);
- QVERIFY(tmpSocket->write(hostName.data()) > 0);
- QVERIFY(tmpSocket->write("\r\n") > 0);
- QVERIFY(tmpSocket->write("\r\n") > 0);
-
- bytesAvailable = 0;
-
- QTime stopWatch;
- stopWatch.start();
-
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QTestEventLoop::instance().enterLoop(240);
-#else
- QTestEventLoop::instance().enterLoop(60);
-#endif
- if (QTestEventLoop::instance().timeout())
- QFAIL("Network operation timed out");
-
- QVERIFY(bytesAvailable >= 10000000);
-
- QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState);
-
- qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
- bytesAvailable / (1024.0 * 1024.0),
- stopWatch.elapsed() / 1024.0,
- (bytesAvailable / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));
-
- delete tmpSocket;
- tmpSocket = 0;
-}
-
-void tst_QHttpSocketEngine::exitLoopSlot()
-{
- QTestEventLoop::instance().exitLoop();
-}
-
-
-void tst_QHttpSocketEngine::downloadBigFileSlot()
-{
- bytesAvailable += tmpSocket->readAll().size();
- if (bytesAvailable >= 10000000)
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QHttpSocketEngine::passwordAuth()
-{
- QHttpSocketEngine socketDevice;
-
- // Initialize device
- QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-
- socketDevice.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128, "qsockstest", "password"));
-
- QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
- QVERIFY(socketDevice.waitForWrite());
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
-
- // Wait for the greeting
- QVERIFY(socketDevice.waitForRead());
-
- // Read the greeting
- qint64 available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- QByteArray array;
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
-
-
- // Write a logout message
- QByteArray array2 = "XXXX LOGOUT\r\n";
- QVERIFY(socketDevice.write(array2.data(),
- array2.size()) == array2.size());
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
-
- available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QCOMPARE(array.constData(), "* BYE LOGOUT received\r\nXXXX OK Completed\r\n");
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
- char c;
- QVERIFY(socketDevice.read(&c, sizeof(c)) == -1);
- QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-}
-
-//----------------------------------------------------------------------------------
-
-QTEST_MAIN(tst_QHttpSocketEngine)
-#include "tst_qhttpsocketengine.moc"
diff --git a/tests/auto/qicon/qicon.pro b/tests/auto/qicon/qicon.pro
deleted file mode 100644
index 77a9b91032..0000000000
--- a/tests/auto/qicon/qicon.pro
+++ /dev/null
@@ -1,29 +0,0 @@
-load(qttest_p4)
-
-SOURCES += tst_qicon.cpp
-RESOURCES = tst_qicon.qrc
-
-wince* {
- QT += xml svg
- addFiles.files += $$_PRO_FILE_PWD_/*.png
- addFiles.files += $$_PRO_FILE_PWD_/*.svg
- addFiles.files += $$_PRO_FILE_PWD_/*.svgz
- addFiles.files += $$_PRO_FILE_PWD_/tst_qicon.cpp
- addFiles.path = .
- DEPLOYMENT += addFiles
-
- DEPLOYMENT_PLUGIN += qsvg
- DEFINES += SRCDIR=\\\".\\\"
-} else:symbian {
- QT += xml svg
- addFiles.files = *.png tst_qicon.cpp *.svg *.svgz
- addFiles.path = .
- DEPLOYMENT += addFiles
- qt_not_deployed {
- plugins.files = qsvgicon.dll
- plugins.path = iconengines
- DEPLOYMENT += plugins
- }
-} else {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
-}
diff --git a/tests/auto/qidentityproxymodel/qidentityproxymodel.pro b/tests/auto/qidentityproxymodel/qidentityproxymodel.pro
index f529e20c7f..7df0e65d03 100644
--- a/tests/auto/qidentityproxymodel/qidentityproxymodel.pro
+++ b/tests/auto/qidentityproxymodel/qidentityproxymodel.pro
@@ -2,5 +2,6 @@ load(qttest_p4)
INCLUDEPATH += $$PWD/../modeltest
+QT += widgets
SOURCES += tst_qidentityproxymodel.cpp ../modeltest/dynamictreemodel.cpp ../modeltest/modeltest.cpp
HEADERS += ../modeltest/dynamictreemodel.h ../modeltest/modeltest.h
diff --git a/tests/auto/qimage/tst_qimage.cpp b/tests/auto/qimage/tst_qimage.cpp
deleted file mode 100644
index 4336feba7a..0000000000
--- a/tests/auto/qimage/tst_qimage.cpp
+++ /dev/null
@@ -1,2014 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qimage.h>
-#include <qimagereader.h>
-#include <qlist.h>
-#include <qmatrix.h>
-#include <stdio.h>
-
-#include <qpainter.h>
-#include <private/qdrawhelper_p.h>
-
-
-//TESTED_CLASS=
-//TESTED_FILES=
-#if defined(Q_OS_SYMBIAN)
-# define SRCDIR ""
-#endif
-
-Q_DECLARE_METATYPE(QImage::Format)
-Q_DECLARE_METATYPE(Qt::GlobalColor)
-
-class tst_QImage : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QImage();
-
-private slots:
- void swap();
- void create();
- void createInvalidXPM();
- void createFromUChar();
- void formatHandlersInput_data();
- void formatHandlersInput();
-
- void setAlphaChannel_data();
- void setAlphaChannel();
-
- void alphaChannel();
-
- void convertToFormat_data();
- void convertToFormat();
-
- void convertToFormatRgb888ToRGB32();
-
- void createAlphaMask_data();
- void createAlphaMask();
-#ifndef QT_NO_IMAGE_HEURISTIC_MASK
- void createHeuristicMask();
-#endif
-
- void dotsPerMeterZero();
-
- void convertToFormatPreserveDotsPrMeter();
-#ifndef QT_NO_IMAGE_TEXT
- void convertToFormatPreserveText();
-#endif
-
- void rotate_data();
- void rotate();
-
- void copy();
-
- void setPixel_data();
- void setPixel();
-
- void setColorCount();
- void setColor();
-
- void rasterClipping();
-
- void pointOverloads();
- void destructor();
- void cacheKey();
-
- void smoothScale();
- void smoothScale2();
- void smoothScale3();
-
- void smoothScaleBig();
- void smoothScaleAlpha();
-
- void transformed_data();
- void transformed();
- void transformed2();
-
- void scaled();
-
- void paintEngine();
- void setAlphaChannelWhilePainting();
-
- void smoothScaledSubImage();
-
- void nullSize_data();
- void nullSize();
-
- void premultipliedAlphaConsistency();
-
- void compareIndexed();
-
- void fillColor_data();
- void fillColor();
-
- void fillColorWithAlpha();
-
- void rgbSwapped_data();
- void rgbSwapped();
-
- void deepCopyWhenPaintingActive();
- void scaled_QTBUG19157();
-};
-
-tst_QImage::tst_QImage()
-
-{
-}
-
-void tst_QImage::swap()
-{
- QImage i1( 16, 16, QImage::Format_RGB32 ), i2( 32, 32, QImage::Format_RGB32 );
- i1.fill( Qt::white );
- i2.fill( Qt::black );
- const qint64 i1k = i1.cacheKey();
- const qint64 i2k = i2.cacheKey();
- i1.swap(i2);
- QCOMPARE(i1.cacheKey(), i2k);
- QCOMPARE(i1.size(), QSize(32,32));
- QCOMPARE(i2.cacheKey(), i1k);
- QCOMPARE(i2.size(), QSize(16,16));
-}
-
-// Test if QImage (or any functions called from QImage) throws an
-// exception when creating an extremely large image.
-// QImage::create() should return "false" in this case.
-void tst_QImage::create()
-{
- bool cr = true;
-#if !defined(Q_WS_QWS) && !defined(Q_OS_WINCE)
- QT_TRY {
-#endif
- //QImage image(7000000, 7000000, 8, 256, QImage::IgnoreEndian);
- QImage image(7000000, 7000000, QImage::Format_Indexed8);
- image.setColorCount(256);
- cr = !image.isNull();
-#if !defined(Q_WS_QWS) && !defined(Q_OS_WINCE)
- } QT_CATCH (...) {
- }
-#endif
- QVERIFY( !cr );
-}
-
-void tst_QImage::createInvalidXPM()
-{
- QTest::ignoreMessage(QtWarningMsg, "QImage::QImage(), XPM is not supported");
- const char *xpm[] = {""};
- QImage invalidXPM(xpm);
- QVERIFY(invalidXPM.isNull());
-}
-
-void tst_QImage::createFromUChar()
-{
- uchar data[] = {
-#if Q_BYTE_ORDER == Q_BIG_ENDIAN
- 0xFF,
-#endif
- 1,1,1, 0xFF, 2,2,2, 0xFF, 3,3,3, 0xFF, 4,4,4,
-#if Q_BYTE_ORDER != Q_BIG_ENDIAN
- 0xFF,
-#endif
- };
-
- // When the data is const, nothing you do to the image will change the source data.
- QImage i1((const uchar*)data, 2, 2, 8, QImage::Format_RGB32);
- QCOMPARE(i1.pixel(0,0), 0xFF010101U);
- QCOMPARE(i1.pixel(1,0), 0xFF020202U);
- QCOMPARE(i1.pixel(0,1), 0xFF030303U);
- QCOMPARE(i1.pixel(1,1), 0xFF040404U);
- {
- QImage i(i1);
- i.setPixel(0,0,5);
- }
- QCOMPARE(i1.pixel(0,0), 0xFF010101U);
- QCOMPARE(*(QRgb*)data, 0xFF010101U);
- *((QRgb*)i1.bits()) = 7U;
- QCOMPARE(i1.pixel(0,0), 7U);
- QCOMPARE(*(QRgb*)data, 0xFF010101U);
-
- // Changing copies should not change the original image or data.
- {
- QImage i(i1);
- i.setPixel(0,0,5);
- QCOMPARE(*(QRgb*)data, 0xFF010101U);
- i1.setPixel(0,0,9);
- QCOMPARE(i1.pixel(0,0), 0xFF000009U);
- QCOMPARE(i.pixel(0,0), 0xFF000005U);
- }
- QCOMPARE(i1.pixel(0,0), 0xFF000009U);
-
- // When the data is non-const, nothing you do to copies of the image will change the source data,
- // but changing the image (here via bits()) will change the source data.
- QImage i2((uchar*)data, 2, 2, 8, QImage::Format_RGB32);
- QCOMPARE(i2.pixel(0,0), 0xFF010101U);
- QCOMPARE(i2.pixel(1,0), 0xFF020202U);
- QCOMPARE(i2.pixel(0,1), 0xFF030303U);
- QCOMPARE(i2.pixel(1,1), 0xFF040404U);
- {
- QImage i(i2);
- i.setPixel(0,0,5);
- }
- QCOMPARE(i2.pixel(0,0), 0xFF010101U);
- QCOMPARE(*(QRgb*)data, 0xFF010101U);
- *((QRgb*)i2.bits()) = 7U;
- QCOMPARE(i2.pixel(0,0), 7U);
- QCOMPARE(*(QRgb*)data, 7U);
-
- // Changing the data will change the image in either case.
- QImage i3((uchar*)data, 2, 2, 8, QImage::Format_RGB32);
- QImage i4((const uchar*)data, 2, 2, 8, QImage::Format_RGB32);
- *(QRgb*)data = 6U;
- QCOMPARE(i3.pixel(0,0), 6U);
- QCOMPARE(i4.pixel(0,0), 6U);
-}
-
-void tst_QImage::formatHandlersInput_data()
-{
- QTest::addColumn<QString>("testFormat");
- QTest::addColumn<QString>("testFile");
- #ifdef Q_OS_SYMBIAN
- const QString prefix = QLatin1String(SRCDIR) + "images/";
- #else
- const QString prefix = QLatin1String(SRCDIR) + "/images/";
- #endif
-
- // add a new line here when a file is added
- QTest::newRow("ICO") << "ICO" << prefix + "image.ico";
- QTest::newRow("PNG") << "PNG" << prefix + "image.png";
- QTest::newRow("GIF") << "GIF" << prefix + "image.gif";
- QTest::newRow("BMP") << "BMP" << prefix + "image.bmp";
- QTest::newRow("JPEG") << "JPEG" << prefix + "image.jpg";
- QTest::newRow("PBM") << "PBM" << prefix + "image.pbm";
- QTest::newRow("PGM") << "PGM" << prefix + "image.pgm";
- QTest::newRow("PPM") << "PPM" << prefix + "image.ppm";
- QTest::newRow("XBM") << "XBM" << prefix + "image.xbm";
- QTest::newRow("XPM") << "XPM" << prefix + "image.xpm";
-#if defined QTEST_HAVE_TIFF
- QTest::newRow("TIFF") << "TIFF" << prefix + "image.tif";
-#endif
-}
-
-void tst_QImage::formatHandlersInput()
-{
- QFETCH(QString, testFormat);
- QFETCH(QString, testFile);
- QList<QByteArray> formats = QImageReader::supportedImageFormats();
- // qDebug("Image input formats : %s", formats.join(" | ").latin1());
-
- bool formatSupported = false;
- for (QList<QByteArray>::Iterator it = formats.begin(); it != formats.end(); ++it) {
- if (*it == testFormat.toLower()) {
- formatSupported = true;
- break;
- }
- }
- if (formatSupported) {
-// qDebug(QImage::imageFormat(testFile));
- QCOMPARE(testFormat.toLatin1().toLower(), QImageReader::imageFormat(testFile));
- } else {
- QString msg = "Format not supported : ";
- QSKIP(QString(msg + testFormat).toLatin1(), SkipSingle);
- }
-}
-
-void tst_QImage::setAlphaChannel_data()
-{
- QTest::addColumn<int>("red");
- QTest::addColumn<int>("green");
- QTest::addColumn<int>("blue");
- QTest::addColumn<int>("alpha");
- QTest::addColumn<bool>("gray");
-
- QTest::newRow("red at 0%, gray") << 255 << 0 << 0 << 0 << true;
- QTest::newRow("red at 25%, gray") << 255 << 0 << 0 << 63 << true;
- QTest::newRow("red at 50%, gray") << 255 << 0 << 0 << 127 << true;
- QTest::newRow("red at 100%, gray") << 255 << 0 << 0 << 191 << true;
- QTest::newRow("red at 0%, 32bit") << 255 << 0 << 0 << 0 << false;
- QTest::newRow("red at 25%, 32bit") << 255 << 0 << 0 << 63 << false;
- QTest::newRow("red at 50%, 32bit") << 255 << 0 << 0 << 127 << false;
- QTest::newRow("red at 100%, 32bit") << 255 << 0 << 0 << 191 << false;
-
- QTest::newRow("green at 0%, gray") << 0 << 255 << 0 << 0 << true;
- QTest::newRow("green at 25%, gray") << 0 << 255 << 0 << 63 << true;
- QTest::newRow("green at 50%, gray") << 0 << 255 << 0 << 127 << true;
- QTest::newRow("green at 100%, gray") << 0 << 255 << 0 << 191 << true;
- QTest::newRow("green at 0%, 32bit") << 0 << 255 << 0 << 0 << false;
- QTest::newRow("green at 25%, 32bit") << 0 << 255 << 0 << 63 << false;
- QTest::newRow("green at 50%, 32bit") << 0 << 255 << 0 << 127 << false;
- QTest::newRow("green at 100%, 32bit") << 0 << 255 << 0 << 191 << false;
-
- QTest::newRow("blue at 0%, gray") << 0 << 0 << 255 << 0 << true;
- QTest::newRow("blue at 25%, gray") << 0 << 0 << 255 << 63 << true;
- QTest::newRow("blue at 50%, gray") << 0 << 0 << 255 << 127 << true;
- QTest::newRow("blue at 100%, gray") << 0 << 0 << 255 << 191 << true;
- QTest::newRow("blue at 0%, 32bit") << 0 << 0 << 255 << 0 << false;
- QTest::newRow("blue at 25%, 32bit") << 0 << 0 << 255 << 63 << false;
- QTest::newRow("blue at 50%, 32bit") << 0 << 0 << 255 << 127 << false;
- QTest::newRow("blue at 100%, 32bit") << 0 << 0 << 255 << 191 << false;
-}
-
-void tst_QImage::setAlphaChannel()
-{
- QFETCH(int, red);
- QFETCH(int, green);
- QFETCH(int, blue);
- QFETCH(int, alpha);
- QFETCH(bool, gray);
-
- int width = 100;
- int height = 100;
-
- QImage image(width, height, QImage::Format_RGB32);
- image.fill(qRgb(red, green, blue));
-
- // Create the alpha channel
- QImage alphaChannel;
- if (gray) {
- alphaChannel = QImage(width, height, QImage::Format_Indexed8);
- alphaChannel.setColorCount(256);
- for (int i=0; i<256; ++i)
- alphaChannel.setColor(i, qRgb(i, i, i));
- alphaChannel.fill(alpha);
- } else {
- alphaChannel = QImage(width, height, QImage::Format_ARGB32);
- alphaChannel.fill(qRgb(alpha, alpha, alpha));
- }
-
- image.setAlphaChannel(alphaChannel);
- image = image.convertToFormat(QImage::Format_ARGB32);
- QVERIFY(image.format() == QImage::Format_ARGB32);
-
- // alpha of 0 becomes black at a=0 due to premultiplication
- QRgb pixel = alpha == 0 ? 0 : qRgba(red, green, blue, alpha);
- bool allPixelsOK = true;
- for (int y=0; y<height; ++y) {
- for (int x=0; x<width; ++x) {
- allPixelsOK &= image.pixel(x, y) == pixel;
- }
- }
- QVERIFY(allPixelsOK);
-
- QImage outAlpha = image.alphaChannel();
- QCOMPARE(outAlpha.size(), image.size());
-
- bool allAlphaOk = true;
- for (int y=0; y<height; ++y) {
- for (int x=0; x<width; ++x) {
- allAlphaOk &= outAlpha.pixelIndex(x, y) == alpha;
- }
- }
- QVERIFY(allAlphaOk);
-
-}
-
-void tst_QImage::alphaChannel()
-{
- QImage img(10, 10, QImage::Format_Mono);
- img.setColor(0, Qt::transparent);
- img.setColor(1, Qt::black);
- img.fill(0);
-
- QPainter p(&img);
- p.fillRect(2, 2, 6, 6, Qt::black);
- p.end();
-
- QCOMPARE(img.alphaChannel(), img.convertToFormat(QImage::Format_ARGB32).alphaChannel());
-}
-
-void tst_QImage::convertToFormat_data()
-{
- QTest::addColumn<int>("inFormat");
- QTest::addColumn<uint>("inPixel");
- QTest::addColumn<int>("resFormat");
- QTest::addColumn<uint>("resPixel");
-
- QTest::newRow("red rgb32 -> argb32") << int(QImage::Format_RGB32) << 0xffff0000
- << int(QImage::Format_ARGB32) << 0xffff0000;
- QTest::newRow("green rgb32 -> argb32") << int(QImage::Format_RGB32) << 0xff00ff00
- << int(QImage::Format_ARGB32) << 0xff00ff00;
- QTest::newRow("blue rgb32 -> argb32") << int(QImage::Format_RGB32) << 0xff0000ff
- << int(QImage::Format_ARGB32) << 0xff0000ff;
-
- QTest::newRow("red rgb32 -> rgb16") << int(QImage::Format_RGB32) << 0xffff0000
- << int(QImage::Format_RGB16) << 0xffff0000;
- QTest::newRow("green rgb32 -> rgb16") << int(QImage::Format_RGB32) << 0xff00ff00
- << int(QImage::Format_RGB16) << 0xff00ff00;
- QTest::newRow("blue rgb32 -> rgb16") << int(QImage::Format_RGB32) << 0xff0000ff
- << int(QImage::Format_RGB16) << 0xff0000ff;
- QTest::newRow("funky rgb32 -> rgb16") << int(QImage::Format_RGB32) << 0xfff0c080
- << int(QImage::Format_RGB16) << 0xfff7c384;
-
- QTest::newRow("red rgb32 -> argb32_pm") << int(QImage::Format_RGB32) << 0xffff0000
- << int(QImage::Format_ARGB32_Premultiplied) << 0xffff0000;
- QTest::newRow("green rgb32 -> argb32_pm") << int(QImage::Format_RGB32) << 0xff00ff00
- << int(QImage::Format_ARGB32_Premultiplied) <<0xff00ff00;
- QTest::newRow("blue rgb32 -> argb32_pm") << int(QImage::Format_RGB32) << 0xff0000ff
- << int(QImage::Format_ARGB32_Premultiplied) << 0xff0000ff;
-
- QTest::newRow("semired argb32 -> pm") << int(QImage::Format_ARGB32) << 0x7fff0000u
- << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u;
- QTest::newRow("semigreen argb32 -> pm") << int(QImage::Format_ARGB32) << 0x7f00ff00u
- << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u;
- QTest::newRow("semiblue argb32 -> pm") << int(QImage::Format_ARGB32) << 0x7f0000ffu
- << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu;
- QTest::newRow("semiwhite argb32 -> pm") << int(QImage::Format_ARGB32) << 0x7fffffffu
- << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu;
- QTest::newRow("semiblack argb32 -> pm") << int(QImage::Format_ARGB32) << 0x7f000000u
- << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u;
-
- QTest::newRow("semired pm -> argb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
- << int(QImage::Format_ARGB32) << 0x7fff0000u;
- QTest::newRow("semigreen pm -> argb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
- << int(QImage::Format_ARGB32) << 0x7f00ff00u;
- QTest::newRow("semiblue pm -> argb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
- << int(QImage::Format_ARGB32) << 0x7f0000ffu;
- QTest::newRow("semiwhite pm -> argb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
- << int(QImage::Format_ARGB32) << 0x7fffffffu;
- QTest::newRow("semiblack pm -> argb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
- << int(QImage::Format_ARGB32) << 0x7f000000u;
-
- QTest::newRow("semired pm -> rgb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
- << int(QImage::Format_RGB32) << 0xffff0000u;
- QTest::newRow("semigreen pm -> rgb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
- << int(QImage::Format_RGB32) << 0xff00ff00u;
- QTest::newRow("semiblue pm -> rgb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
- << int(QImage::Format_RGB32) << 0xff0000ffu;
- QTest::newRow("semiwhite pm -> rgb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
- << int(QImage::Format_RGB32) << 0xffffffffu;
- QTest::newRow("semiblack pm -> rgb32") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
- << int(QImage::Format_RGB32) << 0xff000000u;
-
- QTest::newRow("semired argb32 -> rgb32") << int(QImage::Format_ARGB32) << 0x7fff0000u
- << int(QImage::Format_RGB32) << 0xffff0000u;
- QTest::newRow("semigreen argb32 -> rgb32") << int(QImage::Format_ARGB32) << 0x7f00ff00u
- << int(QImage::Format_RGB32) << 0xff00ff00u;
- QTest::newRow("semiblue argb32 -> rgb32") << int(QImage::Format_ARGB32) << 0x7f0000ffu
- << int(QImage::Format_RGB32) << 0xff0000ffu;
- QTest::newRow("semiwhite argb -> rgb32") << int(QImage::Format_ARGB32) << 0x7fffffffu
- << int(QImage::Format_RGB32) << 0xffffffffu;
- QTest::newRow("semiblack argb -> rgb32") << int(QImage::Format_ARGB32) << 0x7f000000u
- << int(QImage::Format_RGB32) << 0xff000000u;
-
- QTest::newRow("black mono -> rgb32") << int(QImage::Format_Mono) << 0x00000000u
- << int(QImage::Format_RGB32) << 0xff000000u;
-
- QTest::newRow("white mono -> rgb32") << int(QImage::Format_Mono) << 0x00000001u
- << int(QImage::Format_RGB32) << 0xffffffffu;
- QTest::newRow("red rgb16 -> argb32") << int(QImage::Format_RGB16) << 0xffff0000
- << int(QImage::Format_ARGB32) << 0xffff0000;
- QTest::newRow("green rgb16 -> argb32") << int(QImage::Format_RGB16) << 0xff00ff00
- << int(QImage::Format_ARGB32) << 0xff00ff00;
- QTest::newRow("blue rgb16 -> argb32") << int(QImage::Format_RGB16) << 0xff0000ff
- << int(QImage::Format_ARGB32) << 0xff0000ff;
- QTest::newRow("red rgb16 -> rgb16") << int(QImage::Format_RGB32) << 0xffff0000
- << int(QImage::Format_RGB16) << 0xffff0000;
- QTest::newRow("green rgb16 -> rgb16") << int(QImage::Format_RGB32) << 0xff00ff00
- << int(QImage::Format_RGB16) << 0xff00ff00;
- QTest::newRow("blue rgb16 -> rgb16") << int(QImage::Format_RGB32) << 0xff0000ff
- << int(QImage::Format_RGB16) << 0xff0000ff;
- QTest::newRow("semired argb32 -> rgb16") << int(QImage::Format_ARGB32) << 0x7fff0000u
- << int(QImage::Format_RGB16) << 0xffff0000;
- QTest::newRow("semigreen argb32 -> rgb16") << int(QImage::Format_ARGB32) << 0x7f00ff00u
- << int(QImage::Format_RGB16) << 0xff00ff00;
- QTest::newRow("semiblue argb32 -> rgb16") << int(QImage::Format_ARGB32) << 0x7f0000ffu
- << int(QImage::Format_RGB16) << 0xff0000ff;
- QTest::newRow("semired pm -> rgb16") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
- << int(QImage::Format_RGB16) << 0xffff0000u;
-
- QTest::newRow("semigreen pm -> rgb16") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
- << int(QImage::Format_RGB16) << 0xff00ff00u;
- QTest::newRow("semiblue pm -> rgb16") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
- << int(QImage::Format_RGB16) << 0xff0000ffu;
- QTest::newRow("semiwhite pm -> rgb16") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
- << int(QImage::Format_RGB16) << 0xffffffffu;
- QTest::newRow("semiblack pm -> rgb16") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
- << int(QImage::Format_RGB16) << 0xff000000u;
-
- QTest::newRow("mono -> mono lsb") << int(QImage::Format_Mono) << 1u
- << int(QImage::Format_MonoLSB) << 0xffffffffu;
- QTest::newRow("mono lsb -> mono") << int(QImage::Format_MonoLSB) << 1u
- << int(QImage::Format_Mono) << 0xffffffffu;
-
- QTest::newRow("red rgb32 -> rgb666") << int(QImage::Format_RGB32) << 0xffff0000
- << int(QImage::Format_RGB666) << 0xffff0000;
- QTest::newRow("green rgb32 -> rgb666") << int(QImage::Format_RGB32) << 0xff00ff00
- << int(QImage::Format_RGB666) << 0xff00ff00;
- QTest::newRow("blue rgb32 -> rgb666") << int(QImage::Format_RGB32) << 0xff0000ff
- << int(QImage::Format_RGB666) << 0xff0000ff;
-
- QTest::newRow("red rgb16 -> rgb666") << int(QImage::Format_RGB16) << 0xffff0000
- << int(QImage::Format_RGB666) << 0xffff0000;
- QTest::newRow("green rgb16 -> rgb666") << int(QImage::Format_RGB16) << 0xff00ff00
- << int(QImage::Format_RGB666) << 0xff00ff00;
- QTest::newRow("blue rgb16 -> rgb666") << int(QImage::Format_RGB16) << 0xff0000ff
- << int(QImage::Format_RGB666) << 0xff0000ff;
-
- QTest::newRow("red rgb32 -> rgb15") << int(QImage::Format_RGB32) << 0xffff0000
- << int(QImage::Format_RGB555) << 0xffff0000;
- QTest::newRow("green rgb32 -> rgb15") << int(QImage::Format_RGB32) << 0xff00ff00
- << int(QImage::Format_RGB555) << 0xff00ff00;
- QTest::newRow("blue rgb32 -> rgb15") << int(QImage::Format_RGB32) << 0xff0000ff
- << int(QImage::Format_RGB555) << 0xff0000ff;
- QTest::newRow("funky rgb32 -> rgb15") << int(QImage::Format_RGB32) << 0xfff0c080
- << int(QImage::Format_RGB555) << 0xfff7c684;
-
- QTest::newRow("red rgb16 -> rgb15") << int(QImage::Format_RGB16) << 0xffff0000
- << int(QImage::Format_RGB555) << 0xffff0000;
- QTest::newRow("green rgb16 -> rgb15") << int(QImage::Format_RGB16) << 0xff00ff00
- << int(QImage::Format_RGB555) << 0xff00ff00;
- QTest::newRow("blue rgb16 -> rgb15") << int(QImage::Format_RGB16) << 0xff0000ff
- << int(QImage::Format_RGB555) << 0xff0000ff;
- QTest::newRow("funky rgb16 -> rgb15") << int(QImage::Format_RGB16) << 0xfff0c080
- << int(QImage::Format_RGB555) << 0xfff7c684;
-
- QTest::newRow("red rgb32 -> argb8565") << int(QImage::Format_RGB32) << 0xffff0000
- << int(QImage::Format_ARGB8565_Premultiplied) << 0xffff0000;
- QTest::newRow("green rgb32 -> argb8565") << int(QImage::Format_RGB32) << 0xff00ff00
- << int(QImage::Format_ARGB8565_Premultiplied) << 0xff00ff00;
- QTest::newRow("blue rgb32 -> argb8565") << int(QImage::Format_RGB32) << 0xff0000ff
- << int(QImage::Format_ARGB8565_Premultiplied) << 0xff0000ff;
-
- QTest::newRow("red rgb16 -> argb8565") << int(QImage::Format_RGB16) << 0xffff0000
- << int(QImage::Format_ARGB8565_Premultiplied) << 0xffff0000;
- QTest::newRow("green rgb16 -> argb8565") << int(QImage::Format_RGB16) << 0xff00ff00
- << int(QImage::Format_ARGB8565_Premultiplied) << 0xff00ff00;
- QTest::newRow("blue rgb16 -> argb8565") << int(QImage::Format_RGB16) << 0xff0000ff
- << int(QImage::Format_ARGB8565_Premultiplied) << 0xff0000ff;
-
- QTest::newRow("red argb8565 -> argb32") << int(QImage::Format_ARGB8565_Premultiplied) << 0xffff0000
- << int(QImage::Format_ARGB32) << 0xffff0000;
- QTest::newRow("green argb8565 -> argb32") << int(QImage::Format_ARGB8565_Premultiplied) << 0xff00ff00
- << int(QImage::Format_ARGB32) << 0xff00ff00;
- QTest::newRow("blue argb8565 -> argb32") << int(QImage::Format_ARGB8565_Premultiplied) << 0xff0000ff
- << int(QImage::Format_ARGB32) << 0xff0000ff;
-
- QTest::newRow("semired argb32 -> argb8565") << int(QImage::Format_ARGB32) << 0x7fff0000u
- << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f7b0000u;
- QTest::newRow("semigreen argb32 -> argb8565") << int(QImage::Format_ARGB32) << 0x7f00ff00u
- << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f007d00u;
- QTest::newRow("semiblue argb32 -> argb8565") << int(QImage::Format_ARGB32) << 0x7f0000ffu
- << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f00007bu;
-
- QTest::newRow("semired pm -> argb8565") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
- << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f7b0000u;
- QTest::newRow("semigreen pm -> argb8565") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
- << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f007d00u;
- QTest::newRow("semiblue pm -> argb8565") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
- << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f00007bu;
- QTest::newRow("semiwhite pm -> argb8565") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
- << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f7b7d7bu;
- QTest::newRow("semiblack pm -> argb8565") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
- << int(QImage::Format_ARGB8565_Premultiplied) << 0x7f000000u;
-
- QTest::newRow("red rgb666 -> argb32") << int(QImage::Format_RGB666) << 0xffff0000
- << int(QImage::Format_ARGB32) << 0xffff0000;
- QTest::newRow("green rgb666 -> argb32") << int(QImage::Format_RGB666) << 0xff00ff00
- << int(QImage::Format_ARGB32) << 0xff00ff00;
- QTest::newRow("blue rgb666 -> argb32") << int(QImage::Format_RGB666) << 0xff0000ff
- << int(QImage::Format_ARGB32) << 0xff0000ff;
-
- QTest::newRow("semired argb32 -> rgb666") << int(QImage::Format_ARGB32) << 0x7fff0000u
- << int(QImage::Format_RGB666) << 0xffff0000;
- QTest::newRow("semigreen argb32 -> rgb666") << int(QImage::Format_ARGB32) << 0x7f00ff00u
- << int(QImage::Format_RGB666) << 0xff00ff00;
- QTest::newRow("semiblue argb32 -> rgb666") << int(QImage::Format_ARGB32) << 0x7f0000ffu
- << int(QImage::Format_RGB666) << 0xff0000ff;
-
- QTest::newRow("semired pm -> rgb666") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
- << int(QImage::Format_RGB666) << 0xffff0000u;
- QTest::newRow("semigreen pm -> rgb666") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
- << int(QImage::Format_RGB666) << 0xff00ff00u;
- QTest::newRow("semiblue pm -> rgb666") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
- << int(QImage::Format_RGB666) << 0xff0000ffu;
- QTest::newRow("semiwhite pm -> rgb666") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
- << int(QImage::Format_RGB666) << 0xffffffffu;
- QTest::newRow("semiblack pm -> rgb666") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
- << int(QImage::Format_RGB666) << 0xff000000u;
-
- QTest::newRow("red rgb15 -> argb32") << int(QImage::Format_RGB555) << 0xffff0000
- << int(QImage::Format_ARGB32) << 0xffff0000;
- QTest::newRow("green rgb15 -> argb32") << int(QImage::Format_RGB555) << 0xff00ff00
- << int(QImage::Format_ARGB32) << 0xff00ff00;
- QTest::newRow("blue rgb15 -> argb32") << int(QImage::Format_RGB555) << 0xff0000ff
- << int(QImage::Format_ARGB32) << 0xff0000ff;
-
- QTest::newRow("semired argb32 -> rgb15") << int(QImage::Format_ARGB32) << 0x7fff0000u
- << int(QImage::Format_RGB555) << 0xffff0000;
- QTest::newRow("semigreen argb32 -> rgb15") << int(QImage::Format_ARGB32) << 0x7f00ff00u
- << int(QImage::Format_RGB555) << 0xff00ff00;
- QTest::newRow("semiblue argb32 -> rgb15") << int(QImage::Format_ARGB32) << 0x7f0000ffu
- << int(QImage::Format_RGB555) << 0xff0000ff;
-
- QTest::newRow("semired pm -> rgb15") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
- << int(QImage::Format_RGB555) << 0xffff0000u;
- QTest::newRow("semigreen pm -> rgb15") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
- << int(QImage::Format_RGB555) << 0xff00ff00u;
- QTest::newRow("semiblue pm -> rgb15") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
- << int(QImage::Format_RGB555) << 0xff0000ffu;
- QTest::newRow("semiwhite pm -> rgb15") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
- << int(QImage::Format_RGB555) << 0xffffffffu;
- QTest::newRow("semiblack pm -> rgb15") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
- << int(QImage::Format_RGB555) << 0xff000000u;
-
-
- QTest::newRow("red rgb32 -> argb8555") << int(QImage::Format_RGB32) << 0xffff0000
- << int(QImage::Format_ARGB8555_Premultiplied) << 0xffff0000;
- QTest::newRow("green rgb32 -> argb8555") << int(QImage::Format_RGB32) << 0xff00ff00
- << int(QImage::Format_ARGB8555_Premultiplied) << 0xff00ff00;
- QTest::newRow("blue rgb32 -> argb8555") << int(QImage::Format_RGB32) << 0xff0000ff
- << int(QImage::Format_ARGB8555_Premultiplied) << 0xff0000ff;
-
- QTest::newRow("red rgb16 -> argb8555") << int(QImage::Format_RGB16) << 0xffff0000
- << int(QImage::Format_ARGB8555_Premultiplied) << 0xffff0000;
- QTest::newRow("green rgb16 -> argb8555") << int(QImage::Format_RGB16) << 0xff00ff00
- << int(QImage::Format_ARGB8555_Premultiplied) << 0xff00ff00;
- QTest::newRow("blue rgb16 -> argb8555") << int(QImage::Format_RGB16) << 0xff0000ff
- << int(QImage::Format_ARGB8555_Premultiplied) << 0xff0000ff;
-
- QTest::newRow("red argb8555 -> argb32") << int(QImage::Format_ARGB8555_Premultiplied) << 0xffff0000
- << int(QImage::Format_ARGB32) << 0xffff0000;
- QTest::newRow("green argb8555 -> argb32") << int(QImage::Format_ARGB8555_Premultiplied) << 0xff00ff00
- << int(QImage::Format_ARGB32) << 0xff00ff00;
- QTest::newRow("blue argb8555 -> argb32") << int(QImage::Format_ARGB8555_Premultiplied) << 0xff0000ff
- << int(QImage::Format_ARGB32) << 0xff0000ff;
-
- QTest::newRow("semired argb32 -> argb8555") << int(QImage::Format_ARGB32) << 0x7fff0000u
- << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f7b0000u;
- QTest::newRow("semigreen argb32 -> argb8555") << int(QImage::Format_ARGB32) << 0x7f00ff00u
- << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f007b00u;
- QTest::newRow("semiblue argb32 -> argb8555") << int(QImage::Format_ARGB32) << 0x7f0000ffu
- << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f00007bu;
-
- QTest::newRow("semired pm -> argb8555") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
- << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f7b0000u;
- QTest::newRow("semigreen pm -> argb8555") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
- << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f007b00u;
- QTest::newRow("semiblue pm -> argb8555") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
- << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f00007bu;
- QTest::newRow("semiwhite pm -> argb8555") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
- << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f7b7b7bu;
- QTest::newRow("semiblack pm -> argb8555") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
- << int(QImage::Format_ARGB8555_Premultiplied) << 0x7f000000u;
-
- QTest::newRow("red rgb32 -> rgb888") << int(QImage::Format_RGB32) << 0xffff0000
- << int(QImage::Format_RGB888) << 0xffff0000;
- QTest::newRow("green rgb32 -> rgb888") << int(QImage::Format_RGB32) << 0xff00ff00
- << int(QImage::Format_RGB888) << 0xff00ff00;
- QTest::newRow("blue rgb32 -> rgb888") << int(QImage::Format_RGB32) << 0xff0000ff
- << int(QImage::Format_RGB888) << 0xff0000ff;
-
- QTest::newRow("red rgb16 -> rgb888") << int(QImage::Format_RGB16) << 0xffff0000
- << int(QImage::Format_RGB888) << 0xffff0000;
- QTest::newRow("green rgb16 -> rgb888") << int(QImage::Format_RGB16) << 0xff00ff00
- << int(QImage::Format_RGB888) << 0xff00ff00;
- QTest::newRow("blue rgb16 -> rgb888") << int(QImage::Format_RGB16) << 0xff0000ff
- << int(QImage::Format_RGB888) << 0xff0000ff;
-
- QTest::newRow("red rgb888 -> argb32") << int(QImage::Format_RGB888) << 0xffff0000
- << int(QImage::Format_ARGB32) << 0xffff0000;
- QTest::newRow("green rgb888 -> argb32") << int(QImage::Format_RGB888) << 0xff00ff00
- << int(QImage::Format_ARGB32) << 0xff00ff00;
- QTest::newRow("blue rgb888 -> argb32") << int(QImage::Format_RGB888) << 0xff0000ff
- << int(QImage::Format_ARGB32) << 0xff0000ff;
-
- QTest::newRow("semired argb32 -> rgb888") << int(QImage::Format_ARGB32) << 0x7fff0000u
- << int(QImage::Format_RGB888) << 0xffff0000;
- QTest::newRow("semigreen argb32 -> rgb888") << int(QImage::Format_ARGB32) << 0x7f00ff00u
- << int(QImage::Format_RGB888) << 0xff00ff00;
- QTest::newRow("semiblue argb32 -> rgb888") << int(QImage::Format_ARGB32) << 0x7f0000ffu
- << int(QImage::Format_RGB888) << 0xff0000ff;
-
- QTest::newRow("semired pm -> rgb888") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f0000u
- << int(QImage::Format_RGB888) << 0xffff0000u;
- QTest::newRow("semigreen pm -> rgb888") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f007f00u
- << int(QImage::Format_RGB888) << 0xff00ff00u;
- QTest::newRow("semiblue pm -> rgb888") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f00007fu
- << int(QImage::Format_RGB888) << 0xff0000ffu;
- QTest::newRow("semiwhite pm -> rgb888") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f7f7f7fu
- << int(QImage::Format_RGB888) << 0xffffffffu;
- QTest::newRow("semiblack pm -> rgb888") << int(QImage::Format_ARGB32_Premultiplied) << 0x7f000000u
- << int(QImage::Format_RGB888) << 0xff000000u;
-}
-
-
-void tst_QImage::convertToFormat()
-{
- QFETCH(int, inFormat);
- QFETCH(uint, inPixel);
- QFETCH(int, resFormat);
- QFETCH(uint, resPixel);
-
- QImage src(32, 32, QImage::Format(inFormat));
-
- if (inFormat == QImage::Format_Mono) {
- src.setColor(0, qRgba(0,0,0,0xff));
- src.setColor(1, qRgba(255,255,255,0xff));
- }
-
- for (int y=0; y<src.height(); ++y)
- for (int x=0; x<src.width(); ++x)
- src.setPixel(x, y, inPixel);
-
- QImage result = src.convertToFormat(QImage::Format(resFormat));
-
- QCOMPARE(src.width(), result.width());
- QCOMPARE(src.height(), result.height());
-
- bool same = true;
- for (int y=0; y<result.height(); ++y) {
- for (int x=0; x<result.width(); ++x) {
- QRgb pixel = result.pixel(x, y);
- same &= (pixel == resPixel);
- if (!same) {
- printf("expect=%08x, result=%08x\n", resPixel, pixel);
- y = 100000;
- break;
- }
-
- }
- }
- QVERIFY(same);
-
- // repeat tests converting from an image with nonstandard stride
-
- int dp = (src.depth() < 8 || result.depth() < 8) ? 8 : 1;
- QImage src2(src.bits() + (dp*src.depth())/8,
- src.width() - dp*2,
- src.height(), src.bytesPerLine(),
- src.format());
- if (src.depth() < 8)
- src2.setColorTable(src.colorTable());
-
- const QImage result2 = src2.convertToFormat(QImage::Format(resFormat));
-
- QCOMPARE(src2.width(), result2.width());
- QCOMPARE(src2.height(), result2.height());
-
- QImage expected2(result.bits() + (dp*result.depth())/8,
- result.width() - dp*2,
- result.height(), result.bytesPerLine(),
- result.format());
- if (result.depth() < 8)
- expected2.setColorTable(result.colorTable());
-
- result2.save("result2.xpm", "XPM");
- expected2.save("expected2.xpm", "XPM");
-
- QCOMPARE(result2, expected2);
- QFile::remove(QLatin1String("result2.xpm"));
- QFile::remove(QLatin1String("expected2.xpm"));
-}
-
-void tst_QImage::convertToFormatRgb888ToRGB32()
-{
- // 545 so width % 4 != 0. This ensure there is padding at the end of the scanlines
- const int height = 545;
- const int width = 545;
- QImage source(width, height, QImage::Format_RGB888);
- for (int y = 0; y < height; ++y) {
- uchar *srcPixels = source.scanLine(y);
- for (int x = 0; x < width * 3; ++x)
- srcPixels[x] = x;
- }
-
- QImage rgb32Image = source.convertToFormat(QImage::Format_RGB888);
- QCOMPARE(rgb32Image.format(), QImage::Format_RGB888);
- for (int x = 0; x < width; ++x) {
- for (int y = 0; y < height; ++y)
- QCOMPARE(rgb32Image.pixel(x, y), source.pixel(x, y));
- }
-}
-
-void tst_QImage::createAlphaMask_data()
-{
- QTest::addColumn<int>("x");
- QTest::addColumn<int>("y");
- QTest::addColumn<int>("alpha1");
- QTest::addColumn<int>("alpha2");
-
- int alphas[] = { 0, 127, 255 };
-
- for (unsigned a1 = 0; a1 < sizeof(alphas) / sizeof(int); ++a1) {
- for (unsigned a2 = 0; a2 < sizeof(alphas) / sizeof(int); ++a2) {
- if (a1 == a2)
- continue;
- for (int x=10; x<18; x+=3) {
- for (int y=100; y<108; y+=3) {
- QTest::newRow(qPrintable(QString::fromLatin1("x=%1, y=%2, a1=%3, a2=%4").arg(x).arg(y).arg(alphas[a1]).arg(alphas[a2])))
- << x << y << alphas[a1] << alphas[a2];
- }
- }
- }
- }
-}
-
-void tst_QImage::createAlphaMask()
-{
- QFETCH(int, x);
- QFETCH(int, y);
- QFETCH(int, alpha1);
- QFETCH(int, alpha2);
-
- QSize size(255, 255);
- int pixelsInLines = size.width() + size.height() - 1;
- int pixelsOutofLines = size.width() * size.height() - pixelsInLines;
-
- // Generate an white image with two lines, horizontal at y and vertical at x.
- // Lines have alpha of alpha2, rest has alpha of alpha1
- QImage image(size, QImage::Format_ARGB32);
- for (int cy=0; cy<image.height(); ++cy) {
- for (int cx=0; cx<image.width(); ++cx) {
- int alpha = (y == cy || x == cx) ? alpha2 : alpha1;
- image.setPixel(cx, cy, qRgba(255, 255, 255, alpha));
- }
- }
-
- QImage mask = image.createAlphaMask(Qt::OrderedAlphaDither);
-
- // Sanity check...
- QCOMPARE(mask.width(), image.width());
- QCOMPARE(mask.height(), image.height());
-
- // Sum up the number of pixels set for both lines and other area
- int sumAlpha1 = 0;
- int sumAlpha2 = 0;
- for (int cy=0; cy<image.height(); ++cy) {
- for (int cx=0; cx<image.width(); ++cx) {
- int *alpha = (y == cy || x == cx) ? &sumAlpha2 : &sumAlpha1;
- *alpha += mask.pixelIndex(cx, cy);
- }
- }
-
- // Compare the set bits to whats expected for that alpha.
- const int threshold = 5;
- QVERIFY(qAbs(sumAlpha1 * 255 / pixelsOutofLines - alpha1) < threshold);
- QVERIFY(qAbs(sumAlpha2 * 255 / pixelsInLines - alpha2) < threshold);
-}
-
-void tst_QImage::dotsPerMeterZero()
-{
- QImage img(100, 100, QImage::Format_RGB32);
- QVERIFY(!img.isNull());
-
- int defaultDpmX = img.dotsPerMeterX();
- int defaultDpmY = img.dotsPerMeterY();
- QVERIFY(defaultDpmX != 0);
- QVERIFY(defaultDpmY != 0);
-
- img.setDotsPerMeterX(0);
- img.setDotsPerMeterY(0);
-
- QCOMPARE(img.dotsPerMeterX(), defaultDpmX);
- QCOMPARE(img.dotsPerMeterY(), defaultDpmY);
-}
-
-void tst_QImage::rotate_data()
-{
- QTest::addColumn<QImage::Format>("format");
- QTest::addColumn<int>("degrees");
-
- QVector<int> degrees;
- degrees << 0 << 90 << 180 << 270;
-
- foreach (int d, degrees) {
- QString title = QString("%1 %2").arg(d);
- QTest::newRow(qPrintable(title.arg("Format_RGB32")))
- << QImage::Format_RGB32 << d;
- QTest::newRow(qPrintable(title.arg("Format_ARGB32")))
- << QImage::Format_ARGB32 << d;
- QTest::newRow(qPrintable(title.arg("Format_ARGB32_Premultiplied")))
- << QImage::Format_ARGB32_Premultiplied << d;
- QTest::newRow(qPrintable(title.arg("Format_RGB16")))
- << QImage::Format_RGB16 << d;
- QTest::newRow(qPrintable(title.arg("Format_ARGB8565_Premultiplied")))
- << QImage::Format_ARGB8565_Premultiplied << d;
- QTest::newRow(qPrintable(title.arg("Format_RGB666")))
- << QImage::Format_RGB666 << d;
- QTest::newRow(qPrintable(title.arg("Format_RGB555")))
- << QImage::Format_RGB555 << d;
- QTest::newRow(qPrintable(title.arg("Format_ARGB8555_Premultiplied")))
- << QImage::Format_ARGB8555_Premultiplied << d;
- QTest::newRow(qPrintable(title.arg("Format_RGB888")))
- << QImage::Format_RGB888 << d;
- QTest::newRow(qPrintable(title.arg("Format_Indexed8")))
- << QImage::Format_Indexed8 << d;
- }
-}
-
-void tst_QImage::rotate()
-{
- QFETCH(QImage::Format, format);
- QFETCH(int, degrees);
-
- // test if rotate90 is lossless
- int w = 54;
- int h = 13;
- QImage original(w, h, format);
- original.fill(qRgb(255,255,255));
-
- if (format == QImage::Format_Indexed8) {
- original.setColorCount(256);
- for (int i = 0; i < 255; ++i)
- original.setColor(i, qRgb(0, i, i));
- }
-
- if (original.colorTable().isEmpty()) {
- for (int x = 0; x < w; ++x) {
- original.setPixel(x,0, qRgb(x,0,128));
- original.setPixel(x,h - 1, qRgb(0,255 - x,128));
- }
- for (int y = 0; y < h; ++y) {
- original.setPixel(0, y, qRgb(y,0,255));
- original.setPixel(w - 1, y, qRgb(0,255 - y,255));
- }
- } else {
- const int n = original.colorTable().size();
- for (int x = 0; x < w; ++x) {
- original.setPixel(x, 0, x % n);
- original.setPixel(x, h - 1, n - (x % n) - 1);
- }
- for (int y = 0; y < h; ++y) {
- original.setPixel(0, y, y % n);
- original.setPixel(w - 1, y, n - (y % n) - 1);
- }
- }
-
- // original.save("rotated90_original.png", "png");
-
- // Initialize the matrix manually (do not use rotate) to avoid rounding errors
- QMatrix matRotate90;
- matRotate90.rotate(degrees);
- QImage dest = original;
- // And rotate it 4 times, then the image should be identical to the original
- for (int i = 0; i < 4 ; ++i) {
- dest = dest.transformed(matRotate90);
- }
-
- // Make sure they are similar in format before we compare them.
- dest = dest.convertToFormat(format);
-
- // dest.save("rotated90_result.png","png");
- QCOMPARE(original, dest);
-
- // Test with QMatrix::rotate 90 also, since we trust that now
- matRotate90.rotate(degrees);
- dest = original;
- // And rotate it 4 times, then the image should be identical to the original
- for (int i = 0; i < 4 ; ++i) {
- dest = dest.transformed(matRotate90);
- }
-
- // Make sure they are similar in format before we compare them.
- dest = dest.convertToFormat(format);
-
- QCOMPARE(original, dest);
-}
-
-void tst_QImage::copy()
-{
- // Task 99250
- {
- QImage img(16,16,QImage::Format_ARGB32);
- img.copy(QRect(1000,1,1,1));
- }
-}
-
-void tst_QImage::setPixel_data()
-{
- QTest::addColumn<int>("format");
- QTest::addColumn<uint>("value");
- QTest::addColumn<uint>("expected");
-
- QTest::newRow("ARGB32 red") << int(QImage::Format_ARGB32)
- << 0xffff0000 << 0xffff0000;
- QTest::newRow("ARGB32 green") << int(QImage::Format_ARGB32)
- << 0xff00ff00 << 0xff00ff00;
- QTest::newRow("ARGB32 blue") << int(QImage::Format_ARGB32)
- << 0xff0000ff << 0xff0000ff;
- QTest::newRow("RGB16 red") << int(QImage::Format_RGB16)
- << 0xffff0000 << 0xf800u;
- QTest::newRow("RGB16 green") << int(QImage::Format_RGB16)
- << 0xff00ff00 << 0x07e0u;
- QTest::newRow("RGB16 blue") << int(QImage::Format_RGB16)
- << 0xff0000ff << 0x001fu;
- QTest::newRow("ARGB8565_Premultiplied red") << int(QImage::Format_ARGB8565_Premultiplied)
- << 0xffff0000 << 0xffff0000;
- QTest::newRow("ARGB8565_Premultiplied green") << int(QImage::Format_ARGB8565_Premultiplied)
- << 0xff00ff00 << 0xff00ff00;
- QTest::newRow("ARGB8565_Premultiplied blue") << int(QImage::Format_ARGB8565_Premultiplied)
- << 0xff0000ff << 0xff0000ff;
- QTest::newRow("RGB666 red") << int(QImage::Format_RGB666)
- << 0xffff0000 << 0xffff0000;
- QTest::newRow("RGB666 green") << int(QImage::Format_RGB666)
- << 0xff00ff00 << 0xff00ff00;;
- QTest::newRow("RGB666 blue") << int(QImage::Format_RGB666)
- << 0xff0000ff << 0xff0000ff;
- QTest::newRow("RGB555 red") << int(QImage::Format_RGB555)
- << 0xffff0000 << 0x7c00u;
- QTest::newRow("RGB555 green") << int(QImage::Format_RGB555)
- << 0xff00ff00 << 0x03e0u;
- QTest::newRow("RGB555 blue") << int(QImage::Format_RGB555)
- << 0xff0000ff << 0x001fu;
- QTest::newRow("ARGB8555_Premultiplied red") << int(QImage::Format_ARGB8555_Premultiplied)
- << 0xffff0000 << 0xffff0000;
- QTest::newRow("ARGB8555_Premultiplied green") << int(QImage::Format_ARGB8555_Premultiplied)
- << 0xff00ff00 << 0xff00ff00;
- QTest::newRow("ARGB8555_Premultiplied blue") << int(QImage::Format_ARGB8555_Premultiplied)
- << 0xff0000ff << 0xff0000ff;
- QTest::newRow("RGB888 red") << int(QImage::Format_RGB888)
- << 0xffff0000 << 0xffff0000;
- QTest::newRow("RGB888 green") << int(QImage::Format_RGB888)
- << 0xff00ff00 << 0xff00ff00;
- QTest::newRow("RGB888 blue") << int(QImage::Format_RGB888)
- << 0xff0000ff << 0xff0000ff;
-}
-
-void tst_QImage::setPixel()
-{
- QFETCH(int, format);
- QFETCH(uint, value);
- QFETCH(uint, expected);
-
- const int w = 13;
- const int h = 15;
-
- QImage img(w, h, QImage::Format(format));
-
- // fill image
- for (int y = 0; y < h; ++y)
- for (int x = 0; x < w; ++x)
- img.setPixel(x, y, value);
-
- // check pixel values
- switch (format) {
- case int(QImage::Format_RGB32):
- case int(QImage::Format_ARGB32):
- case int(QImage::Format_ARGB32_Premultiplied):
- {
- for (int y = 0; y < h; ++y) {
- const quint32 *row = (const quint32*)(img.scanLine(y));
- for (int x = 0; x < w; ++x) {
- quint32 result = row[x];
- if (result != expected)
- printf("[x,y]: %d,%d, expected=%08x, result=%08x\n",
- x, y, expected, result);
- QCOMPARE(uint(result), expected);
- }
- }
- break;
- }
- case int(QImage::Format_RGB555):
- case int(QImage::Format_RGB16):
- {
- for (int y = 0; y < h; ++y) {
- const quint16 *row = (const quint16*)(img.scanLine(y));
- for (int x = 0; x < w; ++x) {
- quint16 result = row[x];
- if (result != expected)
- printf("[x,y]: %d,%d, expected=%04x, result=%04x\n",
- x, y, expected, result);
- QCOMPARE(uint(result), expected);
- }
- }
- break;
- }
- case int(QImage::Format_RGB666):
- {
- for (int y = 0; y < h; ++y) {
- const qrgb666 *row = (const qrgb666*)(img.scanLine(y));
- for (int x = 0; x < w; ++x) {
- quint32 result = row[x];
- if (result != expected)
- printf("[x,y]: %d,%d, expected=%04x, result=%04x\n",
- x, y, expected, result);
- QCOMPARE(result, expected);
- }
- }
- break;
- }
- case int(QImage::Format_ARGB8565_Premultiplied):
- {
- for (int y = 0; y < h; ++y) {
- const qargb8565 *row = (const qargb8565*)(img.scanLine(y));
- for (int x = 0; x < w; ++x) {
- quint32 result = row[x];
- if (result != expected)
- printf("[x,y]: %d,%d, expected=%04x, result=%04x\n",
- x, y, expected, result);
- QCOMPARE(result, expected);
- }
- }
- break;
- }
- case int(QImage::Format_ARGB8555_Premultiplied):
- {
- for (int y = 0; y < h; ++y) {
- const qargb8555 *row = (const qargb8555*)(img.scanLine(y));
- for (int x = 0; x < w; ++x) {
- quint32 result = row[x];
- if (result != expected)
- printf("[x,y]: %d,%d, expected=%04x, result=%04x\n",
- x, y, expected, result);
- QCOMPARE(result, expected);
- }
- }
- break;
- }
- case int(QImage::Format_RGB888):
- {
- for (int y = 0; y < h; ++y) {
- const qrgb888 *row = (const qrgb888*)(img.scanLine(y));
- for (int x = 0; x < w; ++x) {
- qrgb888 result = row[x];
- if (result != expected)
- printf("[x,y]: %d,%d, expected=%04x, result=%04x\n",
- x, y, expected, quint32(result));
- QCOMPARE(uint(result), expected);
- }
- }
- break;
- }
- default:
- qFatal("Test not implemented for format %d", format);
- }
-}
-
-void tst_QImage::convertToFormatPreserveDotsPrMeter()
-{
- QImage img(100, 100, QImage::Format_ARGB32_Premultiplied);
-
- int dpmx = 123;
- int dpmy = 234;
- img.setDotsPerMeterX(dpmx);
- img.setDotsPerMeterY(dpmy);
- img.fill(0x12345678);
-
- img = img.convertToFormat(QImage::Format_RGB32);
-
- QCOMPARE(img.dotsPerMeterX(), dpmx);
- QCOMPARE(img.dotsPerMeterY(), dpmy);
-}
-
-#ifndef QT_NO_IMAGE_TEXT
-void tst_QImage::convertToFormatPreserveText()
-{
- QImage img(100, 100, QImage::Format_ARGB32_Premultiplied);
-
- img.setText("foo", "bar");
- img.setText("foo2", "bar2");
- img.fill(0x12345678);
-
- QStringList listResult;
- listResult << "foo" << "foo2";
- QString result = "foo: bar\n\nfoo2: bar2";
-
- QImage imgResult1 = img.convertToFormat(QImage::Format_RGB32);
- QCOMPARE(imgResult1.text(), result);
- QCOMPARE(imgResult1.textKeys(), listResult);
-
- QVector<QRgb> colorTable(4);
- for (int i = 0; i < 4; ++i)
- colorTable[i] = QRgb(42);
- QImage imgResult2 = img.convertToFormat(QImage::Format_MonoLSB,
- colorTable);
- QCOMPARE(imgResult2.text(), result);
- QCOMPARE(imgResult2.textKeys(), listResult);
-}
-#endif // QT_NO_IMAGE_TEXT
-
-void tst_QImage::setColorCount()
-{
- QImage img(0, 0, QImage::Format_Indexed8);
- QTest::ignoreMessage(QtWarningMsg, "QImage::setColorCount: null image");
- img.setColorCount(256);
- QCOMPARE(img.colorCount(), 0);
-}
-
-void tst_QImage::setColor()
-{
- QImage img(0, 0, QImage::Format_Indexed8);
- img.setColor(0, qRgba(18, 219, 108, 128));
- QCOMPARE(img.colorCount(), 0);
-
- QImage img2(1, 1, QImage::Format_Indexed8);
- img2.setColor(0, qRgba(18, 219, 108, 128));
- QCOMPARE(img2.colorCount(), 1);
-}
-
-/* Just some sanity checking that we don't draw outside the buffer of
- * the image. Hopefully this will create crashes or at least some
- * random test fails when broken.
- */
-void tst_QImage::rasterClipping()
-{
- QImage image(10, 10, QImage::Format_RGB32);
- image.fill(0xffffffff);
-
- QPainter p(&image);
-
- p.drawLine(-1000, 5, 5, 5);
- p.drawLine(-1000, 5, 1000, 5);
- p.drawLine(5, 5, 1000, 5);
-
- p.drawLine(5, -1000, 5, 5);
- p.drawLine(5, -1000, 5, 1000);
- p.drawLine(5, 5, 5, 1000);
-
- p.setBrush(Qt::red);
-
- p.drawEllipse(3, 3, 4, 4);
- p.drawEllipse(-100, -100, 210, 210);
-
- p.drawEllipse(-1000, 0, 2010, 2010);
- p.drawEllipse(0, -1000, 2010, 2010);
- p.drawEllipse(-2010, -1000, 2010, 2010);
- p.drawEllipse(-1000, -2010, 2010, 2010);
- QVERIFY(true);
-}
-
-// Tests the new QPoint overloads in QImage in Qt 4.2
-void tst_QImage::pointOverloads()
-{
- QImage image(100, 100, QImage::Format_RGB32);
- image.fill(0xff00ff00);
-
- // IsValid
- QVERIFY(image.valid(QPoint(0, 0)));
- QVERIFY(image.valid(QPoint(99, 0)));
- QVERIFY(image.valid(QPoint(0, 99)));
- QVERIFY(image.valid(QPoint(99, 99)));
-
- QVERIFY(!image.valid(QPoint(50, -1))); // outside on the top
- QVERIFY(!image.valid(QPoint(50, 100))); // outside on the bottom
- QVERIFY(!image.valid(QPoint(-1, 50))); // outside on the left
- QVERIFY(!image.valid(QPoint(100, 50))); // outside on the right
-
- // Test the pixel setter
- image.setPixel(QPoint(10, 10), 0xff0000ff);
- QCOMPARE(image.pixel(10, 10), 0xff0000ff);
-
- // pixel getter
- QCOMPARE(image.pixel(QPoint(10, 10)), 0xff0000ff);
-
- // pixelIndex()
- QImage indexed = image.convertToFormat(QImage::Format_Indexed8);
- QCOMPARE(indexed.pixelIndex(10, 10), indexed.pixelIndex(QPoint(10, 10)));
-}
-
-void tst_QImage::destructor()
-{
- QPolygon poly(6);
- poly.setPoint(0,-1455, 1435);
-
- QImage image(100, 100, QImage::Format_RGB32);
- QPainter ptPix(&image);
- ptPix.setPen(Qt::black);
- ptPix.setBrush(Qt::black);
- ptPix.drawPolygon(poly, Qt::WindingFill);
- ptPix.end();
-
-}
-
-
-/* XPM */
-static const char *monoPixmap[] = {
-/* width height ncolors chars_per_pixel */
-"4 4 2 1",
-"x c #000000",
-". c #ffffff",
-/* pixels */
-"xxxx",
-"x..x",
-"x..x",
-"xxxx"
-};
-
-
-#ifndef QT_NO_IMAGE_HEURISTIC_MASK
-void tst_QImage::createHeuristicMask()
-{
- QImage img(monoPixmap);
- img = img.convertToFormat(QImage::Format_MonoLSB);
- QImage mask = img.createHeuristicMask();
- QImage newMask = mask.convertToFormat(QImage::Format_ARGB32_Premultiplied);
-
- // line 2
- QVERIFY(newMask.pixel(0,1) != newMask.pixel(1,1));
- QVERIFY(newMask.pixel(1,1) == newMask.pixel(2,1));
- QVERIFY(newMask.pixel(2,1) != newMask.pixel(3,1));
-
- // line 3
- QVERIFY(newMask.pixel(0,2) != newMask.pixel(1,2));
- QVERIFY(newMask.pixel(1,2) == newMask.pixel(2,2));
- QVERIFY(newMask.pixel(2,2) != newMask.pixel(3,2));
-}
-#endif
-
-void tst_QImage::cacheKey()
-{
- QImage image1(2, 2, QImage::Format_RGB32);
- qint64 image1_key = image1.cacheKey();
- QImage image2 = image1;
-
- QVERIFY(image2.cacheKey() == image1.cacheKey());
- image2.detach();
- QVERIFY(image2.cacheKey() != image1.cacheKey());
- QVERIFY(image1.cacheKey() == image1_key);
-}
-
-void tst_QImage::smoothScale()
-{
- unsigned int data[2] = { qRgba(0, 0, 0, 0), qRgba(128, 128, 128, 128) };
-
- QImage imgX((unsigned char *)data, 2, 1, QImage::Format_ARGB32_Premultiplied);
- QImage imgY((unsigned char *)data, 1, 2, QImage::Format_ARGB32_Premultiplied);
-
- QImage scaledX = imgX.scaled(QSize(4, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- QImage scaledY = imgY.scaled(QSize(1, 4), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
-
- uint *scaled[2] = {
- (unsigned int *)scaledX.bits(),
- (unsigned int *)scaledY.bits()
- };
-
- int expected[4] = { 0, 32, 96, 128 };
- for (int image = 0; image < 2; ++image) {
- for (int index = 0; index < 4; ++index) {
- for (int component = 0; component < 4; ++component) {
- int pixel = scaled[image][index];
- int val = (pixel >> (component * 8)) & 0xff;
-
- QCOMPARE(val, expected[index]);
- }
- }
- }
-}
-
-// test area sampling
-void tst_QImage::smoothScale2()
-{
- int sizes[] = { 2, 4, 8, 10, 16, 20, 32, 40, 64, 100, 101, 128, 0 };
- QImage::Format formats[] = { QImage::Format_ARGB32, QImage::Format_RGB32, QImage::Format_Invalid };
- for (int i = 0; sizes[i] != 0; ++i) {
- for (int j = 0; formats[j] != QImage::Format_Invalid; ++j) {
- int size = sizes[i];
-
- QRgb expected = formats[j] == QImage::Format_ARGB32 ? qRgba(63, 127, 255, 255) : qRgb(63, 127, 255);
-
- QImage img(size, size, formats[j]);
- img.fill(expected);
-
- // scale x down, y down
- QImage scaled = img.scaled(QSize(1, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- QRgb pixel = scaled.pixel(0, 0);
- QCOMPARE(qAlpha(pixel), qAlpha(expected));
- QCOMPARE(qRed(pixel), qRed(expected));
- QCOMPARE(qGreen(pixel), qGreen(expected));
- QCOMPARE(qBlue(pixel), qBlue(expected));
-
- // scale x down, y up
- scaled = img.scaled(QSize(1, size * 2), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- for (int y = 0; y < scaled.height(); ++y) {
- pixel = scaled.pixel(0, y);
- QCOMPARE(qAlpha(pixel), qAlpha(expected));
- QCOMPARE(qRed(pixel), qRed(expected));
- QCOMPARE(qGreen(pixel), qGreen(expected));
- QCOMPARE(qBlue(pixel), qBlue(expected));
- }
-
- // scale x up, y down
- scaled = img.scaled(QSize(size * 2, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- for (int x = 0; x < scaled.width(); ++x) {
- pixel = scaled.pixel(x, 0);
- QCOMPARE(qAlpha(pixel), qAlpha(expected));
- QCOMPARE(qRed(pixel), qRed(expected));
- QCOMPARE(qGreen(pixel), qGreen(expected));
- QCOMPARE(qBlue(pixel), qBlue(expected));
- }
-
- // scale x up, y up
- scaled = img.scaled(QSize(size * 2, size * 2), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- for (int y = 0; y < scaled.height(); ++y) {
- for (int x = 0; x < scaled.width(); ++x) {
- pixel = scaled.pixel(x, y);
- QCOMPARE(qAlpha(pixel), qAlpha(expected));
- QCOMPARE(qRed(pixel), qRed(expected));
- QCOMPARE(qGreen(pixel), qGreen(expected));
- QCOMPARE(qBlue(pixel), qBlue(expected));
- }
- }
- }
- }
-}
-
-static inline int rand8()
-{
- return int(256. * (qrand() / (RAND_MAX + 1.0)));
-}
-
-// compares img.scale against the bilinear filtering used by QPainter
-void tst_QImage::smoothScale3()
-{
- QImage img(128, 128, QImage::Format_RGB32);
- for (int y = 0; y < img.height(); ++y) {
- for (int x = 0; x < img.width(); ++x) {
- const int red = rand8();
- const int green = rand8();
- const int blue = rand8();
- const int alpha = 255;
-
- img.setPixel(x, y, qRgba(red, green, blue, alpha));
- }
- }
-
- qreal scales[2] = { .5, 2 };
-
- for (int i = 0; i < 2; ++i) {
- QImage a = img.scaled(img.size() * scales[i], Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- QImage b(a.size(), a.format());
- b.fill(0x0);
-
- QPainter p(&b);
- p.setRenderHint(QPainter::SmoothPixmapTransform);
- p.scale(scales[i], scales[i]);
- p.drawImage(0, 0, img);
- p.end();
- int err = 0;
-
- for (int y = 0; y < a.height(); ++y) {
- for (int x = 0; x < a.width(); ++x) {
- QRgb ca = a.pixel(x, y);
- QRgb cb = b.pixel(x, y);
-
- // tolerate a little bit of rounding errors
- bool r = true;
- r &= qAbs(qRed(ca) - qRed(cb)) <= 18;
- r &= qAbs(qGreen(ca) - qGreen(cb)) <= 18;
- r &= qAbs(qBlue(ca) - qBlue(cb)) <= 18;
- if (!r)
- err++;
- }
- }
- QCOMPARE(err, 0);
- }
-}
-
-void tst_QImage::smoothScaleBig()
-{
-#if defined(Q_OS_WINCE)
- int bigValue = 2000;
-#elif defined(Q_OS_SYMBIAN)
- int bigValue = 2000;
-#else
- int bigValue = 200000;
-#endif
- QImage tall(4, bigValue, QImage::Format_ARGB32);
- tall.fill(0x0);
-
- QImage wide(bigValue, 4, QImage::Format_ARGB32);
- wide.fill(0x0);
-
- QImage tallScaled = tall.scaled(4, tall.height() / 4, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- QImage wideScaled = wide.scaled(wide.width() / 4, 4, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
-
- QCOMPARE(tallScaled.pixel(0, 0), QRgb(0x0));
- QCOMPARE(wideScaled.pixel(0, 0), QRgb(0x0));
-}
-
-void tst_QImage::smoothScaleAlpha()
-{
- QImage src(128, 128, QImage::Format_ARGB32_Premultiplied);
- src.fill(0x0);
-
- QPainter srcPainter(&src);
- srcPainter.setPen(Qt::NoPen);
- srcPainter.setBrush(Qt::white);
- srcPainter.drawEllipse(QRect(QPoint(), src.size()));
- srcPainter.end();
-
- QImage dst(32, 32, QImage::Format_ARGB32_Premultiplied);
- dst.fill(0xffffffff);
- QImage expected = dst;
-
- QPainter dstPainter(&dst);
- dstPainter.drawImage(0, 0, src.scaled(dst.size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
- dstPainter.end();
-
- QCOMPARE(dst, expected);
-}
-
-static int count(const QImage &img, int x, int y, int dx, int dy, QRgb pixel)
-{
- int i = 0;
- while (x >= 0 && x < img.width() && y >= 0 && y < img.height()) {
- i += (img.pixel(x, y) == pixel);
- x += dx;
- y += dy;
- }
- return i;
-}
-
-const int transformed_image_width = 128;
-const int transformed_image_height = 128;
-
-void tst_QImage::transformed_data()
-{
- QTest::addColumn<QTransform>("transform");
-
- {
- QTransform transform;
- transform.translate(10.4, 10.4);
- QTest::newRow("Translate") << transform;
- }
- {
- QTransform transform;
- transform.scale(1.5, 1.5);
- QTest::newRow("Scale") << transform;
- }
- {
- QTransform transform;
- transform.rotate(30);
- QTest::newRow("Rotate 30") << transform;
- }
- {
- QTransform transform;
- transform.rotate(90);
- QTest::newRow("Rotate 90") << transform;
- }
- {
- QTransform transform;
- transform.rotate(180);
- QTest::newRow("Rotate 180") << transform;
- }
- {
- QTransform transform;
- transform.rotate(270);
- QTest::newRow("Rotate 270") << transform;
- }
- {
- QTransform transform;
- transform.translate(transformed_image_width/2, transformed_image_height/2);
- transform.rotate(155, Qt::XAxis);
- transform.translate(-transformed_image_width/2, -transformed_image_height/2);
- QTest::newRow("Perspective 1") << transform;
- }
- {
- QTransform transform;
- transform.rotate(155, Qt::XAxis);
- transform.translate(-transformed_image_width/2, -transformed_image_height/2);
- QTest::newRow("Perspective 2") << transform;
- }
-}
-
-void tst_QImage::transformed()
-{
- QFETCH(QTransform, transform);
-
- QImage img(transformed_image_width, transformed_image_height, QImage::Format_ARGB32_Premultiplied);
- QPainter p(&img);
- p.fillRect(0, 0, img.width(), img.height(), Qt::red);
- p.drawRect(0, 0, img.width()-1, img.height()-1);
- p.end();
-
- QImage transformed = img.transformed(transform, Qt::SmoothTransformation);
-
- // all borders should have touched pixels
-
- QVERIFY(count(transformed, 0, 0, 1, 0, 0x0) < transformed.width());
- QVERIFY(count(transformed, 0, 0, 0, 1, 0x0) < transformed.height());
-
- QVERIFY(count(transformed, 0, img.height() - 1, 1, 0, 0x0) < transformed.width());
- QVERIFY(count(transformed, img.width() - 1, 0, 0, 1, 0x0) < transformed.height());
-
- QImage transformedPadded(transformed.width() + 2, transformed.height() + 2, img.format());
- transformedPadded.fill(0x0);
-
- p.begin(&transformedPadded);
- p.setRenderHint(QPainter::SmoothPixmapTransform);
- p.setRenderHint(QPainter::Antialiasing);
- p.setTransform(transformed.trueMatrix(transform, img.width(), img.height()) * QTransform().translate(1, 1));
- p.drawImage(0, 0, img);
- p.end();
-
- // no borders should have touched pixels since we have a one-pixel padding
-
- QCOMPARE(count(transformedPadded, 0, 0, 1, 0, 0x0), transformedPadded.width());
- QCOMPARE(count(transformedPadded, 0, 0, 0, 1, 0x0), transformedPadded.height());
-
- QCOMPARE(count(transformedPadded, 0, transformedPadded.height() - 1, 1, 0, 0x0), transformedPadded.width());
- QCOMPARE(count(transformedPadded, transformedPadded.width() - 1, 0, 0, 1, 0x0), transformedPadded.height());
-}
-
-void tst_QImage::transformed2()
-{
- QImage img(3, 3, QImage::Format_Mono);
- QPainter p(&img);
- p.fillRect(0, 0, 3, 3, Qt::white);
- p.fillRect(0, 0, 3, 3, Qt::Dense4Pattern);
- p.end();
-
- QTransform transform;
- transform.scale(3, 3);
-
- QImage expected(9, 9, QImage::Format_Mono);
- p.begin(&expected);
- p.fillRect(0, 0, 9, 9, Qt::white);
- p.setBrush(Qt::black);
- p.setPen(Qt::NoPen);
- p.drawRect(3, 0, 3, 3);
- p.drawRect(0, 3, 3, 3);
- p.drawRect(6, 3, 3, 3);
- p.drawRect(3, 6, 3, 3);
- p.end();
-
- {
- QImage actual = img.transformed(transform);
-
- QCOMPARE(actual.format(), expected.format());
- QCOMPARE(actual.size(), expected.size());
- QCOMPARE(actual, expected);
- }
-
- {
- transform.rotate(-90);
- QImage actual = img.transformed(transform);
-
- QCOMPARE(actual.convertToFormat(QImage::Format_ARGB32_Premultiplied),
- expected.convertToFormat(QImage::Format_ARGB32_Premultiplied));
- }
-}
-
-void tst_QImage::scaled()
-{
- QImage img(102, 3, QImage::Format_Mono);
- QPainter p(&img);
- p.fillRect(0, 0, img.width(), img.height(), Qt::white);
- p.end();
-
- QImage scaled = img.scaled(1994, 10);
-
- QImage expected(1994, 10, QImage::Format_Mono);
- p.begin(&expected);
- p.fillRect(0, 0, expected.width(), expected.height(), Qt::white);
- p.end();
-
- QCOMPARE(scaled, expected);
-}
-
-void tst_QImage::paintEngine()
-{
- QImage img;
-
- QPaintEngine *engine;
- {
- QImage temp(100, 100, QImage::Format_RGB32);
- temp.fill(0xff000000);
-
- QPainter p(&temp);
- p.fillRect(80,80,10,10,Qt::blue);
- p.end();
-
- img = temp;
-
- engine = temp.paintEngine();
- }
-
- {
- QPainter p(&img);
-
- p.fillRect(80,10,10,10,Qt::yellow);
- p.end();
- }
-
- QImage expected(100, 100, QImage::Format_RGB32);
- expected.fill(0xff000000);
-
- QPainter p(&expected);
- p.fillRect(80,80,10,10,Qt::blue);
- p.fillRect(80,10,10,10,Qt::yellow);
- p.end();
-
- QCOMPARE(engine, img.paintEngine());
- QCOMPARE(img, expected);
-}
-
-void tst_QImage::setAlphaChannelWhilePainting()
-{
- QImage image(100, 100, QImage::Format_ARGB32);
- image.fill(Qt::black);
- QPainter p(&image);
-
- image.setAlphaChannel(image.createMaskFromColor(QColor(Qt::black).rgb(), Qt::MaskInColor));
-}
-
-
-// See task 240047 for details
-void tst_QImage::smoothScaledSubImage()
-{
- QImage original(128, 128, QImage::Format_RGB32);
- QPainter p(&original);
- p.fillRect(0, 0, 64, 128, Qt::black);
- p.fillRect(64, 0, 64, 128, Qt::white);
- p.end();
-
- QImage subimage(((const QImage &) original).bits(), 32, 32, original.bytesPerLine(), QImage::Format_RGB32); // only in the black part of the source...
-
- QImage scaled = subimage.scaled(8, 8, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
-
- for (int y=0; y<scaled.height(); ++y)
- for (int x=0; x<scaled.width(); ++x)
- QCOMPARE(scaled.pixel(x, y), 0xff000000);
-}
-
-void tst_QImage::nullSize_data()
-{
- QTest::addColumn<QImage>("image");
- QTest::newRow("null image") << QImage();
- QTest::newRow("zero-size image") << QImage(0, 0, QImage::Format_RGB32);
-}
-
-void tst_QImage::nullSize()
-{
- QFETCH(QImage, image);
- QCOMPARE(image.isNull(), true);
- QCOMPARE(image.width(), image.size().width());
- QCOMPARE(image.height(), image.size().height());
-}
-
-void tst_QImage::premultipliedAlphaConsistency()
-{
- QImage img(256, 1, QImage::Format_ARGB32);
- for (int x = 0; x < 256; ++x)
- img.setPixel(x, 0, (x << 24) | 0xffffff);
-
- QImage converted = img.convertToFormat(QImage::Format_ARGB8565_Premultiplied);
- QImage pm32 = converted.convertToFormat(QImage::Format_ARGB32_Premultiplied);
-
- for (int i = 0; i < pm32.width(); ++i) {
- QRgb pixel = pm32.pixel(i, 0);
- QVERIFY(qRed(pixel) <= qAlpha(pixel));
- QVERIFY(qGreen(pixel) <= qAlpha(pixel));
- QVERIFY(qBlue(pixel) <= qAlpha(pixel));
- }
-}
-
-void tst_QImage::compareIndexed()
-{
- QImage img(256, 1, QImage::Format_Indexed8);
-
- QVector<QRgb> colorTable(256);
- for (int i = 0; i < 256; ++i)
- colorTable[i] = qRgb(i, i, i);
- img.setColorTable(colorTable);
-
- for (int i = 0; i < 256; ++i) {
- img.setPixel(i, 0, i);
- }
-
- QImage imgInverted(256, 1, QImage::Format_Indexed8);
- QVector<QRgb> invertedColorTable(256);
- for (int i = 0; i < 256; ++i)
- invertedColorTable[255-i] = qRgb(i, i, i);
- imgInverted.setColorTable(invertedColorTable);
-
- for (int i = 0; i < 256; ++i) {
- imgInverted.setPixel(i, 0, (255-i));
- }
-
- QCOMPARE(img, imgInverted);
-}
-
-void tst_QImage::fillColor_data()
-{
- QTest::addColumn<QImage::Format>("format");
- QTest::addColumn<Qt::GlobalColor>("color");
- QTest::addColumn<uint>("pixelValue");
-
- QTest::newRow("Mono, color0") << QImage::Format_Mono << Qt::color0 << 0u;
- QTest::newRow("Mono, color1") << QImage::Format_Mono << Qt::color1 << 1u;
-
- QTest::newRow("MonoLSB, color0") << QImage::Format_MonoLSB << Qt::color0 << 0u;
- QTest::newRow("MonoLSB, color1") << QImage::Format_MonoLSB << Qt::color1 << 1u;
-
- const char *names[] = {
- "Indexed8",
- "RGB32",
- "ARGB32",
- "ARGB32pm",
- "RGB16",
- "ARGB8565pm",
- "RGB666",
- "ARGB6666pm",
- "RGB555",
- "ARGB8555pm",
- "RGB888",
- "RGB444",
- "ARGB4444pm",
- 0
- };
-
- QImage::Format formats[] = {
- QImage::Format_Indexed8,
- QImage::Format_RGB32,
- QImage::Format_ARGB32,
- QImage::Format_ARGB32_Premultiplied,
- QImage::Format_RGB16,
- QImage::Format_ARGB8565_Premultiplied,
- QImage::Format_RGB666,
- QImage::Format_ARGB6666_Premultiplied,
- QImage::Format_RGB555,
- QImage::Format_ARGB8555_Premultiplied,
- QImage::Format_RGB888,
- QImage::Format_RGB444,
- QImage::Format_ARGB4444_Premultiplied
- };
-
- for (int i=0; names[i] != 0; ++i) {
- QByteArray name;
- name.append(names[i]).append(", ");
-
- QTest::newRow(QByteArray(name).append("black").constData()) << formats[i] << Qt::black << 0xff000000;
- QTest::newRow(QByteArray(name).append("white").constData()) << formats[i] << Qt::white << 0xffffffff;
- QTest::newRow(QByteArray(name).append("red").constData()) << formats[i] << Qt::red << 0xffff0000;
- QTest::newRow(QByteArray(name).append("green").constData()) << formats[i] << Qt::green << 0xff00ff00;
- QTest::newRow(QByteArray(name).append("blue").constData()) << formats[i] << Qt::blue << 0xff0000ff;
- }
-
- QTest::newRow("RGB16, transparent") << QImage::Format_RGB16 << Qt::transparent << 0xff000000;
- QTest::newRow("RGB32, transparent") << QImage::Format_RGB32 << Qt::transparent << 0xff000000;
- QTest::newRow("ARGB32, transparent") << QImage::Format_ARGB32 << Qt::transparent << 0x00000000u;
- QTest::newRow("ARGB32pm, transparent") << QImage::Format_ARGB32_Premultiplied << Qt::transparent << 0x00000000u;
-}
-
-void tst_QImage::fillColor()
-{
- QFETCH(QImage::Format, format);
- QFETCH(Qt::GlobalColor, color);
- QFETCH(uint, pixelValue);
-
- QImage image(1, 1, format);
-
- if (image.depth() == 8) {
- QVector<QRgb> table;
- table << 0xff000000;
- table << 0xffffffff;
- table << 0xffff0000;
- table << 0xff00ff00;
- table << 0xff0000ff;
- image.setColorTable(table);
- }
-
- image.fill(color);
- if (image.depth() == 1) {
- QCOMPARE(image.pixelIndex(0, 0), (int) pixelValue);
- } else {
- QCOMPARE(image.pixel(0, 0), pixelValue);
- }
-
- image.fill(QColor(color));
- if (image.depth() == 1) {
- QCOMPARE(image.pixelIndex(0, 0), (int) pixelValue);
- } else {
- QCOMPARE(image.pixel(0, 0), pixelValue);
- }
-}
-
-void tst_QImage::fillColorWithAlpha()
-{
- QImage argb32(1, 1, QImage::Format_ARGB32);
- argb32.fill(QColor(255, 0, 0, 127));
- QCOMPARE(argb32.pixel(0, 0), qRgba(255, 0, 0, 127));
-
- QImage argb32pm(1, 1, QImage::Format_ARGB32_Premultiplied);
- argb32pm.fill(QColor(255, 0, 0, 127));
- QCOMPARE(argb32pm.pixel(0, 0), 0x7f7f0000u);
-}
-
-void tst_QImage::rgbSwapped_data()
-{
- QTest::addColumn<QImage::Format>("format");
-
- QTest::newRow("Format_Indexed8") << QImage::Format_Indexed8;
- QTest::newRow("Format_RGB32") << QImage::Format_RGB32;
- QTest::newRow("Format_ARGB32") << QImage::Format_ARGB32;
- QTest::newRow("Format_ARGB32_Premultiplied") << QImage::Format_ARGB32_Premultiplied;
- QTest::newRow("Format_RGB16") << QImage::Format_RGB16;
- QTest::newRow("Format_ARGB8565_Premultiplied") << QImage::Format_ARGB8565_Premultiplied;
- QTest::newRow("Format_ARGB6666_Premultiplied") << QImage::Format_ARGB6666_Premultiplied;
- QTest::newRow("Format_ARGB4444_Premultiplied") << QImage::Format_ARGB4444_Premultiplied;
- QTest::newRow("Format_RGB666") << QImage::Format_RGB666;
- QTest::newRow("Format_RGB555") << QImage::Format_RGB555;
- QTest::newRow("Format_ARGB8555_Premultiplied") << QImage::Format_ARGB8555_Premultiplied;
- QTest::newRow("Format_RGB888") << QImage::Format_RGB888;
- QTest::newRow("Format_RGB444") << QImage::Format_RGB444;
-}
-
-void tst_QImage::rgbSwapped()
-{
- QFETCH(QImage::Format, format);
-
- QImage image(100, 1, format);
- image.fill(0);
-
- QVector<QColor> testColor(image.width());
-
- for (int i = 0; i < image.width(); ++i)
- testColor[i] = QColor(i, 10 + i, 20 + i * 2, 30 + i);
-
- if (format != QImage::Format_Indexed8) {
- QPainter p(&image);
- p.setCompositionMode(QPainter::CompositionMode_Source);
- for (int i = 0; i < image.width(); ++i)
- p.fillRect(QRect(i, 0, 1, 1), testColor[i].rgb());
- } else {
- image.setColorCount(image.width());
- for (int i = 0; i < image.width(); ++i) {
- image.setColor(0, testColor[i].rgba());
- image.setPixel(i, 0, i);
- }
- }
-
- QImage imageSwapped = image.rgbSwapped();
-
- for (int i = 0; i < image.width(); ++i) {
- QColor referenceColor = QColor(image.pixel(i, 0));
- QColor swappedColor = QColor(imageSwapped.pixel(i, 0));
-
- QCOMPARE(swappedColor.alpha(), referenceColor.alpha());
- QCOMPARE(swappedColor.red(), referenceColor.blue());
- QCOMPARE(swappedColor.green(), referenceColor.green());
- QCOMPARE(swappedColor.blue(), referenceColor.red());
- }
-
- QImage imageSwappedTwice = imageSwapped.rgbSwapped();
-
- QCOMPARE(image, imageSwappedTwice);
-
- QCOMPARE(memcmp(image.constBits(), imageSwappedTwice.constBits(), image.numBytes()), 0);
-}
-
-void tst_QImage::deepCopyWhenPaintingActive()
-{
- QImage image(64, 64, QImage::Format_ARGB32_Premultiplied);
- image.fill(0);
-
- QPainter painter(&image);
- QImage copy = image;
-
- painter.setBrush(Qt::black);
- painter.drawEllipse(image.rect());
-
- QVERIFY(copy != image);
-}
-
-void tst_QImage::scaled_QTBUG19157()
-{
- QImage foo(5000, 1, QImage::Format_RGB32);
- foo = foo.scaled(1024, 1024, Qt::KeepAspectRatio);
- QVERIFY(!foo.isNull());
-}
-
-QTEST_MAIN(tst_QImage)
-#include "tst_qimage.moc"
diff --git a/tests/auto/qimagereader/qimagereader.pro b/tests/auto/qimagereader/qimagereader.pro
deleted file mode 100644
index 5c939b3a3c..0000000000
--- a/tests/auto/qimagereader/qimagereader.pro
+++ /dev/null
@@ -1,36 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qimagereader.cpp
-MOC_DIR=tmp
-QT += core-private gui-private network
-RESOURCES += qimagereader.qrc
-!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
-
-win32-msvc:QMAKE_CXXFLAGS -= -Zm200
-win32-msvc:QMAKE_CXXFLAGS += -Zm800
-win32-msvc.net:QMAKE_CXXFLAGS -= -Zm300
-win32-msvc.net:QMAKE_CXXFLAGS += -Zm1100
-
-wince*: {
- images.files = images
- images.path = .
-
- imagePlugins.files = $$QT_BUILD_TREE/plugins/imageformats/*.dll
- imagePlugins.path = imageformats
-
- DEPLOYMENT += images imagePlugins
- DEFINES += SRCDIR=\\\".\\\"
-}
-
-symbian: {
- images.files = images
- images.path = .
-
- DEPLOYMENT += images
-
- qt_not_deployed {
- imagePlugins.files = qjpeg.dll qgif.dll qmng.dll
- imagePlugins.path = imageformats
-
- DEPLOYMENT += imagePlugins
- }
-}
diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp
deleted file mode 100644
index 6359468597..0000000000
--- a/tests/auto/qimagereader/tst_qimagereader.cpp
+++ /dev/null
@@ -1,2026 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <QBuffer>
-#include <QDebug>
-#include <QFile>
-#include <QImage>
-#include <QImageReader>
-#include <QImageWriter>
-#include <QLabel>
-#include <QPixmap>
-#include <QSet>
-#include <QTcpSocket>
-#include <QTcpServer>
-#include <QTimer>
-
-#include "../platformquirks.h"
-
-#if defined(Q_OS_SYMBIAN)
-# define SRCDIR "."
-#endif
-
-typedef QMap<QString, QString> QStringMap;
-typedef QList<int> QIntList;
-Q_DECLARE_METATYPE(QImage)
-Q_DECLARE_METATYPE(QRect)
-Q_DECLARE_METATYPE(QSize)
-Q_DECLARE_METATYPE(QColor)
-Q_DECLARE_METATYPE(QStringMap)
-Q_DECLARE_METATYPE(QIntList)
-Q_DECLARE_METATYPE(QIODevice *)
-Q_DECLARE_METATYPE(QImage::Format)
-
-//TESTED_FILES=
-
-class tst_QImageReader : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QImageReader();
- virtual ~tst_QImageReader();
-
-public slots:
- void init();
- void cleanup();
-
-private slots:
- void getSetCheck();
- void readImage_data();
- void readImage();
- void jpegRgbCmyk();
-
- void setScaledSize_data();
- void setScaledSize();
-
- void setClipRect_data();
- void setClipRect();
-
- void setScaledClipRect_data();
- void setScaledClipRect();
-
- void imageFormat_data();
- void imageFormat();
-
- void blackXPM();
- void transparentXPM();
- void multiWordNamedColorXPM();
-
- void supportedFormats();
-
- void readFromDevice_data();
- void readFromDevice();
-
- void readFromFileAfterJunk_data();
- void readFromFileAfterJunk();
-
- void devicePosition_data();
- void devicePosition();
-
- void setBackgroundColor_data();
- void setBackgroundColor();
-
- void supportsAnimation_data();
- void supportsAnimation();
-
- void readFromResources_data();
- void readFromResources();
-
- void dotsPerMeter_data();
- void dotsPerMeter();
-
- void physicalDpi_data();
- void physicalDpi();
-
- void sizeBeforeRead_data();
- void sizeBeforeRead();
-
- void sizeBeforeFormat_data();
- void sizeBeforeFormat();
-
- void imageFormatBeforeRead_data();
- void imageFormatBeforeRead();
-
- void gifHandlerBugs();
- void animatedGif();
- void gifImageCount();
- void gifLoopCount();
-
- void readCorruptImage_data();
- void readCorruptImage();
- void readCorruptBmp();
-
- void supportsOption_data();
- void supportsOption();
-
- void tiffCompression_data();
- void tiffCompression();
- void tiffEndianness();
-
- void tiffOrientation_data();
- void tiffOrientation();
-
- void tiffGrayscale();
-
- void autoDetectImageFormat();
- void fileNameProbing();
-
- void pixelCompareWithBaseline_data();
- void pixelCompareWithBaseline();
-
- void task255627_setNullScaledSize_data();
- void task255627_setNullScaledSize();
-
- void testIgnoresFormatAndExtension_data();
- void testIgnoresFormatAndExtension();
-
- void saveFormat_data();
- void saveFormat();
-
- void readText_data();
- void readText();
-
- void preserveTexts_data();
- void preserveTexts();
-};
-
-static const QLatin1String prefix(SRCDIR "/images/");
-
-// helper to skip an autotest when the given image format is not supported
-#define SKIP_IF_UNSUPPORTED(format) do { \
- if (!QByteArray(format).isEmpty() && !QImageReader::supportedImageFormats().contains(format)) \
- QSKIP("\"" + QByteArray(format) + "\" images are not supported", SkipSingle); \
-} while (0)
-
-// Testing get/set functions
-void tst_QImageReader::getSetCheck()
-{
- QImageReader obj1;
- // QIODevice * QImageReader::device()
- // void QImageReader::setDevice(QIODevice *)
- QFile *var1 = new QFile;
- obj1.setDevice(var1);
-
- //A bit strange but that's the only way to compile under windows.
- QCOMPARE((QIODevice *) var1, obj1.device());
- obj1.setDevice((QIODevice *)0);
- QCOMPARE((QIODevice *) 0,
- obj1.device());
- delete var1;
-}
-
-tst_QImageReader::tst_QImageReader()
-{
-}
-
-tst_QImageReader::~tst_QImageReader()
-{
-
-}
-
-void tst_QImageReader::init()
-{
-}
-
-void tst_QImageReader::cleanup()
-{
-}
-
-void tst_QImageReader::readImage_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<bool>("success");
- QTest::addColumn<QByteArray>("format");
-
- QTest::newRow("empty") << QString() << false << QByteArray();
- QTest::newRow("BMP: colorful") << QString("colorful.bmp") << true << QByteArray("bmp");
- QTest::newRow("BMP: test32bfv4") << QString("test32bfv4.bmp") << true << QByteArray("bmp");
- QTest::newRow("BMP: test32v5") << QString("test32v5.bmp") << true << QByteArray("bmp");
- QTest::newRow("BMP: font") << QString("font.bmp") << true << QByteArray("bmp");
- QTest::newRow("BMP: signed char") << QString("crash-signed-char.bmp") << true << QByteArray("bmp");
- QTest::newRow("BMP: 4bpp RLE") << QString("4bpp-rle.bmp") << true << QByteArray("bmp");
- QTest::newRow("BMP: 4bpp uncompressed") << QString("tst7.bmp") << true << QByteArray("bmp");
- QTest::newRow("BMP: 16bpp") << QString("16bpp.bmp") << true << QByteArray("bmp");
- QTest::newRow("BMP: negative height") << QString("negativeheight.bmp") << true << QByteArray("bmp");
- QTest::newRow("XPM: marble") << QString("marble.xpm") << true << QByteArray("xpm");
- QTest::newRow("PNG: kollada") << QString("kollada.png") << true << QByteArray("png");
- QTest::newRow("PPM: teapot") << QString("teapot.ppm") << true << QByteArray("ppm");
- QTest::newRow("PPM: runners") << QString("runners.ppm") << true << QByteArray("ppm");
- QTest::newRow("PPM: test") << QString("test.ppm") << true << QByteArray("ppm");
- QTest::newRow("XBM: gnus") << QString("gnus.xbm") << true << QByteArray("xbm");
-
- QTest::newRow("JPEG: beavis") << QString("beavis.jpg") << true << QByteArray("jpeg");
- QTest::newRow("JPEG: qtbug13653") << QString("qtbug13653-no_eoi.jpg") << true << QByteArray("jpeg");
-
- QTest::newRow("GIF: earth") << QString("earth.gif") << true << QByteArray("gif");
- QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << true << QByteArray("gif");
-
- QTest::newRow("MNG: ball") << QString("ball.mng") << true << QByteArray("mng");
- QTest::newRow("MNG: fire") << QString("fire.mng") << true << QByteArray("mng");
-
- QTest::newRow("SVG: rect") << QString("rect.svg") << true << QByteArray("svg");
- QTest::newRow("SVGZ: rect") << QString("rect.svgz") << true << QByteArray("svgz");
-}
-
-void tst_QImageReader::readImage()
-{
- QFETCH(QString, fileName);
- QFETCH(bool, success);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- for (int i = 0; i < 2; ++i) {
- QImageReader io(prefix + fileName, i ? QByteArray() : format);
- if (success) {
- if (!io.supportsAnimation())
- QVERIFY(io.imageCount() > 0);
- } else {
- QCOMPARE(io.imageCount(), -1);
- }
- QImage image = io.read();
- if (!success) {
- QVERIFY(image.isNull());
- return;
- }
-
- QVERIFY2(!image.isNull(), io.errorString().toLatin1().constData());
-
- // No format
- QImageReader io2(prefix + fileName);
- QVERIFY2(!io2.read().isNull(), io.errorString().toLatin1().constData());
-
- // No extension, no format
- QImageReader io3(prefix + fileName.left(fileName.lastIndexOf(QLatin1Char('.'))));
- QVERIFY2(!io3.read().isNull(), io.errorString().toLatin1().constData());
-
- // Read into \a image2
- QImage image2;
- QImageReader image2Reader(prefix + fileName, i ? QByteArray() : format);
- QCOMPARE(image2Reader.format(), format);
- QVERIFY(image2Reader.read(&image2));
- if (image2Reader.canRead()) {
- if (i)
- QVERIFY(!image2Reader.format().isEmpty());
- else
- QCOMPARE(image2Reader.format(), format);
- } else {
- if (i)
- QVERIFY(image2Reader.format().isEmpty());
- else
- QVERIFY(!image2Reader.format().isEmpty());
- }
- QCOMPARE(image, image2);
- do {
- QVERIFY2(!image.isNull(), io.errorString().toLatin1().constData());
- } while (!(image = io.read()).isNull());
- }
-}
-
-void tst_QImageReader::jpegRgbCmyk()
-{
- QImage image1(prefix + QLatin1String("YCbCr_cmyk.jpg"));
- QImage image2(prefix + QLatin1String("YCbCr_cmyk.png"));
-
- if (PlatformQuirks::isImageLoaderImprecise()) {
- // first, do some obvious tests
- QCOMPARE(image1.height(), image2.height());
- QCOMPARE(image1.width(), image2.width());
- QCOMPARE(image1.format(), image2.format());
- QCOMPARE(image1.format(), QImage::Format_RGB32);
-
- // compare all the pixels with a slack of 3. This ignores rounding errors in libjpeg/libpng
- for (int h = 0; h < image1.height(); ++h) {
- const uchar *s1 = image1.constScanLine(h);
- const uchar *s2 = image2.constScanLine(h);
- for (int w = 0; w < image1.width() * 4; ++w) {
- if (*s1 != *s2) {
- QVERIFY2(qAbs(*s1 - *s2) <= 3, qPrintable(QString("images differ in line %1, col %2 (image1: %3, image2: %4)").arg(h).arg(w).arg(*s1, 0, 16).arg(*s2, 0, 16)));
- }
- s1++;
- s2++;
- }
- }
- } else {
- QCOMPARE(image1, image2);
- }
-}
-
-void tst_QImageReader::setScaledSize_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QSize>("newSize");
- QTest::addColumn<QByteArray>("format");
-
- QTest::newRow("BMP: colorful") << "colorful" << QSize(200, 200) << QByteArray("bmp");
- QTest::newRow("BMP: font") << "font" << QSize(200, 200) << QByteArray("bmp");
- QTest::newRow("XPM: marble") << "marble" << QSize(200, 200) << QByteArray("xpm");
- QTest::newRow("PNG: kollada") << "kollada" << QSize(200, 200) << QByteArray("png");
- QTest::newRow("PPM: teapot") << "teapot" << QSize(200, 200) << QByteArray("ppm");
- QTest::newRow("PPM: runners") << "runners.ppm" << QSize(400, 400) << QByteArray("ppm");
- QTest::newRow("PPM: test") << "test.ppm" << QSize(10, 10) << QByteArray("ppm");
- QTest::newRow("XBM: gnus") << "gnus" << QSize(200, 200) << QByteArray("xbm");
-
- QTest::newRow("JPEG: beavis A") << "beavis" << QSize(200, 200) << QByteArray("jpeg");
- QTest::newRow("JPEG: beavis B") << "beavis" << QSize(175, 175) << QByteArray("jpeg");
- QTest::newRow("JPEG: beavis C") << "beavis" << QSize(100, 100) << QByteArray("jpeg");
- QTest::newRow("JPEG: beavis D") << "beavis" << QSize(100, 200) << QByteArray("jpeg");
- QTest::newRow("JPEG: beavis E") << "beavis" << QSize(200, 100) << QByteArray("jpeg");
- QTest::newRow("JPEG: beavis F") << "beavis" << QSize(87, 87) << QByteArray("jpeg");
- QTest::newRow("JPEG: beavis G") << "beavis" << QSize(50, 45) << QByteArray("jpeg");
- QTest::newRow("JPEG: beavis H") << "beavis" << QSize(43, 43) << QByteArray("jpeg");
- QTest::newRow("JPEG: beavis I") << "beavis" << QSize(25, 25) << QByteArray("jpeg");
-
- QTest::newRow("GIF: earth") << "earth" << QSize(200, 200) << QByteArray("gif");
- QTest::newRow("GIF: trolltech") << "trolltech" << QSize(200, 200) << QByteArray("gif");
-
- QTest::newRow("MNG: ball") << "ball" << QSize(200, 200) << QByteArray("mng");
- QTest::newRow("MNG: fire") << "fire" << QSize(200, 200) << QByteArray("mng");
-
- QTest::newRow("SVG: rect") << "rect" << QSize(200, 200) << QByteArray("svg");
- QTest::newRow("SVGZ: rect") << "rect" << QSize(200, 200) << QByteArray("svgz");
-}
-
-void tst_QImageReader::setScaledSize()
-{
- QFETCH(QString, fileName);
- QFETCH(QSize, newSize);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImageReader reader(prefix + fileName);
- reader.setScaledSize(newSize);
- QImage image = reader.read();
- QVERIFY(!image.isNull());
-
- QCOMPARE(image.size(), newSize);
-}
-
-void tst_QImageReader::task255627_setNullScaledSize_data()
-{
- setScaledSize_data();
-}
-
-void tst_QImageReader::task255627_setNullScaledSize()
-{
- QFETCH(QString, fileName);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImageReader reader(prefix + fileName);
-
- // set a null size
- reader.setScaledSize(QSize(0, 0));
- reader.setQuality(0);
- QImage image = reader.read();
- QVERIFY(image.isNull());
- QCOMPARE(image.size(), QSize(0, 0));
-}
-
-void tst_QImageReader::setClipRect_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QRect>("newRect");
- QTest::addColumn<QByteArray>("format");
- QTest::newRow("BMP: colorful") << "colorful" << QRect(0, 0, 50, 50) << QByteArray("bmp");
- QTest::newRow("BMP: test32bfv4") << "test32bfv4" << QRect(0, 0, 50, 50) << QByteArray("bmp");
- QTest::newRow("BMP: test32v5") << "test32v5" << QRect(0, 0, 50, 50) << QByteArray("bmp");
- QTest::newRow("BMP: font") << "font" << QRect(0, 0, 50, 50) << QByteArray("bmp");
- QTest::newRow("BMP: 4bpp uncompressed") << "tst7.bmp" << QRect(0, 0, 31, 31) << QByteArray("bmp");
- QTest::newRow("XPM: marble") << "marble" << QRect(0, 0, 50, 50) << QByteArray("xpm");
- QTest::newRow("PNG: kollada") << "kollada" << QRect(0, 0, 50, 50) << QByteArray("png");
- QTest::newRow("PPM: teapot") << "teapot" << QRect(0, 0, 50, 50) << QByteArray("ppm");
- QTest::newRow("PPM: runners") << "runners.ppm" << QRect(0, 0, 50, 50) << QByteArray("ppm");
- QTest::newRow("PPM: test") << "test.ppm" << QRect(0, 0, 50, 50) << QByteArray("ppm");
- QTest::newRow("XBM: gnus") << "gnus" << QRect(0, 0, 50, 50) << QByteArray("xbm");
-
- QTest::newRow("JPEG: beavis") << "beavis" << QRect(0, 0, 50, 50) << QByteArray("jpeg");
-
- QTest::newRow("GIF: earth") << "earth" << QRect(0, 0, 50, 50) << QByteArray("gif");
- QTest::newRow("GIF: trolltech") << "trolltech" << QRect(0, 0, 50, 50) << QByteArray("gif");
-
- QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng");
- QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng");
-
- QTest::newRow("SVG: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svg");
- QTest::newRow("SVGZ: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svgz");
-}
-
-void tst_QImageReader::setClipRect()
-{
- QFETCH(QString, fileName);
- QFETCH(QRect, newRect);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImageReader reader(prefix + fileName);
- reader.setClipRect(newRect);
- QImage image = reader.read();
- QVERIFY(!image.isNull());
- QCOMPARE(image.rect(), newRect);
-
- QImageReader originalReader(prefix + fileName);
- QImage originalImage = originalReader.read();
- QCOMPARE(originalImage.copy(newRect), image);
-}
-
-void tst_QImageReader::setScaledClipRect_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QRect>("newRect");
- QTest::addColumn<QByteArray>("format");
-
- QTest::newRow("BMP: colorful") << "colorful" << QRect(0, 0, 50, 50) << QByteArray("bmp");
- QTest::newRow("BMP: test32bfv4") << "test32bfv4" << QRect(0, 0, 50, 50) << QByteArray("bmp");
- QTest::newRow("BMP: test32v5") << "test32v5" << QRect(0, 0, 50, 50) << QByteArray("bmp");
- QTest::newRow("BMP: font") << "font" << QRect(0, 0, 50, 50) << QByteArray("bmp");
- QTest::newRow("XPM: marble") << "marble" << QRect(0, 0, 50, 50) << QByteArray("xpm");
- QTest::newRow("PNG: kollada") << "kollada" << QRect(0, 0, 50, 50) << QByteArray("png");
- QTest::newRow("PPM: teapot") << "teapot" << QRect(0, 0, 50, 50) << QByteArray("ppm");
- QTest::newRow("PPM: runners") << "runners.ppm" << QRect(0, 0, 50, 50) << QByteArray("ppm");
- QTest::newRow("PPM: test") << "test.ppm" << QRect(0, 0, 50, 50) << QByteArray("ppm");
- QTest::newRow("XBM: gnus") << "gnus" << QRect(0, 0, 50, 50) << QByteArray("xbm");
-
- QTest::newRow("JPEG: beavis") << "beavis" << QRect(0, 0, 50, 50) << QByteArray("jpeg");
-
- QTest::newRow("GIF: earth") << "earth" << QRect(0, 0, 50, 50) << QByteArray("gif");
- QTest::newRow("GIF: trolltech") << "trolltech" << QRect(0, 0, 50, 50) << QByteArray("gif");
-
- QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng");
- QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng");
-
- QTest::newRow("SVG: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svg");
- QTest::newRow("SVGZ: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svgz");
-}
-
-void tst_QImageReader::setScaledClipRect()
-{
- QFETCH(QString, fileName);
- QFETCH(QRect, newRect);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImageReader reader(prefix + fileName);
- reader.setScaledSize(QSize(300, 300));
- reader.setScaledClipRect(newRect);
- QImage image = reader.read();
- QVERIFY(!image.isNull());
- QCOMPARE(image.rect(), newRect);
-
- QImageReader originalReader(prefix + fileName);
- originalReader.setScaledSize(QSize(300, 300));
- QImage originalImage = originalReader.read();
- QCOMPARE(originalImage.copy(newRect), image);
-}
-
-void tst_QImageReader::imageFormat_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QByteArray>("format");
- QTest::addColumn<QImage::Format>("imageFormat");
-
- QTest::newRow("pbm") << QString("image.pbm") << QByteArray("pbm") << QImage::Format_Mono;
- QTest::newRow("pgm") << QString("image.pgm") << QByteArray("pgm") << QImage::Format_Indexed8;
- QTest::newRow("ppm-1") << QString("image.ppm") << QByteArray("ppm") << QImage::Format_RGB32;
- QTest::newRow("ppm-2") << QString("teapot.ppm") << QByteArray("ppm") << QImage::Format_RGB32;
- QTest::newRow("ppm-3") << QString("runners.ppm") << QByteArray("ppm") << QImage::Format_RGB32;
- QTest::newRow("ppm-4") << QString("test.ppm") << QByteArray("ppm") << QImage::Format_RGB32;
-
- QTest::newRow("jpeg-1") << QString("beavis.jpg") << QByteArray("jpeg") << QImage::Format_Indexed8;
- QTest::newRow("jpeg-2") << QString("YCbCr_cmyk.jpg") << QByteArray("jpeg") << QImage::Format_RGB32;
- QTest::newRow("jpeg-3") << QString("YCbCr_rgb.jpg") << QByteArray("jpeg") << QImage::Format_RGB32;
-
- QTest::newRow("gif-1") << QString("earth.gif") << QByteArray("gif") << QImage::Format_Invalid;
- QTest::newRow("gif-2") << QString("trolltech.gif") << QByteArray("gif") << QImage::Format_Invalid;
-
- QTest::newRow("xbm") << QString("gnus.xbm") << QByteArray("xbm") << QImage::Format_MonoLSB;
- QTest::newRow("xpm") << QString("marble.xpm") << QByteArray("xpm") << QImage::Format_Indexed8;
- QTest::newRow("bmp-1") << QString("colorful.bmp") << QByteArray("bmp") << QImage::Format_Indexed8;
- QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp") << QImage::Format_Indexed8;
- QTest::newRow("bmp-3") << QString("test32bfv4.bmp") << QByteArray("bmp") << QImage::Format_RGB32;
- QTest::newRow("bmp-4") << QString("test32v5.bmp") << QByteArray("bmp") << QImage::Format_RGB32;
- QTest::newRow("png") << QString("kollada.png") << QByteArray("png") << QImage::Format_ARGB32;
- QTest::newRow("png-2") << QString("YCbCr_cmyk.png") << QByteArray("png") << QImage::Format_RGB32;
- QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng") << QImage::Format_Invalid;
- QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng") << QImage::Format_Invalid;
- QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg") << QImage::Format_ARGB32_Premultiplied;
- QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz") << QImage::Format_ARGB32_Premultiplied;
-}
-
-void tst_QImageReader::imageFormat()
-{
- QFETCH(QString, fileName);
- QFETCH(QByteArray, format);
- QFETCH(QImage::Format, imageFormat);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QCOMPARE(QImageReader::imageFormat(prefix + fileName), format);
- QImageReader reader(prefix + fileName);
- QCOMPARE(reader.imageFormat(), imageFormat);
-}
-
-void tst_QImageReader::blackXPM()
-{
- QImage image(prefix + QLatin1String("black.xpm"));
- QImage image2(prefix + QLatin1String("black.png"));
- QCOMPARE(image.pixel(25, 25), qRgb(190, 190, 190));
- QCOMPARE(image.pixel(25, 25), image2.pixel(25, 25));
-}
-
-void tst_QImageReader::transparentXPM()
-{
- QImage image(prefix + QLatin1String("nontransparent.xpm"));
- QImage image2(prefix + QLatin1String("transparent.xpm"));
- QCOMPARE(image.format(), QImage::Format_RGB32);
- QCOMPARE(image2.format(), QImage::Format_ARGB32);
-}
-
-void tst_QImageReader::multiWordNamedColorXPM()
-{
- QImage image(prefix + QLatin1String("namedcolors.xpm"));
- QCOMPARE(image.pixel(0, 0), qRgb(102, 139, 139)); // pale turquoise 4
- QCOMPARE(image.pixel(0, 1), qRgb(250, 250, 210)); // light golden rod yellow
- QCOMPARE(image.pixel(0, 2), qRgb(255, 250, 205)); // lemon chiffon
-}
-
-void tst_QImageReader::supportedFormats()
-{
- QList<QByteArray> formats = QImageReader::supportedImageFormats();
- QList<QByteArray> sortedFormats = formats;
- qSort(sortedFormats);
-
- // check that the list is sorted
- QCOMPARE(formats, sortedFormats);
-
- QSet<QByteArray> formatSet;
- foreach (QByteArray format, formats)
- formatSet << format;
-
- // check that the list does not contain duplicates
- QCOMPARE(formatSet.size(), formats.size());
-}
-
-void tst_QImageReader::setBackgroundColor_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QColor>("color");
-
- QTest::newRow("BMP: colorful") << QString("colorful.bmp") << QColor(Qt::white);
- QTest::newRow("BMP: font") << QString("font.bmp") << QColor(Qt::black);
- QTest::newRow("BMP: signed char") << QString("crash-signed-char.bmp") << QColor(Qt::red);
- QTest::newRow("XPM: marble") << QString("marble.xpm") << QColor(Qt::darkRed);
- QTest::newRow("PNG: kollada") << QString("kollada.png") << QColor(Qt::green);
- QTest::newRow("PPM: teapot") << QString("teapot.ppm") << QColor(Qt::darkGreen);
- QTest::newRow("PPM: runners") << QString("runners.ppm") << QColor(Qt::red);
- QTest::newRow("PPM: test") << QString("test.ppm") << QColor(Qt::white);
- QTest::newRow("XBM: gnus") << QString("gnus.xbm") << QColor(Qt::blue);
-
- QTest::newRow("JPEG: beavis") << QString("beavis.jpg") << QColor(Qt::darkBlue);
-
- QTest::newRow("GIF: earth") << QString("earth.gif") << QColor(Qt::cyan);
- QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << QColor(Qt::magenta);
-
- QTest::newRow("MNG: ball") << QString("ball.mng") << QColor(Qt::yellow);
- QTest::newRow("MNG: fire") << QString("fire.mng") << QColor(Qt::gray);
-
- QTest::newRow("SVG: rect") << QString("rect.svg") << QColor(Qt::darkGreen);
- QTest::newRow("SVGZ: rect") << QString("rect.svgz") << QColor(Qt::darkGreen);
-}
-
-void tst_QImageReader::setBackgroundColor()
-{
- QFETCH(QString, fileName);
- QFETCH(QColor, color);
- QImageReader io("images/" + fileName);
- io.setBackgroundColor(color);
- if (io.backgroundColor().isValid())
- QCOMPARE(io.backgroundColor(), color);
-}
-
-void tst_QImageReader::supportsAnimation_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<bool>("success");
-
- QTest::newRow("BMP: colorful") << QString("colorful.bmp") << false;
- QTest::newRow("BMP: font") << QString("font.bmp") << false;
- QTest::newRow("BMP: signed char") << QString("crash-signed-char.bmp") << false;
- QTest::newRow("BMP: test32bfv4") << QString("test32bfv4.bmp") << false;;
- QTest::newRow("BMP: test32v5") << QString("test32v5.bmp") << false;
- QTest::newRow("XPM: marble") << QString("marble.xpm") << false;
- QTest::newRow("PNG: kollada") << QString("kollada.png") << false;
- QTest::newRow("PPM: teapot") << QString("teapot.ppm") << false;
- QTest::newRow("PPM: teapot") << QString("teapot.ppm") << false;
- QTest::newRow("PPM: runners") << QString("runners.ppm") << false;
- QTest::newRow("XBM: gnus") << QString("gnus.xbm") << false;
-
- QTest::newRow("JPEG: beavis") << QString("beavis.jpg") << false;
-
- QTest::newRow("GIF: earth") << QString("earth.gif") << true;
- QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << true;
-
- QTest::newRow("MNG: ball") << QString("ball.mng") << true;
- QTest::newRow("MNG: fire") << QString("fire.mng") << true;
-
- QTest::newRow("SVG: rect") << QString("rect.svg") << false;
- QTest::newRow("SVGZ: rect") << QString("rect.svgz") << false;
-}
-
-void tst_QImageReader::supportsAnimation()
-{
- QFETCH(QString, fileName);
- QFETCH(bool, success);
- QImageReader io(prefix + fileName);
- QCOMPARE(io.supportsAnimation(), success);
-}
-
-void tst_QImageReader::sizeBeforeRead_data()
-{
- imageFormat_data();
-}
-
-void tst_QImageReader::sizeBeforeRead()
-{
- QFETCH(QString, fileName);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImageReader reader(prefix + fileName);
- QVERIFY(reader.canRead());
- if (format == "mng") {
- QCOMPARE(reader.size(), QSize());
- return;
- }
-
- QSize size = reader.size();
- QVERIFY(reader.canRead());
- QImage image = reader.read();
- QVERIFY(!image.isNull());
- QCOMPARE(size, image.size());
-}
-
-void tst_QImageReader::sizeBeforeFormat_data()
-{
- imageFormat_data();
-}
-
-void tst_QImageReader::sizeBeforeFormat()
-{
- QFETCH(QString, fileName);
-
- QByteArray formatA, formatB;
-
- {
- QImageReader reader(prefix + fileName);
- formatA = reader.format();
- }
-
- {
- QImageReader reader(prefix + fileName);
- QSize size = reader.size();
- formatB = reader.format();
- }
-
- QCOMPARE(formatA, formatB);
-}
-
-void tst_QImageReader::imageFormatBeforeRead_data()
-{
- imageFormat_data();
-}
-
-void tst_QImageReader::imageFormatBeforeRead()
-{
- QFETCH(QString, fileName);
- QFETCH(QByteArray, format);
- QFETCH(QImage::Format, imageFormat);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImageReader reader(fileName);
- if (reader.supportsOption(QImageIOHandler::ImageFormat)) {
- QImage::Format fileFormat = reader.imageFormat();
- QCOMPARE(fileFormat, imageFormat);
- QSize size = reader.size();
- QImage image(size, fileFormat);
- QVERIFY(reader.read(&image));
- QCOMPARE(image.format(), fileFormat);
- }
-}
-
-void tst_QImageReader::gifHandlerBugs()
-{
- SKIP_IF_UNSUPPORTED("gif");
-
- {
- QImageReader io(prefix + "trolltech.gif");
- QVERIFY(io.loopCount() != 1);
- int count=0;
- for (; io.canRead(); io.read(), ++count) ;
- QVERIFY(count == 34);
- }
-
- // Task 95166
- {
- QImageReader io1(prefix + "bat1.gif");
- QImageReader io2(prefix + "bat2.gif");
- QVERIFY(io1.canRead());
- QVERIFY(io2.canRead());
- QImage im1 = io1.read();
- QImage im2 = io2.read();
- QVERIFY(!im1.isNull());
- QVERIFY(!im2.isNull());
- QCOMPARE(im1, im2);
- }
-
- // Task 9994
- {
- QImageReader io1(prefix + "noclearcode.gif");
- QImageReader io2(prefix + "noclearcode.bmp");
- QVERIFY(io1.canRead()); QVERIFY(io2.canRead());
- QImage im1 = io1.read(); QImage im2 = io2.read();
- QVERIFY(!im1.isNull()); QVERIFY(!im2.isNull());
- QCOMPARE(im1.convertToFormat(QImage::Format_ARGB32), im2.convertToFormat(QImage::Format_ARGB32));
- }
-
- // Check the undocumented feature.
- {
- QImageReader io(prefix + "endless-anim.gif");
- QVERIFY(io.canRead());
- QCOMPARE(io.loopCount(), -1);
- }
-}
-
-void tst_QImageReader::animatedGif()
-{
- SKIP_IF_UNSUPPORTED("gif");
-
- QImageReader io(":images/qt.gif");
- QImage image = io.read();
- QVERIFY(!image.isNull());
- int i = 0;
- while(!image.isNull()){
- QString frameName = QString(":images/qt%1.gif").arg(++i);
- QCOMPARE(image, QImage(frameName));
- image = io.read();
- }
-}
-
-// http://bugreports.qt.nokia.com/browse/QTBUG-6696
-// Check the count of images in various call orders...
-void tst_QImageReader::gifImageCount()
-{
- SKIP_IF_UNSUPPORTED("gif");
-
- // just read every frame... and see how much we got..
- {
- QImageReader io(":images/four-frames.gif");
-
- QVERIFY(io.canRead());
- QImage blackFrame = io.read();
-
- QVERIFY(io.canRead());
- QImage whiteFrame = io.read();
-
- QVERIFY(io.canRead());
- QImage greenFrame = io.read();
-
- QVERIFY(io.imageCount() == 4);
-
- QVERIFY(io.canRead());
- QImage blueFrame = io.read();
-
- QVERIFY(!io.canRead());
- QImage emptyFrame = io.read();
-
- QVERIFY(!io.canRead());
- QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0));
- QCOMPARE(blackFrame.size(), QSize(64,64));
-
- QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff));
- QCOMPARE(whiteFrame.size(), QSize(64,64));
-
- QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0));
- QCOMPARE(greenFrame.size(), QSize(64,64));
-
- QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff));
- QCOMPARE(blueFrame.size(), QSize(64,64));
- QVERIFY(emptyFrame.isNull());
- }
-
- // Read and get the size
- {
- QImageReader io(":images/four-frames.gif");
-
- QVERIFY(io.canRead());
- QCOMPARE(io.size(), QSize(64,64));
-
- QVERIFY(io.canRead());
- QCOMPARE(io.size(), QSize(64,64));
- QCOMPARE(io.size(), QSize(64,64));
- QVERIFY(io.canRead());
- QImage blackFrame = io.read();
-
- QVERIFY(io.canRead());
- QCOMPARE(io.size(), QSize(64,64));
- QCOMPARE(io.size(), QSize(64,64));
- QVERIFY(io.canRead());
- QImage whiteFrame = io.read();
-
- QVERIFY(io.canRead());
- QCOMPARE(io.size(), QSize(64,64));
- QCOMPARE(io.size(), QSize(64,64));
- QVERIFY(io.canRead());
- QImage greenFrame = io.read();
-
- QVERIFY(io.canRead());
- QCOMPARE(io.size(), QSize(64,64));
- QCOMPARE(io.size(), QSize(64,64));
- QVERIFY(io.canRead());
- QImage blueFrame = io.read();
-
- QVERIFY(!io.canRead());
- QCOMPARE(io.size(), QSize());
- QCOMPARE(io.size(), QSize());
- QVERIFY(!io.canRead());
- QImage emptyFrame = io.read();
-
- QVERIFY(!io.canRead());
- QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0));
- QCOMPARE(blackFrame.size(), QSize(64,64));
-
- QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff));
- QCOMPARE(whiteFrame.size(), QSize(64,64));
-
- QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0));
- QCOMPARE(greenFrame.size(), QSize(64,64));
-
- QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff));
- QCOMPARE(blueFrame.size(), QSize(64,64));
- QVERIFY(emptyFrame.isNull());
- }
-
- // Do a Size query as substitute for canRead
- {
- QImageReader io(":images/four-frames.gif");
-
- QCOMPARE(io.size(), QSize(64,64));
- QCOMPARE(io.size(), QSize(64,64));
- QImage blackFrame = io.read();
-
- QCOMPARE(io.size(), QSize(64,64));
- QCOMPARE(io.size(), QSize(64,64));
- QImage whiteFrame = io.read();
-
- QCOMPARE(io.size(), QSize(64,64));
- QCOMPARE(io.size(), QSize(64,64));
- QImage greenFrame = io.read();
-
- QCOMPARE(io.size(), QSize(64,64));
- QCOMPARE(io.size(), QSize(64,64));
- QImage blueFrame = io.read();
-
- QCOMPARE(io.size(), QSize());
- QVERIFY(!io.canRead());
- QImage emptyFrame = io.read();
-
- QVERIFY(!io.canRead());
- QCOMPARE(blackFrame.pixel(0,0), qRgb(0, 0, 0));
- QCOMPARE(blackFrame.size(), QSize(64,64));
-
- QCOMPARE(whiteFrame.pixel(0,0), qRgb(0xff, 0xff, 0xff));
- QCOMPARE(whiteFrame.size(), QSize(64,64));
-
- QCOMPARE(greenFrame.pixel(0,0), qRgb(0x0, 0xff, 0x0));
- QCOMPARE(greenFrame.size(), QSize(64,64));
-
- QCOMPARE(blueFrame.pixel(0,0), qRgb(0x0, 0x0, 0xff));
- QCOMPARE(blueFrame.size(), QSize(64,64));
- QVERIFY(emptyFrame.isNull());
- }
- {
- QImageReader io(":images/trolltech.gif");
- QVERIFY(io.imageCount() == 34);
- QVERIFY(io.size() == QSize(128,64));
- }
-}
-
-void tst_QImageReader::gifLoopCount()
-{
- SKIP_IF_UNSUPPORTED("gif");
-
- {
- QImageReader io(":images/qt-gif-anim.gif");
- QCOMPARE(io.loopCount(), -1); // infinite loop
- }
- {
- QImageReader io(":images/qt-gif-noanim.gif");
- QCOMPARE(io.loopCount(), 0); // no loop
- }
-}
-
-class Server : public QObject
-{
- Q_OBJECT
-public:
- Server(const QByteArray &data) :serverSocket(0)
- {
- connect(&server, SIGNAL(newConnection()), this, SLOT(acceptNewConnection()));
- server.listen();
- this->data = data;
- }
-
-public slots:
- void runTest()
- {
- connect(&clientSocket, SIGNAL(connected()), this, SLOT(connected()));
- clientSocket.connectToHost(QHostAddress::LocalHost, server.serverPort());
- }
-
-public:
- inline QTcpSocket *socket() const { return serverSocket; }
-
-signals:
- void ready();
-
-private slots:
- void acceptNewConnection()
- {
- serverSocket = server.nextPendingConnection();
- connect(serverSocket, SIGNAL(error(QAbstractSocket::SocketError)),
- this, SLOT(remoteHostClosed()));
- }
-
- void connected()
- {
- clientSocket.write(data);
- clientSocket.disconnectFromHost();
- }
-
- void remoteHostClosed()
- {
- emit ready();
- }
-
-private:
- QTcpServer server;
- QTcpSocket clientSocket;
- QTcpSocket *serverSocket;
- QByteArray data;
-};
-
-void tst_QImageReader::readFromDevice_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QByteArray>("format");
-
- QTest::newRow("pbm") << QString("image.pbm") << QByteArray("pbm");
- QTest::newRow("pgm") << QString("image.pgm") << QByteArray("pgm");
- QTest::newRow("ppm-1") << QString("image.ppm") << QByteArray("ppm");
- QTest::newRow("ppm-2") << QString("teapot.ppm") << QByteArray("ppm");
- QTest::newRow("ppm-3") << QString("teapot.ppm") << QByteArray("ppm");
- QTest::newRow("ppm-4") << QString("runners.ppm") << QByteArray("ppm");
-
- QTest::newRow("jpeg-1") << QString("beavis.jpg") << QByteArray("jpeg");
- QTest::newRow("jpeg-2") << QString("YCbCr_cmyk.jpg") << QByteArray("jpeg");
- QTest::newRow("jpeg-3") << QString("YCbCr_rgb.jpg") << QByteArray("jpeg");
- QTest::newRow("jpeg-4") << QString("qtbug13653-no_eoi.jpg") << QByteArray("jpeg");
-
- QTest::newRow("gif-1") << QString("earth.gif") << QByteArray("gif");
- QTest::newRow("gif-2") << QString("trolltech.gif") << QByteArray("gif");
-
- QTest::newRow("xbm") << QString("gnus.xbm") << QByteArray("xbm");
- QTest::newRow("xpm") << QString("marble.xpm") << QByteArray("xpm");
- QTest::newRow("bmp-1") << QString("colorful.bmp") << QByteArray("bmp");
- QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp");
- QTest::newRow("bmp-3") << QString("test32bfv4.bmp") << QByteArray("bmp");
- QTest::newRow("bmp-4") << QString("test32v5.bmp") << QByteArray("bmp");
- QTest::newRow("png") << QString("kollada.png") << QByteArray("png");
-
- QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng");
- QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng");
-
- QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg");
- QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz");
-}
-
-void tst_QImageReader::readFromDevice()
-{
- QFETCH(QString, fileName);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImage expectedImage(prefix + fileName, format);
-
- QFile file(prefix + fileName);
- QVERIFY(file.open(QFile::ReadOnly));
- QByteArray imageData = file.readAll();
- QVERIFY(!imageData.isEmpty());
- {
- QBuffer buffer;
- buffer.setData(imageData);
- QVERIFY(buffer.open(QBuffer::ReadOnly));
-
- QImageReader reader(&buffer);
- QVERIFY(reader.canRead());
- QImage imageReaderImage = reader.read();
-
- QCOMPARE(imageReaderImage, expectedImage);
-
- buffer.seek(0);
-
- QImage image1;
- QVERIFY(image1.loadFromData((const uchar *)buffer.data().data(),
- buffer.data().size(), format.data()));
- QCOMPARE(image1, expectedImage);
-
- QByteArray throughBase64 = QByteArray::fromBase64(imageData.toBase64());
- QVERIFY(image1.loadFromData((const uchar *)throughBase64.data(),
- throughBase64.size(), format.data()));
- QCOMPARE(image1, expectedImage);
- }
-
-#if defined (Q_OS_SYMBIAN) && defined (__WINS__)
- //the emulator hangs in socket write (this is a test bug, it assumes the TCP stack can accept a whole image to its buffers)
- if(imageData.size() > 16384)
- QSKIP("image larger than socket buffer (test needs to be rewritten)", SkipSingle);
-#endif
- Server server(imageData);
- QEventLoop loop;
- connect(&server, SIGNAL(ready()), &loop, SLOT(quit()));
- QTimer::singleShot(0, &server, SLOT(runTest()));
- QTimer::singleShot(5000, &loop, SLOT(quit()));
- loop.exec();
-
- QImageReader reader(server.socket(), format == "xbm" ? "xbm" : "");
- if (format == "xbm")
- QVERIFY(!reader.canRead());
- else
- QVERIFY(reader.canRead());
- QImage imageReaderImage = reader.read();
- QCOMPARE(imageReaderImage, expectedImage);
-}
-
-void tst_QImageReader::readFromFileAfterJunk_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QByteArray>("format");
-
- QTest::newRow("pbm") << QString("image.pbm") << QByteArray("pbm");
- QTest::newRow("pgm") << QString("image.pgm") << QByteArray("pgm");
- QTest::newRow("ppm-1") << QString("image.ppm") << QByteArray("ppm");
- QTest::newRow("ppm-2") << QString("teapot.ppm") << QByteArray("ppm");
- QTest::newRow("ppm-3") << QString("teapot.ppm") << QByteArray("ppm");
- QTest::newRow("ppm-4") << QString("runners.ppm") << QByteArray("ppm");
-
- QTest::newRow("jpeg-1") << QString("beavis.jpg") << QByteArray("jpeg");
- QTest::newRow("jpeg-2") << QString("YCbCr_cmyk.jpg") << QByteArray("jpeg");
- QTest::newRow("jpeg-3") << QString("YCbCr_rgb.jpg") << QByteArray("jpeg");
-
- QTest::newRow("xbm") << QString("gnus.xbm") << QByteArray("xbm");
- QTest::newRow("xpm") << QString("marble.xpm") << QByteArray("xpm");
- QTest::newRow("bmp-1") << QString("colorful.bmp") << QByteArray("bmp");
- QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp");
- QTest::newRow("bmp-3") << QString("test32bfv4.bmp") << QByteArray("bmp");
- QTest::newRow("bmp-4") << QString("test32v5.bmp") << QByteArray("bmp");
- QTest::newRow("png") << QString("kollada.png") << QByteArray("png");
- QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg");
- QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz");
-}
-
-void tst_QImageReader::readFromFileAfterJunk()
-{
- QFETCH(QString, fileName);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QFile::remove("junk");
- QFile junkFile("junk");
- QVERIFY(junkFile.open(QFile::WriteOnly));
-
- QFile imageFile(prefix + fileName);
- QVERIFY(imageFile.open(QFile::ReadOnly));
- QByteArray imageData = imageFile.readAll();
- QVERIFY(!imageData.isNull());
-
- int iterations = 3;
- if (format == "ppm" || format == "pbm" || format == "pgm" || format == "svg" || format == "svgz")
- iterations = 1;
-
- if (format == "mng" || !QImageWriter::supportedImageFormats().contains(format)) {
- for (int i = 0; i < iterations; ++i) {
- junkFile.write("deadbeef", 9);
- QCOMPARE(junkFile.write(imageData), qint64(imageData.size()));
- }
- } else {
- for (int i = 0; i < iterations; ++i) {
- QImageWriter writer(&junkFile, format);
- junkFile.write("deadbeef", 9);
- QVERIFY(writer.write(QImage(prefix + fileName)));
- }
- }
- junkFile.close();
- junkFile.open(QFile::ReadOnly);
-
- for (int i = 0; i < iterations; ++i) {
- QByteArray ole = junkFile.read(9);
- junkFile.ungetChar(ole[ole.size() - 1]);
- char c;
- junkFile.getChar(&c);
- QImageReader reader(&junkFile);
- QVERIFY(reader.canRead());
- QVERIFY(!reader.read().isNull());
- }
-}
-
-void tst_QImageReader::devicePosition_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QByteArray>("format");
-
- QTest::newRow("pbm") << QString("image.pbm") << QByteArray("pbm");
- QTest::newRow("pgm") << QString("image.pgm") << QByteArray("pgm");
- QTest::newRow("ppm-1") << QString("image.ppm") << QByteArray("ppm");
-
- QTest::newRow("jpeg-1") << QString("beavis.jpg") << QByteArray("jpeg");
- QTest::newRow("jpeg-2") << QString("YCbCr_cmyk.jpg") << QByteArray("jpeg");
- QTest::newRow("jpeg-3") << QString("YCbCr_rgb.jpg") << QByteArray("jpeg");
-
- QTest::newRow("gif-1") << QString("earth.gif") << QByteArray("gif");
-
- QTest::newRow("xbm") << QString("gnus.xbm") << QByteArray("xbm");
- QTest::newRow("xpm") << QString("marble.xpm") << QByteArray("xpm");
- QTest::newRow("bmp-1") << QString("colorful.bmp") << QByteArray("bmp");
- QTest::newRow("bmp-2") << QString("font.bmp") << QByteArray("bmp");
- QTest::newRow("bmp-3") << QString("test32bfv4.bmp") << QByteArray("bmp");
- QTest::newRow("bmp-4") << QString("test32v5.bmp") << QByteArray("bmp");
- QTest::newRow("png") << QString("kollada.png") << QByteArray("png");
- QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg");
- QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz");
-}
-
-void tst_QImageReader::devicePosition()
-{
- QFETCH(QString, fileName);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImage expected(prefix + fileName);
- QVERIFY(!expected.isNull());
-
- QFile imageFile(prefix + fileName);
- QVERIFY(imageFile.open(QFile::ReadOnly));
- QByteArray imageData = imageFile.readAll();
- QVERIFY(!imageData.isNull());
- int imageDataSize = imageData.size();
-
- const char *preStr = "prebeef\n";
- int preLen = qstrlen(preStr);
- imageData.prepend(preStr);
- if (format != "svg" && format != "svgz") // Doesn't handle trailing data
- imageData.append("\npostbeef");
- QBuffer buf(&imageData);
- buf.open(QIODevice::ReadOnly);
- buf.seek(preLen);
- QImageReader reader(&buf, format);
- QCOMPARE(expected, reader.read());
- if (format != "ppm" &&
- format != "pgm" &&
- format != "pbm" &&
- format != "gif") // Known not to work
- QCOMPARE(buf.pos(), qint64(preLen+imageDataSize));
-}
-
-
-void tst_QImageReader::readFromResources_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QByteArray>("format");
- QTest::addColumn<QSize>("size");
- QTest::addColumn<QString>("message");
-
- QTest::newRow("corrupt.bmp") << QString("corrupt.bmp")
- << QByteArray("bmp") << QSize(0, 0)
- << QString("");
- QTest::newRow("negativeheight.bmp") << QString("negativeheight.bmp")
- << QByteArray("bmp") << QSize(127, 64)
- << QString("");
- QTest::newRow("font.bmp") << QString("font.bmp")
- << QByteArray("bmp") << QSize(240, 8)
- << QString("");
- QTest::newRow("noclearcode.bmp") << QString("noclearcode.bmp")
- << QByteArray("bmp") << QSize(29, 18)
- << QString("");
- QTest::newRow("colorful.bmp") << QString("colorful.bmp")
- << QByteArray("bmp") << QSize(320, 200)
- << QString("");
- QTest::newRow("16bpp.bmp") << QString("16bpp.bmp")
- << QByteArray("bmp") << QSize(320, 240)
- << QString("");
- QTest::newRow("crash-signed-char.bmp") << QString("crash-signed-char.bmp")
- << QByteArray("bmp") << QSize(360, 280)
- << QString("");
- QTest::newRow("4bpp-rle.bmp") << QString("4bpp-rle.bmp")
- << QByteArray("bmp") << QSize(640, 480)
- << QString("");
- QTest::newRow("test32bfv4.bmp") << QString("test32bfv4.bmp")
- << QByteArray("bmp") << QSize(373, 156)
- << QString("");
- QTest::newRow("test32v5.bmp") << QString("test32v5.bmp")
- << QByteArray("bmp") << QSize(373, 156)
- << QString("");
- QTest::newRow("corrupt.gif") << QString("corrupt.gif")
- << QByteArray("gif") << QSize(0, 0)
- << QString("");
- QTest::newRow("trolltech.gif") << QString("trolltech.gif")
- << QByteArray("gif") << QSize(128, 64)
- << QString("");
- QTest::newRow("noclearcode.gif") << QString("noclearcode.gif")
- << QByteArray("gif") << QSize(29, 18)
- << QString("");
- QTest::newRow("earth.gif") << QString("earth.gif")
- << QByteArray("gif") << QSize(320, 200)
- << QString("");
- QTest::newRow("bat1.gif") << QString("bat1.gif")
- << QByteArray("gif") << QSize(32, 32)
- << QString("");
- QTest::newRow("bat2.gif") << QString("bat2.gif")
- << QByteArray("gif") << QSize(32, 32)
- << QString("");
- QTest::newRow("corrupt.jpg") << QString("corrupt.jpg")
- << QByteArray("jpg") << QSize(0, 0)
- << QString("JPEG datastream contains no image");
- QTest::newRow("beavis.jpg") << QString("beavis.jpg")
- << QByteArray("jpg") << QSize(350, 350)
- << QString("");
- QTest::newRow("YCbCr_cmyk.jpg") << QString("YCbCr_cmyk.jpg")
- << QByteArray("jpg") << QSize(75, 50)
- << QString("");
- QTest::newRow("YCbCr_rgb.jpg") << QString("YCbCr_rgb.jpg")
- << QByteArray("jpg") << QSize(75, 50)
- << QString("");
- QTest::newRow("qtbug13653-no_eoi.jpg") << QString("qtbug13653-no_eoi.jpg")
- << QByteArray("jpg") << QSize(240, 180)
- << QString("");
- QTest::newRow("corrupt.mng") << QString("corrupt.mng")
- << QByteArray("mng") << QSize(0, 0)
- << QString("MNG error 901: Application signalled I/O error; chunk IHDR; subcode 0:0");
- QTest::newRow("fire.mng") << QString("fire.mng")
- << QByteArray("mng") << QSize(30, 60)
- << QString("");
- QTest::newRow("ball.mng") << QString("ball.mng")
- << QByteArray("mng") << QSize(32, 32)
- << QString("");
- QTest::newRow("rect.svg") << QString("rect.svg")
- << QByteArray("svg") << QSize(105, 137)
- << QString("");
- QTest::newRow("rect.svgz") << QString("rect.svgz")
- << QByteArray("svgz") << QSize(105, 137)
- << QString("");
- QTest::newRow("corrupt.svg") << QString("corrupt.svg")
- << QByteArray("svg") << QSize(0, 0)
- << QString("");
- QTest::newRow("corrupt.svgz") << QString("corrupt.svgz")
- << QByteArray("svgz") << QSize(0, 0)
- << QString("");
- QTest::newRow("image.pbm") << QString("image.pbm")
- << QByteArray("pbm") << QSize(16, 6)
- << QString("");
- QTest::newRow("image.pgm") << QString("image.pgm")
- << QByteArray("pgm") << QSize(24, 7)
- << QString("");
- QTest::newRow("corrupt.png") << QString("corrupt.png")
- << QByteArray("png") << QSize(0, 0)
- << QString("");
- QTest::newRow("away.png") << QString("away.png")
- << QByteArray("png") << QSize(16, 16)
- << QString("");
- QTest::newRow("image.png") << QString("image.png")
- << QByteArray("png") << QSize(22, 22)
- << QString("");
- QTest::newRow("kollada.png") << QString("kollada.png")
- << QByteArray("png") << QSize(436, 160)
- << QString("");
- QTest::newRow("black.png") << QString("black.png")
- << QByteArray("png") << QSize(48, 48)
- << QString("");
- QTest::newRow("YCbCr_cmyk.png") << QString("YCbCr_cmyk.png")
- << QByteArray("png") << QSize(75, 50)
- << QString("");
- QTest::newRow("teapot.ppm") << QString("teapot.ppm")
- << QByteArray("ppm") << QSize(256, 256)
- << QString("");
- QTest::newRow("image.ppm") << QString("image.ppm")
- << QByteArray("ppm") << QSize(4, 4)
- << QString("");
- QTest::newRow("runners.ppm") << QString("runners.ppm")
- << QByteArray("ppm") << QSize(400, 400)
- << QString("");
- QTest::newRow("test.ppm") << QString("test.ppm")
- << QByteArray("ppm") << QSize(10, 10)
- << QString("");
- QTest::newRow("gnus.xbm") << QString("gnus.xbm")
- << QByteArray("xbm") << QSize(271, 273)
- << QString("");
- QTest::newRow("corrupt-colors.xpm") << QString("corrupt-colors.xpm")
- << QByteArray("xpm") << QSize(0, 0)
- << QString("QImage: XPM color specification is missing: bla9an.n#x");
- QTest::newRow("corrupt-pixels.xpm") << QString("corrupt-pixels.xpm")
- << QByteArray("xpm") << QSize(0, 0)
- << QString("QImage: XPM pixels missing on image line 3");
- QTest::newRow("corrupt-pixel-count.xpm") << QString("corrupt-pixel-count.xpm")
- << QByteArray("xpm") << QSize(0, 0)
- << QString("");
- QTest::newRow("marble.xpm") << QString("marble.xpm")
- << QByteArray("xpm") << QSize(240, 240)
- << QString("");
- QTest::newRow("test.xpm") << QString("test.xpm")
- << QByteArray("xpm") << QSize(256, 256)
- << QString("");
- QTest::newRow("black.xpm") << QString("black.xpm")
- << QByteArray("xpm") << QSize(48, 48)
- << QString("");
- QTest::newRow("namedcolors.xpm") << QString("namedcolors.xpm")
- << QByteArray("xpm") << QSize(8, 8)
- << QString("");
- QTest::newRow("nontransparent.xpm") << QString("nontransparent.xpm")
- << QByteArray("xpm") << QSize(8, 8)
- << QString("");
- QTest::newRow("transparent.xpm") << QString("transparent.xpm")
- << QByteArray("xpm") << QSize(8, 8)
- << QString("");
-}
-
-void tst_QImageReader::readFromResources()
-{
- QFETCH(QString, fileName);
- QFETCH(QByteArray, format);
- QFETCH(QSize, size);
- QFETCH(QString, message);
-
- SKIP_IF_UNSUPPORTED(format);
-
- for (int i = 0; i < 2; ++i) {
- QString file = i ? (":/images/" + fileName) : (prefix + fileName);
- {
- // suppress warnings if we expect them
- if (!message.isEmpty()) {
- for (int j = 0; j < 5; ++j)
- QTest::ignoreMessage(QtWarningMsg, message.toLatin1());
- }
-
- // 1) full filename, no format
- QImageReader reader(file);
- QImage image = reader.read();
- if (size.isNull())
- QVERIFY(image.isNull());
- else
- QVERIFY(!image.isNull());
- QCOMPARE(image.size(), size);
- }
- {
- // 2) full filename, with format
- QImageReader reader(file, format);
- QImage image = reader.read();
- if (size.isNull())
- QVERIFY(image.isNull());
- else
- QVERIFY(!image.isNull());
- QCOMPARE(image.size(), size);
- }
- {
- // 3) full filename, with uppercase format
- QImageReader reader(file, format.toUpper());
- QImage image = reader.read();
- if (size.isNull())
- QVERIFY(image.isNull());
- else
- QVERIFY(!image.isNull());
- QCOMPARE(image.size(), size);
- }
- {
- // 4) chopped filename, with format
- QImageReader reader(file.left(file.lastIndexOf(QLatin1Char('.'))), format);
- QImage image = reader.read();
- if (size.isNull())
- QVERIFY(image.isNull());
- else
- QVERIFY(!image.isNull());
- QCOMPARE(image.size(), size);
- }
- {
- // 5) chopped filename, with uppercase format
- QImageReader reader(file.left(file.lastIndexOf(QLatin1Char('.'))), format.toUpper());
- QImage image = reader.read();
- if (size.isNull())
- QVERIFY(image.isNull());
- else
- QVERIFY(!image.isNull());
- QCOMPARE(image.size(), size);
- }
- }
-
- // Check that the results are identical
- if (!message.isEmpty()) {
- QTest::ignoreMessage(QtWarningMsg, message.toLatin1());
- QTest::ignoreMessage(QtWarningMsg, message.toLatin1());
- }
- QCOMPARE(QImageReader(prefix + fileName).read(), QImageReader(":/images/" + fileName).read());
-}
-
-void tst_QImageReader::readCorruptImage_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<bool>("shouldFail");
- QTest::addColumn<QString>("message");
- QTest::addColumn<QByteArray>("format");
- QTest::newRow("corrupt jpeg") << QString("corrupt.jpg") << true
- << QString("JPEG datastream contains no image")
- << QByteArray("jpeg");
- QTest::newRow("corrupt gif") << QString("corrupt.gif") << true << QString("") << QByteArray("gif");
- QTest::newRow("corrupt mng") << QString("corrupt.mng") << true
- << QString("MNG error 901: Application signalled I/O error; chunk IHDR; subcode 0:0")
- << QByteArray("mng");
- QTest::newRow("corrupt png") << QString("corrupt.png") << true << QString("") << QByteArray("png");
- QTest::newRow("corrupt bmp") << QString("corrupt.bmp") << true << QString("") << QByteArray("bmp");
- QTest::newRow("corrupt xpm (colors)") << QString("corrupt-colors.xpm") << true
- << QString("QImage: XPM color specification is missing: bla9an.n#x")
- << QByteArray("xpm");
- QTest::newRow("corrupt xpm (pixels)") << QString("corrupt-pixels.xpm") << true
- << QString("QImage: XPM pixels missing on image line 3")
- << QByteArray("xpm");
- QTest::newRow("corrupt xbm") << QString("corrupt.xbm") << false << QString("") << QByteArray("xbm");
- QTest::newRow("corrupt tiff") << QString("corrupt-data.tif") << true << QString("") << QByteArray("tiff");
- QTest::newRow("corrupt svg") << QString("corrupt.svg") << true << QString("") << QByteArray("svg");
- QTest::newRow("corrupt svgz") << QString("corrupt.svgz") << true << QString("") << QByteArray("svgz");
-}
-
-void tst_QImageReader::readCorruptImage()
-{
- QFETCH(QString, fileName);
- QFETCH(bool, shouldFail);
- QFETCH(QString, message);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- if (!message.isEmpty())
- QTest::ignoreMessage(QtWarningMsg, message.toLatin1());
- QImageReader reader(prefix + fileName);
- QVERIFY(reader.canRead());
- QCOMPARE(reader.read().isNull(), shouldFail);
-}
-
-void tst_QImageReader::readCorruptBmp()
-{
- QCOMPARE(QImage(prefix + "tst7.bmp").convertToFormat(QImage::Format_ARGB32_Premultiplied), QImage(prefix + "tst7.png").convertToFormat(QImage::Format_ARGB32_Premultiplied));
-}
-
-void tst_QImageReader::supportsOption_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QIntList>("options");
-
- QTest::newRow("png") << QString("black.png")
- << (QIntList() << QImageIOHandler::Gamma
- << QImageIOHandler::Description
- << QImageIOHandler::Quality
- << QImageIOHandler::Size);
-}
-
-void tst_QImageReader::supportsOption()
-{
- QFETCH(QString, fileName);
- QFETCH(QIntList, options);
-
- QSet<QImageIOHandler::ImageOption> allOptions;
- allOptions << QImageIOHandler::Size
- << QImageIOHandler::ClipRect
- << QImageIOHandler::Description
- << QImageIOHandler::ScaledClipRect
- << QImageIOHandler::ScaledSize
- << QImageIOHandler::CompressionRatio
- << QImageIOHandler::Gamma
- << QImageIOHandler::Quality
- << QImageIOHandler::Name
- << QImageIOHandler::SubType
- << QImageIOHandler::IncrementalReading
- << QImageIOHandler::Endianness
- << QImageIOHandler::Animation
- << QImageIOHandler::BackgroundColor;
-
- QImageReader reader(prefix + fileName);
- for (int i = 0; i < options.size(); ++i) {
- QVERIFY(reader.supportsOption(QImageIOHandler::ImageOption(options.at(i))));
- allOptions.remove(QImageIOHandler::ImageOption(options.at(i)));
- }
-
- foreach (QImageIOHandler::ImageOption option, allOptions)
- QVERIFY(!reader.supportsOption(option));
-}
-
-void tst_QImageReader::tiffCompression_data()
-{
- QTest::addColumn<QString>("uncompressedFile");
- QTest::addColumn<QString>("compressedFile");
-
- QTest::newRow("TIFF: adobedeflate") << "rgba_nocompression_littleendian.tif"
- << "rgba_adobedeflate_littleendian.tif";
- QTest::newRow("TIFF: lzw") << "rgba_nocompression_littleendian.tif"
- << "rgba_lzw_littleendian.tif";
- QTest::newRow("TIFF: packbits") << "rgba_nocompression_littleendian.tif"
- << "rgba_packbits_littleendian.tif";
- QTest::newRow("TIFF: zipdeflate") << "rgba_nocompression_littleendian.tif"
- << "rgba_zipdeflate_littleendian.tif";
-}
-
-void tst_QImageReader::tiffCompression()
-{
- QFETCH(QString, uncompressedFile);
- QFETCH(QString, compressedFile);
-
- SKIP_IF_UNSUPPORTED("tiff");
-
- QImage uncompressedImage(prefix + uncompressedFile);
- QImage compressedImage(prefix + compressedFile);
-
- QCOMPARE(uncompressedImage, compressedImage);
-}
-
-void tst_QImageReader::tiffEndianness()
-{
- SKIP_IF_UNSUPPORTED("tiff");
-
- QImage littleEndian(prefix + "rgba_nocompression_littleendian.tif");
- QImage bigEndian(prefix + "rgba_nocompression_bigendian.tif");
-
- QCOMPARE(littleEndian, bigEndian);
-}
-
-void tst_QImageReader::tiffOrientation_data()
-{
- QTest::addColumn<QString>("expected");
- QTest::addColumn<QString>("oriented");
- QTest::newRow("Indexed TIFF, orientation1") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_1.tiff";
- QTest::newRow("Indexed TIFF, orientation2") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_2.tiff";
- QTest::newRow("Indexed TIFF, orientation3") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_3.tiff";
- QTest::newRow("Indexed TIFF, orientation4") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_4.tiff";
- QTest::newRow("Indexed TIFF, orientation5") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_5.tiff";
- QTest::newRow("Indexed TIFF, orientation6") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_6.tiff";
- QTest::newRow("Indexed TIFF, orientation7") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_7.tiff";
- QTest::newRow("Indexed TIFF, orientation8") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_8.tiff";
-
- QTest::newRow("Mono TIFF, orientation1") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_1.tiff";
- QTest::newRow("Mono TIFF, orientation2") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_2.tiff";
- QTest::newRow("Mono TIFF, orientation3") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_3.tiff";
- QTest::newRow("Mono TIFF, orientation4") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_4.tiff";
- QTest::newRow("Mono TIFF, orientation5") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_5.tiff";
- QTest::newRow("Mono TIFF, orientation6") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_6.tiff";
- QTest::newRow("Mono TIFF, orientation7") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_7.tiff";
- QTest::newRow("Mono TIFF, orientation8") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_8.tiff";
-
- QTest::newRow("RGB TIFF, orientation1") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_1.tiff";
- QTest::newRow("RGB TIFF, orientation2") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_2.tiff";
- QTest::newRow("RGB TIFF, orientation3") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_3.tiff";
- QTest::newRow("RGB TIFF, orientation4") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_4.tiff";
- QTest::newRow("RGB TIFF, orientation5") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_5.tiff";
- QTest::newRow("RGB TIFF, orientation6") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_6.tiff";
- QTest::newRow("RGB TIFF, orientation7") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_7.tiff";
- QTest::newRow("RGB TIFF, orientation8") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_8.tiff";
-}
-
-void tst_QImageReader::tiffOrientation()
-{
- QFETCH(QString, expected);
- QFETCH(QString, oriented);
-
- SKIP_IF_UNSUPPORTED("tiff");
-
- QImage expectedImage(prefix + expected);
- QImage orientedImage(prefix + oriented);
- QCOMPARE(expectedImage, orientedImage);
-}
-
-void tst_QImageReader::tiffGrayscale()
-{
- SKIP_IF_UNSUPPORTED("tiff");
-
- QImage actualImage(prefix + "grayscale.tif");
- QImage expectedImage(prefix + "grayscale-ref.tif");
-
- QCOMPARE(expectedImage, actualImage.convertToFormat(expectedImage.format()));
-}
-
-void tst_QImageReader::dotsPerMeter_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<int>("expectedDotsPerMeterX");
- QTest::addColumn<int>("expectedDotsPerMeterY");
- QTest::addColumn<QByteArray>("format");
- QTest::newRow("TIFF: 72 dpi") << ("rgba_nocompression_littleendian.tif") << qRound(72 * (100 / 2.54)) << qRound(72 * (100 / 2.54)) << QByteArray("tiff");
- QTest::newRow("TIFF: 100 dpi") << ("image_100dpi.tif") << qRound(100 * (100 / 2.54)) << qRound(100 * (100 / 2.54)) << QByteArray("tiff");
-}
-
-void tst_QImageReader::dotsPerMeter()
-{
- QFETCH(QString, fileName);
- QFETCH(int, expectedDotsPerMeterX);
- QFETCH(int, expectedDotsPerMeterY);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImage image(prefix + fileName);
-
- QCOMPARE(image.dotsPerMeterX(), expectedDotsPerMeterX);
- QCOMPARE(image.dotsPerMeterY(), expectedDotsPerMeterY);
-}
-
-void tst_QImageReader::physicalDpi_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<int>("expectedPhysicalDpiX");
- QTest::addColumn<int>("expectedPhysicalDpiY");
- QTest::addColumn<QByteArray>("format");
- QTest::newRow("TIFF: 72 dpi") << "rgba_nocompression_littleendian.tif" << 72 << 72 << QByteArray("tiff");
- QTest::newRow("TIFF: 100 dpi") << "image_100dpi.tif" << 100 << 100 << QByteArray("tiff");
-}
-
-void tst_QImageReader::physicalDpi()
-{
- QFETCH(QString, fileName);
- QFETCH(int, expectedPhysicalDpiX);
- QFETCH(int, expectedPhysicalDpiY);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImage image(prefix + fileName);
-
- QCOMPARE(image.physicalDpiX(), expectedPhysicalDpiX);
- QCOMPARE(image.physicalDpiY(), expectedPhysicalDpiY);
-}
-
-void tst_QImageReader::autoDetectImageFormat()
-{
- // Assume PNG is supported :-)
- {
- // Disables file name extension probing
- QImageReader reader(prefix + "kollada");
- reader.setAutoDetectImageFormat(false);
- QVERIFY(!reader.canRead());
- QVERIFY(reader.read().isNull());
- reader.setAutoDetectImageFormat(true);
- QVERIFY(reader.canRead());
- QVERIFY(!reader.read().isNull());
- }
- {
- // Disables detection based on suffix
- QImageReader reader(prefix + "kollada.png");
- reader.setAutoDetectImageFormat(false);
- QVERIFY(!reader.canRead());
- QVERIFY(reader.read().isNull());
- reader.setAutoDetectImageFormat(true);
- QVERIFY(reader.canRead());
- QVERIFY(!reader.read().isNull());
- }
- {
- // Disables detection based on content
- QImageReader reader(prefix + "kollada-noext");
- reader.setAutoDetectImageFormat(false);
- QVERIFY(!reader.canRead());
- QVERIFY(reader.read().isNull());
- reader.setAutoDetectImageFormat(true);
- QVERIFY(reader.canRead());
- QVERIFY(!reader.read().isNull());
- }
-
- if (QImageReader::supportedImageFormats().contains("jpeg")) {
- QImageReader io(prefix + "YCbCr_rgb.jpg");
- io.setAutoDetectImageFormat(false);
- // This should fail since no format string is given
- QImage image;
- QVERIFY(!io.read(&image));
- }
- if (QImageReader::supportedImageFormats().contains("jpeg")) {
- QImageReader io(prefix + "YCbCr_rgb.jpg", "jpg");
- io.setAutoDetectImageFormat(false);
- QImage image;
- QVERIFY(io.read(&image));
- }
- {
- QImageReader io(prefix + "tst7.png");
- io.setAutoDetectImageFormat(false);
- // This should fail since no format string is given
- QImage image;
- QVERIFY(!io.read(&image));
- }
- {
- QImageReader io(prefix + "tst7.png", "png");
- io.setAutoDetectImageFormat(false);
- QImage image;
- QVERIFY(io.read(&image));
- }
-}
-
-void tst_QImageReader::fileNameProbing()
-{
- QString name("doesnotexist.png");
- QImageReader r;
- r.setFileName(name); // non-existing / non-readable file
- QCOMPARE(r.fileName(), name);
-
- r.size();
- QCOMPARE(r.fileName(), name);
- r.read();
- QCOMPARE(r.fileName(), name);
-}
-
-void tst_QImageReader::pixelCompareWithBaseline_data()
-{
- QTest::addColumn<QString>("fileName");
-
- QTest::newRow("floppy (16px,32px - 16 colors)") << "35floppy.ico";
- QTest::newRow("semitransparent") << "semitransparent.ico";
- QTest::newRow("slightlybrokenBMPHeader") << "kde_favicon.ico";
- QTest::newRow("sightlybrokenIconHeader") << "connect.ico";
-}
-
-void tst_QImageReader::pixelCompareWithBaseline()
-{
- QFETCH(QString, fileName);
-
- static int enteredCount = 0; // Used for better error diagnostics if something fails. We
- static int loadFailCount = 0; // don't know if the reason load() fails is that the plugin
- // does not exist or because of a bug in the plugin. But if at
- // least one file succeeded we know that the plugin was built.
- // The other failures are then real failures.
- QImage icoImg;
- const QString inputFileName(QString::fromAscii("images/%1").arg(fileName));
- QFileInfo fi(inputFileName);
-
- ++enteredCount;
- // might fail if the plugin does not exist, which is ok.
- if (icoImg.load(inputFileName)) {
- icoImg = icoImg.convertToFormat(QImage::Format_ARGB32_Premultiplied);
- const QString baselineFileName(QString::fromAscii("baseline/%1.png").arg(fi.baseName()));
-#if 0
- icoImg.save(baselineFileName);
-#else
- QImage baseImg;
- QVERIFY(baseImg.load(baselineFileName));
- baseImg = baseImg.convertToFormat(QImage::Format_ARGB32_Premultiplied);
- QCOMPARE(int(baseImg.format()), int(icoImg.format()));
- QCOMPARE(baseImg, icoImg);
-#endif
- } else {
- ++loadFailCount;
- if (enteredCount != loadFailCount) {
- QFAIL("Plugin is built, but some did not load properly");
- } else {
- qWarning("loading failed, check if ico plugin is built");
- }
- }
-}
-
-
-void tst_QImageReader::testIgnoresFormatAndExtension_data()
-{
- QTest::addColumn<QString>("name");
- QTest::addColumn<QString>("extension");
- QTest::addColumn<QString>("expected");
-
- QTest::newRow("black.png") << "black" << "png" << "png";
- QTest::newRow("black.xpm") << "black" << "xpm" << "xpm";
- QTest::newRow("colorful.bmp") << "colorful" << "bmp" << "bmp";
- QTest::newRow("image.ppm") << "image" << "ppm" << "ppm";
- QTest::newRow("image.pbm") << "image" << "pbm" << "pbm";
- QTest::newRow("image.pgm") << "image" << "pgm" << "pgm";
-
- QTest::newRow("bat1.gif") << "bat1" << "gif" << "gif";
-
- QTest::newRow("beavis.jpg") << "beavis" << "jpg" << "jpeg";
-
- QTest::newRow("fire.mng") << "fire" << "mng" << "mng";
-
- QTest::newRow("image_100dpi.tif") << "image_100dpi" << "tif" << "tiff";
-
- QTest::newRow("rect.svg") << "rect" << "svg" << "svg";
- QTest::newRow("rect.svgz") << "rect" << "svgz" << "svgz";
-}
-
-
-void tst_QImageReader::testIgnoresFormatAndExtension()
-{
- QFETCH(QString, name);
- QFETCH(QString, extension);
- QFETCH(QString, expected);
-
- SKIP_IF_UNSUPPORTED(expected.toLatin1());
-
- QList<QByteArray> formats = QImageReader::supportedImageFormats();
- QString fileNameBase = prefix + name + ".";
-
- foreach (const QByteArray &f, formats) {
- if (f == extension)
- continue;
- QFile tmp(QDir::tempPath() + "/" + name + "_" + expected + "." + f);
-
- QVERIFY(QFile::copy(fileNameBase + extension, QFileInfo(tmp).absoluteFilePath()));
-
- QString format;
- QImage image;
- {
- // image reader needs to be scoped for the remove() to work..
- QImageReader r;
- r.setFileName(QFileInfo(tmp).absoluteFilePath());
- r.setDecideFormatFromContent(true);
- format = r.format();
- r.read(&image);
- }
-
- tmp.remove();
-
- QVERIFY(!image.isNull());
- QCOMPARE(format, expected);
- }
-}
-
-
-void tst_QImageReader::saveFormat_data()
-{
- QTest::addColumn<QImage::Format>("format");
-
- QTest::newRow("Format_Mono") << QImage::Format_Mono;
- QTest::newRow("Format_MonoLSB") << QImage::Format_MonoLSB;
- QTest::newRow("Format_Indexed8") << QImage::Format_Indexed8;
- QTest::newRow("Format_RGB32") << QImage::Format_RGB32;
- QTest::newRow("Format_ARGB32") << QImage::Format_ARGB32;
- QTest::newRow("Format_ARGB32_Premultiplied") << QImage::Format_ARGB32_Premultiplied;
- QTest::newRow("Format_RGB16") << QImage::Format_RGB16;
- QTest::newRow("Format_ARGB8565_Premultiplied") << QImage::Format_ARGB8565_Premultiplied;
- QTest::newRow("Format_RGB666") << QImage::Format_RGB666;
- QTest::newRow("Format_ARGB6666_Premultiplied") << QImage::Format_ARGB6666_Premultiplied;
- QTest::newRow("Format_RGB555") << QImage::Format_RGB555;
- QTest::newRow("Format_ARGB8555_Premultiplied") << QImage::Format_ARGB8555_Premultiplied;
- QTest::newRow("Format_RGB888") << QImage::Format_RGB888;
- QTest::newRow("Format_RGB444") << QImage::Format_RGB444;
- QTest::newRow("Format_ARGB4444_Premultiplied") << QImage::Format_ARGB4444_Premultiplied;
-}
-
-void tst_QImageReader::saveFormat()
-{
- QFETCH(QImage::Format, format);
-
- QImage orig(":/images/kollada.png");
-
- QImage converted = orig.convertToFormat(format);
- QBuffer buf;
- buf.open(QIODevice::WriteOnly);
- QVERIFY(converted.save(&buf, "png"));
- buf.close();
- QImage stored = QImage::fromData(buf.buffer(), "png");
-
- stored = stored.convertToFormat(QImage::Format_ARGB32);
- converted = converted.convertToFormat(QImage::Format_ARGB32);
- QCOMPARE(stored, converted);
-}
-
-
-void tst_QImageReader::readText_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QString>("key");
- QTest::addColumn<QString>("text");
-
- QTest::newRow("png, tEXt before img") << "txts.png" << "Title" << "PNG";
- QTest::newRow("png, zTXt before img") << "txts.png" << "Comment" << "Some compressed text.";
- QTest::newRow("png, tEXt after img") << "txts.png" << "Disclaimer" << "For testing only.";
- QTest::newRow("png, zTXt after img") << "txts.png" << "Description" << "Rendered by Persistence of Vision (tm) Ray Tracer";
-}
-
-
-void tst_QImageReader::readText()
-{
- QFETCH(QString, fileName);
- QFETCH(QString, key);
- QFETCH(QString, text);
-
- QImage img(prefix + fileName);
- QVERIFY(img.textKeys().contains(key));
- QCOMPARE(img.text(key), text);
-}
-
-
-void tst_QImageReader::preserveTexts_data()
-{
- QTest::addColumn<QString>("text");
-
- QTest::newRow("Simple") << "simpletext";
- QTest::newRow("Whitespace") << " A text with whitespace ";
- QTest::newRow("Newline") << "A text\nwith newlines\n";
- QTest::newRow("Double newlines") << "A text\n\nwith double newlines\n\n";
- QTest::newRow("Long") << QString("A rather long text, at least after many repetitions. ").repeated(100);
- QString latin1set;
- int c;
- for(c = 0x20; c <= 0x7e; c++)
- latin1set.append(QLatin1Char(c));
- for(c = 0xa0; c <= 0xff; c++)
- latin1set.append(QLatin1Char(c));
- QTest::newRow("All Latin1 chars") << latin1set;
-
-#if 0
- // Depends on iTXt support in libpng
- QTest::newRow("Multibyte string") << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242\341\233\232\341\232\240");
-#endif
-}
-
-
-void tst_QImageReader::preserveTexts()
-{
- QFETCH(QString, text);
- QString key("testkey");
- QString key2("testkey2");
- QString text2("Some other text.");
- QString key3("testkey3");
- QString text3("Some more other text.");
-
- QImage img(":/images/kollada.png");
- img.setText(key, text);
- img.setText(key2, text2);
- QBuffer buf;
- buf.open(QIODevice::WriteOnly);
- QVERIFY(img.save(&buf, "png"));
- buf.close();
- QImage stored = QImage::fromData(buf.buffer(), "png");
- QCOMPARE(stored.text(key), text);
- QCOMPARE(stored.text(key2), text2);
-
- QImage img2(":/images/kollada.png");
- img2.setText(key3, text3);
- QBuffer buf2;
- QImageWriter w(&buf2, "png");
- w.setText(key, text);
- w.setText(key2, text2);
- QVERIFY(w.write(img2));
- buf2.close();
- QImageReader r(&buf2, "png");
- QCOMPARE(r.text(key), text.simplified());
- QCOMPARE(r.text(key2), text2.simplified());
- QCOMPARE(r.text(key3), text3.simplified());
-}
-
-
-QTEST_MAIN(tst_QImageReader)
-#include "tst_qimagereader.moc"
diff --git a/tests/auto/qimagewriter/qimagewriter.pro b/tests/auto/qimagewriter/qimagewriter.pro
deleted file mode 100644
index bab241977b..0000000000
--- a/tests/auto/qimagewriter/qimagewriter.pro
+++ /dev/null
@@ -1,24 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qimagewriter.cpp
-MOC_DIR=tmp
-!contains(QT_CONFIG, no-tiff):DEFINES += QTEST_HAVE_TIFF
-win32-msvc:QMAKE_CXXFLAGS -= -Zm200
-win32-msvc:QMAKE_CXXFLAGS += -Zm800
-
-wince*: {
- addFiles.files = images\\*.*
- addFiles.path = images
- DEPLOYMENT += addFiles
- DEFINES += SRCDIR=\\\".\\\"
-} else:symbian {
- addFiles.files = images\\*.*
- addFiles.path = images
- DEPLOYMENT += addFiles
- qt_not_deployed {
- imagePlugins.files = qjpeg.dll qtiff.dll
- imagePlugins.path = imageformats
- DEPLOYMENT += imagePlugins
- }
-} else {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
-}
diff --git a/tests/auto/qinputcontext/qinputcontext.pro b/tests/auto/qinputcontext/qinputcontext.pro
index cd9fa0e423..8dedc85cf0 100644
--- a/tests/auto/qinputcontext/qinputcontext.pro
+++ b/tests/auto/qinputcontext/qinputcontext.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qinputcontext.cpp
symbian {
@@ -6,3 +7,5 @@ symbian {
}
mac*:CONFIG+=insignificant_test
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qinputdialog/qinputdialog.pro b/tests/auto/qinputdialog/qinputdialog.pro
index 2f68a40d91..f7e56bd783 100644
--- a/tests/auto/qinputdialog/qinputdialog.pro
+++ b/tests/auto/qinputdialog/qinputdialog.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qinputdialog.cpp
diff --git a/tests/auto/qiodevice/tst_qiodevice.cpp b/tests/auto/qiodevice/tst_qiodevice.cpp
deleted file mode 100644
index a0f57f9d8d..0000000000
--- a/tests/auto/qiodevice/tst_qiodevice.cpp
+++ /dev/null
@@ -1,611 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtCore/QtCore>
-#include <QtNetwork/QtNetwork>
-#include <QtTest/QtTest>
-
-#include "../network-settings.h"
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-#ifdef Q_OS_SYMBIAN
-#define SRCDIR ""
-#endif
-
-class tst_QIODevice : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QIODevice();
- virtual ~tst_QIODevice();
-
-
-public slots:
- void init();
- void cleanup();
-private slots:
- void getSetCheck();
- void constructing_QTcpSocket();
- void constructing_QFile();
- void read_QByteArray();
- void unget();
- void peek();
- void peekAndRead();
-
- void readLine_data();
- void readLine();
-
- void readLine2_data();
- void readLine2();
-
- void peekBug();
-};
-
-// Testing get/set functions
-void tst_QIODevice::getSetCheck()
-{
- // OpenMode QIODevice::openMode()
- // void QIODevice::setOpenMode(OpenMode)
- class MyIODevice : public QIODevice {
- public:
- void setOpenMode(OpenMode openMode) { QIODevice::setOpenMode(openMode); }
- };
- QTcpSocket var1;
- MyIODevice *obj1 = reinterpret_cast<MyIODevice*>(&var1);
- obj1->setOpenMode(QIODevice::OpenMode(QIODevice::NotOpen));
- QCOMPARE(QIODevice::OpenMode(QIODevice::NotOpen), obj1->openMode());
- obj1->setOpenMode(QIODevice::OpenMode(QIODevice::ReadWrite));
- QCOMPARE(QIODevice::OpenMode(QIODevice::ReadWrite), obj1->openMode());
-}
-
-tst_QIODevice::tst_QIODevice()
-{
- Q_SET_DEFAULT_IAP
-}
-
-tst_QIODevice::~tst_QIODevice()
-{
-}
-
-void tst_QIODevice::init()
-{
-}
-
-void tst_QIODevice::cleanup()
-{
-}
-
-//----------------------------------------------------------------------------------
-void tst_QIODevice::constructing_QTcpSocket()
-{
-#if defined(Q_OS_WINCE) && defined(WINCE_EMULATOR_TEST)
- QSKIP("Networking tests in a WinCE emulator are unstable", SkipAll);
-#endif
- QTcpSocket socket;
- QIODevice *device = &socket;
-
- QVERIFY(!device->isOpen());
-
- socket.connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket.waitForConnected(30000));
- QVERIFY(device->isOpen());
-
- while (!device->canReadLine())
- QVERIFY(device->waitForReadyRead(30000));
-
- char buf[1024];
- memset(buf, 0, sizeof(buf));
- qlonglong lineLength = device->readLine(buf, sizeof(buf));
- QVERIFY(lineLength > 0);
- QCOMPARE(socket.pos(), qlonglong(0));
-
- socket.close();
- socket.connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket.waitForConnected(30000));
- QVERIFY(device->isOpen());
-
- while (!device->canReadLine())
- QVERIFY(device->waitForReadyRead(30000));
-
- char buf2[1024];
- memset(buf2, 0, sizeof(buf2));
- QCOMPARE(socket.readLine(buf2, sizeof(buf2)), lineLength);
-
- char *c1 = buf;
- char *c2 = buf2;
- while (*c1 && *c2) {
- QCOMPARE(*c1, *c2);
- ++c1;
- ++c2;
- }
- QCOMPARE(*c1, *c2);
-}
-
-//----------------------------------------------------------------------------------
-void tst_QIODevice::constructing_QFile()
-{
- QFile file;
- QIODevice *device = &file;
-
- QVERIFY(!device->isOpen());
-
- file.setFileName(SRCDIR "tst_qiodevice.cpp");
- QVERIFY(file.open(QFile::ReadOnly));
- QVERIFY(device->isOpen());
- QCOMPARE((int) device->openMode(), (int) QFile::ReadOnly);
-
- char buf[1024];
- memset(buf, 0, sizeof(buf));
- qlonglong lineLength = device->readLine(buf, sizeof(buf));
- QVERIFY(lineLength > 0);
- QCOMPARE(file.pos(), lineLength);
-
- file.seek(0);
- char buf2[1024];
- memset(buf2, 0, sizeof(buf2));
- QCOMPARE(file.readLine(buf2, sizeof(buf2)), lineLength);
-
- char *c1 = buf;
- char *c2 = buf2;
- while (*c1 && *c2) {
- QCOMPARE(*c1, *c2);
- ++c1;
- ++c2;
- }
- QCOMPARE(*c1, *c2);
-}
-
-
-void tst_QIODevice::read_QByteArray()
-{
- QFile f(SRCDIR "tst_qiodevice.cpp");
- f.open(QIODevice::ReadOnly);
-
- QByteArray b = f.read(10);
- QCOMPARE(b.length(), 10);
-
- b = f.read(256);
- QCOMPARE(b.length(), 256);
-
- b = f.read(0);
- QCOMPARE(b.length(), 0);
-}
-
-//--------------------------------------------------------------------
-void tst_QIODevice::unget()
-{
-#if defined(Q_OS_WINCE) && defined(WINCE_EMULATOR_TEST)
- QSKIP("Networking tests in a WinCE emulator are unstable", SkipAll);
-#endif
- QBuffer buffer;
- buffer.open(QBuffer::ReadWrite);
- buffer.write("ZXCV");
- buffer.seek(0);
- QCOMPARE(buffer.read(4), QByteArray("ZXCV"));
- QCOMPARE(buffer.pos(), qint64(4));
-
- buffer.ungetChar('a');
- buffer.ungetChar('b');
- buffer.ungetChar('c');
- buffer.ungetChar('d');
-
- QCOMPARE(buffer.pos(), qint64(0));
-
- char buf[6];
- QCOMPARE(buffer.readLine(buf, 5), qint64(4));
- QCOMPARE(buffer.pos(), qint64(4));
- QCOMPARE(static_cast<const char*>(buf), "dcba");
-
- buffer.ungetChar('a');
- buffer.ungetChar('b');
- buffer.ungetChar('c');
- buffer.ungetChar('d');
-
- QCOMPARE(buffer.pos(), qint64(0));
-
- for (int i = 0; i < 5; ++i) {
- buf[0] = '@';
- buf[1] = '@';
- QTest::ignoreMessage(QtWarningMsg,
- "QIODevice::readLine: Called with maxSize < 2");
- QCOMPARE(buffer.readLine(buf, 1), qint64(-1));
- QCOMPARE(buffer.readLine(buf, 2), qint64(i < 4 ? 1 : -1));
- switch (i) {
- case 0: QCOMPARE(buf[0], 'd'); break;
- case 1: QCOMPARE(buf[0], 'c'); break;
- case 2: QCOMPARE(buf[0], 'b'); break;
- case 3: QCOMPARE(buf[0], 'a'); break;
- case 4: QCOMPARE(buf[0], '\0'); break;
- }
- QCOMPARE(buf[1], i < 4 ? '\0' : '@');
- }
-
- buffer.ungetChar('\n');
- QCOMPARE(buffer.readLine(), QByteArray("\n"));
-
- buffer.seek(1);
- buffer.readLine(buf, 3);
- QCOMPARE(static_cast<const char*>(buf), "XC");
-
- buffer.seek(4);
- buffer.ungetChar('Q');
- QCOMPARE(buffer.readLine(buf, 3), qint64(1));
-
- for (int i = 0; i < 2; ++i) {
- QTcpSocket socket;
- QIODevice *dev;
- QByteArray result;
- const char *lineResult;
- if (i == 0) {
- dev = &buffer;
- result = QByteArray("ZXCV");
- lineResult = "ZXCV";
- } else {
- socket.connectToHost(QtNetworkSettings::serverName(), 80);
- socket.write("GET / HTTP/1.0\r\n\r\n");
- QVERIFY(socket.waitForReadyRead());
- dev = &socket;
- result = QByteArray("HTTP");
- lineResult = "Date";
- }
- char ch, ch2;
- dev->seek(0);
- dev->getChar(&ch);
- dev->ungetChar(ch);
- QCOMPARE(dev->peek(4), result);
- dev->getChar(&ch);
- dev->getChar(&ch2);
- dev->ungetChar(ch2);
- dev->ungetChar(ch);
- QCOMPARE(dev->read(1), result.left(1));
- QCOMPARE(dev->read(3), result.right(3));
-
- if (i == 0)
- dev->seek(0);
- else
- dev->readLine();
- dev->getChar(&ch);
- dev->ungetChar(ch);
- dev->readLine(buf, 5);
- QCOMPARE(static_cast<const char*>(buf), lineResult);
-
- if (i == 1)
- socket.close();
- }
-}
-
-//--------------------------------------------------------------------
-void tst_QIODevice::peek()
-{
- QBuffer buffer;
- QFile::remove("peektestfile");
- QFile file("peektestfile");
-
- for (int i = 0; i < 2; ++i) {
- QIODevice *device = i ? (QIODevice *)&file : (QIODevice *)&buffer;
-
- device->open(QBuffer::ReadWrite);
- device->write("ZXCV");
-
- device->seek(0);
- QCOMPARE(device->peek(4), QByteArray("ZXCV"));
- QCOMPARE(device->pos(), qint64(0));
- device->write("ABCDE");
- device->seek(3);
- QCOMPARE(device->peek(1), QByteArray("D"));
- QCOMPARE(device->peek(5), QByteArray("DE"));
- device->seek(0);
- QCOMPARE(device->read(4), QByteArray("ABCD"));
- QCOMPARE(device->pos(), qint64(4));
-
- device->seek(0);
- device->write("ZXCV");
- device->seek(0);
- char buf[5];
- buf[4] = 0;
- device->peek(buf, 4);
- QCOMPARE(static_cast<const char *>(buf), "ZXCV");
- QCOMPARE(device->pos(), qint64(0));
- device->read(buf, 4);
- QCOMPARE(static_cast<const char *>(buf), "ZXCV");
- QCOMPARE(device->pos(), qint64(4));
- }
- QFile::remove("peektestfile");
-}
-
-void tst_QIODevice::peekAndRead()
-{
- QByteArray originalData;
- for (int i=0;i<1000;i++)
- originalData += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- QBuffer buffer;
- QFile::remove("peektestfile");
- QFile file("peektestfile");
-
- for (int i = 0; i < 2; ++i) {
- QByteArray readData;
- QIODevice *device = i ? (QIODevice *)&file : (QIODevice *)&buffer;
- device->open(QBuffer::ReadWrite);
- device->write(originalData);
- device->seek(0);
- while (!device->atEnd()) {
- char peekIn[26];
- device->peek(peekIn, 26);
- readData += device->read(26);
- }
- QCOMPARE(readData, originalData);
- }
- QFile::remove("peektestfile");
-}
-
-void tst_QIODevice::readLine_data()
-{
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("0") << QByteArray("\nAA");
- QTest::newRow("1") << QByteArray("A\nAA");
-
- QByteArray data(9000, 'A');
- data[8193] = '\n';
- QTest::newRow("8194") << data;
- data[8193] = 'A';
- data[8192] = '\n';
- QTest::newRow("8193") << data;
- data[8192] = 'A';
- data[8191] = '\n';
- QTest::newRow("8192") << data;
- data[8191] = 'A';
- data[8190] = '\n';
- QTest::newRow("8191") << data;
-
- data[5999] = '\n';
- QTest::newRow("6000") << data;
-
- data[4095] = '\n';
- QTest::newRow("4096") << data;
-
- data[4094] = '\n';
- data[4095] = 'A';
- QTest::newRow("4095") << data;
-}
-
-void tst_QIODevice::readLine()
-{
- QFETCH(QByteArray, data);
- QBuffer buffer(&data);
- QVERIFY(buffer.open(QIODevice::ReadWrite));
- QVERIFY(buffer.canReadLine());
-
- int linelen = data.indexOf('\n') + 1;
- QByteArray line;
- line.reserve(linelen + 100);
-
- int result = buffer.readLine(line.data(), linelen + 100);
- QCOMPARE(result, linelen);
-
- // try the exact length of the line (plus terminating \0)
- QVERIFY(buffer.seek(0));
- result = buffer.readLine(line.data(), linelen + 1);
- QCOMPARE(result, linelen);
-
- // try with a line length limit
- QVERIFY(buffer.seek(0));
- line = buffer.readLine(linelen + 100);
- QCOMPARE(line.size(), linelen);
-
- // try without a length limit
- QVERIFY(buffer.seek(0));
- line = buffer.readLine();
- QCOMPARE(line.size(), linelen);
-}
-
-void tst_QIODevice::readLine2_data()
-{
- QTest::addColumn<QByteArray>("line");
-
- QTest::newRow("1024 - 4") << QByteArray(1024 - 4, 'x');
- QTest::newRow("1024 - 3") << QByteArray(1024 - 3, 'x');
- QTest::newRow("1024 - 2") << QByteArray(1024 - 2, 'x');
- QTest::newRow("1024 - 1") << QByteArray(1024 - 1, 'x');
- QTest::newRow("1024" ) << QByteArray(1024 , 'x');
- QTest::newRow("1024 + 1") << QByteArray(1024 + 1, 'x');
- QTest::newRow("1024 + 2") << QByteArray(1024 + 2, 'x');
-
- QTest::newRow("4096 - 4") << QByteArray(4096 - 4, 'x');
- QTest::newRow("4096 - 3") << QByteArray(4096 - 3, 'x');
- QTest::newRow("4096 - 2") << QByteArray(4096 - 2, 'x');
- QTest::newRow("4096 - 1") << QByteArray(4096 - 1, 'x');
- QTest::newRow("4096" ) << QByteArray(4096 , 'x');
- QTest::newRow("4096 + 1") << QByteArray(4096 + 1, 'x');
- QTest::newRow("4096 + 2") << QByteArray(4096 + 2, 'x');
-
- QTest::newRow("8192 - 4") << QByteArray(8192 - 4, 'x');
- QTest::newRow("8192 - 3") << QByteArray(8192 - 3, 'x');
- QTest::newRow("8192 - 2") << QByteArray(8192 - 2, 'x');
- QTest::newRow("8192 - 1") << QByteArray(8192 - 1, 'x');
- QTest::newRow("8192" ) << QByteArray(8192 , 'x');
- QTest::newRow("8192 + 1") << QByteArray(8192 + 1, 'x');
- QTest::newRow("8192 + 2") << QByteArray(8192 + 2, 'x');
-
- QTest::newRow("16384 - 4") << QByteArray(16384 - 4, 'x');
- QTest::newRow("16384 - 3") << QByteArray(16384 - 3, 'x');
- QTest::newRow("16384 - 2") << QByteArray(16384 - 2, 'x');
- QTest::newRow("16384 - 1") << QByteArray(16384 - 1, 'x');
- QTest::newRow("16384" ) << QByteArray(16384 , 'x');
- QTest::newRow("16384 + 1") << QByteArray(16384 + 1, 'x');
- QTest::newRow("16384 + 2") << QByteArray(16384 + 2, 'x');
-
- QTest::newRow("20000") << QByteArray(20000, 'x');
-
- QTest::newRow("32768 - 4") << QByteArray(32768 - 4, 'x');
- QTest::newRow("32768 - 3") << QByteArray(32768 - 3, 'x');
- QTest::newRow("32768 - 2") << QByteArray(32768 - 2, 'x');
- QTest::newRow("32768 - 1") << QByteArray(32768 - 1, 'x');
- QTest::newRow("32768" ) << QByteArray(32768 , 'x');
- QTest::newRow("32768 + 1") << QByteArray(32768 + 1, 'x');
- QTest::newRow("32768 + 2") << QByteArray(32768 + 2, 'x');
-
- QTest::newRow("40000") << QByteArray(40000, 'x');
-}
-
-void tst_QIODevice::readLine2()
-{
- QFETCH(QByteArray, line);
-
- int length = line.size();
-
- QByteArray data("First line.\r\n");
- data.append(line);
- data.append("\r\n");
- data.append(line);
- data.append("\r\n");
- data.append("\r\n0123456789");
-
- {
- QBuffer buffer(&data);
- buffer.open(QIODevice::ReadOnly);
-
- buffer.seek(0);
- QByteArray temp;
- temp.resize(64536);
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(13));
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 2));
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 2));
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(2));
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(10));
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(-1));
-
- buffer.seek(0);
- QCOMPARE(buffer.readLine().size(), 13);
- QCOMPARE(buffer.readLine().size(), length + 2);
- QCOMPARE(buffer.readLine().size(), length + 2);
- QCOMPARE(buffer.readLine().size(), 2);
- QCOMPARE(buffer.readLine().size(), 10);
- QVERIFY(buffer.readLine().isNull());
- }
-
- {
- QBuffer buffer(&data);
- buffer.open(QIODevice::ReadOnly | QIODevice::Text);
-
- buffer.seek(0);
- QByteArray temp;
- temp.resize(64536);
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(12));
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 1));
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 1));
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(1));
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(10));
- QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(-1));
-
- buffer.seek(0);
- QCOMPARE(buffer.readLine().size(), 12);
- QCOMPARE(buffer.readLine().size(), length + 1);
- QCOMPARE(buffer.readLine().size(), length + 1);
- QCOMPARE(buffer.readLine().size(), 1);
- QCOMPARE(buffer.readLine().size(), 10);
- QVERIFY(buffer.readLine().isNull());
- }
-}
-
-
-class PeekBug : public QIODevice {
- Q_OBJECT
-public:
- char alphabet[27];
- qint64 counter;
- PeekBug() : QIODevice(), counter(0) {
- memcpy(alphabet,"abcdefghijklmnopqrstuvqxyz",27);
- };
- qint64 readData(char *data, qint64 maxlen) {
- qint64 pos = 0;
- while (pos < maxlen) {
- *(data + pos) = alphabet[counter];
- pos++;
- counter++;
- if (counter == 26)
- counter = 0;
- }
- return maxlen;
- }
- qint64 writeData(const char * /* data */, qint64 /* maxlen */) {
- return -1;
- }
-
-};
-
-// This is a testcase for the bug fixed with bd287865
-void tst_QIODevice::peekBug()
-{
- PeekBug peekBug;
- peekBug.open(QIODevice::ReadOnly | QIODevice::Unbuffered);
-
- char onetwo[2];
- peekBug.peek(onetwo, 2);
- QCOMPARE(onetwo[0], 'a');
- QCOMPARE(onetwo[1], 'b');
-
- peekBug.read(onetwo, 1);
- QCOMPARE(onetwo[0], 'a');
-
- peekBug.peek(onetwo, 2);
- QCOMPARE(onetwo[0], 'b');
- QCOMPARE(onetwo[1], 'c');
-
- peekBug.read(onetwo, 1);
- QCOMPARE(onetwo[0], 'b');
- peekBug.read(onetwo, 1);
- QCOMPARE(onetwo[0], 'c');
- peekBug.read(onetwo, 1);
- QCOMPARE(onetwo[0], 'd');
-
- peekBug.peek(onetwo, 2);
- QCOMPARE(onetwo[0], 'e');
- QCOMPARE(onetwo[1], 'f');
-
-}
-
-QTEST_MAIN(tst_QIODevice)
-#include "tst_qiodevice.moc"
diff --git a/tests/auto/qitemdelegate/qitemdelegate.pro b/tests/auto/qitemdelegate/qitemdelegate.pro
index 1206976868..9a1a3b5e94 100644
--- a/tests/auto/qitemdelegate/qitemdelegate.pro
+++ b/tests/auto/qitemdelegate/qitemdelegate.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qitemdelegate.cpp
win32:!wince*: LIBS += -lUser32
diff --git a/tests/auto/qitemeditorfactory/qitemeditorfactory.pro b/tests/auto/qitemeditorfactory/qitemeditorfactory.pro
index d589f4e01b..89bc944c51 100644
--- a/tests/auto/qitemeditorfactory/qitemeditorfactory.pro
+++ b/tests/auto/qitemeditorfactory/qitemeditorfactory.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qitemeditorfactory.cpp
diff --git a/tests/auto/qitemmodel/modelstotest.cpp b/tests/auto/qitemmodel/modelstotest.cpp
deleted file mode 100644
index 772f72b973..0000000000
--- a/tests/auto/qitemmodel/modelstotest.cpp
+++ /dev/null
@@ -1,425 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <QtCore/QtCore>
-#include <QtSql/QtSql>
-#include <QtGui/QtGui>
-#include <QSortFilterProxyModel>
-
-/*
- To add a model to be tested add the header file to the includes
- and impliment what is needed in the four functions below.
-
- You can add more then one model, several Qt models and included as examples.
-
- In tst_qitemmodel.cpp a new ModelsToTest object is created for each test.
-
- When you have errors fix the first ones first. Later tests depend upon them working
-*/
-
-class ModelsToTest {
-
-public:
- ModelsToTest();
-
- QAbstractItemModel *createModel(const QString &modelType);
- QModelIndex populateTestArea(QAbstractItemModel *model);
- void cleanupTestArea(QAbstractItemModel *model);
-
- enum Read {
- ReadOnly, // wont perform remove(), insert(), and setData()
- ReadWrite
- };
- enum Contains {
- Empty, // Confirm that rowCount() == 0 etc throughout the test
- HasData // Confirm that rowCount() != 0 etc throughout the test
- };
-
- struct test {
- test(QString m, Read r, Contains c) : modelType(m), read(r), contains(c){};
-
- QString modelType;
- Read read;
- Contains contains;
- };
-
- QList<test> tests;
-
- static void setupDatabase();
-};
-
-
-/*!
- Add new tests, they can be the same model, but in a different state.
-
- The name of the model is passed to createModel
- If readOnly is true the remove tests will be skipped. Example: QDirModel is disabled.
- If createModel returns an empty model. Example: QDirModel does not
- */
-ModelsToTest::ModelsToTest()
-{
- setupDatabase();
-
- tests.append(test("QDirModel", ReadOnly, HasData));
- tests.append(test("QStringListModel", ReadWrite, HasData));
- tests.append(test("QStringListModelEmpty", ReadWrite, Empty));
-
- tests.append(test("QStandardItemModel", ReadWrite, HasData));
- tests.append(test("QStandardItemModelEmpty", ReadWrite, Empty));
-
- // QSortFilterProxyModel test uses QStandardItemModel so test it first
- tests.append(test("QSortFilterProxyModel", ReadWrite, HasData));
- tests.append(test("QSortFilterProxyModelEmpty", ReadWrite, Empty));
- tests.append(test("QSortFilterProxyModelRegExp", ReadWrite, HasData));
-
- tests.append(test("QListModel", ReadWrite, HasData));
- tests.append(test("QListModelEmpty", ReadWrite, Empty));
- tests.append(test("QTableModel", ReadWrite, HasData));
- tests.append(test("QTableModelEmpty", ReadWrite, Empty));
-
- tests.append(test("QTreeModel", ReadWrite, HasData));
- tests.append(test("QTreeModelEmpty", ReadWrite, Empty));
-
- tests.append(test("QSqlQueryModel", ReadOnly, HasData));
- tests.append(test("QSqlQueryModelEmpty", ReadOnly, Empty));
-
- // Fails on remove
- tests.append(test("QSqlTableModel", ReadOnly, HasData));
-}
-
-/*!
- Return a new modelType.
- */
-QAbstractItemModel *ModelsToTest::createModel(const QString &modelType)
-{
- if (modelType == "QStringListModelEmpty")
- return new QStringListModel();
-
- if (modelType == "QStringListModel") {
- QStringListModel *model = new QStringListModel();
- populateTestArea(model);
- return model;
- }
-
- if (modelType == "QStandardItemModelEmpty") {
- return new QStandardItemModel();
- }
-
- if (modelType == "QStandardItemModel") {
- QStandardItemModel *model = new QStandardItemModel();
- populateTestArea(model);
- return model;
- }
-
- if (modelType == "QSortFilterProxyModelEmpty") {
- QSortFilterProxyModel *model = new QSortFilterProxyModel;
- QStandardItemModel *standardItemModel = new QStandardItemModel;
- model->setSourceModel(standardItemModel);
- return model;
- }
-
- if (modelType == "QSortFilterProxyModelRegExp") {
- QSortFilterProxyModel *model = new QSortFilterProxyModel;
- QStandardItemModel *standardItemModel = new QStandardItemModel;
- model->setSourceModel(standardItemModel);
- populateTestArea(model);
- model->setFilterRegExp(QRegExp("(^$|0.*)"));
- return model;
- }
-
- if (modelType == "QSortFilterProxyModel") {
- QSortFilterProxyModel *model = new QSortFilterProxyModel;
- QStandardItemModel *standardItemModel = new QStandardItemModel;
- model->setSourceModel(standardItemModel);
- populateTestArea(model);
- return model;
- }
-
- if (modelType == "QDirModel") {
- QDirModel *model = new QDirModel();
- model->setReadOnly(false);
- return model;
- }
-
- if (modelType == "QSqlQueryModel") {
- QSqlQueryModel *model = new QSqlQueryModel();
- populateTestArea(model);
- return model;
- }
-
- if (modelType == "QSqlQueryModelEmpty") {
- QSqlQueryModel *model = new QSqlQueryModel();
- return model;
- }
-
- if (modelType == "QSqlTableModel") {
- QSqlTableModel *model = new QSqlTableModel();
- populateTestArea(model);
- return model;
- }
-
- if (modelType == "QListModelEmpty")
- return (new QListWidget)->model();
-
- if (modelType == "QListModel") {
- QListWidget *widget = new QListWidget;
- populateTestArea(widget->model());
- return widget->model();
- }
-
- if (modelType == "QTableModelEmpty")
- return (new QTableWidget)->model();
-
- if (modelType == "QTableModel") {
- QTableWidget *widget = new QTableWidget;
- populateTestArea(widget->model());
- return widget->model();
- }
-
- if (modelType == "QTreeModelEmpty") {
- QTreeWidget *widget = new QTreeWidget;
- return widget->model();
- }
-
- if (modelType == "QTreeModel") {
- QTreeWidget *widget = new QTreeWidget;
- populateTestArea(widget->model());
- return widget->model();
- }
-
- return 0;
-}
-
-/*!
- Fills model with some test data at least twenty rows and if possible twenty or more columns.
- Return the parent of a row/column that can be tested.
-
- NOTE: If readOnly is true tests will try to remove and add rows and columns.
- If you have a tree model returning not the root index will help catch more errors.
- */
-QModelIndex ModelsToTest::populateTestArea(QAbstractItemModel *model)
-{
- if (QStringListModel *stringListModel = qobject_cast<QStringListModel *>(model)) {
- QString alphabet = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
- stringListModel->setStringList( alphabet.split(",") );
- return QModelIndex();
- }
-
- if (qobject_cast<QStandardItemModel *>(model)) {
- // Basic tree StandardItemModel
- QModelIndex parent;
- QVariant blue = QVariant(QColor(Qt::blue));
-#ifndef Q_OS_WINCE
- for (int i = 0; i < 4; ++i) {
-#else
- for (int i = 0; i < 2; ++i) {
-#endif
- parent = model->index(0, 0, parent);
- model->insertRows(0, 26 + i, parent);
-#ifndef Q_OS_WINCE
- model->insertColumns(0, 26 + i, parent);
-#else
- model->insertColumns(0, 4 + i, parent);
-#endif
- // Fill in some values to make it easier to debug
- /*
- for (int x = 0; x < 26 + i; ++x) {
- QString xval = QString::number(x);
- for (int y = 0; y < 26 + i; ++y) {
- QString val = xval + QString::number(y) + QString::number(i);
- QModelIndex index = model->index(x, y, parent);
- model->setData(index, val);
- model->setData(index, blue, Qt::TextColorRole);
- }
- }
- */
- }
- return model->index(0,0);
- }
-
- if (qobject_cast<QSortFilterProxyModel *>(model)) {
- QAbstractItemModel *realModel = (qobject_cast<QSortFilterProxyModel *>(model))->sourceModel();
- // Basic tree StandardItemModel
- QModelIndex parent;
- QVariant blue = QVariant(QColor(Qt::blue));
-#ifndef Q_OS_WINCE
- for (int i = 0; i < 4; ++i) {
-#else
- for (int i = 0; i < 2; ++i) {
-#endif
- parent = realModel->index(0, 0, parent);
- realModel->insertRows(0, 26+i, parent);
-#ifndef Q_OS_WINCE
- realModel->insertColumns(0, 26+i, parent);
-#else
- realModel->insertColumns(0, 4, parent);
-#endif
- // Fill in some values to make it easier to debug
- /*
- for (int x = 0; x < 26+i; ++x) {
- QString xval = QString::number(x);
- for (int y = 0; y < 26 + i; ++y) {
- QString val = xval + QString::number(y) + QString::number(i);
- QModelIndex index = realModel->index(x, y, parent);
- realModel->setData(index, val);
- realModel->setData(index, blue, Qt::TextColorRole);
- }
- }
- */
- }
- QModelIndex returnIndex = model->index(0,0);
- if (!returnIndex.isValid())
- qFatal("%s: model index to be returned is invalid", Q_FUNC_INFO);
- return returnIndex;
- }
-
- if (QDirModel *dirModel = qobject_cast<QDirModel *>(model)) {
- if (!QDir::current().mkdir("test"))
- qFatal("%s: cannot create directory %s",
- Q_FUNC_INFO,
- qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/test")));
- for (int i = 0; i < 26; ++i) {
- QString subdir = QString("test/foo_%1").arg(i);
- if (!QDir::current().mkdir(subdir))
- qFatal("%s: cannot create directory %s",
- Q_FUNC_INFO,
- qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/"+subdir)));
- }
- return dirModel->index(QDir::currentPath()+"/test");
- }
-
- if (QSqlQueryModel *queryModel = qobject_cast<QSqlQueryModel *>(model)) {
- QSqlQuery q;
- q.exec("CREATE TABLE test(id int primary key, name varchar(30))");
- q.prepare("INSERT INTO test(id, name) values (?, ?)");
-#ifndef Q_OS_WINCE
- for (int i = 0; i < 1024; ++i) {
-#else
- for (int i = 0; i < 512; ++i) {
-#endif
- q.addBindValue(i);
- q.addBindValue("Mr. Smith" + QString::number(i));
- q.exec();
- }
- if (QSqlTableModel *tableModel = qobject_cast<QSqlTableModel *>(model)) {
- tableModel->setTable("test");
- tableModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
- tableModel->select();
- } else {
- queryModel->setQuery("select * from test");
- }
- return QModelIndex();
- }
-
- if (QListWidget *listWidget = qobject_cast<QListWidget *>(model->parent())) {
-#ifndef Q_OS_WINCE
- int items = 100;
-#else
- int items = 50;
-#endif
- while (items--)
- listWidget->addItem(QString("item %1").arg(items));
- return QModelIndex();
- }
-
- if (QTableWidget *tableWidget = qobject_cast<QTableWidget *>(model->parent())) {
- tableWidget->setColumnCount(20);
- tableWidget->setRowCount(20);
- return QModelIndex();
- }
-
- if (QTreeWidget *treeWidget = qobject_cast<QTreeWidget *>(model->parent())) {
- int topItems = 20;
- treeWidget->setColumnCount(1);
- QTreeWidgetItem *parent;
- while (topItems--){
- parent = new QTreeWidgetItem(treeWidget, QStringList(QString("top %1").arg(topItems)));
- for (int i = 0; i < 20; ++i)
- new QTreeWidgetItem(parent, QStringList(QString("child %1").arg(topItems)));
- }
- return QModelIndex();
- }
-
- qFatal("%s: unknown type of model", Q_FUNC_INFO);
- return QModelIndex();
-}
-
-/*!
- If you need to cleanup from populateTest() do it here.
- Note that this is called after every test even if populateTestArea isn't called.
- */
-void ModelsToTest::cleanupTestArea(QAbstractItemModel *model)
-{
- if (qobject_cast<QDirModel *>(model))
- {
- if (QDir(QDir::currentPath()+"/test").exists())
- {
- for (int i = 0; i < 26; ++i) {
- QString subdir(QString("test/foo_%1").arg(i));
- if (!QDir::current().rmdir(subdir))
- qFatal("%s: cannot remove directory %s",
- Q_FUNC_INFO,
- qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/"+subdir)));
- }
- if (!QDir::current().rmdir("test"))
- qFatal("%s: cannot remove directory %s",
- Q_FUNC_INFO,
- qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/test")));
- }
- } else if (qobject_cast<QSqlQueryModel *>(model)) {
- QSqlQuery q("DROP TABLE test");
- }
-}
-
-void ModelsToTest::setupDatabase()
-{
- if (!QSqlDatabase::database().isValid()) {
- QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
- db.setDatabaseName(":memory:");
- if (!db.open()) {
- qWarning() << "Unable to open database" << db.lastError();
- return;
- }
- }
-}
-
diff --git a/tests/auto/qitemmodel/qitemmodel.pro b/tests/auto/qitemmodel/qitemmodel.pro
deleted file mode 100644
index b348a183f8..0000000000
--- a/tests/auto/qitemmodel/qitemmodel.pro
+++ /dev/null
@@ -1,26 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qitemmodel.cpp
-
-QT += sql
-
-# NOTE: The deployment of the sqldrivers is disabled on purpose.
-# If we deploy the plugins, they are loaded twice when running
-# the tests on the autotest system. In that case we run out of
-# memory on Windows Mobile 5.
-
-#wince*: {
-# plugFiles.files = $$QT_BUILD_TREE/plugins/sqldrivers/*.dll
-# plugFiles.path = sqldrivers
-# DEPLOYMENT += plugFiles
-#}
-
-symbian {
- TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
- qt_not_deployed {
- contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
- sqlite.path = /sys/bin
- sqlite.files = sqlite3.dll
- DEPLOYMENT += sqlite
- }
- }
-}
diff --git a/tests/auto/qitemselectionmodel/qitemselectionmodel.pro b/tests/auto/qitemselectionmodel/qitemselectionmodel.pro
index afc859e5ef..c675a6eb9d 100644
--- a/tests/auto/qitemselectionmodel/qitemselectionmodel.pro
+++ b/tests/auto/qitemselectionmodel/qitemselectionmodel.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qitemselectionmodel.cpp
diff --git a/tests/auto/qitemview/qitemview.pro b/tests/auto/qitemview/qitemview.pro
index de2c328493..dbdd4612d5 100644
--- a/tests/auto/qitemview/qitemview.pro
+++ b/tests/auto/qitemview/qitemview.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qitemview.cpp
diff --git a/tests/auto/qkeysequence/qkeysequence.pro b/tests/auto/qkeysequence/qkeysequence.pro
deleted file mode 100644
index 720c53d627..0000000000
--- a/tests/auto/qkeysequence/qkeysequence.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-load(qttest_p4)
-
-QT += core-private gui-private
-
-SOURCES += tst_qkeysequence.cpp
-
-RESOURCES += qkeysequence.qrc
diff --git a/tests/auto/qlabel/qlabel.pro b/tests/auto/qlabel/qlabel.pro
index 4b510cca52..c670a6f96b 100644
--- a/tests/auto/qlabel/qlabel.pro
+++ b/tests/auto/qlabel/qlabel.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qlabel.cpp
@@ -11,3 +12,5 @@ wince*|symbian {
addFiles.path = .
DEPLOYMENT += addFiles
}
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qlayout/qlayout.pro b/tests/auto/qlayout/qlayout.pro
index 919eba2003..c4803ec2db 100644
--- a/tests/auto/qlayout/qlayout.pro
+++ b/tests/auto/qlayout/qlayout.pro
@@ -1,6 +1,6 @@
load(qttest_p4)
-QT += gui-private
+QT += widgets widgets-private
SOURCES += tst_qlayout.cpp
wince*|symbian: {
diff --git a/tests/auto/qlayout/tst_qlayout.cpp b/tests/auto/qlayout/tst_qlayout.cpp
index 81b92cadec..ea25700568 100644
--- a/tests/auto/qlayout/tst_qlayout.cpp
+++ b/tests/auto/qlayout/tst_qlayout.cpp
@@ -49,9 +49,9 @@
#include <qdialog.h>
#include <qsizegrip.h>
#include <qlabel.h>
-#include <QtGui/QFrame>
-#include <QtGui/QWindowsStyle>
-#include <QtGui/QSizePolicy>
+#include <QtWidgets/QFrame>
+#include <QtWidgets/QWindowsStyle>
+#include <QtWidgets/QSizePolicy>
#include <QPushButton>
#include <QRadioButton>
#include <private/qlayoutengine_p.h>
diff --git a/tests/auto/qlcdnumber/qlcdnumber.pro b/tests/auto/qlcdnumber/qlcdnumber.pro
index 4f1b0091ba..cd909de5be 100644
--- a/tests/auto/qlcdnumber/qlcdnumber.pro
+++ b/tests/auto/qlcdnumber/qlcdnumber.pro
@@ -3,7 +3,7 @@
############################################################
load(qttest_p4)
-
+QT += widgets
SOURCES += tst_qlcdnumber.cpp
diff --git a/tests/auto/qlineedit/qlineedit.pro b/tests/auto/qlineedit/qlineedit.pro
index bb6d95027b..077b7c919e 100644
--- a/tests/auto/qlineedit/qlineedit.pro
+++ b/tests/auto/qlineedit/qlineedit.pro
@@ -1,2 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qlineedit.cpp
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qlineedit/tst_qlineedit.cpp b/tests/auto/qlineedit/tst_qlineedit.cpp
index fde77bca51..7c8a9751cd 100644
--- a/tests/auto/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/qlineedit/tst_qlineedit.cpp
@@ -3704,7 +3704,7 @@ void tst_QLineEdit::taskQTBUG_7395_readOnlyShortcut()
le.setFocus();
QTRY_VERIFY(le.hasFocus());
- QTest::keyClick(0, Qt::Key_P);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_P);
QCOMPARE(spy.count(), 1);
}
diff --git a/tests/auto/qlistview/qlistview.pro b/tests/auto/qlistview/qlistview.pro
index 21dfe57606..07fabbce35 100644
--- a/tests/auto/qlistview/qlistview.pro
+++ b/tests/auto/qlistview/qlistview.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets gui-private
SOURCES += tst_qlistview.cpp
win32:!wince*: LIBS += -luser32
diff --git a/tests/auto/qlistview/tst_qlistview.cpp b/tests/auto/qlistview/tst_qlistview.cpp
index 3c4b05bc0f..8962556965 100644
--- a/tests/auto/qlistview/tst_qlistview.cpp
+++ b/tests/auto/qlistview/tst_qlistview.cpp
@@ -53,18 +53,28 @@
#include <cmath>
#endif
#include <math.h>
-#include <QtGui/QScrollBar>
-#include <QtGui/QDialog>
-#include <QtGui/QStyledItemDelegate>
+#include <QtWidgets/QScrollBar>
+#include <QtWidgets/QDialog>
+#include <QtWidgets/QStyledItemDelegate>
#if defined(Q_OS_WIN) || defined(Q_OS_WINCE)
-#include <windows.h>
-#endif
+# include <windows.h>
+# include <QtGui/QGuiApplication>
+# include <QtGui/QPlatformNativeInterface>
+#endif // Q_OS_WIN
#include "../../shared/util.h"
//TESTED_CLASS=
//TESTED_FILES=
+#if defined(Q_OS_WIN) || defined(Q_OS_WINCE)
+static inline HWND getHWNDForWidget(const QWidget *widget)
+{
+ QWindow *window = widget->windowHandle();
+ return static_cast<HWND> (QGuiApplication::platformNativeInterface()->nativeResourceForWindow("handle", window));
+}
+#endif // Q_OS_WIN
+
class tst_QListView : public QObject
{
Q_OBJECT
@@ -1467,7 +1477,8 @@ public:
DWORD lParam = 0xFFFFFFFC/*OBJID_CLIENT*/;
DWORD wParam = 0;
- SendMessage(winId(), WM_GETOBJECT, wParam, lParam);
+ if (const HWND hwnd =getHWNDForWidget(this))
+ SendMessage(hwnd, WM_GETOBJECT, wParam, lParam);
#endif
}
diff --git a/tests/auto/qlistwidget/qlistwidget.pro b/tests/auto/qlistwidget/qlistwidget.pro
index 30305e1c8d..7343415e4c 100644
--- a/tests/auto/qlistwidget/qlistwidget.pro
+++ b/tests/auto/qlistwidget/qlistwidget.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qlistwidget.cpp
diff --git a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
deleted file mode 100644
index 3dc5e7392f..0000000000
--- a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
+++ /dev/null
@@ -1,1120 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qtextstream.h>
-#include <QtNetwork/qlocalsocket.h>
-#include <QtNetwork/qlocalserver.h>
-#include "../../shared/util.h"
-
-#ifdef Q_OS_SYMBIAN
- #include <unistd.h>
-#endif
-//TESTED_CLASS=QLocalServer, QLocalSocket
-//TESTED_FILES=network/socket/qlocalserver.cpp network/socket/qlocalsocket.cpp
-#ifdef Q_OS_SYMBIAN
- #define STRINGIFY(x) #x
- #define TOSTRING(x) STRINGIFY(x)
- #define SRCDIR "C:/Private/" TOSTRING(SYMBIAN_SRCDIR_UID) "/"
-#endif
-Q_DECLARE_METATYPE(QLocalSocket::LocalSocketError)
-Q_DECLARE_METATYPE(QLocalSocket::LocalSocketState)
-
-class tst_QLocalSocket : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QLocalSocket();
- virtual ~tst_QLocalSocket();
-
-public Q_SLOTS:
- void init();
- void cleanup();
-
-private slots:
- // basics
- void server_basic();
- void server_connectionsCount();
- void socket_basic();
-
- void listen_data();
- void listen();
-
- void listenAndConnect_data();
- void listenAndConnect();
-
- void sendData_data();
- void sendData();
-
- void readBufferOverflow();
-
- void fullPath();
-
- void hitMaximumConnections_data();
- void hitMaximumConnections();
-
- void setSocketDescriptor();
-
- void threadedConnection_data();
- void threadedConnection();
-
- void processConnection_data();
- void processConnection();
-
- void longPath();
- void waitForDisconnect();
- void waitForDisconnectByServer();
-
- void removeServer();
-
- void recycleServer();
-
- void multiConnect();
- void writeOnlySocket();
- void writeToClientAndDisconnect();
- void debug();
- void bytesWrittenSignal();
- void syncDisconnectNotify();
- void asyncDisconnectNotify();
-
-#ifdef Q_OS_SYMBIAN
-private:
- void unlink(QString serverName);
-#endif
-};
-
-tst_QLocalSocket::tst_QLocalSocket()
-{
- if (!QFile::exists("lackey/lackey"
-#ifdef Q_OS_WIN
- ".exe"
-#endif
- ))
- qWarning() << "lackey executable doesn't exists!";
-}
-
-tst_QLocalSocket::~tst_QLocalSocket()
-{
-}
-
-void tst_QLocalSocket::init()
-{
- qRegisterMetaType<QLocalSocket::LocalSocketState>("QLocalSocket::LocalSocketState");
- qRegisterMetaType<QLocalSocket::LocalSocketError>("QLocalSocket::LocalSocketError");
-}
-
-void tst_QLocalSocket::cleanup()
-{
-}
-
-class LocalServer : public QLocalServer
-{
- Q_OBJECT
-
-public:
- LocalServer() : QLocalServer()
- {
- connect(this, SIGNAL(newConnection()), this, SLOT(slotNewConnection()));
- }
-
- bool listen(const QString &name)
- {
- removeServer(name);
- return QLocalServer::listen(name);
- }
-
- QList<int> hits;
-
-protected:
- void incomingConnection(quintptr socketDescriptor)
- {
- hits.append(socketDescriptor);
- QLocalServer::incomingConnection(socketDescriptor);
- }
-
-private slots:
- void slotNewConnection() {
- QVERIFY(!hits.isEmpty());
- QVERIFY(hasPendingConnections());
- }
-};
-
-class LocalSocket : public QLocalSocket
-{
- Q_OBJECT
-
-public:
- LocalSocket(QObject *parent = 0) : QLocalSocket(parent)
- {
- connect(this, SIGNAL(connected()),
- this, SLOT(slotConnected()));
- connect(this, SIGNAL(disconnected()),
- this, SLOT(slotDisconnected()));
- connect(this, SIGNAL(error(QLocalSocket::LocalSocketError)),
- this, SLOT(slotError(QLocalSocket::LocalSocketError)));
- connect(this, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)),
- this, SLOT(slotStateChanged(QLocalSocket::LocalSocketState)));
- connect(this, SIGNAL(readyRead()),
- this, SLOT(slotReadyRead()));
- }
-
-private slots:
- void slotConnected()
- {
- QCOMPARE(state(), QLocalSocket::ConnectedState);
- }
- void slotDisconnected()
- {
- QCOMPARE(state(), QLocalSocket::UnconnectedState);
- }
- void slotError(QLocalSocket::LocalSocketError newError)
- {
- QVERIFY(errorString() != "Unknown error");
- QCOMPARE(error(), newError);
- }
- void slotStateChanged(QLocalSocket::LocalSocketState newState)
- {
- QCOMPARE(state(), newState);
- }
- void slotReadyRead()
- {
- QVERIFY(bytesAvailable() > 0);
- }
-};
-
-// basic test make sure no segfaults and check default values
-void tst_QLocalSocket::server_basic()
-{
- LocalServer server;
- QSignalSpy spyNewConnection(&server, SIGNAL(newConnection()));
- server.close();
- QCOMPARE(server.errorString(), QString());
- QCOMPARE(server.hasPendingConnections(), false);
- QCOMPARE(server.isListening(), false);
- QCOMPARE(server.maxPendingConnections(), 30);
- QCOMPARE(server.nextPendingConnection(), (QLocalSocket*)0);
- QCOMPARE(server.serverName(), QString());
- QCOMPARE(server.fullServerName(), QString());
- QCOMPARE(server.serverError(), QAbstractSocket::UnknownSocketError);
- server.setMaxPendingConnections(20);
- bool timedOut = true;
- QCOMPARE(server.waitForNewConnection(3000, &timedOut), false);
- QVERIFY(!timedOut);
- QCOMPARE(server.listen(QString()), false);
-
- QCOMPARE(server.hits.count(), 0);
- QCOMPARE(spyNewConnection.count(), 0);
-}
-
-void tst_QLocalSocket::server_connectionsCount()
-{
- LocalServer server;
- server.setMaxPendingConnections(10);
- QCOMPARE(server.maxPendingConnections(), 10);
-}
-
-// basic test make sure no segfaults and check default values
-void tst_QLocalSocket::socket_basic()
-{
- LocalSocket socket;
- QSignalSpy spyConnected(&socket, SIGNAL(connected()));
- QSignalSpy spyDisconnected(&socket, SIGNAL(disconnected()));
- QSignalSpy spyError(&socket, SIGNAL(error(QLocalSocket::LocalSocketError)));
- QSignalSpy spyStateChanged(&socket, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)));
- QSignalSpy spyReadyRead(&socket, SIGNAL(readyRead()));
-
- QCOMPARE(socket.serverName(), QString());
- QCOMPARE(socket.fullServerName(), QString());
- socket.abort();
- QVERIFY(socket.bytesAvailable() == 0);
- QVERIFY(socket.bytesToWrite() == 0);
- QCOMPARE(socket.canReadLine(), false);
- socket.close();
- socket.disconnectFromServer();
- QCOMPARE(QLocalSocket::UnknownSocketError, socket.error());
- QVERIFY(socket.errorString() != QString());
- QCOMPARE(socket.flush(), false);
- QCOMPARE(socket.isValid(), false);
- QVERIFY(socket.readBufferSize() == 0);
- socket.setReadBufferSize(0);
- //QCOMPARE(socket.socketDescriptor(), -1);
- QCOMPARE(socket.state(), QLocalSocket::UnconnectedState);
- QCOMPARE(socket.waitForConnected(0), false);
- QCOMPARE(socket.waitForDisconnected(0), false);
- QCOMPARE(socket.waitForReadyRead(0), false);
-
- QCOMPARE(spyConnected.count(), 0);
- QCOMPARE(spyDisconnected.count(), 0);
- QCOMPARE(spyError.count(), 0);
- QCOMPARE(spyStateChanged.count(), 0);
- QCOMPARE(spyReadyRead.count(), 0);
-}
-
-void tst_QLocalSocket::listen_data()
-{
- QTest::addColumn<QString>("name");
- QTest::addColumn<bool>("canListen");
- QTest::addColumn<bool>("close");
- QTest::newRow("null") << QString() << false << false;
- QTest::newRow("tst_localsocket") << "tst_localsocket" << true << true;
- QTest::newRow("tst_localsocket") << "tst_localsocket" << true << false;
-}
-
-// start a server that listens, but don't connect a socket, make sure everything is in order
-void tst_QLocalSocket::listen()
-{
- LocalServer server;
- QSignalSpy spyNewConnection(&server, SIGNAL(newConnection()));
-
- QFETCH(QString, name);
-#ifdef Q_OS_SYMBIAN
- unlink(name);
-#endif
- QFETCH(bool, canListen);
- QFETCH(bool, close);
- QVERIFY2((server.listen(name) == canListen), server.errorString().toLatin1().constData());
-
- // test listening
- QCOMPARE(server.serverName(), name);
- QVERIFY(server.fullServerName().contains(name));
- QCOMPARE(server.isListening(), canListen);
- QCOMPARE(server.hasPendingConnections(), false);
- QCOMPARE(server.nextPendingConnection(), (QLocalSocket*)0);
- QCOMPARE(server.hits.count(), 0);
- QCOMPARE(spyNewConnection.count(), 0);
- if (canListen) {
- QVERIFY(server.errorString() == QString());
- QCOMPARE(server.serverError(), QAbstractSocket::UnknownSocketError);
- // already isListening
- QVERIFY(!server.listen(name));
- } else {
- QVERIFY(server.errorString() != QString());
- QCOMPARE(server.serverError(), QAbstractSocket::HostNotFoundError);
- }
- QCOMPARE(server.maxPendingConnections(), 30);
- bool timedOut = false;
- QCOMPARE(server.waitForNewConnection(3000, &timedOut), false);
- QCOMPARE(timedOut, canListen);
- if (close)
- server.close();
-}
-
-void tst_QLocalSocket::listenAndConnect_data()
-{
- QTest::addColumn<QString>("name");
- QTest::addColumn<bool>("canListen");
- QTest::addColumn<int>("connections");
- for (int i = 0; i < 3; ++i) {
- int connections = i;
- if (i == 2)
- connections = 5;
- QTest::newRow(QString("null %1").arg(i).toLatin1()) << QString() << false << connections;
- QTest::newRow(QString("tst_localsocket %1").arg(i).toLatin1()) << "tst_localsocket" << true << connections;
- }
-}
-
-void tst_QLocalSocket::listenAndConnect()
-{
- LocalServer server;
- QSignalSpy spyNewConnection(&server, SIGNAL(newConnection()));
-
- QFETCH(QString, name);
- QFETCH(bool, canListen);
-#ifdef Q_OS_SYMBIAN
- unlink(name);
-#endif
- QCOMPARE(server.listen(name), canListen);
- QTest::qWait(1000);
- //QVERIFY(!server.errorString().isEmpty());
- QCOMPARE(server.serverError(),
- canListen ? QAbstractSocket::UnknownSocketError : QAbstractSocket::HostNotFoundError);
-
- // test creating connection(s)
- QFETCH(int, connections);
- QList<QLocalSocket*> sockets;
- for (int i = 0; i < connections; ++i) {
- LocalSocket *socket = new LocalSocket;
-
- QSignalSpy spyConnected(socket, SIGNAL(connected()));
- QSignalSpy spyDisconnected(socket, SIGNAL(disconnected()));
- QSignalSpy spyError(socket, SIGNAL(error(QLocalSocket::LocalSocketError)));
- QSignalSpy spyStateChanged(socket, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)));
- QSignalSpy spyReadyRead(socket, SIGNAL(readyRead()));
-
- socket->connectToServer(name);
-#if defined(QT_LOCALSOCKET_TCP)
- QTest::qWait(250);
-#endif
-
- QCOMPARE(socket->serverName(), name);
- QVERIFY(socket->fullServerName().contains(name));
- sockets.append(socket);
- if (canListen) {
- QVERIFY(socket->waitForConnected());
- QVERIFY(socket->isValid());
- QCOMPARE(socket->errorString(), QString("Unknown error"));
- QCOMPARE(socket->error(), QLocalSocket::UnknownSocketError);
- QCOMPARE(socket->state(), QLocalSocket::ConnectedState);
- //QVERIFY(socket->socketDescriptor() != -1);
- QCOMPARE(spyError.count(), 0);
- } else {
- QVERIFY(socket->errorString() != QString());
- QVERIFY(socket->error() != QLocalSocket::UnknownSocketError);
- QCOMPARE(socket->state(), QLocalSocket::UnconnectedState);
- //QVERIFY(socket->socketDescriptor() == -1);
- QCOMPARE(qVariantValue<QLocalSocket::LocalSocketError>(spyError.first()[0]),
- QLocalSocket::ServerNotFoundError);
- }
-
- QVERIFY(socket->bytesAvailable() == 0);
- QVERIFY(socket->bytesToWrite() == 0);
- QCOMPARE(socket->canReadLine(), false);
- QCOMPARE(socket->flush(), false);
- QCOMPARE(socket->isValid(), canListen);
- QCOMPARE(socket->readBufferSize(), (qint64)0);
- QCOMPARE(socket->waitForConnected(0), canListen);
- QCOMPARE(socket->waitForReadyRead(0), false);
-
- QTRY_COMPARE(spyConnected.count(), canListen ? 1 : 0);
- QCOMPARE(spyDisconnected.count(), 0);
-
- // error signals
- QVERIFY(spyError.count() >= 0);
- if (canListen) {
- if (spyError.count() > 0)
- QCOMPARE(qVariantValue<QLocalSocket::LocalSocketError>(spyError.first()[0]),
- QLocalSocket::SocketTimeoutError);
- } else {
- QCOMPARE(qVariantValue<QLocalSocket::LocalSocketError>(spyError.first()[0]),
- QLocalSocket::ServerNotFoundError);
- }
-
- // Check first and last state
- QCOMPARE(qVariantValue<QLocalSocket::LocalSocketState>(spyStateChanged.first()[0]),
- QLocalSocket::ConnectingState);
-#if 0
- for (int j = 0; j < spyStateChanged.count(); ++j) {
- QLocalSocket::LocalSocketState s;
- s = qVariantValue<QLocalSocket::LocalSocketState>(spyStateChanged.at(j).at(0));
- qDebug() << s;
- }
-#endif
- if (canListen)
- QCOMPARE(qVariantValue<QLocalSocket::LocalSocketState>(spyStateChanged.last()[0]),
- QLocalSocket::ConnectedState);
- QCOMPARE(spyStateChanged.count(), 2);
- QCOMPARE(spyReadyRead.count(), 0);
-
- bool timedOut = true;
- QCOMPARE(server.waitForNewConnection(3000, &timedOut), canListen);
- QVERIFY(!timedOut);
- QCOMPARE(server.hasPendingConnections(), canListen);
- QCOMPARE(server.isListening(), canListen);
- // NOTE: socket disconnecting is not tested here
-
- // server checks post connection
- if (canListen) {
- QCOMPARE(server.serverName(), name);
- QVERIFY(server.fullServerName().contains(name));
- QVERIFY(server.nextPendingConnection() != (QLocalSocket*)0);
- QTRY_COMPARE(server.hits.count(), i + 1);
- QCOMPARE(spyNewConnection.count(), i + 1);
- QVERIFY(server.errorString() == QString());
- QCOMPARE(server.serverError(), QAbstractSocket::UnknownSocketError);
- } else {
- QVERIFY(server.serverName().isEmpty());
- QVERIFY(server.fullServerName().isEmpty());
- QVERIFY(server.nextPendingConnection() == (QLocalSocket*)0);
- QCOMPARE(spyNewConnection.count(), 0);
- QCOMPARE(server.hits.count(), 0);
- QVERIFY(server.errorString() != QString());
- QCOMPARE(server.serverError(), QAbstractSocket::HostNotFoundError);
- }
- }
- qDeleteAll(sockets.begin(), sockets.end());
-
- server.close();
-
- QCOMPARE(server.hits.count(), (canListen ? connections : 0));
- QCOMPARE(spyNewConnection.count(), (canListen ? connections : 0));
-}
-
-void tst_QLocalSocket::sendData_data()
-{
- listenAndConnect_data();
-}
-
-void tst_QLocalSocket::sendData()
-{
- QFETCH(QString, name);
-#ifdef Q_OS_SYMBIAN
- unlink(name);
-#endif
- QFETCH(bool, canListen);
-
- LocalServer server;
- QSignalSpy spy(&server, SIGNAL(newConnection()));
-
- QCOMPARE(server.listen(name), canListen);
-
- LocalSocket socket;
- QSignalSpy spyConnected(&socket, SIGNAL(connected()));
- QSignalSpy spyDisconnected(&socket, SIGNAL(disconnected()));
- QSignalSpy spyError(&socket, SIGNAL(error(QLocalSocket::LocalSocketError)));
- QSignalSpy spyStateChanged(&socket, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)));
- QSignalSpy spyReadyRead(&socket, SIGNAL(readyRead()));
-
- // test creating a connection
- socket.connectToServer(name);
- bool timedOut = true;
-
- QCOMPARE(server.waitForNewConnection(3000, &timedOut), canListen);
-
-#if defined(QT_LOCALSOCKET_TCP)
- QTest::qWait(250);
-#endif
- QVERIFY(!timedOut);
- QCOMPARE(spyConnected.count(), canListen ? 1 : 0);
- QCOMPARE(socket.state(), canListen ? QLocalSocket::ConnectedState : QLocalSocket::UnconnectedState);
-
- // test sending/receiving data
- if (server.hasPendingConnections()) {
- QString testLine = "test";
-#ifdef Q_OS_SYMBIAN
- for (int i = 0; i < 25 * 1024; ++i)
-#else
- for (int i = 0; i < 50000; ++i)
-#endif
- testLine += "a";
- QLocalSocket *serverSocket = server.nextPendingConnection();
- QVERIFY(serverSocket);
- QCOMPARE(serverSocket->state(), QLocalSocket::ConnectedState);
- QTextStream out(serverSocket);
- QTextStream in(&socket);
- out << testLine << endl;
- bool wrote = serverSocket->waitForBytesWritten(3000);
-
- if (!socket.canReadLine())
- QVERIFY(socket.waitForReadyRead());
-
- QVERIFY(socket.bytesAvailable() >= 0);
- QCOMPARE(socket.bytesToWrite(), (qint64)0);
- QCOMPARE(socket.flush(), false);
- QCOMPARE(socket.isValid(), canListen);
- QCOMPARE(socket.readBufferSize(), (qint64)0);
- QCOMPARE(spyReadyRead.count(), 1);
-
- QVERIFY(testLine.startsWith(in.readLine()));
-
- QVERIFY(wrote || serverSocket->waitForBytesWritten(1000));
-
- QCOMPARE(serverSocket->errorString(), QString("Unknown error"));
- QCOMPARE(socket.errorString(), QString("Unknown error"));
- }
-
- socket.disconnectFromServer();
- QCOMPARE(spyConnected.count(), canListen ? 1 : 0);
- QCOMPARE(spyDisconnected.count(), canListen ? 1 : 0);
- QCOMPARE(spyError.count(), canListen ? 0 : 1);
- QCOMPARE(spyStateChanged.count(), canListen ? 4 : 2);
- QCOMPARE(spyReadyRead.count(), canListen ? 1 : 0);
-
- server.close();
-
- QCOMPARE(server.hits.count(), (canListen ? 1 : 0));
- QCOMPARE(spy.count(), (canListen ? 1 : 0));
-}
-
-void tst_QLocalSocket::readBufferOverflow()
-{
- const int readBufferSize = 128;
- const int dataBufferSize = readBufferSize * 2;
- const QString serverName = QLatin1String("myPreciousTestServer");
- LocalServer server;
- server.listen(serverName);
- QVERIFY(server.isListening());
-
- LocalSocket client;
- client.setReadBufferSize(readBufferSize);
- client.connectToServer(serverName);
-
- bool timedOut = true;
- QVERIFY(server.waitForNewConnection(3000, &timedOut));
- QVERIFY(!timedOut);
-
- QCOMPARE(client.state(), QLocalSocket::ConnectedState);
- QVERIFY(server.hasPendingConnections());
-
- QLocalSocket* serverSocket = server.nextPendingConnection();
- char buffer[dataBufferSize];
- memset(buffer, 0, dataBufferSize);
- serverSocket->write(buffer, dataBufferSize);
- serverSocket->waitForBytesWritten();
-
- // wait until the first 128 bytes are ready to read
- QVERIFY(client.waitForReadyRead());
- QCOMPARE(client.read(buffer, readBufferSize), qint64(readBufferSize));
- // wait until the second 128 bytes are ready to read
- QVERIFY(client.waitForReadyRead());
- QCOMPARE(client.read(buffer, readBufferSize), qint64(readBufferSize));
- // no more bytes available
- QVERIFY(client.bytesAvailable() == 0);
-}
-
-// QLocalSocket/Server can take a name or path, check that it works as expected
-void tst_QLocalSocket::fullPath()
-{
- QLocalServer server;
- QString name = "qlocalsocket_pathtest";
-#if defined(Q_OS_SYMBIAN)
- QString path = "";
-#elif defined(QT_LOCALSOCKET_TCP)
- QString path = "QLocalServer";
-#elif defined(Q_OS_WIN)
- QString path = "\\\\.\\pipe\\";
-#else
- QString path = "/tmp";
-#endif
- QString serverName = path + '/' + name;
- QVERIFY2(server.listen(serverName), server.errorString().toLatin1().constData());
- QCOMPARE(server.serverName(), serverName);
- QCOMPARE(server.fullServerName(), serverName);
-
- LocalSocket socket;
- socket.connectToServer(serverName);
-
- QCOMPARE(socket.serverName(), serverName);
- QCOMPARE(socket.fullServerName(), serverName);
- socket.disconnectFromServer();
-#ifdef QT_LOCALSOCKET_TCP
- QTest::qWait(250);
-#endif
- QCOMPARE(socket.serverName(), QString());
- QCOMPARE(socket.fullServerName(), QString());
-}
-
-void tst_QLocalSocket::hitMaximumConnections_data()
-{
- QTest::addColumn<int>("max");
- QTest::newRow("none") << 0;
- QTest::newRow("1") << 1;
- QTest::newRow("3") << 3;
-}
-
-void tst_QLocalSocket::hitMaximumConnections()
-{
- QFETCH(int, max);
- LocalServer server;
- QString name = "tst_localsocket";
-#ifdef Q_OS_SYMBIAN
- unlink(name);
-#endif
- server.setMaxPendingConnections(max);
- QVERIFY2(server.listen(name), server.errorString().toLatin1().constData());
- int connections = server.maxPendingConnections() + 1;
- QList<QLocalSocket*> sockets;
- for (int i = 0; i < connections; ++i) {
- LocalSocket *socket = new LocalSocket;
- sockets.append(socket);
- socket->connectToServer(name);
- }
- bool timedOut = true;
- QVERIFY(server.waitForNewConnection(3000, &timedOut));
- QVERIFY(!timedOut);
- QVERIFY(server.hits.count() > 0);
- qDeleteAll(sockets.begin(), sockets.end());
-}
-
-// check that state and mode are kept
-void tst_QLocalSocket::setSocketDescriptor()
-{
- LocalSocket socket;
- quintptr minusOne = -1;
- socket.setSocketDescriptor(minusOne, QLocalSocket::ConnectingState, QIODevice::Append);
- QCOMPARE(socket.socketDescriptor(), minusOne);
- QCOMPARE(socket.state(), QLocalSocket::ConnectingState);
- QVERIFY((socket.openMode() & QIODevice::Append) != 0);
-}
-
-class Client : public QThread
-{
-
-public:
- void run()
- {
- QString testLine = "test";
- LocalSocket socket;
- QSignalSpy spyReadyRead(&socket, SIGNAL(readyRead()));
- socket.connectToServer("qlocalsocket_threadtest");
- QVERIFY(socket.waitForConnected(1000));
-
- // We should *not* have this signal yet!
- QCOMPARE(spyReadyRead.count(), 0);
- socket.waitForReadyRead();
- QCOMPARE(spyReadyRead.count(), 1);
- QTextStream in(&socket);
- QCOMPARE(in.readLine(), testLine);
- socket.close();
- }
-};
-
-class Server : public QThread
-{
-
-public:
- int clients;
- QMutex mutex;
- QWaitCondition wc;
- void run()
- {
- QString testLine = "test";
- LocalServer server;
- server.setMaxPendingConnections(10);
- QVERIFY2(server.listen("qlocalsocket_threadtest"),
- server.errorString().toLatin1().constData());
- mutex.lock();
- wc.wakeAll();
- mutex.unlock();
- int done = clients;
- while (done > 0) {
- bool timedOut = true;
- QVERIFY(server.waitForNewConnection(7000, &timedOut));
- QVERIFY(!timedOut);
- QLocalSocket *serverSocket = server.nextPendingConnection();
- QVERIFY(serverSocket);
- QTextStream out(serverSocket);
- out << testLine << endl;
- QCOMPARE(serverSocket->state(), QLocalSocket::ConnectedState);
- QVERIFY2(serverSocket->waitForBytesWritten(), serverSocket->errorString().toLatin1().constData());
- QCOMPARE(serverSocket->errorString(), QString("Unknown error"));
- --done;
- delete serverSocket;
- }
- QCOMPARE(server.hits.count(), clients);
- }
-};
-
-void tst_QLocalSocket::threadedConnection_data()
-{
- QTest::addColumn<int>("threads");
- QTest::newRow("1 client") << 1;
- QTest::newRow("2 clients") << 2;
- QTest::newRow("5 clients") << 5;
-#ifndef Q_OS_WINCE
- QTest::newRow("10 clients") << 10;
- QTest::newRow("20 clients") << 20;
-#endif
-}
-
-void tst_QLocalSocket::threadedConnection()
-{
-#ifdef Q_OS_SYMBIAN
- unlink("qlocalsocket_threadtest");
-#endif
-
- QFETCH(int, threads);
- Server server;
-#if defined(Q_OS_SYMBIAN)
- server.setStackSize(0x14000);
-#endif
- server.clients = threads;
- server.mutex.lock();
- server.start();
- server.wc.wait(&server.mutex);
-
- QList<Client*> clients;
- for (int i = 0; i < threads; ++i) {
- clients.append(new Client());
-#if defined(Q_OS_SYMBIAN)
- clients.last()->setStackSize(0x14000);
-#endif
- clients.last()->start();
- }
-
- server.wait();
- while (!clients.isEmpty()) {
- QVERIFY(clients.first()->wait(3000));
- delete clients.takeFirst();
- }
-}
-
-void tst_QLocalSocket::processConnection_data()
-{
- QTest::addColumn<int>("processes");
- QTest::newRow("1 client") << 1;
-#ifndef Q_OS_WIN
- QTest::newRow("2 clients") << 2;
- QTest::newRow("5 clients") << 5;
-#endif
- QTest::newRow("30 clients") << 30;
-}
-
-/*!
- Create external processes that produce and consume.
- */
-void tst_QLocalSocket::processConnection()
-{
-#if defined(QT_NO_PROCESS) || defined(Q_CC_NOKIAX86)
- QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
-#else
- QFETCH(int, processes);
- QStringList serverArguments = QStringList() << SRCDIR "lackey/scripts/server.js" << QString::number(processes);
- QProcess producer;
- producer.setProcessChannelMode(QProcess::ForwardedChannels);
-#ifdef Q_WS_QWS
- serverArguments << "-qws";
-#endif
- QList<QProcess*> consumers;
- producer.start("lackey/lackey", serverArguments);
- QVERIFY(producer.waitForStarted(-1));
- QTest::qWait(2000);
- for (int i = 0; i < processes; ++i) {
- QStringList arguments = QStringList() << SRCDIR "lackey/scripts/client.js";
-#ifdef Q_WS_QWS
- arguments << "-qws";
-#endif
- QProcess *p = new QProcess;
- p->setProcessChannelMode(QProcess::ForwardedChannels);
- consumers.append(p);
- p->start("lackey/lackey", arguments);
- }
-
- while (!consumers.isEmpty()) {
- consumers.first()->waitForFinished(20000);
- QCOMPARE(consumers.first()->exitStatus(), QProcess::NormalExit);
- QCOMPARE(consumers.first()->exitCode(), 0);
- QProcess *consumer = consumers.takeFirst();
- consumer->terminate();
- delete consumer;
- }
- producer.waitForFinished(15000);
-#endif
-}
-
-void tst_QLocalSocket::longPath()
-{
-#ifndef Q_OS_WIN
- QString name;
- for (int i = 0; i < 256; ++i)
- name += 'a';
- LocalServer server;
- QVERIFY(!server.listen(name));
-
- LocalSocket socket;
- socket.connectToServer(name);
- QCOMPARE(socket.state(), QLocalSocket::UnconnectedState);
-#endif
-}
-
-void tst_QLocalSocket::waitForDisconnect()
-{
- QString name = "tst_localsocket";
-#ifdef Q_OS_SYMBIAN
- unlink(name);
-#endif
- LocalServer server;
- QVERIFY(server.listen(name));
- LocalSocket socket;
- socket.connectToServer(name);
- QVERIFY(socket.waitForConnected(3000));
- QVERIFY(server.waitForNewConnection(3000));
- QLocalSocket *serverSocket = server.nextPendingConnection();
- QVERIFY(serverSocket);
- socket.disconnectFromServer();
- QTime timer;
- timer.start();
- QVERIFY(serverSocket->waitForDisconnected(3000));
- QVERIFY(timer.elapsed() < 2000);
-}
-
-void tst_QLocalSocket::waitForDisconnectByServer()
-{
- QString name = "tst_localsocket";
- LocalServer server;
- QVERIFY(server.listen(name));
- LocalSocket socket;
- QSignalSpy spy(&socket, SIGNAL(disconnected()));
- QVERIFY(spy.isValid());
- socket.connectToServer(name);
- QVERIFY(socket.waitForConnected(3000));
- QVERIFY(server.waitForNewConnection(3000));
- QLocalSocket *serverSocket = server.nextPendingConnection();
- QVERIFY(serverSocket);
- serverSocket->close();
- QVERIFY(serverSocket->state() == QLocalSocket::UnconnectedState);
- QVERIFY(socket.waitForDisconnected(3000));
- QCOMPARE(spy.count(), 1);
-}
-
-void tst_QLocalSocket::removeServer()
-{
- // this is a hostile takeover, but recovering from a crash results in the same
- QLocalServer server, server2;
- QVERIFY(QLocalServer::removeServer("cleanuptest"));
- QVERIFY(server.listen("cleanuptest"));
-#ifndef Q_OS_WIN
- // on Windows, there can be several sockets listening on the same pipe
- // on Unix, there can only be one socket instance
- QVERIFY(! server2.listen("cleanuptest"));
-#endif
- QVERIFY(QLocalServer::removeServer("cleanuptest"));
- QVERIFY(server2.listen("cleanuptest"));
-}
-
-void tst_QLocalSocket::recycleServer()
-{
-#ifdef Q_OS_SYMBIAN
- unlink("recycletest1");
-#endif
-
- QLocalServer server;
- QLocalSocket client;
-
- QVERIFY(server.listen("recycletest1"));
- client.connectToServer("recycletest1");
- QVERIFY(client.waitForConnected(201));
- QVERIFY(server.waitForNewConnection(201));
- QVERIFY(server.nextPendingConnection() != 0);
-
- server.close();
- client.disconnectFromServer();
- qApp->processEvents();
-
- QVERIFY(server.listen("recycletest2"));
- client.connectToServer("recycletest2");
- QVERIFY(client.waitForConnected(202));
- QVERIFY(server.waitForNewConnection(202));
- QVERIFY(server.nextPendingConnection() != 0);
-}
-
-void tst_QLocalSocket::multiConnect()
-{
- QLocalServer server;
- QLocalSocket client1;
- QLocalSocket client2;
- QLocalSocket client3;
-
- QVERIFY(server.listen("multiconnect"));
-
- client1.connectToServer("multiconnect");
- client2.connectToServer("multiconnect");
- client3.connectToServer("multiconnect");
-
- QVERIFY(client1.waitForConnected(201));
- QVERIFY(client2.waitForConnected(202));
- QVERIFY(client3.waitForConnected(203));
-
- QVERIFY(server.waitForNewConnection(201));
- QVERIFY(server.nextPendingConnection() != 0);
- QVERIFY(server.waitForNewConnection(202));
- QVERIFY(server.nextPendingConnection() != 0);
- QVERIFY(server.waitForNewConnection(203));
- QVERIFY(server.nextPendingConnection() != 0);
-}
-
-void tst_QLocalSocket::writeOnlySocket()
-{
- QLocalServer server;
-#ifdef Q_OS_SYMBIAN
- unlink("writeOnlySocket");
-#endif
- QVERIFY(server.listen("writeOnlySocket"));
-
- QLocalSocket client;
- client.connectToServer("writeOnlySocket", QIODevice::WriteOnly);
- QVERIFY(client.waitForConnected());
-#if defined(Q_OS_SYMBIAN)
- QTest::qWait(250);
-#endif
- QVERIFY(server.waitForNewConnection(200));
- QLocalSocket* serverSocket = server.nextPendingConnection();
- QVERIFY(serverSocket);
-
- QCOMPARE(client.bytesAvailable(), qint64(0));
- QCOMPARE(client.state(), QLocalSocket::ConnectedState);
-}
-
-void tst_QLocalSocket::writeToClientAndDisconnect()
-{
-#ifdef Q_OS_SYMBIAN
- unlink("writeAndDisconnectServer");
-#endif
-
- QLocalServer server;
- QLocalSocket client;
- QSignalSpy readChannelFinishedSpy(&client, SIGNAL(readChannelFinished()));
-
- QVERIFY(server.listen("writeAndDisconnectServer"));
- client.connectToServer("writeAndDisconnectServer");
- QVERIFY(client.waitForConnected(200));
- QVERIFY(server.waitForNewConnection(200));
- QLocalSocket* clientSocket = server.nextPendingConnection();
- QVERIFY(clientSocket);
-
- char buffer[100];
- memset(buffer, 0, sizeof(buffer));
- QCOMPARE(clientSocket->write(buffer, sizeof(buffer)), (qint64)sizeof(buffer));
- clientSocket->waitForBytesWritten();
- clientSocket->close();
- server.close();
-
- QTRY_COMPARE(readChannelFinishedSpy.count(), 1);
- QCOMPARE(client.read(buffer, sizeof(buffer)), (qint64)sizeof(buffer));
- client.waitForDisconnected();
- QCOMPARE(client.state(), QLocalSocket::UnconnectedState);
-}
-
-void tst_QLocalSocket::debug()
-{
- // Make sure this compiles
- qDebug() << QLocalSocket::ConnectionRefusedError << QLocalSocket::UnconnectedState;
-}
-
-class WriteThread : public QThread
-{
-Q_OBJECT
-public:
- void run() {
- QLocalSocket socket;
- socket.connectToServer("qlocalsocket_readyread");
-
- if (!socket.waitForConnected(3000))
- exec();
- connect(&socket, SIGNAL(bytesWritten(qint64)),
- this, SLOT(bytesWritten(qint64)), Qt::QueuedConnection);
- socket.write("testing\n");
- exec();
- }
-public slots:
- void bytesWritten(qint64) {
- exit();
- }
-
-private:
-};
-
-/*
- Tests the emission of the bytesWritten(qint64)
- signal.
-
- Create a thread that will write to a socket.
- If the bytesWritten(qint64) signal is generated,
- the slot connected to it will exit the thread,
- indicating test success.
-
-*/
-void tst_QLocalSocket::bytesWrittenSignal()
-{
- QLocalServer server;
- QVERIFY(server.listen("qlocalsocket_readyread"));
- WriteThread writeThread;
- writeThread.start();
- bool timedOut = false;
- QVERIFY(server.waitForNewConnection(3000, &timedOut));
- QVERIFY(!timedOut);
- QTest::qWait(2000);
- QVERIFY(writeThread.wait(2000));
-}
-
-void tst_QLocalSocket::syncDisconnectNotify()
-{
-#ifdef Q_OS_SYMBIAN
- unlink("syncDisconnectNotify");
-#endif
-
- QLocalServer server;
- QVERIFY(server.listen("syncDisconnectNotify"));
- QLocalSocket client;
- client.connectToServer("syncDisconnectNotify");
- QVERIFY(server.waitForNewConnection());
- QLocalSocket* serverSocket = server.nextPendingConnection();
- QVERIFY(serverSocket);
- delete serverSocket;
- QCOMPARE(client.waitForReadyRead(), false);
-}
-
-void tst_QLocalSocket::asyncDisconnectNotify()
-{
-#ifdef Q_OS_SYMBIAN
- unlink("asyncDisconnectNotify");
-#endif
-
- QLocalServer server;
- QVERIFY(server.listen("asyncDisconnectNotify"));
- QLocalSocket client;
- QSignalSpy disconnectedSpy(&client, SIGNAL(disconnected()));
- client.connectToServer("asyncDisconnectNotify");
- QVERIFY(server.waitForNewConnection());
- QLocalSocket* serverSocket = server.nextPendingConnection();
- QVERIFY(serverSocket);
- delete serverSocket;
- QTRY_VERIFY(!disconnectedSpy.isEmpty());
-}
-
-#ifdef Q_OS_SYMBIAN
-void tst_QLocalSocket::unlink(QString name)
-{
- if(name.length() == 0)
- return;
-
- QString fullName;
- // determine the full server path
- if (name.startsWith(QLatin1Char('/'))) {
- fullName = name;
- } else {
- fullName = QDir::cleanPath(QDir::tempPath());
- fullName += QLatin1Char('/') + name;
- fullName = QDir::toNativeSeparators(fullName);
- }
-
- int result = ::unlink(fullName.toUtf8().data());
-
- if(result != 0) {
- qWarning() << "Unlinking " << fullName << " failed with " << strerror(errno);
- }
-}
-#endif
-QTEST_MAIN(tst_QLocalSocket)
-#include "tst_qlocalsocket.moc"
-
diff --git a/tests/auto/qmacstyle/qmacstyle.pro b/tests/auto/qmacstyle/qmacstyle.pro
index fb23a52c0f..5aad7368c6 100644
--- a/tests/auto/qmacstyle/qmacstyle.pro
+++ b/tests/auto/qmacstyle/qmacstyle.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qmacstyle.cpp
diff --git a/tests/auto/qmacstyle/tst_qmacstyle.cpp b/tests/auto/qmacstyle/tst_qmacstyle.cpp
index 6e03afd575..3c2f71184d 100644
--- a/tests/auto/qmacstyle/tst_qmacstyle.cpp
+++ b/tests/auto/qmacstyle/tst_qmacstyle.cpp
@@ -41,7 +41,7 @@
#include <QtTest/QtTest>
-#include <QtGui>
+#include <QtWidgets>
#include <qmacstyle_mac.h>
diff --git a/tests/auto/qmainwindow/qmainwindow.pro b/tests/auto/qmainwindow/qmainwindow.pro
index 038686e18c..09633d0e32 100644
--- a/tests/auto/qmainwindow/qmainwindow.pro
+++ b/tests/auto/qmainwindow/qmainwindow.pro
@@ -1,6 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
SOURCES += tst_qmainwindow.cpp
-QT += core-private gui-private
# Symbian toolchain does not support correct include semantics
symbian:INCPATH+=..\\..\\..\\include\\QtGui\\private
diff --git a/tests/auto/qmake/qmake.pro b/tests/auto/qmake/qmake.pro
deleted file mode 100644
index d0faa872b8..0000000000
--- a/tests/auto/qmake/qmake.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-HEADERS += testcompiler.h
-SOURCES += tst_qmake.cpp testcompiler.cpp
-QT -= gui
-
-cross_compile: DEFINES += QMAKE_CROSS_COMPILED
-
-
diff --git a/tests/auto/qmdiarea/qmdiarea.pro b/tests/auto/qmdiarea/qmdiarea.pro
index e16c679b3a..6a12152fcc 100644
--- a/tests/auto/qmdiarea/qmdiarea.pro
+++ b/tests/auto/qmdiarea/qmdiarea.pro
@@ -1,6 +1,6 @@
load(qttest_p4)
-QT += gui-private
+QT += gui-private widgets
INCLUDEPATH += .
SOURCES += tst_qmdiarea.cpp
diff --git a/tests/auto/qmdisubwindow/qmdisubwindow.pro b/tests/auto/qmdisubwindow/qmdisubwindow.pro
index 00a1e51fbe..5c5bd525df 100644
--- a/tests/auto/qmdisubwindow/qmdisubwindow.pro
+++ b/tests/auto/qmdisubwindow/qmdisubwindow.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
INCLUDEPATH += .
SOURCES += tst_qmdisubwindow.cpp
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
diff --git a/tests/auto/qmdisubwindow/tst_qmdisubwindow.cpp b/tests/auto/qmdisubwindow/tst_qmdisubwindow.cpp
index 7296f3433b..0aa4aa192f 100644
--- a/tests/auto/qmdisubwindow/tst_qmdisubwindow.cpp
+++ b/tests/auto/qmdisubwindow/tst_qmdisubwindow.cpp
@@ -77,7 +77,7 @@ QT_END_NAMESPACE
static inline bool tabAllWidgets()
{
-#if !defined(Q_WS_WIN)
+#if !defined(Q_OS_WIN)
if (qApp->style()->inherits("QMacStyle"))
return qt_tab_all_widgets;
#endif
diff --git a/tests/auto/qmenu/qmenu.pro b/tests/auto/qmenu/qmenu.pro
index 63451a11b6..1fc1a7ff9d 100644
--- a/tests/auto/qmenu/qmenu.pro
+++ b/tests/auto/qmenu/qmenu.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qmenu.cpp
qpa:contains(QT_CONFIG,xcb):CONFIG+=insignificant_test # QTBUG-21100, unstably fails
diff --git a/tests/auto/qmenubar/qmenubar.pro b/tests/auto/qmenubar/qmenubar.pro
index ba2dea8eb7..73c2545710 100644
--- a/tests/auto/qmenubar/qmenubar.pro
+++ b/tests/auto/qmenubar/qmenubar.pro
@@ -1,2 +1,3 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qmenubar.cpp
diff --git a/tests/auto/qmenubar/tst_qmenubar.cpp b/tests/auto/qmenubar/tst_qmenubar.cpp
index e1b7f1ff9b..3c0501f679 100644
--- a/tests/auto/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/qmenubar/tst_qmenubar.cpp
@@ -347,8 +347,8 @@ void tst_QMenuBar::accel()
// shortcuts won't work unless the window is active
QTRY_VERIFY( QApplication::activeWindow() );
-// QTest::keyClick( 0, Qt::Key_A, AltKey );
- QTest::keyClick( 0, Qt::Key_A, Qt::ControlModifier );
+// QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_A, AltKey );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_A, Qt::ControlModifier );
QTest::qWait(300);
QCOMPARE( last_accel_id, action );
@@ -362,7 +362,7 @@ void tst_QMenuBar::activatedCount()
// create a popup menu with menu items set the accelerators later...
initSimpleMenubar();
- QTest::keyClick( 0, Qt::Key_A, Qt::ControlModifier );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_A, Qt::ControlModifier );
//wait(5000);
QCOMPARE( activated_count, 2 ); //1 from the popupmenu and 1 from the menubar
}
@@ -576,7 +576,7 @@ void tst_QMenuBar::check_accelKeys()
initComplexMenubar();
// start with a bogus key that shouldn't trigger anything
- QTest::keyClick(0, Qt::Key_I, Qt::ControlModifier);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_I, Qt::ControlModifier);
QCOMPARE(menu1->selCount(), 0u);
QCOMPARE(menu2->selCount(), 0u);
QCOMPARE(menu3->selCount(), 0u);
@@ -586,7 +586,7 @@ void tst_QMenuBar::check_accelKeys()
QCOMPARE(item2_C->selCount(), 0u);
QCOMPARE(item2_D->selCount(), 0u);
- QTest::keyClick(0, Qt::Key_A, Qt::ControlModifier);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_A, Qt::ControlModifier);
QCOMPARE(menu1->selCount(), 0u);
QCOMPARE(menu2->selCount(), 0u);
QCOMPARE(menu3->selCount(), 0u);
@@ -596,7 +596,7 @@ void tst_QMenuBar::check_accelKeys()
QCOMPARE(item2_C->selCount(), 0u);
QCOMPARE(item2_D->selCount(), 0u);
- QTest::keyClick(0, Qt::Key_C, Qt::ControlModifier);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_C, Qt::ControlModifier);
QCOMPARE(menu1->selCount(), 0u);
QCOMPARE(menu2->selCount(), 0u);
QCOMPARE(menu3->selCount(), 0u);
@@ -606,7 +606,7 @@ void tst_QMenuBar::check_accelKeys()
QCOMPARE(item2_C->selCount(), 1u);
QCOMPARE(item2_D->selCount(), 0u);
- QTest::keyClick(0, Qt::Key_B, Qt::ControlModifier);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_B, Qt::ControlModifier);
QCOMPARE(menu1->selCount(), 0u);
QCOMPARE(menu2->selCount(), 0u);
QCOMPARE(menu3->selCount(), 0u);
@@ -616,7 +616,7 @@ void tst_QMenuBar::check_accelKeys()
QCOMPARE(item2_C->selCount(), 1u);
QCOMPARE(item2_D->selCount(), 0u);
- QTest::keyClick(0, Qt::Key_D, Qt::ControlModifier);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_D, Qt::ControlModifier);
QCOMPARE(menu1->selCount(), 0u);
QCOMPARE(menu2->selCount(), 0u);
QCOMPARE(menu3->selCount(), 0u);
@@ -626,7 +626,7 @@ void tst_QMenuBar::check_accelKeys()
QCOMPARE(item2_C->selCount(), 1u);
QCOMPARE(item2_D->selCount(), 1u);
- QTest::keyClick(0, Qt::Key_J, Qt::AltModifier);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_J, Qt::AltModifier);
QCOMPARE(menu1->selCount(), 0u);
QCOMPARE(menu2->selCount(), 0u);
QCOMPARE(menu3->selCount(), 1u);
@@ -646,7 +646,7 @@ void tst_QMenuBar::check_cursorKeys1()
initComplexMenubar();
// start with a ALT + 1 that activates the first popupmenu
- QTest::keyClick( 0, Qt::Key_1, Qt::AltModifier );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_1, Qt::AltModifier );
// the Popupmenu should be visible now
QCOMPARE(menu3->selCount(), 0u);
QCOMPARE(menu4->selCount(), 0u);
@@ -656,9 +656,9 @@ void tst_QMenuBar::check_cursorKeys1()
QCOMPARE(item2_D->selCount(), 0u);
// Simulate a cursor key down click
- QTest::keyClick( 0, Qt::Key_Down );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Down );
// and an Enter key
- QTest::keyClick( 0, Qt::Key_Enter );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Enter );
// Let's see if the correct slot is called...
QCOMPARE(menu3->selCount(), 0u);
QCOMPARE(menu4->selCount(), 0u);
@@ -677,15 +677,15 @@ void tst_QMenuBar::check_cursorKeys2()
initComplexMenubar();
// select popupmenu2
- QTest::keyClick( 0, Qt::Key_2, Qt::AltModifier );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_2, Qt::AltModifier );
// Simulate some cursor keys
- QTest::keyClick( 0, Qt::Key_Left );
- QTest::keyClick( 0, Qt::Key_Down );
- QTest::keyClick( 0, Qt::Key_Right );
- QTest::keyClick( 0, Qt::Key_Down );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Left );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Down );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Right );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Down );
// and an Enter key
- QTest::keyClick( 0, Qt::Key_Enter );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Enter );
// Let's see if the correct slot is called...
QCOMPARE(menu3->selCount(), 0u);
QCOMPARE(menu4->selCount(), 0u);
@@ -707,13 +707,13 @@ void tst_QMenuBar::check_cursorKeys3()
initComplexMenubar();
// select Popupmenu 2
- QTest::keyClick( 0, Qt::Key_2, Qt::AltModifier );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_2, Qt::AltModifier );
// Simulate some keys
- QTest::keyClick( 0, Qt::Key_Left );
- QTest::keyClick( 0, Qt::Key_Down );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Left );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Down );
// and press ENTER
- QTest::keyClick( 0, Qt::Key_Enter );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Enter );
// Let's see if the correct slot is called...
QCOMPARE(menu3->selCount(), 0u);
QCOMPARE(menu4->selCount(), 0u);
@@ -738,15 +738,15 @@ void tst_QMenuBar::check_homeKey()
initComplexMenubar();
// select Popupmenu 2
- QTest::keyClick( 0, Qt::Key_2, Qt::AltModifier );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_2, Qt::AltModifier );
// Simulate some keys
- QTest::keyClick( 0, Qt::Key_Down );
- QTest::keyClick( 0, Qt::Key_Down );
- QTest::keyClick( 0, Qt::Key_Down );
- QTest::keyClick( 0, Qt::Key_Home );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Down );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Down );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Down );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Home );
// and press ENTER
- QTest::keyClick( 0, Qt::Key_Enter );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Enter );
// Let's see if the correct slot is called...
// QVERIFY2( item2_C->selCount() == 1, "Popupmenu should respond to a Home key" );
QCOMPARE(item2_C->selCount(), 1u);
@@ -776,12 +776,12 @@ void tst_QMenuBar::check_endKey()
initComplexMenubar();
// select Popupmenu 2
- QTest::keyClick( 0, Qt::Key_2, Qt::AltModifier );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_2, Qt::AltModifier );
// Simulate some keys
- QTest::keyClick( 0, Qt::Key_End );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_End );
// and press ENTER
- QTest::keyClick( 0, Qt::Key_Enter );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Enter );
// Let's see if the correct slot is called...
// QVERIFY2( item2_H->selCount() == 1, "Popupmenu should respond to an End key" );
QCOMPARE(item2_H->selCount(), 1u);//, "Popupmenu should respond to an End key");
@@ -814,12 +814,12 @@ void tst_QMenuBar::check_escKey()
QVERIFY( !pm2->isActiveWindow() );
// select Popupmenu 2
- QTest::keyClick( 0, Qt::Key_2, Qt::AltModifier );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_2, Qt::AltModifier );
QVERIFY( !pm1->isActiveWindow() );
QVERIFY( pm2->isActiveWindow() );
// If we press ESC, the popup should disappear
- QTest::keyClick( 0, Qt::Key_Escape );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Escape );
QVERIFY( !pm1->isActiveWindow() );
QVERIFY( !pm2->isActiveWindow() );
@@ -827,7 +827,7 @@ void tst_QMenuBar::check_escKey()
return;
// If we press Down the popupmenu should be active again
- QTest::keyClick( 0, Qt::Key_Down );
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Down );
QVERIFY( !pm1->isActiveWindow() );
QVERIFY( pm2->isActiveWindow() );
@@ -1255,13 +1255,13 @@ void tst_QMenuBar::taskQTBUG4965_escapeEaten()
menubar.setActiveAction(first);
QTRY_VERIFY(menu.isVisible());
QCOMPARE(menubar.activeAction(), first);
- QTest::keyClick(0, Qt::Key_Escape);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Escape);
QVERIFY(!menu.isVisible());
QTRY_VERIFY(menubar.hasFocus());
QCOMPARE(menubar.activeAction(), first);
- QTest::keyClick(0, Qt::Key_Escape);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Escape);
QVERIFY(!menubar.activeAction());
- QTest::keyClick(0, Qt::Key_Escape); //now the action should be triggered
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Escape); //now the action should be triggered
QTRY_VERIFY(!menubar.isVisible());
}
@@ -1278,9 +1278,9 @@ void tst_QMenuBar::taskQTBUG11823_crashwithInvisibleActions()
QApplication::setActiveWindow(&menubar);
menubar.setActiveAction(m);
QCOMPARE(menubar.activeAction(), m);
- QTest::keyClick(0, Qt::Key_Right);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Right);
QCOMPARE(menubar.activeAction(), a);
- QTest::keyClick(0, Qt::Key_Right);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Right);
QCOMPARE(menubar.activeAction(), m);
a->setVisible(false);
@@ -1288,7 +1288,7 @@ void tst_QMenuBar::taskQTBUG11823_crashwithInvisibleActions()
QCOMPARE(menubar.activeAction(), m); //the active action shouldn't have changed
//it used to crash here because the action is invisible
- QTest::keyClick(0, Qt::Key_Right);
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_Right);
QCOMPARE(menubar.activeAction(), m); //the active action shouldn't have changed
}
diff --git a/tests/auto/qmessagebox/qmessagebox.pro b/tests/auto/qmessagebox/qmessagebox.pro
index 1893c42a64..e3f6ddb1f6 100644
--- a/tests/auto/qmessagebox/qmessagebox.pro
+++ b/tests/auto/qmessagebox/qmessagebox.pro
@@ -1,6 +1,7 @@
load(qttest_p4)
TEMPLATE = app
TARGET = tst_qmessagebox
+QT += widgets
DEPENDPATH += .
INCLUDEPATH += .
diff --git a/tests/auto/qmessagebox/tst_qmessagebox.cpp b/tests/auto/qmessagebox/tst_qmessagebox.cpp
index 6b737681b1..12b6029a8f 100644
--- a/tests/auto/qmessagebox/tst_qmessagebox.cpp
+++ b/tests/auto/qmessagebox/tst_qmessagebox.cpp
@@ -525,8 +525,9 @@ void tst_QMessageBox::testSymbols()
button = QMessageBox::Escape;
button = QMessageBox::FlagMask;
- mb1.setText("Foo");
- QCOMPARE(mb1.text(), "Foo");
+ const QString text = QStringLiteral("Foo");
+ mb1.setText(text);
+ QCOMPARE(mb1.text(), text);
icon = mb1.icon();
QVERIFY(icon == QMessageBox::NoIcon);
@@ -537,26 +538,28 @@ void tst_QMessageBox::testSymbols()
mb1.setIconPixmap(iconPixmap);
QVERIFY(mb1.icon() == QMessageBox::NoIcon);
- QCOMPARE(mb1.buttonText(QMessageBox::Ok), "OK");
+ QCOMPARE(mb1.buttonText(QMessageBox::Ok), QLatin1String("OK"));
QCOMPARE(mb1.buttonText(QMessageBox::Cancel), QString());
QCOMPARE(mb1.buttonText(QMessageBox::Ok | QMessageBox::Default), QString());
- mb2.setButtonText(QMessageBox::Cancel, "Foo");
- mb2.setButtonText(QMessageBox::Ok, "Bar");
- mb2.setButtonText(QMessageBox::Ok | QMessageBox::Default, "Baz");
+ const QString button1 = QStringLiteral("Bar");
+ mb2.setButtonText(QMessageBox::Cancel, QStringLiteral("Foo"));
+ mb2.setButtonText(QMessageBox::Ok, button1);
+ mb2.setButtonText(QMessageBox::Ok | QMessageBox::Default, QStringLiteral("Baz"));
QCOMPARE(mb2.buttonText(QMessageBox::Cancel), QString());
- QCOMPARE(mb2.buttonText(QMessageBox::Ok), "Bar");
+ QCOMPARE(mb2.buttonText(QMessageBox::Ok), button1);
QVERIFY(mb3b.buttonText(QMessageBox::Yes).endsWith("Yes"));
QCOMPARE(mb3b.buttonText(QMessageBox::YesAll), QString());
QCOMPARE(mb3b.buttonText(QMessageBox::Ok), QString());
- mb3b.setButtonText(QMessageBox::Yes, "Blah");
- mb3b.setButtonText(QMessageBox::YesAll, "Zoo");
- mb3b.setButtonText(QMessageBox::Ok, "Zoo");
+ const QString button2 = QStringLiteral("Blah");
+ mb3b.setButtonText(QMessageBox::Yes, button2);
+ mb3b.setButtonText(QMessageBox::YesAll, QStringLiteral("Zoo"));
+ mb3b.setButtonText(QMessageBox::Ok, QStringLiteral("Zoo"));
- QCOMPARE(mb3b.buttonText(QMessageBox::Yes), "Blah");
+ QCOMPARE(mb3b.buttonText(QMessageBox::Yes), button2);
QCOMPARE(mb3b.buttonText(QMessageBox::YesAll), QString());
QCOMPARE(mb3b.buttonText(QMessageBox::Ok), QString());
diff --git a/tests/auto/qmetaobject/qmetaobject.pro b/tests/auto/qmetaobject/qmetaobject.pro
deleted file mode 100644
index 1df54f73bf..0000000000
--- a/tests/auto/qmetaobject/qmetaobject.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-
-QT = core gui
-
-SOURCES += tst_qmetaobject.cpp
-
-
-
diff --git a/tests/auto/qmetatype/tst_qmetatype.cpp b/tests/auto/qmetatype/tst_qmetatype.cpp
deleted file mode 100644
index 897664ea9a..0000000000
--- a/tests/auto/qmetatype/tst_qmetatype.cpp
+++ /dev/null
@@ -1,366 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtCore>
-#include <QtTest/QtTest>
-
-#ifdef Q_OS_LINUX
-# include <pthread.h>
-#endif
-
-Q_DECLARE_METATYPE(QMetaType::Type)
-
-class tst_QMetaType: public QObject
-{
- Q_OBJECT
- Q_PROPERTY(QList<QVariant> prop READ prop WRITE setProp)
-
-public:
- tst_QMetaType() { propList << 42 << "Hello"; }
-
- QList<QVariant> prop() const { return propList; }
- void setProp(const QList<QVariant> &list) { propList = list; }
-
-private:
- QList<QVariant> propList;
-
-private slots:
- void defined();
- void threadSafety();
- void namespaces();
- void qMetaTypeId();
- void properties();
- void normalizedTypes();
- void typeName_data();
- void typeName();
- void construct();
- void typedefs();
- void isRegistered_data();
- void isRegistered();
- void unregisterType();
- void QTBUG11316_registerStreamBuiltin();
-
-};
-
-struct Foo { int i; };
-
-void tst_QMetaType::defined()
-{
- QCOMPARE(int(QMetaTypeId2<QString>::Defined), 1);
- QCOMPARE(int(QMetaTypeId2<Foo>::Defined), 0);
- QCOMPARE(int(QMetaTypeId2<void*>::Defined), 1);
- QCOMPARE(int(QMetaTypeId2<int*>::Defined), 0);
-}
-
-struct Bar
-{
- Bar()
- {
- // check re-entrancy
- if (!QMetaType::isRegistered(qRegisterMetaType<Foo>("Foo"))) {
- qWarning("%s: re-entrancy test failed", Q_FUNC_INFO);
- ++failureCount;
- }
- }
-
-public:
- static int failureCount;
-};
-
-int Bar::failureCount = 0;
-
-class MetaTypeTorturer: public QThread
-{
- Q_OBJECT
-protected:
- void run()
- {
- for (int i = 0; i < 1000; ++i) {
- const QByteArray name = QString("Bar%1_%2").arg(i).arg((size_t)QThread::currentThreadId()).toLatin1();
- const char *nm = name.constData();
- int tp = qRegisterMetaType<Bar>(nm);
-#ifdef Q_OS_LINUX
- pthread_yield();
-#endif
- if (!QMetaType::isRegistered(tp)) {
- ++failureCount;
- qWarning() << name << "is not a registered metatype";
- }
- if (QMetaType::type(nm) != tp) {
- ++failureCount;
- qWarning() << "Wrong metatype returned for" << name;
- }
- if (QMetaType::typeName(tp) != name) {
- ++failureCount;
- qWarning() << "Wrong typeName returned for" << tp;
- }
- void *buf = QMetaType::construct(tp, 0);
- void *buf2 = QMetaType::construct(tp, buf);
- if (!buf) {
- ++failureCount;
- qWarning() << "Null buffer returned by QMetaType::construct(tp, 0)";
- }
- if (!buf2) {
- ++failureCount;
- qWarning() << "Null buffer returned by QMetaType::construct(tp, buf)";
- }
- QMetaType::destroy(tp, buf);
- QMetaType::destroy(tp, buf2);
- }
- }
-public:
- MetaTypeTorturer() : failureCount(0) { }
- int failureCount;
-};
-
-void tst_QMetaType::threadSafety()
-{
- MetaTypeTorturer t1;
- MetaTypeTorturer t2;
- MetaTypeTorturer t3;
-
- t1.start();
- t2.start();
- t3.start();
-
- QVERIFY(t1.wait());
- QVERIFY(t2.wait());
- QVERIFY(t3.wait());
-
- QCOMPARE(t1.failureCount, 0);
- QCOMPARE(t2.failureCount, 0);
- QCOMPARE(t3.failureCount, 0);
- QCOMPARE(Bar::failureCount, 0);
-}
-
-namespace TestSpace
-{
- struct Foo { double d; };
-
-}
-Q_DECLARE_METATYPE(TestSpace::Foo)
-
-void tst_QMetaType::namespaces()
-{
- TestSpace::Foo nf = { 11.12 };
- QVariant v = qVariantFromValue(nf);
- QCOMPARE(qvariant_cast<TestSpace::Foo>(v).d, 11.12);
-}
-
-void tst_QMetaType::qMetaTypeId()
-{
- QCOMPARE(::qMetaTypeId<QString>(), int(QMetaType::QString));
- QCOMPARE(::qMetaTypeId<int>(), int(QMetaType::Int));
- QCOMPARE(::qMetaTypeId<TestSpace::Foo>(), QMetaType::type("TestSpace::Foo"));
-
- QCOMPARE(::qMetaTypeId<char>(), QMetaType::type("char"));
- QCOMPARE(::qMetaTypeId<uchar>(), QMetaType::type("unsigned char"));
- QCOMPARE(::qMetaTypeId<signed char>(), QMetaType::type("signed char"));
- QCOMPARE(::qMetaTypeId<qint8>(), QMetaType::type("qint8"));
-}
-
-void tst_QMetaType::properties()
-{
- qRegisterMetaType<QList<QVariant> >("QList<QVariant>");
-
- QVariant v = property("prop");
-
- QCOMPARE(v.typeName(), "QVariantList");
-
- QList<QVariant> values = v.toList();
- QCOMPARE(values.count(), 2);
- QCOMPARE(values.at(0).toInt(), 42);
-
- values << 43 << "world";
-
- QVERIFY(setProperty("prop", values));
- v = property("prop");
- QCOMPARE(v.toList().count(), 4);
-}
-
-template <typename T>
-struct Whity { T t; };
-
-Q_DECLARE_METATYPE( Whity < int > )
-Q_DECLARE_METATYPE(Whity<double>)
-
-void tst_QMetaType::normalizedTypes()
-{
- int WhityIntId = ::qMetaTypeId<Whity<int> >();
- int WhityDoubleId = ::qMetaTypeId<Whity<double> >();
-
- QCOMPARE(QMetaType::type("Whity<int>"), WhityIntId);
- QCOMPARE(QMetaType::type(" Whity < int > "), WhityIntId);
- QCOMPARE(QMetaType::type("Whity<int >"), WhityIntId);
-
- QCOMPARE(QMetaType::type("Whity<double>"), WhityDoubleId);
- QCOMPARE(QMetaType::type(" Whity< double > "), WhityDoubleId);
- QCOMPARE(QMetaType::type("Whity<double >"), WhityDoubleId);
-
- QCOMPARE(qRegisterMetaType<Whity<int> >(" Whity < int > "), WhityIntId);
- QCOMPARE(qRegisterMetaType<Whity<int> >("Whity<int>"), WhityIntId);
- QCOMPARE(qRegisterMetaType<Whity<int> >("Whity<int > "), WhityIntId);
-
- QCOMPARE(qRegisterMetaType<Whity<double> >(" Whity < double > "), WhityDoubleId);
- QCOMPARE(qRegisterMetaType<Whity<double> >("Whity<double>"), WhityDoubleId);
- QCOMPARE(qRegisterMetaType<Whity<double> >("Whity<double > "), WhityDoubleId);
-}
-
-void tst_QMetaType::typeName_data()
-{
- QTest::addColumn<QMetaType::Type>("aType");
- QTest::addColumn<QString>("aTypeName");
-
- QTest::newRow("void") << QMetaType::Void << "void";
- QTest::newRow("int") << QMetaType::Int << "int";
- QTest::newRow("double") << QMetaType::Double << "double";
- QTest::newRow("qlonglong") << QMetaType::LongLong << "qlonglong";
- QTest::newRow("QRegExp") << QMetaType::QRegExp << "QRegExp";
- QTest::newRow("QColorGroup") << QMetaType::Type(63) << "QColorGroup";
- QTest::newRow("void*") << QMetaType::VoidStar << "void*";
- QTest::newRow("ulong") << QMetaType::ULong << "ulong";
- QTest::newRow("QWidget*") << QMetaType::QWidgetStar << "QWidget*";
-}
-
-void tst_QMetaType::typeName()
-{
- QFETCH(QMetaType::Type, aType);
- QFETCH(QString, aTypeName);
-
- QCOMPARE(QString::fromLatin1(QMetaType::typeName(aType)), aTypeName);
-}
-
-void tst_QMetaType::construct()
-{
- QSize x(1, 1);
- void *size = QMetaType::construct(QMetaType::QSize, &x);
- QVERIFY(size);
- QCOMPARE(static_cast<QSize *>(size)->width(), 1);
- QMetaType::destroy(QMetaType::QSize, size);
-}
-
-typedef QString CustomString;
-Q_DECLARE_METATYPE(CustomString) //this line is useless
-
-void tst_QMetaType::typedefs()
-{
- QCOMPARE(QMetaType::type("long long"), int(QMetaType::LongLong));
- QCOMPARE(QMetaType::type("unsigned long long"), int(QMetaType::ULongLong));
- QCOMPARE(QMetaType::type("qint8"), int(QMetaType::Char));
- QCOMPARE(QMetaType::type("quint8"), int(QMetaType::UChar));
- QCOMPARE(QMetaType::type("qint16"), int(QMetaType::Short));
- QCOMPARE(QMetaType::type("quint16"), int(QMetaType::UShort));
- QCOMPARE(QMetaType::type("qint32"), int(QMetaType::Int));
- QCOMPARE(QMetaType::type("quint32"), int(QMetaType::UInt));
- QCOMPARE(QMetaType::type("qint64"), int(QMetaType::LongLong));
- QCOMPARE(QMetaType::type("quint64"), int(QMetaType::ULongLong));
-
- // make sure the qreal typeId is the type id of the type it's defined to
- QCOMPARE(QMetaType::type("qreal"), ::qMetaTypeId<qreal>());
-
- qRegisterMetaType<CustomString>("CustomString");
- QCOMPARE(QMetaType::type("CustomString"), ::qMetaTypeId<CustomString>());
-
- typedef Whity<double> WhityDouble;
- qRegisterMetaType<WhityDouble>("WhityDouble");
- QCOMPARE(QMetaType::type("WhityDouble"), ::qMetaTypeId<WhityDouble>());
-}
-
-class IsRegisteredDummyType { };
-
-void tst_QMetaType::isRegistered_data()
-{
- QTest::addColumn<int>("typeId");
- QTest::addColumn<bool>("registered");
-
- // predefined/custom types
- QTest::newRow("QMetaType::Void") << int(QMetaType::Void) << true;
- QTest::newRow("QMetaType::Int") << int(QMetaType::Int) << true;
-
- int dummyTypeId = qRegisterMetaType<IsRegisteredDummyType>("IsRegisteredDummyType");
-
- QTest::newRow("IsRegisteredDummyType") << dummyTypeId << true;
-
- // unknown types
- QTest::newRow("-1") << -1 << false;
- QTest::newRow("-42") << -42 << false;
- QTest::newRow("IsRegisteredDummyType + 1") << (dummyTypeId + 1) << false;
-}
-
-void tst_QMetaType::isRegistered()
-{
- QFETCH(int, typeId);
- QFETCH(bool, registered);
- QCOMPARE(QMetaType::isRegistered(typeId), registered);
-}
-
-class RegUnreg
-{
-public:
- RegUnreg() {};
- RegUnreg(const RegUnreg &) {};
- ~RegUnreg() {};
-};
-
-void tst_QMetaType::unregisterType()
-{
- // cannot unregister standard types
- int typeId = qRegisterMetaType<QList<QVariant> >("QList<QVariant>");
- QCOMPARE(QMetaType::isRegistered(typeId), true);
- QMetaType::unregisterType("QList<QVariant>");
- QCOMPARE(QMetaType::isRegistered(typeId), true);
- // allow unregister user types
- typeId = qRegisterMetaType<RegUnreg>("RegUnreg");
- QCOMPARE(QMetaType::isRegistered(typeId), true);
- QMetaType::unregisterType("RegUnreg");
- QCOMPARE(QMetaType::isRegistered(typeId), false);
-}
-
-void tst_QMetaType::QTBUG11316_registerStreamBuiltin()
-{
- //should not crash;
- qRegisterMetaTypeStreamOperators<QString>("QString");
- qRegisterMetaTypeStreamOperators<QVariant>("QVariant");
-}
-
-QTEST_MAIN(tst_QMetaType)
-#include "tst_qmetatype.moc"
diff --git a/tests/auto/qmouseevent/qmouseevent.pro b/tests/auto/qmouseevent/qmouseevent.pro
deleted file mode 100644
index 0e5ddadc1f..0000000000
--- a/tests/auto/qmouseevent/qmouseevent.pro
+++ /dev/null
@@ -1,2 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qmouseevent.cpp
diff --git a/tests/auto/qmouseevent_modal/qmouseevent_modal.pro b/tests/auto/qmouseevent_modal/qmouseevent_modal.pro
deleted file mode 100644
index 33b8eb6954..0000000000
--- a/tests/auto/qmouseevent_modal/qmouseevent_modal.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qmouseevent_modal.cpp
-
-
-
diff --git a/tests/auto/qmovie/qmovie.pro b/tests/auto/qmovie/qmovie.pro
deleted file mode 100644
index 855eb9e17a..0000000000
--- a/tests/auto/qmovie/qmovie.pro
+++ /dev/null
@@ -1,27 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qmovie.cpp
-MOC_DIR=tmp
-
-!contains(QT_CONFIG, no-gif):DEFINES += QTEST_HAVE_GIF
-!contains(QT_CONFIG, no-jpeg):DEFINES += QTEST_HAVE_JPEG
-!contains(QT_CONFIG, no-mng):DEFINES += QTEST_HAVE_MNG
-
-wince*: {
- addFiles.files = animations\\*
- addFiles.path = animations
- DEPLOYMENT += addFiles
-}
-
-RESOURCES += resources.qrc
-
-symbian: {
- addFiles.files = animations\\*
- addFiles.path = animations
- DEPLOYMENT += addFiles
-
- qt_not_deployed {
- imagePlugins.files = qjpeg.dll qgif.dll qmng.dll
- imagePlugins.path = imageformats
- DEPLOYMENT += imagePlugins
- }
-}
diff --git a/tests/auto/qmultiscreen/qmultiscreen.pro b/tests/auto/qmultiscreen/qmultiscreen.pro
index 30666d72da..c4a983c5be 100644
--- a/tests/auto/qmultiscreen/qmultiscreen.pro
+++ b/tests/auto/qmultiscreen/qmultiscreen.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qmultiscreen.cpp
requires(embedded)
diff --git a/tests/auto/qnetworkaccessmanager_and_qprogressdialog/qnetworkaccessmanager_and_qprogressdialog.pro b/tests/auto/qnetworkaccessmanager_and_qprogressdialog/qnetworkaccessmanager_and_qprogressdialog.pro
index 378deba11e..e5afc353c8 100644
--- a/tests/auto/qnetworkaccessmanager_and_qprogressdialog/qnetworkaccessmanager_and_qprogressdialog.pro
+++ b/tests/auto/qnetworkaccessmanager_and_qprogressdialog/qnetworkaccessmanager_and_qprogressdialog.pro
@@ -1,6 +1,6 @@
load(qttest_p4)
SOURCES += tst_qnetworkaccessmanager_and_qprogressdialog.cpp
-QT += network
+QT += network widgets
symbian: TARGET.CAPABILITY = NetworkServices
diff --git a/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
deleted file mode 100644
index 224d1cbb59..0000000000
--- a/tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
+++ /dev/null
@@ -1,677 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <QtNetwork/QtNetwork>
-#include <qnetworkdiskcache.h>
-#include "../../shared/util.h"
-
-#define EXAMPLE_URL "http://user:pass@www.example.com/#foo"
-//cached objects are organized into these many subdirs
-#define NUM_SUBDIRECTORIES 16
-
-class tst_QNetworkDiskCache : public QObject
-{
- Q_OBJECT
-
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-
-private slots:
- void qnetworkdiskcache_data();
- void qnetworkdiskcache();
-
- void prepare();
- void cacheSize();
- void clear();
- void data_data();
- void data();
- void metaData();
- void remove();
- void setCacheDirectory_data();
- void setCacheDirectory();
- void updateMetaData();
- void fileMetaData();
- void expire();
-
- void oldCacheVersionFile_data();
- void oldCacheVersionFile();
-
- void sync();
-
- void crashWhenParentingCache();
-};
-
-// FIXME same as in tst_qnetworkreply.cpp .. could be unified
-// Does not work for POST/PUT!
-class MiniHttpServer: public QTcpServer
-{
- Q_OBJECT
-public:
- QTcpSocket *client; // always the last one that was received
- QByteArray dataToTransmit;
- QByteArray receivedData;
- bool doClose;
- bool multiple;
- int totalConnections;
-
- MiniHttpServer(const QByteArray &data) : client(0), dataToTransmit(data), doClose(true), multiple(false), totalConnections(0)
- {
- listen();
- connect(this, SIGNAL(newConnection()), this, SLOT(doAccept()));
- }
-
-public slots:
- void doAccept()
- {
- client = nextPendingConnection();
- client->setParent(this);
- ++totalConnections;
- connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
- }
-
- void readyReadSlot()
- {
- receivedData += client->readAll();
- int doubleEndlPos = receivedData.indexOf("\r\n\r\n");
-
- if (doubleEndlPos != -1) {
- // multiple requests incoming. remove the bytes of the current one
- if (multiple)
- receivedData.remove(0, doubleEndlPos+4);
-
- client->write(dataToTransmit);
- if (doClose) {
- client->disconnectFromHost();
- disconnect(client, 0, this, 0);
- client = 0;
- }
- }
- }
-};
-
-// Subclass that exposes the protected functions.
-class SubQNetworkDiskCache : public QNetworkDiskCache
-{
-public:
- ~SubQNetworkDiskCache()
- {
- if (!cacheDirectory().isEmpty())
- clear();
- }
-
- QNetworkCacheMetaData call_fileMetaData(QString const &fileName)
- { return SubQNetworkDiskCache::fileMetaData(fileName); }
-
- qint64 call_expire()
- { return SubQNetworkDiskCache::expire(); }
-
- void setupWithOne(const QUrl &url, const QNetworkCacheMetaData &metaData = QNetworkCacheMetaData())
- {
- setCacheDirectory(QDir::tempPath() + "/diskCache");
-
- QIODevice *d = 0;
- if (metaData.isValid()) {
- d = prepare(metaData);
- } else {
- QNetworkCacheMetaData m;
- m.setUrl(url);
- QNetworkCacheMetaData::RawHeader header("content-type", "text/html");
- QNetworkCacheMetaData::RawHeaderList list;
- list.append(header);
- m.setRawHeaders(list);
- d = prepare(m);
- }
- d->write("Hello World!");
- insert(d);
- }
-};
-
-// This will be called before the first test function is executed.
-// It is only called once.
-void tst_QNetworkDiskCache::initTestCase()
-{
- SubQNetworkDiskCache cache;
- cache.setCacheDirectory(QDir::tempPath() + "/diskCache");
- cache.clear();
- QString s = QDir::tempPath() + "/diskCache/";
- QDir dir;
- dir.rmdir(s + "data7"); // the number is the internal cache version
- dir.rmdir(s + "prepared");
- dir.rmdir(s);
- dir.rmdir(s + "http"); // delete directory used by 4.7 and earlier (would make the tests fail)
-}
-
-// This will be called after the last test function is executed.
-// It is only called once.
-void tst_QNetworkDiskCache::cleanupTestCase()
-{
-}
-
-// This will be called before each test function is executed.
-void tst_QNetworkDiskCache::init()
-{
-}
-
-// This will be called after every test function.
-void tst_QNetworkDiskCache::cleanup()
-{
-}
-
-void tst_QNetworkDiskCache::qnetworkdiskcache_data()
-{
-}
-
-void tst_QNetworkDiskCache::qnetworkdiskcache()
-{
- QUrl url(EXAMPLE_URL);
- SubQNetworkDiskCache cache;
- QCOMPARE(cache.cacheDirectory(), QString());
- QCOMPARE(cache.cacheSize(), qint64(0));
- cache.clear();
- QCOMPARE(cache.metaData(QUrl()), QNetworkCacheMetaData());
- QCOMPARE(cache.remove(QUrl()), false);
- QCOMPARE(cache.remove(url), false);
- cache.insert((QIODevice*)0);
- cache.setCacheDirectory(QString());
- cache.updateMetaData(QNetworkCacheMetaData());
- cache.prepare(QNetworkCacheMetaData());
- QCOMPARE(cache.call_fileMetaData(QString()), QNetworkCacheMetaData());
-
- // leave one hanging around...
- QNetworkDiskCache badCache;
- QNetworkCacheMetaData metaData;
- metaData.setUrl(url);
- badCache.prepare(metaData);
- badCache.setCacheDirectory(QDir::tempPath() + "/diskCache");
- badCache.prepare(metaData);
-}
-
-void tst_QNetworkDiskCache::prepare()
-{
- SubQNetworkDiskCache cache;
- cache.setCacheDirectory(QDir::tempPath() + "/diskCache");
-
- QUrl url(EXAMPLE_URL);
- QNetworkCacheMetaData metaData;
- metaData.setUrl(url);
-
- cache.prepare(metaData);
- cache.remove(url);
-}
-
-// public qint64 cacheSize() const
-void tst_QNetworkDiskCache::cacheSize()
-{
- SubQNetworkDiskCache cache;
- cache.setCacheDirectory(QDir::tempPath() + "/diskCache");
- QCOMPARE(cache.cacheSize(), qint64(0));
-
- QUrl url(EXAMPLE_URL);
- QNetworkCacheMetaData metaData;
- metaData.setUrl(url);
- QIODevice *d = cache.prepare(metaData);
- cache.insert(d);
- QVERIFY(cache.cacheSize() > qint64(0));
-
- cache.clear();
- QCOMPARE(cache.cacheSize(), qint64(0));
-}
-
-static QStringList countFiles(const QString dir)
-{
- QStringList list;
- QDir::Filters filter(QDir::AllEntries | QDir::NoDotAndDotDot);
- QDirIterator it(dir, filter, QDirIterator::Subdirectories);
- while (it.hasNext())
- list.append(it.next());
- return list;
-}
-
-// public void clear()
-void tst_QNetworkDiskCache::clear()
-{
- SubQNetworkDiskCache cache;
- QUrl url(EXAMPLE_URL);
- cache.setupWithOne(url);
- QVERIFY(cache.cacheSize() > qint64(0));
-
- QString cacheDirectory = cache.cacheDirectory();
- QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 3);
- cache.clear();
- QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 2);
-
- // don't delete files that it didn't create
- QTemporaryFile file(cacheDirectory + "/XXXXXX");
- if (file.open()) {
- QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 3);
- cache.clear();
- QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 3);
- }
-}
-
-Q_DECLARE_METATYPE(QNetworkCacheMetaData)
-void tst_QNetworkDiskCache::data_data()
-{
- QTest::addColumn<QNetworkCacheMetaData>("data");
-
- QTest::newRow("null") << QNetworkCacheMetaData();
-
- QUrl url(EXAMPLE_URL);
- QNetworkCacheMetaData metaData;
- metaData.setUrl(url);
- QNetworkCacheMetaData::RawHeaderList headers;
- headers.append(QNetworkCacheMetaData::RawHeader("type", "bin"));
- metaData.setRawHeaders(headers);
- QTest::newRow("null") << metaData;
-}
-
-// public QIODevice* data(QUrl const& url)
-void tst_QNetworkDiskCache::data()
-{
- QFETCH(QNetworkCacheMetaData, data);
- SubQNetworkDiskCache cache;
- QUrl url(EXAMPLE_URL);
- cache.setupWithOne(url, data);
-
- for (int i = 0; i < 3; ++i) {
- QIODevice *d = cache.data(url);
- QVERIFY(d);
- QCOMPARE(d->readAll(), QByteArray("Hello World!"));
- delete d;
- }
-}
-
-// public QNetworkCacheMetaData metaData(QUrl const& url)
-void tst_QNetworkDiskCache::metaData()
-{
- SubQNetworkDiskCache cache;
-
- QUrl url(EXAMPLE_URL);
- QNetworkCacheMetaData metaData;
- metaData.setUrl(url);
- QNetworkCacheMetaData::RawHeaderList headers;
- headers.append(QNetworkCacheMetaData::RawHeader("type", "bin"));
- metaData.setRawHeaders(headers);
- metaData.setLastModified(QDateTime::currentDateTime());
- metaData.setExpirationDate(QDateTime::currentDateTime());
- metaData.setSaveToDisk(true);
-
- cache.setupWithOne(url, metaData);
-
- for (int i = 0; i < 3; ++i) {
- QNetworkCacheMetaData cacheMetaData = cache.metaData(url);
- QVERIFY(cacheMetaData.isValid());
- QCOMPARE(metaData, cacheMetaData);
- }
-}
-
-// public bool remove(QUrl const& url)
-void tst_QNetworkDiskCache::remove()
-{
- SubQNetworkDiskCache cache;
- QUrl url(EXAMPLE_URL);
- cache.setupWithOne(url);
- QString cacheDirectory = cache.cacheDirectory();
- QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 3);
- cache.remove(url);
- QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 2);
-}
-
-void tst_QNetworkDiskCache::setCacheDirectory_data()
-{
- QTest::addColumn<QString>("cacheDir");
- QTest::newRow("null") << QString();
- QDir dir("foo");
- QTest::newRow("foo") << dir.absolutePath() + QString("/");
-}
-
-// public void setCacheDirectory(QString const& cacheDir)
-void tst_QNetworkDiskCache::setCacheDirectory()
-{
- QFETCH(QString, cacheDir);
-
- SubQNetworkDiskCache cache;
- cache.setCacheDirectory(cacheDir);
- QCOMPARE(cache.cacheDirectory(), cacheDir);
-}
-
-// public void updateMetaData(QNetworkCacheMetaData const& metaData)
-void tst_QNetworkDiskCache::updateMetaData()
-{
- QUrl url(EXAMPLE_URL);
- SubQNetworkDiskCache cache;
- cache.setupWithOne(url);
-
- QNetworkCacheMetaData metaData = cache.metaData(url);
- metaData.setLastModified(QDateTime::currentDateTime());
- cache.updateMetaData(metaData);
- QNetworkCacheMetaData newMetaData = cache.metaData(url);
- QCOMPARE(newMetaData, metaData);
-}
-
-// protected QNetworkCacheMetaData fileMetaData(QString const& fileName)
-void tst_QNetworkDiskCache::fileMetaData()
-{
- SubQNetworkDiskCache cache;
- QUrl url(EXAMPLE_URL);
- cache.setupWithOne(url);
-
- url.setPassword(QString());
- url.setFragment(QString());
-
- QString cacheDirectory = cache.cacheDirectory();
- QStringList list = countFiles(cacheDirectory);
- QCOMPARE(list.count(), NUM_SUBDIRECTORIES + 3);
- foreach(QString fileName, list) {
- QFileInfo info(fileName);
- if (info.isFile()) {
- QNetworkCacheMetaData metaData = cache.call_fileMetaData(fileName);
- QCOMPARE(metaData.url(), url);
- }
- }
-
- QTemporaryFile file(cacheDirectory + "/qt_temp.XXXXXX");
- if (file.open()) {
- QNetworkCacheMetaData metaData = cache.call_fileMetaData(file.fileName());
- QVERIFY(!metaData.isValid());
- }
-}
-
-// protected qint64 expire()
-void tst_QNetworkDiskCache::expire()
-{
- SubQNetworkDiskCache cache;
- cache.setCacheDirectory(QDir::tempPath() + "/diskCache");
- QCOMPARE(cache.call_expire(), (qint64)0);
- QUrl url(EXAMPLE_URL);
- cache.setupWithOne(url);
- QVERIFY(cache.call_expire() > (qint64)0);
- qint64 limit = (1024 * 1024 / 4) * 5;
- cache.setMaximumCacheSize(limit);
-
- qint64 max = cache.maximumCacheSize();
- QCOMPARE(max, limit);
- for (int i = 0; i < 10; ++i) {
- if (i % 3 == 0)
- QTest::qWait(2000);
- QNetworkCacheMetaData m;
- m.setUrl(QUrl("http://www.foo.com/" + QString::number(i)));
- QIODevice *d = cache.prepare(m);
- QString bigString;
- bigString.fill(QLatin1Char('Z'), (1024 * 1024 / 4));
- d->write(bigString.toLatin1().data());
- cache.insert(d);
- QVERIFY(cache.call_expire() < max);
- }
-
- QString cacheDirectory = cache.cacheDirectory();
- QStringList list = countFiles(cacheDirectory);
- QStringList cacheList;
- foreach(QString fileName, list) {
- QFileInfo info(fileName);
- if (info.isFile()) {
- QNetworkCacheMetaData metaData = cache.call_fileMetaData(fileName);
- cacheList.append(metaData.url().toString());
- }
- }
- qSort(cacheList);
- for (int i = 0; i < cacheList.count(); ++i) {
- QString fileName = cacheList[i];
- QCOMPARE(fileName, QString("http://www.foo.com/%1").arg(i + 6));
- }
-}
-
-void tst_QNetworkDiskCache::oldCacheVersionFile_data()
-{
- QTest::addColumn<int>("pass");
- QTest::newRow("0") << 0;
- QTest::newRow("1") << 1;
-}
-
-void tst_QNetworkDiskCache::oldCacheVersionFile()
-{
- QFETCH(int, pass);
- SubQNetworkDiskCache cache;
- QUrl url(EXAMPLE_URL);
- cache.setupWithOne(url);
-
- if (pass == 0) {
- QString name;
- {
- QTemporaryFile file(cache.cacheDirectory() + "/XXXXXX.d");
- file.setAutoRemove(false);
- QVERIFY(file.open());
- QDataStream out(&file);
- out << qint32(0xe8);
- out << qint32(2);
- name = file.fileName();
- file.close();
- }
-
- QVERIFY(QFile::exists(name));
- QNetworkCacheMetaData metaData = cache.call_fileMetaData(name);
- QVERIFY(!metaData.isValid());
- QVERIFY(!QFile::exists(name));
- } else {
- QStringList files = countFiles(cache.cacheDirectory());
- QCOMPARE(files.count(), NUM_SUBDIRECTORIES + 3);
- // find the file
- QString cacheFile;
- foreach (QString file, files) {
- QFileInfo info(file);
- if (info.isFile())
- cacheFile = file;
- }
- QVERIFY(QFile::exists(cacheFile));
-
- QFile file(cacheFile);
- QVERIFY(file.open(QFile::ReadWrite));
- QDataStream out(&file);
- out << qint32(0xe8);
- out << qint32(2);
- file.close();
-
- QIODevice *device = cache.data(url);
- QVERIFY(!device);
- QVERIFY(!QFile::exists(cacheFile));
- }
-}
-
-class Runner : public QThread
-{
-
-public:
- Runner()
- : QThread()
- , other(0)
- {}
-
- void run()
- {
- QByteArray longString = "Hello World, this is some long string, well not really that long";
- for (int j = 0; j < 10; ++j)
- longString += longString;
- QByteArray longString2 = "Help, I am stuck in an autotest!";
- QUrl url(EXAMPLE_URL);
-
- QNetworkCacheMetaData metaData;
- metaData.setUrl(url);
- QNetworkCacheMetaData::RawHeaderList headers;
- headers.append(QNetworkCacheMetaData::RawHeader("type", "bin"));
- metaData.setRawHeaders(headers);
- metaData.setLastModified(dt);
- metaData.setSaveToDisk(true);
-
- QNetworkCacheMetaData metaData2 = metaData;
- metaData2.setExpirationDate(dt);
-
- QNetworkDiskCache cache;
- cache.setCacheDirectory(QDir::tempPath() + "/diskCache");
-
- int read = 0;
-
- int i = 0;
- for (; i < 5000; ++i) {
- if (other && other->isFinished())
- break;
-
- if (write) {
- QNetworkCacheMetaData m;
- if (qrand() % 2 == 0)
- m = metaData;
- else
- m = metaData2;
-
- if (qrand() % 20 == 1) {
- //qDebug() << "write update";
- cache.updateMetaData(m);
- continue;
- }
-
- QIODevice *device = cache.prepare(m);
- if (qrand() % 20 == 1) {
- //qDebug() << "write remove";
- cache.remove(url);
- continue;
- }
- QVERIFY(device);
- if (qrand() % 2 == 0)
- device->write(longString);
- else
- device->write(longString2);
- //qDebug() << "write write" << device->size();
- cache.insert(device);
- continue;
- }
-
- QNetworkCacheMetaData gotMetaData = cache.metaData(url);
- if (gotMetaData.isValid()) {
- QVERIFY(gotMetaData == metaData || gotMetaData == metaData2);
- QIODevice *d = cache.data(url);
- if (d) {
- QByteArray x = d->readAll();
- if (x != longString && x != longString2) {
- qDebug() << x.length() << QString(x);
- gotMetaData = cache.metaData(url);
- qDebug() << (gotMetaData.url().toString())
- << gotMetaData.lastModified()
- << gotMetaData.expirationDate()
- << gotMetaData.saveToDisk();
- }
- if (gotMetaData.isValid())
- QVERIFY(x == longString || x == longString2);
- read++;
- delete d;
- }
- }
- if (qrand() % 5 == 1)
- cache.remove(url);
- if (qrand() % 5 == 1)
- cache.clear();
- sleep(0);
- }
- //qDebug() << "read!" << read << i;
- }
-
- QDateTime dt;
- bool write;
- Runner *other;
-};
-
-void tst_QNetworkDiskCache::crashWhenParentingCache()
-{
- // the trick here is to not send the complete response
- // but some data. So we get a readyRead() and it gets tried
- // to be saved to the cache
- QByteArray data("HTTP/1.0 200 OK\r\nCache-Control: max-age=300\r\nAge: 1\r\nContent-Length: 5\r\n\r\n123");
- MiniHttpServer server(data);
-
- QNetworkAccessManager *manager = new QNetworkAccessManager();
- QNetworkDiskCache *diskCache = new QNetworkDiskCache(manager); // parent to qnam!
- // we expect the temp dir to be cleaned at some point anyway
- diskCache->setCacheDirectory(QString("%1/cacheDir_%2").arg(QDir::tempPath()).arg(QCoreApplication::applicationPid()));
- manager->setCache(diskCache);
-
- QUrl url("http://127.0.0.1:" + QString::number(server.serverPort()));
- QNetworkRequest request(url);
- // request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork);
- QNetworkReply *reply = manager->get(request); // new reply is parented to qnam
-
- // wait for readyRead of reply!
- connect(reply, SIGNAL(readyRead()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- delete manager; // crashed before..
-}
-
-void tst_QNetworkDiskCache::sync()
-{
- // This tests would be a nice to have, but is currently not supported.
- return;
-
- QTime midnight(0, 0, 0);
- qsrand(midnight.secsTo(QTime::currentTime()));
- Runner reader;
- reader.dt = QDateTime::currentDateTime();
- reader.write = false;
-
- Runner writer;
- writer.dt = reader.dt;
- writer.write = true;
-
- writer.other = &reader;
- reader.other = &writer;
-
- writer.start();
- reader.start();
- writer.wait();
- reader.wait();
-}
-
-QTEST_MAIN(tst_QNetworkDiskCache)
-#include "tst_qnetworkdiskcache.moc"
-
diff --git a/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp b/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp
deleted file mode 100644
index ae3436d2f6..0000000000
--- a/tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp
+++ /dev/null
@@ -1,241 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qcoreapplication.h>
-#include <qnetworkinterface.h>
-#include <qtcpsocket.h>
-#include <QNetworkConfigurationManager>
-#include <QNetworkSession>
-#include "../network-settings.h"
-
-//TESTED_FILES=qnetworkinterface.cpp qnetworkinterface.h qnetworkinterface_unix.cpp qnetworkinterface_win.cpp
-
-class tst_QNetworkInterface : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QNetworkInterface();
- virtual ~tst_QNetworkInterface();
-
-private slots:
- void initTestCase();
- void cleanupTestCase();
- void dump();
- void loopbackIPv4();
- void loopbackIPv6();
- void localAddress();
- void interfaceFromXXX();
- void copyInvalidInterface();
-
-private:
-#ifndef QT_NO_BEARER_MANAGEMENT
- QNetworkConfigurationManager *netConfMan;
- QNetworkConfiguration networkConfiguration;
- QScopedPointer<QNetworkSession> networkSession;
-#endif
-};
-
-tst_QNetworkInterface::tst_QNetworkInterface()
-{
-}
-
-tst_QNetworkInterface::~tst_QNetworkInterface()
-{
-}
-
-void tst_QNetworkInterface::initTestCase()
-{
-#ifndef QT_NO_BEARERMANAGEMENT
- netConfMan = new QNetworkConfigurationManager(this);
- networkConfiguration = netConfMan->defaultConfiguration();
- networkSession.reset(new QNetworkSession(networkConfiguration));
- if (!networkSession->isOpen()) {
- networkSession->open();
- QVERIFY(networkSession->waitForOpened(30000));
- }
-#endif
-}
-
-void tst_QNetworkInterface::cleanupTestCase()
-{
-#ifndef QT_NO_BEARERMANAGEMENT
- if (networkSession && networkSession->isOpen()) {
- networkSession->close();
- }
-#endif
-}
-
-void tst_QNetworkInterface::dump()
-{
- // This is for manual testing:
- QList<QNetworkInterface> allInterfaces = QNetworkInterface::allInterfaces();
- foreach (const QNetworkInterface &i, allInterfaces) {
- QString flags;
- if (i.flags() & QNetworkInterface::IsUp) flags += "Up,";
- if (i.flags() & QNetworkInterface::IsRunning) flags += "Running,";
- if (i.flags() & QNetworkInterface::CanBroadcast) flags += "Broadcast,";
- if (i.flags() & QNetworkInterface::IsLoopBack) flags += "Loopback,";
- if (i.flags() & QNetworkInterface::IsPointToPoint) flags += "PointToPoint,";
- if (i.flags() & QNetworkInterface::CanMulticast) flags += "Multicast,";
- flags.chop(1); // drop last comma
-
- QString friendlyName = i.humanReadableName();
- if (friendlyName != i.name()) {
- friendlyName.prepend('(');
- friendlyName.append(')');
- } else {
- friendlyName.clear();
- }
- qDebug() << "Interface: " << i.name() << qPrintable(friendlyName);
- QVERIFY(i.isValid());
-
- qDebug() << " index: " << i.index();
- qDebug() << " flags: " << qPrintable(flags);
- qDebug() << " hw address:" << qPrintable(i.hardwareAddress());
-
- int count = 0;
- foreach (const QNetworkAddressEntry &e, i.addressEntries()) {
- QDebug s = qDebug();
- s.nospace() << " address "
- << qSetFieldWidth(2) << count++ << qSetFieldWidth(0);
- s.nospace() << ": " << qPrintable(e.ip().toString());
- if (!e.netmask().isNull())
- s.nospace() << '/' << e.prefixLength()
- << " (" << qPrintable(e.netmask().toString()) << ")";
- if (!e.broadcast().isNull())
- s.nospace() << " broadcast " << qPrintable(e.broadcast().toString());
- }
- }
-}
-
-void tst_QNetworkInterface::loopbackIPv4()
-{
- QList<QHostAddress> all = QNetworkInterface::allAddresses();
- QVERIFY(all.contains(QHostAddress(QHostAddress::LocalHost)));
-}
-
-void tst_QNetworkInterface::loopbackIPv6()
-{
- QList<QHostAddress> all = QNetworkInterface::allAddresses();
-
- bool loopbackfound = false;
- bool anyIPv6 = false;
- foreach (QHostAddress addr, all)
- if (addr == QHostAddress::LocalHostIPv6) {
- loopbackfound = true;
- anyIPv6 = true;
- break;
- } else if (addr.protocol() == QAbstractSocket::IPv6Protocol)
- anyIPv6 = true;
-
- QVERIFY(!anyIPv6 || loopbackfound);
-}
-
-void tst_QNetworkInterface::localAddress()
-{
- QTcpSocket socket;
- socket.connectToHost(QtNetworkSettings::serverName(), 80);
- QVERIFY(socket.waitForConnected(5000));
-
- QHostAddress local = socket.localAddress();
-
- // make Apache happy on fluke
- socket.write("GET / HTTP/1.0\r\n\r\n");
- socket.waitForBytesWritten(1000);
- socket.close();
-
- // test that we can find the address that QTcpSocket reported
- QList<QHostAddress> all = QNetworkInterface::allAddresses();
- QVERIFY(all.contains(local));
-}
-
-void tst_QNetworkInterface::interfaceFromXXX()
-{
- QList<QNetworkInterface> allInterfaces = QNetworkInterface::allInterfaces();
-
- foreach (QNetworkInterface iface, allInterfaces) {
- QVERIFY(QNetworkInterface::interfaceFromName(iface.name()).isValid());
- foreach (QNetworkAddressEntry entry, iface.addressEntries()) {
- QVERIFY(!entry.ip().isNull());
-
- if (!entry.netmask().isNull()) {
- QCOMPARE(entry.netmask().protocol(), entry.ip().protocol());
-
- // if the netmask is known, the broadcast is known
- // but only for IPv4 (there is no such thing as broadcast in IPv6)
- if (entry.ip().protocol() == QAbstractSocket::IPv4Protocol) {
- QVERIFY(!entry.broadcast().isNull());
-
- // verify that the broadcast address is correct
- quint32 ip = entry.ip().toIPv4Address();
- quint32 mask = entry.netmask().toIPv4Address();
- quint32 bcast = entry.broadcast().toIPv4Address();
-
- QCOMPARE(bcast, ip | ~mask);
- }
- }
-
- if (!entry.broadcast().isNull())
- QCOMPARE(entry.broadcast().protocol(), entry.ip().protocol());
- }
- }
-}
-
-void tst_QNetworkInterface::copyInvalidInterface()
-{
- // Force a copy of an interfaces that isn't likely to exist
- QNetworkInterface i = QNetworkInterface::interfaceFromName("plopp");
- QVERIFY(!i.isValid());
-
- QCOMPARE(i.index(), 0);
- QVERIFY(i.name().isEmpty());
- QVERIFY(i.humanReadableName().isEmpty());
- QVERIFY(i.hardwareAddress().isEmpty());
- QCOMPARE(int(i.flags()), 0);
- QVERIFY(i.addressEntries().isEmpty());
-}
-
-QTEST_MAIN(tst_QNetworkInterface)
-#include "tst_qnetworkinterface.moc"
diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
deleted file mode 100644
index 1ae76899df..0000000000
--- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
+++ /dev/null
@@ -1,6342 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <QtCore/QCryptographicHash>
-#include <QtCore/QDataStream>
-#include <QtCore/QUrl>
-#include <QtCore/QEventLoop>
-#include <QtCore/QFile>
-#include <QtCore/QSharedPointer>
-#include <QtCore/QScopedPointer>
-#include <QtCore/QTemporaryFile>
-#include <QtNetwork/QTcpServer>
-#include <QtNetwork/QTcpSocket>
-#include <QtNetwork/QLocalSocket>
-#include <QtNetwork/QLocalServer>
-#include <QtNetwork/QHostInfo>
-#include <QtNetwork/QFtp>
-#include <QtNetwork/QAbstractNetworkCache>
-#include <QtNetwork/qauthenticator.h>
-#include <QtNetwork/qnetworkaccessmanager.h>
-#include <QtNetwork/qnetworkrequest.h>
-#include <QtNetwork/qnetworkreply.h>
-#include <QtNetwork/qnetworkcookie.h>
-#include <QtNetwork/QHttpPart>
-#include <QtNetwork/QHttpMultiPart>
-#ifndef QT_NO_OPENSSL
-#include <QtNetwork/qsslerror.h>
-#include <QtNetwork/qsslconfiguration.h>
-#endif
-#ifndef QT_NO_BEARERMANAGEMENT
-#include <QtNetwork/qnetworkconfigmanager.h>
-#include <QtNetwork/qnetworkconfiguration.h>
-#include <QtNetwork/qnetworksession.h>
-#endif
-
-#include <time.h>
-
-#include "private/qnetworkaccessmanager_p.h"
-
-#ifdef Q_OS_SYMBIAN
-#define SRCDIR "."
-#endif
-
-#include "../network-settings.h"
-
-Q_DECLARE_METATYPE(QSharedPointer<char>)
-Q_DECLARE_METATYPE(QNetworkReply*)
-Q_DECLARE_METATYPE(QAuthenticator*)
-Q_DECLARE_METATYPE(QNetworkProxy)
-Q_DECLARE_METATYPE(QNetworkProxyQuery)
-Q_DECLARE_METATYPE(QList<QNetworkProxy>)
-Q_DECLARE_METATYPE(QNetworkReply::NetworkError)
-Q_DECLARE_METATYPE(QBuffer*)
-Q_DECLARE_METATYPE(QHttpMultiPart *)
-Q_DECLARE_METATYPE(QList<QFile*>) // for multiparts
-#ifndef QT_NO_OPENSSL
-Q_DECLARE_METATYPE(QSslConfiguration)
-#endif
-
-class QNetworkReplyPtr: public QSharedPointer<QNetworkReply>
-{
-public:
- inline QNetworkReplyPtr(QNetworkReply *ptr = 0)
- : QSharedPointer<QNetworkReply>(ptr)
- { }
-
- inline operator QNetworkReply *() const { return data(); }
-};
-
-class MyCookieJar;
-class tst_QNetworkReply: public QObject
-{
- Q_OBJECT
-
- struct ProxyData {
- ProxyData(const QNetworkProxy &p, const QByteArray &t, bool auth)
- : tag(t), proxy(p), requiresAuthentication(auth)
- { }
- QByteArray tag;
- QNetworkProxy proxy;
- bool requiresAuthentication;
- };
-
- static bool seedCreated;
- static QString createUniqueExtension() {
- if (!seedCreated) {
- qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()) + QCoreApplication::applicationPid());
- seedCreated = true; // not thread-safe, but who cares
- }
- QString s = QString("%1-%2-%3").arg(QTime(0,0,0).msecsTo(QTime::currentTime())).arg(QCoreApplication::applicationPid()).arg(qrand());
- return s;
- };
-
- QEventLoop *loop;
- enum RunSimpleRequestReturn { Timeout = 0, Success, Failure };
- int returnCode;
- QString testFileName;
-#if !defined Q_OS_WIN
- QString wronlyFileName;
-#endif
- QString uniqueExtension;
- QList<ProxyData> proxies;
- QNetworkAccessManager manager;
- MyCookieJar *cookieJar;
-#ifndef QT_NO_OPENSSL
- QSslConfiguration storedSslConfiguration;
- QList<QSslError> storedExpectedSslErrors;
-#endif
-#ifndef QT_NO_BEARERMANAGEMENT
- QNetworkConfigurationManager *netConfMan;
- QNetworkConfiguration networkConfiguration;
- QScopedPointer<QNetworkSession> networkSession;
-#endif
-
-public:
- tst_QNetworkReply();
- ~tst_QNetworkReply();
- QString runSimpleRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request,
- QNetworkReplyPtr &reply, const QByteArray &data = QByteArray());
- QString runMultipartRequest(const QNetworkRequest &request, QNetworkReplyPtr &reply,
- QHttpMultiPart *multiPart, const QByteArray &verb);
-
- QString runCustomRequest(const QNetworkRequest &request, QNetworkReplyPtr &reply,
- const QByteArray &verb, QIODevice *data);
-
-public Q_SLOTS:
- void finished();
- void gotError();
- void authenticationRequired(QNetworkReply*,QAuthenticator*);
- void proxyAuthenticationRequired(const QNetworkProxy &,QAuthenticator*);
-
-#ifndef QT_NO_OPENSSL
- void sslErrors(QNetworkReply*,const QList<QSslError> &);
- void storeSslConfiguration();
- void ignoreSslErrorListSlot(QNetworkReply *reply, const QList<QSslError> &);
-#endif
-
-protected Q_SLOTS:
- void nestedEventLoops_slot();
-
-private Q_SLOTS:
- void init();
- void cleanup();
- void initTestCase();
- void cleanupTestCase();
-
- void stateChecking();
- void invalidProtocol();
- void getFromData_data();
- void getFromData();
- void getFromFile();
- void getFromFileSpecial_data();
- void getFromFileSpecial();
- void getFromFtp_data();
- void getFromFtp();
- void getFromHttp_data();
- void getFromHttp();
- void getErrors_data();
- void getErrors();
- void putToFile_data();
- void putToFile();
- void putToFtp_data();
- void putToFtp();
- void putToHttp_data();
- void putToHttp();
- void putToHttpSynchronous_data();
- void putToHttpSynchronous();
- void putToHttpMultipart_data();
- void putToHttpMultipart();
- void postToHttp_data();
- void postToHttp();
- void postToHttpSynchronous_data();
- void postToHttpSynchronous();
- void postToHttpMultipart_data();
- void postToHttpMultipart();
- void deleteFromHttp_data();
- void deleteFromHttp();
- void putGetDeleteGetFromHttp_data();
- void putGetDeleteGetFromHttp();
- void sendCustomRequestToHttp_data();
- void sendCustomRequestToHttp();
- void connectToIPv6Address_data();
- void connectToIPv6Address();
-
- void ioGetFromData_data();
- void ioGetFromData();
- void ioGetFromFileSpecial_data();
- void ioGetFromFileSpecial();
- void ioGetFromFile_data();
- void ioGetFromFile();
- void ioGetFromFtp_data();
- void ioGetFromFtp();
- void ioGetFromFtpWithReuse();
- void ioGetFromHttp();
-
- void ioGetFromBuiltinHttp_data();
- void ioGetFromBuiltinHttp();
- void ioGetFromHttpWithReuseParallel();
- void ioGetFromHttpWithReuseSequential();
- void ioGetFromHttpWithAuth_data();
- void ioGetFromHttpWithAuth();
- void ioGetFromHttpWithAuthSynchronous();
- void ioGetFromHttpWithProxyAuth();
- void ioGetFromHttpWithProxyAuthSynchronous();
- void ioGetFromHttpWithSocksProxy();
-#ifndef QT_NO_OPENSSL
- void ioGetFromHttpsWithSslErrors();
- void ioGetFromHttpsWithIgnoreSslErrors();
- void ioGetFromHttpsWithSslHandshakeError();
-#endif
- void ioGetFromHttpBrokenServer_data();
- void ioGetFromHttpBrokenServer();
- void ioGetFromHttpStatus100_data();
- void ioGetFromHttpStatus100();
- void ioGetFromHttpNoHeaders_data();
- void ioGetFromHttpNoHeaders();
- void ioGetFromHttpWithCache_data();
- void ioGetFromHttpWithCache();
-
- void ioGetWithManyProxies_data();
- void ioGetWithManyProxies();
-
- void ioPutToFileFromFile_data();
- void ioPutToFileFromFile();
- void ioPutToFileFromSocket_data();
- void ioPutToFileFromSocket();
- void ioPutToFileFromLocalSocket_data();
- void ioPutToFileFromLocalSocket();
- void ioPutToFileFromProcess_data();
- void ioPutToFileFromProcess();
- void ioPutToFtpFromFile_data();
- void ioPutToFtpFromFile();
- void ioPutToHttpFromFile_data();
- void ioPutToHttpFromFile();
- void ioPostToHttpFromFile_data();
- void ioPostToHttpFromFile();
- void ioPostToHttpFromSocket_data();
- void ioPostToHttpFromSocket();
- void ioPostToHttpFromSocketSynchronous();
- void ioPostToHttpFromSocketSynchronous_data();
- void ioPostToHttpFromMiddleOfFileToEnd();
- void ioPostToHttpFromMiddleOfFileFiveBytes();
- void ioPostToHttpFromMiddleOfQBufferFiveBytes();
- void ioPostToHttpNoBufferFlag();
- void ioPostToHttpUploadProgress();
- void ioPostToHttpEmptyUploadProgress();
-
- void lastModifiedHeaderForFile();
- void lastModifiedHeaderForHttp();
-
- void httpCanReadLine();
-
- void rateControl_data();
- void rateControl();
-
- void downloadProgress_data();
- void downloadProgress();
- void uploadProgress_data();
- void uploadProgress();
-
- void chaining_data();
- void chaining();
-
- void receiveCookiesFromHttp_data();
- void receiveCookiesFromHttp();
- void receiveCookiesFromHttpSynchronous_data();
- void receiveCookiesFromHttpSynchronous();
- void sendCookies_data();
- void sendCookies();
- void sendCookiesSynchronous_data();
- void sendCookiesSynchronous();
-
- void nestedEventLoops();
-
- void httpProxyCommands_data();
- void httpProxyCommands();
- void httpProxyCommandsSynchronous_data();
- void httpProxyCommandsSynchronous();
- void proxyChange();
- void authorizationError_data();
- void authorizationError();
-
- void httpConnectionCount();
-
- void httpReUsingConnectionSequential_data();
- void httpReUsingConnectionSequential();
- void httpReUsingConnectionFromFinishedSlot_data();
- void httpReUsingConnectionFromFinishedSlot();
-
- void httpRecursiveCreation();
-
-#ifndef QT_NO_OPENSSL
- void ioPostToHttpsUploadProgress();
- void ignoreSslErrorsList_data();
- void ignoreSslErrorsList();
- void ignoreSslErrorsListWithSlot_data();
- void ignoreSslErrorsListWithSlot();
- void sslConfiguration_data();
- void sslConfiguration();
-#endif
-
- void getAndThenDeleteObject_data();
- void getAndThenDeleteObject();
-
- void symbianOpenCDataUrlCrash();
-
- void getFromHttpIntoBuffer_data();
- void getFromHttpIntoBuffer();
- void getFromHttpIntoBuffer2_data();
- void getFromHttpIntoBuffer2();
- void getFromHttpIntoBufferCanReadLine();
-
- void ioGetFromHttpWithoutContentLength();
-
- void ioGetFromHttpBrokenChunkedEncoding();
- void qtbug12908compressedHttpReply();
- void compressedHttpReplyBrokenGzip();
-
- void getFromUnreachableIp();
-
- void qtbug4121unknownAuthentication();
-
- void qtbug13431replyThrottling();
-
- void httpWithNoCredentialUsage();
-
- void qtbug15311doubleContentLength();
-
- void qtbug18232gzipContentLengthZero();
-
- void synchronousRequest_data();
- void synchronousRequest();
-#ifndef QT_NO_OPENSSL
- void synchronousRequestSslFailure();
-#endif
-
- void httpAbort();
-
- void dontInsertPartialContentIntoTheCache();
-
- void httpUserAgent();
-
- // NOTE: This test must be last!
- void parentingRepliesToTheApp();
-};
-
-bool tst_QNetworkReply::seedCreated = false;
-
-QT_BEGIN_NAMESPACE
-
-namespace QTest {
- template<>
- char *toString(const QNetworkReply::NetworkError& code)
- {
- const QMetaObject *mo = &QNetworkReply::staticMetaObject;
- int index = mo->indexOfEnumerator("NetworkError");
- if (index == -1)
- return qstrdup("");
-
- QMetaEnum qme = mo->enumerator(index);
- return qstrdup(qme.valueToKey(code));
- }
-
- template<>
- char *toString(const QNetworkCookie &cookie)
- {
- return qstrdup(cookie.toRawForm());
- }
-
- template<>
- char *toString(const QList<QNetworkCookie> &list)
- {
- QString result = "QList(";
- bool first = true;
- foreach (QNetworkCookie cookie, list) {
- if (!first)
- result += ", ";
- first = false;
- result += QString::fromLatin1("QNetworkCookie(%1)").arg(QLatin1String(cookie.toRawForm()));
- }
-
- return qstrdup(result.append(')').toLocal8Bit());
- }
-}
-
-QT_END_NAMESPACE
-
-#define RUN_REQUEST(call) \
- do { \
- QString errorMsg = call; \
- if (!errorMsg.isEmpty()) \
- QFAIL(qPrintable(errorMsg)); \
- } while (0);
-
-#ifndef QT_NO_OPENSSL
-static void setupSslServer(QSslSocket* serverSocket)
-{
- serverSocket->setProtocol(QSsl::AnyProtocol);
- serverSocket->setLocalCertificate(SRCDIR "/certs/server.pem");
- serverSocket->setPrivateKey(SRCDIR "/certs/server.key");
-}
-#endif
-
-// Does not work for POST/PUT!
-class MiniHttpServer: public QTcpServer
-{
- Q_OBJECT
-public:
- QTcpSocket *client; // always the last one that was received
- QByteArray dataToTransmit;
- QByteArray receivedData;
- QSemaphore ready;
- bool doClose;
- bool doSsl;
- bool ipv6;
- bool multiple;
- int totalConnections;
-
- MiniHttpServer(const QByteArray &data, bool ssl = false, QThread *thread = 0, bool useipv6 = false)
- : client(0), dataToTransmit(data), doClose(true), doSsl(ssl), ipv6(useipv6),
- multiple(false), totalConnections(0)
- {
- if (useipv6) {
- listen(QHostAddress::AnyIPv6);
- } else {
- listen();
- }
- if (thread) {
- connect(thread, SIGNAL(started()), this, SLOT(threadStartedSlot()));
- moveToThread(thread);
- thread->start();
- ready.acquire();
- }
- }
-
-protected:
- void incomingConnection(int socketDescriptor)
- {
- //qDebug() << "incomingConnection" << socketDescriptor << "doSsl:" << doSsl << "ipv6:" << ipv6;
- if (!doSsl) {
- client = new QTcpSocket;
- client->setSocketDescriptor(socketDescriptor);
- connectSocketSignals();
- } else {
-#ifndef QT_NO_OPENSSL
- QSslSocket *serverSocket = new QSslSocket;
- serverSocket->setParent(this);
- if (serverSocket->setSocketDescriptor(socketDescriptor)) {
- connect(serverSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slotSslErrors(QList<QSslError>)));
- setupSslServer(serverSocket);
- serverSocket->startServerEncryption();
- client = serverSocket;
- connectSocketSignals();
- } else {
- delete serverSocket;
- return;
- }
-#endif
- }
- client->setParent(this);
- ++totalConnections;
- }
-private:
- void connectSocketSignals()
- {
- //qDebug() << "connectSocketSignals" << client;
- connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
- connect(client, SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWrittenSlot()));
- connect(client, SIGNAL(error(QAbstractSocket::SocketError)),
- this, SLOT(slotError(QAbstractSocket::SocketError)));
- }
-
-private slots:
-#ifndef QT_NO_OPENSSL
- void slotSslErrors(const QList<QSslError>& errors)
- {
- qDebug() << "slotSslErrors" << client->errorString() << errors;
- }
-#endif
- void slotError(QAbstractSocket::SocketError err)
- {
- qDebug() << "slotError" << err << client->errorString();
- }
-
-public slots:
- void readyReadSlot()
- {
- receivedData += client->readAll();
- int doubleEndlPos = receivedData.indexOf("\r\n\r\n");
-
- if (doubleEndlPos != -1) {
- // multiple requests incoming. remove the bytes of the current one
- if (multiple)
- receivedData.remove(0, doubleEndlPos+4);
-
- // we need to emulate the bytesWrittenSlot call if the data is empty.
- if (dataToTransmit.size() == 0)
- QMetaObject::invokeMethod(this, "bytesWrittenSlot", Qt::QueuedConnection);
- else
- client->write(dataToTransmit);
- }
- }
-
- void bytesWrittenSlot() {
- if (doClose && client->bytesToWrite() == 0) {
- client->disconnectFromHost();
- disconnect(client, 0, this, 0);
- }
- }
-
- void threadStartedSlot()
- {
- ready.release();
- }
-};
-
-class MyCookieJar: public QNetworkCookieJar
-{
-public:
- inline QList<QNetworkCookie> allCookies() const
- { return QNetworkCookieJar::allCookies(); }
- inline void setAllCookies(const QList<QNetworkCookie> &cookieList)
- { QNetworkCookieJar::setAllCookies(cookieList); }
-};
-
-class MyProxyFactory: public QNetworkProxyFactory
-{
-public:
- int callCount;
- QList<QNetworkProxy> toReturn;
- QNetworkProxyQuery lastQuery;
- inline MyProxyFactory() { clear(); }
-
- inline void clear()
- {
- callCount = 0;
- toReturn = QList<QNetworkProxy>() << QNetworkProxy::DefaultProxy;
- lastQuery = QNetworkProxyQuery();
- }
-
- virtual QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query)
- {
- lastQuery = query;
- ++callCount;
- return toReturn;
- }
-};
-
-class MyMemoryCache: public QAbstractNetworkCache
-{
-public:
- typedef QPair<QNetworkCacheMetaData, QByteArray> CachedContent;
- typedef QHash<QByteArray, CachedContent> CacheData;
- CacheData cache;
-
- MyMemoryCache(QObject *parent) : QAbstractNetworkCache(parent) {}
-
- QNetworkCacheMetaData metaData(const QUrl &url)
- {
- return cache.value(url.toEncoded()).first;
- }
-
- void updateMetaData(const QNetworkCacheMetaData &metaData)
- {
- cache[metaData.url().toEncoded()].first = metaData;
- }
-
- QIODevice *data(const QUrl &url)
- {
- CacheData::ConstIterator it = cache.find(url.toEncoded());
- if (it == cache.constEnd())
- return 0;
- QBuffer *io = new QBuffer(this);
- io->setData(it->second);
- io->open(QIODevice::ReadOnly);
- io->seek(0);
- return io;
- }
-
- bool remove(const QUrl &url)
- {
- cache.remove(url.toEncoded());
- return true;
- }
-
- qint64 cacheSize() const
- {
- qint64 total = 0;
- foreach (const CachedContent &entry, cache)
- total += entry.second.size();
- return total;
- }
-
- QIODevice *prepare(const QNetworkCacheMetaData &)
- {
- qFatal("%s: Should not have tried to add to the cache", Q_FUNC_INFO);
- return 0;
- }
- void insert(QIODevice *)
- {
- qFatal("%s: Should not have tried to add to the cache", Q_FUNC_INFO);
- }
-
- void clear() { cache.clear(); }
-};
-Q_DECLARE_METATYPE(MyMemoryCache::CachedContent)
-Q_DECLARE_METATYPE(MyMemoryCache::CacheData)
-
-class MySpyMemoryCache: public QAbstractNetworkCache
-{
-public:
- MySpyMemoryCache(QObject *parent) : QAbstractNetworkCache(parent) {}
- ~MySpyMemoryCache()
- {
- qDeleteAll(m_buffers);
- m_buffers.clear();
- }
-
- QHash<QUrl, QIODevice*> m_buffers;
- QList<QUrl> m_insertedUrls;
-
- QNetworkCacheMetaData metaData(const QUrl &)
- {
- return QNetworkCacheMetaData();
- }
-
- void updateMetaData(const QNetworkCacheMetaData &)
- {
- }
-
- QIODevice *data(const QUrl &)
- {
- return 0;
- }
-
- bool remove(const QUrl &url)
- {
- delete m_buffers.take(url);
- return m_insertedUrls.removeAll(url) > 0;
- }
-
- qint64 cacheSize() const
- {
- return 0;
- }
-
- QIODevice *prepare(const QNetworkCacheMetaData &metaData)
- {
- QBuffer* buffer = new QBuffer;
- buffer->open(QIODevice::ReadWrite);
- buffer->setProperty("url", metaData.url());
- m_buffers.insert(metaData.url(), buffer);
- return buffer;
- }
-
- void insert(QIODevice *buffer)
- {
- QUrl url = buffer->property("url").toUrl();
- m_insertedUrls << url;
- delete m_buffers.take(url);
- }
-
- void clear() { m_insertedUrls.clear(); }
-};
-
-class DataReader: public QObject
-{
- Q_OBJECT
-public:
- qint64 totalBytes;
- QByteArray data;
- QIODevice *device;
- bool accumulate;
- DataReader(QIODevice *dev, bool acc = true) : totalBytes(0), device(dev), accumulate(acc)
- {
- connect(device, SIGNAL(readyRead()), SLOT(doRead()));
- }
-
-public slots:
- void doRead()
- {
- QByteArray buffer;
- buffer.resize(device->bytesAvailable());
- qint64 bytesRead = device->read(buffer.data(), device->bytesAvailable());
- if (bytesRead == -1) {
- QTestEventLoop::instance().exitLoop();
- return;
- }
- buffer.truncate(bytesRead);
- totalBytes += bytesRead;
-
- if (accumulate)
- data += buffer;
- }
-};
-
-
-class SocketPair: public QObject
-{
- Q_OBJECT
-public:
- QIODevice *endPoints[2];
-
- SocketPair(QObject *parent = 0)
- : QObject(parent)
- {
- endPoints[0] = endPoints[1] = 0;
- }
-
- bool create()
- {
- QTcpServer server;
- server.listen();
-
- QTcpSocket *active = new QTcpSocket(this);
- active->connectToHost("127.0.0.1", server.serverPort());
-#ifndef Q_OS_SYMBIAN
- // need more time as working with embedded
- // device and testing from emualtor
- // things tend to get slower
- if (!active->waitForConnected(1000))
- return false;
-
- if (!server.waitForNewConnection(1000))
- return false;
-#else
- if (!active->waitForConnected(100))
- return false;
-
- if (!server.waitForNewConnection(100))
- return false;
-#endif
- QTcpSocket *passive = server.nextPendingConnection();
- passive->setParent(this);
-
- endPoints[0] = active;
- endPoints[1] = passive;
- return true;
- }
-};
-
-// A blocking tcp server (must be used in a thread) which supports SSL.
-class BlockingTcpServer : public QTcpServer
-{
- Q_OBJECT
-public:
- BlockingTcpServer(bool ssl) : doSsl(ssl), sslSocket(0) {}
-
- QTcpSocket* waitForNextConnectionSocket() {
- waitForNewConnection(-1);
- if (doSsl) {
- if (!sslSocket)
- qFatal("%s: sslSocket should not be null after calling waitForNewConnection()",
- Q_FUNC_INFO);
- return sslSocket;
- } else {
- //qDebug() << "returning nextPendingConnection";
- return nextPendingConnection();
- }
- }
- virtual void incomingConnection(int socketDescriptor)
- {
-#ifndef QT_NO_OPENSSL
- if (doSsl) {
- QSslSocket *serverSocket = new QSslSocket;
- serverSocket->setParent(this);
- serverSocket->setSocketDescriptor(socketDescriptor);
- connect(serverSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slotSslErrors(QList<QSslError>)));
- setupSslServer(serverSocket);
- serverSocket->startServerEncryption();
- sslSocket = serverSocket;
- } else
-#endif
- {
- QTcpServer::incomingConnection(socketDescriptor);
- }
- }
-private slots:
-
-#ifndef QT_NO_OPENSSL
- void slotSslErrors(const QList<QSslError>& errors)
- {
- qDebug() << "slotSslErrors" << sslSocket->errorString() << errors;
- }
-#endif
-
-private:
- const bool doSsl;
- QTcpSocket* sslSocket;
-};
-
-// This server tries to send data as fast as possible (like most servers)
-// but it measures how fast it was able to send it, which shows at which
-// rate the reader is processing the data.
-class FastSender: public QThread
-{
- Q_OBJECT
- QSemaphore ready;
- qint64 wantedSize;
- int port;
- enum Protocol { DebugPipe, ProvidedData };
- const Protocol protocol;
- const bool doSsl;
- const bool fillKernelBuffer;
-public:
- int transferRate;
- QWaitCondition cond;
-
- QByteArray dataToTransmit;
- int dataIndex;
-
- // a server that sends debugpipe data
- FastSender(qint64 size)
- : wantedSize(size), port(-1), protocol(DebugPipe),
- doSsl(false), fillKernelBuffer(true), transferRate(-1),
- dataIndex(0)
- {
- start();
- ready.acquire();
- }
-
- // a server that sends the data provided at construction time, useful for HTTP
- FastSender(const QByteArray& data, bool https, bool fillBuffer)
- : wantedSize(data.size()), port(-1), protocol(ProvidedData),
- doSsl(https), fillKernelBuffer(fillBuffer), transferRate(-1),
- dataToTransmit(data), dataIndex(0)
- {
- start();
- ready.acquire();
- }
-
- inline int serverPort() const { return port; }
-
- int writeNextData(QTcpSocket* socket, qint32 size)
- {
- if (protocol == DebugPipe) {
- QByteArray data;
- QDataStream stream(&data, QIODevice::WriteOnly);
- stream << QVariantMap() << QByteArray(size, 'a');
- socket->write((char*)&size, sizeof size);
- socket->write(data);
- dataIndex += size;
- return size;
- } else {
- const QByteArray data = dataToTransmit.mid(dataIndex, size);
- socket->write(data);
- dataIndex += data.size();
- //qDebug() << "wrote" << dataIndex << "/" << dataToTransmit.size();
- return data.size();
- }
- }
- void writeLastData(QTcpSocket* socket)
- {
- if (protocol == DebugPipe) {
- QByteArray data;
- QDataStream stream(&data, QIODevice::WriteOnly);
- stream << QVariantMap() << QByteArray();
- const qint32 size = data.size();
- socket->write((char*)&size, sizeof size);
- socket->write(data);
- }
- }
-
-protected:
- void run()
- {
- BlockingTcpServer server(doSsl);
- server.listen();
- port = server.serverPort();
- ready.release();
-
- QTcpSocket *client = server.waitForNextConnectionSocket();
-
- // get the "request" packet
- if (!client->waitForReadyRead(2000)) {
- qDebug() << "FastSender:" << client->error() << "waiting for \"request\" packet";
- return;
- }
- client->readAll(); // we're not interested in the actual contents (e.g. HTTP request)
-
- enum { BlockSize = 1024 };
-
- if (fillKernelBuffer) {
-
- // write a bunch of bytes to fill up the buffers
- bool done = false;
- do {
- if (writeNextData(client, BlockSize) < BlockSize) {
- qDebug() << "ERROR: FastSender: not enough data to write in order to fill buffers; or client is reading too fast";
- return;
- }
- while (client->bytesToWrite() > 0) {
- if (!client->waitForBytesWritten(0)) {
- done = true;
- break;
- }
- }
- //qDebug() << "Filling kernel buffer: wrote" << dataIndex << "bytes";
- } while (!done);
-
- qDebug() << "FastSender: ok, kernel buffer is full after writing" << dataIndex << "bytes";
- }
-
- // Tell the client to start reading
- emit dataReady();
-
- // the kernel buffer is full
- // clean up QAbstractSocket's residue:
- while (client->bytesToWrite() > 0) {
- qDebug() << "Still having" << client->bytesToWrite() << "bytes to write, doing that now";
- if (!client->waitForBytesWritten(2000)) {
- qDebug() << "ERROR: FastSender:" << client->error() << "cleaning up residue";
- return;
- }
- }
-
- // now write in "blocking mode", this is where the rate measuring starts
- QTime timer;
- timer.start();
- //const qint64 writtenBefore = dataIndex;
- //qint64 measuredTotalBytes = wantedSize - writtenBefore;
- qint64 measuredSentBytes = 0;
- while (dataIndex < wantedSize) {
- const int remainingBytes = wantedSize - measuredSentBytes;
- const int bytesToWrite = qMin(remainingBytes, static_cast<int>(BlockSize));
- if (bytesToWrite <= 0)
- qFatal("%s: attempt to write %d bytes", Q_FUNC_INFO, bytesToWrite);
- measuredSentBytes += writeNextData(client, bytesToWrite);
-
- while (client->bytesToWrite() > 0) {
- if (!client->waitForBytesWritten(2000)) {
- qDebug() << "ERROR: FastSender:" << client->error() << "during blocking write";
- return;
- }
- }
- /*qDebug() << "FastSender:" << bytesToWrite << "bytes written now;"
- << measuredSentBytes << "measured bytes" << measuredSentBytes + writtenBefore << "total ("
- << measuredSentBytes*100/measuredTotalBytes << "% complete);"
- << timer.elapsed() << "ms elapsed";*/
- }
-
- transferRate = measuredSentBytes * 1000 / timer.elapsed();
- qDebug() << "FastSender: flushed" << measuredSentBytes << "bytes in" << timer.elapsed() << "ms: rate =" << transferRate << "B/s";
-
- // write a "close connection" packet, if the protocol needs it
- writeLastData(client);
- }
-signals:
- void dataReady();
-};
-
-class RateControlledReader: public QObject
-{
- Q_OBJECT
- QIODevice *device;
- int bytesToRead;
- int interval;
- int readBufferSize;
-public:
- QByteArray data;
- qint64 totalBytesRead;
- RateControlledReader(QObject& senderObj, QIODevice *dev, int kbPerSec, int maxBufferSize = 0)
- : device(dev), readBufferSize(maxBufferSize), totalBytesRead(0)
- {
- // determine how often we have to wake up
- int timesPerSecond;
- if (readBufferSize == 0) {
- // The requirement is simply "N KB per seconds"
- timesPerSecond = 20;
- bytesToRead = kbPerSec * 1024 / timesPerSecond;
- } else {
- // The requirement also includes "<readBufferSize> bytes at a time"
- bytesToRead = readBufferSize;
- timesPerSecond = kbPerSec * 1024 / readBufferSize;
- }
- interval = 1000 / timesPerSecond; // in ms
-
- qDebug() << "RateControlledReader: going to read" << bytesToRead
- << "bytes every" << interval << "ms";
- qDebug() << "actual read rate will be"
- << (bytesToRead * 1000 / interval) << "bytes/sec (wanted"
- << kbPerSec * 1024 << "bytes/sec)";
-
- // Wait for data to be readyRead
- bool ok = connect(&senderObj, SIGNAL(dataReady()), this, SLOT(slotDataReady()));
- if (!ok)
- qFatal("%s: Cannot connect dataReady signal", Q_FUNC_INFO);
- }
-
- void wrapUp()
- {
- QByteArray someData = device->read(device->bytesAvailable());
- data += someData;
- totalBytesRead += someData.size();
- qDebug() << "wrapUp: found" << someData.size() << "bytes left. progress" << data.size();
- //qDebug() << "wrapUp: now bytesAvailable=" << device->bytesAvailable();
- }
-
-private slots:
- void slotDataReady()
- {
- //qDebug() << "RateControlledReader: ready to go";
- startTimer(interval);
- }
-
-protected:
- void timerEvent(QTimerEvent *)
- {
- //qDebug() << "RateControlledReader: timerEvent bytesAvailable=" << device->bytesAvailable();
- if (readBufferSize > 0 && device->bytesAvailable() > readBufferSize) {
- // This passes all the time, except in the final flush.
- //qFatal("%s: Too many bytes available", Q_FUNC_INFO);
- }
-
- qint64 bytesRead = 0;
- QTime stopWatch;
- stopWatch.start();
- do {
- if (device->bytesAvailable() == 0) {
- if (stopWatch.elapsed() > 20) {
- qDebug() << "RateControlledReader: Not enough data available for reading, waited too much, timing out";
- break;
- }
- if (!device->waitForReadyRead(5)) {
- qDebug() << "RateControlledReader: Not enough data available for reading, even after waiting 5ms, bailing out";
- break;
- }
- }
- QByteArray someData = device->read(bytesToRead - bytesRead);
- data += someData;
- bytesRead += someData.size();
- //qDebug() << "RateControlledReader: successfully read" << someData.size() << "progress:" << data.size();
- } while (bytesRead < bytesToRead);
- totalBytesRead += bytesRead;
-
- if (bytesRead < bytesToRead)
- qWarning() << "RateControlledReader: WARNING:" << bytesToRead - bytesRead << "bytes not read";
- }
-};
-
-
-tst_QNetworkReply::tst_QNetworkReply()
-{
- qRegisterMetaType<QNetworkReply *>(); // for QSignalSpy
- qRegisterMetaType<QAuthenticator *>();
- qRegisterMetaType<QNetworkProxy>();
-#ifndef QT_NO_OPENSSL
- qRegisterMetaType<QList<QSslError> >();
-#endif
- qRegisterMetaType<QNetworkReply::NetworkError>();
-
- Q_SET_DEFAULT_IAP
-
- testFileName = QDir::currentPath() + "/testfile";
- uniqueExtension = createUniqueExtension();
- cookieJar = new MyCookieJar;
- manager.setCookieJar(cookieJar);
-
- QHostInfo hostInfo = QHostInfo::fromName(QtNetworkSettings::serverName());
-
- proxies << ProxyData(QNetworkProxy::NoProxy, "", false);
-
- if (hostInfo.error() == QHostInfo::NoError && !hostInfo.addresses().isEmpty()) {
- QString proxyserver = hostInfo.addresses().first().toString();
- proxies << ProxyData(QNetworkProxy(QNetworkProxy::HttpProxy, proxyserver, 3128), "+proxy", false)
- << ProxyData(QNetworkProxy(QNetworkProxy::HttpProxy, proxyserver, 3129), "+proxyauth", true)
- // currently unsupported
- // << ProxyData(QNetworkProxy(QNetworkProxy::HttpProxy, proxyserver, 3130), "+proxyauth-ntlm", true);
- << ProxyData(QNetworkProxy(QNetworkProxy::Socks5Proxy, proxyserver, 1080), "+socks", false)
- << ProxyData(QNetworkProxy(QNetworkProxy::Socks5Proxy, proxyserver, 1081), "+socksauth", true);
- } else {
- printf("==================================================================\n");
- printf("Proxy could not be looked up. No proxy will be used while testing!\n");
- printf("==================================================================\n");
- }
-}
-
-tst_QNetworkReply::~tst_QNetworkReply()
-{
-}
-
-
-void tst_QNetworkReply::authenticationRequired(QNetworkReply*, QAuthenticator* auth)
-{
- auth->setUser("httptest");
- auth->setPassword("httptest");
-}
-
-void tst_QNetworkReply::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator* auth)
-{
- auth->setUser("qsockstest");
- auth->setPassword("password");
-}
-
-#ifndef QT_NO_OPENSSL
-void tst_QNetworkReply::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)
-{
- reply->ignoreSslErrors();
- QVERIFY(!errors.isEmpty());
- QVERIFY(!reply->sslConfiguration().isNull());
-}
-
-void tst_QNetworkReply::storeSslConfiguration()
-{
- storedSslConfiguration = QSslConfiguration();
- QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
- if (reply)
- storedSslConfiguration = reply->sslConfiguration();
-}
-#endif
-
-QString tst_QNetworkReply::runMultipartRequest(const QNetworkRequest &request,
- QNetworkReplyPtr &reply,
- QHttpMultiPart *multiPart,
- const QByteArray &verb)
-{
- if (verb == "POST")
- reply = manager.post(request, multiPart);
- else
- reply = manager.put(request, multiPart);
-
- // the code below is copied from tst_QNetworkReply::runSimpleRequest, see below
- reply->setParent(this);
- connect(reply, SIGNAL(finished()), SLOT(finished()));
- connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError()));
- multiPart->setParent(reply);
-
- returnCode = Timeout;
- loop = new QEventLoop;
- QTimer::singleShot(25000, loop, SLOT(quit()));
- int code = returnCode == Timeout ? loop->exec() : returnCode;
- delete loop;
- loop = 0;
-
- switch (code) {
- case Failure:
- return "Request failed: " + reply->errorString();
- case Timeout:
- return "Network timeout";
- }
- return QString();
-}
-
-QString tst_QNetworkReply::runSimpleRequest(QNetworkAccessManager::Operation op,
- const QNetworkRequest &request,
- QNetworkReplyPtr &reply,
- const QByteArray &data)
-{
- switch (op) {
- case QNetworkAccessManager::HeadOperation:
- reply = manager.head(request);
- break;
-
- case QNetworkAccessManager::GetOperation:
- reply = manager.get(request);
- break;
-
- case QNetworkAccessManager::PutOperation:
- reply = manager.put(request, data);
- break;
-
- case QNetworkAccessManager::PostOperation:
- reply = manager.post(request, data);
- break;
-
- case QNetworkAccessManager::DeleteOperation:
- reply = manager.deleteResource(request);
- break;
-
- default:
- qFatal("%s: Invalid/unknown operation requested", Q_FUNC_INFO);
- }
- reply->setParent(this);
-
- returnCode = Timeout;
- int code = Success;
-
- if (request.attribute(QNetworkRequest::SynchronousRequestAttribute).toBool()) {
- if (reply->isFinished())
- code = reply->error() != QNetworkReply::NoError ? Failure : Success;
- else
- code = Failure;
- } else {
- connect(reply, SIGNAL(finished()), SLOT(finished()));
- connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError()));
-
- loop = new QEventLoop;
- QTimer::singleShot(20000, loop, SLOT(quit()));
- code = returnCode == Timeout ? loop->exec() : returnCode;
- delete loop;
- loop = 0;
- }
-
- switch (code) {
- case Failure:
- return "Request failed: " + reply->errorString();
- case Timeout:
- return "Network timeout";
- }
- return QString();
-}
-
-QString tst_QNetworkReply::runCustomRequest(const QNetworkRequest &request,
- QNetworkReplyPtr &reply,
- const QByteArray &verb,
- QIODevice *data)
-{
- reply = manager.sendCustomRequest(request, verb, data);
- reply->setParent(this);
- connect(reply, SIGNAL(finished()), SLOT(finished()));
- connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError()));
-
- returnCode = Timeout;
- loop = new QEventLoop;
- QTimer::singleShot(20000, loop, SLOT(quit()));
- int code = returnCode == Timeout ? loop->exec() : returnCode;
- delete loop;
- loop = 0;
-
- switch (code) {
- case Failure:
- return "Request failed: " + reply->errorString();
- case Timeout:
- return "Network timeout";
- }
- return QString();
-}
-
-void tst_QNetworkReply::finished()
-{
- loop->exit(returnCode = Success);
-}
-
-void tst_QNetworkReply::gotError()
-{
- loop->exit(returnCode = Failure);
- disconnect(QObject::sender(), SIGNAL(finished()), this, 0);
-}
-
-void tst_QNetworkReply::initTestCase()
-{
-#if !defined Q_OS_WIN
- wronlyFileName = QDir::currentPath() + "/write-only";
- QFile wr(wronlyFileName);
- QVERIFY(wr.open(QIODevice::WriteOnly | QIODevice::Truncate));
- wr.setPermissions(QFile::WriteOwner | QFile::WriteUser);
- wr.close();
-#endif
-
- QDir::setSearchPaths("srcdir", QStringList() << SRCDIR);
-#ifndef QT_NO_OPENSSL
- QSslSocket::defaultCaCertificates(); //preload certificates
-#endif
-#ifndef QT_NO_BEARERMANAGEMENT
- netConfMan = new QNetworkConfigurationManager(this);
- networkConfiguration = netConfMan->defaultConfiguration();
- networkSession.reset(new QNetworkSession(networkConfiguration));
- if (!networkSession->isOpen()) {
- networkSession->open();
- QVERIFY(networkSession->waitForOpened(30000));
- }
-#endif
-}
-
-void tst_QNetworkReply::cleanupTestCase()
-{
-#if !defined Q_OS_WIN
- QFile::remove(wronlyFileName);
-#endif
- if (networkSession && networkSession->isOpen()) {
- networkSession->close();
- }
-}
-
-void tst_QNetworkReply::init()
-{
- cleanup();
-}
-
-void tst_QNetworkReply::cleanup()
-{
- QFile file(testFileName);
- QVERIFY(!file.exists() || file.remove());
-
- // clear the internal cache
- manager.clearAccessCache();
- manager.setProxy(QNetworkProxy());
- manager.setCache(0);
-
- // clear cookies
- cookieJar->setAllCookies(QList<QNetworkCookie>());
-}
-
-void tst_QNetworkReply::stateChecking()
-{
- QUrl url = QUrl("file:///");
- QNetworkRequest req(url); // you can't open this file, I know
- QNetworkReplyPtr reply = manager.get(req);
-
- QVERIFY(reply.data());
- QVERIFY(reply->isOpen());
- QVERIFY(reply->isReadable());
- QVERIFY(!reply->isWritable());
-
- // both behaviours are OK since we might change underlying behaviour again
- if (!reply->isFinished())
- QCOMPARE(reply->errorString(), QString("Unknown error"));
- else
- QVERIFY(!reply->errorString().isEmpty());
-
-
- QCOMPARE(reply->manager(), &manager);
- QCOMPARE(reply->request(), req);
- QCOMPARE(int(reply->operation()), int(QNetworkAccessManager::GetOperation));
- // error and not error are OK since we might change underlying behaviour again
- if (!reply->isFinished())
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->url(), url);
-
- reply->abort();
-}
-
-void tst_QNetworkReply::invalidProtocol()
-{
- QUrl url = QUrl::fromEncoded("not-a-known-protocol://foo/bar");
- QNetworkRequest req(url);
- QNetworkReplyPtr reply;
-
- QString errorMsg = "Request failed: Protocol \"not-a-known-protocol\" is unknown";
- QString result = runSimpleRequest(QNetworkAccessManager::GetOperation, req, reply);
- QCOMPARE(result, errorMsg);
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::ProtocolUnknownError);
-}
-
-void tst_QNetworkReply::getFromData_data()
-{
- QTest::addColumn<QString>("request");
- QTest::addColumn<QByteArray>("expected");
- QTest::addColumn<QString>("mimeType");
-
- const QString defaultMimeType("text/plain;charset=US-ASCII");
-
- //QTest::newRow("empty") << "data:" << QByteArray() << defaultMimeType;
- QTest::newRow("empty2") << "data:," << QByteArray() << defaultMimeType;
- QTest::newRow("just-charset_1") << "data:charset=iso-8859-1,"
- << QByteArray() << "text/plain;charset=iso-8859-1";
- QTest::newRow("just-charset_2") << "data:charset = iso-8859-1 ,"
- << QByteArray() << "text/plain;charset = iso-8859-1";
- //QTest::newRow("just-media") << "data:text/xml" << QByteArray() << "text/xml";
- QTest::newRow("just-media2") << "data:text/xml," << QByteArray() << "text/xml";
-
- QTest::newRow("plain_1") << "data:,foo" << QByteArray("foo") << defaultMimeType;
- QTest::newRow("plain_2") << "data:text/html,Hello World" << QByteArray("Hello World")
- << "text/html";
- QTest::newRow("plain_3") << "data:text/html;charset=utf-8,Hello World"
- << QByteArray("Hello World") << "text/html;charset=utf-8";
-
- QTest::newRow("pct_1") << "data:,%3Cbody%20contentEditable%3Dtrue%3E%0D%0A"
- << QByteArray("<body contentEditable=true>\r\n") << defaultMimeType;
- QTest::newRow("pct_2") << "data:text/html;charset=utf-8,%3Cbody%20contentEditable%3Dtrue%3E%0D%0A"
- << QByteArray("<body contentEditable=true>\r\n")
- << "text/html;charset=utf-8";
-
- QTest::newRow("base64-empty_1") << "data:;base64," << QByteArray() << defaultMimeType;
- QTest::newRow("base64-empty_2") << "data:charset=utf-8;base64," << QByteArray()
- << "text/plain;charset=utf-8";
- QTest::newRow("base64-empty_3") << "data:text/html;charset=utf-8;base64,"
- << QByteArray() << "text/html;charset=utf-8";
-
- QTest::newRow("base64_1") << "data:;base64,UXQgaXMgZ3JlYXQh" << QByteArray("Qt is great!")
- << defaultMimeType;
- QTest::newRow("base64_2") << "data:charset=utf-8;base64,UXQgaXMgZ3JlYXQh"
- << QByteArray("Qt is great!") << "text/plain;charset=utf-8";
- QTest::newRow("base64_3") << "data:text/html;charset=utf-8;base64,UXQgaXMgZ3JlYXQh"
- << QByteArray("Qt is great!") << "text/html;charset=utf-8";
-
- QTest::newRow("pct-nul") << "data:,a%00g" << QByteArray("a\0g", 3) << defaultMimeType;
- QTest::newRow("base64-nul") << "data:;base64,YQBn" << QByteArray("a\0g", 3) << defaultMimeType;
- QTest::newRow("pct-nonutf8") << "data:,a%E1g" << QByteArray("a\xE1g", 3) << defaultMimeType;
-
- QTest::newRow("base64")
- << QString::fromLatin1("data:application/xml;base64,PGUvPg==")
- << QByteArray("<e/>")
- << "application/xml";
-
- QTest::newRow("base64, no media type")
- << QString::fromLatin1("data:;base64,PGUvPg==")
- << QByteArray("<e/>")
- << defaultMimeType;
-
- QTest::newRow("Percent encoding")
- << QString::fromLatin1("data:application/xml,%3Ce%2F%3E")
- << QByteArray("<e/>")
- << "application/xml";
-
- QTest::newRow("Percent encoding, no media type")
- << QString::fromLatin1("data:,%3Ce%2F%3E")
- << QByteArray("<e/>")
- << defaultMimeType;
-
- QTest::newRow("querychars")
- << QString::fromLatin1("data:,foo?x=0&y=0")
- << QByteArray("foo?x=0&y=0")
- << defaultMimeType;
-
- QTest::newRow("css") << "data:text/css,div%20{%20border-right:%20solid;%20}"
- << QByteArray("div { border-right: solid; }")
- << "text/css";
-}
-
-void tst_QNetworkReply::getFromData()
-{
- QFETCH(QString, request);
- QFETCH(QByteArray, expected);
- QFETCH(QString, mimeType);
-
- QUrl url = QUrl::fromEncoded(request.toLatin1());
- QNetworkRequest req(url);
- QNetworkReplyPtr reply;
-
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, req, reply));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader).toString(), mimeType);
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(expected.size()));
- QCOMPARE(reply->readAll(), expected);
-}
-
-void tst_QNetworkReply::getFromFile()
-{
- // create the file:
- QTemporaryFile file(QDir::currentPath() + "/temp-XXXXXX");
- file.setAutoRemove(true);
- QVERIFY(file.open());
-
- QNetworkRequest request(QUrl::fromLocalFile(file.fileName()));
- QNetworkReplyPtr reply;
-
- static const char fileData[] = "This is some data that is in the file.\r\n";
- QByteArray data = QByteArray::fromRawData(fileData, sizeof fileData - 1);
- QVERIFY(file.write(data) == data.size());
- file.flush();
- QCOMPARE(file.size(), qint64(data.size()));
-
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), file.size());
- QCOMPARE(reply->readAll(), data);
-
- // make the file bigger
- file.resize(0);
- const int multiply = (128 * 1024) / (sizeof fileData - 1);
- for (int i = 0; i < multiply; ++i)
- file.write(fileData, sizeof fileData - 1);
- file.flush();
-
- // run again
- reply = 0;
-
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), file.size());
- QCOMPARE(qint64(reply->readAll().size()), file.size());
-}
-
-void tst_QNetworkReply::getFromFileSpecial_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<QString>("url");
-
- QTest::newRow("resource") << ":/resource" << "qrc:/resource";
- QTest::newRow("search-path") << "srcdir:/rfc3252.txt" << "srcdir:/rfc3252.txt";
- QTest::newRow("bigfile-path") << "srcdir:/bigfile" << "srcdir:/bigfile";
-#ifdef Q_OS_WIN
- QTest::newRow("smb-path") << "srcdir:/smb-file.txt" << "file://" + QtNetworkSettings::winServerName() + "/testshare/test.pri";
-#endif
-}
-
-void tst_QNetworkReply::getFromFileSpecial()
-{
- QFETCH(QString, fileName);
- QFETCH(QString, url);
-
- // open the resource so we can find out its size
- QFile resource(fileName);
- QVERIFY(resource.open(QIODevice::ReadOnly));
-
- QNetworkRequest request;
- QNetworkReplyPtr reply;
- request.setUrl(url);
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), resource.size());
- QCOMPARE(reply->readAll(), resource.readAll());
-}
-
-void tst_QNetworkReply::getFromFtp_data()
-{
- QTest::addColumn<QString>("referenceName");
- QTest::addColumn<QString>("url");
-
- QTest::newRow("rfc3252.txt") << SRCDIR "/rfc3252.txt" << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt";
- QTest::newRow("bigfile") << SRCDIR "/bigfile" << "ftp://" + QtNetworkSettings::serverName() + "/qtest/bigfile";
-}
-
-void tst_QNetworkReply::getFromFtp()
-{
- QFETCH(QString, referenceName);
- QFETCH(QString, url);
-
- QFile reference(referenceName);
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- QNetworkRequest request(url);
- QNetworkReplyPtr reply;
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
- QCOMPARE(reply->readAll(), reference.readAll());
-}
-
-void tst_QNetworkReply::getFromHttp_data()
-{
- QTest::addColumn<QString>("referenceName");
- QTest::addColumn<QString>("url");
-
- QTest::newRow("success-internal") << SRCDIR "/rfc3252.txt" << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt";
- QTest::newRow("success-external") << SRCDIR "/rfc3252.txt" << "http://www.ietf.org/rfc/rfc3252.txt";
- QTest::newRow("bigfile-internal") << SRCDIR "/bigfile" << "http://" + QtNetworkSettings::serverName() + "/qtest/bigfile";
-}
-
-void tst_QNetworkReply::getFromHttp()
-{
- QFETCH(QString, referenceName);
- QFETCH(QString, url);
-
- QFile reference(referenceName);
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- QNetworkRequest request(url);
- QNetworkReplyPtr reply;
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(reply->size(), reference.size());
- // only compare when the header is set.
- if (reply->header(QNetworkRequest::ContentLengthHeader).isValid())
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
-
- // We know our internal server is apache..
- if (qstrcmp(QTest::currentDataTag(), "success-internal") == 0)
- QVERIFY(reply->header(QNetworkRequest::ServerHeader).toString().contains("Apache"));
-
- QCOMPARE(reply->readAll(), reference.readAll());
-}
-
-void tst_QNetworkReply::getErrors_data()
-{
- QTest::addColumn<QString>("url");
- QTest::addColumn<int>("error");
- QTest::addColumn<int>("httpStatusCode");
- QTest::addColumn<bool>("dataIsEmpty");
-
- // empties
- QTest::newRow("empty-url") << QString() << int(QNetworkReply::ProtocolUnknownError) << 0 << true;
- QTest::newRow("empty-scheme-host") << SRCDIR "/rfc3252.txt" << int(QNetworkReply::ProtocolUnknownError) << 0 << true;
- QTest::newRow("empty-scheme") << "//" + QtNetworkSettings::winServerName() + "/testshare/test.pri"
- << int(QNetworkReply::ProtocolUnknownError) << 0 << true;
-
- // file: errors
- QTest::newRow("file-host") << "file://this-host-doesnt-exist.troll.no/foo.txt"
-#if !defined Q_OS_WIN
- << int(QNetworkReply::ProtocolInvalidOperationError) << 0 << true;
-#else
- << int(QNetworkReply::ContentNotFoundError) << 0 << true;
-#endif
- QTest::newRow("file-no-path") << "file://localhost"
- << int(QNetworkReply::ContentOperationNotPermittedError) << 0 << true;
- QTest::newRow("file-is-dir") << QUrl::fromLocalFile(QDir::currentPath()).toString()
- << int(QNetworkReply::ContentOperationNotPermittedError) << 0 << true;
- QTest::newRow("file-exist") << QUrl::fromLocalFile(QDir::currentPath() + "/this-file-doesnt-exist.txt").toString()
- << int(QNetworkReply::ContentNotFoundError) << 0 << true;
-#if !defined Q_OS_WIN && !defined(Q_OS_SYMBIAN)
- QTest::newRow("file-is-wronly") << QUrl::fromLocalFile(wronlyFileName).toString()
- << int(QNetworkReply::ContentAccessDenied) << 0 << true;
-#endif
- if (QFile::exists("/etc/shadow"))
- QTest::newRow("file-permissions") << "file:/etc/shadow"
- << int(QNetworkReply::ContentAccessDenied) << 0 << true;
-
- // ftp: errors
- QTest::newRow("ftp-host") << "ftp://this-host-doesnt-exist.troll.no/foo.txt"
- << int(QNetworkReply::HostNotFoundError) << 0 << true;
- QTest::newRow("ftp-no-path") << "ftp://" + QtNetworkSettings::serverName()
- << int(QNetworkReply::ContentOperationNotPermittedError) << 0 << true;
- QTest::newRow("ftp-is-dir") << "ftp://" + QtNetworkSettings::serverName() + "/qtest"
- << int(QNetworkReply::ContentOperationNotPermittedError) << 0 << true;
- QTest::newRow("ftp-dir-not-readable") << "ftp://" + QtNetworkSettings::serverName() + "/pub/dir-not-readable/foo.txt"
- << int(QNetworkReply::ContentAccessDenied) << 0 << true;
- QTest::newRow("ftp-file-not-readable") << "ftp://" + QtNetworkSettings::serverName() + "/pub/file-not-readable.txt"
- << int(QNetworkReply::ContentAccessDenied) << 0 << true;
- QTest::newRow("ftp-exist") << "ftp://" + QtNetworkSettings::serverName() + "/pub/this-file-doesnt-exist.txt"
- << int(QNetworkReply::ContentNotFoundError) << 0 << true;
-
- // http: errors
- QTest::newRow("http-host") << "http://this-host-will-never-exist.troll.no/"
- << int(QNetworkReply::HostNotFoundError) << 0 << true;
- QTest::newRow("http-exist") << "http://" + QtNetworkSettings::serverName() + "/this-file-doesnt-exist.txt"
- << int(QNetworkReply::ContentNotFoundError) << 404 << false;
- QTest::newRow("http-authentication") << "http://" + QtNetworkSettings::serverName() + "/qtest/rfcs-auth"
- << int(QNetworkReply::AuthenticationRequiredError) << 401 << false;
-}
-
-void tst_QNetworkReply::getErrors()
-{
- QFETCH(QString, url);
- QNetworkRequest request(url);
-
- QNetworkReplyPtr reply = manager.get(request);
- reply->setParent(this); // we have expect-fails
-
- if (!reply->isFinished())
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- // now run the request:
- connect(reply, SIGNAL(finished()),
- &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- //qDebug() << reply->errorString();
-
- QFETCH(int, error);
- QEXPECT_FAIL("ftp-is-dir", "QFtp cannot provide enough detail", Abort);
- // the line below is not necessary
- QEXPECT_FAIL("ftp-dir-not-readable", "QFtp cannot provide enough detail", Abort);
- QCOMPARE(reply->error(), QNetworkReply::NetworkError(error));
-
- QTEST(reply->readAll().isEmpty(), "dataIsEmpty");
-
- QVERIFY(reply->isFinished());
- QVERIFY(!reply->isRunning());
-
- QFETCH(int, httpStatusCode);
- if (httpStatusCode != 0) {
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), httpStatusCode);
- }
-}
-
-static inline QByteArray md5sum(const QByteArray &data)
-{
- return QCryptographicHash::hash(data, QCryptographicHash::Md5);
-}
-
-void tst_QNetworkReply::putToFile_data()
-{
- QTest::addColumn<QByteArray>("data");
- QTest::addColumn<QByteArray>("md5sum");
-
- QByteArray data;
- data = "";
- QTest::newRow("empty") << data << md5sum(data);
-
- data = "This is a normal message.";
- QTest::newRow("generic") << data << md5sum(data);
-
- data = "This is a message to show that Qt rocks!\r\n\n";
- QTest::newRow("small") << data << md5sum(data);
-
- data = QByteArray("abcd\0\1\2\abcd",12);
- QTest::newRow("with-nul") << data << md5sum(data);
-
- data = QByteArray(4097, '\4');
- QTest::newRow("4k+1") << data << md5sum(data);
-
- data = QByteArray(128*1024+1, '\177');
- QTest::newRow("128k+1") << data << md5sum(data);
-
- data = QByteArray(2*1024*1024+1, '\177');
- QTest::newRow("2MB+1") << data << md5sum(data);
-}
-
-void tst_QNetworkReply::putToFile()
-{
- QFile file(testFileName);
-
- QUrl url = QUrl::fromLocalFile(file.fileName());
- QNetworkRequest request(url);
- QNetworkReplyPtr reply;
-
- QFETCH(QByteArray, data);
-
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
- QVERIFY(reply->readAll().isEmpty());
-
- QVERIFY(file.open(QIODevice::ReadOnly));
- QCOMPARE(file.size(), qint64(data.size()));
- QByteArray contents = file.readAll();
- QCOMPARE(contents, data);
-}
-
-void tst_QNetworkReply::putToFtp_data()
-{
- putToFile_data();
-}
-
-void tst_QNetworkReply::putToFtp()
-{
- QUrl url("ftp://" + QtNetworkSettings::serverName());
- url.setPath(QString("/qtest/upload/qnetworkaccess-putToFtp-%1-%2")
- .arg(QTest::currentDataTag())
- .arg(uniqueExtension));
-
- QNetworkRequest request(url);
- QNetworkReplyPtr reply;
-
- QFETCH(QByteArray, data);
-
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
- QVERIFY(reply->readAll().isEmpty());
-
- // download the file again from FTP to make sure it was uploaded
- // correctly
- QFtp ftp;
- ftp.connectToHost(url.host());
- ftp.login();
- ftp.get(url.path());
-
- QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- QByteArray uploaded = ftp.readAll();
- QCOMPARE(uploaded.size(), data.size());
- QCOMPARE(uploaded, data);
-
- ftp.close();
- QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
-}
-
-void tst_QNetworkReply::putToHttp_data()
-{
- putToFile_data();
-}
-
-void tst_QNetworkReply::putToHttp()
-{
- QUrl url("http://" + QtNetworkSettings::serverName());
- url.setPath(QString("/dav/qnetworkaccess-putToHttp-%1-%2")
- .arg(QTest::currentDataTag())
- .arg(uniqueExtension));
-
- QNetworkRequest request(url);
- QNetworkReplyPtr reply;
-
- QFETCH(QByteArray, data);
-
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); // 201 Created
-
- // download the file again from HTTP to make sure it was uploaded
- // correctly. HTTP/0.9 is enough
- QTcpSocket socket;
- socket.connectToHost(QtNetworkSettings::serverName(), 80);
- socket.write("GET " + url.toEncoded(QUrl::RemoveScheme | QUrl::RemoveAuthority) + "\r\n");
- if (!socket.waitForDisconnected(10000))
- QFAIL("Network timeout");
-
- QByteArray uploadedData = socket.readAll();
- QCOMPARE(uploadedData, data);
-}
-
-void tst_QNetworkReply::putToHttpSynchronous_data()
-{
- uniqueExtension = createUniqueExtension();
- putToFile_data();
-}
-
-void tst_QNetworkReply::putToHttpSynchronous()
-{
- QUrl url("http://" + QtNetworkSettings::serverName());
- url.setPath(QString("/dav/qnetworkaccess-putToHttp-%1-%2")
- .arg(QTest::currentDataTag())
- .arg(uniqueExtension));
-
- QNetworkRequest request(url);
- QNetworkReplyPtr reply;
-
- QFETCH(QByteArray, data);
-
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); // 201 Created
-
- // download the file again from HTTP to make sure it was uploaded
- // correctly. HTTP/0.9 is enough
- QTcpSocket socket;
- socket.connectToHost(QtNetworkSettings::serverName(), 80);
- socket.write("GET " + url.toEncoded(QUrl::RemoveScheme | QUrl::RemoveAuthority) + "\r\n");
- if (!socket.waitForDisconnected(10000))
- QFAIL("Network timeout");
-
- QByteArray uploadedData = socket.readAll();
- QCOMPARE(uploadedData, data);
-}
-
-void tst_QNetworkReply::postToHttp_data()
-{
- putToFile_data();
-}
-
-void tst_QNetworkReply::postToHttp()
-{
- QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi");
-
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
- QNetworkReplyPtr reply;
-
- QFETCH(QByteArray, data);
-
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
-
- QFETCH(QByteArray, md5sum);
- QByteArray uploadedData = reply->readAll().trimmed();
- QCOMPARE(uploadedData, md5sum.toHex());
-}
-
-void tst_QNetworkReply::postToHttpSynchronous_data()
-{
- putToFile_data();
-}
-
-void tst_QNetworkReply::postToHttpSynchronous()
-{
- QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi");
-
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
-
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- QNetworkReplyPtr reply;
-
- QFETCH(QByteArray, data);
-
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
-
- QFETCH(QByteArray, md5sum);
- QByteArray uploadedData = reply->readAll().trimmed();
- QCOMPARE(uploadedData, md5sum.toHex());
-}
-
-void tst_QNetworkReply::postToHttpMultipart_data()
-{
- QTest::addColumn<QUrl>("url");
- QTest::addColumn<QHttpMultiPart *>("multiPart");
- QTest::addColumn<QByteArray>("expectedReplyData");
- QTest::addColumn<QByteArray>("contentType");
-
- QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/multipart.cgi");
- QByteArray expectedData;
-
-
- // empty parts
-
- QHttpMultiPart *emptyMultiPart = new QHttpMultiPart;
- QTest::newRow("empty") << url << emptyMultiPart << expectedData << QByteArray("mixed");
-
- QHttpMultiPart *emptyRelatedMultiPart = new QHttpMultiPart;
- emptyRelatedMultiPart->setContentType(QHttpMultiPart::RelatedType);
- QTest::newRow("empty-related") << url << emptyRelatedMultiPart << expectedData << QByteArray("related");
-
- QHttpMultiPart *emptyAlternativeMultiPart = new QHttpMultiPart;
- emptyAlternativeMultiPart->setContentType(QHttpMultiPart::AlternativeType);
- QTest::newRow("empty-alternative") << url << emptyAlternativeMultiPart << expectedData << QByteArray("alternative");
-
-
- // text-only parts
-
- QHttpPart textPart;
- textPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain"));
- textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\""));
- textPart.setBody("7 bytes");
- QHttpMultiPart *multiPart1 = new QHttpMultiPart;
- multiPart1->setContentType(QHttpMultiPart::FormDataType);
- multiPart1->append(textPart);
- expectedData = "key: text, value: 7 bytes\n";
- QTest::newRow("text") << url << multiPart1 << expectedData << QByteArray("form-data");
-
- QHttpMultiPart *customMultiPart = new QHttpMultiPart;
- customMultiPart->append(textPart);
- expectedData = "header: Content-Type, value: 'text/plain'\n"
- "header: Content-Disposition, value: 'form-data; name=\"text\"'\n"
- "content: 7 bytes\n"
- "\n";
- QTest::newRow("text-custom") << url << customMultiPart << expectedData << QByteArray("custom");
-
- QHttpPart textPart2;
- textPart2.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain"));
- textPart2.setRawHeader("myRawHeader", "myValue");
- textPart2.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text2\""));
- textPart2.setBody("some more bytes");
- textPart2.setBodyDevice((QIODevice *) 1); // test whether setting and unsetting of the device works
- textPart2.setBodyDevice(0);
- QHttpMultiPart *multiPart2 = new QHttpMultiPart;
- multiPart2->setContentType(QHttpMultiPart::FormDataType);
- multiPart2->append(textPart);
- multiPart2->append(textPart2);
- expectedData = "key: text2, value: some more bytes\n"
- "key: text, value: 7 bytes\n";
- QTest::newRow("text-text") << url << multiPart2 << expectedData << QByteArray("form-data");
-
-
- QHttpPart textPart3;
- textPart3.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain"));
- textPart3.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text3\""));
- textPart3.setRawHeader("Content-Location", "http://my.test.location.tld");
- textPart3.setBody("even more bytes");
- QHttpMultiPart *multiPart3 = new QHttpMultiPart;
- multiPart3->setContentType(QHttpMultiPart::AlternativeType);
- multiPart3->append(textPart);
- multiPart3->append(textPart2);
- multiPart3->append(textPart3);
- expectedData = "header: Content-Type, value: 'text/plain'\n"
- "header: Content-Disposition, value: 'form-data; name=\"text\"'\n"
- "content: 7 bytes\n"
- "\n"
- "header: Content-Type, value: 'text/plain'\n"
- "header: myRawHeader, value: 'myValue'\n"
- "header: Content-Disposition, value: 'form-data; name=\"text2\"'\n"
- "content: some more bytes\n"
- "\n"
- "header: Content-Type, value: 'text/plain'\n"
- "header: Content-Disposition, value: 'form-data; name=\"text3\"'\n"
- "header: Content-Location, value: 'http://my.test.location.tld'\n"
- "content: even more bytes\n\n";
- QTest::newRow("text-text-text") << url << multiPart3 << expectedData << QByteArray("alternative");
-
-
-
- // text and image parts
-
- QHttpPart imagePart11;
- imagePart11.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
- imagePart11.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage\""));
- imagePart11.setRawHeader("Content-Location", "http://my.test.location.tld");
- imagePart11.setRawHeader("Content-ID", "my@id.tld");
- QFile *file11 = new QFile(SRCDIR "/image1.jpg");
- file11->open(QIODevice::ReadOnly);
- imagePart11.setBodyDevice(file11);
- QHttpMultiPart *imageMultiPart1 = new QHttpMultiPart(QHttpMultiPart::FormDataType);
- imageMultiPart1->append(imagePart11);
- file11->setParent(imageMultiPart1);
- expectedData = "key: testImage, value: 87ef3bb319b004ba9e5e9c9fa713776e\n"; // md5 sum of file
- QTest::newRow("image") << url << imageMultiPart1 << expectedData << QByteArray("form-data");
-
- QHttpPart imagePart21;
- imagePart21.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
- imagePart21.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage1\""));
- imagePart21.setRawHeader("Content-Location", "http://my.test.location.tld");
- imagePart21.setRawHeader("Content-ID", "my@id.tld");
- QFile *file21 = new QFile(SRCDIR "/image1.jpg");
- file21->open(QIODevice::ReadOnly);
- imagePart21.setBodyDevice(file21);
- QHttpMultiPart *imageMultiPart2 = new QHttpMultiPart();
- imageMultiPart2->setContentType(QHttpMultiPart::FormDataType);
- imageMultiPart2->append(textPart);
- imageMultiPart2->append(imagePart21);
- file21->setParent(imageMultiPart2);
- QHttpPart imagePart22;
- imagePart22.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
- imagePart22.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage2\""));
- QFile *file22 = new QFile(SRCDIR "/image2.jpg");
- file22->open(QIODevice::ReadOnly);
- imagePart22.setBodyDevice(file22);
- imageMultiPart2->append(imagePart22);
- file22->setParent(imageMultiPart2);
- expectedData = "key: testImage1, value: 87ef3bb319b004ba9e5e9c9fa713776e\n"
- "key: text, value: 7 bytes\n"
- "key: testImage2, value: 483761b893f7fb1bd2414344cd1f3dfb\n";
- QTest::newRow("text-image-image") << url << imageMultiPart2 << expectedData << QByteArray("form-data");
-
-
- QHttpPart imagePart31;
- imagePart31.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
- imagePart31.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage1\""));
- imagePart31.setRawHeader("Content-Location", "http://my.test.location.tld");
- imagePart31.setRawHeader("Content-ID", "my@id.tld");
- QFile *file31 = new QFile(SRCDIR "/image1.jpg");
- file31->open(QIODevice::ReadOnly);
- imagePart31.setBodyDevice(file31);
- QHttpMultiPart *imageMultiPart3 = new QHttpMultiPart(QHttpMultiPart::FormDataType);
- imageMultiPart3->append(imagePart31);
- file31->setParent(imageMultiPart3);
- QHttpPart imagePart32;
- imagePart32.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
- imagePart32.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage2\""));
- QFile *file32 = new QFile(SRCDIR "/image2.jpg");
- file32->open(QIODevice::ReadOnly);
- imagePart32.setBodyDevice(file31); // check that resetting works
- imagePart32.setBodyDevice(file32);
- imageMultiPart3->append(imagePart32);
- file32->setParent(imageMultiPart3);
- QHttpPart imagePart33;
- imagePart33.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
- imagePart33.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage3\""));
- QFile *file33 = new QFile(SRCDIR "/image3.jpg");
- file33->open(QIODevice::ReadOnly);
- imagePart33.setBodyDevice(file33);
- imageMultiPart3->append(imagePart33);
- file33->setParent(imageMultiPart3);
- expectedData = "key: testImage1, value: 87ef3bb319b004ba9e5e9c9fa713776e\n"
- "key: testImage2, value: 483761b893f7fb1bd2414344cd1f3dfb\n"
- "key: testImage3, value: ab0eb6fd4fcf8b4436254870b4513033\n";
- QTest::newRow("3-images") << url << imageMultiPart3 << expectedData << QByteArray("form-data");
-
-
- // note: nesting multiparts is not working currently; for that, the outputDevice would need to be public
-
-// QHttpPart imagePart41;
-// imagePart41.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
-// QFile *file41 = new QFile(SRCDIR "/image1.jpg");
-// file41->open(QIODevice::ReadOnly);
-// imagePart41.setBodyDevice(file41);
-//
-// QHttpMultiPart *innerMultiPart = new QHttpMultiPart();
-// innerMultiPart->setContentType(QHttpMultiPart::FormDataType);
-// textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant());
-// innerMultiPart->append(textPart);
-// innerMultiPart->append(imagePart41);
-// textPart2.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant());
-// innerMultiPart->append(textPart2);
-//
-// QHttpPart nestedPart;
-// nestedPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"nestedMessage"));
-// nestedPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("multipart/alternative; boundary=\"" + innerMultiPart->boundary() + "\""));
-// innerMultiPart->outputDevice()->open(QIODevice::ReadOnly);
-// nestedPart.setBodyDevice(innerMultiPart->outputDevice());
-//
-// QHttpMultiPart *outerMultiPart = new QHttpMultiPart;
-// outerMultiPart->setContentType(QHttpMultiPart::FormDataType);
-// outerMultiPart->append(textPart);
-// outerMultiPart->append(nestedPart);
-// outerMultiPart->append(textPart2);
-// expectedData = "nothing"; // the CGI.pm module running on the test server does not understand nested multiparts
-// openFiles.clear();
-// openFiles << file41;
-// QTest::newRow("nested") << url << outerMultiPart << expectedData << openFiles;
-
-
- // test setting large chunks of content with a byte array instead of a device (DISCOURAGED because of high memory consumption,
- // but we need to test that the behavior is correct)
- QHttpPart imagePart51;
- imagePart51.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
- imagePart51.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage\""));
- QFile *file51 = new QFile(SRCDIR "/image1.jpg");
- file51->open(QIODevice::ReadOnly);
- QByteArray imageData = file51->readAll();
- file51->close();
- delete file51;
- imagePart51.setBody("7 bytes"); // check that resetting works
- imagePart51.setBody(imageData);
- QHttpMultiPart *imageMultiPart5 = new QHttpMultiPart;
- imageMultiPart5->setContentType(QHttpMultiPart::FormDataType);
- imageMultiPart5->append(imagePart51);
- expectedData = "key: testImage, value: 87ef3bb319b004ba9e5e9c9fa713776e\n"; // md5 sum of file
- QTest::newRow("image-as-content") << url << imageMultiPart5 << expectedData << QByteArray("form-data");
-}
-
-void tst_QNetworkReply::postToHttpMultipart()
-{
- QFETCH(QUrl, url);
-
- static QSet<QByteArray> boundaries;
-
- QNetworkRequest request(url);
- QNetworkReplyPtr reply;
-
- QFETCH(QHttpMultiPart *, multiPart);
- QFETCH(QByteArray, expectedReplyData);
- QFETCH(QByteArray, contentType);
-
- // hack for testing the setting of the content-type header by hand:
- if (contentType == "custom") {
- QByteArray contentType("multipart/custom; boundary=\"" + multiPart->boundary() + "\"");
- request.setHeader(QNetworkRequest::ContentTypeHeader, contentType);
- }
-
- QVERIFY2(! boundaries.contains(multiPart->boundary()), "boundary '" + multiPart->boundary() + "' has been created twice");
- boundaries.insert(multiPart->boundary());
-
- RUN_REQUEST(runMultipartRequest(request, reply, multiPart, "POST"));
- multiPart->deleteLater();
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
-
- QVERIFY(multiPart->boundary().count() > 20); // check that there is randomness after the "boundary_.oOo._" string
- QVERIFY(multiPart->boundary().count() < 70);
- QByteArray replyData = reply->readAll();
-
- expectedReplyData.prepend("content type: multipart/" + contentType + "; boundary=\"" + multiPart->boundary() + "\"\n");
-// QEXPECT_FAIL("nested", "the server does not understand nested multipart messages", Continue); // see above
- QCOMPARE(replyData, expectedReplyData);
-}
-
-void tst_QNetworkReply::putToHttpMultipart_data()
-{
- postToHttpMultipart_data();
-}
-
-void tst_QNetworkReply::putToHttpMultipart()
-{
- QSKIP("test server script cannot handle PUT data yet", SkipAll);
- QFETCH(QUrl, url);
-
- static QSet<QByteArray> boundaries;
-
- QNetworkRequest request(url);
- QNetworkReplyPtr reply;
-
- QFETCH(QHttpMultiPart *, multiPart);
- QFETCH(QByteArray, expectedReplyData);
- QFETCH(QByteArray, contentType);
-
- // hack for testing the setting of the content-type header by hand:
- if (contentType == "custom") {
- QByteArray contentType("multipart/custom; boundary=\"" + multiPart->boundary() + "\"");
- request.setHeader(QNetworkRequest::ContentTypeHeader, contentType);
- }
-
- QVERIFY2(! boundaries.contains(multiPart->boundary()), "boundary '" + multiPart->boundary() + "' has been created twice");
- boundaries.insert(multiPart->boundary());
-
- RUN_REQUEST(runMultipartRequest(request, reply, multiPart, "PUT"));
- multiPart->deleteLater();
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
-
- QVERIFY(multiPart->boundary().count() > 20); // check that there is randomness after the "boundary_.oOo._" string
- QVERIFY(multiPart->boundary().count() < 70);
- QByteArray replyData = reply->readAll();
-
- expectedReplyData.prepend("content type: multipart/" + contentType + "; boundary=\"" + multiPart->boundary() + "\"\n");
-// QEXPECT_FAIL("nested", "the server does not understand nested multipart messages", Continue); // see above
- QCOMPARE(replyData, expectedReplyData);
-}
-
-void tst_QNetworkReply::deleteFromHttp_data()
-{
- QTest::addColumn<QUrl>("url");
- QTest::addColumn<int>("resultCode");
- QTest::addColumn<QNetworkReply::NetworkError>("error");
-
- // for status codes to expect, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
-
- QTest::newRow("405-method-not-allowed") << QUrl("http://" + QtNetworkSettings::serverName() + "/index.html") << 405 << QNetworkReply::ContentOperationNotPermittedError;
- QTest::newRow("200-ok") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/http-delete.cgi?200-ok") << 200 << QNetworkReply::NoError;
- QTest::newRow("202-accepted") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/http-delete.cgi?202-accepted") << 202 << QNetworkReply::NoError;
- QTest::newRow("204-no-content") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/http-delete.cgi?204-no-content") << 204 << QNetworkReply::NoError;
- QTest::newRow("404-not-found") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/http-delete.cgi?404-not-found") << 404 << QNetworkReply::ContentNotFoundError;
-}
-
-void tst_QNetworkReply::deleteFromHttp()
-{
- QFETCH(QUrl, url);
- QFETCH(int, resultCode);
- QFETCH(QNetworkReply::NetworkError, error);
- QNetworkRequest request(url);
- QNetworkReplyPtr reply;
- runSimpleRequest(QNetworkAccessManager::DeleteOperation, request, reply, 0);
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), error);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), resultCode);
-}
-
-void tst_QNetworkReply::putGetDeleteGetFromHttp_data()
-{
- QTest::addColumn<QUrl>("putUrl");
- QTest::addColumn<int>("putResultCode");
- QTest::addColumn<QNetworkReply::NetworkError>("putError");
- QTest::addColumn<QUrl>("deleteUrl");
- QTest::addColumn<int>("deleteResultCode");
- QTest::addColumn<QNetworkReply::NetworkError>("deleteError");
- QTest::addColumn<QUrl>("get2Url");
- QTest::addColumn<int>("get2ResultCode");
- QTest::addColumn<QNetworkReply::NetworkError>("get2Error");
-
- QUrl url("http://" + QtNetworkSettings::serverName());
- url.setPath(QString("/dav/qnetworkaccess-putToHttp-%1-%2")
- .arg(QTest::currentDataTag())
- .arg(uniqueExtension));
-
- // first use case: put, get (to check it is there), delete, get (to check it is not there anymore)
- QTest::newRow("success") << url << 201 << QNetworkReply::NoError << url << 204 << QNetworkReply::NoError << url << 404 << QNetworkReply::ContentNotFoundError;
-
- QUrl wrongUrl("http://" + QtNetworkSettings::serverName());
- wrongUrl.setPath(QString("/dav/qnetworkaccess-thisURLisNotAvailable"));
-
- // second use case: put, get (to check it is there), delete wrong URL, get (to check it is still there)
- QTest::newRow("delete-error") << url << 201 << QNetworkReply::NoError << wrongUrl << 404 << QNetworkReply::ContentNotFoundError << url << 200 << QNetworkReply::NoError;
-
-}
-
-void tst_QNetworkReply::putGetDeleteGetFromHttp()
-{
- QFETCH(QUrl, putUrl);
- QFETCH(int, putResultCode);
- QFETCH(QNetworkReply::NetworkError, putError);
- QFETCH(QUrl, deleteUrl);
- QFETCH(int, deleteResultCode);
- QFETCH(QNetworkReply::NetworkError, deleteError);
- QFETCH(QUrl, get2Url);
- QFETCH(int, get2ResultCode);
- QFETCH(QNetworkReply::NetworkError, get2Error);
-
- QNetworkRequest putRequest(putUrl);
- QNetworkRequest deleteRequest(deleteUrl);
- QNetworkRequest get2Request(get2Url);
- QNetworkReplyPtr reply;
-
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, putRequest, reply, 0));
- QCOMPARE(reply->error(), putError);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), putResultCode);
-
- runSimpleRequest(QNetworkAccessManager::GetOperation, putRequest, reply, 0);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
-
- runSimpleRequest(QNetworkAccessManager::DeleteOperation, deleteRequest, reply, 0);
- QCOMPARE(reply->error(), deleteError);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), deleteResultCode);
-
- runSimpleRequest(QNetworkAccessManager::GetOperation, get2Request, reply, 0);
- QCOMPARE(reply->error(), get2Error);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), get2ResultCode);
-
-}
-
-void tst_QNetworkReply::connectToIPv6Address_data()
-{
- QTest::addColumn<QUrl>("url");
- QTest::addColumn<QNetworkReply::NetworkError>("error");
- QTest::addColumn<QByteArray>("dataToSend");
- QTest::addColumn<QByteArray>("hostfield");
- QTest::newRow("localhost") << QUrl(QByteArray("http://[::1]")) << QNetworkReply::NoError<< QByteArray("localhost") << QByteArray("[::1]");
- //QTest::newRow("ipv4localhost") << QUrl(QByteArray("http://127.0.0.1")) << QNetworkReply::NoError<< QByteArray("ipv4localhost") << QByteArray("127.0.0.1");
- //to add more test data here
-}
-
-void tst_QNetworkReply::connectToIPv6Address()
-{
- QFETCH(QUrl, url);
- QFETCH(QNetworkReply::NetworkError, error);
- QFETCH(QByteArray, dataToSend);
- QFETCH(QByteArray, hostfield);
-
- QByteArray httpResponse = QByteArray("HTTP/1.0 200 OK\r\nContent-Length: ");
- httpResponse += QByteArray::number(dataToSend.size());
- httpResponse += "\r\n\r\n";
- httpResponse += dataToSend;
-
- MiniHttpServer server(httpResponse, false, NULL/*thread*/, true/*useipv6*/);
- server.doClose = true;
-
- url.setPort(server.serverPort());
- QNetworkRequest request(url);
-
- QNetworkReplyPtr reply = manager.get(request);
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QByteArray content = reply->readAll();
- //qDebug() << server.receivedData;
- QByteArray hostinfo = "\r\nHost: " + hostfield + ":" + QByteArray::number(server.serverPort()) + "\r\n";
- QVERIFY(server.receivedData.contains(hostinfo));
- QVERIFY(content == dataToSend);
- QCOMPARE(reply->url(), request.url());
- QVERIFY(reply->error() == error);
-}
-
-void tst_QNetworkReply::sendCustomRequestToHttp_data()
-{
- QTest::addColumn<QUrl>("url");
- QTest::addColumn<QByteArray>("verb");
- QTest::addColumn<QBuffer *>("device");
- QTest::addColumn<int>("resultCode");
- QTest::addColumn<QNetworkReply::NetworkError>("error");
- QTest::addColumn<QByteArray>("expectedContent");
-
- QTest::newRow("options") << QUrl("http://" + QtNetworkSettings::serverName()) <<
- QByteArray("OPTIONS") << (QBuffer *) 0 << 200 << QNetworkReply::NoError << QByteArray();
- QTest::newRow("trace") << QUrl("http://" + QtNetworkSettings::serverName()) <<
- QByteArray("TRACE") << (QBuffer *) 0 << 200 << QNetworkReply::NoError << QByteArray();
- QTest::newRow("connect") << QUrl("http://" + QtNetworkSettings::serverName()) <<
- QByteArray("CONNECT") << (QBuffer *) 0 << 400 << QNetworkReply::UnknownContentError << QByteArray(); // 400 = Bad Request
- QTest::newRow("nonsense") << QUrl("http://" + QtNetworkSettings::serverName()) <<
- QByteArray("NONSENSE") << (QBuffer *) 0 << 501 << QNetworkReply::ProtocolUnknownError << QByteArray(); // 501 = Method Not Implemented
-
- QByteArray ba("test");
- QBuffer *buffer = new QBuffer;
- buffer->setData(ba);
- buffer->open(QIODevice::ReadOnly);
- QTest::newRow("post") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi") << QByteArray("POST")
- << buffer << 200 << QNetworkReply::NoError << QByteArray("098f6bcd4621d373cade4e832627b4f6\n");
-
- QByteArray ba2("test");
- QBuffer *buffer2 = new QBuffer;
- buffer2->setData(ba2);
- buffer2->open(QIODevice::ReadOnly);
- QTest::newRow("put") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi") << QByteArray("PUT")
- << buffer2 << 200 << QNetworkReply::NoError << QByteArray("098f6bcd4621d373cade4e832627b4f6\n");
-}
-
-void tst_QNetworkReply::sendCustomRequestToHttp()
-{
- QFETCH(QUrl, url);
- QNetworkRequest request(url);
- QNetworkReplyPtr reply;
- QFETCH(QByteArray, verb);
- QFETCH(QBuffer *, device);
- runCustomRequest(request, reply, verb, device);
- QCOMPARE(reply->url(), url);
- QFETCH(QNetworkReply::NetworkError, error);
- QCOMPARE(reply->error(), error);
- QFETCH(int, resultCode);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), resultCode);
- QFETCH(QByteArray, expectedContent);
- if (! expectedContent.isEmpty())
- QCOMPARE(reply->readAll(), expectedContent);
-}
-
-void tst_QNetworkReply::ioGetFromData_data()
-{
- QTest::addColumn<QString>("urlStr");
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("data-empty") << "data:," << QByteArray();
- QTest::newRow("data-literal") << "data:,foo" << QByteArray("foo");
- QTest::newRow("data-pct") << "data:,%3Cbody%20contentEditable%3Dtrue%3E%0D%0A"
- << QByteArray("<body contentEditable=true>\r\n");
- QTest::newRow("data-base64") << "data:;base64,UXQgaXMgZ3JlYXQh" << QByteArray("Qt is great!");
-}
-
-void tst_QNetworkReply::ioGetFromData()
-{
- QFETCH(QString, urlStr);
-
- QUrl url = QUrl::fromEncoded(urlStr.toLatin1());
- QNetworkRequest request(url);
-
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
-
- connect(reply, SIGNAL(finished()),
- &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QFETCH(QByteArray, data);
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toInt(), data.size());
- QCOMPARE(reader.data.size(), data.size());
- QCOMPARE(reader.data, data);
-}
-
-void tst_QNetworkReply::ioGetFromFileSpecial_data()
-{
- getFromFileSpecial_data();
-}
-
-void tst_QNetworkReply::ioGetFromFileSpecial()
-{
- QFETCH(QString, fileName);
- QFETCH(QString, url);
-
- QFile resource(fileName);
- QVERIFY(resource.open(QIODevice::ReadOnly));
-
- QNetworkRequest request;
- request.setUrl(url);
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), resource.size());
- QCOMPARE(qint64(reader.data.size()), resource.size());
- QCOMPARE(reader.data, resource.readAll());
-}
-
-void tst_QNetworkReply::ioGetFromFile_data()
-{
- putToFile_data();
-}
-
-void tst_QNetworkReply::ioGetFromFile()
-{
- QTemporaryFile file(QDir::currentPath() + "/temp-XXXXXX");
- file.setAutoRemove(true);
- QVERIFY(file.open());
-
- QFETCH(QByteArray, data);
- QVERIFY(file.write(data) == data.size());
- file.flush();
- QCOMPARE(file.size(), qint64(data.size()));
-
- QNetworkRequest request(QUrl::fromLocalFile(file.fileName()));
- QNetworkReplyPtr reply = manager.get(request);
- QVERIFY(reply->isFinished()); // a file should immediately be done
- DataReader reader(reply);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), file.size());
- QCOMPARE(qint64(reader.data.size()), file.size());
- QCOMPARE(reader.data, data);
-}
-
-void tst_QNetworkReply::ioGetFromFtp_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<qint64>("expectedSize");
-
- QTest::newRow("bigfile") << "bigfile" << Q_INT64_C(519240);
-
- QFile file(SRCDIR "/rfc3252.txt");
- QTest::newRow("rfc3252.txt") << "rfc3252.txt" << file.size();
-}
-
-void tst_QNetworkReply::ioGetFromFtp()
-{
- QFETCH(QString, fileName);
- QFile reference(fileName);
- reference.open(QIODevice::ReadOnly); // will fail for bigfile
-
- QNetworkRequest request("ftp://" + QtNetworkSettings::serverName() + "/qtest/" + fileName);
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QFETCH(qint64, expectedSize);
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), expectedSize);
- QCOMPARE(qint64(reader.data.size()), expectedSize);
-
- if (reference.isOpen())
- QCOMPARE(reader.data, reference.readAll());
-}
-
-void tst_QNetworkReply::ioGetFromFtpWithReuse()
-{
- QString fileName = SRCDIR "/rfc3252.txt";
- QFile reference(fileName);
- reference.open(QIODevice::ReadOnly);
-
- QNetworkRequest request(QUrl("ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
-
- // two concurrent (actually, consecutive) gets:
- QNetworkReplyPtr reply1 = manager.get(request);
- DataReader reader1(reply1);
- QNetworkReplyPtr reply2 = manager.get(request);
- DataReader reader2(reply2);
- QSignalSpy spy(reply1, SIGNAL(finished()));
-
- connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- if (spy.count() == 0) {
- connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- }
-
- QCOMPARE(reply1->url(), request.url());
- QCOMPARE(reply2->url(), request.url());
- QCOMPARE(reply1->error(), QNetworkReply::NoError);
- QCOMPARE(reply2->error(), QNetworkReply::NoError);
-
- QCOMPARE(qint64(reader1.data.size()), reference.size());
- QCOMPARE(qint64(reader2.data.size()), reference.size());
- QCOMPARE(reply1->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
- QCOMPARE(reply2->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
-
- QByteArray referenceData = reference.readAll();
- QCOMPARE(reader1.data, referenceData);
- QCOMPARE(reader2.data, referenceData);
-}
-
-void tst_QNetworkReply::ioGetFromHttp()
-{
- QFile reference(SRCDIR "/rfc3252.txt");
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
- QCOMPARE(qint64(reader.data.size()), reference.size());
-
- QCOMPARE(reader.data, reference.readAll());
-}
-
-void tst_QNetworkReply::ioGetFromHttpWithReuseParallel()
-{
- QFile reference(SRCDIR "/rfc3252.txt");
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
- QNetworkReplyPtr reply1 = manager.get(request);
- QNetworkReplyPtr reply2 = manager.get(request);
- DataReader reader1(reply1);
- DataReader reader2(reply2);
- QSignalSpy spy(reply1, SIGNAL(finished()));
-
- connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- if (spy.count() == 0) {
- connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- }
-
- QCOMPARE(reply1->url(), request.url());
- QCOMPARE(reply2->url(), request.url());
- QCOMPARE(reply1->error(), QNetworkReply::NoError);
- QCOMPARE(reply2->error(), QNetworkReply::NoError);
- QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
-
- QCOMPARE(reply1->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
- QCOMPARE(reply2->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
- QCOMPARE(qint64(reader1.data.size()), reference.size());
- QCOMPARE(qint64(reader2.data.size()), reference.size());
-
- QByteArray referenceData = reference.readAll();
- QCOMPARE(reader1.data, referenceData);
- QCOMPARE(reader2.data, referenceData);
-}
-
-void tst_QNetworkReply::ioGetFromHttpWithReuseSequential()
-{
- QFile reference(SRCDIR "/rfc3252.txt");
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
- {
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
- QCOMPARE(qint64(reader.data.size()), reference.size());
-
- QCOMPARE(reader.data, reference.readAll());
- }
-
- reference.seek(0);
- // rinse and repeat:
- {
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
- QCOMPARE(qint64(reader.data.size()), reference.size());
-
- QCOMPARE(reader.data, reference.readAll());
- }
-}
-
-void tst_QNetworkReply::ioGetFromHttpWithAuth_data()
-{
- QTest::addColumn<QUrl>("url");
- QTest::addColumn<QByteArray>("expectedData");
-
- QFile reference(SRCDIR "/rfc3252.txt");
- reference.open(QIODevice::ReadOnly);
- QByteArray referenceData = reference.readAll();
- QTest::newRow("basic") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfcs-auth/rfc3252.txt") << referenceData;
- QTest::newRow("digest") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/auth-digest/") << QByteArray("digest authentication successful\n");
-}
-
-void tst_QNetworkReply::ioGetFromHttpWithAuth()
-{
- // This test sends three requests
- // The first two in parallel
- // The third after the first two finished
-
- QFETCH(QUrl, url);
- QFETCH(QByteArray, expectedData);
- QNetworkRequest request(url);
- {
- QNetworkReplyPtr reply1 = manager.get(request);
- QNetworkReplyPtr reply2 = manager.get(request);
- DataReader reader1(reply1);
- DataReader reader2(reply2);
- QSignalSpy finishedspy(reply1, SIGNAL(finished()));
-
- QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
-
- connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- if (finishedspy.count() == 0) {
- connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- }
- manager.disconnect(SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
-
- QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(reader1.data, expectedData);
- QCOMPARE(reader2.data, expectedData);
-
- QCOMPARE(authspy.count(), 1);
- }
-
- // rinse and repeat:
- {
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
-
- QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- manager.disconnect(SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(reader.data, expectedData);
-
- QCOMPARE(authspy.count(), 0);
- }
-
- // now check with synchronous calls:
- {
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- QNetworkReplyPtr replySync = manager.get(request);
- QVERIFY(replySync->isFinished()); // synchronous
- QCOMPARE(authspy.count(), 0);
-
- // we cannot use a data reader here, since that connects to the readyRead signal,
- // just use readAll()
-
- // the only thing we check here is that the auth cache was used when using synchronous requests
- QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(replySync->readAll(), expectedData);
- }
-}
-
-void tst_QNetworkReply::ioGetFromHttpWithAuthSynchronous()
-{
- // verify that we do not enter an endless loop with synchronous calls and wrong credentials
- // the case when we succeed with the login is tested in ioGetFromHttpWithAuth()
-
- QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfcs-auth/rfc3252.txt"));
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- QNetworkReplyPtr replySync = manager.get(request);
- QVERIFY(replySync->isFinished()); // synchronous
- QCOMPARE(replySync->error(), QNetworkReply::AuthenticationRequiredError);
- QCOMPARE(authspy.count(), 0);
- QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 401);
-}
-
-void tst_QNetworkReply::ioGetFromHttpWithProxyAuth()
-{
- qRegisterMetaType<QNetworkProxy>(); // for QSignalSpy
- qRegisterMetaType<QAuthenticator *>();
-
- // This test sends three requests
- // The first two in parallel
- // The third after the first two finished
- QFile reference(SRCDIR "/rfc3252.txt");
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
- QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
- {
- manager.setProxy(proxy);
- QNetworkReplyPtr reply1 = manager.get(request);
- QNetworkReplyPtr reply2 = manager.get(request);
- manager.setProxy(QNetworkProxy());
-
- DataReader reader1(reply1);
- DataReader reader2(reply2);
- QSignalSpy finishedspy(reply1, SIGNAL(finished()));
-
- QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-
- connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- if (finishedspy.count() == 0) {
- connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- }
- manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-
- QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QByteArray referenceData = reference.readAll();
- QCOMPARE(reader1.data, referenceData);
- QCOMPARE(reader2.data, referenceData);
-
- QCOMPARE(authspy.count(), 1);
- }
-
- reference.seek(0);
- // rinse and repeat:
- {
- manager.setProxy(proxy);
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
- manager.setProxy(QNetworkProxy());
-
- QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(reader.data, reference.readAll());
-
- QCOMPARE(authspy.count(), 0);
- }
-
- // now check with synchronous calls:
- reference.seek(0);
- {
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- QNetworkReplyPtr replySync = manager.get(request);
- QVERIFY(replySync->isFinished()); // synchronous
- QCOMPARE(authspy.count(), 0);
-
- // we cannot use a data reader here, since that connects to the readyRead signal,
- // just use readAll()
-
- // the only thing we check here is that the proxy auth cache was used when using synchronous requests
- QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(replySync->readAll(), reference.readAll());
- }
-}
-
-void tst_QNetworkReply::ioGetFromHttpWithProxyAuthSynchronous()
-{
- // verify that we do not enter an endless loop with synchronous calls and wrong credentials
- // the case when we succeed with the login is tested in ioGetFromHttpWithAuth()
-
- QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
- QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
- manager.setProxy(proxy);
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- QNetworkReplyPtr replySync = manager.get(request);
- manager.setProxy(QNetworkProxy()); // reset
- QVERIFY(replySync->isFinished()); // synchronous
- QCOMPARE(replySync->error(), QNetworkReply::ProxyAuthenticationRequiredError);
- QCOMPARE(authspy.count(), 0);
- QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 407);
-}
-
-void tst_QNetworkReply::ioGetFromHttpWithSocksProxy()
-{
- // HTTP caching proxies are tested by the above function
- // test SOCKSv5 proxies too
-
- qRegisterMetaType<QNetworkProxy>(); // for QSignalSpy
- qRegisterMetaType<QAuthenticator *>();
-
- QFile reference(SRCDIR "/rfc3252.txt");
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- QNetworkProxy proxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
- QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
- {
- manager.setProxy(proxy);
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
- manager.setProxy(QNetworkProxy());
-
- QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(reader.data, reference.readAll());
-
- QCOMPARE(authspy.count(), 0);
- }
-
- // set an invalid proxy just to make sure that we can't load
- proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1079);
- {
- manager.setProxy(proxy);
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
- manager.setProxy(QNetworkProxy());
-
- QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-
- QVERIFY(!reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).isValid());
- QVERIFY(reader.data.isEmpty());
-
- QVERIFY(int(reply->error()) > 0);
- QEXPECT_FAIL("", "QTcpSocket doesn't return enough information yet", Continue);
- QCOMPARE(int(reply->error()), int(QNetworkReply::ProxyConnectionRefusedError));
-
- QCOMPARE(authspy.count(), 0);
- }
-}
-
-#ifndef QT_NO_OPENSSL
-void tst_QNetworkReply::ioGetFromHttpsWithSslErrors()
-{
- qRegisterMetaType<QNetworkReply*>(); // for QSignalSpy
- qRegisterMetaType<QList<QSslError> >();
-
- QFile reference(SRCDIR "/rfc3252.txt");
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
-
- QSignalSpy sslspy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)));
- connect(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
- SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
- connect(reply, SIGNAL(metaDataChanged()), SLOT(storeSslConfiguration()));
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- manager.disconnect(SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
- this, SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(reader.data, reference.readAll());
-
- QCOMPARE(sslspy.count(), 1);
-
- QVERIFY(!storedSslConfiguration.isNull());
- QVERIFY(!reply->sslConfiguration().isNull());
-}
-
-void tst_QNetworkReply::ioGetFromHttpsWithIgnoreSslErrors()
-{
- // same as above, except that we call ignoreSslErrors and don't connect
- // to the sslErrors() signal (which is *still* emitted)
-
- qRegisterMetaType<QNetworkReply*>(); // for QSignalSpy
- qRegisterMetaType<QList<QSslError> >();
-
- QFile reference(SRCDIR "/rfc3252.txt");
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
-
- QNetworkReplyPtr reply = manager.get(request);
- reply->ignoreSslErrors();
- DataReader reader(reply);
-
- QSignalSpy sslspy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)));
- connect(reply, SIGNAL(metaDataChanged()), SLOT(storeSslConfiguration()));
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QCOMPARE(reader.data, reference.readAll());
-
- QCOMPARE(sslspy.count(), 1);
-
- QVERIFY(!storedSslConfiguration.isNull());
- QVERIFY(!reply->sslConfiguration().isNull());
-}
-
-void tst_QNetworkReply::ioGetFromHttpsWithSslHandshakeError()
-{
- qRegisterMetaType<QNetworkReply*>(); // for QSignalSpy
- qRegisterMetaType<QList<QSslError> >();
-
- QFile reference(SRCDIR "/rfc3252.txt");
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + ":80"));
-
- QNetworkReplyPtr reply = manager.get(request);
- reply->ignoreSslErrors();
- DataReader reader(reply);
-
- QSignalSpy sslspy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)));
- connect(reply, SIGNAL(metaDataChanged()), SLOT(storeSslConfiguration()));
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->error(), QNetworkReply::SslHandshakeFailedError);
- QCOMPARE(sslspy.count(), 0);
-}
-#endif
-
-void tst_QNetworkReply::ioGetFromHttpBrokenServer_data()
-{
- QTest::addColumn<QByteArray>("dataToSend");
- QTest::addColumn<bool>("doDisconnect");
-
- QTest::newRow("no-newline") << QByteArray("Hello World") << false;
-
- // these are OK now, we just eat the lonely newlines
- //QTest::newRow("just-newline") << QByteArray("\r\n") << false;
- //QTest::newRow("just-2newline") << QByteArray("\r\n\r\n") << false;
-
- QTest::newRow("with-newlines") << QByteArray("Long first line\r\nLong second line") << false;
- QTest::newRow("with-newlines2") << QByteArray("\r\nSecond line") << false;
- QTest::newRow("with-newlines3") << QByteArray("ICY\r\nSecond line") << false;
- QTest::newRow("invalid-version") << QByteArray("HTTP/123 200 \r\n") << false;
- QTest::newRow("invalid-version2") << QByteArray("HTTP/a.\033 200 \r\n") << false;
- QTest::newRow("invalid-reply-code") << QByteArray("HTTP/1.0 fuu \r\n") << false;
-
- QTest::newRow("empty+disconnect") << QByteArray() << true;
-
- QTest::newRow("no-newline+disconnect") << QByteArray("Hello World") << true;
- QTest::newRow("just-newline+disconnect") << QByteArray("\r\n") << true;
- QTest::newRow("just-2newline+disconnect") << QByteArray("\r\n\r\n") << true;
- QTest::newRow("with-newlines+disconnect") << QByteArray("Long first line\r\nLong second line") << true;
- QTest::newRow("with-newlines2+disconnect") << QByteArray("\r\nSecond line") << true;
- QTest::newRow("with-newlines3+disconnect") << QByteArray("ICY\r\nSecond line") << true;
-
- QTest::newRow("invalid-version+disconnect") << QByteArray("HTTP/123 200 ") << true;
- QTest::newRow("invalid-version2+disconnect") << QByteArray("HTTP/a.\033 200 ") << true;
- QTest::newRow("invalid-reply-code+disconnect") << QByteArray("HTTP/1.0 fuu ") << true;
-
- QTest::newRow("immediate disconnect") << QByteArray("") << true;
- QTest::newRow("justHalfStatus+disconnect") << QByteArray("HTTP/1.1") << true;
- QTest::newRow("justStatus+disconnect") << QByteArray("HTTP/1.1 200 OK\r\n") << true;
- QTest::newRow("justStatusAndHalfHeaders+disconnect") << QByteArray("HTTP/1.1 200 OK\r\nContent-L") << true;
-
- QTest::newRow("halfContent+disconnect") << QByteArray("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\nAB") << true;
-
-}
-
-void tst_QNetworkReply::ioGetFromHttpBrokenServer()
-{
- QFETCH(QByteArray, dataToSend);
- QFETCH(bool, doDisconnect);
- MiniHttpServer server(dataToSend);
- server.doClose = doDisconnect;
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- QNetworkReplyPtr reply = manager.get(request);
- QSignalSpy spy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
-
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(spy.count(), 1);
- QVERIFY(reply->error() != QNetworkReply::NoError);
-}
-
-void tst_QNetworkReply::ioGetFromHttpStatus100_data()
-{
- QTest::addColumn<QByteArray>("dataToSend");
- QTest::addColumn<int>("statusCode");
- QTest::newRow("normal") << QByteArray("HTTP/1.1 100 Continue\r\n\r\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n") << 200;
- QTest::newRow("minimal") << QByteArray("HTTP/1.1 100 Continue\n\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n") << 200;
- QTest::newRow("minimal2") << QByteArray("HTTP/1.1 100 Continue\n\nHTTP/1.0 200 OK\r\n\r\n") << 200;
- QTest::newRow("minimal3") << QByteArray("HTTP/1.1 100 Continue\n\nHTTP/1.0 200 OK\n\n") << 200;
- QTest::newRow("minimal+404") << QByteArray("HTTP/1.1 100 Continue\n\nHTTP/1.0 204 No Content\r\n\r\n") << 204;
- QTest::newRow("with_headers") << QByteArray("HTTP/1.1 100 Continue\r\nBla: x\r\n\r\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n") << 200;
- QTest::newRow("with_headers2") << QByteArray("HTTP/1.1 100 Continue\nBla: x\n\nHTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n") << 200;
-}
-
-void tst_QNetworkReply::ioGetFromHttpStatus100()
-{
- QFETCH(QByteArray, dataToSend);
- QFETCH(int, statusCode);
- MiniHttpServer server(dataToSend);
- server.doClose = true;
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), statusCode);
- QVERIFY(reply->rawHeader("bla").isNull());
-}
-
-void tst_QNetworkReply::ioGetFromHttpNoHeaders_data()
-{
- QTest::addColumn<QByteArray>("dataToSend");
- QTest::newRow("justStatus+noheaders+disconnect") << QByteArray("HTTP/1.0 200 OK\r\n\r\n");
-}
-
-void tst_QNetworkReply::ioGetFromHttpNoHeaders()
-{
- QFETCH(QByteArray, dataToSend);
- MiniHttpServer server(dataToSend);
- server.doClose = true;
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
-}
-
-void tst_QNetworkReply::ioGetFromHttpWithCache_data()
-{
- qRegisterMetaType<MyMemoryCache::CachedContent>();
- QTest::addColumn<QByteArray>("dataToSend");
- QTest::addColumn<QString>("body");
- QTest::addColumn<MyMemoryCache::CachedContent>("cachedReply");
- QTest::addColumn<int>("cacheMode");
- QTest::addColumn<QStringList>("extraHttpHeaders");
- QTest::addColumn<bool>("loadedFromCache");
- QTest::addColumn<bool>("networkUsed");
-
- QByteArray reply200 =
- "HTTP/1.0 200\r\n"
- "Connection: keep-alive\r\n"
- "Content-Type: text/plain\r\n"
- "Cache-control: no-cache\r\n"
- "Content-length: 8\r\n"
- "\r\n"
- "Reloaded";
- QByteArray reply304 =
- "HTTP/1.0 304 Use Cache\r\n"
- "Connection: keep-alive\r\n"
- "\r\n";
-
- QTest::newRow("not-cached,always-network")
- << reply200 << "Reloaded" << MyMemoryCache::CachedContent() << int(QNetworkRequest::AlwaysNetwork) << QStringList() << false << true;
- QTest::newRow("not-cached,prefer-network")
- << reply200 << "Reloaded" << MyMemoryCache::CachedContent() << int(QNetworkRequest::PreferNetwork) << QStringList() << false << true;
- QTest::newRow("not-cached,prefer-cache")
- << reply200 << "Reloaded" << MyMemoryCache::CachedContent() << int(QNetworkRequest::PreferCache) << QStringList() << false << true;
-
- QDateTime present = QDateTime::currentDateTime().toUTC();
- QDateTime past = present.addSecs(-3600);
- QDateTime future = present.addSecs(3600);
- static const char dateFormat[] = "ddd, dd MMM yyyy hh:mm:ss 'GMT'";
-
- QNetworkCacheMetaData::RawHeaderList rawHeaders;
- MyMemoryCache::CachedContent content;
- content.second = "Not-reloaded";
- content.first.setLastModified(past);
-
- //
- // Set to expired
- //
- rawHeaders.clear();
- rawHeaders << QNetworkCacheMetaData::RawHeader("Date", QLocale::c().toString(past, dateFormat).toLatin1())
- << QNetworkCacheMetaData::RawHeader("Cache-control", "max-age=0"); // isn't used in cache loading
- content.first.setRawHeaders(rawHeaders);
- content.first.setLastModified(past);
-
- QTest::newRow("expired,200,prefer-network")
- << reply200 << "Reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << false << true;
- QTest::newRow("expired,200,prefer-cache")
- << reply200 << "Reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << false << true;
-
- QTest::newRow("expired,304,prefer-network")
- << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << true << true;
- QTest::newRow("expired,304,prefer-cache")
- << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << true << true;
-
- //
- // Set to not-expired
- //
- rawHeaders.clear();
- rawHeaders << QNetworkCacheMetaData::RawHeader("Date", QLocale::c().toString(past, dateFormat).toLatin1())
- << QNetworkCacheMetaData::RawHeader("Cache-control", "max-age=7200"); // isn't used in cache loading
- content.first.setRawHeaders(rawHeaders);
- content.first.setExpirationDate(future);
-
- QTest::newRow("not-expired,200,always-network")
- << reply200 << "Reloaded" << content << int(QNetworkRequest::AlwaysNetwork) << QStringList() << false << true;
- QTest::newRow("not-expired,200,prefer-network")
- << reply200 << "Not-reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << true << false;
- QTest::newRow("not-expired,200,prefer-cache")
- << reply200 << "Not-reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << true << false;
- QTest::newRow("not-expired,200,always-cache")
- << reply200 << "Not-reloaded" << content << int(QNetworkRequest::AlwaysCache) << QStringList() << true << false;
-
- QTest::newRow("not-expired,304,prefer-network")
- << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << true << false;
- QTest::newRow("not-expired,304,prefer-cache")
- << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << true << false;
- QTest::newRow("not-expired,304,always-cache")
- << reply304 << "Not-reloaded" << content << int(QNetworkRequest::AlwaysCache) << QStringList() << true << false;
-
- //
- // Set must-revalidate now
- //
- rawHeaders.clear();
- rawHeaders << QNetworkCacheMetaData::RawHeader("Date", QLocale::c().toString(past, dateFormat).toLatin1())
- << QNetworkCacheMetaData::RawHeader("Cache-control", "max-age=7200, must-revalidate"); // must-revalidate is used
- content.first.setRawHeaders(rawHeaders);
-
- QTest::newRow("must-revalidate,200,always-network")
- << reply200 << "Reloaded" << content << int(QNetworkRequest::AlwaysNetwork) << QStringList() << false << true;
- QTest::newRow("must-revalidate,200,prefer-network")
- << reply200 << "Reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << false << true;
- QTest::newRow("must-revalidate,200,prefer-cache")
- << reply200 << "Reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << false << true;
- QTest::newRow("must-revalidate,200,always-cache")
- << reply200 << "" << content << int(QNetworkRequest::AlwaysCache) << QStringList() << false << false;
-
- QTest::newRow("must-revalidate,304,prefer-network")
- << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferNetwork) << QStringList() << true << true;
- QTest::newRow("must-revalidate,304,prefer-cache")
- << reply304 << "Not-reloaded" << content << int(QNetworkRequest::PreferCache) << QStringList() << true << true;
- QTest::newRow("must-revalidate,304,always-cache")
- << reply304 << "" << content << int(QNetworkRequest::AlwaysCache) << QStringList() << false << false;
-
- //
- // Partial content
- //
- rawHeaders.clear();
- rawHeaders << QNetworkCacheMetaData::RawHeader("Date", QLocale::c().toString(past, dateFormat).toLatin1())
- << QNetworkCacheMetaData::RawHeader("Cache-control", "max-age=7200"); // isn't used in cache loading
- content.first.setRawHeaders(rawHeaders);
- content.first.setExpirationDate(future);
-
- QByteArray reply206 =
- "HTTP/1.0 206\r\n"
- "Connection: keep-alive\r\n"
- "Content-Type: text/plain\r\n"
- "Cache-control: no-cache\r\n"
- "Content-Range: bytes 2-6/8\r\n"
- "Content-length: 4\r\n"
- "\r\n"
- "load";
-
- QTest::newRow("partial,dontuse-cache")
- << reply206 << "load" << content << int(QNetworkRequest::PreferCache) << (QStringList() << "Range" << "bytes=2-6") << false << true;
-}
-
-void tst_QNetworkReply::ioGetFromHttpWithCache()
-{
- QFETCH(QByteArray, dataToSend);
- MiniHttpServer server(dataToSend);
- server.doClose = false;
-
- MyMemoryCache *memoryCache = new MyMemoryCache(&manager);
- manager.setCache(memoryCache);
-
- QFETCH(MyMemoryCache::CachedContent, cachedReply);
- QUrl url = "http://localhost:" + QString::number(server.serverPort());
- cachedReply.first.setUrl(url);
- if (!cachedReply.second.isNull())
- memoryCache->cache.insert(url.toEncoded(), cachedReply);
-
- QFETCH(int, cacheMode);
- QNetworkRequest request(url);
- request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, cacheMode);
- request.setAttribute(QNetworkRequest::CacheSaveControlAttribute, false);
-
- QFETCH(QStringList, extraHttpHeaders);
- QStringListIterator it(extraHttpHeaders);
- while (it.hasNext()) {
- QString header = it.next();
- QString value = it.next();
- request.setRawHeader(header.toLatin1(), value.toLatin1()); // To latin1? Deal with it!
- }
-
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QTEST(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), "loadedFromCache");
- QTEST(server.totalConnections > 0, "networkUsed");
- QFETCH(QString, body);
- QCOMPARE(reply->readAll().constData(), qPrintable(body));
-}
-
-void tst_QNetworkReply::ioGetWithManyProxies_data()
-{
- QTest::addColumn<QList<QNetworkProxy> >("proxyList");
- QTest::addColumn<QNetworkProxy>("proxyUsed");
- QTest::addColumn<QString>("url");
- QTest::addColumn<QNetworkReply::NetworkError>("expectedError");
-
- QList<QNetworkProxy> proxyList;
-
- // All of the other functions test DefaultProxy
- // So let's test something else
-
- // Simple tests that work:
-
- // HTTP request with HTTP caching proxy
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
- QTest::newRow("http-on-http")
- << proxyList << proxyList.at(0)
- << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
- // HTTP request with HTTP transparent proxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129);
- QTest::newRow("http-on-http2")
- << proxyList << proxyList.at(0)
- << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
- // HTTP request with SOCKS transparent proxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
- QTest::newRow("http-on-socks")
- << proxyList << proxyList.at(0)
- << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
- // FTP request with FTP caching proxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
- QTest::newRow("ftp-on-ftp")
- << proxyList << proxyList.at(0)
- << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
- // The following test doesn't work because QFtp is too limited
- // It can only talk to its own kind of proxies
-
- // FTP request with SOCKSv5 transparent proxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
- QTest::newRow("ftp-on-socks")
- << proxyList << proxyList.at(0)
- << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
-#ifndef QT_NO_OPENSSL
- // HTTPS with HTTP transparent proxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129);
- QTest::newRow("https-on-http")
- << proxyList << proxyList.at(0)
- << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
- // HTTPS request with SOCKS transparent proxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
- QTest::newRow("https-on-socks")
- << proxyList << proxyList.at(0)
- << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-#endif
-
- // Tests that fail:
-
- // HTTP request with FTP caching proxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
- QTest::newRow("http-on-ftp")
- << proxyList << QNetworkProxy()
- << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::ProxyNotFoundError;
-
- // FTP request with HTTP caching proxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
- QTest::newRow("ftp-on-http")
- << proxyList << QNetworkProxy()
- << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::ProxyNotFoundError;
-
- // FTP request with HTTP caching proxies
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
- << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3130);
- QTest::newRow("ftp-on-multiple-http")
- << proxyList << QNetworkProxy()
- << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::ProxyNotFoundError;
-
-#ifndef QT_NO_OPENSSL
- // HTTPS with HTTP caching proxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
- QTest::newRow("https-on-httptransparent")
- << proxyList << QNetworkProxy()
- << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::ProxyNotFoundError;
-
- // HTTPS with FTP caching proxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
- QTest::newRow("https-on-ftp")
- << proxyList << QNetworkProxy()
- << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::ProxyNotFoundError;
-#endif
-
- // Complex requests:
-
- // HTTP request with more than one HTTP proxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
- << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3130);
- QTest::newRow("http-on-multiple-http")
- << proxyList << proxyList.at(0)
- << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
- // HTTP request with HTTP + SOCKS
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
- << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
- QTest::newRow("http-on-http+socks")
- << proxyList << proxyList.at(0)
- << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
- // HTTP request with FTP + HTTP + SOCKS
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
- << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
- << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
- QTest::newRow("http-on-ftp+http+socks")
- << proxyList << proxyList.at(1) // second proxy should be used
- << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
- // HTTP request with NoProxy + HTTP
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::NoProxy)
- << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
- QTest::newRow("http-on-noproxy+http")
- << proxyList << proxyList.at(0)
- << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
- // HTTP request with FTP + NoProxy
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
- << QNetworkProxy(QNetworkProxy::NoProxy);
- QTest::newRow("http-on-ftp+noproxy")
- << proxyList << proxyList.at(1) // second proxy should be used
- << "http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
- // FTP request with HTTP Caching + FTP
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
- << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
- QTest::newRow("ftp-on-http+ftp")
- << proxyList << proxyList.at(1) // second proxy should be used
- << "ftp://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
-#ifndef QT_NO_OPENSSL
- // HTTPS request with HTTP Caching + HTTP transparent
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
- << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129);
- QTest::newRow("https-on-httpcaching+http")
- << proxyList << proxyList.at(1) // second proxy should be used
- << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-
- // HTTPS request with FTP + HTTP C + HTTP T
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
- << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
- << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129);
- QTest::newRow("https-on-ftp+httpcaching+http")
- << proxyList << proxyList.at(2) // skip the first two
- << "https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"
- << QNetworkReply::NoError;
-#endif
-}
-
-void tst_QNetworkReply::ioGetWithManyProxies()
-{
- // Test proxy factories
-
- qRegisterMetaType<QNetworkProxy>(); // for QSignalSpy
- qRegisterMetaType<QAuthenticator *>();
-
- QFile reference(SRCDIR "/rfc3252.txt");
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- // set the proxy factory:
- QFETCH(QList<QNetworkProxy>, proxyList);
- MyProxyFactory *proxyFactory = new MyProxyFactory;
- proxyFactory->toReturn = proxyList;
- manager.setProxyFactory(proxyFactory);
-
- QFETCH(QString, url);
- QUrl theUrl(url);
- QNetworkRequest request(theUrl);
- QNetworkReplyPtr reply = manager.get(request);
- DataReader reader(reply);
-
- QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-#ifndef QT_NO_OPENSSL
- connect(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
- SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
-#endif
- QTestEventLoop::instance().enterLoop(15);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-#ifndef QT_NO_OPENSSL
- manager.disconnect(SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
- this, SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
-#endif
-
- QFETCH(QNetworkReply::NetworkError, expectedError);
- QEXPECT_FAIL("ftp-on-socks", "QFtp is too limited and won't accept non-FTP proxies", Abort);
- QCOMPARE(reply->error(), expectedError);
-
- // Verify that the factory was called properly
- QCOMPARE(proxyFactory->callCount, 1);
- QCOMPARE(proxyFactory->lastQuery, QNetworkProxyQuery(theUrl));
-
- if (expectedError == QNetworkReply::NoError) {
- // request succeeded
- QCOMPARE(reader.data, reference.readAll());
-
- // now verify that the proxies worked:
- QFETCH(QNetworkProxy, proxyUsed);
- if (proxyUsed.type() == QNetworkProxy::NoProxy) {
- QCOMPARE(authspy.count(), 0);
- } else {
- if (QByteArray(QTest::currentDataTag()).startsWith("ftp-"))
- return; // No authentication with current FTP or with FTP proxies
- QCOMPARE(authspy.count(), 1);
- QCOMPARE(qvariant_cast<QNetworkProxy>(authspy.at(0).at(0)), proxyUsed);
- }
- } else {
- // request failed
- QCOMPARE(authspy.count(), 0);
- }
-}
-
-void tst_QNetworkReply::ioPutToFileFromFile_data()
-{
- QTest::addColumn<QString>("fileName");
-
- QTest::newRow("empty") << SRCDIR "/empty";
- QTest::newRow("real-file") << SRCDIR "/rfc3252.txt";
- QTest::newRow("resource") << ":/resource";
- QTest::newRow("search-path") << "srcdir:/rfc3252.txt";
-}
-
-void tst_QNetworkReply::ioPutToFileFromFile()
-{
- QFETCH(QString, fileName);
- QFile sourceFile(fileName);
- QFile targetFile(testFileName);
-
- QVERIFY(sourceFile.open(QIODevice::ReadOnly));
-
- QUrl url = QUrl::fromLocalFile(targetFile.fileName());
- QNetworkRequest request(url);
- QNetworkReplyPtr reply = manager.put(request, &sourceFile);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
- QVERIFY(reply->readAll().isEmpty());
-
- QVERIFY(sourceFile.atEnd());
- sourceFile.seek(0); // reset it to the beginning
-
- QVERIFY(targetFile.open(QIODevice::ReadOnly));
- QCOMPARE(targetFile.size(), sourceFile.size());
- QCOMPARE(targetFile.readAll(), sourceFile.readAll());
-}
-
-void tst_QNetworkReply::ioPutToFileFromSocket_data()
-{
- putToFile_data();
-}
-
-void tst_QNetworkReply::ioPutToFileFromSocket()
-{
- QFile file(testFileName);
-
- QUrl url = QUrl::fromLocalFile(file.fileName());
- QNetworkRequest request(url);
-
- QFETCH(QByteArray, data);
- SocketPair socketpair;
- socketpair.create();
- QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]);
-
- socketpair.endPoints[0]->write(data);
- QNetworkReplyPtr reply = manager.put(QNetworkRequest(url), socketpair.endPoints[1]);
- socketpair.endPoints[0]->close();
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
- QVERIFY(reply->readAll().isEmpty());
-
- QVERIFY(file.open(QIODevice::ReadOnly));
- QCOMPARE(file.size(), qint64(data.size()));
- QByteArray contents = file.readAll();
- QCOMPARE(contents, data);
-}
-
-void tst_QNetworkReply::ioPutToFileFromLocalSocket_data()
-{
- putToFile_data();
-}
-
-void tst_QNetworkReply::ioPutToFileFromLocalSocket()
-{
- QString socketname = "networkreplytest";
- QLocalServer server;
- if (!server.listen(socketname)) {
- QLocalServer::removeServer(socketname);
- QVERIFY(server.listen(socketname));
- }
- QLocalSocket active;
- active.connectToServer(socketname);
- QVERIFY2(server.waitForNewConnection(10), server.errorString().toLatin1().constData());
- QVERIFY2(active.waitForConnected(10), active.errorString().toLatin1().constData());
- QVERIFY2(server.hasPendingConnections(), server.errorString().toLatin1().constData());
- QLocalSocket *passive = server.nextPendingConnection();
-
- QFile file(testFileName);
- QUrl url = QUrl::fromLocalFile(file.fileName());
- QNetworkRequest request(url);
-
- QFETCH(QByteArray, data);
- active.write(data);
- active.close();
- QNetworkReplyPtr reply = manager.put(QNetworkRequest(url), passive);
- passive->setParent(reply);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
- QVERIFY(reply->readAll().isEmpty());
-
- QVERIFY(file.open(QIODevice::ReadOnly));
- QCOMPARE(file.size(), qint64(data.size()));
- QByteArray contents = file.readAll();
- QCOMPARE(contents, data);
-}
-
-void tst_QNetworkReply::ioPutToFileFromProcess_data()
-{
- putToFile_data();
-}
-
-void tst_QNetworkReply::ioPutToFileFromProcess()
-{
-#if defined(Q_OS_WINCE) || defined (Q_OS_SYMBIAN)
- QSKIP("Currently no stdin/out supported for Windows CE / Symbian OS", SkipAll);
-#else
-
-#ifdef Q_OS_WIN
- if (qstrcmp(QTest::currentDataTag(), "small") == 0)
- QSKIP("When passing a CR-LF-LF sequence through Windows stdio, it gets converted, "
- "so this test fails. Disabled on Windows", SkipSingle);
-#endif
-
-#if defined(QT_NO_PROCESS)
- QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
-#else
- QFile file(testFileName);
-
- QUrl url = QUrl::fromLocalFile(file.fileName());
- QNetworkRequest request(url);
-
- QFETCH(QByteArray, data);
- QProcess process;
- process.start("echo/echo all");
- process.write(data);
- process.closeWriteChannel();
-
- QNetworkReplyPtr reply = manager.put(QNetworkRequest(url), &process);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
- QVERIFY(reply->readAll().isEmpty());
-
- QVERIFY(file.open(QIODevice::ReadOnly));
- QCOMPARE(file.size(), qint64(data.size()));
- QByteArray contents = file.readAll();
- QCOMPARE(contents, data);
-#endif
-#endif
-}
-
-void tst_QNetworkReply::ioPutToFtpFromFile_data()
-{
- ioPutToFileFromFile_data();
-}
-
-void tst_QNetworkReply::ioPutToFtpFromFile()
-{
- QFETCH(QString, fileName);
- QFile sourceFile(fileName);
- QVERIFY(sourceFile.open(QIODevice::ReadOnly));
-
- QUrl url("ftp://" + QtNetworkSettings::serverName());
- url.setPath(QString("/qtest/upload/qnetworkaccess-ioPutToFtpFromFile-%1-%2")
- .arg(QTest::currentDataTag())
- .arg(uniqueExtension));
-
- QNetworkRequest request(url);
- QNetworkReplyPtr reply = manager.put(request, &sourceFile);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
- QVERIFY(reply->readAll().isEmpty());
-
- QVERIFY(sourceFile.atEnd());
- sourceFile.seek(0); // reset it to the beginning
-
- // download the file again from FTP to make sure it was uploaded
- // correctly
- QFtp ftp;
- ftp.connectToHost(url.host());
- ftp.login();
- ftp.get(url.path());
-
- QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(3);
- QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- QByteArray uploaded = ftp.readAll();
- QCOMPARE(qint64(uploaded.size()), sourceFile.size());
- QCOMPARE(uploaded, sourceFile.readAll());
-
- ftp.close();
- QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
-}
-
-void tst_QNetworkReply::ioPutToHttpFromFile_data()
-{
- ioPutToFileFromFile_data();
-}
-
-void tst_QNetworkReply::ioPutToHttpFromFile()
-{
- QFETCH(QString, fileName);
- QFile sourceFile(fileName);
- QVERIFY(sourceFile.open(QIODevice::ReadOnly));
-
- QUrl url("http://" + QtNetworkSettings::serverName());
- url.setPath(QString("/dav/qnetworkaccess-ioPutToHttpFromFile-%1-%2")
- .arg(QTest::currentDataTag())
- .arg(uniqueExtension));
-
- QNetworkRequest request(url);
- QNetworkReplyPtr reply = manager.put(request, &sourceFile);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- // verify that the HTTP status code is 201 Created
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201);
-
- QVERIFY(sourceFile.atEnd());
- sourceFile.seek(0); // reset it to the beginning
-
- // download the file again from HTTP to make sure it was uploaded
- // correctly
- reply = manager.get(request);
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
-
- QCOMPARE(reply->readAll(), sourceFile.readAll());
-}
-
-void tst_QNetworkReply::ioPostToHttpFromFile_data()
-{
- ioPutToFileFromFile_data();
-}
-
-void tst_QNetworkReply::ioPostToHttpFromFile()
-{
- QFETCH(QString, fileName);
- QFile sourceFile(fileName);
- QVERIFY(sourceFile.open(QIODevice::ReadOnly));
-
- QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi");
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
-
- QNetworkReplyPtr reply = manager.post(request, &sourceFile);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- // verify that the HTTP status code is 200 Ok
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
-
- QVERIFY(sourceFile.atEnd());
- sourceFile.seek(0); // reset it to the beginning
-
- QCOMPARE(reply->readAll().trimmed(), md5sum(sourceFile.readAll()).toHex());
-}
-
-void tst_QNetworkReply::ioPostToHttpFromSocket_data()
-{
- QTest::addColumn<QByteArray>("data");
- QTest::addColumn<QByteArray>("md5sum");
- QTest::addColumn<QUrl>("url");
- QTest::addColumn<QNetworkProxy>("proxy");
- QTest::addColumn<int>("authenticationRequiredCount");
- QTest::addColumn<int>("proxyAuthenticationRequiredCount");
-
- for (int i = 0; i < proxies.count(); ++i)
- for (int auth = 0; auth < 2; ++auth) {
- QUrl url;
- if (auth)
- url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi";
- else
- url = "http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi";
-
- QNetworkProxy proxy = proxies.at(i).proxy;
- QByteArray testsuffix = QByteArray(auth ? "+auth" : "") + proxies.at(i).tag;
- int proxyauthcount = proxies.at(i).requiresAuthentication;
-
- QByteArray data;
- data = "";
- QTest::newRow("empty" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
-
- data = "This is a normal message.";
- QTest::newRow("generic" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
-
- data = "This is a message to show that Qt rocks!\r\n\n";
- QTest::newRow("small" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
-
- data = QByteArray("abcd\0\1\2\abcd",12);
- QTest::newRow("with-nul" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
-
- data = QByteArray(4097, '\4');
- QTest::newRow("4k+1" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
-
- data = QByteArray(128*1024+1, '\177');
- QTest::newRow("128k+1" + testsuffix) << data << md5sum(data) << url << proxy << auth << proxyauthcount;
- }
-}
-
-void tst_QNetworkReply::ioPostToHttpFromSocket()
-{
- qRegisterMetaType<QNetworkProxy>(); // for QSignalSpy
- qRegisterMetaType<QAuthenticator *>();
- qRegisterMetaType<QNetworkReply *>();
-
- QFETCH(QByteArray, data);
- QFETCH(QUrl, url);
- QFETCH(QNetworkProxy, proxy);
- SocketPair socketpair;
- socketpair.create();
- QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]);
-
- socketpair.endPoints[0]->write(data);
-
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
-
- manager.setProxy(proxy);
- QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]);
- socketpair.endPoints[0]->close();
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
-
- QSignalSpy authenticationRequiredSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- QSignalSpy proxyAuthenticationRequiredSpy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-
- QTestEventLoop::instance().enterLoop(12);
- disconnect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- // verify that the HTTP status code is 200 Ok
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
-
- QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
-
- QTEST(authenticationRequiredSpy.count(), "authenticationRequiredCount");
- QTEST(proxyAuthenticationRequiredSpy.count(), "proxyAuthenticationRequiredCount");
-}
-
-void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous_data()
-{
- QTest::addColumn<QByteArray>("data");
- QTest::addColumn<QByteArray>("md5sum");
-
- QByteArray data;
- data = "";
- QTest::newRow("empty") << data << md5sum(data);
-
- data = "This is a normal message.";
- QTest::newRow("generic") << data << md5sum(data);
-
- data = "This is a message to show that Qt rocks!\r\n\n";
- QTest::newRow("small") << data << md5sum(data);
-
- data = QByteArray("abcd\0\1\2\abcd",12);
- QTest::newRow("with-nul") << data << md5sum(data);
-
- data = QByteArray(4097, '\4');
- QTest::newRow("4k+1") << data << md5sum(data);
-
- data = QByteArray(128*1024+1, '\177');
- QTest::newRow("128k+1") << data << md5sum(data);
-
- data = QByteArray(2*1024*1024+1, '\177');
- QTest::newRow("2MB+1") << data << md5sum(data);
-}
-
-void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous()
-{
- QFETCH(QByteArray, data);
-
- SocketPair socketpair;
- QVERIFY(socketpair.create());
- QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]);
- socketpair.endPoints[0]->write(data);
- socketpair.endPoints[0]->waitForBytesWritten(5000);
- // ### for 4.8: make the socket pair unbuffered, to not read everything in one go in QNetworkReplyImplPrivate::setup()
- QTestEventLoop::instance().enterLoop(3);
-
- QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi");
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]);
- QVERIFY(reply->isFinished());
- socketpair.endPoints[0]->close();
-
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- // verify that the HTTP status code is 200 Ok
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
-
- QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
-}
-
-// this tests checks if rewinding the POST-data to some place in the middle
-// worked.
-void tst_QNetworkReply::ioPostToHttpFromMiddleOfFileToEnd()
-{
- QFile sourceFile(SRCDIR "/rfc3252.txt");
- QVERIFY(sourceFile.open(QIODevice::ReadOnly));
- // seeking to the middle
- sourceFile.seek(sourceFile.size() / 2);
-
- QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi";
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
- QNetworkReplyPtr reply = manager.post(request, &sourceFile);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
-
- QTestEventLoop::instance().enterLoop(2);
- disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- // compare half data
- sourceFile.seek(sourceFile.size() / 2);
- QByteArray data = sourceFile.readAll();
- QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
-}
-
-void tst_QNetworkReply::ioPostToHttpFromMiddleOfFileFiveBytes()
-{
- QFile sourceFile(SRCDIR "/rfc3252.txt");
- QVERIFY(sourceFile.open(QIODevice::ReadOnly));
- // seeking to the middle
- sourceFile.seek(sourceFile.size() / 2);
-
- QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi";
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
- // only send 5 bytes
- request.setHeader(QNetworkRequest::ContentLengthHeader, 5);
- QVERIFY(request.header(QNetworkRequest::ContentLengthHeader).isValid());
- QNetworkReplyPtr reply = manager.post(request, &sourceFile);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
-
- QTestEventLoop::instance().enterLoop(2);
- disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- // compare half data
- sourceFile.seek(sourceFile.size() / 2);
- QByteArray data = sourceFile.read(5);
- QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
-}
-
-void tst_QNetworkReply::ioPostToHttpFromMiddleOfQBufferFiveBytes()
-{
- // test needed since a QBuffer goes with a different codepath than the QFile
- // tested in ioPostToHttpFromMiddleOfFileFiveBytes
- QBuffer uploadBuffer;
- uploadBuffer.open(QIODevice::ReadWrite);
- uploadBuffer.write("1234567890");
- uploadBuffer.seek(5);
-
- QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi";
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
- QNetworkReplyPtr reply = manager.post(request, &uploadBuffer);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
-
- QTestEventLoop::instance().enterLoop(2);
- disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- // compare half data
- uploadBuffer.seek(5);
- QByteArray data = uploadBuffer.read(5);
- QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
-}
-
-
-void tst_QNetworkReply::ioPostToHttpNoBufferFlag()
-{
- QByteArray data = QByteArray("daaaaaaataaaaaaa");
- // create a sequential QIODevice by feeding the data into a local TCP server
- SocketPair socketpair;
- socketpair.create();
- QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]);
- socketpair.endPoints[0]->write(data);
-
- QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi";
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
- // disallow buffering
- request.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, true);
- request.setHeader(QNetworkRequest::ContentLengthHeader, data.size());
- QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]);
- socketpair.endPoints[0]->close();
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
-
- QTestEventLoop::instance().enterLoop(2);
- disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
- this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
-
- // verify: error code is QNetworkReply::ContentReSendError
- QCOMPARE(reply->error(), QNetworkReply::ContentReSendError);
-}
-
-#ifndef QT_NO_OPENSSL
-class SslServer : public QTcpServer {
- Q_OBJECT
-public:
- SslServer() : socket(0) {};
- void incomingConnection(int socketDescriptor) {
- QSslSocket *serverSocket = new QSslSocket;
- serverSocket->setParent(this);
-
- if (serverSocket->setSocketDescriptor(socketDescriptor)) {
- connect(serverSocket, SIGNAL(encrypted()), this, SLOT(encryptedSlot()));
- connect(serverSocket, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
- serverSocket->setProtocol(QSsl::AnyProtocol);
- connect(serverSocket, SIGNAL(sslErrors(const QList<QSslError>&)), serverSocket, SLOT(ignoreSslErrors()));
- serverSocket->setLocalCertificate(SRCDIR "/certs/server.pem");
- serverSocket->setPrivateKey(SRCDIR "/certs/server.key");
- serverSocket->startServerEncryption();
- } else {
- delete serverSocket;
- }
- }
-signals:
- void newEncryptedConnection();
-public slots:
- void encryptedSlot() {
- socket = (QSslSocket*) sender();
- emit newEncryptedConnection();
- }
- void readyReadSlot() {
- // for the incoming sockets, not the server socket
- //qDebug() << static_cast<QSslSocket*>(sender())->bytesAvailable() << static_cast<QSslSocket*>(sender())->encryptedBytesAvailable();
- }
-
-public:
- QSslSocket *socket;
-};
-
-// very similar to ioPostToHttpUploadProgress but for SSL
-void tst_QNetworkReply::ioPostToHttpsUploadProgress()
-{
- //QFile sourceFile(SRCDIR "/bigfile");
- //QVERIFY(sourceFile.open(QIODevice::ReadOnly));
- qint64 wantedSize = 2*1024*1024; // 2 MB
- QByteArray sourceFile;
- // And in the case of SSL, the compression can fool us and let the
- // server send the data much faster than expected.
- // So better provide random data that cannot be compressed.
- for (int i = 0; i < wantedSize; ++i)
- sourceFile += (char)qrand();
-
- // emulate a minimal https server
- SslServer server;
- server.listen(QHostAddress(QHostAddress::LocalHost), 0);
-
- // create the request
- QUrl url = QUrl(QString("https://127.0.0.1:%1/").arg(server.serverPort()));
- QNetworkRequest request(url);
-
- request.setRawHeader("Content-Type", "application/octet-stream");
- QNetworkReplyPtr reply = manager.post(request, sourceFile);
-
- QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64)));
- connect(&server, SIGNAL(newEncryptedConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- connect(reply, SIGNAL(sslErrors(const QList<QSslError>&)), reply, SLOT(ignoreSslErrors()));
-
- // get the request started and the incoming socket connected
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QTcpSocket *incomingSocket = server.socket;
- QVERIFY(incomingSocket);
- disconnect(&server, SIGNAL(newEncryptedConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
-
- incomingSocket->setReadBufferSize(1*1024);
- QTestEventLoop::instance().enterLoop(2);
- // some progress should have been made
- QVERIFY(!spy.isEmpty());
- QList<QVariant> args = spy.last();
- QVERIFY(args.at(0).toLongLong() > 0);
- // but not everything!
- QVERIFY(args.at(0).toLongLong() != sourceFile.size());
-
- // set the read buffer to unlimited
- incomingSocket->setReadBufferSize(0);
- QTestEventLoop::instance().enterLoop(10);
- // progress should be finished
- QVERIFY(!spy.isEmpty());
- QList<QVariant> args3 = spy.last();
- QCOMPARE(args3.at(0).toLongLong(), args3.at(1).toLongLong());
- QCOMPARE(args3.at(0).toLongLong(), qint64(sourceFile.size()));
-
- // after sending this, the QNAM should emit finished()
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- incomingSocket->write("HTTP/1.0 200 OK\r\n");
- incomingSocket->write("Content-Length: 0\r\n");
- incomingSocket->write("\r\n");
- QTestEventLoop::instance().enterLoop(10);
- // not timeouted -> finished() was emitted
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- incomingSocket->close();
- server.close();
-}
-#endif
-
-void tst_QNetworkReply::ioGetFromBuiltinHttp_data()
-{
- QTest::addColumn<bool>("https");
- QTest::addColumn<int>("bufferSize");
- QTest::newRow("http+unlimited") << false << 0;
- QTest::newRow("http+limited") << false << 4096;
-#ifndef QT_NO_OPENSSL
- QTest::newRow("https+unlimited") << true << 0;
- QTest::newRow("https+limited") << true << 4096;
-#endif
-}
-
-void tst_QNetworkReply::ioGetFromBuiltinHttp()
-{
- QSKIP("Limiting is broken right now, check QTBUG-15065", SkipAll);
- QFETCH(bool, https);
- QFETCH(int, bufferSize);
-
- QByteArray testData;
- // Make the data big enough so that it can fill the kernel buffer
- // (which seems to hold 202 KB here)
- const int wantedSize = 1200 * 1000;
- testData.reserve(wantedSize);
- // And in the case of SSL, the compression can fool us and let the
- // server send the data much faster than expected.
- // So better provide random data that cannot be compressed.
- for (int i = 0; i < wantedSize; ++i)
- testData += (char)qrand();
-
- QByteArray httpResponse = QByteArray("HTTP/1.0 200 OK\r\nContent-Length: ");
- httpResponse += QByteArray::number(testData.size());
- httpResponse += "\r\n\r\n";
- httpResponse += testData;
-
- qDebug() << "Server will send" << (httpResponse.size()-testData.size()) << "bytes of header and"
- << testData.size() << "bytes of data";
-
- const bool fillKernelBuffer = bufferSize > 0;
- FastSender server(httpResponse, https, fillKernelBuffer);
-
- QUrl url(QString("%1://127.0.0.1:%2/qtest/rfc3252.txt")
- .arg(https?"https":"http")
- .arg(server.serverPort()));
- QNetworkRequest request(url);
- QNetworkReplyPtr reply = manager.get(request);
- reply->setReadBufferSize(bufferSize);
- reply->ignoreSslErrors();
- const int rate = 200; // in kB per sec
- RateControlledReader reader(server, reply, rate, bufferSize);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTime loopTime;
- loopTime.start();
- QTestEventLoop::instance().enterLoop(30);
- const int elapsedTime = loopTime.elapsed();
- server.wait();
- reader.wrapUp();
-
- qDebug() << "send rate:" << server.transferRate << "B/s";
- qDebug() << "receive rate:" << reader.totalBytesRead * 1000 / elapsedTime
- << "(it received" << reader.totalBytesRead << "bytes in" << elapsedTime << "ms)";
-
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), (qint64)testData.size());
- if (reader.data.size() < testData.size()) { // oops?
- QCOMPARE(reader.data, testData.mid(0, reader.data.size()));
- qDebug() << "The data is incomplete, the last" << testData.size() - reader.data.size() << "bytes are missing";
- QEXPECT_FAIL("http+limited", "Limiting is broken right now, check QTBUG-15065", Abort);
- QEXPECT_FAIL("https+limited", "Limiting is broken right now, check QTBUG-15065", Abort);
- }
- QCOMPARE(reader.data.size(), testData.size());
- QCOMPARE(reader.data, testData);
-
- // OK we got the file alright, but did setReadBufferSize work?
- QVERIFY(server.transferRate != -1);
- if (bufferSize > 0) {
- const int allowedDeviation = 16; // TODO find out why the send rate is 13% faster currently
- const int minRate = rate * 1024 * (100-allowedDeviation) / 100;
- const int maxRate = rate * 1024 * (100+allowedDeviation) / 100;
- qDebug() << minRate << "<="<< server.transferRate << "<=" << maxRate << "?";
- QEXPECT_FAIL("http+limited", "Limiting is broken right now, check QTBUG-15065", Continue);
- QEXPECT_FAIL("https+limited", "Limiting is broken right now, check QTBUG-15065", Continue);
- QVERIFY(server.transferRate >= minRate && server.transferRate <= maxRate);
- }
-}
-
-void tst_QNetworkReply::ioPostToHttpUploadProgress()
-{
- QFile sourceFile(SRCDIR "/bigfile");
- QVERIFY(sourceFile.open(QIODevice::ReadOnly));
-
- // emulate a minimal http server
- QTcpServer server;
- server.listen(QHostAddress(QHostAddress::LocalHost), 0);
-
- // create the request
- QUrl url = QUrl(QString("http://127.0.0.1:%1/").arg(server.serverPort()));
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
- QNetworkReplyPtr reply = manager.post(request, &sourceFile);
- QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64)));
- connect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- // get the request started and the incoming socket connected
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QTcpSocket *incomingSocket = server.nextPendingConnection();
- QVERIFY(incomingSocket);
- disconnect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- incomingSocket->setReadBufferSize(1*1024);
- QTestEventLoop::instance().enterLoop(5);
- // some progress should have been made
- QList<QVariant> args = spy.last();
- QVERIFY(!args.isEmpty());
- QVERIFY(args.at(0).toLongLong() > 0);
- // but not everything!
- QVERIFY(args.at(0).toLongLong() != sourceFile.size());
-
- // set the read buffer to unlimited
- incomingSocket->setReadBufferSize(0);
- QTestEventLoop::instance().enterLoop(10);
- // progress should be finished
- QList<QVariant> args3 = spy.last();
- QVERIFY(!args3.isEmpty());
- // More progress than before
- QVERIFY(args3.at(0).toLongLong() > args.at(0).toLongLong());
- QCOMPARE(args3.at(0).toLongLong(), args3.at(1).toLongLong());
- // And actually finished..
- QCOMPARE(args3.at(0).toLongLong(), sourceFile.size());
-
- // after sending this, the QNAM should emit finished()
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- incomingSocket->write("HTTP/1.0 200 OK\r\n");
- incomingSocket->write("Content-Length: 0\r\n");
- incomingSocket->write("\r\n");
- QTestEventLoop::instance().enterLoop(10);
- // not timeouted -> finished() was emitted
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- incomingSocket->close();
- server.close();
-}
-
-void tst_QNetworkReply::ioPostToHttpEmptyUploadProgress()
-{
- QByteArray ba;
- ba.resize(0);
- QBuffer buffer(&ba,0);
- QVERIFY(buffer.open(QIODevice::ReadOnly));
-
- // emulate a minimal http server
- QTcpServer server;
- server.listen(QHostAddress(QHostAddress::LocalHost), 0);
-
- // create the request
- QUrl url = QUrl(QString("http://127.0.0.1:%1/").arg(server.serverPort()));
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
- QNetworkReplyPtr reply = manager.post(request, &buffer);
- QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64)));
- connect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
-
- // get the request started and the incoming socket connected
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QTcpSocket *incomingSocket = server.nextPendingConnection();
- QVERIFY(incomingSocket);
-
- // after sending this, the QNAM should emit finished()
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- incomingSocket->write("HTTP/1.0 200 OK\r\n");
- incomingSocket->write("Content-Length: 0\r\n");
- incomingSocket->write("\r\n");
- incomingSocket->flush();
- QTestEventLoop::instance().enterLoop(10);
- // not timeouted -> finished() was emitted
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- // final check: only 1 uploadProgress has been emitted
- QVERIFY(spy.length() == 1);
- QList<QVariant> args = spy.last();
- QVERIFY(!args.isEmpty());
- QCOMPARE(args.at(0).toLongLong(), buffer.size());
- QCOMPARE(args.at(0).toLongLong(), buffer.size());
-
- incomingSocket->close();
- server.close();
-}
-
-void tst_QNetworkReply::lastModifiedHeaderForFile()
-{
- QFileInfo fileInfo(SRCDIR "/bigfile");
- QVERIFY(fileInfo.exists());
-
- QUrl url = QUrl::fromLocalFile(fileInfo.filePath());
-
- QNetworkRequest request(url);
- QNetworkReplyPtr reply = manager.head(request);
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QDateTime header = reply->header(QNetworkRequest::LastModifiedHeader).toDateTime();
- QCOMPARE(header, fileInfo.lastModified());
-}
-
-void tst_QNetworkReply::lastModifiedHeaderForHttp()
-{
- // Tue, 22 May 2007 12:04:57 GMT according to webserver
- QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/fluke.gif";
-
- QNetworkRequest request(url);
- QNetworkReplyPtr reply = manager.head(request);
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QDateTime header = reply->header(QNetworkRequest::LastModifiedHeader).toDateTime();
- QDateTime realDate = QDateTime::fromString("2007-05-22T12:04:57", Qt::ISODate);
- realDate.setTimeSpec(Qt::UTC);
-
- QCOMPARE(header, realDate);
-}
-
-void tst_QNetworkReply::httpCanReadLine()
-{
- QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QVERIFY(reply->canReadLine());
- QVERIFY(!reply->readAll().isEmpty());
- QVERIFY(!reply->canReadLine());
-}
-
-void tst_QNetworkReply::rateControl_data()
-{
- QTest::addColumn<int>("rate");
-
- QTest::newRow("15") << 15;
- QTest::newRow("40") << 40;
- QTest::newRow("73") << 73;
- QTest::newRow("80") << 80;
- QTest::newRow("125") << 125;
- QTest::newRow("250") << 250;
- QTest::newRow("1024") << 1024;
-}
-
-void tst_QNetworkReply::rateControl()
-{
- QSKIP("Test disabled -- only for manual purposes", SkipAll);
- // this function tests that we aren't reading from the network
- // faster than the data is being consumed.
- QFETCH(int, rate);
-
- // ask for 20 seconds worth of data
- FastSender sender(20 * rate * 1024);
-
- QNetworkRequest request("debugpipe://localhost:" + QString::number(sender.serverPort()));
- QNetworkReplyPtr reply = manager.get(request);
- reply->setReadBufferSize(32768);
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
- QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
-
- RateControlledReader reader(sender, reply, rate, 20);
-
- // this test is designed to run for 25 seconds at most
- QTime loopTime;
- loopTime.start();
- QTestEventLoop::instance().enterLoop(40);
- int elapsedTime = loopTime.elapsed();
-
- if (!errorSpy.isEmpty()) {
- qDebug() << "ERROR!" << errorSpy[0][0] << reply->errorString();
- }
-
- qDebug() << "tst_QNetworkReply::rateControl" << "send rate:" << sender.transferRate;
- qDebug() << "tst_QNetworkReply::rateControl" << "receive rate:" << reader.totalBytesRead * 1000 / elapsedTime
- << "(it received" << reader.totalBytesRead << "bytes in" << elapsedTime << "ms)";
-
- sender.wait();
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QVERIFY(sender.transferRate != -1);
- int minRate = rate * 1024 * 9 / 10;
- int maxRate = rate * 1024 * 11 / 10;
- QVERIFY(sender.transferRate >= minRate);
- QVERIFY(sender.transferRate <= maxRate);
-}
-
-void tst_QNetworkReply::downloadProgress_data()
-{
- QTest::addColumn<int>("loopCount");
-
- QTest::newRow("empty") << 0;
- QTest::newRow("small") << 4;
-#ifndef Q_OS_SYMBIAN
- QTest::newRow("big") << 4096;
-#else
- // it can run even with 4096
- // but it takes lot time
- //especially on emulator
- QTest::newRow("big") << 1024;
-#endif
-}
-
-void tst_QNetworkReply::downloadProgress()
-{
- QTcpServer server;
- QVERIFY(server.listen());
-
- QNetworkRequest request("debugpipe://127.0.0.1:" + QString::number(server.serverPort()) + "/?bare=1");
- QNetworkReplyPtr reply = manager.get(request);
- QSignalSpy spy(reply, SIGNAL(downloadProgress(qint64,qint64)));
- connect(reply, SIGNAL(downloadProgress(qint64,qint64)),
- &QTestEventLoop::instance(), SLOT(exitLoop()));
- QVERIFY(spy.isValid());
- QVERIFY(!reply->isFinished());
- QVERIFY(reply->isRunning());
-
- QCoreApplication::instance()->processEvents();
- if (!server.hasPendingConnections())
- server.waitForNewConnection(1000);
- QVERIFY(server.hasPendingConnections());
- QCOMPARE(spy.count(), 0);
-
- QByteArray data(128, 'a');
- QTcpSocket *sender = server.nextPendingConnection();
- QVERIFY(sender);
-
- QFETCH(int, loopCount);
- for (int i = 1; i <= loopCount; ++i) {
- sender->write(data);
- QVERIFY2(sender->waitForBytesWritten(2000), "Network timeout");
-
- spy.clear();
- QTestEventLoop::instance().enterLoop(2);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(spy.count() > 0);
- QVERIFY(!reply->isFinished());
- QVERIFY(reply->isRunning());
-
- QList<QVariant> args = spy.last();
- QCOMPARE(args.at(0).toInt(), i*data.size());
- QCOMPARE(args.at(1).toInt(), -1);
- }
-
- // close the connection:
- delete sender;
-
- spy.clear();
- QTestEventLoop::instance().enterLoop(2);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(spy.count() > 0);
- QVERIFY(!reply->isRunning());
- QVERIFY(reply->isFinished());
-
- QList<QVariant> args = spy.last();
- QCOMPARE(args.at(0).toInt(), loopCount * data.size());
- QCOMPARE(args.at(1).toInt(), loopCount * data.size());
-}
-
-void tst_QNetworkReply::uploadProgress_data()
-{
- putToFile_data();
-}
-
-void tst_QNetworkReply::uploadProgress()
-{
- QFETCH(QByteArray, data);
- QTcpServer server;
- QVERIFY(server.listen());
-
- QNetworkRequest request("debugpipe://127.0.0.1:" + QString::number(server.serverPort()) + "/?bare=1");
- QNetworkReplyPtr reply = manager.put(request, data);
- QSignalSpy spy(reply, SIGNAL(uploadProgress(qint64,qint64)));
- QSignalSpy finished(reply, SIGNAL(finished()));
- QVERIFY(spy.isValid());
- QVERIFY(finished.isValid());
-
- QCoreApplication::instance()->processEvents();
- if (!server.hasPendingConnections())
- server.waitForNewConnection(1000);
- QVERIFY(server.hasPendingConnections());
-
- QTcpSocket *receiver = server.nextPendingConnection();
- if (finished.count() == 0) {
- // it's not finished yet, so wait for it to be
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(2);
- QVERIFY(!QTestEventLoop::instance().timeout());
- }
- delete receiver;
-
- QVERIFY(finished.count() > 0);
- QVERIFY(spy.count() > 0);
-
- QList<QVariant> args = spy.last();
- QCOMPARE(args.at(0).toInt(), data.size());
- QCOMPARE(args.at(1).toInt(), data.size());
-}
-
-void tst_QNetworkReply::chaining_data()
-{
- putToFile_data();
-}
-
-void tst_QNetworkReply::chaining()
-{
- QTemporaryFile sourceFile(QDir::currentPath() + "/temp-XXXXXX");
- sourceFile.setAutoRemove(true);
- QVERIFY(sourceFile.open());
-
- QFETCH(QByteArray, data);
- QVERIFY(sourceFile.write(data) == data.size());
- sourceFile.flush();
- QCOMPARE(sourceFile.size(), qint64(data.size()));
-
- QNetworkRequest request(QUrl::fromLocalFile(sourceFile.fileName()));
- QNetworkReplyPtr getReply = manager.get(request);
-
- QFile targetFile(testFileName);
- QUrl url = QUrl::fromLocalFile(targetFile.fileName());
- request.setUrl(url);
- QNetworkReplyPtr putReply = manager.put(request, getReply);
-
- connect(putReply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(getReply->url(), QUrl::fromLocalFile(sourceFile.fileName()));
- QCOMPARE(getReply->error(), QNetworkReply::NoError);
- QCOMPARE(getReply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), sourceFile.size());
-
- QCOMPARE(putReply->url(), url);
- QCOMPARE(putReply->error(), QNetworkReply::NoError);
- QCOMPARE(putReply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), Q_INT64_C(0));
- QVERIFY(putReply->readAll().isEmpty());
-
- QVERIFY(sourceFile.atEnd());
- sourceFile.seek(0); // reset it to the beginning
-
- QVERIFY(targetFile.open(QIODevice::ReadOnly));
- QCOMPARE(targetFile.size(), sourceFile.size());
- QCOMPARE(targetFile.readAll(), sourceFile.readAll());
-}
-
-void tst_QNetworkReply::receiveCookiesFromHttp_data()
-{
- QTest::addColumn<QString>("cookieString");
- QTest::addColumn<QList<QNetworkCookie> >("expectedCookiesFromHttp");
- QTest::addColumn<QList<QNetworkCookie> >("expectedCookiesInJar");
-
- QTest::newRow("empty") << "" << QList<QNetworkCookie>() << QList<QNetworkCookie>();
-
- QList<QNetworkCookie> header, jar;
- QNetworkCookie cookie("a", "b");
- header << cookie;
- cookie.setDomain(QtNetworkSettings::serverName());
- cookie.setPath("/qtest/cgi-bin/");
- jar << cookie;
- QTest::newRow("simple-cookie") << "a=b" << header << jar;
-
- header << QNetworkCookie("c", "d");
- cookie.setName("c");
- cookie.setValue("d");
- jar << cookie;
- QTest::newRow("two-cookies") << "a=b, c=d" << header << jar;
- QTest::newRow("two-cookies-2") << "a=b\nc=d" << header << jar;
-
- header.clear();
- jar.clear();
- cookie = QNetworkCookie("a", "b");
- cookie.setPath("/not/part-of-path");
- header << cookie;
- cookie.setDomain(QtNetworkSettings::serverName());
- jar << cookie;
- QTest::newRow("invalid-cookie-path") << "a=b; path=/not/part-of-path" << header << jar;
-
- jar.clear();
- cookie = QNetworkCookie("a", "b");
- cookie.setDomain(".example.com");
- header.clear();
- header << cookie;
- QTest::newRow("invalid-cookie-domain") << "a=b; domain=.example.com" << header << jar;
-}
-
-void tst_QNetworkReply::receiveCookiesFromHttp()
-{
- QFETCH(QString, cookieString);
-
- QByteArray data = cookieString.toLatin1() + '\n';
- QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/set-cookie.cgi");
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
- QNetworkReplyPtr reply;
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
-
- QList<QNetworkCookie> setCookies =
- qvariant_cast<QList<QNetworkCookie> >(reply->header(QNetworkRequest::SetCookieHeader));
- QTEST(setCookies, "expectedCookiesFromHttp");
- QTEST(cookieJar->allCookies(), "expectedCookiesInJar");
-}
-
-void tst_QNetworkReply::receiveCookiesFromHttpSynchronous_data()
-{
- tst_QNetworkReply::receiveCookiesFromHttp_data();
-}
-
-void tst_QNetworkReply::receiveCookiesFromHttpSynchronous()
-{
- QFETCH(QString, cookieString);
-
- QByteArray data = cookieString.toLatin1() + '\n';
- QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/set-cookie.cgi");
-
- QNetworkRequest request(url);
- request.setRawHeader("Content-Type", "application/octet-stream");
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- QNetworkReplyPtr reply;
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
-
- QList<QNetworkCookie> setCookies =
- qvariant_cast<QList<QNetworkCookie> >(reply->header(QNetworkRequest::SetCookieHeader));
- QTEST(setCookies, "expectedCookiesFromHttp");
- QTEST(cookieJar->allCookies(), "expectedCookiesInJar");
-}
-
-void tst_QNetworkReply::sendCookies_data()
-{
- QTest::addColumn<QList<QNetworkCookie> >("cookiesToSet");
- QTest::addColumn<QString>("expectedCookieString");
-
- QList<QNetworkCookie> list;
- QTest::newRow("empty") << list << "";
-
- QNetworkCookie cookie("a", "b");
- cookie.setPath("/");
- cookie.setDomain("example.com");
- list << cookie;
- QTest::newRow("no-match-domain") << list << "";
-
- cookie.setDomain(QtNetworkSettings::serverName());
- cookie.setPath("/something/else");
- list << cookie;
- QTest::newRow("no-match-path") << list << "";
-
- cookie.setPath("/");
- list << cookie;
- QTest::newRow("simple-cookie") << list << "a=b";
-
- cookie.setPath("/qtest");
- cookie.setValue("longer");
- list << cookie;
- QTest::newRow("two-cookies") << list << "a=longer; a=b";
-
- list.clear();
- cookie = QNetworkCookie("a", "b");
- cookie.setPath("/");
- cookie.setDomain("." + QtNetworkSettings::serverDomainName());
- list << cookie;
- QTest::newRow("domain-match") << list << "a=b";
-
- // but it shouldn't match this:
- cookie.setDomain(QtNetworkSettings::serverDomainName());
- list << cookie;
- QTest::newRow("domain-match-2") << list << "a=b";
-}
-
-void tst_QNetworkReply::sendCookies()
-{
- QFETCH(QString, expectedCookieString);
- QFETCH(QList<QNetworkCookie>, cookiesToSet);
- cookieJar->setAllCookies(cookiesToSet);
-
- QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/get-cookie.cgi");
- QNetworkRequest request(url);
- QNetworkReplyPtr reply;
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
-
- QCOMPARE(QString::fromLatin1(reply->readAll()).trimmed(), expectedCookieString);
-}
-
-void tst_QNetworkReply::sendCookiesSynchronous_data()
-{
- tst_QNetworkReply::sendCookies_data();
-}
-
-void tst_QNetworkReply::sendCookiesSynchronous()
-{
- QFETCH(QString, expectedCookieString);
- QFETCH(QList<QNetworkCookie>, cookiesToSet);
- cookieJar->setAllCookies(cookiesToSet);
-
- QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/get-cookie.cgi");
- QNetworkRequest request(url);
-
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- QNetworkReplyPtr reply;
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
-
- QCOMPARE(QString::fromLatin1(reply->readAll()).trimmed(), expectedCookieString);
-}
-
-void tst_QNetworkReply::nestedEventLoops_slot()
-{
- QEventLoop subloop;
-
- // 16 seconds: fluke times out in 15 seconds, which triggers a QTcpSocket error
- QTimer::singleShot(16000, &subloop, SLOT(quit()));
- subloop.exec();
-
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QNetworkReply::nestedEventLoops()
-{
- // Slightly fragile test, it may not be testing anything
- // This is certifying that we're not running into the same issue
- // that QHttp had (task 200432): the QTcpSocket connection is
- // closed by the remote end because of the kept-alive HTTP
- // connection timed out.
- //
- // The exact time required for this to happen is not exactly
- // defined. Our server (Apache httpd) times out after 15
- // seconds. (see above)
-
- qDebug("Takes 16 seconds to run, please wait");
- qRegisterMetaType<QNetworkReply::NetworkError>();
-
- QUrl url("http://" + QtNetworkSettings::serverName());
- QNetworkRequest request(url);
- QNetworkReplyPtr reply = manager.get(request);
-
- QSignalSpy finishedspy(reply, SIGNAL(finished()));
- QSignalSpy errorspy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
-
- connect(reply, SIGNAL(finished()), SLOT(nestedEventLoops_slot()));
- QTestEventLoop::instance().enterLoop(20);
- QVERIFY2(!QTestEventLoop::instance().timeout(), "Network timeout");
-
- QCOMPARE(finishedspy.count(), 1);
- QCOMPARE(errorspy.count(), 0);
-}
-
-void tst_QNetworkReply::httpProxyCommands_data()
-{
- QTest::addColumn<QUrl>("url");
- QTest::addColumn<QByteArray>("responseToSend");
- QTest::addColumn<QString>("expectedCommand");
-
- QTest::newRow("http")
- << QUrl("http://0.0.0.0:4443/http-request")
- << QByteArray("HTTP/1.0 200 OK\r\nProxy-Connection: close\r\nContent-Length: 1\r\n\r\n1")
- << "GET http://0.0.0.0:4443/http-request HTTP/1.";
-#ifndef QT_NO_OPENSSL
- QTest::newRow("https")
- << QUrl("https://0.0.0.0:4443/https-request")
- << QByteArray("HTTP/1.0 200 Connection Established\r\n\r\n")
- << "CONNECT 0.0.0.0:4443 HTTP/1.";
-#endif
-}
-
-void tst_QNetworkReply::httpProxyCommands()
-{
- QFETCH(QUrl, url);
- QFETCH(QByteArray, responseToSend);
- QFETCH(QString, expectedCommand);
-
- MiniHttpServer proxyServer(responseToSend);
- QNetworkProxy proxy(QNetworkProxy::HttpProxy, "127.0.0.1", proxyServer.serverPort());
-
- manager.setProxy(proxy);
- QNetworkRequest request(url);
- request.setRawHeader("User-Agent", "QNetworkReplyAutoTest/1.0");
- QNetworkReplyPtr reply = manager.get(request);
- //clearing the proxy here causes the test to fail.
- //the proxy isn't used until after the bearer has been started
- //which is correct in general, because system proxy isn't known until that time.
- //removing this line is safe, as the proxy is also reset by the cleanup() function
- //manager.setProxy(QNetworkProxy());
-
- // wait for the finished signal
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- QTestEventLoop::instance().enterLoop(15);
-
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- //qDebug() << reply->error() << reply->errorString();
- //qDebug() << proxyServer.receivedData;
-
- // we don't really care if the request succeeded
- // especially since it won't succeed in the HTTPS case
- // so just check that the command was correct
-
- QString receivedHeader = proxyServer.receivedData.left(expectedCommand.length());
- QCOMPARE(receivedHeader, expectedCommand);
-
- //QTBUG-17223 - make sure the user agent from the request is sent to proxy server even for CONNECT
- int uapos = proxyServer.receivedData.indexOf("User-Agent");
- int uaend = proxyServer.receivedData.indexOf("\r\n", uapos);
- QByteArray uaheader = proxyServer.receivedData.mid(uapos, uaend - uapos);
- QCOMPARE(uaheader, QByteArray("User-Agent: QNetworkReplyAutoTest/1.0"));
-}
-
-class ProxyChangeHelper : public QObject {
- Q_OBJECT
-public:
- ProxyChangeHelper() : QObject(), signalCount(0) {};
-public slots:
- void finishedSlot() {
- signalCount++;
- if (signalCount == 2)
- QMetaObject::invokeMethod(&QTestEventLoop::instance(), "exitLoop", Qt::QueuedConnection);
- }
-private:
- int signalCount;
-};
-
-void tst_QNetworkReply::httpProxyCommandsSynchronous_data()
-{
- httpProxyCommands_data();
-}
-
-struct QThreadCleanup
-{
- static inline void cleanup(QThread *thread)
- {
- thread->quit();
- if (thread->wait(3000))
- delete thread;
- else
- qWarning("thread hung, leaking memory so test can finish");
- }
-};
-
-struct QDeleteLaterCleanup
-{
- static inline void cleanup(QObject *o)
- {
- o->deleteLater();
- }
-};
-
-void tst_QNetworkReply::httpProxyCommandsSynchronous()
-{
- QFETCH(QUrl, url);
- QFETCH(QByteArray, responseToSend);
- QFETCH(QString, expectedCommand);
-
- // when using synchronous commands, we need a different event loop for
- // the server thread, because the client is never returning to the
- // event loop
- QScopedPointer<QThread, QThreadCleanup> serverThread(new QThread);
- QScopedPointer<MiniHttpServer, QDeleteLaterCleanup> proxyServer(new MiniHttpServer(responseToSend, false, serverThread.data()));
- QNetworkProxy proxy(QNetworkProxy::HttpProxy, "127.0.0.1", proxyServer->serverPort());
-
- manager.setProxy(proxy);
- QNetworkRequest request(url);
-
- // send synchronous request
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- QNetworkReplyPtr reply = manager.get(request);
- QVERIFY(reply->isFinished()); // synchronous
- manager.setProxy(QNetworkProxy());
-
- //qDebug() << reply->error() << reply->errorString();
-
- // we don't really care if the request succeeded
- // especially since it won't succeed in the HTTPS case
- // so just check that the command was correct
-
- QString receivedHeader = proxyServer->receivedData.left(expectedCommand.length());
- QCOMPARE(receivedHeader, expectedCommand);
-}
-
-void tst_QNetworkReply::proxyChange()
-{
- ProxyChangeHelper helper;
- MiniHttpServer proxyServer(
- "HTTP/1.0 200 OK\r\nProxy-Connection: keep-alive\r\n"
- "Content-Length: 1\r\n\r\n1");
- QNetworkProxy dummyProxy(QNetworkProxy::HttpProxy, "127.0.0.1", proxyServer.serverPort());
- QNetworkRequest req(QUrl("http://" + QtNetworkSettings::serverName()));
- proxyServer.doClose = false;
-
- manager.setProxy(dummyProxy);
- QNetworkReplyPtr reply1 = manager.get(req);
- connect(reply1, SIGNAL(finished()), &helper, SLOT(finishedSlot()));
-
- manager.setProxy(QNetworkProxy());
- QNetworkReplyPtr reply2 = manager.get(req);
- connect(reply2, SIGNAL(finished()), &helper, SLOT(finishedSlot()));
-
- QTestEventLoop::instance().enterLoop(20);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- // verify that the replies succeeded
- QCOMPARE(reply1->error(), QNetworkReply::NoError);
- QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QVERIFY(reply1->size() == 1);
-
- QCOMPARE(reply2->error(), QNetworkReply::NoError);
- QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QVERIFY(reply2->size() > 1);
-
- // now try again and get an error
- // this verifies that we reuse the already-open connection
-
- proxyServer.doClose = true;
- proxyServer.dataToTransmit =
- "HTTP/1.0 403 Forbidden\r\nProxy-Connection: close\r\n"
- "Content-Length: 1\r\n\r\n1";
-
- manager.setProxy(dummyProxy);
- QNetworkReplyPtr reply3 = manager.get(req);
- connect(reply3, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QVERIFY(int(reply3->error()) > 0);
-}
-
-void tst_QNetworkReply::authorizationError_data()
-{
-
- QTest::addColumn<QString>("url");
- QTest::addColumn<int>("errorSignalCount");
- QTest::addColumn<int>("finishedSignalCount");
- QTest::addColumn<int>("error");
- QTest::addColumn<int>("httpStatusCode");
- QTest::addColumn<QString>("httpBody");
-
- QTest::newRow("unknown-authorization-method") << "http://" + QtNetworkSettings::serverName() +
- "/qtest/cgi-bin/http-unknown-authentication-method.cgi?401-authorization-required" << 1 << 1
- << int(QNetworkReply::AuthenticationRequiredError) << 401 << "authorization required";
- QTest::newRow("unknown-proxy-authorization-method") << "http://" + QtNetworkSettings::serverName() +
- "/qtest/cgi-bin/http-unknown-authentication-method.cgi?407-proxy-authorization-required" << 1 << 1
- << int(QNetworkReply::ProxyAuthenticationRequiredError) << 407
- << "authorization required";
-}
-
-void tst_QNetworkReply::authorizationError()
-{
- QFETCH(QString, url);
- QNetworkRequest request(url);
- QNetworkReplyPtr reply = manager.get(request);
-
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
- QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
- QSignalSpy finishedSpy(reply, SIGNAL(finished()));
- // now run the request:
- connect(reply, SIGNAL(finished()),
- &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QFETCH(int, errorSignalCount);
- QCOMPARE(errorSpy.count(), errorSignalCount);
- QFETCH(int, finishedSignalCount);
- QCOMPARE(finishedSpy.count(), finishedSignalCount);
- QFETCH(int, error);
- QCOMPARE(reply->error(), QNetworkReply::NetworkError(error));
-
- QFETCH(int, httpStatusCode);
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), httpStatusCode);
-
- QFETCH(QString, httpBody);
- QCOMPARE(qint64(reply->size()), qint64(httpBody.size()));
- QCOMPARE(QString(reply->readAll()), httpBody);
-}
-
-void tst_QNetworkReply::httpConnectionCount()
-{
- QTcpServer server;
- QVERIFY(server.listen());
- QCoreApplication::instance()->processEvents();
-
- for (int i = 0; i < 10; i++) {
- QNetworkRequest request (QUrl("http://127.0.0.1:" + QString::number(server.serverPort()) + "/" + QString::number(i)));
- QNetworkReply* reply = manager.get(request);
- reply->setParent(&server);
- }
-
- int pendingConnectionCount = 0;
- QTime time;
- time.start();
-
- while(pendingConnectionCount <= 20) {
- QTestEventLoop::instance().enterLoop(1);
- QTcpSocket *socket = server.nextPendingConnection();
- while (socket != 0) {
- pendingConnectionCount++;
- socket->setParent(&server);
- socket = server.nextPendingConnection();
- }
-
- // at max. wait 10 sec
- if (time.elapsed() > 10000)
- break;
- }
-
-#ifdef Q_OS_SYMBIAN
- // see in qhttpnetworkconnection.cpp
- // hardcoded defaultChannelCount = 3
- QCOMPARE(pendingConnectionCount, 3);
-#else
- QCOMPARE(pendingConnectionCount, 6);
-#endif
-}
-
-void tst_QNetworkReply::httpReUsingConnectionSequential_data()
-{
- QTest::addColumn<bool>("doDeleteLater");
- QTest::newRow("deleteLater") << true;
- QTest::newRow("noDeleteLater") << false;
-}
-
-void tst_QNetworkReply::httpReUsingConnectionSequential()
-{
- QFETCH(bool, doDeleteLater);
-
- QByteArray response("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- MiniHttpServer server(response);
- server.multiple = true;
- server.doClose = false;
-
- QUrl url;
- url.setScheme("http");
- url.setPort(server.serverPort());
- url.setHost("127.0.0.1");
- // first request
- QNetworkReply* reply1 = manager.get(QNetworkRequest(url));
- connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(2);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(!reply1->error());
- int reply1port = server.client->peerPort();
-
- if (doDeleteLater)
- reply1->deleteLater();
-
- // finished received, send the next one
- QNetworkReply*reply2 = manager.get(QNetworkRequest(url));
- connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(2);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(!reply2->error());
- int reply2port = server.client->peerPort(); // should still be the same object
-
- QVERIFY(reply1port > 0);
- QCOMPARE(server.totalConnections, 1);
- QCOMPARE(reply2port, reply1port);
-
- if (!doDeleteLater)
- reply1->deleteLater(); // only do it if it was not done earlier
- reply2->deleteLater();
-}
-
-class HttpReUsingConnectionFromFinishedSlot : public QObject {
- Q_OBJECT
-public:
- QNetworkReply* reply1;
- QNetworkReply* reply2;
- QUrl url;
- QNetworkAccessManager manager;
-public slots:
- void finishedSlot() {
- QVERIFY(!reply1->error());
-
- QFETCH(bool, doDeleteLater);
- if (doDeleteLater) {
- reply1->deleteLater();
- reply1 = 0;
- }
-
- // kick off 2nd request and exit the loop when it is done
- reply2 = manager.get(QNetworkRequest(url));
- reply2->setParent(this);
- connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- }
-};
-
-void tst_QNetworkReply::httpReUsingConnectionFromFinishedSlot_data()
-{
- httpReUsingConnectionSequential_data();
-}
-
-void tst_QNetworkReply::httpReUsingConnectionFromFinishedSlot()
-{
- QByteArray response("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
- MiniHttpServer server(response);
- server.multiple = true;
- server.doClose = false;
-
- HttpReUsingConnectionFromFinishedSlot helper;
- helper.reply1 = 0;
- helper.reply2 = 0;
- helper.url.setScheme("http");
- helper.url.setPort(server.serverPort());
- helper.url.setHost("127.0.0.1");
-
- // first request
- helper.reply1 = helper.manager.get(QNetworkRequest(helper.url));
- helper.reply1->setParent(&helper);
- connect(helper.reply1, SIGNAL(finished()), &helper, SLOT(finishedSlot()));
- QTestEventLoop::instance().enterLoop(4);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QVERIFY(helper.reply2);
- QVERIFY(!helper.reply2->error());
-
- QCOMPARE(server.totalConnections, 1);
-}
-
-class HttpRecursiveCreationHelper : public QObject {
- Q_OBJECT
-public:
-
- HttpRecursiveCreationHelper():
- QObject(0),
- requestsStartedCount_finished(0),
- requestsStartedCount_readyRead(0),
- requestsFinishedCount(0)
- {
- }
- QNetworkAccessManager manager;
- int requestsStartedCount_finished;
- int requestsStartedCount_readyRead;
- int requestsFinishedCount;
-public slots:
- void finishedSlot() {
- requestsFinishedCount++;
-
- QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
- QVERIFY(!reply->error());
- QVERIFY(reply->bytesAvailable() == 27906);
-
- if (requestsFinishedCount == 60) {
- QTestEventLoop::instance().exitLoop();
- return;
- }
-
- if (requestsStartedCount_finished < 30) {
- startOne();
- requestsStartedCount_finished++;
- }
-
- reply->deleteLater();
- }
- void readyReadSlot() {
- QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
- QVERIFY(!reply->error());
-
- if (requestsStartedCount_readyRead < 30 && reply->bytesAvailable() > 27906/2) {
- startOne();
- requestsStartedCount_readyRead++;
- }
- }
- void startOne() {
- QUrl url = "http://" + QtNetworkSettings::serverName() + "/qtest/fluke.gif";
- QNetworkRequest request(url);
- QNetworkReply *reply = manager.get(request);
- reply->setParent(this);
- connect(reply, SIGNAL(finished()), this, SLOT(finishedSlot()));
- connect(reply, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
- }
-};
-
-void tst_QNetworkReply::httpRecursiveCreation()
-{
- // this test checks if creation of new requests to the same host properly works
- // from readyRead() and finished() signals
- HttpRecursiveCreationHelper helper;
- helper.startOne();
- QTestEventLoop::instance().enterLoop(30);
- QVERIFY(!QTestEventLoop::instance().timeout());
-}
-
-#ifndef QT_NO_OPENSSL
-void tst_QNetworkReply::ignoreSslErrorsList_data()
-{
- QTest::addColumn<QString>("url");
- QTest::addColumn<QList<QSslError> >("expectedSslErrors");
- QTest::addColumn<QNetworkReply::NetworkError>("expectedNetworkError");
-
- QList<QSslError> expectedSslErrors;
- // apparently, because of some weird behaviour of SRCDIR, the file name below needs to start with a slash
- QList<QSslCertificate> certs = QSslCertificate::fromPath(QLatin1String(SRCDIR "/certs/qt-test-server-cacert.pem"));
- QSslError rightError(QSslError::SelfSignedCertificate, certs.at(0));
- QSslError wrongError(QSslError::SelfSignedCertificate);
-
- QTest::newRow("SSL-failure-empty-list") << "https://" + QtNetworkSettings::serverName() + "/index.html" << expectedSslErrors << QNetworkReply::SslHandshakeFailedError;
- expectedSslErrors.append(wrongError);
- QTest::newRow("SSL-failure-wrong-error") << "https://" + QtNetworkSettings::serverName() + "/index.html" << expectedSslErrors << QNetworkReply::SslHandshakeFailedError;
- expectedSslErrors.append(rightError);
- QTest::newRow("allErrorsInExpectedList1") << "https://" + QtNetworkSettings::serverName() + "/index.html" << expectedSslErrors << QNetworkReply::NoError;
- expectedSslErrors.removeAll(wrongError);
- QTest::newRow("allErrorsInExpectedList2") << "https://" + QtNetworkSettings::serverName() + "/index.html" << expectedSslErrors << QNetworkReply::NoError;
- expectedSslErrors.removeAll(rightError);
- QTest::newRow("SSL-failure-empty-list-again") << "https://" + QtNetworkSettings::serverName() + "/index.html" << expectedSslErrors << QNetworkReply::SslHandshakeFailedError;
-}
-
-void tst_QNetworkReply::ignoreSslErrorsList()
-{
- QFETCH(QString, url);
- QNetworkRequest request(url);
- QNetworkReplyPtr reply = manager.get(request);
-
- QFETCH(QList<QSslError>, expectedSslErrors);
- reply->ignoreSslErrors(expectedSslErrors);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QFETCH(QNetworkReply::NetworkError, expectedNetworkError);
- QCOMPARE(reply->error(), expectedNetworkError);
-}
-
-void tst_QNetworkReply::ignoreSslErrorsListWithSlot_data()
-{
- ignoreSslErrorsList_data();
-}
-
-// this is not a test, just a slot called in the test below
-void tst_QNetworkReply::ignoreSslErrorListSlot(QNetworkReply *reply, const QList<QSslError> &)
-{
- reply->ignoreSslErrors(storedExpectedSslErrors);
-}
-
-// do the same as in ignoreSslErrorsList, but ignore the errors in the slot
-void tst_QNetworkReply::ignoreSslErrorsListWithSlot()
-{
- QFETCH(QString, url);
- QNetworkRequest request(url);
- QNetworkReplyPtr reply = manager.get(request);
-
- QFETCH(QList<QSslError>, expectedSslErrors);
- // store the errors to ignore them later in the slot connected below
- storedExpectedSslErrors = expectedSslErrors;
- connect(&manager, SIGNAL(sslErrors(QNetworkReply *, const QList<QSslError> &)),
- this, SLOT(ignoreSslErrorListSlot(QNetworkReply *, const QList<QSslError> &)));
-
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QFETCH(QNetworkReply::NetworkError, expectedNetworkError);
- QCOMPARE(reply->error(), expectedNetworkError);
-}
-
-void tst_QNetworkReply::sslConfiguration_data()
-{
- QTest::addColumn<QSslConfiguration>("configuration");
- QTest::addColumn<bool>("works");
-
- QTest::newRow("empty") << QSslConfiguration() << false;
- QSslConfiguration conf = QSslConfiguration::defaultConfiguration();
- QTest::newRow("default") << conf << false; // does not contain test server cert
- QList<QSslCertificate> testServerCert = QSslCertificate::fromPath(SRCDIR "/certs/qt-test-server-cacert.pem");
- conf.setCaCertificates(testServerCert);
- QTest::newRow("set-root-cert") << conf << true;
- conf.setProtocol(QSsl::SecureProtocols);
- QTest::newRow("secure") << conf << true;
-}
-
-void tst_QNetworkReply::sslConfiguration()
-{
- QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + "/index.html"));
- QFETCH(QSslConfiguration, configuration);
- request.setSslConfiguration(configuration);
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QFETCH(bool, works);
- QNetworkReply::NetworkError expectedError = works ? QNetworkReply::NoError : QNetworkReply::SslHandshakeFailedError;
- QCOMPARE(reply->error(), expectedError);
-}
-
-#endif // QT_NO_OPENSSL
-
-void tst_QNetworkReply::getAndThenDeleteObject_data()
-{
- QTest::addColumn<bool>("replyFirst");
-
- QTest::newRow("delete-reply-first") << true;
- QTest::newRow("delete-qnam-first") << false;
-}
-
-void tst_QNetworkReply::getAndThenDeleteObject()
-{
- // yes, this will leak if the testcase fails. I don't care. It must not fail then :P
- QNetworkAccessManager *manager = new QNetworkAccessManager();
- QNetworkRequest request("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile");
- QNetworkReply *reply = manager->get(request);
- reply->setReadBufferSize(1);
- reply->setParent((QObject*)0); // must be 0 because else it is the manager
-
- QTime stopWatch;
- stopWatch.start();
- forever {
- QCoreApplication::instance()->processEvents();
- if (reply->bytesAvailable())
- break;
- if (stopWatch.elapsed() >= 30000)
- break;
- }
-
- QVERIFY(reply->bytesAvailable());
- QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
- QVERIFY(!reply->isFinished()); // must not be finished
-
- QFETCH(bool, replyFirst);
-
- if (replyFirst) {
- delete reply;
- delete manager;
- } else {
- delete manager;
- delete reply;
- }
-}
-
-// see https://bugs.webkit.org/show_bug.cgi?id=38935
-void tst_QNetworkReply::symbianOpenCDataUrlCrash()
-{
- QString requestUrl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAAAB3RJTUUH2AUSEgolrgBvVQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAARnQU1BAACxjwv8YQUAAAHlSURBVHja5VbNShxBEK6ZaXtnHTebQPA1gngNmfaeq+QNPIlIXkC9iQdJxJNvEHLN3VkxhxxE8gTmEhAVddXZ6Z3f9Ndriz89/sHmkBQUVVT1fB9d9c3uOERUKTunIdn3HzstxGpYBDS4wZk7TAJj/wlJ90J+jnuygqs8svSj+/rGHBos3rE18XBvfU3no7NzlJfUaY/5whAwl8Lr/WDUv4ODxTMb+P5xLExe5LmO559WqTX/MQR4WZYEAtSePS4pE0qSnuhnRUcBU5Gm2k9XljU4Z26I3NRxBrd80rj2fh+KNE0FY4xevRgTjREvPFpasAK8Xli6MUbbuKw3afAGgSBXozo5u4hkmncAlkl5wx8iMGbdyQjnCFEiEwGiosj1UQA/x2rVddiVoi+l4IxE0PTDnx+mrQBvvnx9cFz3krhVvuhzFn579/aq/n5rW8fbtTqiWhIQZEo17YBvbkxOXNVndnYpTvod7AtiuN2re0+siwcB9oH8VxxrNwQQAhzyRs30n7wTI2HIN2g2QtQwjjhJIQatOq7E8bIVCLwzpl83Lvtvl+NohWWlE8UZTWEMAGCcR77fHKhPnZF5tYie6dfdxCphACmLPM+j8bYfmTryg64kV9Vh3mV8jP0b/4wO/YUPiT/8i0MLf55lSQAAAABJRU5ErkJggg==");
- QUrl url = QUrl::fromEncoded(requestUrl.toLatin1());
- QNetworkRequest req(url);
- QNetworkReplyPtr reply;
-
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, req, reply));
-
- QCOMPARE(reply->url(), url);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(598));
-}
-
-void tst_QNetworkReply::getFromHttpIntoBuffer_data()
-{
- QTest::addColumn<QUrl>("url");
-
- QTest::newRow("rfc-internal") << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
-}
-
-// Please note that the whole "zero copy" download buffer API is private right now. Do not use it.
-void tst_QNetworkReply::getFromHttpIntoBuffer()
-{
- QFETCH(QUrl, url);
- QNetworkRequest request(url);
- request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 1024*128); // 128 kB
-
- QNetworkAccessManager manager;
- QNetworkReply *reply = manager.get(request);
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(reply->isFinished());
-
- QFile reference(SRCDIR "/rfc3252.txt");
- QVERIFY(reference.open(QIODevice::ReadOnly));
-
- QCOMPARE(reference.bytesAvailable(), reply->bytesAvailable());
- QCOMPARE(reference.size(), reply->size());
-
- // Compare the memory buffer
- QVariant downloadBufferAttribute = reply->attribute(QNetworkRequest::DownloadBufferAttribute);
- QVERIFY(downloadBufferAttribute.isValid());
- QSharedPointer<char> sharedPointer = downloadBufferAttribute.value<QSharedPointer<char> >();
- bool memoryComparison =
- (0 == memcmp(static_cast<void*>(reference.readAll().data()),
- sharedPointer.data(), reference.size()));
- QVERIFY(memoryComparison);
-
- // Make sure the normal reading works
- reference.seek(0);
- QCOMPARE(reply->read(42), reference.read(42));
- QCOMPARE(reply->getChar(0), reference.getChar(0));
- QCOMPARE(reply->peek(23), reference.peek(23));
- QCOMPARE(reply->readLine(), reference.readLine());
- QCOMPARE(reference.bytesAvailable(), reply->bytesAvailable());
- QCOMPARE(reply->readAll(), reference.readAll());
- QVERIFY(reply->atEnd());
-}
-
-// FIXME we really need to consolidate all those server implementations
-class GetFromHttpIntoBuffer2Server : QObject {
- Q_OBJECT
- qint64 dataSize;
- qint64 dataSent;
- QTcpServer server;
- QTcpSocket *client;
- bool serverSendsContentLength;
- bool chunkedEncoding;
-
-public:
- GetFromHttpIntoBuffer2Server (qint64 ds, bool sscl, bool ce) : dataSize(ds), dataSent(0),
- client(0), serverSendsContentLength(sscl), chunkedEncoding(ce) {
- server.listen();
- connect(&server, SIGNAL(newConnection()), this, SLOT(newConnectionSlot()));
- }
-
- int serverPort() {
- return server.serverPort();
- }
-
-public slots:
-
- void newConnectionSlot() {
- client = server.nextPendingConnection();
- client->setParent(this);
- connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
- connect(client, SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWrittenSlot(qint64)));
- }
-
- void readyReadSlot() {
- client->readAll();
- client->write("HTTP/1.0 200 OK\n");
- if (serverSendsContentLength)
- client->write(QString("Content-Length: " + QString::number(dataSize) + "\n").toAscii());
- if (chunkedEncoding)
- client->write(QString("Transfer-Encoding: chunked\n").toAscii());
- client->write("Connection: close\n\n");
- }
-
- void bytesWrittenSlot(qint64 amount) {
- Q_UNUSED(amount);
- if (dataSent == dataSize && client) {
- // close eventually
-
- // chunked encoding: we have to send a last "empty" chunk
- if (chunkedEncoding)
- client->write(QString("0\r\n\r\n").toAscii());
-
- client->disconnectFromHost();
- server.close();
- client = 0;
- return;
- }
-
- // send data
- if (client && client->bytesToWrite() < 100*1024 && dataSent < dataSize) {
- qint64 amount = qMin(qint64(16*1024), dataSize - dataSent);
- QByteArray data(amount, '@');
-
- if (chunkedEncoding) {
- client->write(QString(QString("%1").arg(amount,0,16).toUpper() + "\r\n").toAscii());
- client->write(data.constData(), amount);
- client->write(QString("\r\n").toAscii());
- } else {
- client->write(data.constData(), amount);
- }
-
- dataSent += amount;
- }
- }
-};
-
-class GetFromHttpIntoBuffer2Client : QObject {
- Q_OBJECT
-private:
- bool useDownloadBuffer;
- QNetworkReply *reply;
- qint64 uploadSize;
- QList<qint64> bytesAvailableList;
-public:
- GetFromHttpIntoBuffer2Client (QNetworkReply *reply, bool useDownloadBuffer, qint64 uploadSize)
- : useDownloadBuffer(useDownloadBuffer), reply(reply), uploadSize(uploadSize)
- {
- connect(reply, SIGNAL(metaDataChanged()), this, SLOT(metaDataChangedSlot()));
- connect(reply, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
- connect(reply, SIGNAL(finished()), this, SLOT(finishedSlot()));
- }
-
- public slots:
- void metaDataChangedSlot() {
- if (useDownloadBuffer) {
- QSharedPointer<char> sharedPointer = qvariant_cast<QSharedPointer<char> >(reply->attribute(QNetworkRequest::DownloadBufferAttribute));
- QVERIFY(!sharedPointer.isNull()); // It will be 0 if it failed
- }
-
- // metaDataChanged needs to come before everything else
- QVERIFY(bytesAvailableList.isEmpty());
- }
-
- void readyReadSlot() {
- QVERIFY(!reply->isFinished());
-
- qint64 bytesAvailable = reply->bytesAvailable();
-
- // bytesAvailable must never be 0
- QVERIFY(bytesAvailable != 0);
-
- if (bytesAvailableList.length() < 5) {
- // We assume that the first few times the bytes available must be less than the complete size, e.g.
- // the bytesAvailable() function works correctly in case of a downloadBuffer.
- QVERIFY(bytesAvailable < uploadSize);
- }
- if (!bytesAvailableList.isEmpty()) {
- // Also check that the same bytesAvailable is not coming twice in a row
- QVERIFY(bytesAvailableList.last() != bytesAvailable);
- }
-
- bytesAvailableList.append(bytesAvailable);
- // Add bytesAvailable to a list an parse
- }
-
- void finishedSlot() {
- // We should have already received all readyRead
- QVERIFY(!bytesAvailableList.isEmpty());
- QVERIFY(bytesAvailableList.last() == uploadSize);
- }
-};
-
-void tst_QNetworkReply::getFromHttpIntoBuffer2_data()
-{
- QTest::addColumn<bool>("useDownloadBuffer");
-
- QTest::newRow("use-download-buffer") << true;
- QTest::newRow("do-not-use-download-buffer") << false;
-}
-
-// This test checks mostly that signal emissions are in correct order
-// Please note that the whole "zero copy" download buffer API is private right now. Do not use it.
-void tst_QNetworkReply::getFromHttpIntoBuffer2()
-{
- QFETCH(bool, useDownloadBuffer);
-
- // On my Linux Desktop the results are already visible with 128 kB, however we use this to have good results.
-#if defined(Q_OS_SYMBIAN) || defined(Q_WS_WINCE_WM)
- // Show some mercy to non-desktop platform/s
- enum {UploadSize = 4*1024*1024}; // 4 MB
-#else
- enum {UploadSize = 32*1024*1024}; // 32 MB
-#endif
-
- GetFromHttpIntoBuffer2Server server(UploadSize, true, false);
-
- QNetworkRequest request(QUrl("http://127.0.0.1:" + QString::number(server.serverPort()) + "/?bare=1"));
- if (useDownloadBuffer)
- request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 1024*1024*128); // 128 MB is max allowed
-
- QNetworkAccessManager manager;
- QNetworkReplyPtr reply = manager.get(request);
-
- GetFromHttpIntoBuffer2Client client(reply, useDownloadBuffer, UploadSize);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
- QTestEventLoop::instance().enterLoop(40);
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QVERIFY(!QTestEventLoop::instance().timeout());
-}
-
-
-void tst_QNetworkReply::getFromHttpIntoBufferCanReadLine()
-{
- QString header("HTTP/1.0 200 OK\r\nContent-Length: 7\r\n\r\nxxx\nxxx");
-
- MiniHttpServer server(header.toAscii());
- server.doClose = true;
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 1024*1024*128); // 128 MB is max allowed
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QVERIFY(reply->canReadLine());
- QCOMPARE(reply->read(1), QByteArray("x"));
- QVERIFY(reply->canReadLine());
- QCOMPARE(reply->read(3), QByteArray("xx\n"));
- QVERIFY(!reply->canReadLine());
- QCOMPARE(reply->readAll(), QByteArray("xxx"));
- QVERIFY(!reply->canReadLine());
-}
-
-
-
-// Is handled somewhere else too, introduced this special test to have it more accessible
-void tst_QNetworkReply::ioGetFromHttpWithoutContentLength()
-{
- QByteArray dataToSend("HTTP/1.0 200 OK\r\n\r\nHALLO! 123!");
- MiniHttpServer server(dataToSend);
- server.doClose = true;
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->url(), request.url());
- QVERIFY(reply->isFinished());
- QVERIFY(reply->error() == QNetworkReply::NoError);
-}
-
-// Is handled somewhere else too, introduced this special test to have it more accessible
-void tst_QNetworkReply::ioGetFromHttpBrokenChunkedEncoding()
-{
- // This is wrong chunked encoding because of the X. What actually has to follow is \r\n
- // and then the declaration of the final 0 chunk
- QByteArray dataToSend("HTTP/1.0 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n3\r\nABCX");
- MiniHttpServer server(dataToSend);
- server.doClose = false; // FIXME
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
-
- QEXPECT_FAIL(0, "We should close the socket and not just do nothing", Continue);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QEXPECT_FAIL(0, "We should close the socket and not just do nothing", Continue);
- QVERIFY(reply->isFinished());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
-}
-
-// TODO:
-// Prepare a gzip that has one chunk that expands to the size mentioned in the bugreport.
-// Then have a custom HTTP server that waits after this chunk so the returning gets
-// triggered.
-void tst_QNetworkReply::qtbug12908compressedHttpReply()
-{
- QString header("HTTP/1.0 200 OK\r\nContent-Encoding: gzip\r\nContent-Length: 63\r\n\r\n");
-
- // dd if=/dev/zero of=qtbug-12908 bs=16384 count=1 && gzip qtbug-12908 && base64 -w 0 qtbug-12908.gz
- QString encodedFile("H4sICDdDaUwAA3F0YnVnLTEyOTA4AO3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAIC3AYbSVKsAQAAA");
- QByteArray decodedFile = QByteArray::fromBase64(encodedFile.toAscii());
- QCOMPARE(decodedFile.size(), 63);
-
- MiniHttpServer server(header.toAscii() + decodedFile);
- server.doClose = true;
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->size(), qint64(16384));
- QCOMPARE(reply->readAll(), QByteArray(16384, '\0'));
-}
-
-void tst_QNetworkReply::compressedHttpReplyBrokenGzip()
-{
- QString header("HTTP/1.0 200 OK\r\nContent-Encoding: gzip\r\nContent-Length: 63\r\n\r\n");
-
- // dd if=/dev/zero of=qtbug-12908 bs=16384 count=1 && gzip qtbug-12908 && base64 -w 0 qtbug-12908.gz
- // Then change "BMQ" to "BMX"
- QString encodedFile("H4sICDdDaUwAA3F0YnVnLTEyOTA4AO3BMXEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAIC3AYbSVKsAQAAA");
- QByteArray decodedFile = QByteArray::fromBase64(encodedFile.toAscii());
- QCOMPARE(decodedFile.size(), 63);
-
- MiniHttpServer server(header.toAscii() + decodedFile);
- server.doClose = true;
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(reply->error(), QNetworkReply::ProtocolFailure);
-}
-
-// TODO add similar test for FTP
-void tst_QNetworkReply::getFromUnreachableIp()
-{
- QNetworkAccessManager manager;
-
- QNetworkRequest request(QUrl("http://255.255.255.255/42/23/narf/narf/narf"));
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QVERIFY(reply->error() != QNetworkReply::NoError);
-}
-
-void tst_QNetworkReply::qtbug4121unknownAuthentication()
-{
- MiniHttpServer server(QByteArray("HTTP/1.1 401 bla\r\nWWW-Authenticate: crap\r\nContent-Length: 0\r\n\r\n"));
- server.doClose = false;
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- QNetworkAccessManager manager;
- QNetworkReplyPtr reply = manager.get(request);
-
- qRegisterMetaType<QNetworkReply*>("QNetworkReply*");
- qRegisterMetaType<QAuthenticator*>("QAuthenticator*");
- QSignalSpy authSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*)));
- qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
- QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(authSpy.count(), 0);
- QCOMPARE(finishedSpy.count(), 1);
- QCOMPARE(errorSpy.count(), 1);
-
- QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError);
-}
-
-class QtBug13431Helper : public QObject {
- Q_OBJECT
-public:
- QNetworkReply* m_reply;
- QTimer m_dlTimer;
-public slots:
- void replyFinished(QNetworkReply*) {
- QTestEventLoop::instance().exitLoop();
- }
-
- void onReadAndReschedule() {
- const qint64 bytesReceived = m_reply->bytesAvailable();
- if (bytesReceived && m_reply->readBufferSize()) {
- QByteArray data = m_reply->read(bytesReceived);
- // reschedule read
- const int millisecDelay = static_cast<int>(bytesReceived * 1000 / m_reply->readBufferSize());
- m_dlTimer.start(millisecDelay);
- }
- else {
- // reschedule read
- m_dlTimer.start(200);
- }
- }
-};
-
-void tst_QNetworkReply::qtbug13431replyThrottling()
-{
- QtBug13431Helper helper;
-
- QNetworkAccessManager nam;
- connect(&nam, SIGNAL(finished(QNetworkReply*)), &helper, SLOT(replyFinished(QNetworkReply*)));
-
- // Download a bigger file
- QNetworkRequest netRequest(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile"));
- helper.m_reply = nam.get(netRequest);
- // Set the throttle
- helper.m_reply->setReadBufferSize(36000);
-
- // Schedule a timer that tries to read
-
- connect(&helper.m_dlTimer, SIGNAL(timeout()), &helper, SLOT(onReadAndReschedule()));
- helper.m_dlTimer.setSingleShot(true);
- helper.m_dlTimer.start(0);
-
- QTestEventLoop::instance().enterLoop(30);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(helper.m_reply->isFinished());
- QCOMPARE(helper.m_reply->error(), QNetworkReply::NoError);
-}
-
-void tst_QNetworkReply::httpWithNoCredentialUsage()
-{
- QNetworkRequest request(QUrl("http://httptest:httptest@" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi"));
- // Do not use credentials
- request.setAttribute(QNetworkRequest::AuthenticationReuseAttribute, QNetworkRequest::Manual);
- QNetworkAccessManager manager;
- QNetworkReplyPtr reply = manager.get(request);
-
- qRegisterMetaType<QNetworkReply*>("QNetworkReply*");
- qRegisterMetaType<QAuthenticator*>("QAuthenticator*");
- QSignalSpy authSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*)));
- qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
- QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- // We check if authenticationRequired was emitted, however we do not anything in it so it should be 401
- QCOMPARE(authSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 1);
- QCOMPARE(errorSpy.count(), 1);
-
- QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError);
-}
-
-void tst_QNetworkReply::qtbug15311doubleContentLength()
-{
- QByteArray response("HTTP/1.0 200 OK\r\nContent-Length: 3\r\nServer: bogus\r\nContent-Length: 3\r\n\r\nABC");
- MiniHttpServer server(response);
- server.doClose = true;
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(reply->isFinished());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->size(), qint64(3));
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(3));
- QCOMPARE(reply->rawHeader("Content-length"), QByteArray("3, 3"));
- QCOMPARE(reply->readAll(), QByteArray("ABC"));
-}
-
-void tst_QNetworkReply::qtbug18232gzipContentLengthZero()
-{
- QByteArray response("HTTP/1.0 200 OK\r\nContent-Encoding: gzip\r\nContent-Length: 0\r\n\r\n");
- MiniHttpServer server(response);
- server.doClose = true;
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(reply->isFinished());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QCOMPARE(reply->size(), qint64(0));
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(0));
- QCOMPARE(reply->readAll(), QByteArray());
-}
-
-void tst_QNetworkReply::synchronousRequest_data()
-{
- QTest::addColumn<QUrl>("url");
- QTest::addColumn<QString>("expected");
- QTest::addColumn<bool>("checkContentLength");
- QTest::addColumn<QString>("mimeType");
-
- // ### cache, auth, proxies
-
- QTest::newRow("http")
- << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")
- << QString("file:" SRCDIR "/rfc3252.txt")
- << true
- << QString("text/plain");
-
- QTest::newRow("http-gzip")
- << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/deflate/rfc3252.txt")
- << QString("file:" SRCDIR "/rfc3252.txt")
- << false // don't check content length, because it's gzip encoded
- // ### we would need to enflate (un-deflate) the file content and compare the sizes
- << QString("text/plain");
-
-#ifndef QT_NO_OPENSSL
- QTest::newRow("https")
- << QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")
- << QString("file:" SRCDIR "/rfc3252.txt")
- << true
- << QString("text/plain");
-#endif
-
- QTest::newRow("data")
- << QUrl(QString::fromLatin1("data:text/plain,hello world"))
- << QString("data:hello world")
- << true // check content length
- << QString("text/plain");
-
- QTest::newRow("simple-file")
- << QUrl::fromLocalFile(SRCDIR "/rfc3252.txt")
- << QString("file:" SRCDIR "/rfc3252.txt")
- << true
- << QString();
-}
-
-// FIXME add testcase for failing network etc
-void tst_QNetworkReply::synchronousRequest()
-{
- QFETCH(QUrl, url);
- QFETCH(QString, expected);
- QFETCH(bool, checkContentLength);
- QFETCH(QString, mimeType);
-
- QNetworkRequest request(url);
-
-#ifndef QT_NO_OPENSSL
- // workaround for HTTPS requests: add self-signed server cert to list of CA certs,
- // since we cannot react to the sslErrors() signal
- // to fix this properly we would need to have an ignoreSslErrors() method in the
- // QNetworkRequest, see http://bugreports.qt.nokia.com/browse/QTBUG-14774
- if (url.scheme() == "https") {
- QSslConfiguration sslConf;
- QList<QSslCertificate> certs = QSslCertificate::fromPath(SRCDIR "/certs/qt-test-server-cacert.pem");
- sslConf.setCaCertificates(certs);
- request.setSslConfiguration(sslConf);
- }
-#endif
-
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
-
- QNetworkReplyPtr reply;
- QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*)));
- QSignalSpy sslErrorsSpy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)));
- RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply, 0));
- QVERIFY(reply->isFinished());
- QCOMPARE(finishedSpy.count(), 0);
- QCOMPARE(sslErrorsSpy.count(), 0);
-
- QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader).toString(), mimeType);
-
- QByteArray expectedContent;
-
- if (expected.startsWith("file:")) {
- QString path = expected.mid(5);
- QFile file(path);
- file.open(QIODevice::ReadOnly);
- expectedContent = file.readAll();
- } else if (expected.startsWith("data:")) {
- expectedContent = expected.mid(5).toUtf8();
- }
-
- if (checkContentLength)
- QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(expectedContent.size()));
- QCOMPARE(reply->readAll(), expectedContent);
-
- reply->deleteLater();
-}
-
-#ifndef QT_NO_OPENSSL
-void tst_QNetworkReply::synchronousRequestSslFailure()
-{
- // test that SSL won't be accepted with self-signed certificate,
- // and that we do not emit the sslError signal (in the manager that is,
- // in the reply we don't care)
-
- QUrl url("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
- QNetworkRequest request(url);
- request.setAttribute(
- QNetworkRequest::SynchronousRequestAttribute,
- true);
- QNetworkReplyPtr reply;
- QSignalSpy sslErrorsSpy(&manager, SIGNAL(sslErrors(QNetworkReply *, const QList<QSslError> &)));
- runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply, 0);
- QVERIFY(reply->isFinished());
- QCOMPARE(reply->error(), QNetworkReply::SslHandshakeFailedError);
- QCOMPARE(sslErrorsSpy.count(), 0);
-}
-#endif
-
-class HttpAbortHelper : public QObject
-{
- Q_OBJECT
-public:
- HttpAbortHelper(QNetworkReply *parent)
- : QObject(parent)
- {
- mReply = parent;
- connect(parent, SIGNAL(readyRead()), this, SLOT(readyRead()));
- }
-
- ~HttpAbortHelper()
- {
- }
-
-public slots:
- void readyRead()
- {
- mReply->abort();
- QMetaObject::invokeMethod(&QTestEventLoop::instance(), "exitLoop", Qt::QueuedConnection);
- }
-
-private:
- QNetworkReply *mReply;
-};
-
-void tst_QNetworkReply::httpAbort()
-{
- // FIXME Also implement one where we do a big upload and then abort().
- // It must not crash either.
-
- // Abort after the first readyRead()
- QNetworkRequest request("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile");
- QNetworkReplyPtr reply;
- reply = manager.get(request);
- HttpAbortHelper replyHolder(reply);
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QCOMPARE(reply->error(), QNetworkReply::OperationCanceledError);
- QVERIFY(reply->isFinished());
-
- // Abort immediately after the get()
- QNetworkReplyPtr reply2 = manager.get(request);
- connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- reply2->abort();
- QCOMPARE(reply2->error(), QNetworkReply::OperationCanceledError);
- QVERIFY(reply2->isFinished());
-
- // Abort after the finished()
- QNetworkRequest request3("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
- QNetworkReplyPtr reply3 = manager.get(request3);
- connect(reply3, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(reply3->isFinished());
- reply3->abort();
- QCOMPARE(reply3->error(), QNetworkReply::NoError);
-}
-
-void tst_QNetworkReply::dontInsertPartialContentIntoTheCache()
-{
- QByteArray reply206 =
- "HTTP/1.0 206\r\n"
- "Connection: keep-alive\r\n"
- "Content-Type: text/plain\r\n"
- "Cache-control: no-cache\r\n"
- "Content-Range: bytes 2-6/8\r\n"
- "Content-length: 4\r\n"
- "\r\n"
- "load";
-
- MiniHttpServer server(reply206);
- server.doClose = false;
-
- MySpyMemoryCache *memoryCache = new MySpyMemoryCache(&manager);
- manager.setCache(memoryCache);
-
- QUrl url = "http://localhost:" + QString::number(server.serverPort());
- QNetworkRequest request(url);
- request.setRawHeader("Range", "bytes=2-6");
-
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QVERIFY(server.totalConnections > 0);
- QCOMPARE(reply->readAll().constData(), "load");
- QCOMPARE(memoryCache->m_insertedUrls.count(), 0);
-}
-
-void tst_QNetworkReply::httpUserAgent()
-{
- QByteArray response("HTTP/1.0 200 OK\r\n\r\n");
- MiniHttpServer server(response);
- server.doClose = true;
-
- QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
- request.setHeader(QNetworkRequest::UserAgentHeader, "abcDEFghi");
- QNetworkReplyPtr reply = manager.get(request);
-
- connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(reply->isFinished());
- QCOMPARE(reply->error(), QNetworkReply::NoError);
- QVERIFY(server.receivedData.contains("\r\nUser-Agent: abcDEFghi\r\n"));
-}
-
-
-// NOTE: This test must be last testcase in tst_qnetworkreply!
-void tst_QNetworkReply::parentingRepliesToTheApp()
-{
- QNetworkRequest request (QUrl("http://" + QtNetworkSettings::serverName()));
- manager.get(request)->setParent(this); // parent to this object
- manager.get(request)->setParent(qApp); // parent to the app
-}
-
-QTEST_MAIN(tst_QNetworkReply)
-
-#include "tst_qnetworkreply.moc"
diff --git a/tests/auto/qnetworksession/test/test.pro b/tests/auto/qnetworksession/test/test.pro
deleted file mode 100644
index bfffe907ec..0000000000
--- a/tests/auto/qnetworksession/test/test.pro
+++ /dev/null
@@ -1,26 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qnetworksession.cpp
-HEADERS += ../../qbearertestcommon.h
-
-QT = core network
-
-TARGET = tst_qnetworksession
-CONFIG(debug_and_release) {
- CONFIG(debug, debug|release) {
- DESTDIR = ../debug
- } else {
- DESTDIR = ../release
- }
-} else {
- DESTDIR = ..
-}
-
-symbian {
- TARGET.CAPABILITY = NetworkServices NetworkControl ReadUserData PowerMgmt
-}
-
-maemo6|maemo5 {
- CONFIG += link_pkgconfig
-
- PKGCONFIG += conninet
-}
diff --git a/tests/auto/qobject/tst_qobject.cpp b/tests/auto/qobject/tst_qobject.cpp
deleted file mode 100644
index 3cd4376d80..0000000000
--- a/tests/auto/qobject/tst_qobject.cpp
+++ /dev/null
@@ -1,4063 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qcoreapplication.h>
-
-#include <qpointer.h>
-#include <qtimer.h>
-#include <qregexp.h>
-#include <qmetaobject.h>
-#include <qvariant.h>
-
-#include <QTcpServer>
-#include <QTcpSocket>
-#include <QThread>
-#include <QMutex>
-#include <QWaitCondition>
-#include <QProcess>
-
-#include "qobject.h"
-#ifdef QT_BUILD_INTERNAL
-#include <private/qobject_p.h>
-#endif
-
-
-#include <math.h>
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QObject : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QObject();
- virtual ~tst_QObject();
-
-
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-private slots:
- void disconnect();
- void connectByName();
- void connectSignalsToSignalsWithDefaultArguments();
- void receivers();
- void normalize();
- void qobject_castTemplate();
- void findChildren();
- void connectDisconnectNotify_data();
- void connectDisconnectNotify();
- void emitInDefinedOrder();
- void customTypes();
- void streamCustomTypes();
- void metamethod();
- void namespaces();
- void threadSignalEmissionCrash();
- void thread();
- void thread0();
- void moveToThread();
- void sender();
- void declareInterface();
- void qpointerResetBeforeDestroyedSignal();
- void testUserData();
- void childDeletesItsSibling();
- void dynamicProperties();
- void floatProperty();
- void qrealProperty();
- void property();
- void recursiveSignalEmission();
- void blockingQueuedConnection();
- void compatibilityChildInsertedEvents();
- void installEventFilter();
- void deleteSelfInSlot();
- void disconnectSelfInSlotAndDeleteAfterEmit();
- void dumpObjectInfo();
- void connectToSender();
- void qobjectConstCast();
- void uniqConnection();
- void interfaceIid();
- void deleteQObjectWhenDeletingEvent();
- void overloads();
- void isSignalConnected();
- void qMetaObjectConnect();
- void qMetaObjectDisconnectOne();
- void sameName();
- void connectByMetaMethods();
- void connectByMetaMethodSlotInsteadOfSignal();
- void connectConstructorByMetaMethod();
- void disconnectByMetaMethod();
- void disconnectNotSignalMetaMethod();
- void autoConnectionBehavior();
- void baseDestroyed();
-protected:
-};
-
-tst_QObject::tst_QObject()
-{
-
-}
-
-tst_QObject::~tst_QObject()
-{
-
-}
-
-void tst_QObject::initTestCase()
-{
-}
-
-void tst_QObject::cleanupTestCase()
-{
-}
-
-void tst_QObject::init()
-{
-}
-
-void tst_QObject::cleanup()
-{
-}
-
-class SenderObject : public QObject
-{
- Q_OBJECT
-
-public:
- SenderObject() : aPublicSlotCalled(0), recursionCount(0) {}
-
- void emitSignal1AfterRecursion()
- {
- if (recursionCount++ < 100)
- emitSignal1AfterRecursion();
- else
- emitSignal1();
- }
-
- void emitSignal1() { emit signal1(); }
- void emitSignal2() { emit signal2(); }
- void emitSignal3() { emit signal3(); }
- void emitSignal4() { emit signal4(); }
-
-signals:
- void signal1();
- void signal2();
- void signal3();
- void signal4();
- QT_MOC_COMPAT void signal5();
-
-public slots:
- void aPublicSlot() { aPublicSlotCalled++; }
-
-public:
- Q_INVOKABLE void invoke1(){}
- Q_SCRIPTABLE void sinvoke1(){}
- int aPublicSlotCalled;
-protected:
- Q_INVOKABLE QT_MOC_COMPAT void invoke2(){}
- Q_INVOKABLE QT_MOC_COMPAT void invoke2(int){}
- Q_SCRIPTABLE QT_MOC_COMPAT void sinvoke2(){}
-private:
- Q_INVOKABLE void invoke3(int hinz = 0, int kunz = 0){Q_UNUSED(hinz) Q_UNUSED(kunz)}
- Q_SCRIPTABLE void sinvoke3(){}
-
- int recursionCount;
-};
-
-class ReceiverObject : public QObject
-{
- Q_OBJECT
-
-public:
- ReceiverObject() : sequence_slot1( 0 ),
- sequence_slot2( 0 ),
- sequence_slot3( 0 ),
- sequence_slot4( 0 ) {}
-
- void reset() {
- sequence_slot4 = 0;
- sequence_slot3 = 0;
- sequence_slot2 = 0;
- sequence_slot1 = 0;
- count_slot1 = 0;
- count_slot2 = 0;
- count_slot3 = 0;
- count_slot4 = 0;
- }
-
- int sequence_slot1;
- int sequence_slot2;
- int sequence_slot3;
- int sequence_slot4;
- int count_slot1;
- int count_slot2;
- int count_slot3;
- int count_slot4;
-
- bool called(int slot) {
- switch (slot) {
- case 1: return sequence_slot1;
- case 2: return sequence_slot2;
- case 3: return sequence_slot3;
- case 4: return sequence_slot4;
- default: return false;
- }
- }
-
- static int sequence;
-
-public slots:
- void slot1() { sequence_slot1 = ++sequence; count_slot1++; }
- void slot2() { sequence_slot2 = ++sequence; count_slot2++; }
- void slot3() { sequence_slot3 = ++sequence; count_slot3++; }
- void slot4() { sequence_slot4 = ++sequence; count_slot4++; }
-
-};
-
-int ReceiverObject::sequence = 0;
-
-void tst_QObject::disconnect()
-{
- SenderObject *s = new SenderObject;
- ReceiverObject *r1 = new ReceiverObject;
- ReceiverObject *r2 = new ReceiverObject;
-
- connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
-
- connect( s, SIGNAL( signal2() ), r1, SLOT( slot2() ) );
- connect( s, SIGNAL( signal3() ), r1, SLOT( slot3() ) );
- connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) );
-
- s->emitSignal1();
- s->emitSignal2();
- s->emitSignal3();
- s->emitSignal4();
-
- QCOMPARE( r1->called(1), TRUE );
- QCOMPARE( r1->called(2), TRUE );
- QCOMPARE( r1->called(3), TRUE );
- QCOMPARE( r1->called(4), TRUE );
- r1->reset();
-
- // usual disconnect with all parameters given
- bool ret = QObject::disconnect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
-
- s->emitSignal1();
-
- QCOMPARE( r1->called(1), FALSE );
- r1->reset();
-
- QCOMPARE( ret, TRUE );
- ret = QObject::disconnect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
- QCOMPARE( ret, FALSE );
-
- // disconnect all signals from s from all slots from r1
- QObject::disconnect( s, 0, r1, 0 );
-
- s->emitSignal2();
- s->emitSignal3();
- s->emitSignal4();
-
- QCOMPARE( r1->called(2), FALSE );
- QCOMPARE( r1->called(3), FALSE );
- QCOMPARE( r1->called(4), FALSE );
- r1->reset();
-
- connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
- connect( s, SIGNAL( signal1() ), r1, SLOT( slot2() ) );
- connect( s, SIGNAL( signal1() ), r1, SLOT( slot3() ) );
- connect( s, SIGNAL( signal2() ), r1, SLOT( slot4() ) );
-
- // disconnect s's signal1() from all slots of r1
- QObject::disconnect( s, SIGNAL( signal1() ), r1, 0 );
-
- s->emitSignal1();
- s->emitSignal2();
-
- QCOMPARE( r1->called(1), FALSE );
- QCOMPARE( r1->called(2), FALSE );
- QCOMPARE( r1->called(3), FALSE );
- QCOMPARE( r1->called(4), TRUE );
- r1->reset();
- // make sure all is disconnected again
- QObject::disconnect( s, 0, r1, 0 );
-
- connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
- connect( s, SIGNAL( signal1() ), r2, SLOT( slot1() ) );
- connect( s, SIGNAL( signal2() ), r1, SLOT( slot2() ) );
- connect( s, SIGNAL( signal2() ), r2, SLOT( slot2() ) );
- connect( s, SIGNAL( signal3() ), r1, SLOT( slot3() ) );
- connect( s, SIGNAL( signal3() ), r2, SLOT( slot3() ) );
-
- // disconnect signal1() from all receivers
- QObject::disconnect( s, SIGNAL( signal1() ), 0, 0 );
- s->emitSignal1();
- s->emitSignal2();
- s->emitSignal3();
-
- QCOMPARE( r1->called(1), FALSE );
- QCOMPARE( r2->called(1), FALSE );
- QCOMPARE( r1->called(2), TRUE );
- QCOMPARE( r2->called(2), TRUE );
- QCOMPARE( r1->called(2), TRUE );
- QCOMPARE( r2->called(2), TRUE );
-
- r1->reset();
- r2->reset();
-
- // disconnect all signals of s from all receivers
- QObject::disconnect( s, 0, 0, 0 );
-
- QCOMPARE( r1->called(2), FALSE );
- QCOMPARE( r2->called(2), FALSE );
- QCOMPARE( r1->called(2), FALSE );
- QCOMPARE( r2->called(2), FALSE );
-
- delete r2;
- delete r1;
- delete s;
-}
-
-class AutoConnectSender : public QObject
-{
- Q_OBJECT
-
-public:
- AutoConnectSender(QObject *parent)
- : QObject(parent)
- {}
-
- void emitSignalNoParams() { emit signalNoParams(); }
- void emitSignalWithParams(int i) { emit signalWithParams(i); }
- void emitSignalWithParams(int i, QString string) { emit signalWithParams(i, string); }
- void emitSignalManyParams(int i1, int i2, int i3, QString string, bool onoff) { emit signalManyParams(i1, i2, i3, string, onoff); }
- void emitSignalManyParams2(int i1, int i2, int i3, QString string, bool onoff) { emit signalManyParams2(i1, i2, i3, string, onoff); }
- void emitSignalLoopBack() { emit signalLoopBack(); }
-
-signals:
- void signalNoParams();
- void signalWithParams(int i);
- void signalWithParams(int i, QString string);
- void signalManyParams(int i1, int i2, int i3, QString string, bool onoff);
- void signalManyParams(int i1, int i2, int i3, QString string, bool onoff, bool);
- void signalManyParams2(int i1, int i2, int i3, QString string, bool onoff);
- void signalLoopBack();
-};
-
-class AutoConnectReceiver : public QObject
-{
- Q_OBJECT
-
-public:
- AutoConnectReceiver()
- {
- reset();
-
- connect(this, SIGNAL(on_Sender_signalLoopBack()), this, SLOT(slotLoopBack()));
- }
-
- void reset() {
- called_slot10 = 0;
- called_slot9 = 0;
- called_slot8 = 0;
- called_slot7 = 0;
- called_slot6 = 0;
- called_slot5 = 0;
- called_slot4 = 0;
- called_slot3 = 0;
- called_slot2 = 0;
- called_slot1 = 0;
- }
-
- int called_slot1;
- int called_slot2;
- int called_slot3;
- int called_slot4;
- int called_slot5;
- int called_slot6;
- int called_slot7;
- int called_slot8;
- int called_slot9;
- int called_slot10;
-
- bool called(int slot) {
- switch (slot) {
- case 1: return called_slot1;
- case 2: return called_slot2;
- case 3: return called_slot3;
- case 4: return called_slot4;
- case 5: return called_slot5;
- case 6: return called_slot6;
- case 7: return called_slot7;
- case 8: return called_slot8;
- case 9: return called_slot9;
- case 10: return called_slot10;
- default: return false;
- }
- }
-
-public slots:
- void on_Sender_signalNoParams() { ++called_slot1; }
- void on_Sender_signalWithParams(int i = 0) { ++called_slot2; Q_UNUSED(i); }
- void on_Sender_signalWithParams(int i, QString string) { ++called_slot3; Q_UNUSED(i);Q_UNUSED(string); }
- void on_Sender_signalManyParams() { ++called_slot4; }
- void on_Sender_signalManyParams(int i1, int i2, int i3, QString string, bool onoff) { ++called_slot5; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); }
- void on_Sender_signalManyParams(int i1, int i2, int i3, QString string, bool onoff, bool dummy)
- { ++called_slot6; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); Q_UNUSED(dummy);}
- void on_Sender_signalManyParams2(int i1, int i2, int i3, QString string, bool onoff)
- { ++called_slot7; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); }
- void slotLoopBack() { ++called_slot8; }
-
-protected slots:
- void o() { ++called_slot9; }
- void on() { ++called_slot10; }
-
-signals:
- void on_Sender_signalLoopBack();
-};
-
-void tst_QObject::connectByName()
-{
- AutoConnectReceiver receiver;
- AutoConnectSender sender(&receiver);
- sender.setObjectName("Sender");
-
- QMetaObject::connectSlotsByName(&receiver);
-
- sender.emitSignalNoParams();
- QCOMPARE(receiver.called(1), true);
- QCOMPARE(receiver.called(2), false);
- QCOMPARE(receiver.called(3), false);
- QCOMPARE(receiver.called(4), false);
- QCOMPARE(receiver.called(5), false);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), false);
- QCOMPARE(receiver.called(8), false);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
-
- sender.emitSignalWithParams(0);
- QCOMPARE(receiver.called(1), false);
- QCOMPARE(receiver.called(2), true);
- QCOMPARE(receiver.called(3), false);
- QCOMPARE(receiver.called(4), false);
- QCOMPARE(receiver.called(5), false);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), false);
- QCOMPARE(receiver.called(8), false);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
-
- sender.emitSignalWithParams(0, "string");
- QCOMPARE(receiver.called(1), false);
- QCOMPARE(receiver.called(2), false);
- QCOMPARE(receiver.called(3), true);
- QCOMPARE(receiver.called(4), false);
- QCOMPARE(receiver.called(5), false);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), false);
- QCOMPARE(receiver.called(8), false);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
-
- sender.emitSignalManyParams(1, 2, 3, "string", true);
- QCOMPARE(receiver.called(1), false);
- QCOMPARE(receiver.called(2), false);
- QCOMPARE(receiver.called(3), false);
- QCOMPARE(receiver.called(4), true);
- QCOMPARE(receiver.called(5), true);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), false);
- QCOMPARE(receiver.called(8), false);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
-
- sender.emitSignalManyParams2(1, 2, 3, "string", true);
- QCOMPARE(receiver.called(1), false);
- QCOMPARE(receiver.called(2), false);
- QCOMPARE(receiver.called(3), false);
- QCOMPARE(receiver.called(4), false);
- QCOMPARE(receiver.called(5), false);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), true);
- QCOMPARE(receiver.called(8), false);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
-
- sender.emitSignalLoopBack();
- QCOMPARE(receiver.called(1), false);
- QCOMPARE(receiver.called(2), false);
- QCOMPARE(receiver.called(3), false);
- QCOMPARE(receiver.called(4), false);
- QCOMPARE(receiver.called(5), false);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), false);
- QCOMPARE(receiver.called(8), true);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
-}
-
-void tst_QObject::qobject_castTemplate()
-{
- QObject *o = 0;
- QVERIFY( !::qobject_cast<QObject*>(o) );
-
- o = new SenderObject;
- QVERIFY( ::qobject_cast<SenderObject*>(o) );
- QVERIFY( ::qobject_cast<QObject*>(o) );
- QVERIFY( !::qobject_cast<ReceiverObject*>(o) );
- delete o;
-}
-
-void tst_QObject::findChildren()
-{
- QObject o;
- QObject o1(&o);
- QObject o2(&o);
- QObject o11(&o1);
- QObject o12(&o1);
- QObject o111(&o11);
- QObject unnamed(&o);
- QTimer t1(&o);
- QTimer t121(&o12);
- QTimer emptyname(&o);
-
- o.setObjectName("o");
- o1.setObjectName("o1");
- o2.setObjectName("o2");
- o11.setObjectName("o11");
- o12.setObjectName("o12");
- o111.setObjectName("o111");
- t1.setObjectName("t1");
- t121.setObjectName("t121");
- emptyname.setObjectName("");
-
- QObject *op = 0;
-
- op = qFindChild<QObject*>(&o, "o1");
- QCOMPARE(op, &o1);
- op = qFindChild<QObject*>(&o, "o2");
- QCOMPARE(op, &o2);
- op = qFindChild<QObject*>(&o, "o11");
- QCOMPARE(op, &o11);
- op = qFindChild<QObject*>(&o, "o12");
- QCOMPARE(op, &o12);
- op = qFindChild<QObject*>(&o, "o111");
- QCOMPARE(op, &o111);
- op = qFindChild<QObject*>(&o, "t1");
- QCOMPARE(op, static_cast<QObject *>(&t1));
- op = qFindChild<QObject*>(&o, "t121");
- QCOMPARE(op, static_cast<QObject *>(&t121));
- op = qFindChild<QTimer*>(&o, "t1");
- QCOMPARE(op, static_cast<QObject *>(&t1));
- op = qFindChild<QTimer*>(&o, "t121");
- QCOMPARE(op, static_cast<QObject *>(&t121));
- op = qFindChild<QTimer*>(&o, "o12");
- QCOMPARE(op, static_cast<QObject *>(0));
- op = qFindChild<QObject*>(&o, "o");
- QCOMPARE(op, static_cast<QObject *>(0));
- op = qFindChild<QObject*>(&o, "harry");
- QCOMPARE(op, static_cast<QObject *>(0));
- op = qFindChild<QObject*>(&o, "o1");
- QCOMPARE(op, &o1);
-
- QList<QObject*> l;
- QList<QTimer*> tl;
-
- l = qFindChildren<QObject*>(&o, "o1");
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), &o1);
- l = qFindChildren<QObject*>(&o, "o2");
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), &o2);
- l = qFindChildren<QObject*>(&o, "o11");
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), &o11);
- l = qFindChildren<QObject*>(&o, "o12");
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), &o12);
- l = qFindChildren<QObject*>(&o, "o111");
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), &o111);
- l = qFindChildren<QObject*>(&o, "t1");
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), static_cast<QObject *>(&t1));
- l = qFindChildren<QObject*>(&o, "t121");
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), static_cast<QObject *>(&t121));
- tl = qFindChildren<QTimer*>(&o, "t1");
- QCOMPARE(tl.size(), 1);
- QCOMPARE(tl.at(0), &t1);
- tl = qFindChildren<QTimer*>(&o, "t121");
- QCOMPARE(tl.size(), 1);
- QCOMPARE(tl.at(0), &t121);
- l = qFindChildren<QObject*>(&o, "o");
- QCOMPARE(l.size(), 0);
- l = qFindChildren<QObject*>(&o, "harry");
- QCOMPARE(l.size(), 0);
- tl = qFindChildren<QTimer*>(&o, "o12");
- QCOMPARE(tl.size(), 0);
- l = qFindChildren<QObject*>(&o, "o1");
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), &o1);
-
- l = qFindChildren<QObject*>(&o, QRegExp("o.*"));
- QCOMPARE(l.size(), 5);
- QVERIFY(l.contains(&o1));
- QVERIFY(l.contains(&o2));
- QVERIFY(l.contains(&o11));
- QVERIFY(l.contains(&o12));
- QVERIFY(l.contains(&o111));
- l = qFindChildren<QObject*>(&o, QRegExp("t.*"));
- QCOMPARE(l.size(), 2);
- QVERIFY(l.contains(&t1));
- QVERIFY(l.contains(&t121));
- tl = qFindChildren<QTimer*>(&o, QRegExp(".*"));
- QCOMPARE(tl.size(), 3);
- QVERIFY(tl.contains(&t1));
- QVERIFY(tl.contains(&t121));
- tl = qFindChildren<QTimer*>(&o, QRegExp("o.*"));
- QCOMPARE(tl.size(), 0);
- l = qFindChildren<QObject*>(&o, QRegExp("harry"));
- QCOMPARE(l.size(), 0);
-
- // empty and null string check
- op = qFindChild<QObject*>(&o);
- QCOMPARE(op, &o1);
- op = qFindChild<QObject*>(&o, "");
- QCOMPARE(op, &unnamed);
- op = qFindChild<QObject*>(&o, "unnamed");
- QCOMPARE(op, static_cast<QObject *>(0));
-
- l = qFindChildren<QObject*>(&o);
- QCOMPARE(l.size(), 9);
- l = qFindChildren<QObject*>(&o, "");
- QCOMPARE(l.size(), 2);
- l = qFindChildren<QObject*>(&o, "unnamed");
- QCOMPARE(l.size(), 0);
-
- tl = o.findChildren<QTimer *>("t1");
- QCOMPARE(tl.size(), 1);
- QCOMPARE(tl.at(0), &t1);
-
- // Find direct child/children
-
- op = o.findChild<QObject*>("o1", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, &o1);
- op = o.findChild<QObject*>("o2", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, &o2);
- op = o.findChild<QObject*>("o11", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, static_cast<QObject *>(0));
- op = o.findChild<QObject*>("o12", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, static_cast<QObject *>(0));
- op = o.findChild<QObject*>("o111", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, static_cast<QObject *>(0));
- op = o.findChild<QObject*>("t1", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, static_cast<QObject *>(&t1));
- op = o.findChild<QObject*>("t121", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, static_cast<QObject *>(0));
- op = o.findChild<QTimer*>("t1", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, static_cast<QObject *>(&t1));
- op = o.findChild<QTimer*>("t121", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, static_cast<QObject *>(0));
- op = o.findChild<QTimer*>("o12", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, static_cast<QObject *>(0));
- op = o.findChild<QObject*>("o", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, static_cast<QObject *>(0));
- op = o.findChild<QObject*>("harry", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, static_cast<QObject *>(0));
- op = o.findChild<QObject*>("o1", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, &o1);
-
- l = o.findChildren<QObject*>("o1", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), &o1);
- l = o.findChildren<QObject*>("o2", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), &o2);
- l = o.findChildren<QObject*>("o11", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 0);
- l = o.findChildren<QObject*>("o12", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 0);
- l = o.findChildren<QObject*>("o111", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 0);
- l = o.findChildren<QObject*>("t1", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), static_cast<QObject *>(&t1));
- l = o.findChildren<QObject*>("t121", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 0);
- tl = o.findChildren<QTimer*>("t1", Qt::FindDirectChildrenOnly);
- QCOMPARE(tl.size(), 1);
- QCOMPARE(tl.at(0), &t1);
- tl = o.findChildren<QTimer*>("t121", Qt::FindDirectChildrenOnly);
- QCOMPARE(tl.size(), 0);
- l = o.findChildren<QObject*>("o", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 0);
- l = o.findChildren<QObject*>("harry", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 0);
- tl = o.findChildren<QTimer*>("o12", Qt::FindDirectChildrenOnly);
- QCOMPARE(tl.size(), 0);
- l = o.findChildren<QObject*>("o1", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 1);
- QCOMPARE(l.at(0), &o1);
-
- l = o.findChildren<QObject*>(QRegExp("o.*"), Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 2);
- QVERIFY(l.contains(&o1));
- QVERIFY(l.contains(&o2));
- l = o.findChildren<QObject*>(QRegExp("t.*"), Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 1);
- QVERIFY(l.contains(&t1));
- tl = o.findChildren<QTimer*>(QRegExp(".*"), Qt::FindDirectChildrenOnly);
- QCOMPARE(tl.size(), 2);
- QVERIFY(tl.contains(&t1));
- tl = o.findChildren<QTimer*>(QRegExp("o.*"), Qt::FindDirectChildrenOnly);
- QCOMPARE(tl.size(), 0);
- l = o.findChildren<QObject*>(QRegExp("harry"), Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 0);
-
- // empty and null string check
- op = o.findChild<QObject*>(QString(), Qt::FindDirectChildrenOnly);
- QCOMPARE(op, &o1);
- op = o.findChild<QObject*>("", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, &unnamed);
- op = o.findChild<QObject*>("unnamed", Qt::FindDirectChildrenOnly);
- QCOMPARE(op, static_cast<QObject *>(0));
-
- l = o.findChildren<QObject*>(QString(), Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 5);
- l = o.findChildren<QObject*>("", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 2);
- l = o.findChildren<QObject*>("unnamed", Qt::FindDirectChildrenOnly);
- QCOMPARE(l.size(), 0);
-
- tl = o.findChildren<QTimer *>("t1", Qt::FindDirectChildrenOnly);
- QCOMPARE(tl.size(), 1);
- QCOMPARE(tl.at(0), &t1);
-}
-
-
-class NotifyObject : public SenderObject, public ReceiverObject
-{
-public:
- NotifyObject() : SenderObject(), ReceiverObject()
- {}
-
- QString org_signal;
- QString nw_signal;
-
-protected:
- void connectNotify( const char *signal )
- {
- org_signal = signal;
- nw_signal = QMetaObject::normalizedSignature(signal);
- };
- void disconnectNotify( const char *signal )
- {
- org_signal = signal;
- nw_signal = QMetaObject::normalizedSignature(signal);
- };
-};
-
-void tst_QObject::connectDisconnectNotify_data()
-{
- QTest::addColumn<QString>("a_signal");
- QTest::addColumn<QString>("a_slot");
-
- QTest::newRow("combo1") << SIGNAL( signal1() ) << SLOT( slot1() );
- QTest::newRow("combo2") << SIGNAL( signal2(void) ) << SLOT( slot2( ) );
- QTest::newRow("combo3") << SIGNAL( signal3( ) ) << SLOT( slot3(void) );
- QTest::newRow("combo4") << SIGNAL( signal4( void ) )<< SLOT( slot4( void ) );
-}
-
-void tst_QObject::connectDisconnectNotify()
-{
- NotifyObject *s = new NotifyObject;
- NotifyObject *r = new NotifyObject;
-
- QFETCH(QString, a_signal);
- QFETCH(QString, a_slot);
-
- // Test connectNotify
- connect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
- QCOMPARE( s->org_signal, s->nw_signal );
- QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
-
- // Test disconnectNotify
- QObject::disconnect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
- QCOMPARE( s->org_signal, s->nw_signal );
- QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
-
- // Reconnect
- connect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
- // Test disconnectNotify for a complete disconnect
- ((SenderObject*)s)->disconnect((ReceiverObject*)r);
-
- // Obtaining meta methods
- int signalIndx = ((SenderObject*)s)->metaObject()->indexOfSignal(
- QMetaObject::normalizedSignature(a_signal.toLatin1().constData()+1).constData());
- int methodIndx = ((ReceiverObject*)r)->metaObject()->indexOfMethod(
- QMetaObject::normalizedSignature(a_slot.toLatin1().constData()+1).constData());
- QMetaMethod signal = ((SenderObject*)s)->metaObject()->method(signalIndx);
- QMetaMethod method = ((ReceiverObject*)r)->metaObject()->method(methodIndx);
-
- // Test connectNotify when connecting by QMetaMethod
- connect( (SenderObject*)s, signal, (ReceiverObject*)r, method );
- QCOMPARE( s->org_signal, s->nw_signal );
- QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
-
- // Test disconnectNotify when disconnecting by QMetaMethod
- QObject::disconnect( (SenderObject*)s, signal, (ReceiverObject*)r, method );
- QCOMPARE( s->org_signal, s->nw_signal );
- QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
-
- delete s;
- delete r;
-}
-
-class SequenceObject : public ReceiverObject
-{
- Q_OBJECT
-
-public:
- QObject *next;
- SequenceObject() : next(0) { }
-
-public slots:
- void slot1_disconnectThis()
- {
- slot1();
- disconnect(sender(), SIGNAL(signal1()), this, SLOT(slot1_disconnectThis()));
- }
-
- void slot2_reconnectThis()
- {
- slot2();
-
- const QObject *s = sender();
- disconnect(s, SIGNAL(signal1()), this, SLOT(slot2_reconnectThis()));
- connect(s, SIGNAL(signal1()), this, SLOT(slot2_reconnectThis()));
- }
-
- void slot1_disconnectNext()
- {
- slot1();
- disconnect(sender(), SIGNAL(signal1()), next, SLOT(slot1()));
- }
-
- void slot2_reconnectNext()
- {
- slot2();
-
- // modify the connection list in 'this'
- disconnect(sender(), SIGNAL(signal1()), next, SLOT(slot2()));
- connect(sender(), SIGNAL(signal1()), next, SLOT(slot2()));
-
- // modify the sender list in 'this'
- connect(next, SIGNAL(destroyed()), this, SLOT(deleteLater()));
- connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(deleteLater()));
- disconnect(next, SIGNAL(destroyed()), this, SLOT(deleteLater()));
- disconnect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(deleteLater()));
- }
-
- void slot1_deleteNext()
- {
- slot1();
- delete next;
- }
-
- void slot2_deleteSender()
- {
- slot2();
- delete sender();
- }
-};
-
-void tst_QObject::emitInDefinedOrder()
-{
- SenderObject sender;
- ReceiverObject receiver1, receiver2, receiver3, receiver4;
-
- connect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot1()));
- connect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot1()));
- connect(&sender, SIGNAL(signal1()), &receiver3, SLOT(slot1()));
- connect(&sender, SIGNAL(signal1()), &receiver4, SLOT(slot1()));
- connect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot2()));
- connect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot2()));
- connect(&sender, SIGNAL(signal1()), &receiver3, SLOT(slot2()));
- connect(&sender, SIGNAL(signal1()), &receiver4, SLOT(slot2()));
-
- int sequence;
- ReceiverObject::sequence = sequence = 0;
- sender.emitSignal1();
- QCOMPARE(receiver1.sequence_slot1, ++sequence);
- QCOMPARE(receiver2.sequence_slot1, ++sequence);
- QCOMPARE(receiver3.sequence_slot1, ++sequence);
- QCOMPARE(receiver4.sequence_slot1, ++sequence);
- QCOMPARE(receiver1.sequence_slot2, ++sequence);
- QCOMPARE(receiver2.sequence_slot2, ++sequence);
- QCOMPARE(receiver3.sequence_slot2, ++sequence);
- QCOMPARE(receiver4.sequence_slot2, ++sequence);
-
- QObject::disconnect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot1()));
- connect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot1()));
-
- ReceiverObject::sequence = sequence = 0;
- sender.emitSignal1();
- QCOMPARE(receiver1.sequence_slot1, ++sequence);
- QCOMPARE(receiver3.sequence_slot1, ++sequence);
- QCOMPARE(receiver4.sequence_slot1, ++sequence);
- QCOMPARE(receiver1.sequence_slot2, ++sequence);
- QCOMPARE(receiver2.sequence_slot2, ++sequence);
- QCOMPARE(receiver3.sequence_slot2, ++sequence);
- QCOMPARE(receiver4.sequence_slot2, ++sequence);
- QCOMPARE(receiver2.sequence_slot1, ++sequence);
-
- QObject::disconnect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot1()));
- connect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot1()));
-
- ReceiverObject::sequence = sequence = 0;
- sender.emitSignal1();
- QCOMPARE(receiver3.sequence_slot1, ++sequence);
- QCOMPARE(receiver4.sequence_slot1, ++sequence);
- QCOMPARE(receiver1.sequence_slot2, ++sequence);
- QCOMPARE(receiver2.sequence_slot2, ++sequence);
- QCOMPARE(receiver3.sequence_slot2, ++sequence);
- QCOMPARE(receiver4.sequence_slot2, ++sequence);
- QCOMPARE(receiver2.sequence_slot1, ++sequence);
- QCOMPARE(receiver1.sequence_slot1, ++sequence);
-
- // ensure emission order even if the connections change during emission
- SenderObject *sender2 = new SenderObject;
- SequenceObject seq1, seq2, *seq3 = new SequenceObject, seq4;
- seq1.next = &seq2;
- seq2.next = seq3;
- seq3->next = &seq4;
-
- // try 1
- connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1_disconnectThis()));
- connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_disconnectNext()));
- connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
- connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
- connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2_reconnectThis()));
- connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_reconnectNext()));
- connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
- connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
-
- SequenceObject::sequence = sequence = 0;
- sender2->emitSignal1();
- QCOMPARE(seq1.called(1), TRUE);
- QCOMPARE(seq2.called(1), TRUE);
- QCOMPARE(seq3->called(1), FALSE);
- QCOMPARE(seq4.called(1), TRUE);
- QCOMPARE(seq1.called(2), TRUE);
- QCOMPARE(seq2.called(2), TRUE);
- QCOMPARE(seq3->called(2), FALSE);
- QCOMPARE(seq4.called(2), TRUE);
- QCOMPARE(seq1.sequence_slot1, ++sequence);
- QCOMPARE(seq2.sequence_slot1, ++sequence);
- QCOMPARE(seq4.sequence_slot1, ++sequence);
- QCOMPARE(seq1.sequence_slot2, ++sequence);
- QCOMPARE(seq2.sequence_slot2, ++sequence);
- QCOMPARE(seq4.sequence_slot2, ++sequence);
-
- QObject::disconnect(sender2, 0, &seq1, 0);
- QObject::disconnect(sender2, 0, &seq2, 0);
- QObject::disconnect(sender2, 0, seq3, 0);
- QObject::disconnect(sender2, 0, &seq4, 0);
- seq1.reset();
- seq2.reset();
- seq3->reset();
- seq4.reset();
-
- // try 2
- connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2_reconnectThis()));
- connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_reconnectNext()));
- connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
- connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
- connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1_disconnectThis()));
- connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_disconnectNext()));
- connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
- connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
-
- SequenceObject::sequence = sequence = 0;
- sender2->emitSignal1();
- QCOMPARE(seq1.called(2), TRUE);
- QCOMPARE(seq2.called(2), TRUE);
- QCOMPARE(seq3->called(2), FALSE);
- QCOMPARE(seq4.called(2), TRUE);
- QCOMPARE(seq1.called(1), TRUE);
- QCOMPARE(seq2.called(1), TRUE);
- QCOMPARE(seq3->called(1), FALSE);
- QCOMPARE(seq4.called(1), TRUE);
- QCOMPARE(seq1.sequence_slot2, ++sequence);
- QCOMPARE(seq2.sequence_slot2, ++sequence);
- QCOMPARE(seq4.sequence_slot2, ++sequence);
- QCOMPARE(seq1.sequence_slot1, ++sequence);
- QCOMPARE(seq2.sequence_slot1, ++sequence);
- QCOMPARE(seq4.sequence_slot1, ++sequence);
-
- QObject::disconnect(sender2, 0, &seq1, 0);
- QObject::disconnect(sender2, 0, &seq2, 0);
- QObject::disconnect(sender2, 0, seq3, 0);
- QObject::disconnect(sender2, 0, &seq4, 0);
- seq1.reset();
- seq2.reset();
- seq3->reset();
- seq4.reset();
-
- // try 3
- connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1()));
- connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_disconnectNext()));
- connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
- connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
- connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2()));
- connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_reconnectNext()));
- connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
- connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
-
- SequenceObject::sequence = sequence = 0;
- sender2->emitSignal1();
- QCOMPARE(seq1.called(1), TRUE);
- QCOMPARE(seq2.called(1), TRUE);
- QCOMPARE(seq3->called(1), FALSE);
- QCOMPARE(seq4.called(1), TRUE);
- QCOMPARE(seq1.called(2), TRUE);
- QCOMPARE(seq2.called(2), TRUE);
- QCOMPARE(seq3->called(2), FALSE);
- QCOMPARE(seq4.called(2), TRUE);
- QCOMPARE(seq1.sequence_slot1, ++sequence);
- QCOMPARE(seq2.sequence_slot1, ++sequence);
- QCOMPARE(seq4.sequence_slot1, ++sequence);
- QCOMPARE(seq1.sequence_slot2, ++sequence);
- QCOMPARE(seq2.sequence_slot2, ++sequence);
- QCOMPARE(seq4.sequence_slot2, ++sequence);
-
- // ensure emission order even if objects are destroyed during emission
- QObject::disconnect(sender2, 0, &seq1, 0);
- QObject::disconnect(sender2, 0, &seq2, 0);
- QObject::disconnect(sender2, 0, seq3, 0);
- QObject::disconnect(sender2, 0, &seq4, 0);
- seq1.reset();
- seq2.reset();
- seq3->reset();
- seq4.reset();
-
- connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1()));
- connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_deleteNext()));
- connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
- connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
- connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2()));
- connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_deleteSender()));
- connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
- connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
-
- QPointer<SenderObject> psender = sender2;
- QPointer<SequenceObject> pseq3 = seq3;
-
- SequenceObject::sequence = sequence = 0;
- sender2->emitSignal1();
- QCOMPARE(static_cast<QObject *>(psender), static_cast<QObject *>(0));
- QCOMPARE(static_cast<QObject *>(pseq3), static_cast<QObject *>(0));
- QCOMPARE(seq1.called(1), TRUE);
- QCOMPARE(seq2.called(1), TRUE);
- QCOMPARE(seq4.called(1), TRUE);
- QCOMPARE(seq1.called(2), TRUE);
- QCOMPARE(seq2.called(2), TRUE);
- QCOMPARE(seq4.called(2), FALSE);
- QCOMPARE(seq1.sequence_slot1, ++sequence);
- QCOMPARE(seq2.sequence_slot1, ++sequence);
- QCOMPARE(seq4.sequence_slot1, ++sequence);
- QCOMPARE(seq1.sequence_slot2, ++sequence);
- QCOMPARE(seq2.sequence_slot2, ++sequence);
-
- QPointer<SenderObject> psender3 = new SenderObject;
- connect(psender3, SIGNAL(signal1()), psender3, SIGNAL(signal2()));
- connect(psender3, SIGNAL(signal2()), &seq1, SLOT(slot2_deleteSender()));
- psender3->emitSignal1();
- QVERIFY(!psender3);
-}
-
-static int instanceCount = 0;
-
-struct CustomType
-{
- CustomType(int l1 = 0, int l2 = 0, int l3 = 0): i1(l1), i2(l2), i3(l3)
- { ++instanceCount; }
- CustomType(const CustomType &other): i1(other.i1), i2(other.i2), i3(other.i3)
- { ++instanceCount; }
- ~CustomType() { --instanceCount; }
-
- int i1, i2, i3;
- int value() { return i1 + i2 + i3; }
-};
-
-Q_DECLARE_METATYPE(CustomType*)
-
-class QCustomTypeChecker: public QObject
-{
- Q_OBJECT
-
-public:
- QCustomTypeChecker(QObject *parent = 0): QObject(parent) {}
- void doEmit(CustomType ct)
- { emit signal1(ct); }
-
-public slots:
- void slot1(CustomType ct);
-
-signals:
- void signal1(CustomType ct);
-
-public:
- CustomType received;
-};
-
-void QCustomTypeChecker::slot1(CustomType ct)
-{ received = ct; }
-
-
-void tst_QObject::customTypes()
-{
- CustomType t0;
- CustomType t1(1, 2, 3);
- CustomType t2(2, 3, 4);
-
- {
- QCustomTypeChecker checker;
- QCOMPARE(instanceCount, 4);
-
- connect(&checker, SIGNAL(signal1(CustomType)), &checker, SLOT(slot1(CustomType)),
- Qt::DirectConnection);
- QCOMPARE(checker.received.value(), 0);
- checker.doEmit(t1);
- QCOMPARE(checker.received.value(), t1.value());
- checker.received = t0;
-
- int idx = qRegisterMetaType<CustomType>("CustomType");
- QCOMPARE(QMetaType::type("CustomType"), idx);
-
- checker.disconnect();
- connect(&checker, SIGNAL(signal1(CustomType)), &checker, SLOT(slot1(CustomType)),
- Qt::QueuedConnection);
- QCOMPARE(instanceCount, 4);
- checker.doEmit(t2);
- QCOMPARE(instanceCount, 5);
- QCOMPARE(checker.received.value(), t0.value());
-
- QCoreApplication::processEvents();
- QCOMPARE(checker.received.value(), t2.value());
- QCOMPARE(instanceCount, 4);
-
- QVERIFY(QMetaType::isRegistered(idx));
- QCOMPARE(qRegisterMetaType<CustomType>("CustomType"), idx);
- QCOMPARE(QMetaType::type("CustomType"), idx);
- QVERIFY(QMetaType::isRegistered(idx));
- }
- QCOMPARE(instanceCount, 3);
-}
-
-QDataStream &operator<<(QDataStream &stream, const CustomType &ct)
-{
- stream << ct.i1 << ct.i2 << ct.i3;
- return stream;
-}
-
-QDataStream &operator>>(QDataStream &stream, CustomType &ct)
-{
- stream >> ct.i1;
- stream >> ct.i2;
- stream >> ct.i3;
- return stream;
-}
-
-void tst_QObject::streamCustomTypes()
-{
- QByteArray ba;
-
- int idx = qRegisterMetaType<CustomType>("CustomType");
- qRegisterMetaTypeStreamOperators<CustomType>("CustomType");
-
- {
- CustomType t1(1, 2, 3);
- QCOMPARE(instanceCount, 1);
- QDataStream stream(&ba, (QIODevice::OpenMode)QIODevice::WriteOnly);
- QMetaType::save(stream, idx, &t1);
- }
-
- QCOMPARE(instanceCount, 0);
-
- {
- CustomType t2;
- QCOMPARE(instanceCount, 1);
- QDataStream stream(&ba, (QIODevice::OpenMode)QIODevice::ReadOnly);
- QMetaType::load(stream, idx, &t2);
- QCOMPARE(instanceCount, 1);
- QCOMPARE(t2.i1, 1);
- QCOMPARE(t2.i2, 2);
- QCOMPARE(t2.i3, 3);
- }
- QCOMPARE(instanceCount, 0);
-}
-
-typedef QString CustomString;
-
-class PropertyObject : public QObject
-{
- Q_OBJECT
- Q_ENUMS(Alpha Priority)
-
- Q_PROPERTY(Alpha alpha READ alpha WRITE setAlpha)
- Q_PROPERTY(Priority priority READ priority WRITE setPriority)
- Q_PROPERTY(int number READ number WRITE setNumber)
- Q_PROPERTY(QString string READ string WRITE setString)
- Q_PROPERTY(QVariant variant READ variant WRITE setVariant)
- Q_PROPERTY(CustomType* custom READ custom WRITE setCustom)
- Q_PROPERTY(float myFloat READ myFloat WRITE setMyFloat)
- Q_PROPERTY(qreal myQReal READ myQReal WRITE setMyQReal)
- Q_PROPERTY(CustomString customString READ customString WRITE setCustomString )
-
-public:
- enum Alpha {
- Alpha0,
- Alpha1,
- Alpha2
- };
-
- enum Priority { High, Low, VeryHigh, VeryLow };
-
- PropertyObject()
- : m_alpha(Alpha0), m_priority(High), m_number(0), m_custom(0), m_float(42)
- {}
-
- Alpha alpha() const { return m_alpha; }
- void setAlpha(Alpha alpha) { m_alpha = alpha; }
-
- Priority priority() const { return m_priority; }
- void setPriority(Priority priority) { m_priority = priority; }
-
- int number() const { return m_number; }
- void setNumber(int number) { m_number = number; }
-
- QString string() const { return m_string; }
- void setString(const QString &string) { m_string = string; }
-
- QVariant variant() const { return m_variant; }
- void setVariant(const QVariant &variant) { m_variant = variant; }
-
- CustomType *custom() const { return m_custom; }
- void setCustom(CustomType *custom) { m_custom = custom; }
-
- void setMyFloat(float value) { m_float = value; }
- inline float myFloat() const { return m_float; }
-
- void setMyQReal(qreal value) { m_qreal = value; }
- qreal myQReal() const { return m_qreal; }
-
- CustomString customString() const { return m_customString; }
- void setCustomString(const QString &string) { m_customString = string; }
-
-private:
- Alpha m_alpha;
- Priority m_priority;
- int m_number;
- QString m_string;
- QVariant m_variant;
- CustomType *m_custom;
- float m_float;
- qreal m_qreal;
- CustomString m_customString;
-};
-
-Q_DECLARE_METATYPE(PropertyObject::Priority)
-
-void tst_QObject::threadSignalEmissionCrash()
-{
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- int loopCount = 100;
-#else
- int loopCount = 1000;
-#endif
- for (int i = 0; i < loopCount; ++i) {
- QTcpSocket socket;
- socket.connectToHost("localhost", 80);
- }
-}
-
-class TestThread : public QThread
-{
- Q_OBJECT
-public:
- inline void run()
- {
- *object = new QObject;
- *child = new QObject(*object);
- mutex.lock();
- cond.wakeOne();
- cond.wait(&mutex);
- mutex.unlock();
- }
-
- QObject **object, **child;
- QMutex mutex;
- QWaitCondition cond;
-};
-
-void tst_QObject::thread()
-{
- QThread *currentThread = QThread::currentThread();
- // the current thread is the same as the QApplication
- // thread... see tst_QApplication::thread()
-
- {
- QObject object;
- // thread affinity for objects with no parent should be the
- // current thread
- QVERIFY(object.thread() != 0);
- QCOMPARE(object.thread(), currentThread);
- // children inherit their parent's thread
- QObject child(&object);
- QCOMPARE(child.thread(), object.thread());
- }
-
- QObject *object = 0;
- QObject *child = 0;
-
- {
- TestThread thr;
- QVERIFY(thr.thread() != 0);
- QCOMPARE(thr.thread(), currentThread);
-
- thr.object = &object;
- thr.child = &child;
-
- thr.mutex.lock();
- thr.start();
- thr.cond.wait(&thr.mutex);
-
- // thread affinity for an object with no parent should be the
- // thread in which the object was created
- QCOMPARE(object->thread(), (QThread *)&thr);
- // children inherit their parent's thread
- QCOMPARE(child->thread(), object->thread());
-
- thr.cond.wakeOne();
- thr.mutex.unlock();
- thr.wait();
-
- // even though the thread is no longer running, the affinity
- // should not change
- QCOMPARE(object->thread(), (QThread *)&thr);
- QCOMPARE(child->thread(), object->thread());
- }
-
- // the thread has been destroyed, thread affinity should
- // automatically reset to no thread
- QCOMPARE(object->thread(), (QThread *)0);
- QCOMPARE(child->thread(), object->thread());
-
- delete object;
-}
-
-class MoveToThreadObject : public QObject
-{
- Q_OBJECT
-public:
- QThread *timerEventThread;
- QThread *customEventThread;
- QThread *slotThread;
-
- MoveToThreadObject(QObject *parent = 0)
- : QObject(parent), timerEventThread(0), customEventThread(0), slotThread(0)
- { }
-
- void customEvent(QEvent *)
- {
- if (customEventThread)
- qFatal("%s: customEventThread should be null", Q_FUNC_INFO);
- customEventThread = QThread::currentThread();
- emit theSignal();
- }
-
- void timerEvent(QTimerEvent *)
- {
- if (timerEventThread)
- qFatal("%s: timerEventThread should be null", Q_FUNC_INFO);
- timerEventThread = QThread::currentThread();
- emit theSignal();
- }
-
-public slots:
- void theSlot()
- {
- if (slotThread)
- qFatal("%s: slotThread should be null", Q_FUNC_INFO);
- slotThread = QThread::currentThread();
- emit theSignal();
- }
-
-signals:
- void theSignal();
-};
-
-class MoveToThreadThread : public QThread
-{
-public:
- ~MoveToThreadThread()
- {
- if (isRunning()) {
- terminate();
- wait();
- }
- }
- void start()
- {
- QEventLoop eventLoop;
- connect(this, SIGNAL(started()), &eventLoop, SLOT(quit()), Qt::QueuedConnection);
- QThread::start();
- // wait for thread to start
- (void) eventLoop.exec();
- }
- void run()
- { (void) exec(); }
-};
-
-void tst_QObject::thread0()
-{
- QObject *object = new QObject;
- object->moveToThread(0);
- QObject *child = new QObject(object);
- QCOMPARE(child->parent(), object);
- QCOMPARE(child->thread(), (QThread *)0);
-
-#if 0
- // We don't support moving children into a parent that has no thread
- // affinity (yet?).
- QObject *child2 = new QObject;
- child2->moveToThread(0);
- child2->setParent(object);
- QCOMPARE(child2->parent(), object);
- QCOMPARE(child2->thread(), (QThread *)0);
-#endif
-
- delete object;
-}
-
-void tst_QObject::moveToThread()
-{
- QThread *currentThread = QThread::currentThread();
-
- {
- QObject *object = new QObject;
- QObject *child = new QObject(object);
- QCOMPARE(object->thread(), currentThread);
- QCOMPARE(child->thread(), currentThread);
- object->moveToThread(0);
- QCOMPARE(object->thread(), (QThread *)0);
- QCOMPARE(child->thread(), (QThread *)0);
- object->moveToThread(currentThread);
- QCOMPARE(object->thread(), currentThread);
- QCOMPARE(child->thread(), currentThread);
- object->moveToThread(0);
- QCOMPARE(object->thread(), (QThread *)0);
- QCOMPARE(child->thread(), (QThread *)0);
- // can delete an object with no thread anywhere
- delete object;
- }
-
- {
- MoveToThreadThread thread;
- thread.start();
-
- QObject *object = new QObject;
- QObject *child = new QObject(object);
- QPointer<QObject> opointer = object;
- QPointer<QObject> cpointer = object;
-
- QCOMPARE(object->thread(), currentThread);
- QCOMPARE(child->thread(), currentThread);
- object->moveToThread(&thread);
- QCOMPARE(object->thread(), (QThread *)&thread);
- QCOMPARE(child->thread(), (QThread *)&thread);
-
- connect(object, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
- QMetaObject::invokeMethod(object, "deleteLater", Qt::QueuedConnection);
- thread.wait();
-
- QVERIFY(opointer == 0);
- QVERIFY(cpointer == 0);
- }
-
- {
- // make sure posted events are moved with the object
- MoveToThreadThread thread;
- thread.start();
-
- MoveToThreadObject *object = new MoveToThreadObject;
- MoveToThreadObject *child = new MoveToThreadObject(object);
-
- connect(object, SIGNAL(theSignal()), &thread, SLOT(quit()), Qt::DirectConnection);
- QCoreApplication::postEvent(child, new QEvent(QEvent::User));
- QCoreApplication::postEvent(object, new QEvent(QEvent::User));
-
- QCOMPARE(object->thread(), currentThread);
- QCOMPARE(child->thread(), currentThread);
- object->moveToThread(&thread);
- QCOMPARE(object->thread(), (QThread *)&thread);
- QCOMPARE(child->thread(), (QThread *)&thread);
-
- thread.wait();
-
- QCOMPARE(object->customEventThread, (QThread *)&thread);
- QCOMPARE(child->customEventThread, (QThread *)&thread);
-
- thread.start();
- connect(object, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
- QMetaObject::invokeMethod(object, "deleteLater", Qt::QueuedConnection);
- thread.wait();
- }
-
- {
- // make sure timers are moved with the object
- MoveToThreadThread thread;
- thread.start();
-
- MoveToThreadObject *object = new MoveToThreadObject;
- MoveToThreadObject *child = new MoveToThreadObject(object);
-
- connect(object, SIGNAL(theSignal()), &thread, SLOT(quit()), Qt::DirectConnection);
-
-#if defined(Q_OS_SYMBIAN)
- // Child timer will be registered after parent timer in the new
- // thread, and 10ms is less than symbian timer resolution, so
- // child->timerEventThread compare after thread.wait() will
- // usually fail unless timers are farther apart.
- child->startTimer(100);
- object->startTimer(150);
-#else
- child->startTimer(90);
- object->startTimer(100);
-#endif
-
- QCOMPARE(object->thread(), currentThread);
- QCOMPARE(child->thread(), currentThread);
- object->moveToThread(&thread);
- QCOMPARE(object->thread(), (QThread *)&thread);
- QCOMPARE(child->thread(), (QThread *)&thread);
-
- thread.wait();
-
- QCOMPARE(object->timerEventThread, (QThread *)&thread);
- QCOMPARE(child->timerEventThread, (QThread *)&thread);
-
- thread.start();
- connect(object, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
- QMetaObject::invokeMethod(object, "deleteLater", Qt::QueuedConnection);
- thread.wait();
- }
-
- {
- // make sure socket notifiers are moved with the object
- MoveToThreadThread thread;
- thread.start();
-
- QTcpServer server;
- QVERIFY(server.listen(QHostAddress::LocalHost, 0));
- QTcpSocket *socket = new QTcpSocket;
- MoveToThreadObject *child = new MoveToThreadObject(socket);
- connect(socket, SIGNAL(disconnected()), child, SLOT(theSlot()), Qt::DirectConnection);
- connect(child, SIGNAL(theSignal()), &thread, SLOT(quit()), Qt::DirectConnection);
-
- socket->connectToHost(server.serverAddress(), server.serverPort());
-
- QVERIFY(server.waitForNewConnection(1000));
- QTcpSocket *serverSocket = server.nextPendingConnection();
- QVERIFY(serverSocket);
-
- socket->waitForConnected();
-
- QCOMPARE(socket->thread(), currentThread);
- socket->moveToThread(&thread);
- QCOMPARE(socket->thread(), (QThread *)&thread);
-
- serverSocket->close();
-
- QVERIFY(thread.wait(10000));
-
- QCOMPARE(child->slotThread, (QThread *)&thread);
-
- thread.start();
- connect(socket, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
- QMetaObject::invokeMethod(socket, "deleteLater", Qt::QueuedConnection);
- thread.wait();
- }
-}
-
-
-void tst_QObject::property()
-{
- PropertyObject object;
- const QMetaObject *mo = object.metaObject();
- QMetaProperty property;
- QVERIFY(mo);
-
- QVERIFY(mo->indexOfProperty("alpha") != -1);
- property = mo->property(mo->indexOfProperty("alpha"));
- QVERIFY(property.isEnumType());
- QCOMPARE(property.typeName(), "Alpha");
- QCOMPARE(property.type(), QVariant::Int);
-
- QVariant var = object.property("alpha");
- QVERIFY(!var.isNull());
- QCOMPARE(var.toInt(), int(PropertyObject::Alpha0));
- object.setAlpha(PropertyObject::Alpha1);
- QCOMPARE(object.property("alpha").toInt(), int(PropertyObject::Alpha1));
- QVERIFY(object.setProperty("alpha", PropertyObject::Alpha2));
- QCOMPARE(object.property("alpha").toInt(), int(PropertyObject::Alpha2));
- QVERIFY(object.setProperty("alpha", "Alpha1"));
- QCOMPARE(object.property("alpha").toInt(), int(PropertyObject::Alpha1));
- QVERIFY(!object.setProperty("alpha", QVariant()));
-
- QVERIFY(mo->indexOfProperty("number") != -1);
- QCOMPARE(object.property("number").toInt(), 0);
- object.setNumber(24);
- QCOMPARE(object.property("number"), QVariant(24));
- QVERIFY(object.setProperty("number", 12));
- QCOMPARE(object.property("number"), QVariant(12));
- QVERIFY(object.setProperty("number", "42"));
- QCOMPARE(object.property("number"), QVariant(42));
-
- QVERIFY(mo->indexOfProperty("string") != -1);
- QCOMPARE(object.property("string").toString(), QString());
- object.setString("String1");
- QCOMPARE(object.property("string"), QVariant("String1"));
- QVERIFY(object.setProperty("string", "String2"));
- QCOMPARE(object.property("string"), QVariant("String2"));
- QVERIFY(!object.setProperty("string", QVariant()));
-
- const int idx = mo->indexOfProperty("variant");
- QVERIFY(idx != -1);
- QVERIFY(mo->property(idx).type() == QVariant::LastType);
- QCOMPARE(object.property("variant"), QVariant());
- QVariant variant1(42);
- QVariant variant2("string");
- object.setVariant(variant1);
- QCOMPARE(object.property("variant"), variant1);
- QVERIFY(object.setProperty("variant", variant2));
- QCOMPARE(object.variant(), QVariant(variant2));
- QCOMPARE(object.property("variant"), variant2);
- QVERIFY(object.setProperty("variant", QVariant()));
- QCOMPARE(object.property("variant"), QVariant());
-
- QVERIFY(mo->indexOfProperty("custom") != -1);
- property = mo->property(mo->indexOfProperty("custom"));
- QVERIFY(property.isValid());
- QVERIFY(property.isWritable());
- QVERIFY(!property.isEnumType());
- QCOMPARE(property.typeName(), "CustomType*");
- QCOMPARE(property.type(), QVariant::UserType);
-
- CustomType *customPointer = 0;
- QVariant customVariant = object.property("custom");
- customPointer = qVariantValue<CustomType *>(customVariant);
- QCOMPARE(customPointer, object.custom());
-
- CustomType custom;
- customPointer = &custom;
- qVariantSetValue(customVariant, customPointer);
-
- property = mo->property(mo->indexOfProperty("custom"));
- QVERIFY(property.isWritable());
- QCOMPARE(property.typeName(), "CustomType*");
- QCOMPARE(property.type(), QVariant::UserType);
-
- QVERIFY(object.setProperty("custom", customVariant));
- QCOMPARE(object.custom(), customPointer);
-
- customVariant = object.property("custom");
- customPointer = qVariantValue<CustomType *>(customVariant);
- QCOMPARE(object.custom(), customPointer);
-
- // this enum property has a meta type, but it's not yet registered, so we know this fails
- QVERIFY(mo->indexOfProperty("priority") != -1);
- property = mo->property(mo->indexOfProperty("priority"));
- QVERIFY(property.isEnumType());
- QCOMPARE(property.typeName(), "Priority");
- QCOMPARE(property.type(), QVariant::Int);
-
- var = object.property("priority");
- QVERIFY(!var.isNull());
- QCOMPARE(var.toInt(), int(PropertyObject::High));
- object.setPriority(PropertyObject::Low);
- QCOMPARE(object.property("priority").toInt(), int(PropertyObject::Low));
- QVERIFY(object.setProperty("priority", PropertyObject::VeryHigh));
- QCOMPARE(object.property("priority").toInt(), int(PropertyObject::VeryHigh));
- QVERIFY(object.setProperty("priority", "High"));
- QCOMPARE(object.property("priority").toInt(), int(PropertyObject::High));
- QVERIFY(!object.setProperty("priority", QVariant()));
-
- // now it's registered, so it works as expected
- int priorityMetaTypeId = qRegisterMetaType<PropertyObject::Priority>("PropertyObject::Priority");
-
- QVERIFY(mo->indexOfProperty("priority") != -1);
- property = mo->property(mo->indexOfProperty("priority"));
- QVERIFY(property.isEnumType());
- QCOMPARE(property.typeName(), "Priority");
- QCOMPARE(property.type(), QVariant::UserType);
- QCOMPARE(property.userType(), priorityMetaTypeId);
-
- var = object.property("priority");
- QVERIFY(!var.isNull());
- QVERIFY(qVariantCanConvert<PropertyObject::Priority>(var));
- QCOMPARE(qVariantValue<PropertyObject::Priority>(var), PropertyObject::High);
- object.setPriority(PropertyObject::Low);
- QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::Low);
- QVERIFY(object.setProperty("priority", PropertyObject::VeryHigh));
- QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::VeryHigh);
- QVERIFY(object.setProperty("priority", "High"));
- QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::High);
- QVERIFY(!object.setProperty("priority", QVariant()));
-
- var = object.property("priority");
- QCOMPARE(qVariantValue<PropertyObject::Priority>(var), PropertyObject::High);
- object.setPriority(PropertyObject::Low);
- QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::Low);
- object.setProperty("priority", var);
- QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::High);
-
- qRegisterMetaType<CustomString>("CustomString");
- QVERIFY(mo->indexOfProperty("customString") != -1);
- QCOMPARE(object.property("customString").toString(), QString());
- object.setCustomString("String1");
- QCOMPARE(object.property("customString"), QVariant("String1"));
- QVERIFY(object.setProperty("customString", "String2"));
- QCOMPARE(object.property("customString"), QVariant("String2"));
- QVERIFY(!object.setProperty("customString", QVariant()));
-}
-
-void tst_QObject::metamethod()
-{
- SenderObject obj;
- const QMetaObject *mobj = obj.metaObject();
- QMetaMethod m;
-
- m = mobj->method(mobj->indexOfMethod("invoke1()"));
- QVERIFY(QByteArray(m.signature()) == "invoke1()");
- QVERIFY(m.methodType() == QMetaMethod::Method);
- QVERIFY(m.access() == QMetaMethod::Public);
- QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
- QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
-
- m = mobj->method(mobj->indexOfMethod("sinvoke1()"));
- QVERIFY(QByteArray(m.signature()) == "sinvoke1()");
- QVERIFY(m.methodType() == QMetaMethod::Method);
- QVERIFY(m.access() == QMetaMethod::Public);
- QVERIFY((m.attributes() & QMetaMethod::Scriptable));
- QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
-
- m = mobj->method(mobj->indexOfMethod("invoke2()"));
- QVERIFY(QByteArray(m.signature()) == "invoke2()");
- QVERIFY(m.methodType() == QMetaMethod::Method);
- QVERIFY(m.access() == QMetaMethod::Protected);
- QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
- QVERIFY((m.attributes() & QMetaMethod::Compatibility));
-
- m = mobj->method(mobj->indexOfMethod("sinvoke2()"));
- QVERIFY(QByteArray(m.signature()) == "sinvoke2()");
- QVERIFY(m.methodType() == QMetaMethod::Method);
- QVERIFY(m.access() == QMetaMethod::Protected);
- QVERIFY((m.attributes() & QMetaMethod::Scriptable));
- QVERIFY((m.attributes() & QMetaMethod::Compatibility));
-
- m = mobj->method(mobj->indexOfMethod("invoke3()"));
- QVERIFY(QByteArray(m.signature()) == "invoke3()");
- QVERIFY(m.methodType() == QMetaMethod::Method);
- QVERIFY(m.access() == QMetaMethod::Private);
- QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
- QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
-
- m = mobj->method(mobj->indexOfMethod("sinvoke3()"));
- QVERIFY(QByteArray(m.signature()) == "sinvoke3()");
- QVERIFY(m.methodType() == QMetaMethod::Method);
- QVERIFY(m.access() == QMetaMethod::Private);
- QVERIFY((m.attributes() & QMetaMethod::Scriptable));
- QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
-
- m = mobj->method(mobj->indexOfMethod("signal5()"));
- QVERIFY(QByteArray(m.signature()) == "signal5()");
- QVERIFY(m.methodType() == QMetaMethod::Signal);
- QVERIFY(m.access() == QMetaMethod::Protected);
- QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
- QVERIFY((m.attributes() & QMetaMethod::Compatibility));
-
- m = mobj->method(mobj->indexOfMethod("aPublicSlot()"));
- QVERIFY(QByteArray(m.signature()) == "aPublicSlot()");
- QVERIFY(m.methodType() == QMetaMethod::Slot);
- QVERIFY(m.access() == QMetaMethod::Public);
- QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
- QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
-
- m = mobj->method(mobj->indexOfMethod("invoke1()"));
- QCOMPARE(m.parameterNames().count(), 0);
- QCOMPARE(m.parameterTypes().count(), 0);
-
- m = mobj->method(mobj->indexOfMethod("invoke2(int)"));
- QCOMPARE(m.parameterNames().count(), 1);
- QCOMPARE(m.parameterTypes().count(), 1);
- QCOMPARE(m.parameterTypes().at(0), QByteArray("int"));
- QVERIFY(m.parameterNames().at(0).isEmpty());
-
- m = mobj->method(mobj->indexOfMethod("invoke3(int,int)"));
- QCOMPARE(m.parameterNames().count(), 2);
- QCOMPARE(m.parameterTypes().count(), 2);
- QCOMPARE(m.parameterTypes().at(0), QByteArray("int"));
- QCOMPARE(m.parameterNames().at(0), QByteArray("hinz"));
- QCOMPARE(m.parameterTypes().at(1), QByteArray("int"));
- QCOMPARE(m.parameterNames().at(1), QByteArray("kunz"));
-
-}
-
-namespace QObjectTest
-{
- class TestObject: public QObject
- {
- Q_OBJECT
- public:
- TestObject(): QObject(), i(0) {}
- void doEmit() { emit aSignal(); }
- int i;
- public slots:
- void aSlot() { ++i; }
- signals:
- void aSignal();
- };
-}
-
-void tst_QObject::namespaces()
-{
- QObjectTest::TestObject obj;
-
- QVERIFY(connect(&obj, SIGNAL(aSignal()), &obj, SLOT(aSlot())));
- obj.doEmit();
- QCOMPARE(obj.i, 1);
-}
-
-class SuperObject : public QObject
-{
- Q_OBJECT
-public:
- QObject *theSender;
- int theSignalId;
-
- SuperObject()
- {
- theSender = 0;
- theSignalId = 0;
- }
-
- friend class tst_QObject;
-
- using QObject::sender;
-
-public slots:
- void rememberSender()
- {
- theSender = sender();
- theSignalId = senderSignalIndex();
- }
-
- void deleteAndRememberSender()
- {
- delete theSender;
- rememberSender();
- }
-signals:
- void anotherSignal();
- void theSignal();
-};
-
-void tst_QObject::sender()
-{
- {
- SuperObject sender;
- SuperObject receiver;
- connect(&sender, SIGNAL(anotherSignal()),
- &receiver, SLOT(rememberSender()));
- connect(&sender, SIGNAL(theSignal()),
- &receiver, SLOT(rememberSender()));
- QCOMPARE(receiver.sender(), (QObject *)0);
- QCOMPARE(receiver.senderSignalIndex(), -1);
- emit sender.theSignal();
- QCOMPARE(receiver.theSender, (QObject *)&sender);
- QCOMPARE(receiver.sender(), (QObject *)0);
- QCOMPARE(receiver.theSignalId,
- sender.metaObject()->indexOfSignal("theSignal()"));
- QCOMPARE(receiver.senderSignalIndex(), -1);
-
- emit sender.anotherSignal();
- QCOMPARE(receiver.theSignalId,
- sender.metaObject()->indexOfSignal("anotherSignal()"));
- QCOMPARE(receiver.senderSignalIndex(), -1);
- }
-
- {
- SuperObject *sender = new SuperObject;
- SuperObject *receiver = new SuperObject;
- connect(sender, SIGNAL(theSignal()),
- receiver, SLOT(rememberSender()),
- Qt::BlockingQueuedConnection);
-
- QThread thread;
- receiver->moveToThread(&thread);
- connect(sender, SIGNAL(theSignal()),
- &thread, SLOT(quit()),
- Qt::DirectConnection);
-
- QCOMPARE(receiver->sender(), (QObject *)0);
- QCOMPARE(receiver->senderSignalIndex(), -1);
- receiver->theSender = 0;
- receiver->theSignalId = -1;
- thread.start();
- emit sender->theSignal();
- QCOMPARE(receiver->theSender, (QObject *) sender);
- QCOMPARE(receiver->sender(), (QObject *)0);
- QCOMPARE(receiver->theSignalId,
- sender->metaObject()->indexOfSignal("theSignal()"));
- QCOMPARE(receiver->senderSignalIndex(), -1);
-
- QVERIFY(thread.wait(10000));
- delete receiver;
- delete sender;
- }
-
- {
- SuperObject *sender = new SuperObject;
- SuperObject receiver;
- connect(sender, SIGNAL(theSignal()),
- &receiver, SLOT(deleteAndRememberSender()));
- QCOMPARE(receiver.sender(), (QObject *)0);
- receiver.theSender = sender;
- emit sender->theSignal();
- QCOMPARE(receiver.theSender, (QObject *)0);
- QCOMPARE(receiver.sender(), (QObject *)0);
- }
-
- {
- SuperObject *sender = new SuperObject;
- SuperObject *receiver = new SuperObject;
- connect(sender, SIGNAL(theSignal()),
- receiver, SLOT(deleteAndRememberSender()),
- Qt::BlockingQueuedConnection);
-
- QThread thread;
- receiver->moveToThread(&thread);
- connect(sender, SIGNAL(destroyed()),
- &thread, SLOT(quit()),
- Qt::DirectConnection);
-
- QCOMPARE(receiver->sender(), (QObject *)0);
- receiver->theSender = sender;
- thread.start();
- emit sender->theSignal();
- QCOMPARE(receiver->theSender, (QObject *)0);
- QCOMPARE(receiver->sender(), (QObject *)0);
-
- QVERIFY(thread.wait(10000));
- delete receiver;
- }
-}
-
-namespace Foo
-{
- struct Bar
- {
- virtual ~Bar() {}
- virtual int rtti() const = 0;
- };
-
- struct Bleh
- {
- virtual ~Bleh() {}
- virtual int rtti() const = 0;
- };
-}
-
-QT_BEGIN_NAMESPACE
-Q_DECLARE_INTERFACE(Foo::Bar, "com.qtest.foobar")
-QT_END_NAMESPACE
-
-#define Bleh_iid "com.qtest.bleh"
-QT_BEGIN_NAMESPACE
-Q_DECLARE_INTERFACE(Foo::Bleh, Bleh_iid)
-QT_END_NAMESPACE
-
-class FooObject: public QObject, public Foo::Bar
-{
- Q_OBJECT
- Q_INTERFACES(Foo::Bar)
-public:
- int rtti() const { return 42; }
-};
-
-class BlehObject : public QObject, public Foo::Bleh
-{
- Q_OBJECT
- Q_INTERFACES(Foo::Bleh)
-public:
- int rtti() const { return 43; }
-};
-
-void tst_QObject::declareInterface()
-{
- FooObject obj;
-
- Foo::Bar *bar = qobject_cast<Foo::Bar *>(&obj);
- QVERIFY(bar);
- QCOMPARE(bar->rtti(), 42);
- QCOMPARE(static_cast<Foo::Bar *>(&obj), bar);
-
- BlehObject bleh;
-
- bar = qobject_cast<Foo::Bar *>(&bleh);
- QVERIFY(!bar);
- Foo::Bleh *b = qobject_cast<Foo::Bleh *>(&bleh);
- QCOMPARE(b->rtti(), 43);
- QCOMPARE(static_cast<Foo::Bleh *>(&bleh), b);
-
-}
-
-class CustomData : public QObjectUserData
-{
-public:
- int id;
-};
-
-void tst_QObject::testUserData()
-{
- const int USER_DATA_COUNT = 100;
- int user_data_ids[USER_DATA_COUNT];
-
- // Register a few
- for (int i=0; i<USER_DATA_COUNT; ++i) {
- user_data_ids[i] = QObject::registerUserData();
- }
-
- // Randomize the table a bit
- for (int i=0; i<100; ++i) {
- int p1 = rand() % USER_DATA_COUNT;
- int p2 = rand() % USER_DATA_COUNT;
-
- int tmp = user_data_ids[p1];
- user_data_ids[p1] = user_data_ids[p2];
- user_data_ids[p2] = tmp;
- }
-
- // insert the user data into an object
- QObject my_test_object;
- for (int i=0; i<USER_DATA_COUNT; ++i) {
- CustomData *data = new CustomData;
- data->id = user_data_ids[i];
- my_test_object.setUserData(data->id, data);
- }
-
- // verify that all ids and positions are matching
- for (int i=0; i<USER_DATA_COUNT; ++i) {
- int id = user_data_ids[i];
- CustomData *data = static_cast<CustomData *>(my_test_object.userData(id));
- QVERIFY(data != 0);
- QVERIFY(data->id == id);
- }
-}
-
-class DestroyedListener : public QObject
-{
- Q_OBJECT
-public:
- inline DestroyedListener() : pointerWasZero(false) {}
-
- QPointer<QObject> pointer;
- bool pointerWasZero;
-
-private slots:
- inline void otherObjectDestroyed()
- { pointerWasZero = pointer.isNull(); }
-};
-
-void tst_QObject::qpointerResetBeforeDestroyedSignal()
-{
- QObject *obj = new QObject;
- DestroyedListener listener;
- listener.pointer = obj;
- listener.pointerWasZero = false;
- connect(obj, SIGNAL(destroyed()), &listener, SLOT(otherObjectDestroyed()));
- delete obj;
- QVERIFY(listener.pointerWasZero);
- QVERIFY(listener.pointer.isNull());
-}
-
-class DefaultArguments : public QObject
-{
- Q_OBJECT
-
-public slots:
-
- void theSlot(const QString &s) { result = s; }
-
-signals:
- void theOriginalSignal();
- void theSecondSignal(const QString &s = QString("secondDefault"));
-
-public:
-
- void emitTheOriginalSignal() { emit theOriginalSignal(); }
- void emitTheSecondSignal() { emit theSecondSignal(); }
- QString result;
-};
-
-void tst_QObject::connectSignalsToSignalsWithDefaultArguments()
-{
- DefaultArguments o;
- connect(&o, SIGNAL(theOriginalSignal()), &o, SIGNAL(theSecondSignal()));
- connect(&o, SIGNAL(theSecondSignal(QString)), &o, SLOT(theSlot(QString)));
- QVERIFY( o.result.isEmpty() );
- o.emitTheSecondSignal();
- QCOMPARE(o.result, QString("secondDefault"));
- o.result = "Not called";
- o.emitTheOriginalSignal();
- QCOMPARE(o.result, QString("secondDefault"));
-
-}
-
-void tst_QObject::receivers()
-{
- class Object : public QObject
- {
- public:
- int receivers(const char* signal) const
- { return QObject::receivers(signal); }
- };
-
- Object object;
- QCOMPARE(object.receivers(SIGNAL(destroyed())), 0);
- object.connect(&object, SIGNAL(destroyed()), SLOT(deleteLater()));
- QCOMPARE(object.receivers(SIGNAL(destroyed())), 1);
- object.connect(&object, SIGNAL(destroyed()), SLOT(deleteLater()));
- QCOMPARE(object.receivers(SIGNAL(destroyed())), 2);
- object.disconnect(SIGNAL(destroyed()), &object, SLOT(deleteLater()));
- QCOMPARE(object.receivers(SIGNAL(destroyed())), 0);
-}
-
-enum Enum { };
-
-struct Struct { };
-class Class { };
-template <typename T> class Template { };
-
-class NormalizeObject : public QObject
-{
- Q_OBJECT
-
-public:
-
-signals:
- void uintPointerSignal(uint *);
- void ulongPointerSignal(ulong *);
- void constUintPointerSignal(const uint *);
- void constUlongPointerSignal(const ulong *);
-
- void structSignal(Struct s);
- void classSignal(Class c);
- void enumSignal(Enum e);
-
- void structPointerSignal(Struct *s);
- void classPointerSignal(Class *c);
- void enumPointerSignal(Enum *e);
-
- void constStructPointerSignal(const Struct *s);
- void constClassPointerSignal(const Class *c);
- void constEnumPointerSignal(const Enum *e);
-
- void constStructPointerConstPointerSignal(const Struct * const *s);
- void constClassPointerConstPointerSignal(const Class * const *c);
- void constEnumPointerConstPointerSignal(const Enum * const *e);
-
- void unsignedintSignal(unsigned int);
- void unsignedSignal(unsigned);
- void unsignedlongSignal(unsigned long);
- void unsignedlonglongSignal(quint64);
- void unsignedlongintSignal(unsigned long int);
- void unsignedshortSignal(unsigned short);
- void unsignedcharSignal(unsigned char);
-
- void typeRefSignal(Template<Class &> &ref);
- void constTypeRefSignal(const Template<Class const &> &ref);
- void typeConstRefSignal(Template<Class const &> const &ref);
-
- void typePointerConstRefSignal(Class * const &);
-
- void constTemplateSignal1( Template<int > );
- void constTemplateSignal2( Template< const int >);
-
-public slots:
- void uintPointerSlot(uint *) { }
- void ulongPointerSlot(ulong *) { }
- void constUintPointerSlot(const uint *) { }
- void constUlongPointerSlot(const ulong *) { }
-
- void structSlot(Struct s) { Q_UNUSED(s); }
- void classSlot(Class c) { Q_UNUSED(c); }
- void enumSlot(Enum e) { Q_UNUSED(e); }
-
- void structPointerSlot(Struct *s) { Q_UNUSED(s); }
- void classPointerSlot(Class *c) { Q_UNUSED(c); }
- void enumPointerSlot(Enum *e) { Q_UNUSED(e); }
-
- void constStructPointerSlot(const Struct *s) { Q_UNUSED(s); }
- void constClassPointerSlot(const Class *c) { Q_UNUSED(c); }
- void constEnumPointerSlot(const Enum *e) { Q_UNUSED(e); }
-
- void constStructPointerConstPointerSlot(const Struct * const *s) { Q_UNUSED(s); }
- void constClassPointerConstPointerSlot(const Class * const *c) { Q_UNUSED(c); }
- void constEnumPointerConstPointerSlot(const Enum * const *e) { Q_UNUSED(e); }
-
- void uintSlot(uint) {};
- void unsignedintSlot(unsigned int) {};
- void unsignedSlot(unsigned) {};
- void unsignedlongSlot(unsigned long) {};
- void unsignedlonglongSlot(quint64) {};
- void unsignedlongintSlot(unsigned long int) {};
- void unsignedshortSlot(unsigned short) {};
- void unsignedcharSlot(unsigned char) {};
-
- void typeRefSlot(Template<Class &> &) {}
- void constTypeRefSlot(const Template<const Class &> &) {}
- void typeConstRefSlot(Template<Class const &> const &) {}
-
- void typePointerConstRefSlot(Class * const &) {}
-
- void constTemplateSlot1(Template<int > const) {}
- void constTemplateSlot2(const Template<int > ) {}
- void constTemplateSlot3(const Template< const int >) {}
-};
-
-#include "oldnormalizeobject.h"
-
-void tst_QObject::normalize()
-{
- NormalizeObject object;
-
- // unsigned int -> uint, unsigned long -> ulong
- QVERIFY(object.connect(&object,
- SIGNAL(uintPointerSignal(uint *)),
- SLOT(uintPointerSlot(uint *))));
- QVERIFY(object.connect(&object,
- SIGNAL(uintPointerSignal(unsigned int *)),
- SLOT(uintPointerSlot(uint *))));
- QVERIFY(object.connect(&object,
- SIGNAL(uintPointerSignal(uint *)),
- SLOT(uintPointerSlot(unsigned int *))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(constUintPointerSignal(const uint *)),
- SLOT(constUintPointerSlot(const uint *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constUintPointerSignal(const unsigned int *)),
- SLOT(constUintPointerSlot(const uint *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constUintPointerSignal(const uint *)),
- SLOT(constUintPointerSlot(const unsigned int *))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(ulongPointerSignal(ulong *)),
- SLOT(ulongPointerSlot(ulong *))));
- QVERIFY(object.connect(&object,
- SIGNAL(ulongPointerSignal(unsigned long *)),
- SLOT(ulongPointerSlot(ulong *))));
- QVERIFY(object.connect(&object,
- SIGNAL(ulongPointerSignal(ulong *)),
- SLOT(ulongPointerSlot(unsigned long *))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(constUlongPointerSignal(const ulong *)),
- SLOT(constUlongPointerSlot(const ulong *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constUlongPointerSignal(const unsigned long *)),
- SLOT(constUlongPointerSlot(const ulong *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constUlongPointerSignal(const ulong *)),
- SLOT(constUlongPointerSlot(const unsigned long *))));
-
- // struct, class, and enum are optional
- QVERIFY(object.connect(&object,
- SIGNAL(structSignal(struct Struct)),
- SLOT(structSlot(struct Struct))));
- QVERIFY(object.connect(&object,
- SIGNAL(structSignal(Struct)),
- SLOT(structSlot(struct Struct))));
- QVERIFY(object.connect(&object,
- SIGNAL(structSignal(struct Struct)),
- SLOT(structSlot(Struct))));
- QVERIFY(object.connect(&object,
- SIGNAL(classSignal(class Class)),
- SLOT(classSlot(class Class))));
- QVERIFY(object.connect(&object,
- SIGNAL(classSignal(Class)),
- SLOT(classSlot(class Class))));
- QVERIFY(object.connect(&object,
- SIGNAL(classSignal(class Class)),
- SLOT(classSlot(Class))));
- QVERIFY(object.connect(&object,
- SIGNAL(enumSignal(enum Enum)),
- SLOT(enumSlot(enum Enum))));
- QVERIFY(object.connect(&object,
- SIGNAL(enumSignal(Enum)),
- SLOT(enumSlot(enum Enum))));
- QVERIFY(object.connect(&object,
- SIGNAL(enumSignal(enum Enum)),
- SLOT(enumSlot(Enum))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(structPointerSignal(struct Struct *)),
- SLOT(structPointerSlot(struct Struct *))));
- QVERIFY(object.connect(&object,
- SIGNAL(structPointerSignal(Struct *)),
- SLOT(structPointerSlot(struct Struct *))));
- QVERIFY(object.connect(&object,
- SIGNAL(structPointerSignal(struct Struct *)),
- SLOT(structPointerSlot(Struct *))));
- QVERIFY(object.connect(&object,
- SIGNAL(classPointerSignal(class Class *)),
- SLOT(classPointerSlot(class Class *))));
- QVERIFY(object.connect(&object,
- SIGNAL(classPointerSignal(Class *)),
- SLOT(classPointerSlot(class Class *))));
- QVERIFY(object.connect(&object,
- SIGNAL(classPointerSignal(class Class *)),
- SLOT(classPointerSlot(Class *))));
- QVERIFY(object.connect(&object,
- SIGNAL(enumPointerSignal(enum Enum *)),
- SLOT(enumPointerSlot(enum Enum *))));
- QVERIFY(object.connect(&object,
- SIGNAL(enumPointerSignal(Enum *)),
- SLOT(enumPointerSlot(enum Enum *))));
- QVERIFY(object.connect(&object,
- SIGNAL(enumPointerSignal(enum Enum *)),
- SLOT(enumPointerSlot(Enum *))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerSignal(const struct Struct *)),
- SLOT(constStructPointerSlot(const struct Struct *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerSignal(const Struct *)),
- SLOT(constStructPointerSlot(const struct Struct *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerSignal(const struct Struct *)),
- SLOT(constStructPointerSlot(const Struct *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerSignal(const class Class *)),
- SLOT(constClassPointerSlot(const class Class *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerSignal(const Class *)),
- SLOT(constClassPointerSlot(const class Class *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerSignal(const class Class *)),
- SLOT(constClassPointerSlot(const Class *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerSignal(const enum Enum *)),
- SLOT(constEnumPointerSlot(const enum Enum *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerSignal(const Enum *)),
- SLOT(constEnumPointerSlot(const enum Enum *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerSignal(const enum Enum *)),
- SLOT(constEnumPointerSlot(const Enum *))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerSignal(struct Struct const *)),
- SLOT(constStructPointerSlot(struct Struct const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerSignal(Struct const *)),
- SLOT(constStructPointerSlot(struct Struct const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerSignal(struct Struct const *)),
- SLOT(constStructPointerSlot(Struct const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerSignal(class Class const *)),
- SLOT(constClassPointerSlot(class Class const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerSignal(Class const *)),
- SLOT(constClassPointerSlot(class Class const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerSignal(class Class const *)),
- SLOT(constClassPointerSlot(Class const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerSignal(enum Enum const *)),
- SLOT(constEnumPointerSlot(enum Enum const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerSignal(Enum const *)),
- SLOT(constEnumPointerSlot(enum Enum const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerSignal(enum Enum const *)),
- SLOT(constEnumPointerSlot(Enum const *))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerConstPointerSignal(const struct Struct * const *)),
- SLOT(constStructPointerConstPointerSlot(const struct Struct * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerConstPointerSignal(const Struct * const *)),
- SLOT(constStructPointerConstPointerSlot(const struct Struct * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerConstPointerSignal(const struct Struct * const *)),
- SLOT(constStructPointerConstPointerSlot(const Struct * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerConstPointerSignal(const class Class * const *)),
- SLOT(constClassPointerConstPointerSlot(const class Class * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerConstPointerSignal(const Class * const *)),
- SLOT(constClassPointerConstPointerSlot(const class Class * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerConstPointerSignal(const class Class * const *)),
- SLOT(constClassPointerConstPointerSlot(const Class * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerConstPointerSignal(const enum Enum * const *)),
- SLOT(constEnumPointerConstPointerSlot(const enum Enum * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerConstPointerSignal(const Enum * const *)),
- SLOT(constEnumPointerConstPointerSlot(const enum Enum * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerConstPointerSignal(const enum Enum * const *)),
- SLOT(constEnumPointerConstPointerSlot(const Enum * const *))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerConstPointerSignal(struct Struct const * const *)),
- SLOT(constStructPointerConstPointerSlot(struct Struct const * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerConstPointerSignal(Struct const * const *)),
- SLOT(constStructPointerConstPointerSlot(struct Struct const * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constStructPointerConstPointerSignal(struct Struct const * const *)),
- SLOT(constStructPointerConstPointerSlot(Struct const * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerConstPointerSignal(class Class const * const *)),
- SLOT(constClassPointerConstPointerSlot(class Class const * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerConstPointerSignal(Class const * const *)),
- SLOT(constClassPointerConstPointerSlot(class Class const * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constClassPointerConstPointerSignal(class Class const * const *)),
- SLOT(constClassPointerConstPointerSlot(Class const * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerConstPointerSignal(enum Enum const * const *)),
- SLOT(constEnumPointerConstPointerSlot(enum Enum const * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerConstPointerSignal(Enum const * const *)),
- SLOT(constEnumPointerConstPointerSlot(enum Enum const * const *))));
- QVERIFY(object.connect(&object,
- SIGNAL(constEnumPointerConstPointerSignal(enum Enum const * const *)),
- SLOT(constEnumPointerConstPointerSlot(Enum const * const *))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(unsignedintSignal(unsigned int)),
- SLOT(unsignedintSlot(unsigned int))));
- QVERIFY(object.connect(&object,
- SIGNAL(unsignedSignal(unsigned)),
- SLOT(unsignedSlot(unsigned))));
- QVERIFY(object.connect(&object,
- SIGNAL(unsignedSignal(unsigned)),
- SLOT(uintSlot(uint))));
- QVERIFY(object.connect(&object,
- SIGNAL(unsignedlongSignal(unsigned long)),
- SLOT(unsignedlongSlot(unsigned long))));
- QVERIFY(object.connect(&object,
- SIGNAL(unsignedlonglongSignal(quint64)),
- SLOT(unsignedlonglongSlot(quint64))));
- QVERIFY(object.connect(&object,
- SIGNAL(unsignedlongintSignal(unsigned long int)),
- SLOT(unsignedlongintSlot(unsigned long int))));
- QVERIFY(object.connect(&object,
- SIGNAL(unsignedshortSignal(unsigned short)),
- SLOT(unsignedshortSlot(unsigned short))));
- QVERIFY(object.connect(&object,
- SIGNAL(unsignedcharSignal(unsigned char)),
- SLOT(unsignedcharSlot(unsigned char))));
-
- // connect when original template signature and mixed usage of 'T<C const &> const &',
- // 'const T<const C &> &', and 'T<const C &>'
-
- QVERIFY(object.connect(&object,
- SIGNAL(typeRefSignal(Template<Class &> &)),
- SLOT(typeRefSlot(Template<Class &> &))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(const Template<const Class &> &))));
- QVERIFY(object.connect(&object,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(const Template<Class const &> &))));
- QVERIFY(object.connect(&object,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
- QVERIFY(object.connect(&object,
- SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
- QVERIFY(object.connect(&object,
- SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(const Template<const Class &> &))));
- QVERIFY(object.connect(&object,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(const Template<Class const &> &))));
- QVERIFY(object.connect(&object,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
- QVERIFY(object.connect(&object,
- SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
- QVERIFY(object.connect(&object,
- SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(const Template<const Class &> &))));
- QVERIFY(object.connect(&object,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(const Template<Class const &> &))));
- QVERIFY(object.connect(&object,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
- QVERIFY(object.connect(&object,
- SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
- QVERIFY(object.connect(&object,
- SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(const Template<const Class &> &))));
- QVERIFY(object.connect(&object,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(const Template<Class const &> &))));
- QVERIFY(object.connect(&object,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
- QVERIFY(object.connect(&object,
- SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
- QVERIFY(object.connect(&object,
- SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
-
- // same test again, this time with an object compiled with old moc output... we know that
- // it is not possible to connect everything, whic is the purpose for this test
- OldNormalizeObject oldobject;
-
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(const Template<const Class &> &))));
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(const Template<Class const &> &))));
- // this fails in older versions, but passes now due to proper normalizing
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
- // this fails in older versions, but passes now due to proper normalizing
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
- // this fails in older versions, but passes now due to proper normalizing
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
-
- // these fail in older Qt versions, but pass now due to proper normalizing
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(const Template<const Class &> &))));
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(const Template<Class const &> &))));
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
-
- // these also fail in older Qt versions, but pass now due to proper normalizing
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(const Template<const Class &> &))));
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(const Template<Class const &> &))));
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
- SLOT(constTypeRefSlot(Template<Class const &> const &))));
-
- // this fails in older versions, but passes now due to proper normalizing
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(const Template<const Class &> &))));
- // this fails in older versions, but passes now due to proper normalizing
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(const Template<Class const &> &))));
- // this fails in older versions, but passes now due to proper normalizing
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
- QVERIFY(oldobject.connect(&oldobject,
- SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
- SLOT(typeConstRefSlot(Template<Class const &> const &))));
-
- QVERIFY(object.connect(&object,
- SIGNAL(typePointerConstRefSignal(Class*const&)),
- SLOT(typePointerConstRefSlot(Class*const&))));
- QVERIFY(object.connect(&object,
- SIGNAL(typePointerConstRefSignal(Class*const&)),
- SLOT(typePointerConstRefSlot(Class*))));
- QVERIFY(object.connect(&object,
- SIGNAL(typePointerConstRefSignal(Class*)),
- SLOT(typePointerConstRefSlot(Class*const&))));
- QVERIFY(object.connect(&object,
- SIGNAL(typePointerConstRefSignal(Class*)),
- SLOT(typePointerConstRefSlot(Class*))));
-
- QVERIFY( connect(&object, SIGNAL(constTemplateSignal1(Template <int>)),
- &object , SLOT(constTemplateSlot1 (Template<int > ) ) ));
- QVERIFY( connect(&object, SIGNAL(constTemplateSignal1(Template <int>)),
- &object , SLOT(constTemplateSlot2 (Template<int > ) ) ));
- QVERIFY( connect(&object, SIGNAL(constTemplateSignal2(Template <const int>)),
- &object , SLOT(constTemplateSlot3(Template<int const > ) ) ));
-
- //type does not match
- QTest::ignoreMessage(QtWarningMsg, "QObject::connect: Incompatible sender/receiver arguments\n"
- " NormalizeObject::constTemplateSignal1(Template<int>) --> NormalizeObject::constTemplateSlot3(Template<const int>)");
- QVERIFY(!connect(&object, SIGNAL(constTemplateSignal1(Template <int>)),
- &object , SLOT(constTemplateSlot3(Template<int const> ) ) ));
-}
-
-class SiblingDeleter : public QObject
-{
-public:
- inline SiblingDeleter(QObject *sibling, QObject *parent)
- : QObject(parent), sibling(sibling) {}
- inline virtual ~SiblingDeleter() { delete sibling; }
-
-private:
- QPointer<QObject> sibling;
-};
-
-
-void tst_QObject::childDeletesItsSibling()
-{
- QObject *commonParent = new QObject(0);
- QPointer<QObject> child = new QObject(0);
- QPointer<QObject> siblingDeleter = new SiblingDeleter(child, commonParent);
- child->setParent(commonParent);
- delete commonParent; // don't crash
- QVERIFY(!child);
- QVERIFY(!siblingDeleter);
-}
-
-void tst_QObject::floatProperty()
-{
- PropertyObject obj;
- const int idx = obj.metaObject()->indexOfProperty("myFloat");
- QVERIFY(idx > 0);
- QMetaProperty prop = obj.metaObject()->property(idx);
- QVERIFY(prop.isValid());
- QVERIFY(prop.type() == uint(QMetaType::type("float")));
- QVERIFY(!prop.write(&obj, QVariant("Hello")));
- QVERIFY(prop.write(&obj, qVariantFromValue(128.0f)));
- QVariant v = prop.read(&obj);
- QVERIFY(int(v.userType()) == QMetaType::Float);
- QVERIFY(qVariantValue<float>(v) == 128.0f);
-}
-
-void tst_QObject::qrealProperty()
-{
- PropertyObject obj;
- const int idx = obj.metaObject()->indexOfProperty("myQReal");
- QVERIFY(idx > 0);
- QMetaProperty prop = obj.metaObject()->property(idx);
- QVERIFY(prop.isValid());
- QVERIFY(prop.type() == uint(QMetaType::type("qreal")));
- QVERIFY(!prop.write(&obj, QVariant("Hello")));
-
- QVERIFY(prop.write(&obj, qVariantFromValue(128.0f)));
- QVariant v = prop.read(&obj);
- QCOMPARE(v.userType(), qMetaTypeId<qreal>());
- QVERIFY(qVariantValue<qreal>(v) == 128.0);
-
- QVERIFY(prop.write(&obj, qVariantFromValue(double(127))));
- v = prop.read(&obj);
- QCOMPARE(v.userType(), qMetaTypeId<qreal>());
- QVERIFY(qVariantValue<qreal>(v) == 127.0);
-}
-
-class DynamicPropertyObject : public PropertyObject
-{
-public:
- inline DynamicPropertyObject() {}
-
- inline virtual bool event(QEvent *e) {
- if (e->type() == QEvent::DynamicPropertyChange) {
- changedDynamicProperties.append(static_cast<QDynamicPropertyChangeEvent *>(e)->propertyName());
- }
- return QObject::event(e);
- }
-
- QList<QByteArray> changedDynamicProperties;
-};
-
-void tst_QObject::dynamicProperties()
-{
- DynamicPropertyObject obj;
-
- QVERIFY(obj.dynamicPropertyNames().isEmpty());
-
- QVERIFY(obj.setProperty("number", 42));
- QVERIFY(obj.changedDynamicProperties.isEmpty());
- QCOMPARE(obj.property("number").toInt(), 42);
-
- QVERIFY(!obj.setProperty("number", "invalid string"));
- QVERIFY(obj.changedDynamicProperties.isEmpty());
-
- QVERIFY(!obj.setProperty("myuserproperty", "Hello"));
- QCOMPARE(obj.changedDynamicProperties.count(), 1);
- QCOMPARE(obj.changedDynamicProperties.first(), QByteArray("myuserproperty"));
- obj.changedDynamicProperties.clear();
-
- QCOMPARE(obj.property("myuserproperty").toString(), QString("Hello"));
-
- QCOMPARE(obj.dynamicPropertyNames().count(), 1);
- QCOMPARE(obj.dynamicPropertyNames().first(), QByteArray("myuserproperty"));
-
- QVERIFY(!obj.setProperty("myuserproperty", QVariant()));
-
- QCOMPARE(obj.changedDynamicProperties.count(), 1);
- QCOMPARE(obj.changedDynamicProperties.first(), QByteArray("myuserproperty"));
- obj.changedDynamicProperties.clear();
-
- QVERIFY(obj.property("myuserproperty").isNull());
-
- QVERIFY(obj.dynamicPropertyNames().isEmpty());
-}
-
-void tst_QObject::recursiveSignalEmission()
-{
-#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
- QSKIP("Emulator builds in Symbian do not support launching processes linking to Qt", SkipAll);
-#elif defined(QT_NO_PROCESS)
- QSKIP("Test requires QProcess", SkipAll);
-#else
- QProcess proc;
- proc.start("./signalbug");
- QVERIFY(proc.waitForFinished());
- QVERIFY(proc.exitStatus() == QProcess::NormalExit);
- QCOMPARE(proc.exitCode(), 0);
-#endif
-}
-
-void tst_QObject::blockingQueuedConnection()
-{
- {
- SenderObject sender;
-
- MoveToThreadThread thread;
- ReceiverObject receiver;
- receiver.moveToThread(&thread);
- thread.start();
-
- receiver.connect(&sender, SIGNAL(signal1()), SLOT(slot1()), Qt::BlockingQueuedConnection);
- sender.emitSignal1();
- QVERIFY(receiver.called(1));
-
- receiver.reset();
- QVERIFY(QMetaObject::invokeMethod(&receiver, "slot1", Qt::BlockingQueuedConnection));
- QVERIFY(receiver.called(1));
-
- thread.quit();
- QVERIFY(thread.wait());
- }
-}
-
-class EventSpy : public QObject
-{
- Q_OBJECT
-
-public:
- typedef QList<QPair<QObject *, QEvent::Type> > EventList;
-
- EventSpy(QObject *parent = 0)
- : QObject(parent)
- { }
-
- EventList eventList()
- {
- return events;
- }
-
- void clear()
- {
- events.clear();
- }
-
- bool eventFilter(QObject *object, QEvent *event)
- {
- events.append(qMakePair(object, event->type()));
- return false;
- }
-
-private:
- EventList events;
-};
-
-void tst_QObject::compatibilityChildInsertedEvents()
-{
- EventSpy::EventList expected;
-
- {
- // no children created, so we expect no events
- QObject object;
- EventSpy spy;
- object.installEventFilter(&spy);
-
- QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 1)));
-
- QCoreApplication::processEvents();
-
- expected =
- EventSpy::EventList()
- << qMakePair(&object, QEvent::Type(QEvent::User + 1));
- QCOMPARE(spy.eventList(), expected);
- }
-
- {
- // 2 children, so we expect 2 ChildAdded and 2 ChildInserted events
- QObject object;
- EventSpy spy;
- object.installEventFilter(&spy);
-
- QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 1)));
-
- QObject child1(&object);
- QObject child2;
- child2.setParent(&object);
-
- QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 2)));
-
- expected =
- EventSpy::EventList()
- << qMakePair(&object, QEvent::ChildAdded)
- << qMakePair(&object, QEvent::ChildAdded);
- QCOMPARE(spy.eventList(), expected);
- spy.clear();
-
- QCoreApplication::processEvents();
-
- expected =
- EventSpy::EventList()
- << qMakePair(&object, QEvent::Type(QEvent::User + 1))
- << qMakePair(&object, QEvent::Type(QEvent::User + 2));
- QCOMPARE(spy.eventList(), expected);
- }
-
- {
- // 2 children, but one is reparented away, so we expect:
- // 2 ChildAdded, 1 ChildRemoved, and 1 ChildInserted
- QObject object;
- EventSpy spy;
- object.installEventFilter(&spy);
-
- QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 1)));
-
- QObject child1(&object);
- QObject child2;
- child2.setParent(&object);
- child2.setParent(0);
-
- QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 2)));
-
- expected =
- EventSpy::EventList()
- << qMakePair(&object, QEvent::ChildAdded)
- << qMakePair(&object, QEvent::ChildAdded)
- << qMakePair(&object, QEvent::ChildRemoved);
- QCOMPARE(spy.eventList(), expected);
- spy.clear();
-
- QCoreApplication::processEvents();
-
- expected =
- EventSpy::EventList()
- << qMakePair(&object, QEvent::Type(QEvent::User + 1))
- << qMakePair(&object, QEvent::Type(QEvent::User + 2));
- QCOMPARE(spy.eventList(), expected);
- }
-}
-
-void tst_QObject::installEventFilter()
-{
- QEvent event(QEvent::User);
- EventSpy::EventList expected;
-
- QObject object;
- EventSpy spy;
- object.installEventFilter(&spy);
-
- // nothing special, should just work
- QCoreApplication::sendEvent(&object, &event);
- expected =
- EventSpy::EventList()
- << qMakePair(&object, QEvent::User);
- QCOMPARE(spy.eventList(), expected);
- spy.clear();
-
- // moving the filter causes QCoreApplication to skip the filter
- spy.moveToThread(0);
- QTest::ignoreMessage(QtWarningMsg, "QCoreApplication: Object event filter cannot be in a different thread.");
- QCoreApplication::sendEvent(&object, &event);
- QVERIFY(spy.eventList().isEmpty());
-
- // move it back, and the filter works again
- spy.moveToThread(object.thread());
- QCoreApplication::sendEvent(&object, &event);
- expected =
- EventSpy::EventList()
- << qMakePair(&object, QEvent::User);
- QCOMPARE(spy.eventList(), expected);
- spy.clear();
-
- // cannot install an event filter that lives in a different thread
- object.removeEventFilter(&spy);
- spy.moveToThread(0);
- QTest::ignoreMessage(QtWarningMsg, "QObject::installEventFilter(): Cannot filter events for objects in a different thread.");
- object.installEventFilter(&spy);
- QCoreApplication::sendEvent(&object, &event);
- QVERIFY(spy.eventList().isEmpty());
-}
-
-class EmitThread : public QThread
-{ Q_OBJECT
-public:
- void run(void) {
- emit work();
- }
-signals:
- void work();
-};
-
-class DeleteObject : public QObject
-{
- Q_OBJECT
-
-public slots:
- void deleteSelf()
- {
- delete this;
- }
-
- void relaySignalAndProcessEvents()
- {
- emit relayedSignal();
- QCoreApplication::processEvents();
- }
-
-signals:
- void relayedSignal();
-};
-
-void tst_QObject::deleteSelfInSlot()
-{
- {
- SenderObject sender;
- DeleteObject *receiver = new DeleteObject();
- receiver->connect(&sender,
- SIGNAL(signal1()),
- SLOT(deleteSelf()),
- Qt::BlockingQueuedConnection);
-
- QThread thread;
- receiver->moveToThread(&thread);
- thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
- thread.start();
-
- QPointer<DeleteObject> p = receiver;
- sender.emitSignal1();
- QVERIFY(p.isNull());
-
- QVERIFY(thread.wait(10000));
- }
-
- {
- SenderObject sender;
- DeleteObject *receiver = new DeleteObject();
- receiver->connect(&sender,
- SIGNAL(signal1()),
- SLOT(relaySignalAndProcessEvents()),
- Qt::BlockingQueuedConnection);
- receiver->connect(receiver,
- SIGNAL(relayedSignal()),
- SLOT(deleteSelf()),
- Qt::QueuedConnection);
-
- QThread thread;
- receiver->moveToThread(&thread);
- thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
- thread.start();
-
- QPointer<DeleteObject> p = receiver;
- sender.emitSignal1();
- QVERIFY(p.isNull());
-
- QVERIFY(thread.wait(10000));
- }
-
- {
- EmitThread sender;
- DeleteObject *receiver = new DeleteObject();
- connect(&sender, SIGNAL(work()), receiver, SLOT(deleteSelf()), Qt::DirectConnection);
- QPointer<DeleteObject> p = receiver;
- sender.start();
- QVERIFY(sender.wait(10000));
- QVERIFY(p.isNull());
- }
-}
-
-class DisconnectObject : public QObject
-{
- Q_OBJECT
-
-public slots:
- void disconnectSelf()
- {
- disconnect(sender(), 0, this, 0);
- }
-
- void relaySignalAndProcessEvents()
- {
- emit relayedSignal();
- QCoreApplication::processEvents();
- }
-
-signals:
- void relayedSignal();
-};
-
-void tst_QObject::disconnectSelfInSlotAndDeleteAfterEmit()
-{
- {
- SenderObject sender;
- DisconnectObject *receiver = new DisconnectObject();
- receiver->connect(&sender, SIGNAL(signal1()), SLOT(disconnectSelf()));
- sender.emitSignal1AfterRecursion();
- delete receiver;
- }
-
- {
- SenderObject sender;
- DisconnectObject *receiver = new DisconnectObject();
- receiver->connect(&sender,
- SIGNAL(signal1()),
- SLOT(disconnectSelf()),
- Qt::BlockingQueuedConnection);
-
- QThread thread;
- receiver->moveToThread(&thread);
- thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
- thread.start();
-
- QPointer<DisconnectObject> p = receiver;
- sender.emitSignal1();
- QVERIFY(!p.isNull());
-
- receiver->deleteLater();
-
- QVERIFY(thread.wait(10000));
- QVERIFY(p.isNull());
- }
-
- {
- SenderObject sender;
- DisconnectObject *receiver = new DisconnectObject();
- receiver->connect(&sender,
- SIGNAL(signal1()),
- SLOT(relaySignalAndProcessEvents()),
- Qt::BlockingQueuedConnection);
- receiver->connect(receiver,
- SIGNAL(relayedSignal()),
- SLOT(disconnectSelf()),
- Qt::QueuedConnection);
-
- QThread thread;
- receiver->moveToThread(&thread);
- thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
- thread.start();
-
- QPointer<DisconnectObject> p = receiver;
- sender.emitSignal1();
- QVERIFY(!p.isNull());
-
- receiver->deleteLater();
-
- QVERIFY(thread.wait(10000));
- QVERIFY(p.isNull());
- }
-}
-
-void tst_QObject::dumpObjectInfo()
-{
- QObject a, b;
- QObject::connect(&a, SIGNAL(destroyed(QObject *)), &b, SLOT(deleteLater()));
- a.disconnect(&b);
- a.dumpObjectInfo(); // should not crash
-}
-
-class ConnectToSender : public QObject
-{ Q_OBJECT
- public slots:
- void uselessSlot() { count++; }
-
- void harmfullSlot() {
- //this used to crash
- connect(sender(), SIGNAL(signal4()), this, SLOT(uselessSlot()));
- //play a little bit with the memory in order to really get a segfault.
- connect(sender(), SIGNAL(signal1()), this, SLOT(uselessSlot()));
- QList<double>() << 45 << 78 << 65 << 121 << 45 << 78 << 12;
- }
- public:
- int count;
-};
-
-void tst_QObject::connectToSender()
-{
- SenderObject s;
- ConnectToSender r;
- r.count = 0;
- QObject::connect(&s, SIGNAL(signal1()), &r, SLOT(harmfullSlot()));
- QObject::connect(&s, SIGNAL(signal1()), &r, SLOT(uselessSlot()));
-
- s.emitSignal1();
-
- QCOMPARE(r.count, 1);
- s.emitSignal4();
- QCOMPARE(r.count, 2);
-}
-
-void tst_QObject::qobjectConstCast()
-{
- FooObject obj;
-
- QObject *ptr = &obj;
- const QObject *cptr = &obj;
-
- QVERIFY(qobject_cast<FooObject *>(ptr));
- QVERIFY(qobject_cast<const FooObject *>(cptr));
-}
-
-void tst_QObject::uniqConnection()
-{
- SenderObject *s = new SenderObject;
- ReceiverObject *r1 = new ReceiverObject;
- ReceiverObject *r2 = new ReceiverObject;
- r1->reset();
- r2->reset();
- ReceiverObject::sequence = 0;
-
- QVERIFY( connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) , Qt::UniqueConnection) );
- QVERIFY( connect( s, SIGNAL( signal1() ), r2, SLOT( slot1() ) , Qt::UniqueConnection) );
- QVERIFY( connect( s, SIGNAL( signal1() ), r1, SLOT( slot3() ) , Qt::UniqueConnection) );
- QVERIFY( connect( s, SIGNAL( signal3() ), r1, SLOT( slot3() ) , Qt::UniqueConnection) );
-
- s->emitSignal1();
- s->emitSignal2();
- s->emitSignal3();
- s->emitSignal4();
-
- QCOMPARE( r1->count_slot1, 1 );
- QCOMPARE( r1->count_slot2, 0 );
- QCOMPARE( r1->count_slot3, 2 );
- QCOMPARE( r1->count_slot4, 0 );
- QCOMPARE( r2->count_slot1, 1 );
- QCOMPARE( r2->count_slot2, 0 );
- QCOMPARE( r2->count_slot3, 0 );
- QCOMPARE( r2->count_slot4, 0 );
- QCOMPARE( r1->sequence_slot1, 1 );
- QCOMPARE( r2->sequence_slot1, 2 );
- QCOMPARE( r1->sequence_slot3, 4 );
-
- r1->reset();
- r2->reset();
- ReceiverObject::sequence = 0;
-
- QVERIFY( connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) , Qt::UniqueConnection) );
- QVERIFY( connect( s, SIGNAL( signal4() ), r2, SLOT( slot4() ) , Qt::UniqueConnection) );
- QVERIFY(!connect( s, SIGNAL( signal4() ), r2, SLOT( slot4() ) , Qt::UniqueConnection) );
- QVERIFY( connect( s, SIGNAL( signal1() ), r2, SLOT( slot4() ) , Qt::UniqueConnection) );
- QVERIFY(!connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) , Qt::UniqueConnection) );
-
- s->emitSignal4();
- QCOMPARE( r1->count_slot4, 1 );
- QCOMPARE( r2->count_slot4, 1 );
- QCOMPARE( r1->sequence_slot4, 1 );
- QCOMPARE( r2->sequence_slot4, 2 );
-
- r1->reset();
- r2->reset();
- ReceiverObject::sequence = 0;
-
- connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) );
-
- s->emitSignal4();
- QCOMPARE( r1->count_slot4, 2 );
- QCOMPARE( r2->count_slot4, 1 );
- QCOMPARE( r1->sequence_slot4, 3 );
- QCOMPARE( r2->sequence_slot4, 2 );
-
- delete s;
- delete r1;
- delete r2;
-}
-
-void tst_QObject::interfaceIid()
-{
- QCOMPARE(QByteArray(qobject_interface_iid<Foo::Bleh *>()),
- QByteArray(Bleh_iid));
- QCOMPARE(QByteArray(qobject_interface_iid<Foo::Bar *>()),
- QByteArray("com.qtest.foobar"));
- QCOMPARE(QByteArray(qobject_interface_iid<FooObject *>()),
- QByteArray());
-}
-
-void tst_QObject::deleteQObjectWhenDeletingEvent()
-{
- //this is related to task 259514
- //before the fix this used to dead lock when the QObject from the event was destroyed
-
- struct MyEvent : public QEvent
- {
- MyEvent() : QEvent(QEvent::User) { }
- QObject obj;
- };
-
- QObject o;
- QApplication::postEvent(&o, new MyEvent);
- QCoreApplication::removePostedEvents(&o); // here you would get a deadlock
-}
-
-class OverloadObject : public QObject
-{
- friend class tst_QObject;
- Q_OBJECT
- signals:
- void sig(int i, char c, qreal m = 12);
- void sig(int i, int j = 12);
- void sig(QObject *o, QObject *p, QObject *q = 0, QObject *r = 0) const;
- void other(int a = 0);
- void sig(QObject *o, OverloadObject *p = 0, QObject *q = 0, QObject *r = 0);
- void sig(double r = 0.5);
- public slots:
- void slo(int i, int j = 43)
- {
- s_num += 1;
- i1_num = i;
- i2_num = j;
- }
- void slo(QObject *o, QObject *p = qApp, QObject *q = qApp, QObject *r = qApp)
- {
- s_num += 10;
- o1_obj = o;
- o2_obj = p;
- o3_obj = q;
- o4_obj = r;
- }
- void slo()
- {
- s_num += 100;
- }
-
- public:
- int s_num;
- int i1_num;
- int i2_num;
- QObject *o1_obj;
- QObject *o2_obj;
- QObject *o3_obj;
- QObject *o4_obj;
-};
-
-void tst_QObject::overloads()
-{
- OverloadObject obj1;
- OverloadObject obj2;
- QObject obj3;
- obj1.s_num = 0;
- obj2.s_num = 0;
-
- connect (&obj1, SIGNAL(sig(int)) , &obj1, SLOT(slo(int)));
- connect (&obj1, SIGNAL(sig(QObject *, QObject *, QObject *)) , &obj1, SLOT(slo(QObject * , QObject *, QObject *)));
-
- connect (&obj1, SIGNAL(sig(QObject *, QObject *, QObject *, QObject *)) , &obj2, SLOT(slo(QObject * , QObject *, QObject *)));
- connect (&obj1, SIGNAL(sig(QObject *)) , &obj2, SLOT(slo()));
- connect (&obj1, SIGNAL(sig(int, int)) , &obj2, SLOT(slo(int, int)));
-
- emit obj1.sig(0.5); //connected to nothing
- emit obj1.sig(1, 'a'); //connected to nothing
- QCOMPARE(obj1.s_num, 0);
- QCOMPARE(obj2.s_num, 0);
-
- emit obj1.sig(1); //this signal is connected
- QCOMPARE(obj1.s_num, 1);
- QCOMPARE(obj1.i1_num, 1);
- QCOMPARE(obj1.i2_num, 43); //default argument of the slot
-
- QCOMPARE(obj2.s_num, 1);
- QCOMPARE(obj2.i1_num, 1);
- QCOMPARE(obj2.i2_num, 12); //default argument of the signal
-
-
- emit obj1.sig(&obj2); //this signal is conencted to obj2
- QCOMPARE(obj1.s_num, 1);
- QCOMPARE(obj2.s_num, 101);
- emit obj1.sig(&obj2, &obj3); //this signal is connected
- QCOMPARE(obj1.s_num, 11);
- QCOMPARE(obj1.o1_obj, (QObject *)&obj2);
- QCOMPARE(obj1.o2_obj, &obj3);
- QCOMPARE(obj1.o3_obj, (QObject *)0); //default arg of the signal
- QCOMPARE(obj1.o4_obj, (QObject *)qApp); //default arg of the slot
-
- QCOMPARE(obj2.s_num, 111);
- QCOMPARE(obj2.o1_obj, (QObject *)&obj2);
- QCOMPARE(obj2.o2_obj, &obj3);
- QCOMPARE(obj2.o3_obj, (QObject *)0); //default arg of the signal
- QCOMPARE(obj2.o4_obj, (QObject *)qApp); //default arg of the slot
-}
-
-class ManySignals : public QObject
-{ Q_OBJECT
- friend class tst_QObject;
-signals:
- void sig00(); void sig01(); void sig02(); void sig03(); void sig04();
- void sig05(); void sig06(); void sig07(); void sig08(); void sig09();
- void sig10(); void sig11(); void sig12(); void sig13(); void sig14();
- void sig15(); void sig16(); void sig17(); void sig18(); void sig19();
- void sig20(); void sig21(); void sig22(); void sig23(); void sig24();
- void sig25(); void sig26(); void sig27(); void sig28(); void sig29();
- void sig30(); void sig31(); void sig32(); void sig33(); void sig34();
- void sig35(); void sig36(); void sig37(); void sig38(); void sig39();
- void sig40(); void sig41(); void sig42(); void sig43(); void sig44();
- void sig45(); void sig46(); void sig47(); void sig48(); void sig49();
- void sig50(); void sig51(); void sig52(); void sig53(); void sig54();
- void sig55(); void sig56(); void sig57(); void sig58(); void sig59();
- void sig60(); void sig61(); void sig62(); void sig63(); void sig64();
- void sig65(); void sig66(); void sig67(); void sig68(); void sig69();
-
-public slots:
- void received() { rec++; }
-public:
- int rec;
-};
-
-
-void tst_QObject::isSignalConnected()
-{
- ManySignals o;
- o.rec = 0;
-#ifdef QT_BUILD_INTERNAL
- QObjectPrivate *priv = QObjectPrivate::get(&o);
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("destroyed()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig00()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig05()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig15()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig29()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig60()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig61()")));
-#endif
-
- QObject::connect(&o, SIGNAL(sig00()), &o, SIGNAL(sig69()));
- QObject::connect(&o, SIGNAL(sig34()), &o, SIGNAL(sig03()));
- QObject::connect(&o, SIGNAL(sig69()), &o, SIGNAL(sig34()));
- QObject::connect(&o, SIGNAL(sig03()), &o, SIGNAL(sig18()));
-
-#ifdef QT_BUILD_INTERNAL
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("destroyed()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig05()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig15()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig29()")));
-
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig00()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig03()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig34()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig69()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig18()")));
-#endif
-
- QObject::connect(&o, SIGNAL(sig18()), &o, SIGNAL(sig29()));
- QObject::connect(&o, SIGNAL(sig29()), &o, SIGNAL(sig62()));
- QObject::connect(&o, SIGNAL(sig62()), &o, SIGNAL(sig28()));
- QObject::connect(&o, SIGNAL(sig28()), &o, SIGNAL(sig27()));
-
-#ifdef QT_BUILD_INTERNAL
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig18()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig62()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig28()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig69()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig27()")));
-#endif
-
- QCOMPARE(o.rec, 0);
- emit o.sig01();
- emit o.sig34();
- QCOMPARE(o.rec, 0);
-
- QObject::connect(&o, SIGNAL(sig27()), &o, SLOT(received()));
-
-#ifdef QT_BUILD_INTERNAL
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig00()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig03()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig34()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig18()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig62()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig28()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig69()")));
- QVERIFY(priv->isSignalConnected(priv->signalIndex("sig27()")));
-
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig04()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig21()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig25()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig55()")));
- QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig61()")));
-#endif
-
- emit o.sig00();
- QCOMPARE(o.rec, 1);
- emit o.sig69();
- QCOMPARE(o.rec, 2);
- emit o.sig36();
- QCOMPARE(o.rec, 2);
-}
-
-void tst_QObject::qMetaObjectConnect()
-{
- SenderObject *s = new SenderObject;
- ReceiverObject *r1 = new ReceiverObject;
- ReceiverObject *r2 = new ReceiverObject;
- r1->reset();
- r2->reset();
- ReceiverObject::sequence = 0;
-
- int signal1Index = s->metaObject()->indexOfSignal("signal1()");
- int signal3Index = s->metaObject()->indexOfSignal("signal3()");
- int slot1Index = r1->metaObject()->indexOfSlot("slot1()");
- int slot2Index = r1->metaObject()->indexOfSlot("slot2()");
- int slot3Index = r1->metaObject()->indexOfSlot("slot3()");
-
- QVERIFY(slot1Index > 0);
- QVERIFY(slot2Index > 0);
- QVERIFY(slot3Index > 0);
-
- QVERIFY( QMetaObject::connect( s, signal1Index, r1, slot1Index) );
- QVERIFY( QMetaObject::connect( s, signal3Index, r2, slot3Index) );
- QVERIFY( QMetaObject::connect( s, -1, r2, slot2Index) );
-
- QCOMPARE( r1->count_slot1, 0 );
- QCOMPARE( r1->count_slot2, 0 );
- QCOMPARE( r1->count_slot3, 0 );
- QCOMPARE( r2->count_slot1, 0 );
- QCOMPARE( r2->count_slot2, 0 );
- QCOMPARE( r2->count_slot3, 0 );
-
- s->emitSignal1();
-
- QCOMPARE( r1->count_slot1, 1 );
- QCOMPARE( r1->count_slot2, 0 );
- QCOMPARE( r1->count_slot3, 0 );
- QCOMPARE( r2->count_slot1, 0 );
- QCOMPARE( r2->count_slot2, 1 );
- QCOMPARE( r2->count_slot3, 0 );
-
- s->emitSignal2();
- s->emitSignal3();
- s->emitSignal4();
-
- QCOMPARE( r1->count_slot1, 1 );
- QCOMPARE( r1->count_slot2, 0 );
- QCOMPARE( r1->count_slot3, 0 );
- QCOMPARE( r2->count_slot1, 0 );
- QCOMPARE( r2->count_slot2, 4 );
- QCOMPARE( r2->count_slot3, 1 );
-
- QVERIFY( QMetaObject::disconnect( s, signal1Index, r1, slot1Index) );
- QVERIFY( QMetaObject::disconnect( s, signal3Index, r2, slot3Index) );
- QVERIFY( QMetaObject::disconnect( s, -1, r2, slot2Index) );
-
- s->emitSignal1();
- s->emitSignal2();
- s->emitSignal3();
- s->emitSignal4();
-
- QCOMPARE( r1->count_slot1, 1 );
- QCOMPARE( r1->count_slot2, 0 );
- QCOMPARE( r1->count_slot3, 0 );
- QCOMPARE( r2->count_slot1, 0 );
- QCOMPARE( r2->count_slot2, 4 );
- QCOMPARE( r2->count_slot3, 1 );
-
- //some "dynamic" signal
- QVERIFY( QMetaObject::connect( s, s->metaObject()->methodOffset() + 20, r1, slot3Index) );
- QVERIFY( QMetaObject::connect( s, s->metaObject()->methodOffset() + 35, r2, slot1Index) );
- QVERIFY( QMetaObject::connect( s, -1, r1, slot2Index) );
-
- r1->reset();
- r2->reset();
-
- void *args[] = { 0 , 0 };
- QMetaObject::activate(s, s->metaObject()->methodOffset() + 20, args);
- QMetaObject::activate(s, s->metaObject()->methodOffset() + 48, args);
- QCOMPARE( r1->count_slot1, 0 );
- QCOMPARE( r1->count_slot2, 2 );
- QCOMPARE( r1->count_slot3, 1 );
- QCOMPARE( r2->count_slot1, 0 );
- QCOMPARE( r2->count_slot2, 0 );
- QCOMPARE( r2->count_slot3, 0 );
-
- QMetaObject::activate(s, s->metaObject()->methodOffset() + 35, args);
- s->emitSignal1();
- s->emitSignal2();
-
- QCOMPARE( r1->count_slot1, 0 );
- QCOMPARE( r1->count_slot2, 5 );
- QCOMPARE( r1->count_slot3, 1 );
- QCOMPARE( r2->count_slot1, 1 );
- QCOMPARE( r2->count_slot2, 0 );
- QCOMPARE( r2->count_slot3, 0 );
-
- delete s;
- r1->reset();
- r2->reset();
-
-#define SIGNAL_INDEX(S) obj1.metaObject()->indexOfSignal(QMetaObject::normalizedSignature(#S))
- OverloadObject obj1;
- QObject obj2, obj3;
-
- QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(int)) , r1, slot1Index);
- QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(QObject *, QObject *, QObject *)) , r2, slot1Index);
-
- QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(QObject *, QObject *, QObject *, QObject *)) , r1, slot2Index);
- QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(QObject *)) , r2, slot2Index);
- QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(int, int)) , r1, slot3Index);
-
- emit obj1.sig(0.5); //connected to nothing
- emit obj1.sig(1, 'a'); //connected to nothing
- QCOMPARE( r1->count_slot1, 0 );
- QCOMPARE( r1->count_slot2, 0 );
- QCOMPARE( r1->count_slot3, 0 );
- QCOMPARE( r2->count_slot1, 0 );
- QCOMPARE( r2->count_slot2, 0 );
- QCOMPARE( r2->count_slot3, 0 );
-
- emit obj1.sig(1); //this signal is connected
- emit obj1.sig(&obj2);
-
- QCOMPARE( r1->count_slot1, 1 );
- QCOMPARE( r1->count_slot2, 0 );
- QCOMPARE( r1->count_slot3, 1 );
- QCOMPARE( r2->count_slot1, 0 );
- QCOMPARE( r2->count_slot2, 1 );
- QCOMPARE( r2->count_slot3, 0 );
-
- emit obj1.sig(&obj2, &obj3); //this signal is connected
-
- QCOMPARE( r1->count_slot1, 1 );
- QCOMPARE( r1->count_slot2, 1 );
- QCOMPARE( r1->count_slot3, 1 );
- QCOMPARE( r2->count_slot1, 1 );
- QCOMPARE( r2->count_slot2, 1 );
- QCOMPARE( r2->count_slot3, 0 );
-
- delete r1;
- delete r2;
-
-}
-
-void tst_QObject::qMetaObjectDisconnectOne()
-{
- SenderObject *s = new SenderObject;
- ReceiverObject *r1 = new ReceiverObject;
-
- int signal1Index = s->metaObject()->indexOfSignal("signal1()");
- int signal3Index = s->metaObject()->indexOfSignal("signal3()");
- int slot1Index = r1->metaObject()->indexOfSlot("slot1()");
- int slot2Index = r1->metaObject()->indexOfSlot("slot2()");
-
- QVERIFY(signal1Index > 0);
- QVERIFY(signal3Index > 0);
- QVERIFY(slot1Index > 0);
- QVERIFY(slot2Index > 0);
-
- QVERIFY( QMetaObject::connect(s, signal1Index, r1, slot1Index) );
- QVERIFY( QMetaObject::connect(s, signal3Index, r1, slot2Index) );
- QVERIFY( QMetaObject::connect(s, signal3Index, r1, slot2Index) );
- QVERIFY( QMetaObject::connect(s, signal3Index, r1, slot2Index) );
-
- r1->reset();
- QCOMPARE( r1->count_slot1, 0 );
- QCOMPARE( r1->count_slot2, 0 );
-
- s->emitSignal1();
- QCOMPARE( r1->count_slot1, 1 );
- QCOMPARE( r1->count_slot2, 0 );
-
- s->emitSignal3();
- QCOMPARE( r1->count_slot1, 1 );
- QCOMPARE( r1->count_slot2, 3 );
-
- r1->reset();
- QVERIFY( QMetaObject::disconnectOne(s, signal1Index, r1, slot1Index) );
- QVERIFY( QMetaObject::disconnectOne(s, signal3Index, r1, slot2Index) );
-
- s->emitSignal1();
- QCOMPARE( r1->count_slot1, 0 );
- QCOMPARE( r1->count_slot2, 0 );
-
- s->emitSignal3();
- QCOMPARE( r1->count_slot1, 0 );
- QCOMPARE( r1->count_slot2, 2 );
-
- r1->reset();
- QVERIFY( false == QMetaObject::disconnectOne(s, signal1Index, r1, slot1Index) );
- QVERIFY( QMetaObject::disconnectOne(s, signal3Index, r1, slot2Index) );
-
- s->emitSignal1();
- QCOMPARE( r1->count_slot1, 0 );
- QCOMPARE( r1->count_slot2, 0 );
-
- s->emitSignal3();
- QCOMPARE( r1->count_slot1, 0 );
- QCOMPARE( r1->count_slot2, 1 );
-
- r1->reset();
- QVERIFY( false == QMetaObject::disconnectOne(s, signal1Index, r1, slot1Index) );
- QVERIFY( QMetaObject::disconnectOne(s, signal3Index, r1, slot2Index) );
-
- s->emitSignal1();
- QCOMPARE( r1->count_slot1, 0 );
- QCOMPARE( r1->count_slot2, 0 );
-
- s->emitSignal3();
- QCOMPARE( r1->count_slot1, 0 );
- QCOMPARE( r1->count_slot2, 0 );
-
- delete s;
- delete r1;
-}
-
-class ConfusingObject : public SenderObject
-{ Q_OBJECT
-public slots:
- void signal1() { s++; }
-signals:
- void aPublicSlot();
-public:
- int s;
- ConfusingObject() : s(0) {}
- friend class tst_QObject;
-};
-
-void tst_QObject::sameName()
-{
- ConfusingObject c1, c2;
- QVERIFY(connect(&c1, SIGNAL(signal1()), &c1, SLOT(signal1())));
- c1.emitSignal1();
- QCOMPARE(c1.s, 1);
-
- QVERIFY(connect(&c2, SIGNAL(signal1()), &c1, SIGNAL(signal1())));
- c2.emitSignal1();
- QCOMPARE(c1.s, 2);
-
- QVERIFY(connect(&c2, SIGNAL(aPublicSlot()), &c1, SLOT(signal1())));
- c2.aPublicSlot();
- QCOMPARE(c2.aPublicSlotCalled, 0);
- QCOMPARE(c1.aPublicSlotCalled, 0);
- QCOMPARE(c1.s, 3);
-
- QVERIFY(connect(&c2, SIGNAL(aPublicSlot()), &c1, SLOT(aPublicSlot())));
- c2.aPublicSlot();
- QCOMPARE(c2.aPublicSlotCalled, 0);
- QCOMPARE(c1.aPublicSlotCalled, 1);
- QCOMPARE(c1.s, 4);
-}
-
-void tst_QObject::connectByMetaMethods()
-{
- SenderObject s;
- ReceiverObject r;
- const QMetaObject *smeta = s.metaObject();
- const QMetaObject *rmeta = r.metaObject();
- int sigIndx = smeta->indexOfSignal(QMetaObject::normalizedSignature("signal1()"));
- int slotIndx = rmeta->indexOfSlot(QMetaObject::normalizedSignature("slot1()"));
- QVERIFY( sigIndx != -1 );
- QVERIFY( slotIndx != -1 );
- QMetaMethod signal = smeta->method(sigIndx);
- QMetaMethod slot = rmeta->method(slotIndx);
-
- QVERIFY(connect(&s,signal, &r,slot));
-
- QVERIFY(!r.called(1));
- s.emitSignal1();
- QVERIFY(r.called(1));
-}
-
-void tst_QObject::connectByMetaMethodSlotInsteadOfSignal()
-{
- SenderObject s;
- ReceiverObject r;
- const QMetaObject *smeta = s.metaObject();
- const QMetaObject *rmeta = r.metaObject();
- int badIndx = smeta->indexOfSlot(QMetaObject::normalizedSignature("aPublicSlot()"));
- int slotIndx = rmeta->indexOfSlot(QMetaObject::normalizedSignature("slot1()"));
- QVERIFY( badIndx != -1 );
- QVERIFY( slotIndx != -1 );
- QMetaMethod badMethod = smeta->method(badIndx);
- QMetaMethod slot = rmeta->method(slotIndx);
-
- QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect SenderObject::aPublicSlot() to ReceiverObject::slot1()");
- QVERIFY(!connect(&s,badMethod, &r,slot));
-}
-
-class Constructable: public QObject
-{
- Q_OBJECT
-
-public:
- Q_INVOKABLE Constructable(){}
-
-};
-
-void tst_QObject::connectConstructorByMetaMethod()
-{
- Constructable sc;
- Constructable rc;
- SenderObject s;
- ReceiverObject r;
-
- const QMetaObject cmeta = Constructable::staticMetaObject;
- const QMetaObject *smeta = s.metaObject();
- const QMetaObject *rmeta = r.metaObject();
- int constructorIndx = cmeta.indexOfConstructor(QMetaObject::normalizedSignature("Constructable()"));
- int sigIndx = smeta->indexOfSignal(QMetaObject::normalizedSignature("signal1()"));
- int slotIndx = rmeta->indexOfSlot(QMetaObject::normalizedSignature("slot1()"));
- QVERIFY( constructorIndx != -1 );
- QVERIFY( sigIndx != -1 );
- QVERIFY( slotIndx != -1 );
-
- QMetaMethod constructor = cmeta.constructor(constructorIndx);
- QMetaMethod signal = smeta->method(sigIndx);
- QMetaMethod slot = rmeta->method(slotIndx);
-
- QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect Constructable::Constructable() to ReceiverObject::slot1()");
- QVERIFY(!connect(&sc,constructor, &r,slot));
- QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect SenderObject::signal1() to Constructable::Constructable()");
- QVERIFY(!connect(&s,signal, &rc,constructor));
- QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect Constructable::Constructable() to Constructable::Constructable()");
- QVERIFY(!connect(&sc,constructor, &rc,constructor));
-}
-
-void tst_QObject::disconnectByMetaMethod()
-{
- SenderObject *s = new SenderObject;
- ReceiverObject *r1 = new ReceiverObject;
- ReceiverObject *r2 = new ReceiverObject;
-
- QMetaMethod signal1 = s->metaObject()->method(
- s->metaObject()->indexOfMethod("signal1()"));
- QMetaMethod signal2 = s->metaObject()->method(
- s->metaObject()->indexOfMethod("signal2()"));
- QMetaMethod signal3 = s->metaObject()->method(
- s->metaObject()->indexOfMethod("signal3()"));
- QMetaMethod signal4 = s->metaObject()->method(
- s->metaObject()->indexOfMethod("signal4()"));
-
- QMetaMethod slot1 = r1->metaObject()->method(
- r1->metaObject()->indexOfMethod("slot1()"));
- QMetaMethod slot2 = r1->metaObject()->method(
- r1->metaObject()->indexOfMethod("slot2()"));
- QMetaMethod slot3 = r1->metaObject()->method(
- r1->metaObject()->indexOfMethod("slot3()"));
- QMetaMethod slot4 = r1->metaObject()->method(
- r1->metaObject()->indexOfMethod("slot4()"));
-
- connect(s, signal1, r1, slot1);
-
- s->emitSignal1();
-
- QVERIFY(r1->called(1));
- r1->reset();
-
- // usual disconnect with all parameters given
- bool ret = QObject::disconnect(s, signal1, r1, slot1);
-
- s->emitSignal1();
-
- QVERIFY(!r1->called(1));
- r1->reset();
-
- QVERIFY(ret);
- ret = QObject::disconnect(s, signal1, r1, slot1);
- QVERIFY(!ret);
-
- r1->reset();
-
- connect( s, signal1, r1, slot1 );
- connect( s, signal1, r1, slot2 );
- connect( s, signal1, r1, slot3 );
- connect( s, signal2, r1, slot4 );
-
- // disconnect s's signal1() from all slots of r1
- QObject::disconnect(s, signal1, r1, QMetaMethod());
-
- s->emitSignal1();
- s->emitSignal2();
-
- QVERIFY(!r1->called(1));
- QVERIFY(!r1->called(2));
- QVERIFY(!r1->called(3));
- QVERIFY(r1->called(4));
- r1->reset();
- // make sure all is disconnected again
- QObject::disconnect(s, 0, r1, 0);
-
- connect(s, signal1, r1, slot1);
- connect(s, signal1, r2, slot1);
- connect(s, signal2, r1, slot2);
- connect(s, signal2, r2, slot2);
- connect(s, signal3, r1, slot3);
- connect(s, signal3, r2, slot3);
-
- // disconnect signal1() from all receivers
- QObject::disconnect(s, signal1, 0, QMetaMethod());
- s->emitSignal1();
- s->emitSignal2();
- s->emitSignal3();
-
- QVERIFY(!r1->called(1));
- QVERIFY(!r2->called(1));
- QVERIFY(r1->called(2));
- QVERIFY(r2->called(2));
- QVERIFY(r1->called(2));
- QVERIFY(r2->called(2));
-
- r1->reset();
- r2->reset();
-
- // disconnect all signals of s from all receivers
- QObject::disconnect( s, 0, 0, 0 );
-
- connect( s, signal1, r1, slot1 );
- connect( s, signal1, r2, slot1 );
-
- // disconnect all signals from slot1 of r1
- QObject::disconnect(s, QMetaMethod(), r1, slot1);
-
- s->emitSignal1();
-
- QVERIFY(!r1->called(1));
- QVERIFY(r2->called(1));
-
- delete r2;
- delete r1;
- delete s;
-}
-
-void tst_QObject::disconnectNotSignalMetaMethod()
-{
- SenderObject s;
- ReceiverObject r;
-
- connect(&s, SIGNAL(signal1()), &r, SLOT(slot1()));
-
- QMetaMethod slot = s.metaObject()->method(
- s.metaObject()->indexOfMethod("aPublicSlot()"));
-
- QTest::ignoreMessage(QtWarningMsg,"Object::disconnect: Attempt to unbind non-signal SenderObject::aPublicSlot()");
- QVERIFY(!QObject::disconnect(&s, slot, &r, QMetaMethod()));
-}
-
-class ThreadAffinityThread : public QThread
-{
-public:
- SenderObject *sender;
-
- ThreadAffinityThread(SenderObject *sender)
- : sender(sender)
- { }
- void run()
- {
- sender->emitSignal1();
- }
-};
-
-void tst_QObject::autoConnectionBehavior()
-{
- SenderObject *sender = new SenderObject;
- ReceiverObject *receiver = new ReceiverObject;
- connect(sender, SIGNAL(signal1()), receiver, SLOT(slot1()));
-
- // at emit, currentThread == sender->thread(), currentThread == receiver->thread(), sender->thread() == receiver->thread()
- QVERIFY(!receiver->called(1));
- sender->emitSignal1();
- QVERIFY(receiver->called(1));
- receiver->reset();
-
- // at emit, currentThread != sender->thread(), currentThread != receiver->thread(), sender->thread() == receiver->thread()
- ThreadAffinityThread emitThread1(sender);
- QVERIFY(!receiver->called(1));
- emitThread1.start();
- QVERIFY(emitThread1.wait(30000));
- QVERIFY(!receiver->called(1));
- QCoreApplication::sendPostedEvents(receiver, QEvent::MetaCall);
- QVERIFY(receiver->called(1));
- receiver->reset();
-
- // at emit, currentThread == sender->thread(), currentThread != receiver->thread(), sender->thread() != receiver->thread()
- sender->moveToThread(&emitThread1);
- QVERIFY(!receiver->called(1));
- emitThread1.start();
- QVERIFY(emitThread1.wait(30000));
- QVERIFY(!receiver->called(1));
- QCoreApplication::sendPostedEvents(receiver, QEvent::MetaCall);
- QVERIFY(receiver->called(1));
- receiver->reset();
-
- // at emit, currentThread != sender->thread(), currentThread == receiver->thread(), sender->thread() != receiver->thread()
- QVERIFY(!receiver->called(1));
- sender->emitSignal1();
- QVERIFY(receiver->called(1));
- receiver->reset();
-
- // at emit, currentThread != sender->thread(), currentThread != receiver->thread(), sender->thread() != receiver->thread()
- ThreadAffinityThread emitThread2(sender);
- QThread receiverThread;
- QTimer *timer = new QTimer;
- timer->setSingleShot(true);
- timer->setInterval(100);
- connect(&receiverThread, SIGNAL(started()), timer, SLOT(start()));
- connect(timer, SIGNAL(timeout()), &receiverThread, SLOT(quit()), Qt::DirectConnection);
- connect(&receiverThread, SIGNAL(finished()), timer, SLOT(deleteLater()));
- timer->moveToThread(&receiverThread);
-
- receiver->moveToThread(&receiverThread);
- QVERIFY(!receiver->called(1));
- emitThread2.start();
- QVERIFY(emitThread2.wait(30000));
- QVERIFY(!receiver->called(1));
- receiverThread.start();
- QVERIFY(receiverThread.wait(30000));
- QVERIFY(receiver->called(1));
- receiver->reset();
-
- delete sender;
- delete receiver;
-}
-
-class BaseDestroyed : public QObject
-{ Q_OBJECT
- QList<QString> fooList;
- bool destroyed;
-public:
- BaseDestroyed() : destroyed(false)
- { fooList << "a" << "b"; }
- ~BaseDestroyed()
- {
- QVERIFY(!destroyed);
- destroyed = true;
- }
-
-public slots:
- void slotUseList()
- {
- QVERIFY(!destroyed);
- fooList << "c" << "d";
- }
-};
-
-void tst_QObject::baseDestroyed()
-{
- BaseDestroyed d;
- connect(&d, SIGNAL(destroyed()), &d, SLOT(slotUseList()));
- //When d goes out of scope, slotUseList should not be called as the BaseDestroyed has
- // already been destroyed while ~QObject emit destroyed
-}
-
-QTEST_MAIN(tst_QObject)
-#include "tst_qobject.moc"
diff --git a/tests/auto/qopengl/qopengl.pro b/tests/auto/qopengl/qopengl.pro
new file mode 100644
index 0000000000..b049518f7a
--- /dev/null
+++ b/tests/auto/qopengl/qopengl.pro
@@ -0,0 +1,10 @@
+############################################################
+# Project file for autotest for gui/opengl functionality
+############################################################
+
+load(qttest_p4)
+QT += gui gui-private core-private
+
+SOURCES += tst_qopengl.cpp
+
+CONFIG += insignificant_test
diff --git a/tests/auto/qopengl/tst_qopengl.cpp b/tests/auto/qopengl/tst_qopengl.cpp
new file mode 100644
index 0000000000..577fbafe4a
--- /dev/null
+++ b/tests/auto/qopengl/tst_qopengl.cpp
@@ -0,0 +1,437 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtGui/private/qopenglcontext_p.h>
+#include <QtGui/QWindow>
+
+#include <QtTest/QtTest>
+
+class tst_QOpenGL : public QObject
+{
+Q_OBJECT
+
+private slots:
+ void sharedResourceCleanup();
+ void fboSimpleRendering();
+ void fboRendering();
+ void fboHandleNulledAfterContextDestroyed();
+ void openGLPaintDevice();
+};
+
+struct SharedResourceTracker
+{
+ SharedResourceTracker()
+ {
+ reset();
+ }
+
+ void reset()
+ {
+ invalidateResourceCalls = 0;
+ freeResourceCalls = 0;
+ destructorCalls = 0;
+ }
+
+ int invalidateResourceCalls;
+ int freeResourceCalls;
+ int destructorCalls;
+};
+
+struct SharedResource : public QOpenGLSharedResource
+{
+ SharedResource(SharedResourceTracker *t)
+ : QOpenGLSharedResource(QOpenGLContextGroup::currentContextGroup())
+ , resource(1)
+ , tracker(t)
+ {
+ }
+
+ ~SharedResource()
+ {
+ tracker->destructorCalls++;
+ }
+
+ void invalidateResource()
+ {
+ resource = 0;
+ tracker->invalidateResourceCalls++;
+ }
+
+ void freeResource(QOpenGLContext *context)
+ {
+ Q_ASSERT(context == QOpenGLContext::currentContext());
+ resource = 0;
+ tracker->freeResourceCalls++;
+ }
+
+ int resource;
+ SharedResourceTracker *tracker;
+};
+
+void tst_QOpenGL::sharedResourceCleanup()
+{
+ QWindow window;
+ window.setGeometry(0, 0, 10, 10);
+ window.create();
+
+ QOpenGLContext *ctx = new QOpenGLContext;
+ ctx->create();
+ ctx->makeCurrent(&window);
+
+ SharedResourceTracker tracker;
+ SharedResource *resource = new SharedResource(&tracker);
+ resource->free();
+
+ QCOMPARE(tracker.invalidateResourceCalls, 0);
+ QCOMPARE(tracker.freeResourceCalls, 1);
+ QCOMPARE(tracker.destructorCalls, 1);
+
+ tracker.reset();
+
+ resource = new SharedResource(&tracker);
+
+ QOpenGLContext *ctx2 = new QOpenGLContext;
+ ctx2->setShareContext(ctx);
+ ctx2->create();
+ delete ctx;
+
+ resource->free();
+
+ // no current context, freeResource() delayed
+ QCOMPARE(tracker.invalidateResourceCalls, 0);
+ QCOMPARE(tracker.freeResourceCalls, 0);
+ QCOMPARE(tracker.destructorCalls, 0);
+
+ ctx2->makeCurrent(&window);
+
+ // freeResource() should now have been called
+ QCOMPARE(tracker.invalidateResourceCalls, 0);
+ QCOMPARE(tracker.freeResourceCalls, 1);
+ QCOMPARE(tracker.destructorCalls, 1);
+
+ tracker.reset();
+
+ resource = new SharedResource(&tracker);
+
+ // this should cause invalidateResource() to be called
+ delete ctx2;
+
+ QCOMPARE(tracker.invalidateResourceCalls, 1);
+ QCOMPARE(tracker.freeResourceCalls, 0);
+ QCOMPARE(tracker.destructorCalls, 0);
+
+ // should have no effect other than destroying the resource,
+ // as it has already been invalidated
+ resource->free();
+
+ QCOMPARE(tracker.invalidateResourceCalls, 1);
+ QCOMPARE(tracker.freeResourceCalls, 0);
+ QCOMPARE(tracker.destructorCalls, 1);
+}
+
+static bool fuzzyComparePixels(const QRgb testPixel, const QRgb refPixel, const char* file, int line, int x = -1, int y = -1)
+{
+ static int maxFuzz = 1;
+ static bool maxFuzzSet = false;
+
+ // On 16 bpp systems, we need to allow for more fuzz:
+ if (!maxFuzzSet) {
+ maxFuzzSet = true;
+ if (QGuiApplication::primaryScreen()->depth() < 24)
+ maxFuzz = 32;
+ }
+
+ int redFuzz = qAbs(qRed(testPixel) - qRed(refPixel));
+ int greenFuzz = qAbs(qGreen(testPixel) - qGreen(refPixel));
+ int blueFuzz = qAbs(qBlue(testPixel) - qBlue(refPixel));
+ int alphaFuzz = qAbs(qAlpha(testPixel) - qAlpha(refPixel));
+
+ if (refPixel != 0 && testPixel == 0) {
+ QString msg;
+ if (x >= 0) {
+ msg = QString("Test pixel [%1, %2] is null (black) when it should be (%3,%4,%5,%6)")
+ .arg(x).arg(y)
+ .arg(qRed(refPixel)).arg(qGreen(refPixel)).arg(qBlue(refPixel)).arg(qAlpha(refPixel));
+ } else {
+ msg = QString("Test pixel is null (black) when it should be (%2,%3,%4,%5)")
+ .arg(qRed(refPixel)).arg(qGreen(refPixel)).arg(qBlue(refPixel)).arg(qAlpha(refPixel));
+ }
+
+ QTest::qFail(msg.toLatin1(), file, line);
+ return false;
+ }
+
+ if (redFuzz > maxFuzz || greenFuzz > maxFuzz || blueFuzz > maxFuzz || alphaFuzz > maxFuzz) {
+ QString msg;
+
+ if (x >= 0)
+ msg = QString("Pixel [%1,%2]: ").arg(x).arg(y);
+ else
+ msg = QString("Pixel ");
+
+ msg += QString("Max fuzz (%1) exceeded: (%2,%3,%4,%5) vs (%6,%7,%8,%9)")
+ .arg(maxFuzz)
+ .arg(qRed(testPixel)).arg(qGreen(testPixel)).arg(qBlue(testPixel)).arg(qAlpha(testPixel))
+ .arg(qRed(refPixel)).arg(qGreen(refPixel)).arg(qBlue(refPixel)).arg(qAlpha(refPixel));
+ QTest::qFail(msg.toLatin1(), file, line);
+ return false;
+ }
+ return true;
+}
+
+static void fuzzyCompareImages(const QImage &testImage, const QImage &referenceImage, const char* file, int line)
+{
+ QCOMPARE(testImage.width(), referenceImage.width());
+ QCOMPARE(testImage.height(), referenceImage.height());
+
+ for (int y = 0; y < testImage.height(); y++) {
+ for (int x = 0; x < testImage.width(); x++) {
+ if (!fuzzyComparePixels(testImage.pixel(x, y), referenceImage.pixel(x, y), file, line, x, y)) {
+ // Might as well save the images for easier debugging:
+ referenceImage.save("referenceImage.png");
+ testImage.save("testImage.png");
+ return;
+ }
+ }
+ }
+}
+
+#define QFUZZY_COMPARE_IMAGES(A,B) \
+ fuzzyCompareImages(A, B, __FILE__, __LINE__)
+
+#define QFUZZY_COMPARE_PIXELS(A,B) \
+ fuzzyComparePixels(A, B, __FILE__, __LINE__)
+
+void qt_opengl_draw_test_pattern(QPainter* painter, int width, int height)
+{
+ QPainterPath intersectingPath;
+ intersectingPath.moveTo(0, 0);
+ intersectingPath.lineTo(100, 0);
+ intersectingPath.lineTo(0, 100);
+ intersectingPath.lineTo(100, 100);
+ intersectingPath.closeSubpath();
+
+ QPainterPath trianglePath;
+ trianglePath.moveTo(50, 0);
+ trianglePath.lineTo(100, 100);
+ trianglePath.lineTo(0, 100);
+ trianglePath.closeSubpath();
+
+ painter->setTransform(QTransform()); // reset xform
+ painter->fillRect(-1, -1, width+2, height+2, Qt::red); // Background
+ painter->translate(14, 14);
+ painter->fillPath(intersectingPath, Qt::blue); // Test stencil buffer works
+ painter->translate(128, 0);
+ painter->setClipPath(trianglePath); // Test depth buffer works
+ painter->setTransform(QTransform()); // reset xform ready for fill
+ painter->fillRect(-1, -1, width+2, height+2, Qt::green);
+}
+
+void qt_opengl_check_test_pattern(const QImage& img)
+{
+ // As we're doing more than trivial painting, we can't just compare to
+ // an image rendered with raster. Instead, we sample at well-defined
+ // test-points:
+ QFUZZY_COMPARE_PIXELS(img.pixel(39, 64), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(89, 64), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(64, 39), QColor(Qt::blue).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(64, 89), QColor(Qt::blue).rgb());
+
+ QFUZZY_COMPARE_PIXELS(img.pixel(167, 39), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(217, 39), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(192, 64), QColor(Qt::green).rgb());
+}
+
+
+void tst_QOpenGL::fboSimpleRendering()
+{
+ QWindow window;
+ window.setGeometry(0, 0, 10, 10);
+ window.create();
+ QOpenGLContext ctx;
+ ctx.create();
+
+ ctx.makeCurrent(&window);
+
+ if (!QOpenGLFramebufferObject::hasOpenGLFramebufferObjects())
+ QSKIP("QOpenGLFramebufferObject not supported on this platform", SkipSingle);
+
+ // No multisample with combined depth/stencil attachment:
+ QOpenGLFramebufferObjectFormat fboFormat;
+ fboFormat.setAttachment(QOpenGLFramebufferObject::NoAttachment);
+
+ QOpenGLFramebufferObject *fbo = new QOpenGLFramebufferObject(200, 100, fboFormat);
+
+ fbo->bind();
+
+ glClearColor(1.0, 0.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glFinish();
+
+ QImage fb = fbo->toImage().convertToFormat(QImage::Format_RGB32);
+ QImage reference(fb.size(), QImage::Format_RGB32);
+ reference.fill(0xffff0000);
+
+ QFUZZY_COMPARE_IMAGES(fb, reference);
+
+ delete fbo;
+}
+
+// NOTE: This tests that CombinedDepthStencil attachment works by assuming the
+// GL2 engine is being used and is implemented the same way as it was when
+// this autotest was written. If this is not the case, there may be some
+// false-positives: I.e. The test passes when either the depth or stencil
+// buffer is actually missing. But that's probably ok anyway.
+void tst_QOpenGL::fboRendering()
+{
+ QWindow window;
+ window.setGeometry(0, 0, 10, 10);
+ window.create();
+ QOpenGLContext ctx;
+ ctx.create();
+
+ ctx.makeCurrent(&window);
+
+ if (!QOpenGLFramebufferObject::hasOpenGLFramebufferObjects())
+ QSKIP("QOpenGLFramebufferObject not supported on this platform", SkipSingle);
+
+ // No multisample with combined depth/stencil attachment:
+ QOpenGLFramebufferObjectFormat fboFormat;
+ fboFormat.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
+
+ // Uncomplicate things by using NPOT:
+ QOpenGLFramebufferObject fbo(256, 128, fboFormat);
+
+ if (fbo.attachment() != QOpenGLFramebufferObject::CombinedDepthStencil)
+ QSKIP("FBOs missing combined depth~stencil support", SkipSingle);
+
+ fbo.bind();
+
+ QPainter fboPainter;
+ QOpenGLPaintDevice device(fbo.width(), fbo.height());
+ bool painterBegun = fboPainter.begin(&device);
+ QVERIFY(painterBegun);
+
+ qt_opengl_draw_test_pattern(&fboPainter, fbo.width(), fbo.height());
+
+ fboPainter.end();
+
+ QImage fb = fbo.toImage().convertToFormat(QImage::Format_RGB32);
+
+ qt_opengl_check_test_pattern(fb);
+}
+
+void tst_QOpenGL::fboHandleNulledAfterContextDestroyed()
+{
+ QWindow window;
+ window.setGeometry(0, 0, 10, 10);
+ window.create();
+
+ QOpenGLFramebufferObject *fbo = 0;
+
+ {
+ QOpenGLContext ctx;
+ ctx.create();
+
+ ctx.makeCurrent(&window);
+
+ if (!QOpenGLFramebufferObject::hasOpenGLFramebufferObjects()) {
+ QSKIP("QOpenGLFramebufferObject not supported on this platform", SkipSingle);
+ }
+
+ fbo = new QOpenGLFramebufferObject(128, 128);
+
+ QVERIFY(fbo->handle() != 0);
+ }
+
+ QCOMPARE(fbo->handle(), 0U);
+}
+
+void tst_QOpenGL::openGLPaintDevice()
+{
+ QWindow window;
+ window.setGeometry(0, 0, 128, 128);
+ window.create();
+
+ QOpenGLContext ctx;
+ ctx.create();
+
+ ctx.makeCurrent(&window);
+
+ QImage image(128, 128, QImage::Format_RGB32);
+ QPainter p(&image);
+ p.fillRect(0, 0, image.width() / 2, image.height() / 2, Qt::red);
+ p.fillRect(image.width() / 2, 0, image.width() / 2, image.height() / 2, Qt::green);
+ p.fillRect(image.width() / 2, image.height() / 2, image.width() / 2, image.height() / 2, Qt::blue);
+ p.fillRect(0, image.height() / 2, image.width() / 2, image.height() / 2, Qt::white);
+ p.end();
+
+ QOpenGLFramebufferObject fbo(128, 128);
+ fbo.bind();
+
+ QOpenGLPaintDevice device(128, 128);
+ p.begin(&device);
+ p.fillRect(0, 0, image.width() / 2, image.height() / 2, Qt::red);
+ p.fillRect(image.width() / 2, 0, image.width() / 2, image.height() / 2, Qt::green);
+ p.fillRect(image.width() / 2, image.height() / 2, image.width() / 2, image.height() / 2, Qt::blue);
+ p.fillRect(0, image.height() / 2, image.width() / 2, image.height() / 2, Qt::white);
+ p.end();
+
+ QCOMPARE(image, fbo.toImage().convertToFormat(QImage::Format_RGB32));
+
+ p.begin(&device);
+ p.fillRect(0, 0, image.width(), image.height(), Qt::black);
+ p.drawImage(0, 0, image);
+ p.end();
+
+ QCOMPARE(image, fbo.toImage().convertToFormat(QImage::Format_RGB32));
+
+ p.begin(&device);
+ p.fillRect(0, 0, image.width(), image.height(), Qt::black);
+ p.fillRect(0, 0, image.width(), image.height(), QBrush(image));
+ p.end();
+
+ QCOMPARE(image, fbo.toImage().convertToFormat(QImage::Format_RGB32));
+}
+
+QTEST_MAIN(tst_QOpenGL)
+#include "tst_qopengl.moc"
diff --git a/tests/auto/qpainter/qpainter.pro b/tests/auto/qpainter/qpainter.pro
deleted file mode 100644
index f29e39afec..0000000000
--- a/tests/auto/qpainter/qpainter.pro
+++ /dev/null
@@ -1,20 +0,0 @@
-load(qttest_p4)
-
-QT += gui-private
-
-SOURCES += tst_qpainter.cpp
-wince*|symbian: {
- addFiles.files = drawEllipse drawLine_rop_bitmap drawPixmap_rop drawPixmap_rop_bitmap task217400.png
- addFiles.path = .
- DEPLOYMENT += addFiles
-}
-
-wince* {
- DEFINES += SRCDIR=\\\".\\\"
-} else:!symbian {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
-}
-
-
-mac*:CONFIG+=insignificant_test
-contains(QT_CONFIG,xcb):qpa:CONFIG+=insignificant_test # QTBUG-20756 crashes on qpa, xcb
diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp
deleted file mode 100644
index 8898a4874d..0000000000
--- a/tests/auto/qpainter/tst_qpainter.cpp
+++ /dev/null
@@ -1,4697 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include "../../shared/util.h"
-
-#include <qpainter.h>
-#include <qapplication.h>
-#include <qwidget.h>
-#include <qfontmetrics.h>
-#include <qbitmap.h>
-#include <qimage.h>
-#include <qthread.h>
-#include <limits.h>
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
-#include <qprinter.h>
-#include <math.h>
-#endif
-#include <qpaintengine.h>
-#include <qdesktopwidget.h>
-#include <qpixmap.h>
-
-#include <qpainter.h>
-
-#include <qlabel.h>
-
-#include <qqueue.h>
-
-#include <qgraphicsview.h>
-#include <qgraphicsscene.h>
-#include <qgraphicsproxywidget.h>
-#include <qlayout.h>
-#include <qfontdatabase.h>
-
-#if defined(Q_OS_SYMBIAN)
-# define SRCDIR "."
-#endif
-
-Q_DECLARE_METATYPE(QGradientStops)
-Q_DECLARE_METATYPE(QLine)
-Q_DECLARE_METATYPE(QRect)
-Q_DECLARE_METATYPE(QSize)
-Q_DECLARE_METATYPE(QPoint)
-Q_DECLARE_METATYPE(QPainterPath)
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QPainter : public QObject
-{
-Q_OBJECT
-
-public:
- tst_QPainter();
- virtual ~tst_QPainter();
-
-
-public slots:
- void init();
- void cleanup();
-private slots:
- void getSetCheck();
- void qt_format_text_clip();
- void qt_format_text_boundingRect();
- void drawPixmap_comp_data();
- void drawPixmap_comp();
- void saveAndRestore_data();
- void saveAndRestore();
-
- void drawBorderPixmap();
- void drawPixmapFragments();
-
- void drawLine_data();
- void drawLine();
- void drawLine_clipped();
- void drawLine_task121143();
- void drawLine_task216948();
-
- void drawLine_task190634();
- void drawLine_task229459();
- void drawLine_task234891();
-
- void drawRect_data() { fillData(); }
- void drawRect();
- void drawRect2();
-
- void fillRect();
- void fillRect2();
- void fillRect3();
- void fillRect4();
-
- void drawEllipse_data();
- void drawEllipse();
- void drawClippedEllipse_data();
- void drawClippedEllipse();
-
- void drawPath_data();
- void drawPath();
- void drawPath2();
- void drawPath3();
-
- void drawRoundRect_data() { fillData(); }
- void drawRoundRect();
-
- void qimageFormats_data();
- void qimageFormats();
- void textOnTransparentImage();
-
- void initFrom();
-
- void setWindow();
-
- void combinedMatrix();
- void renderHints();
-
- void disableEnableClipping();
- void setClipRect();
- void setEqualClipRegionAndPath_data();
- void setEqualClipRegionAndPath();
-
- void clipRectSaveRestore();
-
- void clippedFillPath_data();
- void clippedFillPath();
- void clippedLines_data();
- void clippedLines();
- void clippedPolygon_data();
- void clippedPolygon();
-
- void clippedText();
-
- void clipBoundingRect();
-
- void setOpacity_data();
- void setOpacity();
-
- void drawhelper_blend_untransformed_data();
- void drawhelper_blend_untransformed();
- void drawhelper_blend_tiled_untransformed_data();
- void drawhelper_blend_tiled_untransformed();
-
- void porterDuff_warning();
-
- void drawhelper_blend_color();
-
- void childWidgetViewport();
-
- void fillRect_objectBoundingModeGradient();
- void fillRect_stretchToDeviceMode();
- void monoImages();
-
- void linearGradientSymmetry_data();
- void linearGradientSymmetry();
- void gradientInterpolation();
-
- void fpe_pixmapTransform();
- void fpe_zeroLengthLines();
- void fpe_divByZero();
-
- void fpe_steepSlopes_data();
- void fpe_steepSlopes();
- void fpe_rasterizeLine_task232012();
-
- void fpe_radialGradients();
-
- void rasterizer_asserts();
- void rasterizer_negativeCoords();
-
- void blendOverFlow_data();
- void blendOverFlow();
-
- void largeImagePainting_data();
- void largeImagePainting();
-
- void imageScaling_task206785();
-
- void outlineFillConsistency();
-
- void drawImage_task217400_data();
- void drawImage_task217400();
- void drawImage_1x1();
- void drawImage_task258776();
- void drawRect_task215378();
- void drawRect_task247505();
-
- void drawText_subPixelPositionsInRaster_qtbug5053();
-
- void drawImage_data();
- void drawImage();
-
- void clippedImage();
-
- void stateResetBetweenQPainters();
-
- void imageCoordinateLimit();
- void imageBlending_data();
- void imageBlending();
- void imageBlending_clipped();
-
- void paintOnNullPixmap();
- void checkCompositionMode();
-
- void drawPolygon();
-
- void inactivePainter();
-
- void extendedBlendModes();
-
- void zeroOpacity();
- void clippingBug();
- void emptyClip();
-
- void taskQT4444_dontOverflowDashOffset();
-
- void painterBegin();
- void setPenColorOnImage();
- void setPenColorOnPixmap();
-
- void QTBUG5939_attachPainterPrivate();
-
- void drawPointScaled();
-
- void QTBUG14614_gradientCacheRaceCondition();
- void drawTextOpacity();
-
- void QTBUG17053_zeroDashPattern();
-
- void drawTextOutsideGuiThread();
-
-private:
- void fillData();
- void setPenColor(QPainter& p);
- QColor baseColor( int k, int intensity=255 );
- QImage getResImage( const QString &dir, const QString &addition, const QString &extension );
- QBitmap getBitmap( const QString &dir, const QString &filename, bool mask );
-};
-
-// Testing get/set functions
-void tst_QPainter::getSetCheck()
-{
- QImage img(QSize(10, 10), QImage::Format_ARGB32_Premultiplied);
- QPainter obj1;
- obj1.begin(&img);
- // CompositionMode QPainter::compositionMode()
- // void QPainter::setCompositionMode(CompositionMode)
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_SourceOver));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_SourceOver), obj1.compositionMode());
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_DestinationOver));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_DestinationOver), obj1.compositionMode());
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_Clear));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_Clear), obj1.compositionMode());
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_Source));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_Source), obj1.compositionMode());
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_Destination));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_Destination), obj1.compositionMode());
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_SourceIn));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_SourceIn), obj1.compositionMode());
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_DestinationIn));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_DestinationIn), obj1.compositionMode());
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_SourceOut));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_SourceOut), obj1.compositionMode());
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_DestinationOut));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_DestinationOut), obj1.compositionMode());
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_SourceAtop));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_SourceAtop), obj1.compositionMode());
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_DestinationAtop));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_DestinationAtop), obj1.compositionMode());
- obj1.setCompositionMode(QPainter::CompositionMode(QPainter::CompositionMode_Xor));
- QCOMPARE(QPainter::CompositionMode(QPainter::CompositionMode_Xor), obj1.compositionMode());
-
- // const QPen & QPainter::pen()
- // void QPainter::setPen(const QPen &)
- QPen var3(Qt::red);
- obj1.setPen(var3);
- QCOMPARE(var3, obj1.pen());
- obj1.setPen(QPen());
- QCOMPARE(QPen(), obj1.pen());
-
- // const QBrush & QPainter::brush()
- // void QPainter::setBrush(const QBrush &)
- QBrush var4(Qt::red);
- obj1.setBrush(var4);
- QCOMPARE(var4, obj1.brush());
- obj1.setBrush(QBrush());
- QCOMPARE(QBrush(), obj1.brush());
-
- // const QBrush & QPainter::background()
- // void QPainter::setBackground(const QBrush &)
- QBrush var5(Qt::yellow);
- obj1.setBackground(var5);
- QCOMPARE(var5, obj1.background());
- obj1.setBackground(QBrush());
- QCOMPARE(QBrush(), obj1.background());
-
- // bool QPainter::matrixEnabled()
- // void QPainter::setMatrixEnabled(bool)
- obj1.setMatrixEnabled(false);
- QCOMPARE(false, obj1.matrixEnabled());
- obj1.setMatrixEnabled(true);
- QCOMPARE(true, obj1.matrixEnabled());
-
- // bool QPainter::viewTransformEnabled()
- // void QPainter::setViewTransformEnabled(bool)
- obj1.setViewTransformEnabled(false);
- QCOMPARE(false, obj1.viewTransformEnabled());
- obj1.setViewTransformEnabled(true);
- QCOMPARE(true, obj1.viewTransformEnabled());
-}
-
-Q_DECLARE_METATYPE(QPixmap)
-Q_DECLARE_METATYPE(QPolygon)
-Q_DECLARE_METATYPE(QBrush)
-Q_DECLARE_METATYPE(QPen)
-Q_DECLARE_METATYPE(QFont)
-Q_DECLARE_METATYPE(QColor)
-Q_DECLARE_METATYPE(QRegion)
-
-tst_QPainter::tst_QPainter()
-{
- // QtTestCase sets this to false, but this turns off alpha pixmaps on Unix.
- QApplication::setDesktopSettingsAware(TRUE);
-}
-
-tst_QPainter::~tst_QPainter()
-{
-}
-
-void tst_QPainter::init()
-{
-}
-
-void tst_QPainter::cleanup()
-{
-}
-
-/* tests the clipping operations in qt_format_text, making sure
- the clip rectangle after the call is the same as before
-*/
-void tst_QPainter::qt_format_text_clip()
-{
- QVERIFY(1);
- QSKIP( "Needs fixing...", SkipAll);
-
- QWidget *w = new QWidget( 0 );
-
- int modes[] = { Qt::AlignVCenter|Qt::TextSingleLine,
- Qt::AlignVCenter|Qt::TextSingleLine|Qt::TextDontClip,
- Qt::AlignVCenter|Qt::TextWordWrap,
- Qt::AlignVCenter|Qt::TextWordWrap|Qt::TextDontClip,
- 0
- };
-
- int *m = modes;
- while( *m ) {
- {
- QPainter p( w );
- QRegion clipreg = p.clipRegion();
- bool hasClipping = p.hasClipping();
- qreal tx = p.matrix().dx();
- qreal ty = p.matrix().dy();
-
- p.drawText( 10, 10, 100, 100, *m,
- "fooo" );
-
- QVERIFY( clipreg == p.clipRegion() );
- QVERIFY( hasClipping == p.hasClipping() );
- QCOMPARE( tx, p.matrix().dx() );
- QCOMPARE( ty, p.matrix().dy() );
-
- p.setClipRect( QRect( 5, 5, 50, 50 ) );
- clipreg = p.clipRegion();
- hasClipping = p.hasClipping();
-
- p.drawText( 10, 10, 100, 100, *m,
- "fooo" );
-
- QVERIFY( clipreg == p.clipRegion() );
- QVERIFY( hasClipping == p.hasClipping() );
- QCOMPARE( tx, p.matrix().dx() );
- QCOMPARE( ty, p.matrix().dy() );
- }
- {
- QPainter p( w );
- p.setMatrix( QMatrix( 2, 1, 3, 4, 5, 6 ) );
- QRegion clipreg = p.clipRegion();
- bool hasClipping = p.hasClipping();
- qreal tx = p.matrix().dx();
- qreal ty = p.matrix().dy();
-
- p.drawText( 10, 10, 100, 100, *m,
- "fooo" );
-
- QVERIFY( clipreg == p.clipRegion() );
- QVERIFY( hasClipping == p.hasClipping() );
- QCOMPARE( tx, p.matrix().dx() );
- QCOMPARE( ty, p.matrix().dy() );
-
- p.setClipRect( QRect( 5, 5, 50, 50 ) );
- clipreg = p.clipRegion();
- hasClipping = p.hasClipping();
-
- p.drawText( 10, 10, 100, 100, *m,
- "fooo" );
-
- QVERIFY( clipreg == p.clipRegion() );
- QVERIFY( hasClipping == p.hasClipping() );
- QCOMPARE( tx, p.matrix().dx() );
- QCOMPARE( ty, p.matrix().dy() );
- }
- {
- QPainter p( w );
- QRegion clipreg = p.clipRegion();
- bool hasClipping = p.hasClipping();
- qreal tx = p.matrix().dx();
- qreal ty = p.matrix().dy();
-
- p.drawText( 10, 10, 100, 100, *m,
- "fooo" );
-
- QVERIFY( clipreg == p.clipRegion() );
- QVERIFY( hasClipping == p.hasClipping() );
- QCOMPARE( tx, p.matrix().dx() );
- QCOMPARE( ty, p.matrix().dy() );
-
- p.setClipRect( QRect( 5, 5, 50, 50 ));
- clipreg = p.clipRegion();
- hasClipping = p.hasClipping();
-
- p.drawText( 10, 10, 100, 100, *m,
- "fooo" );
-
- QVERIFY( clipreg == p.clipRegion() );
- QVERIFY( hasClipping == p.hasClipping() );
- QCOMPARE( tx, p.matrix().dx() );
- QCOMPARE( ty, p.matrix().dy() );
- }
- {
- QPainter p( w );
- p.setMatrix( QMatrix( 2, 1, 3, 4, 5, 6 ) );
- QRegion clipreg = p.clipRegion();
- bool hasClipping = p.hasClipping();
- qreal tx = p.matrix().dx();
- qreal ty = p.matrix().dy();
-
- p.drawText( 10, 10, 100, 100, *m,
- "fooo" );
-
- QVERIFY( clipreg == p.clipRegion() );
- QVERIFY( hasClipping == p.hasClipping() );
- QCOMPARE( tx, p.matrix().dx() );
- QCOMPARE( ty, p.matrix().dy() );
-
- p.setClipRect(QRect( 5, 5, 50, 50 ));
- clipreg = p.clipRegion();
- hasClipping = p.hasClipping();
-
- p.drawText( 10, 10, 100, 100, *m,
- "fooo" );
-
- QVERIFY( clipreg == p.clipRegion() );
- QVERIFY( hasClipping == p.hasClipping() );
- QCOMPARE( tx, p.matrix().dx() );
- QCOMPARE( ty, p.matrix().dy() );
- }
- ++m;
- }
- delete w;
-}
-
-/* tests the bounding rect calculations in qt_format_text, making sure
- the bounding rect has a reasonable value.
-*/
-void tst_QPainter::qt_format_text_boundingRect()
-{
- QVERIFY(1);
- QSKIP( "Needs fixing...", SkipAll);
-
- {
- const char * strings[] = {
- "a\n\nb",
- "abc",
- "a\n \nb",
- "this is a longer string",
- "\327\222\327\223\327\233\327\223\327\222\327\233\327\222\327\223\327\233",
- "aa\327\222\327\233aa",
- "\327\222\327\223\327\233\327\223\327\222\327\233\327\222\327\223\327\233",
- "\327\222\327\233aa",
- "linebreakatend\n",
- "some text longer than 30 chars with a line break at the end\n",
- "some text\nwith line breaks\nin the middle\nand at the end\n",
- "foo\n\n\nfoo",
- 0
- };
-
- int modes[] = { Qt::AlignVCenter|Qt::TextSingleLine,
- Qt::AlignVCenter|Qt::TextSingleLine|Qt::TextDontClip,
- Qt::AlignVCenter|Qt::TextWordWrap,
- Qt::AlignVCenter|Qt::TextWordWrap|Qt::TextDontClip,
- Qt::AlignLeft,
- Qt::AlignCenter,
- Qt::AlignRight,
- 0
- };
-
- QFont f;
- for(int i = 5; i < 15; ++i) {
- f.setPointSize(i);
- QFontMetrics fm(f);
- const char **str = strings;
- while( *str ) {
- int *m = modes;
- while( *m ) {
- QRect br = fm.boundingRect( 0, 0, 2000, 100, *m, QString::fromUtf8( *str ) );
- QVERIFY( br.width() < 800 );
-
- QRect br2 = fm.boundingRect( br.x(), br.y(), br.width(), br.height(), *m, QString::fromUtf8( *str ) );
- QCOMPARE( br, br2 );
-#if 0
- {
- QPrinter printer;
- printer.setOutputToFile(TRUE);
- printer.setOutputFileName("tmp.prn");
- QPainter p(&printer);
- QRect pbr = p.fontMetrics().boundingRect( 0, 0, 2000, 100, *m, QString::fromUtf8( *str ) );
- QCOMPARE(pbr, br);
- }
-#endif
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
- {
- QPrinter printer(QPrinter::HighResolution);
- if (printer.printerName().isEmpty()) {
- QSKIP( "No printers installed, skipping bounding rect test",
- SkipSingle );
- break;
- }
-
- printer.setOutputFileName("tmp.prn");
- QPainter p(&printer);
- QRect pbr = p.fontMetrics().boundingRect( 0, 0, 12000, 600, *m, QString::fromUtf8( *str ) );
- QVERIFY(pbr.width() > 2*br.width());
- QVERIFY(pbr.height() > 2*br.height());
- }
-#endif
- ++m;
- }
- ++str;
- }
- }
- }
-
- {
- const char * strings[] = {
- "a",
- "a\nb",
- "a\n\nb",
- "abc",
-// "a\n \nb",
- "this is a longer string",
-// "\327\222\327\223\327\233\327\223\327\222\327\233\327\222\327\223\327\233",
-// "aa\327\222\327\233aa",
-// "\327\222\327\223\327\233\327\223\327\222\327\233\327\222\327\223\327\233",
-// "\327\222\327\233aa",
-// "linebreakatend\n",
-// "some text longer than 30 chars with a line break at the end\n",
-// "some text\nwith line breaks\nin the middle\nand at the end\n",
- "foo\n\n\nfoo",
- "a\n\n\n\n\nb",
- "a\n\n\n\n\n\nb",
-// "\347\231\273\351\214\262\346\203\205\345\240\261\343\201\214\350\246\213\343\201\244\343\201\213\343\202\211\343\201\252\343\201\204\343\201\213\347\204\241\345\212\271\343\201\252\343\201\237\343\202\201\343\200\201\nPhotoshop Album \343\202\222\350\265\267\345\213\225\343\201\247\343\201\215\343\201\276\343\201\233\343\202\223\343\200\202\345\206\215\343\202\244\343\203\263\343\202\271\343\203\210\343\203\274\343\203\253\343\201\227\343\201\246\343\201\217\343\201\240\343\201\225\343\201\204\343\200\202"
-// "\347\231\273\351\214\262\346\203\205\345\240\261\343\201\214\350\246\213\343\201\244\343\201\213\343\202\211\343\201\252\343\201\204\343\201\213\347\204\241\345\212\271\343\201\252\343\201\237\343\202\201\343\200\201\n\343\202\222\350\265\267\345\213\225\343\201\247\343\201\215\343\201\276\343\201\233\343\202\223\343\200\202\345\206\215\343\202\244\343\203\263\343\202\271\343\203\210\343\203\274\343\203\253\343\201\227\343\201\246\343\201\217\343\201\240\343\201\225\343\201\204\343\200\202",
- 0
- };
-
- int modes[] = { Qt::AlignVCenter,
- Qt::AlignLeft,
- Qt::AlignCenter,
- Qt::AlignRight,
- 0
- };
-
-
- QFont f;
- for(int i = 5; i < 15; ++i) {
- f.setPointSize(i);
- QFontMetrics fm(f);
- const char **str = strings;
- while( *str ) {
- int *m = modes;
- while( *m ) {
- QString s = QString::fromUtf8(*str);
- QRect br = fm.boundingRect(0, 0, 1000, 1000, *m, s );
- int lines =
- s.count("\n");
- int expectedHeight = fm.height()+lines*fm.lineSpacing();
- QCOMPARE(br.height(), expectedHeight);
- ++m;
- }
- ++str;
- }
- QRect br = fm.boundingRect(0, 0, 100, 0, Qt::TextWordWrap,
- "A paragraph with gggggggggggggggggggggggggggggggggggg in the middle.");
- QVERIFY(br.height() >= fm.height()+2*fm.lineSpacing());
- }
- }
-}
-
-
-static const char* const maskSource_data[] = {
-"16 13 6 1",
-". c None",
-"d c #000000",
-"# c #999999",
-"c c #cccccc",
-"b c #ffff00",
-"a c #ffffff",
-"...#####........",
-"..#aaaaa#.......",
-".#abcbcba######.",
-".#acbcbcaaaaaa#d",
-".#abcbcbcbcbcb#d",
-"#############b#d",
-"#aaaaaaaaaa##c#d",
-"#abcbcbcbcbbd##d",
-".#abcbcbcbcbcd#d",
-".#acbcbcbcbcbd#d",
-"..#acbcbcbcbb#dd",
-"..#############d",
-"...ddddddddddddd"};
-
-static const char* const maskResult_data[] = {
-"16 13 6 1",
-". c #ff0000",
-"d c #000000",
-"# c #999999",
-"c c #cccccc",
-"b c #ffff00",
-"a c #ffffff",
-"...#####........",
-"..#aaaaa#.......",
-".#abcbcba######.",
-".#acbcbcaaaaaa#d",
-".#abcbcbcbcbcb#d",
-"#############b#d",
-"#aaaaaaaaaa##c#d",
-"#abcbcbcbcbbd##d",
-".#abcbcbcbcbcd#d",
-".#acbcbcbcbcbd#d",
-"..#acbcbcbcbb#dd",
-"..#############d",
-"...ddddddddddddd"};
-
-
-void tst_QPainter::drawPixmap_comp_data()
-{
- if (qApp->desktop()->depth() < 24) {
- QSKIP("Test only works on 32 bit displays", SkipAll);
- return;
- }
-
- QTest::addColumn<uint>("dest");
- QTest::addColumn<uint>("source");
-
- QTest::newRow("0% on 0%, 1") << 0x00000000u<< 0x00000000u;
- QTest::newRow("0% on 0%, 2") << 0x00007fffu << 0x00ff007fu;
-
- QTest::newRow("50% on a=0%") << 0x00000000u << 0x7fff0000u;
- QTest::newRow("50% on a=50%") << 0x7f000000u << 0x7fff0000u;
- QTest::newRow("50% on deadbeef") << 0xdeafbeefu << 0x7fff0000u;
- QTest::newRow("deadbeef on a=0%") << 0x00000000u << 0xdeadbeefu;
- QTest::newRow("deadbeef on a=50%") << 0x7f000000u << 0xdeadbeefu;
- QTest::newRow("50% blue on 50% red") << 0x7fff0000u << 0x7f0000ffu;
- QTest::newRow("50% blue on 50% green") << 0x7f00ff00u << 0x7f0000ffu;
- QTest::newRow("50% red on 50% green") << 0x7f00ff00u << 0x7fff0000u;
- QTest::newRow("0% on 50%") << 0x7fff00ffu << 0x00ffffffu;
- QTest::newRow("100% on deadbeef") << 0xdeafbeefu << 0xffabcdefu;
- QTest::newRow("100% on a=0%") << 0x00000000u << 0xffabcdefu;
-}
-
-QRgb qt_compose_alpha(QRgb source, QRgb dest)
-{
- int r1 = qRed(dest), g1 = qGreen(dest), b1 = qBlue(dest), a1 = qAlpha(dest);
- int r2 = qRed(source), g2 = qGreen(source), b2 = qBlue(source), a2 = qAlpha(source);
-
- int alpha = qMin(a2 + ((255 - a2) * a1 + 127) / 255, 255);
- if (alpha == 0)
- return qRgba(0, 0, 0, 0);
-
- return qRgba(
- qMin((r2 * a2 + (255 - a2) * r1 * a1 / 255) / alpha, 255),
- qMin((g2 * a2 + (255 - a2) * g1 * a1 / 255) / alpha, 255),
- qMin((b2 * a2 + (255 - a2) * b1 * a1 / 255) / alpha, 255),
- alpha);
-}
-
-/* Tests that drawing masked pixmaps works
-*/
-void tst_QPainter::drawPixmap_comp()
-{
-#ifdef Q_WS_MAC
- QSKIP("Mac has other ideas about alpha composition", SkipAll);
-#endif
-
- QFETCH(uint, dest);
- QFETCH(uint, source);
-
- QRgb expected = qt_compose_alpha(source, dest);
-
- QColor c1(qRed(dest), qGreen(dest), qBlue(dest), qAlpha(dest));
- QColor c2(qRed(source), qGreen(source), qBlue(source), qAlpha(source));
-
- QPixmap destPm(10, 10), srcPm(10, 10);
- destPm.fill(c1);
- srcPm.fill(c2);
-
-#if defined(Q_WS_X11)
- if (!destPm.x11PictureHandle())
- QSKIP("Requires XRender support", SkipAll);
-#endif
-
- QPainter p(&destPm);
- p.drawPixmap(0, 0, srcPm);
- p.end();
-
- QImage result = destPm.toImage().convertToFormat(QImage::Format_ARGB32);
- bool different = false;
- for (int y=0; y<result.height(); ++y)
- for (int x=0; x<result.width(); ++x) {
- bool diff;
- if (qAlpha(expected) == 0) {
- diff = qAlpha(result.pixel(x, y)) != 0;
- } else {
- // Compensate for possible roundoff / platform fudge
- int off = 1;
- QRgb pix = result.pixel(x, y);
- diff = (qAbs(qRed(pix) - qRed(expected)) > off)
- || (qAbs(qGreen(pix) - qGreen(expected)) > off)
- || (qAbs(qBlue(pix) - qBlue(expected)) > off)
- || (qAbs(qAlpha(pix) - qAlpha(expected)) > off);
- }
- if (diff && !different)
- qDebug( "Different at %d,%d pixel [%d,%d,%d,%d] expected [%d,%d,%d,%d]", x, y,
- qRed(result.pixel(x, y)), qGreen(result.pixel(x, y)),
- qBlue(result.pixel(x, y)), qAlpha(result.pixel(x, y)),
- qRed(expected), qGreen(expected), qBlue(expected), qAlpha(expected));
- different |= diff;
- }
-
- QVERIFY(!different);
-}
-
-void tst_QPainter::saveAndRestore_data()
-{
- QVERIFY(1);
-
- QTest::addColumn<QFont>("font");
- QTest::addColumn<QPen>("pen");
- QTest::addColumn<QBrush>("brush");
- QTest::addColumn<QColor>("backgroundColor");
- QTest::addColumn<int>("backgroundMode");
- QTest::addColumn<QPoint>("brushOrigin");
- QTest::addColumn<QRegion>("clipRegion");
- QTest::addColumn<QRect>("window");
- QTest::addColumn<QRect>("viewport");
-
- QPixmap pixmap(1, 1);
- QPainter p(&pixmap);
- QFont font = p.font();
- QPen pen = p.pen();
- QBrush brush = p.brush();
- QColor backgroundColor = p.background().color();
- Qt::BGMode backgroundMode = p.backgroundMode();
- QPoint brushOrigin = p.brushOrigin();
- QRegion clipRegion = p.clipRegion();
- QRect window = p.window();
- QRect viewport = p.viewport();
-
- QTest::newRow("Original") << font << pen << brush << backgroundColor << int(backgroundMode)
- << brushOrigin << clipRegion << window << viewport;
-
- QFont font2 = font;
- font2.setPointSize( 24 );
- QTest::newRow("Modified font.pointSize, brush, backgroundColor, backgroundMode")
- << font2 << pen << QBrush(Qt::red) << QColor(Qt::blue) << int(Qt::TransparentMode)
- << brushOrigin << clipRegion << window << viewport;
-
- font2 = font;
- font2.setPixelSize( 20 );
- QTest::newRow("Modified font.pixelSize, brushOrigin, pos")
- << font2 << pen << brush << backgroundColor << int(backgroundMode)
- << QPoint( 50, 32 ) << clipRegion << window << viewport;
-
- QTest::newRow("Modified clipRegion, window, viewport")
- << font << pen << brush << backgroundColor << int(backgroundMode)
- << brushOrigin << clipRegion.subtracted(QRect(10,10,50,30))
- << QRect(-500, -500, 500, 500 ) << QRect( 0, 0, 50, 50 );
-}
-
-void tst_QPainter::saveAndRestore()
-{
- QFETCH( QFont, font );
- QFETCH( QPen, pen );
- QFETCH( QBrush, brush );
- QFETCH( QColor, backgroundColor );
- QFETCH( int, backgroundMode );
- QFETCH( QPoint, brushOrigin );
- QFETCH( QRegion, clipRegion );
- QFETCH( QRect, window );
- QFETCH( QRect, viewport );
-
- QPixmap pixmap(1, 1);
- QPainter painter(&pixmap);
-
- QFont font_org = painter.font();
- QPen pen_org = painter.pen();
- QBrush brush_org = painter.brush();
- QColor backgroundColor_org = painter.background().color();
- Qt::BGMode backgroundMode_org = painter.backgroundMode();
- QPoint brushOrigin_org = painter.brushOrigin();
- QRegion clipRegion_org = painter.clipRegion();
- QRect window_org = painter.window();
- QRect viewport_org = painter.viewport();
-
- painter.save();
- painter.setFont( font );
- painter.setPen( QPen(pen) );
- painter.setBrush( brush );
- painter.setBackground( backgroundColor );
- painter.setBackgroundMode( (Qt::BGMode)backgroundMode );
- painter.setBrushOrigin( brushOrigin );
- painter.setClipRegion( clipRegion );
- painter.setWindow( window );
- painter.setViewport( viewport );
- painter.restore();
-
- QCOMPARE( painter.font(), font_org );
- QCOMPARE( painter.font().pointSize(), font_org.pointSize() );
- QCOMPARE( painter.font().pixelSize(), font_org.pixelSize() );
- QCOMPARE( painter.pen(), pen_org );
- QCOMPARE( painter.brush(), brush_org );
- QCOMPARE( painter.background().color(), backgroundColor_org );
- QCOMPARE( painter.backgroundMode(), backgroundMode_org );
- QCOMPARE( painter.brushOrigin(), brushOrigin_org );
- QCOMPARE( painter.clipRegion(), clipRegion_org );
- QCOMPARE( painter.window(), window_org );
- QCOMPARE( painter.viewport(), viewport_org );
-}
-
-/*
- Helper functions
-*/
-
-QColor tst_QPainter::baseColor( int k, int intensity )
-{
- int r = ( k & 1 ) * intensity;
- int g = ( (k>>1) & 1 ) * intensity;
- int b = ( (k>>2) & 1 ) * intensity;
- return QColor( r, g, b );
-}
-
-QImage tst_QPainter::getResImage( const QString &dir, const QString &addition, const QString &extension )
-{
- QImage res;
- QString resFilename = dir + QString( "/res_%1." ).arg( addition ) + extension;
- if ( !res.load( resFilename ) ) {
- QWARN(QString("Could not load result data %s %1").arg(resFilename).toLatin1());
- return QImage();
- }
- return res;
-}
-
-QBitmap tst_QPainter::getBitmap( const QString &dir, const QString &filename, bool mask )
-{
- QBitmap bm;
- QString bmFilename = dir + QString( "/%1.xbm" ).arg( filename );
- if ( !bm.load( bmFilename ) ) {
- QWARN(QString("Could not load bitmap '%1'").arg(bmFilename).toLatin1());
- return QBitmap();
- }
- if ( mask ) {
- QBitmap mask;
- QString maskFilename = dir + QString( "/%1-mask.xbm" ).arg( filename );
- if ( !mask.load( maskFilename ) ) {
- QWARN(QString("Could not load mask '%1'").arg(maskFilename).toLatin1());
- return QBitmap();
- }
- bm.setMask( mask );
- }
- return bm;
-}
-
-static int getPaintedPixels(const QImage &image, const QColor &background)
-{
- uint color = background.rgba();
-
- int pixels = 0;
-
- for (int y = 0; y < image.height(); ++y)
- for (int x = 0; x < image.width(); ++x)
- if (image.pixel(x, y) != color)
- ++pixels;
-
- return pixels;
-}
-
-static QRect getPaintedSize(const QImage &image, const QColor &background)
-{
- // not the fastest but at least it works..
- int xmin = image.width() + 1;
- int xmax = -1;
- int ymin = image.height() +1;
- int ymax = -1;
-
- uint color = background.rgba();
-
- for ( int y = 0; y < image.height(); ++y ) {
- for ( int x = 0; x < image.width(); ++x ) {
- QRgb pixel = image.pixel( x, y );
- if ( pixel != color && x < xmin )
- xmin = x;
- if ( pixel != color && x > xmax )
- xmax = x;
- if ( pixel != color && y < ymin )
- ymin = y;
- if ( pixel != color && y > ymax )
- ymax = y;
- }
- }
-
- return QRect(xmin, ymin, xmax - xmin + 1, ymax - ymin + 1);
-}
-
-static QRect getPaintedSize(const QPixmap &pm, const QColor &background)
-{
- return getPaintedSize(pm.toImage(), background);
-}
-
-void tst_QPainter::initFrom()
-{
- QWidget *widget = new QWidget();
- QPalette pal = widget->palette();
- pal.setColor(QPalette::Foreground, QColor(255, 0, 0));
- pal.setBrush(QPalette::Background, QColor(0, 255, 0));
- widget->setPalette(pal);
-
- QFont font = widget->font();
- font.setPointSize(26);
- font.setItalic(true);
- widget->setFont(font);
-
- QPixmap pm(100, 100);
- QPainter p(&pm);
- p.initFrom(widget);
-
- QCOMPARE(p.font(), font);
- QCOMPARE(p.pen().color(), pal.color(QPalette::Foreground));
- QCOMPARE(p.background(), pal.background());
-
- delete widget;
-}
-
-void tst_QPainter::drawBorderPixmap()
-{
- QPixmap src(79,79);
- src.fill(Qt::transparent);
-
- QImage pm(200,200,QImage::Format_RGB32);
- QPainter p(&pm);
- p.setTransform(QTransform(-1,0,0,-1,173.5,153.5));
- qDrawBorderPixmap(&p, QRect(0,0,75,105), QMargins(39,39,39,39), src, QRect(0,0,79,79), QMargins(39,39,39,39),
- QTileRules(Qt::StretchTile,Qt::StretchTile), 0);
-}
-
-void tst_QPainter::drawPixmapFragments()
-{
- QPixmap origPixmap(20, 20);
- QPixmap resPixmap(20, 20);
- QPainter::PixmapFragment fragments[4] = { {15, 15, 0, 0, 10, 10, 1, 1, 0, 1},
- { 5, 15, 10, 0, 10, 10, 1, 1, 0, 1},
- {15, 5, 0, 10, 10, 10, 1, 1, 0, 1},
- { 5, 5, 10, 10, 10, 10, 1, 1, 0, 1} };
- {
- QPainter p(&origPixmap);
- p.fillRect(0, 0, 10, 10, Qt::red);
- p.fillRect(10, 0, 10, 10, Qt::green);
- p.fillRect(0, 10, 10, 10, Qt::blue);
- p.fillRect(10, 10, 10, 10, Qt::yellow);
- }
- {
- QPainter p(&resPixmap);
- p.drawPixmapFragments(fragments, 4, origPixmap);
- }
-
- QImage origImage = origPixmap.toImage().convertToFormat(QImage::Format_ARGB32);
- QImage resImage = resPixmap.toImage().convertToFormat(QImage::Format_ARGB32);
-
- QVERIFY(resImage.size() == resPixmap.size());
- QVERIFY(resImage.pixel(5, 5) == origImage.pixel(15, 15));
- QVERIFY(resImage.pixel(5, 15) == origImage.pixel(15, 5));
- QVERIFY(resImage.pixel(15, 5) == origImage.pixel(5, 15));
- QVERIFY(resImage.pixel(15, 15) == origImage.pixel(5, 5));
-
-
- QPainter::PixmapFragment fragment = QPainter::PixmapFragment::create(QPointF(20, 20), QRectF(30, 30, 2, 2));
- QVERIFY(fragment.x == 20);
- QVERIFY(fragment.y == 20);
- QVERIFY(fragment.sourceLeft == 30);
- QVERIFY(fragment.sourceTop == 30);
- QVERIFY(fragment.width == 2);
- QVERIFY(fragment.height == 2);
- QVERIFY(fragment.scaleX == 1);
- QVERIFY(fragment.scaleY == 1);
- QVERIFY(fragment.rotation == 0);
- QVERIFY(fragment.opacity == 1);
-}
-
-void tst_QPainter::drawLine_data()
-{
- QTest::addColumn<QLine>("line");
-
- QTest::newRow("0-45") << QLine(0, 20, 100, 0);
- QTest::newRow("45-90") << QLine(0, 100, 20, 0);
- QTest::newRow("90-135") << QLine(20, 100, 0, 0);
- QTest::newRow("135-180") << QLine(100, 20, 0, 0);
- QTest::newRow("180-225") << QLine(100, 0, 0, 20);
- QTest::newRow("225-270") << QLine(20, 0, 0, 100);
- QTest::newRow("270-315") << QLine(0, 0, 20, 100);
- QTest::newRow("315-360") << QLine(0, 0, 100, 20);
-}
-
-void tst_QPainter::drawLine()
-{
- const int offset = 5;
- const int epsilon = 1; // allow for one pixel difference
-
- QFETCH(QLine, line);
-
- QPixmap pixmapUnclipped(qMin(line.x1(), line.x2())
- + 2*offset + qAbs(line.dx()),
- qMin(line.y1(), line.y2())
- + 2*offset + qAbs(line.dy()));
-
- { // unclipped
- pixmapUnclipped.fill(Qt::white);
- QPainter p(&pixmapUnclipped);
- p.translate(offset, offset);
- p.setPen(QPen(Qt::black));
- p.drawLine(line);
- p.end();
-
- const QRect painted = getPaintedSize(pixmapUnclipped, Qt::white);
-
- QLine l = line;
- l.translate(offset, offset);
- QVERIFY(qAbs(painted.width() - qAbs(l.dx())) <= epsilon);
- QVERIFY(qAbs(painted.height() - qAbs(l.dy())) <= epsilon);
- QVERIFY(qAbs(painted.top() - qMin(l.y1(), l.y2())) <= epsilon);
- QVERIFY(qAbs(painted.left() - qMin(l.x1(), l.x2())) <= epsilon);
- QVERIFY(qAbs(painted.bottom() - qMax(l.y1(), l.y2())) <= epsilon);
- QVERIFY(qAbs(painted.right() - qMax(l.x1(), l.x2())) <= epsilon);
- }
-
- QPixmap pixmapClipped(qMin(line.x1(), line.x2())
- + 2*offset + qAbs(line.dx()),
- qMin(line.y1(), line.y2())
- + 2*offset + qAbs(line.dy()));
- { // clipped
- const QRect clip = QRect(line.p1(), line.p2()).normalized();
-
- pixmapClipped.fill(Qt::white);
- QPainter p(&pixmapClipped);
- p.translate(offset, offset);
- p.setClipRect(clip);
- p.setPen(QPen(Qt::black));
- p.drawLine(line);
- p.end();
- }
-
- const QImage unclipped = pixmapUnclipped.toImage();
- const QImage clipped = pixmapClipped.toImage();
- QCOMPARE(unclipped, clipped);
-}
-
-void tst_QPainter::drawLine_clipped()
-{
- QImage image(16, 1, QImage::Format_ARGB32_Premultiplied);
- image.fill(0x0);
-
- QPainter p(&image);
- p.setPen(QPen(Qt::black, 10));
-
- // this should fill the whole image
- p.drawLine(-1, -1, 17, 1);
- p.end();
-
- for (int x = 0; x < 16; ++x)
- QCOMPARE(image.pixel(x, 0), 0xff000000);
-}
-
-void tst_QPainter::drawLine_task121143()
-{
- QPen pen(Qt::black);
-
- QImage image(5, 5, QImage::Format_ARGB32_Premultiplied);
- image.fill(0xffffffff);
- QPainter p(&image);
- p.setPen(pen);
- p.drawLine(QLine(0, 0+4, 0+4, 0));
- p.end();
-
- QImage expected(5, 5, QImage::Format_ARGB32_Premultiplied);
- expected.fill(0xffffffff);
- for (int x = 0; x < 5; ++x)
- expected.setPixel(x, 5-x-1, pen.color().rgb());
-
- QCOMPARE(image, expected);
-}
-
-void tst_QPainter::drawLine_task190634()
-{
- QPen pen(Qt::black, 3);
-
- QImage image(32, 32, QImage::Format_ARGB32_Premultiplied);
- QPainter p(&image);
- p.fillRect(0, 0, image.width(), image.height(), Qt::white);
-
- p.setPen(pen);
- p.drawLine(QLineF(2, -1.6, 10, -1.6));
- p.end();
-
- const uint *data = reinterpret_cast<uint *>(image.bits());
-
- for (int i = 0; i < image.width() * image.height(); ++i)
- QCOMPARE(data[i], 0xffffffff);
-
- p.begin(&image);
- p.fillRect(0, 0, image.width(), image.height(), Qt::white);
-
- p.setPen(pen);
- p.drawLine(QLineF(-1.6, 2, -1.6, 10));
- p.end();
-
- data = reinterpret_cast<uint *>(image.bits());
-
- for (int i = 0; i < image.width() * image.height(); ++i)
- QCOMPARE(data[i], 0xffffffff);
-
- p.begin(&image);
- p.fillRect(0, 0, image.width(), image.height(), Qt::white);
-
- p.setPen(pen);
- p.drawLine( QPoint(2,-2), QPoint(3,-5) );
- p.end();
-
- data = reinterpret_cast<uint *>(image.bits());
-
- for (int i = 0; i < image.width() * image.height(); ++i)
- QCOMPARE(data[i], 0xffffffff);
-}
-
-void tst_QPainter::drawLine_task229459()
-{
- QImage image(32, 32, QImage::Format_ARGB32_Premultiplied);
- image.fill(0x0);
- QPen pen(Qt::black, 64);
-
- QPainter p(&image);
- p.setPen(pen);
- p.drawLine(-8, -8, 10000000, 10000000);
- p.end();
-
- QImage expected = image;
- expected.fill(0xff000000);
-
- QCOMPARE(image, expected);
-}
-
-void tst_QPainter::drawLine_task234891()
-{
- QImage img(100, 1000, QImage::Format_ARGB32_Premultiplied);
- img.fill(0x0);
- QImage expected = img;
-
- QPainter p(&img);
- p.setPen(QPen(QBrush(QColor(255,0,0)), 6));
- p.drawLine(QPointF(25000,100),QPointF(30000,105));
-
- p.setPen(QPen(QBrush(QColor(0,255,0)), 6));
- p.drawLine(QPointF(30000,150),QPointF(35000,155));
-
- p.setPen(QPen(QBrush(QColor(0,0,255)), 6));
- p.drawLine(QPointF(65000,200),QPointF(66000,205));
-
- QCOMPARE(expected, img);
-}
-
-void tst_QPainter::drawLine_task216948()
-{
- QImage img(1, 10, QImage::Format_ARGB32_Premultiplied);
- img.fill(0x0);
-
- QPainter p(&img);
- QLine line(10, 0, 10, 10);
- p.translate(-10, 0);
- p.drawLine(line);
- p.end();
-
- for (int i = 0; i < img.height(); ++i)
- QCOMPARE(img.pixel(0, i), QColor(Qt::black).rgba());
-}
-
-void tst_QPainter::drawRect()
-{
- QFETCH(QRect, rect);
- QFETCH(bool, usePen);
-
- QPixmap pixmap(rect.x() + rect.width() + 10,
- rect.y() + rect.height() + 10);
- {
- pixmap.fill(Qt::white);
- QPainter p(&pixmap);
- p.setPen(usePen ? QPen(Qt::black) : QPen(Qt::NoPen));
- p.setBrush(Qt::black);
- p.drawRect(rect);
- p.end();
-
- int increment = usePen ? 1 : 0;
-
- const QRect painted = getPaintedSize(pixmap, Qt::white);
- QCOMPARE(painted.width(), rect.width() + increment);
- QCOMPARE(painted.height(), rect.height() + increment);
- }
-}
-
-void tst_QPainter::drawRect2()
-{
- QImage image(64, 64, QImage::Format_ARGB32_Premultiplied);
- {
- image.fill(0xffffffff);
-
- QTransform transform(0.368567, 0, 0, 0, 0.368567, 0, 0.0289, 0.0289, 1);
-
- QPainter p(&image);
- p.setTransform(transform);
- p.setBrush(Qt::red);
- p.setPen(Qt::NoPen);
- p.drawRect(QRect(14, 14, 39, 39));
- p.end();
-
- QRect fill = getPaintedSize(image, Qt::white);
- image.fill(0xffffffff);
-
- p.begin(&image);
- p.setTransform(transform);
- p.drawRect(QRect(14, 14, 39, 39));
- p.end();
-
- QRect stroke = getPaintedSize(image, Qt::white);
- QCOMPARE(stroke.adjusted(1, 1, 0, 0), fill.adjusted(0, 0, 1, 1));
- }
-}
-
-void tst_QPainter::fillRect()
-{
- QImage image(100, 100, QImage::Format_ARGB32_Premultiplied);
- image.fill(QColor(0, 0, 0, 0).rgba());
-
- QPainter p(&image);
-
- p.fillRect(0, 0, 100, 100, QColor(255, 0, 0, 127));
-
-// pixmap.save("bla1.png", "PNG");
- QCOMPARE(getPaintedSize(image, QColor(0, 0, 0, 0)),
- QRect(0, 0, 100, 100));
- QCOMPARE(getPaintedSize(image, QColor(127, 0, 0, 127)).isValid(),
- QRect().isValid());
-
- p.setCompositionMode(QPainter::CompositionMode_SourceIn);
- p.fillRect(50, 0, 50, 100, QColor(0, 0, 255, 255));
-
- QCOMPARE(getPaintedSize(image, QColor(127, 0, 0, 127)),
- QRect(50, 0, 50, 100));
- QCOMPARE(getPaintedSize(image, QColor(0, 0, 127, 127)),
- QRect(0, 0, 50, 100));
-}
-
-void tst_QPainter::fillRect2()
-{
- QRgb background = 0x0;
-
- QImage img(1, 20, QImage::Format_ARGB32_Premultiplied);
- img.fill(background);
-
- QPainter p(&img);
-
- QRectF rect(0, 1, 1.2, 18);
- p.fillRect(rect, Qt::black);
-
- p.end();
-
- QCOMPARE(img.pixel(0, 0), background);
- QCOMPARE(img.pixel(0, img.height() - 1), background);
-
- QCOMPARE(img.pixel(0, 1), img.pixel(0, 2));
- QCOMPARE(img.pixel(0, img.height() - 2), img.pixel(0, img.height() - 3));
-}
-
-void tst_QPainter::fillRect3()
-{
- QImage img(1, 1, QImage::Format_ARGB32_Premultiplied);
- img.fill(QColor(Qt::black).rgba());
-
- QPainter p(&img);
- p.setCompositionMode(QPainter::CompositionMode_Source);
- p.fillRect(img.rect(), Qt::transparent);
- p.end();
-
- QCOMPARE(img.pixel(0, 0), 0U);
-}
-
-void tst_QPainter::fillRect4()
-{
- QImage image(100, 1, QImage::Format_ARGB32_Premultiplied);
- image.fill(0x0);
-
- QImage expected = image;
- expected.fill(0xffffffff);
-
- QPainter p(&image);
- p.scale(1.1, 1);
- p.setPen(Qt::NoPen);
-
- for (int i = 0; i < 33; ++i)
- p.fillRect(QRectF(3 * i, 0, 3, 1), Qt::white);
-
- p.end();
-
- QCOMPARE(image, expected);
-}
-
-void tst_QPainter::drawPath_data()
-{
- QTest::addColumn<QPainterPath>("path");
- QTest::addColumn<QRect>("expectedBounds");
- QTest::addColumn<int>("expectedPixels");
-
- {
- QPainterPath p;
- p.addRect(2, 2, 10, 10);
- QTest::newRow("int-aligned rect") << p << QRect(2, 2, 10, 10) << 10 * 10;
- }
-
- {
- QPainterPath p;
- p.addRect(2.25, 2.25, 10, 10);
- QTest::newRow("non-aligned rect") << p << QRect(3, 3, 10, 10) << 10 * 10;
- }
-
- {
- QPainterPath p;
- p.addRect(2.25, 2.25, 10.5, 10.5);
- QTest::newRow("non-aligned rect 2") << p << QRect(3, 3, 10, 10) << 10 * 10;
- }
-
- {
- QPainterPath p;
- p.addRect(2.5, 2.5, 10, 10);
- QTest::newRow("non-aligned rect 3") << p << QRect(3, 3, 10, 10) << 10 * 10;
- }
-
- {
- QPainterPath p;
- p.addRect(2, 2, 10, 10);
- p.addRect(4, 4, 6, 6);
- QTest::newRow("rect-in-rect") << p << QRect(2, 2, 10, 10) << 10 * 10 - 6 * 6;
- }
-
- {
- QPainterPath p;
- p.addRect(2, 2, 10, 10);
- p.addRect(4, 4, 6, 6);
- p.addRect(6, 6, 2, 2);
- QTest::newRow("rect-in-rect-in-rect") << p << QRect(2, 2, 10, 10) << 10 * 10 - 6 * 6 + 2 * 2;
- }
-}
-
-void tst_QPainter::drawPath()
-{
- QFETCH(QPainterPath, path);
- QFETCH(QRect, expectedBounds);
- QFETCH(int, expectedPixels);
-
- const int offset = 2;
-
- QImage image(expectedBounds.width() + 2 * offset, expectedBounds.height() + 2 * offset,
- QImage::Format_ARGB32_Premultiplied);
- image.fill(QColor(Qt::white).rgb());
-
- QPainter p(&image);
- p.setPen(Qt::NoPen);
- p.setBrush(Qt::black);
- p.translate(offset - expectedBounds.left(), offset - expectedBounds.top());
- p.drawPath(path);
- p.end();
-
- const QRect paintedBounds = getPaintedSize(image, Qt::white);
-
- QCOMPARE(paintedBounds.x(), offset);
- QCOMPARE(paintedBounds.y(), offset);
- QCOMPARE(paintedBounds.width(), expectedBounds.width());
- QCOMPARE(paintedBounds.height(), expectedBounds.height());
-
- if (expectedPixels != -1) {
- int paintedPixels = getPaintedPixels(image, Qt::white);
- QCOMPARE(paintedPixels, expectedPixels);
- }
-}
-
-void tst_QPainter::drawPath2()
-{
- const int w = 50;
-
- for (int h = 5; h < 200; ++h) {
- QPainterPath p1, p2;
- p1.lineTo(w, 0);
- p1.lineTo(w, h);
-
- p2.lineTo(w, h);
- p2.lineTo(0, h);
-
- const int offset = 2;
-
- QImage image(w + 2 * offset, h + 2 * offset,
- QImage::Format_ARGB32_Premultiplied);
- image.fill(QColor(Qt::white).rgb());
-
- QPainter p(&image);
- p.setPen(Qt::NoPen);
- p.setBrush(Qt::black);
- p.translate(offset, offset);
- p.drawPath(p1);
- p.end();
-
- const int p1Pixels = getPaintedPixels(image, Qt::white);
-
- image.fill(QColor(Qt::white).rgb());
- p.begin(&image);
- p.setPen(Qt::NoPen);
- p.setBrush(Qt::black);
- p.translate(offset, offset);
- p.drawPath(p2);
- p.end();
-
- const int p2Pixels = getPaintedPixels(image, Qt::white);
-
- QCOMPARE(p1Pixels + p2Pixels, w * h);
- }
-}
-
-void tst_QPainter::drawPath3()
-{
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
- QImage imgA(400, 400, QImage::Format_RGB32);
-#else
- QImage imgA(100, 100, QImage::Format_RGB32);
-#endif
- imgA.fill(0xffffff);
- QImage imgB = imgA;
-
- QPainterPath path;
- for (int y = 0; y < imgA.height(); ++y) {
- for (int x = 0; x < imgA.width(); ++x) {
- if ((x + y) & 1) {
- imgA.setPixel(x, y, 0);
- path.addRect(x, y, 1, 1);
- }
- }
- }
-
- QPainter p(&imgB);
- p.setPen(Qt::NoPen);
- p.setBrush(Qt::black);
-
- p.drawPath(path);
- p.end();
-
- QVERIFY(imgA == imgB);
-
- imgA.invertPixels();
- imgB.fill(0xffffff);
-
- p.begin(&imgB);
- p.setPen(Qt::NoPen);
- p.setBrush(Qt::black);
-
- QRectF rect(0, 0, imgA.width(), imgA.height());
- path.addRect(rect.adjusted(-10, -10, 10, 10));
- p.drawPath(path);
- p.end();
-
- QVERIFY(imgA == imgB);
-
- path.setFillRule(Qt::WindingFill);
- imgB.fill(0xffffff);
-
- p.begin(&imgB);
- p.setPen(Qt::NoPen);
- p.setBrush(Qt::black);
- QRect clip = rect.adjusted(10, 10, -10, -10).toRect();
- p.setClipRect(clip);
- p.drawPath(path);
- p.end();
-
- QCOMPARE(getPaintedPixels(imgB, Qt::white), clip.width() * clip.height());
-}
-
-void tst_QPainter::drawEllipse_data()
-{
- QTest::addColumn<QSize>("size");
- QTest::addColumn<bool>("usePen");
-
- // The current drawEllipse algorithm (drawEllipse_midpoint_i in
- // qpaintengine_raster.cpp) draws ellipses that are too wide if the
- // ratio between width and hight is too large/small (task 114874). Those
- // ratios are therefore currently avoided.
- for (int w = 10; w < 128; w += 7) {
- for (int h = w/2; h < qMin(2*w, 128); h += 13) {
- QString s = QString("%1x%2").arg(w).arg(h);
- QTest::newRow(QString("%1 with pen").arg(s).toLatin1()) << QSize(w, h) << true;
- QTest::newRow(QString("%1 no pen").arg(s).toLatin1()) << QSize(w, h) << false;
- }
- }
-}
-
-void tst_QPainter::drawEllipse()
-{
- QFETCH(QSize, size);
- QFETCH(bool, usePen);
-
- const int offset = 10;
- QRect rect(QPoint(offset, offset), size);
-
- QImage image(size.width() + 2 * offset, size.height() + 2 * offset,
- QImage::Format_ARGB32_Premultiplied);
- image.fill(QColor(Qt::white).rgb());
-
- QPainter p(&image);
- p.setPen(usePen ? QPen(Qt::black) : QPen(Qt::NoPen));
- p.setBrush(Qt::black);
- p.drawEllipse(rect);
- p.end();
-
- QPixmap pixmap = QPixmap::fromImage(image);
-
- const QRect painted = getPaintedSize(pixmap, Qt::white);
-
- QCOMPARE(painted.x(), rect.x());
- QCOMPARE(painted.y(), rect.y() + (usePen ? 0 : 1));
- QCOMPARE(painted.width(), size.width() + (usePen ? 1 : 0));
- QCOMPARE(painted.height(), size.height() + (usePen ? 1 : -1));
-}
-
-void tst_QPainter::drawClippedEllipse_data()
-{
- QTest::addColumn<QRect>("rect");
-
- for (int w = 20; w < 128; w += 7) {
- for (int h = w/2; h < qMin(2*w, 128); h += 13) {
- QString s = QString("%1x%2").arg(w).arg(h);
- QTest::newRow(QString("%1 top").arg(s).toLatin1()) << QRect(0, -h/2, w, h);
- QTest::newRow(QString("%1 topright").arg(s).toLatin1()) << QRect(w/2, -h/2, w, h);
- QTest::newRow(QString("%1 right").arg(s).toLatin1()) << QRect(w/2, 0, w, h);
- QTest::newRow(QString("%1 bottomright").arg(s).toLatin1()) << QRect(w/2, h/2, w, h);
- QTest::newRow(QString("%1 bottom").arg(s).toLatin1()) << QRect(0, h/2, w, h);
- QTest::newRow(QString("%1 bottomleft").arg(s).toLatin1()) << QRect(-w/2, h/2, w, h);
- QTest::newRow(QString("%1 left").arg(s).toLatin1()) << QRect(-w/2, 0, w, h);
- QTest::newRow(QString("%1 topleft").arg(s).toLatin1()) << QRect(-w/2, -h/2, w, h);
- }
- }
-}
-
-void tst_QPainter::drawClippedEllipse()
-{
- QFETCH(QRect, rect);
- if (sizeof(qreal) != sizeof(double))
- QSKIP("Test only works for qreal==double", SkipAll);
- QImage image(rect.width() + 1, rect.height() + 1,
- QImage::Format_ARGB32_Premultiplied);
- QRect expected = QRect(rect.x(), rect.y(), rect.width()+1, rect.height()+1)
- & QRect(0, 0, image.width(), image.height());
-
-
- image.fill(QColor(Qt::white).rgb());
- QPainter p(&image);
- p.drawEllipse(rect);
- p.end();
-
- QPixmap pixmap = QPixmap::fromImage(image);
- const QRect painted = getPaintedSize(pixmap, Qt::white);
-
- QCOMPARE(painted.x(), expected.x());
- QCOMPARE(painted.y(), expected.y());
- QCOMPARE(painted.width(), expected.width());
- QCOMPARE(painted.height(), expected.height());
-
-}
-
-void tst_QPainter::drawRoundRect()
-{
- QFETCH(QRect, rect);
- QFETCH(bool, usePen);
-
-#ifdef Q_WS_MAC
- if (QTest::currentDataTag() == QByteArray("rect(6, 12, 3, 14) with pen") ||
- QTest::currentDataTag() == QByteArray("rect(6, 17, 3, 25) with pen") ||
- QTest::currentDataTag() == QByteArray("rect(10, 6, 10, 3) with pen") ||
- QTest::currentDataTag() == QByteArray("rect(10, 12, 10, 14) with pen") ||
- QTest::currentDataTag() == QByteArray("rect(13, 45, 17, 80) with pen") ||
- QTest::currentDataTag() == QByteArray("rect(13, 50, 17, 91) with pen") ||
- QTest::currentDataTag() == QByteArray("rect(17, 6, 24, 3) with pen") ||
- QTest::currentDataTag() == QByteArray("rect(24, 12, 38, 14) with pen"))
- QSKIP("The Mac paint engine is off-by-one on certain rect sizes", SkipSingle);
-#endif
- QPixmap pixmap(rect.x() + rect.width() + 10,
- rect.y() + rect.height() + 10);
- {
- pixmap.fill(Qt::white);
- QPainter p(&pixmap);
- p.setPen(usePen ? QPen(Qt::black) : QPen(Qt::NoPen));
- p.setBrush(Qt::black);
- p.drawRoundRect(rect);
- p.end();
-
- int increment = usePen ? 1 : 0;
-
- const QRect painted = getPaintedSize(pixmap, Qt::white);
- QCOMPARE(painted.width(), rect.width() + increment);
- QCOMPARE(painted.height(), rect.height() + increment);
- }
-}
-
-Q_DECLARE_METATYPE(QImage::Format)
-
-void tst_QPainter::qimageFormats_data()
-{
- QTest::addColumn<QImage::Format>("format");
- QTest::newRow("QImage::Format_RGB32") << QImage::Format_RGB32;
- QTest::newRow("QImage::Format_ARGB32") << QImage::Format_ARGB32;
- QTest::newRow("QImage::Format_ARGB32_Premultiplied") << QImage::Format_ARGB32_Premultiplied;
- QTest::newRow("QImage::Format_RGB16") << QImage::Format_RGB16;
- QTest::newRow("Qimage::Format_ARGB8565_Premultiplied") << QImage::Format_ARGB8565_Premultiplied;
- QTest::newRow("Qimage::Format_RGB666") << QImage::Format_RGB666;
- QTest::newRow("Qimage::Format_RGB555") << QImage::Format_RGB555;
- QTest::newRow("Qimage::Format_ARGB8555_Premultiplied") << QImage::Format_ARGB8555_Premultiplied;
- QTest::newRow("Qimage::Format_RGB888") << QImage::Format_RGB888;
-}
-
-/*
- Tests that QPainter can paint on various QImage formats.
-*/
-void tst_QPainter::qimageFormats()
-{
- QFETCH(QImage::Format, format);
-
- const QSize size(100, 100);
- QImage image(size, format);
- image.fill(0);
-
- const QColor testColor(Qt::red);
- QPainter p(&image);
- QVERIFY(p.isActive());
- p.setBrush(QBrush(testColor));
- p.drawRect(QRect(QPoint(0,0), size));
- QCOMPARE(image.pixel(50, 50), testColor.rgb());
-}
-
-void tst_QPainter::fillData()
-{
- QTest::addColumn<QRect>("rect");
- QTest::addColumn<bool>("usePen");
-
- for (int w = 3; w < 50; w += 7) {
- for (int h = 3; h < 50; h += 11) {
- int x = w/2 + 5;
- int y = h/2 + 5;
- QTest::newRow(QString("rect(%1, %2, %3, %4) with pen").arg(x).arg(y).arg(w).arg(h).toLatin1())
- << QRect(x, y, w, h) << true;
- QTest::newRow(QString("rect(%1, %2, %3, %4) no pen").arg(x).arg(y).arg(w).arg(h).toLatin1())
- << QRect(x, y, w, h) << false;
- }
- }
-}
-
-/*
- Test that drawline works properly after setWindow has been called.
-*/
-void tst_QPainter::setWindow()
-{
- QPixmap pixmap(600, 600);
- pixmap.fill(QColor(Qt::white));
-
- QPainter painter(&pixmap);
- painter.setWindow(0, 0, 3, 3);
- painter.drawLine(1, 1, 2, 2);
-
- const QRect painted = getPaintedSize(pixmap, Qt::white);
- QVERIFY(195 < painted.y() && painted.y() < 205); // correct value is around 200
- QVERIFY(195 < painted.height() && painted.height() < 205); // correct value is around 200
-}
-
-void tst_QPainter::combinedMatrix()
-{
- QPixmap pm(64, 64);
-
- QPainter p(&pm);
- p.setWindow(0, 0, 1, 1);
- p.setViewport(32, 0, 32, 32);
-
- p.translate(0.5, 0.5);
-
- QMatrix cm = p.combinedMatrix();
-
- QPointF pt = QPointF(0, 0) * cm;
-
- QCOMPARE(pt.x(), 48.0);
- QCOMPARE(pt.y(), 16.0);
-}
-
-void tst_QPainter::textOnTransparentImage()
-{
- bool foundPixel = false;
- QImage image(10, 10, QImage::Format_ARGB32_Premultiplied);
- image.fill(qRgba(0, 0, 0, 0)); // transparent
- {
- QPainter painter(&image);
- painter.setPen(QColor(255, 255, 255));
- painter.drawText(0, 10, "W");
- }
- for (int x = 0; x < image.width(); ++x)
- for (int y = 0; y < image.height(); ++y)
- if (image.pixel(x, y) != 0)
- foundPixel = true;
- QVERIFY(foundPixel);
-}
-
-void tst_QPainter::renderHints()
-{
- QImage img(1, 1, QImage::Format_RGB32);
-
- QPainter p(&img);
-
- // Turn off all...
- p.setRenderHints(QPainter::RenderHints(0xffffffff), false);
- QCOMPARE(p.renderHints(), QPainter::RenderHints(0));
-
- // Single set/get
- p.setRenderHint(QPainter::Antialiasing);
- QVERIFY(p.renderHints() & QPainter::Antialiasing);
-
- p.setRenderHint(QPainter::Antialiasing, false);
- QVERIFY(!(p.renderHints() & QPainter::Antialiasing));
-
- // Multi set/get
- p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
- QVERIFY(p.renderHints() & (QPainter::Antialiasing | QPainter::SmoothPixmapTransform));
-
- p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, false);
- QVERIFY(!(p.renderHints() & (QPainter::Antialiasing | QPainter::SmoothPixmapTransform)));
-}
-
-int countPixels(const QImage &img, const QRgb &color)
-{
- int count = 0;
- for (int y = 0; y < img.height(); ++y) {
- for (int x = 0; x < img.width(); ++x) {
- count += ((img.pixel(x, y) & 0xffffff) == color);
- }
- }
- return count;
-}
-
-template <typename T>
-void testClipping(QImage &img)
-{
- QPainterPath a, b;
- a.addRect(QRect(2, 2, 4, 4));
- b.addRect(QRect(4, 4, 4, 4));
- QPainter p(&img);
-
- p.end();
- img.fill(0x0);
- p.begin(&img);
- p.setClipPath(a);
- p.setClipPath(b, Qt::IntersectClip);
-
- p.setClipping(false);
- p.setPen(Qt::NoPen);
- p.setBrush(QColor(0xff0000));
- p.drawRect(T(0, 0, 10, 10));
-
- p.setClipping(true);
- p.setBrush(QColor(0x00ff00));
- p.drawRect(T(0, 0, 10, 10));
-
- QCOMPARE(countPixels(img, 0xff0000), 96);
- QCOMPARE(countPixels(img, 0x00ff00), 4);
-}
-
-void tst_QPainter::disableEnableClipping()
-{
- QImage img(10, 10, QImage::Format_RGB32);
-
- testClipping<QRectF>(img);
- testClipping<QRect>(img);
-}
-
-void tst_QPainter::setClipRect()
-{
- QImage img(10, 10, QImage::Format_RGB32);
- // simple test to let valgrind check for buffer overflow
- {
- QPainter p(&img);
- p.setClipRect(-10, -10, 100, 100);
- p.fillRect(-10, -10, 100, 100, QBrush(QColor(Qt::red)));
- }
-
- // rects with negative width/height
- {
- QPainter p(&img);
- p.setClipRect(QRect(10, 10, -10, 10));
- QVERIFY(p.clipRegion().isEmpty());
- p.setClipRect(QRect(10, 10, 10, -10));
- QVERIFY(p.clipRegion().isEmpty());
- p.setClipRect(QRectF(10.5, 10.5, -10.5, 10.5));
- QVERIFY(p.clipRegion().isEmpty());
- p.setClipRect(QRectF(10.5, 10.5, 10.5, -10.5));
- QVERIFY(p.clipRegion().isEmpty());
- }
-}
-
-/*
- This tests the two different clipping approaches in QRasterPaintEngine,
- one when using a QRegion and one when using a QPainterPath. They should
- give equal results.
-*/
-void tst_QPainter::setEqualClipRegionAndPath_data()
-{
- QTest::addColumn<QSize>("deviceSize");
- QTest::addColumn<QRegion>("region");
-
- QTest::newRow("empty") << QSize(100, 100) << QRegion();
- QTest::newRow("simple rect") << QSize(100, 100)
- << QRegion(QRect(5, 5, 10, 10));
-
- QVector<QRect> rects;
- QRegion region;
-
- rects << QRect(5, 5, 10, 10) << QRect(20, 20, 10, 10);
- region.setRects(rects.constData(), rects.size());
- QTest::newRow("two rects") << QSize(100, 100) << region;
-
- rects.clear();
- rects << QRect(5, 5, 10, 10) << QRect(20, 5, 10, 10);
- region.setRects(rects.constData(), rects.size());
- QTest::newRow("two x-adjacent rects") << QSize(100, 100) << region;
-
- rects.clear();
- rects << QRect(0, 0, 10, 100) << QRect(12, 0, 10, 100);
- region.setRects(rects.constData(), rects.size());
- QTest::newRow("two x-adjacent rects 2") << QSize(100, 100) << region;
-
- rects.clear();
- rects << QRect(0, 0, 10, 100) << QRect(12, 0, 10, 100);
- region.setRects(rects.constData(), rects.size());
- QTest::newRow("two x-adjacent rects 3") << QSize(50, 50) << region;
-
- rects.clear();
- rects << QRect(0, 0, 10, 100) << QRect(12, 0, 10, 100);
- region.setRects(rects.constData(), rects.size());
- QTest::newRow("two x-adjacent rects 4") << QSize(101, 101) << region;
-
- region = QRegion(QRect(0, 0, 200, 200), QRegion::Ellipse);
-
- QTest::newRow("ellipse") << QSize(190, 200) << region;
-
- region ^= QRect(50, 50, 50, 50);
- QTest::newRow("ellipse 2") << QSize(200, 200) << region;
-}
-
-void tst_QPainter::setEqualClipRegionAndPath()
-{
- QFETCH(QSize, deviceSize);
- QFETCH(QRegion, region);
-
- QPainterPath path;
- path.addRegion(region);
-
- QImage img1(deviceSize.width(), deviceSize.height(),
- QImage::Format_ARGB32);
- QImage img2(deviceSize.width(), deviceSize.height(),
- QImage::Format_ARGB32);
- img1.fill(0x12345678);
- img2.fill(0x12345678);
-
- {
- QPainter p(&img1);
- p.setClipRegion(region);
- p.fillRect(0, 0, img1.width(), img1.height(), QColor(Qt::red));
- }
- {
- QPainter p(&img2);
- p.setClipPath(path);
- p.fillRect(0, 0, img2.width(), img2.height(), QColor(Qt::red));
- }
-
-#if 0
- if (img1 != img2) {
- img1.save("setEqualClipRegionAndPath_1.xpm", "XPM");
- img2.save("setEqualClipRegionAndPath_2.xpm", "XPM");
- }
-#endif
- QCOMPARE(img1, img2);
-
-#if 0
- // rotated
- img1.fill(0x12345678);
- img2.fill(0x12345678);
-
- {
- QPainter p(&img1);
- p.rotate(25);
- p.setClipRegion(region);
- p.fillRect(0, 0, img1.width(), img1.height(), QColor(Qt::red));
- }
- {
- QPainter p(&img2);
- p.rotate(25);
- p.setClipPath(path);
- p.fillRect(0, 0, img2.width(), img2.height(), QColor(Qt::red));
- }
-
-#if 1
- if (img1 != img2) {
- img1.save("setEqualClipRegionAndPath_1.xpm", "XPM");
- img2.save("setEqualClipRegionAndPath_2.xpm", "XPM");
- }
-#endif
- QCOMPARE(img1, img2);
-#endif
-
- img1.fill(0x12345678);
- img2.fill(0x12345678);
-
- // simple intersectclip
- img1.fill(0x12345678);
- img2.fill(0x12345678);
- {
- QPainter p(&img1);
- p.setClipRegion(region);
- p.setClipRegion(region, Qt::IntersectClip);
- p.fillRect(0, 0, img1.width(), img1.height(), QColor(Qt::red));
- }
- {
- QPainter p(&img2);
- p.setClipPath(path);
- p.setClipPath(path, Qt::IntersectClip);
- p.fillRect(0, 0, img2.width(), img2.height(), QColor(Qt::red));
- }
-#if 0
- if (img1 != img2) {
- img1.save("setEqualClipRegionAndPath_1.png", "PNG");
- img2.save("setEqualClipRegionAndPath_2.png", "PNG");
- }
-#endif
- QCOMPARE(img1, img2);
-
- img1.fill(0x12345678);
- img2.fill(0x12345678);
- {
- QPainter p(&img1);
- p.setClipPath(path);
- p.setClipRegion(region, Qt::IntersectClip);
- p.fillRect(0, 0, img1.width(), img1.height(), QColor(Qt::red));
- }
- {
- QPainter p(&img2);
- p.setClipRegion(region);
- p.setClipPath(path, Qt::IntersectClip);
- p.fillRect(0, 0, img2.width(), img2.height(), QColor(Qt::red));
- }
-#if 0
- if (img1 != img2) {
- img1.save("setEqualClipRegionAndPath_1.xpm", "XPM");
- img2.save("setEqualClipRegionAndPath_2.xpm", "XPM");
- }
-#endif
- QCOMPARE(img1, img2);
-
-}
-
-void tst_QPainter::clippedFillPath_data()
-{
- QTest::addColumn<QSize>("imageSize");
- QTest::addColumn<QPainterPath>("path");
- QTest::addColumn<QRect>("clipRect");
- QTest::addColumn<QBrush>("brush");
- QTest::addColumn<QPen>("pen");
-
- QLinearGradient gradient(QPoint(0, 0), QPoint(100, 100));
- gradient.setColorAt(0, Qt::red);
- gradient.setColorAt(1, Qt::blue);
-
-
- QPen pen2(QColor(223, 223, 0, 223));
- pen2.setWidth(2);
-
- QPainterPath path;
- path.addRect(QRect(15, 15, 50, 50));
- QTest::newRow("simple rect 0") << QSize(100, 100) << path
- << QRect(15, 15, 49, 49)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("simple rect 1") << QSize(100, 100) << path
- << QRect(15, 15, 50, 50)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("simple rect 2") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("simple rect 3") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(QColor(Qt::blue))
- << QPen(Qt::NoPen);
- QTest::newRow("simple rect 4") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(gradient)
- << pen2;
-
- path = QPainterPath();
- path.addEllipse(QRect(15, 15, 50, 50));
- QTest::newRow("ellipse 0") << QSize(100, 100) << path
- << QRect(15, 15, 49, 49)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("ellipse 1") << QSize(100, 100) << path
- << QRect(15, 15, 50, 50)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("ellipse 2") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("ellipse 3") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(QColor(Qt::blue))
- << QPen(Qt::NoPen);
- QTest::newRow("ellipse 4") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(gradient)
- << pen2;
-
- path = QPainterPath();
- path.addRoundRect(QRect(15, 15, 50, 50), 20);
- QTest::newRow("round rect 0") << QSize(100, 100) << path
- << QRect(15, 15, 49, 49)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("round rect 1") << QSize(100, 100) << path
- << QRect(15, 15, 50, 50)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("round rect 2") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("round rect 3") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(QColor(Qt::blue))
- << QPen(Qt::NoPen);
- QTest::newRow("round rect 4") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(gradient)
- << pen2;
-
- path = QPainterPath();
- path.moveTo(15, 50);
- path.cubicTo(40, 50, 40, 15, 65, 50);
- path.lineTo(15, 50);
- QTest::newRow("cubic 0") << QSize(100, 100) << path
- << QRect(15, 15, 49, 49)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("cubic 1") << QSize(100, 100) << path
- << QRect(15, 15, 50, 50)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("cubic 2") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(Qt::NoBrush)
- << QPen(Qt::black);
- QTest::newRow("cubic 3") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(QColor(Qt::blue))
- << QPen(Qt::NoPen);
- QTest::newRow("cubic 4") << QSize(100, 100) << path
- << QRect(15, 15, 51, 51)
- << QBrush(gradient)
- << pen2;
-}
-
-void tst_QPainter::clippedFillPath()
-{
- QFETCH(QSize, imageSize);
- QFETCH(QPainterPath, path);
- QFETCH(QRect, clipRect);
- QPainterPath clipPath;
- clipPath.addRect(clipRect);
- QFETCH(QBrush, brush);
- QFETCH(QPen, pen);
-
- const int width = imageSize.width();
- const int height = imageSize.height();
-
- QImage clippedRect(width, height, QImage::Format_ARGB32_Premultiplied);
- clippedRect.fill(0x12345678);
- {
- QPainter painter(&clippedRect);
- painter.setPen(pen);
- painter.setBrush(brush);
- painter.setClipRect(clipRect);
- painter.drawPath(path);
- }
-
- QImage clippedPath(width, height, QImage::Format_ARGB32_Premultiplied);
- clippedPath.fill(0x12345678);
- {
- QPainter painter(&clippedPath);
- painter.setPen(pen);
- painter.setBrush(brush);
- painter.setClipPath(clipPath);
- painter.drawPath(path);
- }
-
-#if 0
- if (clippedRect != clippedPath) {
- clippedRect.save(QString("clippedRect.png"), "PNG");
- clippedPath.save(QString("clippedPath.png"), "PNG");
- }
-#endif
- QCOMPARE(clippedRect, clippedPath);
-
- // repeat with antialiasing
-
- clippedRect.fill(0x12345678);
- {
- QPainter painter(&clippedRect);
- painter.setRenderHint(QPainter::Antialiasing);
- painter.setPen(pen);
- painter.setBrush(brush);
- painter.setClipRect(clipRect);
- painter.drawPath(path);
- }
-
- clippedPath.fill(0x12345678);
- {
- QPainter painter(&clippedPath);
- painter.setRenderHint(QPainter::Antialiasing);
- painter.setPen(pen);
- painter.setBrush(brush);
- painter.setClipPath(clipPath);
- painter.drawPath(path);
- }
-
-#if 1
- if (clippedRect != clippedPath) {
- clippedRect.save(QString("clippedRect.png"), "PNG");
- clippedPath.save(QString("clippedPath.png"), "PNG");
- }
-#endif
- QCOMPARE(clippedRect, clippedPath);
-
-}
-
-void tst_QPainter::clippedLines_data()
-{
- QTest::addColumn<QSize>("imageSize");
- QTest::addColumn<QLineF>("line");
- QTest::addColumn<QRect>("clipRect");
- QTest::addColumn<QPen>("pen");
-
- QPen pen2(QColor(223, 223, 0, 223));
- pen2.setWidth(2);
-
- QVector<QLineF> lines;
- lines << QLineF(15, 15, 65, 65)
- << QLineF(14, 14, 66, 66)
- << QLineF(16, 16, 64, 64)
- << QLineF(65, 65, 15, 15)
- << QLineF(66, 66, 14, 14)
- << QLineF(64, 64, 14, 14)
- << QLineF(15, 50, 15, 64)
- << QLineF(15, 50, 15, 65)
- << QLineF(15, 50, 15, 66)
- << QLineF(15, 50, 64, 50)
- << QLineF(15, 50, 65, 50)
- << QLineF(15, 50, 66, 50);
-
- foreach (QLineF line, lines) {
- QString desc = QString("line (%1, %2, %3, %4) %5").arg(line.x1())
- .arg(line.y1()).arg(line.x2()).arg(line.y2());
- QTest::newRow(qPrintable(desc.arg(0))) << QSize(100, 100) << line
- << QRect(15, 15, 49, 49)
- << QPen(Qt::black);
- QTest::newRow(qPrintable(desc.arg(1))) << QSize(100, 100) << line
- << QRect(15, 15, 50, 50)
- << QPen(Qt::black);
- QTest::newRow(qPrintable(desc.arg(2))) << QSize(100, 100) << line
- << QRect(15, 15, 51, 51)
- << QPen(Qt::black);
- QTest::newRow(qPrintable(desc.arg(3))) << QSize(100, 100) << line
- << QRect(15, 15, 51, 51)
- << QPen(Qt::NoPen);
- QTest::newRow(qPrintable(desc.arg(4))) << QSize(100, 100) << line
- << QRect(15, 15, 51, 51)
- << pen2;
- }
-}
-
-void tst_QPainter::clippedLines()
-{
- QFETCH(QSize, imageSize);
- QFETCH(QLineF, line);
- QFETCH(QRect, clipRect);
- QPainterPath clipPath;
- clipPath.addRect(clipRect);
- QFETCH(QPen, pen);
-
- const int width = imageSize.width();
- const int height = imageSize.height();
-
- QImage clippedRect(width, height, QImage::Format_ARGB32_Premultiplied);
- clippedRect.fill(0x12345678);
- {
- QPainter painter(&clippedRect);
- painter.setPen(pen);
- painter.setClipRect(clipRect);
- painter.drawLine(line);
- painter.drawLine(line.toLine());
- }
-
- QImage clippedPath(width, height, QImage::Format_ARGB32_Premultiplied);
- clippedPath.fill(0x12345678);
- {
- QPainter painter(&clippedPath);
- painter.setPen(pen);
- painter.setClipPath(clipPath);
- painter.drawLine(line);
- painter.drawLine(line.toLine());
- }
-
-#if 0
- if (clippedRect != clippedPath) {
- clippedRect.save(QString("clippedRect.png"), "PNG");
- clippedPath.save(QString("clippedPath.png"), "PNG");
- }
-#endif
- QCOMPARE(clippedRect, clippedPath);
-
- // repeat with antialiasing
- clippedRect.fill(0x12345678);
- {
- QPainter painter(&clippedRect);
- painter.setRenderHint(QPainter::Antialiasing);
- painter.setPen(pen);
- painter.setClipRect(clipRect);
- painter.drawLine(line);
- painter.drawLine(line.toLine());
- }
-
- clippedPath.fill(0x12345678);
- {
- QPainter painter(&clippedPath);
- painter.setRenderHint(QPainter::Antialiasing);
- painter.setPen(pen);
- painter.setClipPath(clipPath);
- painter.drawLine(line);
- painter.drawLine(line.toLine());
- }
-
-#if 0
- if (clippedRect != clippedPath) {
- clippedRect.save(QString("clippedRect.png"), "PNG");
- clippedPath.save(QString("clippedPath.png"), "PNG");
- }
-#endif
- QCOMPARE(clippedRect, clippedPath);
-}
-
-void tst_QPainter::clippedPolygon_data()
-{
- clippedFillPath_data();
-};
-
-void tst_QPainter::clippedPolygon()
-{
- QFETCH(QSize, imageSize);
- QFETCH(QPainterPath, path);
- QPolygonF polygon = path.toFillPolygon();
- QFETCH(QRect, clipRect);
- QPainterPath clipPath;
- clipPath.addRect(clipRect);
- QFETCH(QPen, pen);
- QFETCH(QBrush, brush);
-
- const int width = imageSize.width();
- const int height = imageSize.height();
-
- QImage clippedRect(width, height, QImage::Format_ARGB32_Premultiplied);
- clippedRect.fill(0x12345678);
- {
- QPainter painter(&clippedRect);
- painter.setPen(pen);
- painter.setBrush(brush);
- painter.setClipRect(clipRect);
- painter.drawPolygon(polygon);
- painter.drawPolygon(polygon.toPolygon());
- }
-
- QImage clippedPath(width, height, QImage::Format_ARGB32_Premultiplied);
- clippedPath.fill(0x12345678);
- {
- QPainter painter(&clippedPath);
- painter.setPen(pen);
- painter.setBrush(brush);
- painter.setClipRect(clipRect);
- painter.drawPolygon(polygon);
- painter.drawPolygon(polygon.toPolygon());
- }
-
-#if 0
- if (clippedRect != clippedPath) {
- clippedRect.save(QString("clippedRect.png"), "PNG");
- clippedPath.save(QString("clippedPath.png"), "PNG");
- }
-#endif
- QCOMPARE(clippedRect, clippedPath);
-
- // repeat with antialiasing
-
- clippedRect.fill(0x12345678);
- {
- QPainter painter(&clippedRect);
- painter.setRenderHint(QPainter::Antialiasing);
- painter.setPen(pen);
- painter.setBrush(brush);
- painter.setClipRect(clipRect);
- painter.drawPolygon(polygon);
- painter.drawPolygon(polygon.toPolygon());
- }
-
- clippedPath.fill(0x12345678);
- {
- QPainter painter(&clippedPath);
- painter.setRenderHint(QPainter::Antialiasing);
- painter.setPen(pen);
- painter.setBrush(brush);
- painter.setClipRect(clipRect);
- painter.drawPolygon(polygon);
- painter.drawPolygon(polygon.toPolygon());
- }
-
-#if 0
- if (clippedRect != clippedPath) {
- clippedRect.save(QString("clippedRect.png"), "PNG");
- clippedPath.save(QString("clippedPath.png"), "PNG");
- }
-#endif
- QCOMPARE(clippedRect, clippedPath);
-}
-
-// this just draws some text that should be clipped in the raster
-// paint engine.
-void tst_QPainter::clippedText()
-{
- for (char ch = 'A'; ch < 'Z'; ++ch) {
- //qDebug() << ch;
- QFont f;
- f.setPixelSize(24);
- QFontMetrics metrics(f);
- QRect textRect = metrics.boundingRect(QChar(ch));
-
- if (textRect.width() <= 8)
- continue;
- if (textRect.height() <= 8)
- continue;
-
- QRect imageRect = textRect.adjusted(4, 4, -4, -4);
-
- QImage image(imageRect.size(), QImage::Format_ARGB32_Premultiplied);
-
- image.fill(qRgba(255, 255, 255, 255));
- {
- QPainter painter(&image);
- painter.setFont(f);
- painter.setPen(Qt::black);
-
- painter.drawText(0, 0, QChar(ch));
- }
-
- image.fill(qRgba(255, 255, 255, 255));
- {
- QPainter painter(&image);
- painter.setFont(f);
- painter.setPen(Qt::black);
-
- painter.drawText(-imageRect.topLeft(), QChar(ch));
- }
-
- bool foundPixel = false;
- for (int x = 0; x < image.width(); ++x)
- for (int y = 0; y < image.height(); ++y)
- if (image.pixel(x, y) != 0)
- foundPixel = true;
- // can't QVERIFY(foundPixel) as sometimes all pixels are clipped
- // away. For example for 'O'
- // just call /some/ function to prevent the compiler from optimizing
- // foundPixel away
- QString::number(foundPixel);
-
- //image.save(QString("debug") + ch + ".xpm");
- }
-
- QVERIFY(true); // reached, don't trigger any valgrind errors
-}
-
-void tst_QPainter::setOpacity_data()
-{
- QTest::addColumn<QImage::Format>("destFormat");
- QTest::addColumn<QImage::Format>("srcFormat");
-
- QTest::newRow("ARGB32P on ARGB32P") << QImage::Format_ARGB32_Premultiplied
- << QImage::Format_ARGB32_Premultiplied;
-
- QTest::newRow("ARGB32 on ARGB32") << QImage::Format_ARGB32
- << QImage::Format_ARGB32;
-
- QTest::newRow("RGB32 on RGB32") << QImage::Format_RGB32
- << QImage::Format_RGB32;
-
- QTest::newRow("RGB16 on RGB16") << QImage::Format_RGB16
- << QImage::Format_RGB16;
-
- QTest::newRow("ARGB8565_Premultiplied on ARGB8565_Premultiplied") << QImage::Format_ARGB8565_Premultiplied
- << QImage::Format_ARGB8565_Premultiplied;
-
- QTest::newRow("RGB555 on RGB555") << QImage::Format_RGB555
- << QImage::Format_RGB555;
-
- QTest::newRow("RGB666 on RGB666") << QImage::Format_RGB666
- << QImage::Format_RGB666;
-
- QTest::newRow("ARGB8555_Premultiplied on ARGB8555_Premultiplied") << QImage::Format_ARGB8555_Premultiplied
- << QImage::Format_ARGB8555_Premultiplied;
-
- QTest::newRow("RGB888 on RGB888") << QImage::Format_RGB888
- << QImage::Format_RGB888;
-
- QTest::newRow("RGB32 on RGB16") << QImage::Format_RGB16
- << QImage::Format_RGB32;
-
- QTest::newRow("RGB32 on ARGB8565_Premultiplied") << QImage::Format_ARGB8565_Premultiplied
- << QImage::Format_RGB32;
-
- QTest::newRow("RGB32 on RGB666") << QImage::Format_RGB666
- << QImage::Format_RGB32;
-
- QTest::newRow("RGB32 on RGB555") << QImage::Format_RGB555
- << QImage::Format_RGB32;
-
- QTest::newRow("RGB32 on ARGB8555_Premultiplied") << QImage::Format_ARGB8555_Premultiplied
- << QImage::Format_RGB32;
-
- QTest::newRow("RGB32 on RGB888") << QImage::Format_RGB888
- << QImage::Format_RGB32;
-
- QTest::newRow("RGB16 on RGB32") << QImage::Format_RGB32
- << QImage::Format_RGB16;
-
- QTest::newRow("ARGB8565_Premultiplied on RGB32") << QImage::Format_RGB32
- << QImage::Format_ARGB8565_Premultiplied;
-
- QTest::newRow("RGB666 on RGB32") << QImage::Format_RGB32
- << QImage::Format_RGB666;
-
- QTest::newRow("RGB555 on RGB32") << QImage::Format_RGB32
- << QImage::Format_RGB555;
-
- QTest::newRow("ARGB8555_Premultiplied on RGB32") << QImage::Format_RGB32
- << QImage::Format_ARGB8555_Premultiplied;
-
- QTest::newRow("RGB888 on RGB32") << QImage::Format_RGB32
- << QImage::Format_RGB888;
-
- QTest::newRow("RGB555 on RGB888") << QImage::Format_RGB888
- << QImage::Format_RGB555;
-
- QTest::newRow("RGB666 on RGB888") << QImage::Format_RGB888
- << QImage::Format_RGB666;
-
- QTest::newRow("RGB444 on RGB444") << QImage::Format_RGB444
- << QImage::Format_RGB444;
-}
-
-void tst_QPainter::setOpacity()
-{
- QFETCH(QImage::Format, destFormat);
- QFETCH(QImage::Format, srcFormat);
-
- const QSize imageSize(12, 12);
- const QRect imageRect(QPoint(0, 0), imageSize);
- QColor destColor = Qt::black;
- QColor srcColor = Qt::white;
-
- QImage dest(imageSize, destFormat);
- QImage src(imageSize, srcFormat);
-
- QPainter p;
- p.begin(&dest);
- p.fillRect(imageRect, destColor);
- p.end();
-
- p.begin(&src);
- p.fillRect(imageRect, srcColor);
- p.end();
-
- p.begin(&dest);
- p.setOpacity(0.5);
- p.drawImage(imageRect, src, imageRect);
- p.end();
-
- QImage actual = dest.convertToFormat(QImage::Format_RGB32);
-
- for (int y = 0; y < actual.height(); ++y) {
- QRgb *p = (QRgb *)actual.scanLine(y);
- for (int x = 0; x < actual.width(); ++x) {
- QVERIFY(qAbs(qRed(p[x]) - 127) <= 0xf);
- QVERIFY(qAbs(qGreen(p[x]) - 127) <= 0xf);
- QVERIFY(qAbs(qBlue(p[x]) - 127) <= 0xf);
- }
- }
-}
-
-void tst_QPainter::drawhelper_blend_untransformed_data()
-{
- setOpacity_data();
-}
-
-void tst_QPainter::drawhelper_blend_untransformed()
-{
- QFETCH(QImage::Format, destFormat);
- QFETCH(QImage::Format, srcFormat);
-
- const int size = 128;
- const QSize imageSize(size, size);
- const QRect paintRect(1, 0, size - 2, size); // needs alignment and tailing
-
- QColor destColor(127, 127, 127);
- QColor srcColor(Qt::white);
-
- QImage dest(imageSize, destFormat);
- QImage src(imageSize, srcFormat);
-
- QPainter p;
- p.begin(&src);
- p.fillRect(paintRect, srcColor);
- p.end();
-
- QList<qreal> opacities = (QList<qreal>() << 0.0 << 0.1 << 0.01 << 0.4
- << 0.5 << 0.6 << 0.9 << 1.0);
- foreach (qreal opacity, opacities) {
- p.begin(&dest);
- p.fillRect(paintRect, destColor);
-
- p.setOpacity(opacity);
- p.drawImage(paintRect, src, paintRect);
- p.end();
-
- // sanity check: make sure all pixels are equal
- QImage expected(size - 2, size, destFormat);
- p.begin(&expected);
- p.fillRect(0, 0, expected.width(), expected.height(),
- QColor(dest.pixel(1, 0)));
- p.end();
-
- const QImage subDest(dest.bits() + dest.depth() / 8,
- dest.width() - 2, dest.height(),
- dest.bytesPerLine(), dest.format());
-
- if (dest.format() == QImage::Format_ARGB8565_Premultiplied ||
- dest.format() == QImage::Format_ARGB8555_Premultiplied) {
- // Test skipped due to rounding errors...
- continue;
- }
-#if 0
- if (subDest != expected) {
- qDebug() << "size" << size << "opacity" << opacity;
- for (int j = 0; j < expected.height(); ++j) {
- for (int i = 0; i < expected.width(); ++i) {
- if (expected.pixel(i,j) != subDest.pixel(i,j))
- qDebug() << i << j << hex << expected.pixel(i, j)
- << subDest.pixel(i, j);
- }
- }
- }
-#endif
- QCOMPARE(subDest, expected);
- }
-}
-
-void tst_QPainter::drawhelper_blend_tiled_untransformed_data()
-{
- setOpacity_data();
-}
-
-void tst_QPainter::drawhelper_blend_tiled_untransformed()
-{
- QFETCH(QImage::Format, destFormat);
- QFETCH(QImage::Format, srcFormat);
-
- const int size = 128;
- const QSize imageSize(size, size);
- const QRect paintRect(1, 0, size - 2, size); // needs alignment and tailing
-
- QColor destColor(127, 127, 127);
- QColor srcColor(Qt::white);
-
- QImage dest(imageSize, destFormat);
- QImage src(imageSize / 2, srcFormat);
-
- QPainter p;
- p.begin(&src);
- p.fillRect(QRect(QPoint(0, 0), imageSize/ 2), srcColor);
- p.end();
-
- const QBrush brush(src);
-
- QList<qreal> opacities = (QList<qreal>() << 0.0 << 0.1 << 0.01 << 0.4
- << 0.5 << 0.6 << 0.9 << 1.0);
- foreach (qreal opacity, opacities) {
- p.begin(&dest);
- p.fillRect(paintRect, destColor);
-
- p.setOpacity(opacity);
- p.fillRect(paintRect, brush);
- p.end();
-
- // sanity check: make sure all pixels are equal
- QImage expected(size - 2, size, destFormat);
- p.begin(&expected);
- p.fillRect(0, 0, expected.width(), expected.height(),
- QColor(dest.pixel(1, 0)));
- p.end();
-
- const QImage subDest(dest.bits() + dest.depth() / 8,
- dest.width() - 2, dest.height(),
- dest.bytesPerLine(), dest.format());
-
- if (dest.format() == QImage::Format_ARGB8565_Premultiplied ||
- dest.format() == QImage::Format_ARGB8555_Premultiplied) {
- // Skipping test due to rounding errors. Test needs rewrite
- continue;
- }
-#if 0
- if (subDest != expected) {
- qDebug() << "size" << size << "opacity" << opacity;
- for (int j = 0; j < expected.height(); ++j) {
- for (int i = 0; i < expected.width(); ++i) {
- if (expected.pixel(i,j) != subDest.pixel(i,j))
- qDebug() << i << j << hex << expected.pixel(i, j)
- << subDest.pixel(i, j);
- }
- }
- }
-#endif
- QCOMPARE(subDest, expected);
- }
-}
-
-static QPaintEngine::PaintEngineFeatures no_porter_duff()
-{
- QPaintEngine::PaintEngineFeatures features = QPaintEngine::AllFeatures;
- return features & ~QPaintEngine::PorterDuff;
-}
-
-class DummyPaintEngine : public QPaintEngine, public QPaintDevice
-{
-public:
- DummyPaintEngine() : QPaintEngine(no_porter_duff()) {}
- virtual bool begin(QPaintDevice *) { return true; }
- virtual bool end() { return true; }
-
- virtual void updateState(const QPaintEngineState &) {}
- virtual void drawPixmap(const QRectF &, const QPixmap &, const QRectF &) {}
-
- virtual Type type() const { return User; }
-
- virtual QPaintEngine *paintEngine() const { return (QPaintEngine *)this; }
-
- virtual int metric(PaintDeviceMetric metric) const { Q_UNUSED(metric); return 0; };
-};
-
-static bool success;
-
-void porterDuff_warningChecker(QtMsgType type, const char *msg)
-{
- if (type == QtWarningMsg && msg == QLatin1String("QPainter::setCompositionMode: PorterDuff modes not supported on device"))
- success = false;
-}
-
-void tst_QPainter::porterDuff_warning()
-{
- QtMsgHandler old = qInstallMsgHandler(porterDuff_warningChecker);
- DummyPaintEngine dummy;
- QPainter p(&dummy);
-
- success = true;
- p.setCompositionMode(QPainter::CompositionMode_Source);
- QVERIFY(success);
-
- success = true;
- p.setCompositionMode(QPainter::CompositionMode_SourceOver);
- QVERIFY(success);
-
- success = true;
- p.setCompositionMode(QPainter::CompositionMode_DestinationOver);
- QVERIFY(!success);
-
- QVERIFY(qInstallMsgHandler(old) == porterDuff_warningChecker);
-}
-
-class quint24
-{
-public:
- inline quint24(quint32 v)
- {
- data[0] = qBlue(v);
- data[1] = qGreen(v);
- data[2] = qRed(v);
- }
-
- inline operator quint32 ()
- {
- return qRgb(data[2], data[1], data[0]);
- }
-
- inline bool operator==(const quint24 &v) const {
- return (data[0] == v.data[0] && data[1] == v.data[1] && data[2] == v.data[2]);
- }
-
- uchar data[3];
-} Q_PACKED;
-
-void tst_QPainter::drawhelper_blend_color()
-{
- QImage dest(32, 32, QImage::Format_ARGB8555_Premultiplied);
- dest.fill(0xff000000);
-
- {
- QPainter p(&dest);
- p.fillRect(0, 0, dest.width(), dest.height(), QColor(255, 0, 0, 127));
- }
-
- QImage expected(32, 32, QImage::Format_ARGB8555_Premultiplied);
- expected.fill(0xff3c007f);
-
- QCOMPARE(dest.pixel(1, 1), expected.pixel(1, 1));
- QCOMPARE(dest, expected);
-}
-
-class ViewportTestWidget : public QWidget
-{
-public:
- ViewportTestWidget(QWidget *parent = 0) : QWidget(parent), hasPainted(false) {}
- QSize sizeHint() const {
- return QSize(100, 100);
- }
-
- QRect viewport;
- bool hasPainted;
-
-protected:
- void paintEvent(QPaintEvent *) {
- hasPainted = true;
- QPainter p(this);
- viewport = p.viewport();
- }
-};
-
-void tst_QPainter::childWidgetViewport()
-{
- QWidget parent;
- parent.setAutoFillBackground(true);
- parent.resize(200, 200);
- ViewportTestWidget child(&parent);
- child.setAutoFillBackground(true);
- parent.show();
- parent.update();
- qApp->processEvents();
-
- if (child.hasPainted) {
- QCOMPARE(child.viewport, QRect(QPoint(0, 0), child.sizeHint()));
- } else {
- qWarning("Failed to ensure that paintEvent has been run. Could not run test.");
- }
-}
-
-void tst_QPainter::fillRect_objectBoundingModeGradient()
-{
- QImage a(10, 10, QImage::Format_ARGB32_Premultiplied);
- a.fill(0x0);
- QImage b = a;
-
- QLinearGradient g(QPoint(0, 0), QPoint(0, 1));
- g.setColorAt(0, Qt::red);
- g.setColorAt(1, Qt::blue);
- g.setCoordinateMode(QGradient::ObjectBoundingMode);
-
- QPainter p(&a);
- p.fillRect(QRect(0, 0, a.width(), a.height()), g);
- p.end();
-
- QPainterPath path;
- path.addRect(0, 0, a.width(), a.height());
-
- p.begin(&b);
- p.fillPath(path, g);
- p.end();
-
- QCOMPARE(a, b);
-}
-
-void tst_QPainter::fillRect_stretchToDeviceMode()
-{
- QImage img(64, 64, QImage::Format_ARGB32_Premultiplied);
-
- QLinearGradient g(QPoint(0, 0), QPoint(0, 1));
- g.setCoordinateMode(QGradient::StretchToDeviceMode);
-
- QPainter p(&img);
- p.fillRect(img.rect(), g);
- p.end();
-
- for (int i = 1; i < img.height(); ++i)
- QVERIFY(img.pixel(0, i) != img.pixel(0, i-1));
-}
-
-void tst_QPainter::monoImages()
-{
- Qt::GlobalColor colorPairs[][2] = {
- { Qt::white, Qt::black },
- { Qt::color0, Qt::color1 },
- { Qt::red, Qt::blue }
- };
-
- const int numColorPairs = sizeof(colorPairs) / sizeof(QRgb[2]);
-
- QImage transparent(2, 2, QImage::Format_ARGB32_Premultiplied);
- transparent.fill(0x0);
-
- for (int i = 1; i < QImage::NImageFormats; ++i) {
- for (int j = 0; j < numColorPairs; ++j) {
- const QImage::Format format = QImage::Format(i);
- if (format == QImage::Format_Indexed8)
- continue;
-
- QImage img(2, 2, format);
-
- if (img.colorCount() > 0) {
- img.setColor(0, QColor(colorPairs[j][0]).rgba());
- img.setColor(1, QColor(colorPairs[j][1]).rgba());
- }
-
- img.fill(0x0);
- QPainter p(&img);
- p.fillRect(0, 0, 2, 2, colorPairs[j][0]);
- p.fillRect(0, 0, 1, 1, colorPairs[j][1]);
- p.fillRect(1, 1, 1, 1, colorPairs[j][1]);
- p.end();
-
- QImage original = img;
-
- p.begin(&img);
- p.drawImage(0, 0, transparent);
- p.end();
-
- // drawing a transparent image on top of another image
- // should not change the image
- QCOMPARE(original, img);
-
- if (img.colorCount() == 0)
- continue;
-
- for (int k = 0; k < 2; ++k) {
- QPainter p(&img);
- p.fillRect(0, 0, 2, 2, colorPairs[j][k]);
- p.end();
-
- QImage argb32p(2, 2, QImage::Format_ARGB32_Premultiplied);
- p.begin(&argb32p);
- p.fillRect(0, 0, 2, 2, colorPairs[j][k]);
- p.end();
-
- QCOMPARE(argb32p, img.convertToFormat(argb32p.format()));
-
- // drawing argb32p image on mono image
- p.begin(&img);
- p.drawImage(0, 0, argb32p);
- p.end();
-
- QCOMPARE(argb32p, img.convertToFormat(argb32p.format()));
-
- // drawing mono image on argb32p image
- p.begin(&argb32p);
- p.drawImage(0, 0, img);
- p.end();
-
- QCOMPARE(argb32p, img.convertToFormat(argb32p.format()));
- }
- }
- }
-}
-
-#if !defined(Q_OS_IRIX) && !defined(Q_OS_AIX) && !defined(Q_CC_MSVC) && !defined(Q_OS_SOLARIS) && !defined(Q_OS_SYMBIAN)
-#include <fenv.h>
-
-static const QString fpeExceptionString(int exception)
-{
-#ifdef FE_INEXACT
- if (exception & FE_INEXACT)
- return QLatin1String("Inexact result");
-#endif
- if (exception & FE_UNDERFLOW)
- return QLatin1String("Underflow");
- if (exception & FE_OVERFLOW)
- return QLatin1String("Overflow");
- if (exception & FE_DIVBYZERO)
- return QLatin1String("Divide by zero");
- if (exception & FE_INVALID)
- return QLatin1String("Invalid operation");
- return QLatin1String("No exception");
-}
-
-class FpExceptionChecker
-{
-public:
- FpExceptionChecker(int exceptionMask)
- : m_exceptionMask(exceptionMask)
- {
- feclearexcept(m_exceptionMask);
- }
-
- ~FpExceptionChecker()
- {
- const int exceptions = fetestexcept(m_exceptionMask);
- QVERIFY2(!exceptions, qPrintable(QLatin1String("Floating point exception: ") + fpeExceptionString(exceptions)));
- }
-
-private:
- int m_exceptionMask;
-};
-
-void fpe_rasterizeLine_task232012()
-{
- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
- QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
- img.fill(0x0);
- QPainter p(&img);
-
- p.setBrush(Qt::black);
- p.drawRect(QRectF(0, 0, 5, 0));
- p.drawRect(QRectF(0, 0, 0, 5));
-}
-
-void fpe_pixmapTransform()
-{
- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
-
- QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
-
- QPainter p(&img);
-
- const qreal scaleFactor = 0.001;
- const int translateDistance = 1000000;
-
- p.setPen(Qt::red);
- p.setBrush(QBrush(Qt::red,Qt::Dense6Pattern));
-
- for (int i = 0; i < 2; ++i) {
- p.setRenderHint(QPainter::SmoothPixmapTransform, i);
-
- p.resetTransform();
- p.scale(1.1, 1.1);
- p.translate(translateDistance, 0);
- p.drawRect(-translateDistance, 0, 100, 100);
-
- p.resetTransform();
- p.scale(scaleFactor, scaleFactor);
- p.drawRect(QRectF(0, 0, 1 / scaleFactor, 1 / scaleFactor));
- }
-}
-
-void fpe_zeroLengthLines()
-{
- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
-
- QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
-
- QPainter p(&img);
-
- p.setPen(QPen(Qt::black, 3));
- p.drawLine(64, 64, 64, 64);
-}
-
-void fpe_divByZero()
-{
- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
-
- QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
-
- QPainter p(&img);
-
- p.setRenderHint(QPainter::Antialiasing);
-
- p.drawRect(QRectF(10, 10, 100, 0));
- p.drawRect(QRectF(10, 10, 0, 100));
-
- p.drawRect(QRect(10, 10, 100, 0));
- p.drawRect(QRect(10, 10, 0, 100));
-
- p.fillRect(QRectF(10, 10, 100, 0), Qt::black);
- p.fillRect(QRectF(10, 10, 0, 100), Qt::black);
-
- p.fillRect(QRect(10, 10, 100, 0), Qt::black);
- p.fillRect(QRect(10, 10, 0, 100), Qt::black);
-}
-
-void fpe_steepSlopes()
-{
- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
-
- QImage img(1024, 1024, QImage::Format_ARGB32_Premultiplied);
-
- QFETCH(QTransform, transform);
- QFETCH(QLineF, line);
- QFETCH(bool, antialiased);
-
- QPainter p(&img);
-
- p.setPen(QPen(Qt::black, 1));
- p.setRenderHint(QPainter::Antialiasing, antialiased);
- p.setTransform(transform);
-
- p.drawLine(line);
-}
-
-void fpe_radialGradients()
-{
- FpExceptionChecker checker(FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID | FE_DIVBYZERO);
-
- QImage img(21, 21, QImage::Format_ARGB32_Premultiplied);
- img.fill(0);
-
- double m = img.width() * 0.5;
-
- QPainter p(&img);
- p.setRenderHints(QPainter::Antialiasing);
- p.setPen(Qt::NoPen);
- p.setBrush(QRadialGradient(m, m, m));
- p.drawEllipse(img.rect());
-}
-
-#define FPE_TEST(x) \
-void tst_QPainter::x() \
-{ \
- ::x(); \
-}
-#else
-#define FPE_TEST(x) \
-void tst_QPainter::x() \
-{ \
- QSKIP("Floating point exception checking (fenv.h) not available", SkipAll); \
-}
-#endif
-
-FPE_TEST(fpe_rasterizeLine_task232012)
-FPE_TEST(fpe_pixmapTransform)
-FPE_TEST(fpe_zeroLengthLines)
-FPE_TEST(fpe_divByZero)
-FPE_TEST(fpe_steepSlopes)
-FPE_TEST(fpe_radialGradients)
-
-void tst_QPainter::fpe_steepSlopes_data()
-{
- QTest::addColumn<QTransform>("transform");
- QTest::addColumn<QLineF>("line");
- QTest::addColumn<bool>("antialiased");
-
- {
- const qreal dsin = 0.000014946676875461832484392500630665523431162000633776187896728515625;
- const qreal dcos = 0.9999999998882984630910186751862056553363800048828125;
-
- const QTransform transform = QTransform(QMatrix(dcos, dsin, -dsin, dcos, 64, 64));
- const QLineF line(2, 2, 2, 6);
-
- QTest::newRow("task 207147 aa") << transform << line << true;
- QTest::newRow("task 207147 no aa") << transform << line << false;
- }
-
- {
- QTransform transform;
- transform.rotate(0.0000001);
- const QLineF line(5, 5, 10, 5);
-
- QTest::newRow("task 166702 aa") << transform << line << true;
- QTest::newRow("task 166702 no aa") << transform << line << false;
- }
-
- {
- const QTransform transform;
- const QLineF line(2.5, 2.5, 2.5 + 1/256., 60000.5);
-
- QTest::newRow("steep line aa") << transform << line << true;
- QTest::newRow("steep line no aa") << transform << line << false;
- }
-
- {
- const QTransform transform;
- const QLineF line(2.5, 2.5, 2.5 + 1/256., 1024);
-
- QTest::newRow("steep line 2 aa") << transform << line << true;
- QTest::newRow("steep line 2 no aa") << transform << line << false;
- }
-
- {
- const QTransform transform;
- const QLineF line(2.5, 2.5, 2.5 + 1/64., 1024);
-
- QTest::newRow("steep line 3 aa") << transform << line << true;
- QTest::newRow("steep line 3 no aa") << transform << line << false;
- }
-}
-
-qreal randf()
-{
- return rand() / (RAND_MAX + 1.0);
-}
-
-QPointF randInRect(const QRectF &rect)
-{
- const qreal x = rect.left() + rect.width() * randf();
- const qreal y = rect.top() + rect.height() * randf();
-
- return QPointF(x, y);
-}
-
-void tst_QPainter::rasterizer_asserts()
-{
- QImage img(64, 64, QImage::Format_ARGB32_Premultiplied);
-
- QRectF middle(QPointF(0, 0), img.size());
- QRectF left = middle.translated(-middle.width(), 0);
- QRectF right = middle.translated(middle.width(), 0);
-
- QPainter p(&img);
- img.fill(Qt::white);
- p.setCompositionMode(QPainter::CompositionMode_Destination);
- for (int i = 0; i < 100000; ++i) {
- QPainterPath path;
- path.moveTo(randInRect(middle));
- path.lineTo(randInRect(left));
- path.lineTo(randInRect(right));
-
- p.fillPath(path, Qt::black);
- }
-}
-
-void tst_QPainter::rasterizer_negativeCoords()
-{
- QImage img(64, 64, QImage::Format_ARGB32_Premultiplied);
- img.fill(0x0);
-
- QImage original = img;
-
- QPainter p(&img);
- p.rotate(90);
- p.fillRect(0, 0, 70, 50, Qt::black);
-
- // image should not have changed
- QCOMPARE(img.pixel(0, 0), 0x0U);
- QCOMPARE(img, original);
-}
-
-void tst_QPainter::blendOverFlow_data()
-{
- QTest::addColumn<QImage::Format>("format");
- QTest::addColumn<int>("width");
- QTest::addColumn<int>("height");
-
- QImage::Format format = QImage::Format_ARGB8555_Premultiplied;
- QTest::newRow("555,1,1") << format << 1 << 1;
- QTest::newRow("555,2,2") << format << 2 << 2;
- QTest::newRow("555,10,10") << format << 10 << 10;
-
- format = QImage::Format_ARGB8565_Premultiplied;
- QTest::newRow("565,1,1") << format << 1 << 1;
- QTest::newRow("565,2,2") << format << 2 << 2;
- QTest::newRow("565,10,10") << format << 10 << 10;
-}
-
-void tst_QPainter::blendOverFlow()
-{
- QFETCH(QImage::Format, format);
- QFETCH(int, width);
- QFETCH(int, height);
-
- QImage dest(width, height, format);
- QImage src(width, height, format);
-
- {
- QPainter p(&dest);
- p.fillRect(0, 0, width, height, Qt::green);
- }
- QImage expected = dest;
-
- {
- QPainter p(&src);
- p.setCompositionMode(QPainter::CompositionMode_Source);
- p.fillRect(0, 0, width, height, QColor(0, 255, 0, 6));
- }
-
- {
- QPainter p(&dest);
- p.drawImage(0, 0, src);
- }
-
- QCOMPARE(dest.pixel(0, 0), expected.pixel(0, 0));
- QCOMPARE(dest, expected);
-}
-
-void tst_QPainter::largeImagePainting_data()
-{
- QTest::addColumn<int>("width");
- QTest::addColumn<int>("height");
- QTest::addColumn<bool>("antialiased");
-
- QTest::newRow("tall") << 1 << 32767 << false;
- QTest::newRow("tall aa") << 1 << 32767 << true;
- QTest::newRow("wide") << 32767 << 1 << false;
- QTest::newRow("wide aa") << 32767 << 1 << true;
-}
-
-void tst_QPainter::largeImagePainting()
-{
- QPainterPath path;
- path.addRect(0, 0, 1, 1);
- path.addRect(2, 0, 1, 1);
- path.addRect(0, 2, 1, 1);
-
- QFETCH(int, width);
- QFETCH(int, height);
- QFETCH(bool, antialiased);
-
- QImage img(width, height, QImage::Format_ARGB32_Premultiplied);
- img.fill(0x0);
-
- QPainter p(&img);
- p.setPen(Qt::NoPen);
- p.setBrush(Qt::white);
-
- p.setRenderHint(QPainter::Antialiasing, antialiased);
-
- for (int i = 0; i < img.width(); i += 4) {
- p.drawPath(path);
- p.translate(4, 0);
- }
-
- p.resetMatrix();
-
- for (int i = 4; i < img.height(); i += 4) {
- p.translate(0, 4);
- p.drawPath(path);
- }
-
- for (int i = 0; i < img.width(); ++i) {
- if (i % 2)
- QCOMPARE(img.pixel(i, 0), 0x0U);
- else
- QCOMPARE(img.pixel(i, 0), 0xffffffffU);
- }
-
- for (int i = 1; i < img.height(); ++i) {
- if (i % 2)
- QCOMPARE(img.pixel(0, i), 0x0U);
- else
- QCOMPARE(img.pixel(0, i), 0xffffffffU);
- }
-}
-
-void tst_QPainter::imageScaling_task206785()
-{
- QImage src(32, 2, QImage::Format_ARGB32_Premultiplied);
- src.fill(0xffffffff);
-
- QImage dst(128, 128, QImage::Format_ARGB32_Premultiplied);
-
- QImage expected(128, 128, QImage::Format_ARGB32_Premultiplied);
- expected.fill(0xffffffff);
-
- for (int i = 1; i < 5; ++i) {
- qreal scale = i / qreal(5);
-
- dst.fill(0xff000000);
-
- QPainter p(&dst);
- p.scale(dst.width() / qreal(src.width()), scale);
-
- for (int y = 0; y * scale < dst.height(); ++y)
- p.drawImage(0, y, src);
-
- p.end();
-
- QCOMPARE(dst, expected);
- }
-}
-
-#define FOR_EACH_NEIGHBOR_8 for (int dx = -1; dx <= 1; ++dx) for (int dy = -1; dy <= 1; ++dy) if (dx != 0 || dy != 0)
-#define FOR_EACH_NEIGHBOR_4 for (int dx = -1; dx <= 1; ++dx) for (int dy = -1; dy <= 1; ++dy) if ((dx == 0) != (dy == 0))
-
-uint qHash(const QPoint &point)
-{
- return qHash(qMakePair(point.x(), point.y()));
-}
-
-bool verifyOutlineFillConsistency(const QImage &img, QRgb outside, QRgb inside, QRgb outline)
-{
- if (img.pixel(img.width() / 2, img.height() / 2) != inside)
- return false;
-
- int x = img.width() / 2;
- int y = img.height() / 2;
-
- while (img.pixel(++x, y) == inside)
- ;
-
- if (img.pixel(x, y) != outline)
- return false;
-
- QQueue<QPoint> discovered;
- discovered.enqueue(QPoint(x, y));
-
- QVector<bool> visited(img.width() * img.height());
- visited.fill(false);
-
- while (!discovered.isEmpty()) {
- QPoint p = discovered.dequeue();
- QRgb pixel = img.pixel(p.x(), p.y());
-
- bool &v = visited[p.y() * img.width() + p.x()];
- if (v)
- continue;
- v = true;
-
- if (pixel == outline) {
- FOR_EACH_NEIGHBOR_8 {
- QPoint x(p.x() + dx, p.y() + dy);
- discovered.enqueue(x);
- }
- } else {
- FOR_EACH_NEIGHBOR_4 {
- if ((dx == 0) == (dy == 0))
- continue;
- QRgb neighbor = img.pixel(p.x() + dx, p.y() + dy);
- if ((pixel == inside && neighbor == outside) ||
- (pixel == outside && neighbor == inside))
- return false;
- }
- }
- }
-
- return true;
-}
-
-#undef FOR_EACH_NEIGHBOR_8
-#undef FOR_EACH_NEIGHBOR_4
-
-void tst_QPainter::outlineFillConsistency()
-{
- QSKIP("currently broken...", SkipAll);
- return;
-
- QImage dst(256, 256, QImage::Format_ARGB32_Premultiplied);
-
- QPolygonF poly;
- poly << QPointF(5, -100) << QPointF(-70, 20) << QPointF(95, 25);
-
- QPen pen(Qt::red);
- QBrush brush(Qt::black);
-
- QRgb background = 0xffffffff;
- for (int i = 0; i < 360; ++i) {
- dst.fill(background);
-
- QPainter p(&dst);
- p.translate(dst.width() / 2, dst.height() / 2);
-
- QPolygonF copy = poly;
- for (int j = 0; j < copy.size(); ++j)
- copy[j] = QTransform().rotate(i).map(copy[j]);
-
- p.setPen(pen);
- p.setBrush(brush);
- p.drawPolygon(copy);
- p.end();
-
-#if 0
- if (!verifyOutlineFillConsistency(dst, background, p.brush().color().rgba(), p.pen().color().rgba()))
- dst.save(QString("outlineFillConsistency-%1.png").arg(i));
-#endif
-
- QVERIFY(verifyOutlineFillConsistency(dst, background, brush.color().rgba(), pen.color().rgba()));
- }
-}
-
-void tst_QPainter::drawImage_task217400_data()
-{
- QTest::addColumn<QImage::Format>("format");
-
- QTest::newRow("444") << QImage::Format_ARGB4444_Premultiplied;
- QTest::newRow("555") << QImage::Format_ARGB8555_Premultiplied;
- QTest::newRow("565") << QImage::Format_ARGB8565_Premultiplied;
-// QTest::newRow("666") << QImage::Format_ARGB6666_Premultiplied;
- QTest::newRow("888p") << QImage::Format_ARGB32_Premultiplied;
- QTest::newRow("888") << QImage::Format_ARGB32;
-}
-
-void tst_QPainter::drawImage_task217400()
-{
- QFETCH(QImage::Format, format);
-
- const QImage src = QImage(QString(SRCDIR) + "/task217400.png")
- .convertToFormat(format);
- QVERIFY(!src.isNull());
-
- QImage expected(src.size(), format);
- {
- QPainter p(&expected);
- p.fillRect(0, 0, expected.width(), expected.height(), Qt::white);
- p.drawImage(0, 0, src);
- }
-
- for (int i = 1; i <= 4; ++i) {
- QImage dest(src.width() + i, src.height(), format);
- {
- QPainter p(&dest);
- p.fillRect(0, 0, dest.width(), dest.height(), Qt::white);
- p.drawImage(i, 0, src);
- }
-
- const QImage result = dest.copy(i, 0, src.width(), src.height());
-
-#if 0
- if (result != expected) {
- qDebug("i=%i", i);
- result.save("result.png");
- expected.save("expected.png");
- }
-#endif
- QCOMPARE(result, expected);
- }
-}
-
-void tst_QPainter::drawImage_task258776()
-{
- QImage src(16, 16, QImage::Format_RGB888);
- QImage dest(33, 33, QImage::Format_RGB888);
- src.fill(0x00ff00);
- dest.fill(0x0000ff);
-
- QPainter painter(&dest);
- painter.drawImage(QRectF(0.499, 0.499, 32, 32), src, QRectF(0, 0, 16, 16));
- painter.end();
-
- QImage expected(33, 33, QImage::Format_RGB32);
- expected.fill(0xff0000);
-
- painter.begin(&expected);
- painter.drawImage(QRectF(0, 0, 32, 32), src);
- painter.end();
-
- dest = dest.convertToFormat(QImage::Format_RGB32);
-
- dest.save("dest.png");
- expected.save("expected.png");
- QCOMPARE(dest, expected);
-}
-
-void tst_QPainter::clipRectSaveRestore()
-{
- QImage img(64, 64, QImage::Format_ARGB32_Premultiplied);
- img.fill(0x0);
-
- QPainter p(&img);
- p.setClipRect(QRect(0, 0, 10, 10));
- p.save();
- p.setClipRect(QRect(5, 5, 5, 5), Qt::IntersectClip);
- p.restore();
- p.fillRect(0, 0, 64, 64, Qt::black);
- p.end();
-
- QCOMPARE(img.pixel(0, 0), QColor(Qt::black).rgba());
-}
-
-void tst_QPainter::clippedImage()
-{
- QImage img(16, 16, QImage::Format_ARGB32_Premultiplied);
- img.fill(0x0);
-
- QImage src(16, 16, QImage::Format_RGB32);
- src.fill(QColor(Qt::red).rgba());
-
- QPainter p(&img);
- p.setClipRect(QRect(1, 1, 14, 14));
- p.drawImage(0, 0, src);
- p.end();
-
- QCOMPARE(img.pixel(0, 0), 0x0U);
- QCOMPARE(img.pixel(1, 1), src.pixel(1, 1));
-}
-
-void tst_QPainter::stateResetBetweenQPainters()
-{
- QImage img(16, 16, QImage::Format_ARGB32);
-
- {
- QPainter p(&img);
- p.setCompositionMode(QPainter::CompositionMode_Source);
- p.fillRect(0, 0, 16, 16, Qt::red);
- }
-
- {
- QPainter p2(&img);
- p2.fillRect(0, 0, 16, 16, QColor(0, 0, 255, 63));
- }
-
- img.save("foo.png");
-
- QVERIFY(img.pixel(0, 0) != qRgba(0, 0, 255, 63));
- QVERIFY(qRed(img.pixel(0, 0)) > 0); // We didn't erase the red channel...
- QVERIFY(qBlue(img.pixel(0, 0)) < 255); // We blended the blue channel
-}
-
-void tst_QPainter::drawRect_task215378()
-{
- QImage img(11, 11, QImage::Format_ARGB32_Premultiplied);
- img.fill(QColor(Qt::white).rgba());
-
- QPainter p(&img);
- p.setPen(QColor(127, 127, 127, 127));
- p.drawRect(0, 0, 10, 10);
- p.end();
-
- QCOMPARE(img.pixel(0, 0), img.pixel(1, 0));
- QCOMPARE(img.pixel(0, 0), img.pixel(0, 1));
- QVERIFY(img.pixel(0, 0) != img.pixel(1, 1));
-}
-
-void tst_QPainter::drawRect_task247505()
-{
- QImage a(10, 10, QImage::Format_ARGB32_Premultiplied);
- a.fill(0);
- QImage b = a;
-
- QPainter p(&a);
- p.setPen(Qt::NoPen);
- p.setBrush(Qt::black);
- p.drawRect(QRectF(10, 0, -10, 10));
- p.end();
- p.begin(&b);
- p.setPen(Qt::NoPen);
- p.setBrush(Qt::black);
- p.drawRect(QRectF(0, 0, 10, 10));
- p.end();
-
- QCOMPARE(a, b);
-}
-
-void tst_QPainter::drawImage_data()
-{
- QTest::addColumn<int>("x");
- QTest::addColumn<int>("y");
- QTest::addColumn<int>("w");
- QTest::addColumn<int>("h");
- QTest::addColumn<QImage::Format>("srcFormat");
- QTest::addColumn<QImage::Format>("dstFormat");
-
- for (int srcFormat = QImage::Format_Mono; srcFormat < QImage::NImageFormats; ++srcFormat) {
- for (int dstFormat = QImage::Format_Mono; dstFormat < QImage::NImageFormats; ++dstFormat) {
- if (dstFormat == QImage::Format_Indexed8)
- continue;
- for (int odd_x = 0; odd_x <= 1; ++odd_x) {
- for (int odd_width = 0; odd_width <= 1; ++odd_width) {
- QString description =
- QString("srcFormat %1, dstFormat %2, odd x: %3, odd width: %4")
- .arg(srcFormat).arg(dstFormat).arg(odd_x).arg(odd_width);
-
- QTest::newRow(qPrintable(description)) << (10 + odd_x) << 10 << (20 + odd_width) << 20
- << QImage::Format(srcFormat)
- << QImage::Format(dstFormat);
- }
- }
- }
- }
-}
-
-bool verifyImage(const QImage &img, int x, int y, int w, int h, uint background)
-{
- int imgWidth = img.width();
- int imgHeight = img.height();
- for (int i = 0; i < imgHeight; ++i) {
- for (int j = 0; j < imgWidth; ++j) {
- uint pixel = img.pixel(j, i);
- bool outside = j < x || j >= (x + w) || i < y || i >= (y + h);
- if (outside != (pixel == background)) {
- //printf("%d %d, expected %x, got %x, outside: %d\n", x, y, background, pixel, outside);
- return false;
- }
- }
- }
-
- return true;
-}
-
-void tst_QPainter::drawImage()
-{
- QFETCH(int, x);
- QFETCH(int, y);
- QFETCH(int, w);
- QFETCH(int, h);
- QFETCH(QImage::Format, srcFormat);
- QFETCH(QImage::Format, dstFormat);
-
- QImage dst(40, 40, QImage::Format_RGB32);
- dst.fill(0xffffffff);
-
- dst = dst.convertToFormat(dstFormat);
- uint background = dst.pixel(0, 0);
-
- QImage src(w, h, QImage::Format_RGB32);
- src.fill(0xff000000);
- src = src.convertToFormat(srcFormat);
-
- QPainter p(&dst);
- p.drawImage(x, y, src);
- p.end();
-
- QVERIFY(verifyImage(dst, x, y, w, h, background));
-}
-
-void tst_QPainter::imageCoordinateLimit()
-{
- QImage img(64, 40000, QImage::Format_MonoLSB);
- QPainter p(&img);
- p.drawText(10, 36000, QLatin1String("foo"));
- p.setPen(QPen(Qt::black, 2));
- p.drawLine(10, 0, 60, 40000);
-
- p.setRenderHint(QPainter::Antialiasing);
- p.drawLine(10, 0, 60, 40000);
-}
-
-
-void tst_QPainter::imageBlending_data()
-{
- QTest::addColumn<QImage::Format>("sourceFormat");
- QTest::addColumn<QImage::Format>("destFormat");
- QTest::addColumn<int>("error");
-
- int error_rgb565 = ((1<<3) + (1<<2) + (1<<3));
- QTest::newRow("rgb565_on_rgb565") << QImage::Format_RGB16
- << QImage::Format_RGB16
- << 0;
- QTest::newRow("argb8565_on_rgb565") << QImage::Format_ARGB8565_Premultiplied
- << QImage::Format_RGB16
- << error_rgb565;
-
- QTest::newRow("rgb32_on_rgb565") << QImage::Format_RGB32
- << QImage::Format_RGB16
- << error_rgb565;
-
- QTest::newRow("argb32pm_on_rgb565") << QImage::Format_ARGB32_Premultiplied
- << QImage::Format_RGB16
- << error_rgb565;
-}
-
-int diffColor(quint32 ap, quint32 bp)
-{
- int a = qAlpha(ap) - qAlpha(bp);
- int r = qRed(ap) - qRed(bp);
- int b = qBlue(ap) - qBlue(bp);
- int g = qBlue(ap) - qBlue(bp);
-
- return qAbs(a) + qAbs(r) + qAbs(g) + qAbs(b);
-}
-
-// this test assumes premultiplied pixels...
-
-void tst_QPainter::imageBlending()
-{
- QFETCH(QImage::Format, sourceFormat);
- QFETCH(QImage::Format, destFormat);
- QFETCH(int, error);
-
- QImage dest;
- {
- QImage orig_dest(6, 6, QImage::Format_ARGB32_Premultiplied);
- orig_dest.fill(0);
- QPainter p(&orig_dest);
- p.fillRect(0, 0, 6, 3, QColor::fromRgbF(1, 0, 0));
- p.fillRect(3, 0, 3, 6, QColor::fromRgbF(0, 0, 1, 0.5));
- p.end();
- dest = orig_dest.convertToFormat(destFormat);
-
- // An image like this: (r = red, m = magenta, b = light alpha blue, 0 = transparent)
- // r r r m m m
- // r r r m m m
- // r r r m m m
- // 0 0 0 b b b
- // 0 0 0 b b b
- // 0 0 0 b b b
- }
-
- QImage source;
- {
- QImage orig_source(6, 6, QImage::Format_ARGB32_Premultiplied);
- orig_source.fill(0);
- QPainter p(&orig_source);
- p.fillRect(1, 1, 4, 4, QColor::fromRgbF(0, 1, 0, 0.5));
- p.fillRect(2, 2, 2, 2, QColor::fromRgbF(0, 1, 0));
- p.end();
- source = orig_source.convertToFormat(sourceFormat);
-
- // An image like this: (0 = transparent, . = green at 0.5 alpha, g = opaque green.
- // 0 0 0 0 0 0
- // 0 . . . . 0
- // 0 . g g . 0
- // 0 . g g . 0
- // 0 . . . . 0
- // 0 0 0 0 0 0
- }
-
- QPainter p(&dest);
- p.drawImage(0, 0, source);
- p.end();
-
- // resulting image:
- // r r r m m m
- // r r. r. m. m. m
- // r r. g g m. m
- // 0 . g g b. b
- // 0 . . b. b. b
- // 0 0 0 b b b
-
- // the g pixels, always green..
- QVERIFY(diffColor(dest.pixel(2, 2), 0xff00ff00) <= error); // g
-
- if (source.hasAlphaChannel()) {
- QVERIFY(diffColor(dest.pixel(0, 0), 0xffff0000) <= error); // r
- QVERIFY(diffColor(dest.pixel(5, 0), 0xff7f007f) <= error); // m
- QVERIFY(diffColor(dest.pixel(1, 1), 0xff7f7f00) <= error); // r.
- QVERIFY(diffColor(dest.pixel(4, 1), 0xff3f7f3f) <= error); // m.
- if (dest.hasAlphaChannel()) {
- QVERIFY(diffColor(dest.pixel(1, 3), 0x7f007f00) <= error); // .
- QVERIFY(diffColor(dest.pixel(4, 3), 0x7f007f3f) <= error); // b.
- QVERIFY(diffColor(dest.pixel(4, 3), 0x7f007f3f) <= error); // b.
- QVERIFY(diffColor(dest.pixel(4, 4), 0x7f00007f) <= error); // b
- QVERIFY(diffColor(dest.pixel(4, 0), 0) <= 0); // 0
- }
- } else {
- QVERIFY(diffColor(dest.pixel(0, 0), 0xff000000) <= 0);
- QVERIFY(diffColor(dest.pixel(1, 1), 0xff007f00) <= error);
- }
-}
-
-void tst_QPainter::imageBlending_clipped()
-{
- QImage src(20, 20, QImage::Format_RGB16);
- QPainter p(&src);
- p.fillRect(src.rect(), Qt::red);
- p.end();
-
- QImage dst(40, 20, QImage::Format_RGB16);
- p.begin(&dst);
- p.fillRect(dst.rect(), Qt::white);
- p.end();
-
- QImage expected = dst;
-
- p.begin(&dst);
- p.setClipRect(QRect(23, 0, 20, 20));
-
- // should be completely clipped
- p.drawImage(QRectF(3, 0, 20, 20), src);
- p.end();
-
- // dst should be left unchanged
- QCOMPARE(dst, expected);
-}
-
-void tst_QPainter::paintOnNullPixmap()
-{
- QPixmap pix(16, 16);
-
- QPixmap textPixmap;
- QPainter p(&textPixmap);
- p.drawPixmap(10, 10, pix);
- p.end();
-
- QPixmap textPixmap2(16,16);
- p.begin(&textPixmap2);
- p.end();
-}
-
-void tst_QPainter::checkCompositionMode()
-{
- QImage refImage(50,50,QImage::Format_ARGB32);
- QPainter painter(&refImage);
- painter.fillRect(QRect(0,0,50,50),Qt::blue);
-
- QImage testImage(50,50,QImage::Format_ARGB32);
- QPainter p(&testImage);
- p.fillRect(QRect(0,0,50,50),Qt::red);
- p.save();
- p.setCompositionMode(QPainter::CompositionMode_SourceOut);
- p.restore();
- p.fillRect(QRect(0,0,50,50),Qt::blue);
-
- QCOMPARE(refImage.pixel(20,20),testImage.pixel(20,20));
-}
-
-static QLinearGradient inverseGradient(QLinearGradient g)
-{
- QLinearGradient g2 = g;
-
- QGradientStops stops = g.stops();
-
- QGradientStops inverse;
- foreach (QGradientStop stop, stops)
- inverse << QGradientStop(1 - stop.first, stop.second);
-
- g2.setStops(inverse);
- return g2;
-}
-
-void tst_QPainter::linearGradientSymmetry_data()
-{
- QTest::addColumn<QGradientStops>("stops");
-
- if (sizeof(qreal) != sizeof(float)) {
- QGradientStops stops;
- stops << qMakePair(qreal(0.0), QColor(Qt::blue));
- stops << qMakePair(qreal(0.2), QColor(220, 220, 220, 0));
- stops << qMakePair(qreal(0.6), QColor(Qt::red));
- stops << qMakePair(qreal(0.9), QColor(220, 220, 220, 255));
- stops << qMakePair(qreal(1.0), QColor(Qt::black));
- QTest::newRow("multiple stops") << stops;
- }
-
- {
- QGradientStops stops;
- stops << qMakePair(qreal(0.0), QColor(Qt::blue));
- stops << qMakePair(qreal(1.0), QColor(Qt::black));
- QTest::newRow("two stops") << stops;
- }
-
- if (sizeof(qreal) != sizeof(float)) {
- QGradientStops stops;
- stops << qMakePair(qreal(0.3), QColor(Qt::blue));
- stops << qMakePair(qreal(0.6), QColor(Qt::black));
- QTest::newRow("two stops 2") << stops;
- }
-}
-
-void tst_QPainter::linearGradientSymmetry()
-{
-#ifdef Q_WS_QWS
- QSKIP("QWS has limited resolution in the gradient color table", SkipAll);
-#else
- QFETCH(QGradientStops, stops);
-
- QImage a(64, 8, QImage::Format_ARGB32_Premultiplied);
- QImage b(64, 8, QImage::Format_ARGB32_Premultiplied);
-
- a.fill(0);
- b.fill(0);
-
- QLinearGradient gradient(QRectF(b.rect()).topLeft(), QRectF(b.rect()).topRight());
- gradient.setStops(stops);
-
- QPainter pa(&a);
- pa.fillRect(a.rect(), gradient);
- pa.end();
-
- QPainter pb(&b);
- pb.fillRect(b.rect(), inverseGradient(gradient));
- pb.end();
-
- b = b.mirrored(true);
- QCOMPARE(a, b);
-#endif
-}
-
-void tst_QPainter::gradientInterpolation()
-{
- QImage image(256, 8, QImage::Format_ARGB32_Premultiplied);
- QPainter painter;
-
- QLinearGradient gradient(QRectF(image.rect()).topLeft(), QRectF(image.rect()).topRight());
- gradient.setColorAt(0.0, QColor(255, 0, 0, 0));
- gradient.setColorAt(1.0, Qt::blue);
-
- image.fill(0);
- painter.begin(&image);
- painter.fillRect(image.rect(), gradient);
- painter.end();
-
- const QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(3));
-
- for (int i = 0; i < 256; ++i) {
- QCOMPARE(qAlpha(line[i]), qBlue(line[i])); // bright blue
- QVERIFY(qAbs(qAlpha(line[i]) - i) < 3); // linear alpha
- QCOMPARE(qRed(line[i]), 0); // no red component
- QCOMPARE(qGreen(line[i]), 0); // no green component
- }
-
- gradient.setInterpolationMode(QGradient::ComponentInterpolation);
-
- image.fill(0);
- painter.begin(&image);
- painter.fillRect(image.rect(), gradient);
- painter.end();
-
- for (int i = 1; i < 256; ++i) {
- if (i < 128) {
- QVERIFY(qRed(line[i]) >= qBlue(line[i])); // red is dominant
- } else {
- QVERIFY(qRed(line[i]) <= qBlue(line[i])); // blue is dominant
- }
- QVERIFY((qRed(line[i]) - 0.5) * (qAlpha(line[i - 1]) - 0.5) <= (qRed(line[i - 1]) + 0.5) * (qAlpha(line[i]) + 0.5)); // decreasing red
- QVERIFY((qBlue(line[i]) + 0.5) * (qAlpha(line[i - 1]) + 0.5) >= (qBlue(line[i - 1]) - 0.5) * (qAlpha(line[i]) - 0.5)); // increasing blue
- QVERIFY(qAbs(qAlpha(line[i]) - i) < 3); // linear alpha
- QCOMPARE(qGreen(line[i]), 0); // no green component
- }
-}
-
-void tst_QPainter::drawPolygon()
-{
- QImage img(128, 128, QImage::Format_ARGB32_Premultiplied);
-
- QPainterPathStroker stroker;
- stroker.setWidth(1.5);
-
- QPainterPath path;
- path.moveTo(2, 34);
- path.lineTo(34, 2);
-
- QPolygonF poly = stroker.createStroke(path).toFillPolygon();
-
- img.fill(0xffffffff);
- QPainter p(&img);
- p.setRenderHint(QPainter::Antialiasing);
- p.setBrush(Qt::red);
- p.setPen(Qt::NoPen);
- p.drawPolygon(poly);
- p.translate(64, 64);
- p.drawPolygon(poly);
- p.end();
-
- QImage a = img.copy();
-
- img.fill(0xffffffff);
- p.begin(&img);
- p.setRenderHint(QPainter::Antialiasing);
- p.setBrush(Qt::red);
- p.setPen(Qt::NoPen);
- p.translate(64, 64);
- p.drawPolygon(poly);
- p.resetTransform();
- p.drawPolygon(poly);
- p.end();
-
- QCOMPARE(a, img);
-}
-
-void tst_QPainter::inactivePainter()
-{
- // This test succeeds if it doesn't segfault.
-
- QPainter p;
- QPainterPath path;
- QRegion region(QRect(20, 20, 60, 40));
- QPolygonF polygon(QVector<QPointF>() << QPointF(0, 0) << QPointF(12, 0) << QPointF(8, 6));
- path.addPolygon(polygon);
-
- p.save();
- p.restore();
-
- p.background();
- p.setBackground(QBrush(Qt::blue));
-
- p.brush();
- p.setBrush(Qt::red);
- p.setBrush(Qt::NoBrush);
- p.setBrush(QBrush(Qt::white, Qt::DiagCrossPattern));
-
- p.backgroundMode();
- p.setBackgroundMode(Qt::OpaqueMode);
-
- p.boundingRect(QRectF(0, 0, 100, 20), Qt::AlignCenter, QLatin1String("Hello, World!"));
- p.boundingRect(QRect(0, 0, 100, 20), Qt::AlignCenter, QLatin1String("Hello, World!"));
-
- p.brushOrigin();
- p.setBrushOrigin(QPointF(12, 34));
- p.setBrushOrigin(QPoint(12, 34));
-
- p.clipPath();
- p.clipRegion();
- p.hasClipping();
- p.setClipPath(path);
- p.setClipRect(QRectF(42, 42, 42, 42));
- p.setClipRect(QRect(42, 42, 42, 42));
- p.setClipRegion(region);
- p.setClipping(true);
-
- p.combinedMatrix();
- p.combinedTransform();
-
- p.compositionMode();
- p.setCompositionMode(QPainter::CompositionMode_Plus);
-
- p.device();
- p.deviceMatrix();
- p.deviceTransform();
-
- p.font();
- p.setFont(QFont(QLatin1String("Times"), 24));
-
- p.fontInfo();
- p.fontMetrics();
-
- p.layoutDirection();
- p.setLayoutDirection(Qt::RightToLeft);
-
- p.opacity();
- p.setOpacity(0.75);
-
- p.pen();
- p.setPen(QPen(Qt::red));
- p.setPen(Qt::green);
- p.setPen(Qt::NoPen);
-
- p.renderHints();
- p.setRenderHint(QPainter::Antialiasing, true);
- p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, false);
-
- p.resetMatrix();
- p.resetTransform();
- p.rotate(1);
- p.scale(2, 2);
- p.shear(-1, 1);
- p.translate(3, 14);
-
- p.viewTransformEnabled();
- p.setViewTransformEnabled(true);
-
- p.viewport();
- p.setViewport(QRect(10, 10, 620, 460));
-
- p.window();
- p.setWindow(QRect(10, 10, 620, 460));
-
- p.worldMatrix();
- p.setWorldMatrix(QMatrix().translate(43, 21), true);
- p.setWorldMatrixEnabled(true);
-
- p.transform();
- p.setTransform(QTransform().translate(12, 34), true);
-
- p.worldTransform();
- p.setWorldTransform(QTransform().scale(0.5, 0.5), true);
-}
-
-bool testCompositionMode(int src, int dst, int expected, QPainter::CompositionMode op, qreal opacity = 1.0)
-{
- // The test image needs to be large enough to test SIMD code
- const QSize imageSize(100, 100);
-
- QImage actual(imageSize, QImage::Format_ARGB32_Premultiplied);
- actual.fill(QColor(dst, dst, dst).rgb());
-
- QPainter p(&actual);
- p.setCompositionMode(op);
- p.setOpacity(opacity);
- p.fillRect(QRect(QPoint(), imageSize), QColor(src, src, src));
- p.end();
-
- if (qRed(actual.pixel(0, 0)) != expected) {
- qDebug("Fail: mode %d, src[%d] dst [%d] actual [%d] expected [%d]", op,
- src, dst, qRed(actual.pixel(0, 0)), expected);
- return false;
- } else {
- QImage refImage(imageSize, QImage::Format_ARGB32_Premultiplied);
- refImage.fill(QColor(expected, expected, expected).rgb());
- return actual == refImage;
- }
-}
-
-void tst_QPainter::extendedBlendModes()
-{
- QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Plus));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Plus));
- QVERIFY(testCompositionMode(127, 128, 255, QPainter::CompositionMode_Plus));
- QVERIFY(testCompositionMode(127, 0, 127, QPainter::CompositionMode_Plus));
- QVERIFY(testCompositionMode( 0, 127, 127, QPainter::CompositionMode_Plus));
- QVERIFY(testCompositionMode(255, 0, 255, QPainter::CompositionMode_Plus));
- QVERIFY(testCompositionMode( 0, 255, 255, QPainter::CompositionMode_Plus));
- QVERIFY(testCompositionMode(128, 128, 255, QPainter::CompositionMode_Plus));
-
- QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Plus, 0.3));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Plus, 0.3));
- QVERIFY(testCompositionMode(127, 128, 165, QPainter::CompositionMode_Plus, 0.3));
- QVERIFY(testCompositionMode(127, 0, 37, QPainter::CompositionMode_Plus, 0.3));
- QVERIFY(testCompositionMode( 0, 127, 127, QPainter::CompositionMode_Plus, 0.3));
- QVERIFY(testCompositionMode(255, 0, 75, QPainter::CompositionMode_Plus, 0.3));
- QVERIFY(testCompositionMode( 0, 255, 255, QPainter::CompositionMode_Plus, 0.3));
- QVERIFY(testCompositionMode(128, 128, 166, QPainter::CompositionMode_Plus, 0.3));
- QVERIFY(testCompositionMode(186, 200, 255, QPainter::CompositionMode_Plus, 0.3));
-
- QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Multiply));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Multiply));
- QVERIFY(testCompositionMode(127, 255, 127, QPainter::CompositionMode_Multiply));
- QVERIFY(testCompositionMode(255, 127, 127, QPainter::CompositionMode_Multiply));
- QVERIFY(testCompositionMode( 63, 255, 63, QPainter::CompositionMode_Multiply));
- QVERIFY(testCompositionMode(255, 63, 63, QPainter::CompositionMode_Multiply));
- QVERIFY(testCompositionMode(127, 127, 63, QPainter::CompositionMode_Multiply));
-
- QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Screen));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Screen));
- QVERIFY(testCompositionMode( 63, 255, 255, QPainter::CompositionMode_Screen));
- QVERIFY(testCompositionMode(255, 63, 255, QPainter::CompositionMode_Screen));
- QVERIFY(testCompositionMode( 63, 0, 63, QPainter::CompositionMode_Screen));
- QVERIFY(testCompositionMode( 0, 63, 63, QPainter::CompositionMode_Screen));
- QVERIFY(testCompositionMode(127, 127, 191, QPainter::CompositionMode_Screen));
-
- QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Overlay));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Overlay));
- QVERIFY(testCompositionMode( 63, 63, 31, QPainter::CompositionMode_Overlay));
- QVERIFY(testCompositionMode( 63, 255, 255, QPainter::CompositionMode_Overlay));
-
- QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Darken));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Darken));
- QVERIFY(testCompositionMode( 63, 63, 63, QPainter::CompositionMode_Darken));
- QVERIFY(testCompositionMode( 63, 255, 63, QPainter::CompositionMode_Darken));
- QVERIFY(testCompositionMode(255, 63, 63, QPainter::CompositionMode_Darken));
- QVERIFY(testCompositionMode( 63, 127, 63, QPainter::CompositionMode_Darken));
- QVERIFY(testCompositionMode(127, 63, 63, QPainter::CompositionMode_Darken));
-
- QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_Lighten));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Lighten));
- QVERIFY(testCompositionMode( 63, 63, 63, QPainter::CompositionMode_Lighten));
- QVERIFY(testCompositionMode( 63, 255, 255, QPainter::CompositionMode_Lighten));
- QVERIFY(testCompositionMode(255, 63, 255, QPainter::CompositionMode_Lighten));
- QVERIFY(testCompositionMode( 63, 127, 127, QPainter::CompositionMode_Lighten));
- QVERIFY(testCompositionMode(127, 63, 127, QPainter::CompositionMode_Lighten));
-
- QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_ColorDodge));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_ColorDodge));
- QVERIFY(testCompositionMode( 63, 127, 169, QPainter::CompositionMode_ColorDodge));
- QVERIFY(testCompositionMode(191, 127, 255, QPainter::CompositionMode_ColorDodge));
- QVERIFY(testCompositionMode(127, 191, 255, QPainter::CompositionMode_ColorDodge));
-
- QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_ColorBurn));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_ColorBurn));
- QVERIFY(testCompositionMode(127, 127, 0, QPainter::CompositionMode_ColorBurn));
- QVERIFY(testCompositionMode(128, 128, 2, QPainter::CompositionMode_ColorBurn));
- QVERIFY(testCompositionMode(191, 127, 84, QPainter::CompositionMode_ColorBurn));
-
- QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_HardLight));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_HardLight));
- QVERIFY(testCompositionMode(127, 127, 127, QPainter::CompositionMode_HardLight));
- QVERIFY(testCompositionMode( 63, 63, 31, QPainter::CompositionMode_HardLight));
- QVERIFY(testCompositionMode(127, 63, 63, QPainter::CompositionMode_HardLight));
-
- QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_SoftLight));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_SoftLight));
- QVERIFY(testCompositionMode(127, 127, 126, QPainter::CompositionMode_SoftLight));
- QVERIFY(testCompositionMode( 63, 63, 39, QPainter::CompositionMode_SoftLight));
- QVERIFY(testCompositionMode(127, 63, 62, QPainter::CompositionMode_SoftLight));
-
- QVERIFY(testCompositionMode(255, 255, 0, QPainter::CompositionMode_Difference));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Difference));
- QVERIFY(testCompositionMode(255, 0, 255, QPainter::CompositionMode_Difference));
- QVERIFY(testCompositionMode(127, 127, 0, QPainter::CompositionMode_Difference));
- QVERIFY(testCompositionMode(127, 128, 1, QPainter::CompositionMode_Difference));
- QVERIFY(testCompositionMode(127, 63, 64, QPainter::CompositionMode_Difference));
- QVERIFY(testCompositionMode( 0, 127, 127, QPainter::CompositionMode_Difference));
-
- QVERIFY(testCompositionMode(255, 255, 0, QPainter::CompositionMode_Exclusion));
- QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Exclusion));
- QVERIFY(testCompositionMode(255, 0, 255, QPainter::CompositionMode_Exclusion));
- QVERIFY(testCompositionMode(127, 127, 127, QPainter::CompositionMode_Exclusion));
- QVERIFY(testCompositionMode( 63, 127, 127, QPainter::CompositionMode_Exclusion));
- QVERIFY(testCompositionMode( 63, 63, 95, QPainter::CompositionMode_Exclusion));
- QVERIFY(testCompositionMode(191, 191, 96, QPainter::CompositionMode_Exclusion));
-}
-
-void tst_QPainter::zeroOpacity()
-{
- QImage source(1, 1, QImage::Format_ARGB32_Premultiplied);
- source.fill(0xffffffff);
-
- QImage target(1, 1, QImage::Format_RGB32);
- target.fill(0xff000000);
-
- QPainter p(&target);
- p.setOpacity(0.0);
- p.drawImage(0, 0, source);
- p.end();
-
- QCOMPARE(target.pixel(0, 0), 0xff000000);
-}
-
-void tst_QPainter::clippingBug()
-{
- QImage img(32, 32, QImage::Format_ARGB32_Premultiplied);
- img.fill(0);
-
- QImage expected = img;
- QPainter p(&expected);
- p.fillRect(1, 1, 30, 30, Qt::red);
- p.end();
-
- QPainterPath path;
- path.addRect(1, 1, 30, 30);
- path.addRect(1, 1, 30, 30);
- path.addRect(1, 1, 30, 30);
-
- p.begin(&img);
- p.setClipPath(path);
- p.fillRect(0, 0, 32, 32, Qt::red);
- p.end();
-
- QCOMPARE(img, expected);
-}
-
-void tst_QPainter::emptyClip()
-{
- QImage img(64, 64, QImage::Format_ARGB32_Premultiplied);
- QPainter p(&img);
- p.setRenderHints(QPainter::Antialiasing);
- p.setClipRect(0, 32, 64, 0);
- p.fillRect(0, 0, 64, 64, Qt::white);
-
- QPainterPath path;
- path.lineTo(64, 0);
- path.lineTo(64, 64);
- path.lineTo(40, 64);
- path.lineTo(40, 80);
- path.lineTo(0, 80);
-
- p.fillPath(path, Qt::green);
-}
-
-void tst_QPainter::drawImage_1x1()
-{
- QImage source(1, 1, QImage::Format_ARGB32_Premultiplied);
- source.fill(0xffffffff);
-
- QImage img(32, 32, QImage::Format_ARGB32_Premultiplied);
- img.fill(0xff000000);
- QPainter p(&img);
- p.drawImage(QRectF(0.9, 0.9, 32, 32), source);
- p.end();
-
- QImage expected = img;
- expected.fill(0xff000000);
- p.begin(&expected);
- p.fillRect(1, 1, 31, 31, Qt::white);
- p.end();
-
- QCOMPARE(img, expected);
-}
-
-void tst_QPainter::taskQT4444_dontOverflowDashOffset()
-{
- QPainter p;
-
- QPen pen;
- pen.setWidth(2);
- pen.setStyle(Qt::DashDotLine);
-
- QPointF point[4];
- point[0] = QPointF(182.50868749707968,347.78457234212630);
- point[1] = QPointF(182.50868749707968,107.22501998401277);
- point[2] = QPointF(182.50868749707968,107.22501998401277);
- point[3] = QPointF(520.46600762283651,107.22501998401277);
-
- QImage crashImage(QSize(1000, 120), QImage::Format_ARGB32_Premultiplied);
- p.begin(&crashImage);
- p.setPen(pen);
- p.drawLines(point, 2);
- p.end();
-
- QVERIFY(true); // Don't crash
-}
-
-void tst_QPainter::painterBegin()
-{
- QImage nullImage;
- QImage indexed8Image(16, 16, QImage::Format_Indexed8);
- QImage rgb32Image(16, 16, QImage::Format_RGB32);
- QImage argb32Image(16, 16, QImage::Format_ARGB32_Premultiplied);
-
- QPainter p;
-
- // Painting on null image should fail.
- QVERIFY(!p.begin(&nullImage));
-
- // Check that the painter is not messed up by using it on another image.
- QVERIFY(p.begin(&rgb32Image));
- QVERIFY(p.end());
-
- // If painting on indexed8 image fails, the painter state should still be OK.
- if (p.begin(&indexed8Image))
- QVERIFY(p.end());
- QVERIFY(p.begin(&rgb32Image));
- QVERIFY(p.end());
-
- // Try opening a painter on the two different images.
- QVERIFY(p.begin(&rgb32Image));
- QVERIFY(!p.begin(&argb32Image));
- QVERIFY(p.end());
-
- // Try opening two painters on the same image.
- QVERIFY(p.begin(&rgb32Image));
- QPainter q;
- QVERIFY(!q.begin(&rgb32Image));
- QVERIFY(!q.end());
- QVERIFY(p.end());
-
- // Try ending an inactive painter.
- QVERIFY(!p.end());
-}
-
-void tst_QPainter::setPenColor(QPainter& p)
-{
- p.setPen(Qt::NoPen);
-
- // Setting color, then style
- // Should work even though the pen is "NoPen with color", temporarily.
- QPen newPen(p.pen());
- newPen.setColor(Qt::red);
- QCOMPARE(p.pen().style(), newPen.style());
- QCOMPARE(p.pen().style(), Qt::NoPen);
- p.setPen(newPen);
-
- QCOMPARE(p.pen().color().name(), QString("#ff0000"));
-
- QPen newPen2(p.pen());
- newPen2.setStyle(Qt::SolidLine);
- p.setPen(newPen2);
-
- QCOMPARE(p.pen().color().name(), QString("#ff0000"));
-}
-
-void tst_QPainter::setPenColorOnImage()
-{
- QImage img(QSize(10, 10), QImage::Format_ARGB32_Premultiplied);
- QPainter p(&img);
- setPenColor(p);
-}
-
-void tst_QPainter::setPenColorOnPixmap()
-{
- QPixmap pix(10, 10);
- QPainter p(&pix);
- setPenColor(p);
-}
-
-class TestProxy : public QGraphicsProxyWidget
-{
-public:
- TestProxy() : QGraphicsProxyWidget() {}
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
- {
- QGraphicsProxyWidget::paint(painter, option, widget);
- deviceTransform = painter->deviceTransform();
- }
- QTransform deviceTransform;
-};
-
-class TestWidget : public QWidget
-{
-Q_OBJECT
-public:
- TestWidget() : QWidget(), painted(false) {}
- void paintEvent(QPaintEvent *)
- {
- QPainter p(this);
- deviceTransform = p.deviceTransform();
- worldTransform = p.worldTransform();
- painted = true;
- }
- QTransform deviceTransform;
- QTransform worldTransform;
- bool painted;
-};
-
-void tst_QPainter::QTBUG5939_attachPainterPrivate()
-{
- QWidget *w = new QWidget();
- QGraphicsScene *scene = new QGraphicsScene();
- QGraphicsView *view = new QGraphicsView(scene, w);
- view->move(50 ,50);
- TestProxy *proxy = new TestProxy();
- TestWidget *widget = new TestWidget();
- proxy->setWidget(widget);
- scene->addItem(proxy);
- proxy->rotate(45);
- w->resize(scene->sceneRect().size().toSize());
-
- w->show();
- QTRY_VERIFY(widget->painted);
-
- QVERIFY(widget->worldTransform.isIdentity());
- QCOMPARE(widget->deviceTransform, proxy->deviceTransform);
-}
-
-void tst_QPainter::clipBoundingRect()
-{
- QPixmap pix(500, 500);
-
- QPainter p(&pix);
-
- // Test a basic rectangle
- p.setClipRect(100, 100, 200, 100);
- QVERIFY(p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
- QVERIFY(!p.clipBoundingRect().contains(QRectF(50, 50, 300, 200)));
- p.setClipRect(120, 120, 20, 20, Qt::IntersectClip);
- QVERIFY(p.clipBoundingRect().contains(QRect(120, 120, 20, 20)));
- QVERIFY(!p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
-
- // Test a basic float rectangle
- p.setClipRect(QRectF(100, 100, 200, 100));
- QVERIFY(p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
- QVERIFY(!p.clipBoundingRect().contains(QRectF(50, 50, 300, 200)));
- p.setClipRect(QRectF(120, 120, 20, 20), Qt::IntersectClip);
- QVERIFY(p.clipBoundingRect().contains(QRect(120, 120, 20, 20)));
- QVERIFY(!p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
-
- // Test a basic path + region
- QPainterPath path;
- path.addRect(100, 100, 200, 100);
- p.setClipPath(path);
- QVERIFY(p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
- QVERIFY(!p.clipBoundingRect().contains(QRectF(50, 50, 300, 200)));
- p.setClipRegion(QRegion(120, 120, 20, 20), Qt::IntersectClip);
- QVERIFY(p.clipBoundingRect().contains(QRect(120, 120, 20, 20)));
- QVERIFY(!p.clipBoundingRect().contains(QRectF(100, 100, 200, 100)));
-
- p.setClipRect(0, 0, 500, 500);
- p.translate(250, 250);
- for (int i=0; i<360; ++i) {
- p.rotate(1);
- p.setClipRect(-100, -100, 200, 200, Qt::IntersectClip);
- }
- QVERIFY(p.clipBoundingRect().contains(QRectF(-100, -100, 200, 200)));
- QVERIFY(!p.clipBoundingRect().contains(QRectF(-250, -250, 500, 500)));
-
-}
-
-void tst_QPainter::drawText_subPixelPositionsInRaster_qtbug5053()
-{
-#if !defined(Q_WS_MAC) || !defined(QT_MAC_USE_COCOA)
- QSKIP("Only Mac/Cocoa supports sub pixel positions in raster engine currently", SkipAll);
-#endif
- QFontMetricsF fm(qApp->font());
-
- QImage baseLine(fm.width(QChar::fromLatin1('e')), fm.height(), QImage::Format_RGB32);
- baseLine.fill(Qt::white);
- {
- QPainter p(&baseLine);
- p.drawText(0, fm.ascent(), QString::fromLatin1("e"));
- }
-
- bool foundDifferentRasterization = false;
- for (int i=1; i<12; ++i) {
- QImage comparison(baseLine.size(), QImage::Format_RGB32);
- comparison.fill(Qt::white);
-
- {
- QPainter p(&comparison);
- p.drawText(QPointF(i / 12.0, fm.ascent()), QString::fromLatin1("e"));
- }
-
- if (comparison != baseLine) {
- foundDifferentRasterization = true;
- break;
- }
- }
-
- QVERIFY(foundDifferentRasterization);
-}
-
-void tst_QPainter::drawPointScaled()
-{
- QImage image(32, 32, QImage::Format_RGB32);
- image.fill(0xffffffff);
-
- QPainter p(&image);
-
- p.scale(0.1, 0.1);
-
- QPen pen;
- pen.setWidth(1000);
- pen.setColor(Qt::red);
-
- p.setPen(pen);
- p.drawPoint(0, 0);
- p.end();
-
- QCOMPARE(image.pixel(16, 16), 0xffff0000);
-}
-
-class GradientProducer : public QThread
-{
-protected:
- void run();
-};
-
-void GradientProducer::run()
-{
- QImage image(1, 1, QImage::Format_RGB32);
- QPainter p(&image);
-
- for (int i = 0; i < 1000; ++i) {
- QLinearGradient g;
- g.setColorAt(0, QColor(i % 256, 0, 0));
- g.setColorAt(1, Qt::white);
-
- p.fillRect(image.rect(), g);
- }
-}
-
-void tst_QPainter::QTBUG14614_gradientCacheRaceCondition()
-{
- const int threadCount = 16;
- GradientProducer producers[threadCount];
- for (int i = 0; i < threadCount; ++i)
- producers[i].start();
- for (int i = 0; i < threadCount; ++i)
- producers[i].wait();
-}
-
-void tst_QPainter::drawTextOpacity()
-{
- QImage image(32, 32, QImage::Format_RGB32);
- image.fill(0xffffffff);
-
- QPainter p(&image);
- p.setPen(QColor("#6F6F6F"));
- p.setOpacity(0.5);
- p.drawText(5, 30, QLatin1String("Qt"));
- p.end();
-
- QImage copy = image;
- image.fill(0xffffffff);
-
- p.begin(&image);
- p.setPen(QColor("#6F6F6F"));
- p.drawLine(-10, -10, -1, -1);
- p.setOpacity(0.5);
- p.drawText(5, 30, QLatin1String("Qt"));
- p.end();
-
- QCOMPARE(image, copy);
-}
-
-void tst_QPainter::QTBUG17053_zeroDashPattern()
-{
- QImage image(32, 32, QImage::Format_RGB32);
- image.fill(0xffffffff);
-
- QImage original = image;
-
- QVector<qreal> pattern;
- pattern << qreal(0) << qreal(0);
-
- QPainter p(&image);
- QPen pen(Qt::black, 2.0);
- pen.setDashPattern(pattern);
-
- p.setPen(pen);
- p.drawLine(0, 0, image.width(), image.height());
-
- QCOMPARE(image, original);
-}
-
-class TextDrawerThread : public QThread
-{
-public:
- void run();
- QImage rendering;
-};
-
-void TextDrawerThread::run()
-{
- rendering = QImage(100, 100, QImage::Format_ARGB32_Premultiplied);
- rendering.fill(0);
- QPainter p(&rendering);
- p.fillRect(10, 10, 100, 100, Qt::blue);
- p.setPen(Qt::green);
- p.drawText(20, 20, "some text");
- p.end();
-}
-
-void tst_QPainter::drawTextOutsideGuiThread()
-{
- if (!QFontDatabase::supportsThreadedFontRendering())
- QSKIP("No threaded font rendering", SkipAll);
-
- QImage referenceRendering(100, 100, QImage::Format_ARGB32_Premultiplied);
- referenceRendering.fill(0);
- QPainter p(&referenceRendering);
- p.fillRect(10, 10, 100, 100, Qt::blue);
- p.setPen(Qt::green);
- p.drawText(20, 20, "some text");
- p.end();
-
- TextDrawerThread t;
- t.start();
- t.wait();
-
- QCOMPARE(referenceRendering, t.rendering);
-}
-
-QTEST_MAIN(tst_QPainter)
-
-#include "tst_qpainter.moc"
diff --git a/tests/auto/qpalette/qpalette.pro b/tests/auto/qpalette/qpalette.pro
deleted file mode 100644
index 4ec7876f6a..0000000000
--- a/tests/auto/qpalette/qpalette.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qpalette.cpp
-
-
-
diff --git a/tests/auto/qpathclipper/qpathclipper.pro b/tests/auto/qpathclipper/qpathclipper.pro
deleted file mode 100644
index 2becd7dd03..0000000000
--- a/tests/auto/qpathclipper/qpathclipper.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-load(qttest_p4)
-INCLUDEPATH += .
-HEADERS += paths.h
-SOURCES += tst_qpathclipper.cpp paths.cpp
-QT += gui-private
-
-requires(contains(QT_CONFIG,private_tests))
-
-unix:!mac:!symbian:LIBS+=-lm
-
-
diff --git a/tests/auto/qpicture/qpicture.pro b/tests/auto/qpicture/qpicture.pro
deleted file mode 100644
index 9979fe3559..0000000000
--- a/tests/auto/qpicture/qpicture.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qpicture.cpp
-
-
-
diff --git a/tests/auto/qpixmap/qpixmap.pro b/tests/auto/qpixmap/qpixmap.pro
deleted file mode 100644
index f5df30cc1d..0000000000
--- a/tests/auto/qpixmap/qpixmap.pro
+++ /dev/null
@@ -1,37 +0,0 @@
-load(qttest_p4)
-
-QT += core-private gui-private
-
-SOURCES += tst_qpixmap.cpp
-wince*|symbian: {
-
- task31722_0.files = convertFromImage/task31722_0/*.png
- task31722_0.path = convertFromImage/task31722_0
-
- task31722_1.files = convertFromImage/task31722_1/*.png
- task31722_1.path = convertFromImage/task31722_1
-
- icons.files = convertFromToHICON/*
- icons.path = convertFromToHICON
-
- loadFromData.files = loadFromData/*
- loadFromData.path = loadFromData
-
- DEPLOYMENT += task31722_0 task31722_1 icons loadFromData
-}
-
-wince*: {
- DEFINES += SRCDIR=\\\".\\\"
- DEPLOYMENT_PLUGIN += qico
-} else:symbian {
- LIBS += -lfbscli.dll -lbitgdi.dll -lgdi.dll
- contains(QT_CONFIG, openvg) {
- LIBS += $$QMAKE_LIBS_OPENVG
- QT *= openvg
- }
-} else {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
- win32:LIBS += -lgdi32 -luser32
-}
-
-RESOURCES += qpixmap.qrc
diff --git a/tests/auto/qpixmap/tst_qpixmap.cpp b/tests/auto/qpixmap/tst_qpixmap.cpp
deleted file mode 100644
index e62708fc3d..0000000000
--- a/tests/auto/qpixmap/tst_qpixmap.cpp
+++ /dev/null
@@ -1,1863 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <qpixmap.h>
-#include <qbitmap.h>
-#include <qimage.h>
-#include <qimagereader.h>
-#include <qmatrix.h>
-#include <qdesktopwidget.h>
-#include <qpaintengine.h>
-#include <qtreewidget.h>
-#include <qsplashscreen.h>
-
-#include <private/qpixmapdata_p.h>
-#include <private/qdrawhelper_p.h>
-
-#include <QSet>
-
-#ifdef Q_WS_WIN
-#include <windows.h>
-#endif
-
-#ifdef Q_WS_QWS
-#include <qscreen_qws.h>
-#endif
-
-#ifdef Q_OS_SYMBIAN
-#include <e32std.h>
-#include <fbs.h>
-#include <gdi.h>
-#include <bitdev.h>
-#if !defined(QT_NO_OPENVG)
-#include <QtOpenVG/qvg.h>
-#include <QtOpenVG/private/qpixmapdata_vg_p.h>
-#endif
-#endif
-
-#ifdef Q_WS_X11
-#include <QX11Info>
-#endif
-
-//TESTED_CLASS=
-//TESTED_FILES=
-#if defined(Q_OS_SYMBIAN)
-# define SRCDIR ""
-#endif
-Q_DECLARE_METATYPE(QImage::Format)
-
-class tst_QPixmap : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QPixmap();
- virtual ~tst_QPixmap();
-
-
-public slots:
- void init();
- void cleanup();
-
-private slots:
- void swap();
-
- void setAlphaChannel_data();
- void setAlphaChannel();
-
- void fromImage_data();
- void fromImage();
-
- void fromUninitializedImage_data();
- void fromUninitializedImage();
-
- void convertFromImage_data();
- void convertFromImage();
-
- void testMetrics();
-
- void scroll_data();
- void scroll();
-
- void fill_data();
- void fill();
- void fill_transparent();
-
- void createMaskFromColor();
-
- void mask();
- void bitmapMask();
- void setGetMask_data();
- void setGetMask();
- void cacheKey();
- void drawBitmap();
- void grabWidget();
- void grabWindow();
- void isNull();
- void task_246446();
-
- void convertFromImageNoDetach();
- void convertFromImageDetach();
-
-#if defined(Q_WS_WIN)
- void toWinHBITMAP_data();
- void toWinHBITMAP();
- void fromWinHBITMAP_data();
- void fromWinHBITMAP();
-
- void toWinHICON_data();
- void toWinHICON();
- void fromWinHICON_data();
- void fromWinHICON();
-#endif
-
-#if defined(Q_OS_SYMBIAN)
- void fromSymbianCFbsBitmap_data();
- void fromSymbianCFbsBitmap();
- void toSymbianCFbsBitmap_data();
- void toSymbianCFbsBitmap();
-#endif
-
- void onlyNullPixmapsOutsideGuiThread();
- void refUnref();
-
- void copy();
- void depthOfNullObjects();
-
- void transformed();
- void transformed2();
-
- void fromImage_crash();
-
- void fromData();
- void loadFromDataNullValues();
-
- void loadFromDataImage_data();
- void loadFromDataImage();
-
- void fromImageReader_data();
- void fromImageReader();
-
- void fromImageReaderAnimatedGif_data();
- void fromImageReaderAnimatedGif();
-
- void preserveDepth();
- void splash_crash();
-
- void toImageDeepCopy();
-
- void loadAsBitmapOrPixmap();
-
-#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_OPENVG)
- void vgImageReadBack();
-#endif
- void scaled_QTBUG19157();
-};
-
-static bool lenientCompare(const QPixmap &actual, const QPixmap &expected)
-{
- QImage expectedImage = expected.toImage().convertToFormat(QImage::Format_RGB32);
- QImage actualImage = actual.toImage().convertToFormat(QImage::Format_RGB32);
-
- if (expectedImage.size() != actualImage.size())
- return false;
-
- int size = actual.width() * actual.height();
-
- int threshold = 2;
-#ifdef Q_WS_X11
- if (QX11Info::appDepth() == 16)
- threshold = 10;
-#endif
-
- QRgb *a = (QRgb *)actualImage.bits();
- QRgb *e = (QRgb *)expectedImage.bits();
- for (int i = 0; i < size; ++i) {
- QColor ca(a[i]);
- QColor ce(e[i]);
-
- bool result = true;
-
- if (qAbs(ca.red() - ce.red()) > threshold)
- result = false;
- if (qAbs(ca.green() - ce.green()) > threshold)
- result = false;
- if (qAbs(ca.blue() - ce.blue()) > threshold)
- result = false;
-
- if (!result)
- return false;
- }
-
- return true;
-}
-
-Q_DECLARE_METATYPE(QImage)
-Q_DECLARE_METATYPE(QPixmap)
-Q_DECLARE_METATYPE(QMatrix)
-Q_DECLARE_METATYPE(QBitmap)
-
-tst_QPixmap::tst_QPixmap()
-{
-}
-
-tst_QPixmap::~tst_QPixmap()
-{
-}
-
-void tst_QPixmap::init()
-{
-}
-
-void tst_QPixmap::cleanup()
-{
-}
-
-void tst_QPixmap::swap()
-{
- QPixmap p1( 16, 16 ), p2( 32, 32 );
- p1.fill( Qt::white );
- p2.fill( Qt::black );
- const qint64 p1k = p1.cacheKey();
- const qint64 p2k = p2.cacheKey();
- p1.swap(p2);
- QCOMPARE(p1.cacheKey(), p2k);
- QCOMPARE(p1.size(), QSize(32,32));
- QCOMPARE(p2.cacheKey(), p1k);
- QCOMPARE(p2.size(), QSize(16,16));
-}
-
-void tst_QPixmap::setAlphaChannel_data()
-{
- QTest::addColumn<int>("red");
- QTest::addColumn<int>("green");
- QTest::addColumn<int>("blue");
- QTest::addColumn<int>("alpha");
-
- QTest::newRow("red 0") << 255 << 0 << 0 << 0;
- QTest::newRow("red 24") << 255 << 0 << 0 << 24;
- QTest::newRow("red 124") << 255 << 0 << 0 << 124;
- QTest::newRow("red 255") << 255 << 0 << 0 << 255;
-
- QTest::newRow("green 0") << 0 << 255 << 0 << 0;
- QTest::newRow("green 24") << 0 << 255 << 0 << 24;
- QTest::newRow("green 124") << 0 << 255 << 0 << 124;
- QTest::newRow("green 255") << 0 << 255 << 0 << 255;
-
- QTest::newRow("blue 0") << 0 << 0 << 255 << 0;
- QTest::newRow("blue 24") << 0 << 0 << 255 << 24;
- QTest::newRow("blue 124") << 0 << 0 << 255 << 124;
- QTest::newRow("blue 255") << 0 << 0 << 255 << 255;
-}
-
-void tst_QPixmap::setAlphaChannel()
-{
- QFETCH(int, red);
- QFETCH(int, green);
- QFETCH(int, blue);
- QFETCH(int, alpha);
-
- int width = 100;
- int height = 100;
-
- QPixmap pixmap(width, height);
- pixmap.fill(QColor(red, green, blue));
-
- QPixmap alphaChannel(width, height);
- alphaChannel.fill(QColor(alpha, alpha, alpha));
- pixmap.setAlphaChannel(alphaChannel);
-
-#ifdef Q_WS_X11
- if (pixmap.pixmapData()->classId() == QPixmapData::X11Class && !pixmap.x11PictureHandle())
- QSKIP("Requires XRender support", SkipAll);
-#endif
-
- QImage result;
- bool ok = true;
-
- QPixmap outAlpha = pixmap.alphaChannel();
- QCOMPARE(outAlpha.size(), pixmap.size());
-
- result = outAlpha.toImage().convertToFormat(QImage::Format_ARGB32);;
- for (int y = 0; y < height; ++y) {
- for (int x = 0; x < width; ++x) {
- ok &= qGray(result.pixel(x, y)) == alpha;
- }
- }
- QVERIFY(ok);
-
- result = pixmap.toImage().convertToFormat(QImage::Format_ARGB32);
- QRgb expected = alpha == 0 ? 0 : qRgba(red, green, blue, alpha);
- for (int y = 0; y < height; ++y) {
- for (int x = 0; x < width; ++x) {
- if (result.colorCount() > 0) {
- ok &= result.pixelIndex(x, y) == expected;
- } else {
- ok &= result.pixel(x, y) == expected;
- }
- }
- }
- QVERIFY(ok);
-}
-
-void tst_QPixmap::fromImage_data()
-{
- bool is16bit = false;
-#ifdef Q_WS_X11
- if (QX11Info::appDepth() == 16)
- is16bit = true;
-#endif
-
- QTest::addColumn<QImage::Format>("format");
-
- QTest::newRow("Format_Mono") << QImage::Format_Mono;
- QTest::newRow("Format_MonoLSB") << QImage::Format_MonoLSB;
-// QTest::newRow("Format_Indexed8") << QImage::Format_Indexed8;
- if (!is16bit)
- QTest::newRow("Format_RGB32") << QImage::Format_RGB32;
- QTest::newRow("Format_ARGB32") << QImage::Format_ARGB32;
- QTest::newRow("Format_ARGB32_Premultiplied") << QImage::Format_ARGB32_Premultiplied;
- if (!is16bit)
- QTest::newRow("Format_RGB16") << QImage::Format_RGB16;
-}
-
-void tst_QPixmap::fromImage()
-{
- QFETCH(QImage::Format, format);
-
- QImage image(37, 16, format);
-
- if (image.colorCount() == 2) {
- image.setColor(0, QColor(Qt::color0).rgba());
- image.setColor(1, QColor(Qt::color1).rgba());
- }
- image.fill(0x7f7f7f7f);
-
- const QPixmap pixmap = QPixmap::fromImage(image);
-#ifdef Q_WS_X11
- if (pixmap.pixmapData()->classId() == QPixmapData::X11Class && !pixmap.x11PictureHandle())
- QSKIP("Requires XRender support", SkipAll);
-#endif
- const QImage result = pixmap.toImage();
- image = image.convertToFormat(result.format());
- QCOMPARE(result, image);
-}
-
-
-void tst_QPixmap::fromUninitializedImage_data()
-{
- QTest::addColumn<QImage::Format>("format");
-
- QTest::newRow("Format_Mono") << QImage::Format_Mono;
- QTest::newRow("Format_MonoLSB") << QImage::Format_MonoLSB;
- QTest::newRow("Format_Indexed8") << QImage::Format_Indexed8;
- QTest::newRow("Format_RGB32") << QImage::Format_RGB32;
- QTest::newRow("Format_ARGB32") << QImage::Format_ARGB32;
- QTest::newRow("Format_ARGB32_Premultiplied") << QImage::Format_ARGB32_Premultiplied;
- QTest::newRow("Format_RGB16") << QImage::Format_RGB16;
-}
-
-void tst_QPixmap::fromUninitializedImage()
-{
- QFETCH(QImage::Format, format);
-
- QImage image(100, 100, format);
- QPixmap pix = QPixmap::fromImage(image);
-
- // it simply shouldn't crash...
- QVERIFY(true);
-
-}
-
-void tst_QPixmap::convertFromImage_data()
-{
- QTest::addColumn<QImage>("img1");
- QTest::addColumn<QImage>("img2");
-#ifdef Q_OS_SYMBIAN
- const QString prefix = QLatin1String(SRCDIR) + "convertFromImage";
-#else
- const QString prefix = QLatin1String(SRCDIR) + "/convertFromImage";
-#endif
- {
- QImage img1;
- QImage img2;
- QVERIFY(img1.load(prefix + "/task31722_0/img1.png"));
- QVERIFY(img2.load(prefix + "/task31722_0/img2.png"));
- QVERIFY(img1.load(prefix + "/task31722_0/img1.png"));
- QVERIFY(img2.load(prefix + "/task31722_0/img2.png"));
- QTest::newRow("Task 31722 0") << img1 << img2;
- }
- {
- QImage img1;
- QImage img2;
- QVERIFY(img1.load(prefix + "/task31722_1/img1.png"));
- QVERIFY(img2.load(prefix + "/task31722_1/img2.png"));
- QTest::newRow("Task 31722 1") << img1 << img2;
- }
-}
-
-void tst_QPixmap::convertFromImage()
-{
- QFETCH(QImage, img1);
- QFETCH(QImage, img2);
-
- QPixmap pix = QPixmap::fromImage(img1);
- pix = QPixmap::fromImage(img2);
-
- QPixmap res = QPixmap::fromImage(img2);
- QVERIFY( pixmapsAreEqual(&pix, &res) );
-}
-
-void tst_QPixmap::scroll_data()
-{
- QTest::addColumn<QImage>("input");
- QTest::addColumn<int>("dx");
- QTest::addColumn<int>("dy");
- QTest::addColumn<QRect>("rect");
- QTest::addColumn<QRegion>("exposed");
- QTest::addColumn<bool>("newPix");
-
- QImage input(":/images/designer.png");
-
- // Noop tests
- QTest::newRow("null") << QImage() << 0 << 0 << QRect() << QRegion() << false;
- QTest::newRow("dx_0_dy_0_null") << input << 0 << 0 << QRect() << QRegion() << false;
- QTest::newRow("dx_1_dy_0_null") << input << 1 << 0 << QRect() << QRegion() << false;
- QTest::newRow("dx_0_dy_1_null") << input << 0 << 1 << QRect() << QRegion() << false;
- QTest::newRow("dx_0_dy_0_x_y_w_h") << input << 0 << 0 << input.rect() << QRegion() << false;
-
- QRegion r;
- // Scroll whole pixmap
- r = QRegion(); r += QRect(0, 0, 128, 10);
- QTest::newRow("dx_0_dy_10_x_y_w_h") << input << 0 << 10 << input.rect() << r << true;
- r = QRegion(); r += QRect(0, 0, 10, 128);
- QTest::newRow("dx_10_dy_0_x_y_w_h") << input << 10 << 0 << input.rect() << r << true;
- r = QRegion(); r += QRect(0, 0, 128, 10); r += QRect(0, 10, 10, 118);
- QTest::newRow("dx_10_dy_10_x_y_w_h") << input << 10 << 10 << input.rect() << r << true;
- r = QRegion(); r += QRect(118, 0, 10, 128);
- QTest::newRow("dx_-10_dy_0_x_y_w_h") << input << -10 << 0 << input.rect() << r << true;
- r = QRegion(); r += QRect(0, 118, 128, 10);
- QTest::newRow("dx_0_dy_-10_x_y_w_h") << input << 0 << -10 << input.rect() << r << true;
- r = QRegion(); r += QRect(118, 0, 10, 118); r += QRect(0, 118, 128, 10);
- QTest::newRow("dx_-10_dy_-10_x_y_w_h") << input << -10 << -10 << input.rect() << r << true;
-
- // Scroll part of pixmap
- QTest::newRow("dx_0_dy_0_50_50_100_100") << input << 0 << 0 << QRect(50, 50, 100, 100) << QRegion() << false;
- r = QRegion(); r += QRect(50, 50, 10, 78);
- QTest::newRow("dx_10_dy_0_50_50_100_100") << input << 10 << 0 << QRect(50, 50, 100, 100) << r << true;
- r = QRegion(); r += QRect(50, 50, 78, 10);
- QTest::newRow("dx_0_dy_10_50_50_100_100") << input << 0 << 10 << QRect(50, 50, 100, 100) << r << true;
- r = QRegion(); r += QRect(50, 50, 78, 10); r += QRect(50, 60, 10, 68);
- QTest::newRow("dx_10_dy_10_50_50_100_100") << input << 10 << 10 << QRect(50, 50, 100, 100) << r << true;
- r = QRegion(); r += QRect(118, 50, 10, 78);
- QTest::newRow("dx_-10_dy_0_50_50_100_100") << input << -10 << 0 << QRect(50, 50, 100, 100) << r << true;
- r = QRegion(); r += QRect(50, 118, 78, 10);
- QTest::newRow("dx_0_dy_-10_50_50_100_100") << input << 0 << -10 << QRect(50, 50, 100, 100) << r << true;
- r = QRegion(); r += QRect(118, 50, 10, 68); r += QRect(50, 118, 78, 10);
- QTest::newRow("dx_-10_dy_-10_50_50_100_100") << input << -10 << -10 << QRect(50, 50, 100, 100) << r << true;
-
- // Scroll away the whole pixmap
- r = input.rect();
- QTest::newRow("dx_128_dy_0_x_y_w_h") << input << 128 << 0 << input.rect() << r << false;
- QTest::newRow("dx_0_dy_128_x_y_w_h") << input << 0 << 128 << input.rect() << r << false;
- QTest::newRow("dx_128_dy_128_x_y_w_h") << input << 128 << 128 << input.rect() << r << false;
- QTest::newRow("dx_-128_dy_0_x_y_w_h") << input << -128 << 0 << input.rect() << r << false;
- QTest::newRow("dx_0_dy_-128_x_y_w_h") << input << 0 << -128 << input.rect() << r << false;
- QTest::newRow("dx_-128_dy_-128_x_y_w_h") << input << -128 << -128 << input.rect() << r << false;
-
- // Scroll away part of the pixmap
- r = QRegion(); r += QRect(64, 64, 64, 64);
- QTest::newRow("dx_128_dy_128_64_64_128_128") << input << 128 << 128 << QRect(64, 64, 128, 128) << r << false;
-}
-
-void tst_QPixmap::scroll()
-{
- QFETCH(QImage, input);
- QFETCH(int, dx);
- QFETCH(int, dy);
- QFETCH(QRect, rect);
- QFETCH(QRegion, exposed);
- QFETCH(bool, newPix);
-
- QPixmap pixmap = QPixmap::fromImage(input);
- QRegion exp;
- qint64 oldKey = pixmap.cacheKey();
- pixmap.scroll(dx, dy, rect, &exp);
- if (!newPix)
- QCOMPARE(pixmap.cacheKey(), oldKey);
- else
- QVERIFY(pixmap.cacheKey() != oldKey);
-
-#if 0
- // Remember to add to resources.
- QString fileName = QString("images/%1.png").arg(QTest::currentDataTag());
- pixmap.toImage().save(fileName);
-#else
- QString fileName = QString(":/images/%1.png").arg(QTest::currentDataTag());
-#endif
- QPixmap output(fileName);
- QVERIFY(input.isNull() == output.isNull());
- QVERIFY(lenientCompare(pixmap, output));
- QCOMPARE(exp, exposed);
-}
-
-void tst_QPixmap::fill_data()
-{
- QTest::addColumn<uint>("pixel");
- QTest::addColumn<bool>("syscolor");
- QTest::addColumn<bool>("bitmap");
- for (int color = Qt::black; color < Qt::darkYellow; ++color)
- QTest::newRow(QString("syscolor_%1").arg(color).toLatin1())
- << uint(color) << true << false;
-
-#ifdef Q_WS_QWS
- if (QScreen::instance()->depth() >= 24) {
-#elif defined (Q_WS_X11)
- QPixmap pm(1, 1);
- if (pm.x11PictureHandle()) {
-#elif defined (Q_OS_WINCE)
- QPixmap pixmap(1,1);
- if (QPixmap::grabWidget(QApplication::desktop()).depth() >= 24) {
-#else
- QPixmap pixmap(1, 1); {
-#endif
- QTest::newRow("alpha_7f_red") << 0x7fff0000u << false << false;
- QTest::newRow("alpha_3f_blue") << 0x3f0000ffu << false << false;
- QTest::newRow("alpha_b7_green") << 0xbf00ff00u << false << false;
- QTest::newRow("alpha_7f_white") << 0x7fffffffu << false << false;
- QTest::newRow("alpha_3f_white") << 0x3fffffffu << false << false;
- QTest::newRow("alpha_b7_white") << 0xb7ffffffu << false << false;
- QTest::newRow("alpha_7f_black") << 0x7f000000u << false << false;
- QTest::newRow("alpha_3f_black") << 0x3f000000u << false << false;
- QTest::newRow("alpha_b7_black") << 0xbf000000u << false << false;
- }
-
- QTest::newRow("bitmap_color0") << uint(Qt::color0) << true << true;
- QTest::newRow("bitmap_color1") << uint(Qt::color1) << true << true;
-}
-
-void tst_QPixmap::fill()
-{
- QFETCH(uint, pixel);
- QFETCH(bool, syscolor);
- QFETCH(bool, bitmap);
-
- QColor color;
-
- if (syscolor)
- color = QColor(Qt::GlobalColor(pixel));
- else
- color = QColor(qRed(pixel), qGreen(pixel), qBlue(pixel), qAlpha(pixel));
-
- QColor compareColor = color;
- if (bitmap && syscolor) {
- // special case color0 and color1 for bitmaps.
- if (pixel == Qt::color0)
- compareColor.setRgb(255, 255, 255);
- else
- compareColor.setRgb(0, 0, 0);
- }
-
- QPixmap pm;
-
- if (bitmap)
- pm = QBitmap(400, 400);
- else
- pm = QPixmap(400, 400);
-
-#if defined(Q_WS_X11)
- if (!bitmap && pm.pixmapData()->classId() == QPixmapData::X11Class && !pm.x11PictureHandle())
- QSKIP("Requires XRender support", SkipSingle);
-#endif
-
- pm.fill(color);
- if (syscolor && !bitmap && pm.depth() < 24) {
- QSKIP("Test does not work on displays without true color", SkipSingle);
- }
-
- QImage image = pm.toImage();
- if (bitmap && syscolor) {
- int pixelindex = (pixel == Qt::color0) ? 0 : 1;
- QCOMPARE(image.pixelIndex(0,0), pixelindex);
- }
- QImage::Format format = compareColor.alpha() != 255
- ? QImage::Format_ARGB32
- : QImage::Format_RGB32;
- image = image.convertToFormat(format);
-
-
- QImage shouldBe(400, 400, format);
- shouldBe.fill(compareColor.rgba());
-
- QCOMPARE(image, shouldBe);
-}
-
-void tst_QPixmap::fill_transparent()
-{
- QPixmap pixmap(10, 10);
-#ifdef Q_WS_X11
- if (pixmap.pixmapData()->classId() == QPixmapData::X11Class && !pixmap.x11PictureHandle())
- QSKIP("Requires XRender support", SkipAll);
-#endif
- pixmap.fill(Qt::transparent);
- QVERIFY(pixmap.hasAlphaChannel());
-}
-
-void tst_QPixmap::mask()
-{
- QPixmap pm(100, 100);
- QBitmap bm(100, 100);
-
- pm.fill();
- bm.fill();
-
- QVERIFY(!pm.isNull());
- QVERIFY(!bm.isNull());
- if (!pm.hasAlphaChannel()) {
- // This would fail if the default pixmap format is
- // argb32_premultiplied. The mask will be all 1's.
- // Therefore this is skipped when the alpha channel is present.
- QVERIFY(pm.mask().isNull());
- }
-
- QImage img = bm.toImage();
- QVERIFY(img.format() == QImage::Format_MonoLSB
- || img.format() == QImage::Format_Mono);
-
- pm.setMask(bm);
- QVERIFY(!pm.mask().isNull());
-
- bm = QBitmap();
- // Invalid format here, since isNull() == true
- QVERIFY(bm.toImage().isNull());
- QCOMPARE(bm.toImage().format(), QImage::Format_Invalid);
- pm.setMask(bm);
- QVERIFY(pm.mask().isNull());
-
- bm = QBitmap(100, 100);
- bm.fill();
- pm.setMask(bm);
- QVERIFY(!pm.mask().isNull());
-}
-
-void tst_QPixmap::bitmapMask()
-{
- QImage image(3, 3, QImage::Format_Mono);
- image.setColor(0, Qt::color0);
- image.setColor(1, Qt::color1);
- image.fill(Qt::color0);
- image.setPixel(1, 1, Qt::color1);
- image.setPixel(0, 0, Qt::color1);
-
- QImage image_mask(3, 3, QImage::Format_Mono);
- image_mask.setColor(0, Qt::color0);
- image_mask.setColor(1, Qt::color1);
- image_mask.fill(Qt::color0);
- image_mask.setPixel(1, 1, Qt::color1);
- image_mask.setPixel(2, 0, Qt::color1);
-
- QBitmap pm = QBitmap::fromImage(image);
- QBitmap pm_mask = QBitmap::fromImage(image_mask);
- pm.setMask(pm_mask);
-
- image = pm.toImage();
- image.setColor(0, Qt::color0);
- image.setColor(1, Qt::color1);
- image_mask = pm_mask.toImage();
- image_mask.setColor(0, Qt::color0);
- image_mask.setColor(1, Qt::color1);
-
- QVERIFY(!image.pixel(0, 0));
- QVERIFY(!image.pixel(2, 0));
- QVERIFY(image.pixel(1, 1));
-}
-
-void tst_QPixmap::setGetMask_data()
-{
- QTest::addColumn<QPixmap>("pixmap");
- QTest::addColumn<QBitmap>("mask");
- QTest::addColumn<QBitmap>("expected");
-
- QPixmap pixmap(10, 10);
- QBitmap mask(10, 10);
- QPainter p;
-
- p.begin(&pixmap);
- p.fillRect(0, 0, 10, 10, QColor(Qt::black));
- p.end();
-
- QTest::newRow("nullmask 0") << QPixmap() << QBitmap() << QBitmap();
- QTest::newRow("nullmask 1") << pixmap << QBitmap() << QBitmap();
- mask.clear();
- QTest::newRow("nullmask 2") << pixmap << mask << mask;
- QTest::newRow("nullmask 3") << QPixmap(QBitmap()) << QBitmap() << QBitmap();
-
- p.begin(&mask);
- p.fillRect(1, 1, 5, 5, QColor(Qt::color1));
- p.end();
- QTest::newRow("simple mask 0") << pixmap << mask << mask;
-}
-
-void tst_QPixmap::setGetMask()
-{
- QFETCH(QPixmap, pixmap);
- QFETCH(QBitmap, mask);
- QFETCH(QBitmap, expected);
-
- pixmap.setMask(mask);
- QBitmap result = pixmap.mask();
-
- QImage resultImage = result.toImage();
- QImage expectedImage = expected.toImage();
- QCOMPARE(resultImage.convertToFormat(expectedImage.format()),
- expectedImage);
-}
-
-void tst_QPixmap::testMetrics()
-{
- QPixmap pixmap(100, 100);
-
- QCOMPARE(pixmap.width(), 100);
- QCOMPARE(pixmap.height(), 100);
- QVERIFY(pixmap.depth() >= QPixmap::defaultDepth());
-
- QBitmap bitmap(100, 100);
-
- QCOMPARE(bitmap.width(), 100);
- QCOMPARE(bitmap.height(), 100);
- QCOMPARE(bitmap.depth(), 1);
-
- QPixmap null;
-
- QCOMPARE(null.size().width(), null.width());
- QCOMPARE(null.size().height(), null.height());
-}
-
-void tst_QPixmap::createMaskFromColor()
-{
- QImage image(3, 3, QImage::Format_Indexed8);
- image.setColorCount(10);
- image.setColor(0, 0xffffffff);
- image.setColor(1, 0xff000000);
- image.setColor(2, 0xffff0000);
- image.setColor(3, 0xff0000ff);
- image.fill(0);
- image.setPixel(1, 0, 1);
- image.setPixel(0, 1, 2);
- image.setPixel(1, 1, 3);
-
- QImage im_mask = image.createMaskFromColor(0xffff0000);
- QCOMPARE((uint) im_mask.pixel(0, 1), QColor(Qt::color0).rgba());
- QCOMPARE((uint) im_mask.pixel(0, 1), QColor(Qt::color0).rgba());
-
- QPixmap pixmap = QPixmap::fromImage(image);
- QBitmap mask = pixmap.createMaskFromColor(Qt::red);
- QBitmap inv_mask = pixmap.createMaskFromColor(Qt::red, Qt::MaskOutColor);
- QCOMPARE((uint) mask.toImage().pixel(0, 1), QColor(Qt::color0).rgba());
- QCOMPARE((uint) inv_mask.toImage().pixel(0, 1), QColor(Qt::color1).rgba());
-}
-
-
-void tst_QPixmap::cacheKey()
-{
- QPixmap pixmap1(1, 1);
- QPixmap pixmap2(1, 1);
- qint64 pixmap1_key = pixmap1.cacheKey();
-
- QVERIFY(pixmap1.cacheKey() != pixmap2.cacheKey());
-
- pixmap2 = pixmap1;
- QVERIFY(pixmap2.cacheKey() == pixmap1.cacheKey());
-
- pixmap2.detach();
- QVERIFY(pixmap2.cacheKey() != pixmap1.cacheKey());
- QVERIFY(pixmap1.cacheKey() == pixmap1_key);
-}
-
-// Test drawing a bitmap on a pixmap.
-void tst_QPixmap::drawBitmap()
-{
- QBitmap bitmap(10,10);
- bitmap.fill(Qt::color1);
-
- QPixmap pixmap(10,10);
- QPainter painter2(&pixmap);
- painter2.fillRect(0,0,10,10, QBrush(Qt::green));
- painter2.setPen(Qt::red);
- painter2.drawPixmap(0,0,10,10, bitmap);
- painter2.end();
-
- QPixmap expected(10, 10);
- expected.fill(Qt::red);
-
- QVERIFY(lenientCompare(pixmap, expected));
-}
-
-void tst_QPixmap::grabWidget()
-{
- for (int opaque = 0; opaque < 2; ++opaque) {
- QWidget widget;
- QImage image(128, 128, opaque ? QImage::Format_RGB32 : QImage::Format_ARGB32_Premultiplied);
- for (int row = 0; row < image.height(); ++row) {
- QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(row));
- for (int col = 0; col < image.width(); ++col)
- line[col] = qRgba(rand() & 255, row, col, opaque ? 255 : 127);
- }
-
- QPalette pal = widget.palette();
- pal.setBrush(QPalette::Window, QBrush(image));
- widget.setPalette(pal);
- widget.resize(128, 128);
-
- QPixmap expected(64, 64);
- if (!opaque)
- expected.fill(Qt::transparent);
-
- QPainter p(&expected);
- p.translate(-64, -64);
- p.drawTiledPixmap(0, 0, 128, 128, pal.brush(QPalette::Window).texture(), 0, 0);
- p.end();
-
- QPixmap actual = QPixmap::grabWidget(&widget, QRect(64, 64, 64, 64));
- QVERIFY(lenientCompare(actual, expected));
-
- actual = QPixmap::grabWidget(&widget, 64, 64);
- QVERIFY(lenientCompare(actual, expected));
-
- // Make sure a widget that is not yet shown is grabbed correctly.
- QTreeWidget widget2;
- actual = QPixmap::grabWidget(&widget2);
- widget2.show();
- expected = QPixmap::grabWidget(&widget2);
-
- QVERIFY(lenientCompare(actual, expected));
- }
-}
-
-void tst_QPixmap::grabWindow()
-{
-#ifdef Q_WS_QPA
- QSKIP("QTBUG-20863 grabWindow is broken on most qpa backends", SkipAll);
-#endif
-#ifdef Q_OS_WINCE
- // We get out of memory, if the desktop itself is too big.
- if (QApplication::desktop()->width() <= 480)
-#endif
- QVERIFY(QPixmap::grabWindow(QApplication::desktop()->winId()).isNull() == false);
- QWidget w;
- w.resize(640, 480);
- w.show();
- QTest::qWait(100);
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&w);
-#endif
- QVERIFY(QPixmap::grabWindow(w.winId()).isNull() == false);
-
- QWidget child(&w);
- child.setGeometry(50, 50, 100, 100);
- child.setPalette(Qt::red);
- child.setAutoFillBackground(true);
- child.show();
- QTest::qWait(100);
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&child);
-#endif
-
- QPixmap grabWindowPixmap = QPixmap::grabWindow(child.winId());
- QPixmap grabWidgetPixmap = QPixmap::grabWidget(&child);
- lenientCompare(grabWindowPixmap, grabWidgetPixmap);
-}
-
-void tst_QPixmap::isNull()
-{
- {
- QPixmap pixmap(1,1);
- QVERIFY(pixmap.isNull() == false);
- }
- {
- QPixmap pixmap(0,0);
- QVERIFY(pixmap.isNull());
- }
-
- {
- QPixmap pixmap(0,1);
- QVERIFY(pixmap.isNull());
- }
- {
- QPixmap pixmap(1,0);
- QVERIFY(pixmap.isNull());
- }
- {
- QPixmap pixmap(-1,-1);
- QVERIFY(pixmap.isNull());
- }
- {
- QPixmap pixmap(-1,5);
- QVERIFY(pixmap.isNull());
- }
-}
-
-void tst_QPixmap::convertFromImageNoDetach()
-{
- QPixmap randomPixmap(10, 10);
- if (randomPixmap.pixmapData()->classId() != QPixmapData::RasterClass)
- QSKIP("Test only valid for raster pixmaps", SkipAll);
-
- //first get the screen format
- QImage::Format screenFormat = randomPixmap.toImage().format();
- QVERIFY(screenFormat != QImage::Format_Invalid);
-
- QImage orig(100,100, screenFormat);
-
- QPixmap pix = QPixmap::fromImage(orig);
- QImage copy = pix.toImage();
-
- QVERIFY(copy.format() == screenFormat);
-
- const QImage constOrig = orig;
- const QImage constCopy = copy;
- QVERIFY(constOrig.bits() == constCopy.bits());
-}
-
-void tst_QPixmap::convertFromImageDetach()
-{
- QImage img(10,10, QImage::Format_RGB32);
- img.fill(0);
- QVERIFY(!img.isNull());
- QPixmap p = QPixmap::fromImage(img);
- QVERIFY(p.isDetached());
- QPixmap copy = p;
- QVERIFY(!copy.isDetached());
- QVERIFY(!p.isDetached());
- img.fill(1);
- p = QPixmap::fromImage(img);
- QVERIFY(copy.isDetached());
-}
-
-#if defined(Q_WS_WIN)
-void tst_QPixmap::toWinHBITMAP_data()
-{
- QTest::addColumn<int>("red");
- QTest::addColumn<int>("green");
- QTest::addColumn<int>("blue");
-
- QTest::newRow("red") << 255 << 0 << 0;
- QTest::newRow("green") << 0 << 255 << 0;
- QTest::newRow("blue") << 0 << 0 << 255;
-}
-
-void tst_QPixmap::toWinHBITMAP()
-{
- QFETCH(int, red);
- QFETCH(int, green);
- QFETCH(int, blue);
-
- QPixmap pm(100, 100);
- pm.fill(QColor(red, green, blue));
-
- HBITMAP bitmap = pm.toWinHBITMAP();
-
- QVERIFY(bitmap != 0);
-
- // Verify size
- BITMAP bitmap_info;
- memset(&bitmap_info, 0, sizeof(BITMAP));
-
- int res = GetObject(bitmap, sizeof(BITMAP), &bitmap_info);
- QVERIFY(res);
-
- QCOMPARE(100, (int) bitmap_info.bmWidth);
- QCOMPARE(100, (int) bitmap_info.bmHeight);
-
- HDC display_dc = GetDC(0);
- HDC bitmap_dc = CreateCompatibleDC(display_dc);
-
- HBITMAP null_bitmap = (HBITMAP) SelectObject(bitmap_dc, bitmap);
-
- COLORREF pixel = GetPixel(bitmap_dc, 0, 0);
- QCOMPARE((int)GetRValue(pixel), red);
- QCOMPARE((int)GetGValue(pixel), green);
- QCOMPARE((int)GetBValue(pixel), blue);
-
- // Clean up
- SelectObject(bitmap_dc, null_bitmap);
- DeleteObject(bitmap);
- DeleteDC(bitmap_dc);
- ReleaseDC(0, display_dc);
-
-}
-
-void tst_QPixmap::fromWinHBITMAP_data()
-{
- toWinHBITMAP_data();
-}
-
-void tst_QPixmap::fromWinHBITMAP()
-{
- QFETCH(int, red);
- QFETCH(int, green);
- QFETCH(int, blue);
-
- HDC display_dc = GetDC(0);
- HDC bitmap_dc = CreateCompatibleDC(display_dc);
- HBITMAP bitmap = CreateCompatibleBitmap(display_dc, 100, 100);
- SelectObject(bitmap_dc, bitmap);
-
- SelectObject(bitmap_dc, GetStockObject(NULL_PEN));
- HGDIOBJ old_brush = SelectObject(bitmap_dc, CreateSolidBrush(RGB(red, green, blue)));
- Rectangle(bitmap_dc, 0, 0, 100, 100);
-
-#ifdef Q_OS_WINCE //the device context has to be deleted before QPixmap::fromWinHBITMAP()
- DeleteDC(bitmap_dc);
-#endif
- QPixmap pixmap = QPixmap::fromWinHBITMAP(bitmap);
- QCOMPARE(pixmap.width(), 100);
- QCOMPARE(pixmap.height(), 100);
-
- QImage image = pixmap.toImage();
- QRgb pixel = image.pixel(0, 0);
- QCOMPARE(qRed(pixel), red);
- QCOMPARE(qGreen(pixel), green);
- QCOMPARE(qBlue(pixel), blue);
-
- DeleteObject(SelectObject(bitmap_dc, old_brush));
- DeleteObject(SelectObject(bitmap_dc, bitmap));
-#ifndef Q_OS_WINCE
- DeleteDC(bitmap_dc);
-#endif
- ReleaseDC(0, display_dc);
-}
-
-static void compareImages(const QImage &image1, const QImage &image2)
-{
- QCOMPARE(image1.width(), image2.width());
- QCOMPARE(image1.height(), image2.height());
- QCOMPARE(image1.format(), image2.format());
-
- static const int fuzz = 1;
-
- for (int y = 0; y < image1.height(); y++)
- {
- for (int x = 0; x < image2.width(); x++)
- {
- QRgb p1 = image1.pixel(x, y);
- QRgb p2 = image2.pixel(x, y);
-
- bool pixelMatches =
- qAbs(qRed(p1) - qRed(p2)) <= fuzz
- && qAbs(qGreen(p1) - qGreen(p2)) <= fuzz
- && qAbs(qBlue(p1) - qBlue(p2)) <= fuzz
- && qAbs(qAlpha(p1) - qAlpha(p2)) <= fuzz;
-
- QVERIFY(pixelMatches);
- }
- }
-}
-
-void tst_QPixmap::toWinHICON_data()
-{
- QTest::addColumn<QString>("image");
- QTest::addColumn<int>("width");
- QTest::addColumn<int>("height");
-
- const QString prefix = QLatin1String(SRCDIR) + "/convertFromToHICON";
-
- QTest::newRow("32bpp_16x16") << prefix + QLatin1String("/icon_32bpp") << 16 << 16;
- QTest::newRow("32bpp_32x32") << prefix + QLatin1String("/icon_32bpp") << 32 << 32;
- QTest::newRow("32bpp_48x48") << prefix + QLatin1String("/icon_32bpp") << 48 << 48;
- QTest::newRow("32bpp_256x256") << prefix + QLatin1String("/icon_32bpp") << 256 << 256;
-
- QTest::newRow("8bpp_16x16") << prefix + QLatin1String("/icon_8bpp") << 16 << 16;
- QTest::newRow("8bpp_32x32") << prefix + QLatin1String("/icon_8bpp") << 32 << 32;
- QTest::newRow("8bpp_48x48") << prefix + QLatin1String("/icon_8bpp") << 48 << 48;
-}
-
-void tst_QPixmap::toWinHICON()
-{
-#ifdef Q_OS_WINCE
- QSKIP("Test shall be enabled for Windows CE shortly.", SkipAll);
-#endif
-
- QFETCH(int, width);
- QFETCH(int, height);
- QFETCH(QString, image);
-
- QPixmap empty(width, height);
- empty.fill(Qt::transparent);
-
- HDC display_dc = GetDC(0);
- HDC bitmap_dc = CreateCompatibleDC(display_dc);
- HBITMAP bitmap = empty.toWinHBITMAP(QPixmap::Alpha);
- SelectObject(bitmap_dc, bitmap);
-
- QImage imageFromFile(image + QString(QLatin1String("_%1x%2.png")).arg(width).arg(height));
- imageFromFile = imageFromFile.convertToFormat(QImage::Format_ARGB32_Premultiplied);
-
- HICON icon = QPixmap::fromImage(imageFromFile).toWinHICON();
-
- DrawIconEx(bitmap_dc, 0, 0, icon, width, height, 0, 0, DI_NORMAL);
-
- DestroyIcon(icon);
- DeleteDC(bitmap_dc);
-
- QImage imageFromHICON = QPixmap::fromWinHBITMAP(bitmap, QPixmap::Alpha).toImage();
-
- ReleaseDC(0, display_dc);
-
- // fuzzy comparison must be used, as the pixel values change slightly during conversion
- // between QImage::Format_ARGB32 and QImage::Format_ARGB32_Premultiplied, or elsewhere
-
- // QVERIFY(imageFromHICON == imageFromFile);
- compareImages(imageFromHICON, imageFromFile);
-}
-
-void tst_QPixmap::fromWinHICON_data()
-{
- toWinHICON_data();
-}
-
-void tst_QPixmap::fromWinHICON()
-{
-#ifdef Q_OS_WINCE
- QSKIP("Test shall be enabled for Windows CE shortly.", SkipAll);
-
-#else
- QFETCH(int, width);
- QFETCH(int, height);
- QFETCH(QString, image);
-
- HICON icon = (HICON)LoadImage(0, (wchar_t*)(image + QLatin1String(".ico")).utf16(), IMAGE_ICON, width, height, LR_LOADFROMFILE);
- QImage imageFromHICON = QPixmap::fromWinHICON(icon).toImage();
- DestroyIcon(icon);
-
- QImage imageFromFile(image + QString(QLatin1String("_%1x%2.png")).arg(width).arg(height));
- imageFromFile = imageFromFile.convertToFormat(QImage::Format_ARGB32_Premultiplied);
-
- // fuzzy comparison must be used, as the pixel values change slightly during conversion
- // between QImage::Format_ARGB32 and QImage::Format_ARGB32_Premultiplied, or elsewhere
-
- // QVERIFY(imageFromHICON == imageFromFile);
- compareImages(imageFromHICON, imageFromFile);
-#endif
-}
-
-#endif // Q_WS_WIN
-
-#if defined(Q_OS_SYMBIAN)
-Q_DECLARE_METATYPE(TDisplayMode)
-
-void tst_QPixmap::fromSymbianCFbsBitmap_data()
-{
- QTest::addColumn<TDisplayMode>("format");
- QTest::addColumn<int>("width");
- QTest::addColumn<int>("height");
- QTest::addColumn<QColor>("color");
-
- const int smallWidth = 20;
- const int smallHeight = 20;
- const int largeWidth = 240;
- const int largeHeight = 320;
- const int notAlignedWidth = 250;
- const int notAlignedHeight = 250;
-
- // Indexed Color Formats - Disabled since images seem to be blank -> no palette?
-// QTest::newRow("EGray2 small") << EGray2 << smallWidth << smallHeight << QColor(Qt::black);
-// QTest::newRow("EGray2 big") << EGray2 << largeWidth << largeHeight << QColor(Qt::black);
-// QTest::newRow("EGray256 small") << EGray256 << smallWidth << smallHeight << QColor(Qt::blue);
-// QTest::newRow("EGray256 big") << EGray256 << largeWidth << largeHeight << QColor(Qt::blue);
-// QTest::newRow("EColor256 small") << EColor256 << smallWidth << smallHeight << QColor(Qt::red);
-// QTest::newRow("EColor256 big") << EColor256 << largeWidth << largeHeight << QColor(Qt::red);
-
- // Direct Color Formats
- QTest::newRow("EColor4K small") << EColor4K << smallWidth << smallHeight << QColor(Qt::red);
- QTest::newRow("EColor4K big") << EColor4K << largeWidth << largeHeight << QColor(Qt::red);
- QTest::newRow("EColor4K not aligned") << EColor4K << notAlignedWidth << notAlignedHeight << QColor(Qt::red);
- QTest::newRow("EColor64K small") << EColor64K << smallWidth << smallHeight << QColor(Qt::green);
- QTest::newRow("EColor64K big") << EColor64K << largeWidth << largeHeight << QColor(Qt::green);
- QTest::newRow("EColor64K not aligned") << EColor64K << notAlignedWidth << notAlignedHeight << QColor(Qt::green);
- QTest::newRow("EColor16M small") << EColor16M << smallWidth << smallHeight << QColor(Qt::yellow);
- QTest::newRow("EColor16M big") << EColor16M << largeWidth << largeHeight << QColor(Qt::yellow);
- QTest::newRow("EColor16M not aligned") << EColor16M << notAlignedWidth << notAlignedHeight << QColor(Qt::yellow);
- QTest::newRow("EColor16MU small") << EColor16MU << smallWidth << smallHeight << QColor(Qt::red);
- QTest::newRow("EColor16MU big") << EColor16MU << largeWidth << largeHeight << QColor(Qt::red);
- QTest::newRow("EColor16MU not aligned") << EColor16MU << notAlignedWidth << notAlignedHeight << QColor(Qt::red);
- QTest::newRow("EColor16MA small opaque") << EColor16MA << smallWidth << smallHeight << QColor(255, 255, 0);
- QTest::newRow("EColor16MA big opaque") << EColor16MA << largeWidth << largeHeight << QColor(255, 255, 0);
- QTest::newRow("EColor16MA not aligned opaque") << EColor16MA << notAlignedWidth << notAlignedHeight << QColor(255, 255, 0);
-
- // Semi-transparent Colors - Disabled for now, since the QCOMPARE fails, but visually confirmed to work
-// QTest::newRow("EColor16MA small semi") << EColor16MA << smallWidth << smallHeight << QColor(255, 255, 0, 127);
-// QTest::newRow("EColor16MA big semi") << EColor16MA << largeWidth << largeHeight << QColor(255, 255, 0, 127);
-// QTest::newRow("EColor16MA small trans") << EColor16MA << smallWidth << smallHeight << QColor(255, 255, 0, 0);
-// QTest::newRow("EColor16MA big trans") << EColor16MA << largeWidth << largeHeight << QColor(255, 255, 0, 0);
-
-#if !defined(__SERIES60_31__)
- QTest::newRow("EColor16MAP small") << EColor16MAP << smallWidth << smallHeight << QColor(Qt::red);
- QTest::newRow("EColor16MAP big") << EColor16MAP << largeWidth << largeHeight << QColor(Qt::red);
-#endif
-}
-
-void tst_QPixmap::fromSymbianCFbsBitmap()
-{
- QFETCH(TDisplayMode, format);
- QFETCH(int, width);
- QFETCH(int, height);
- QFETCH(QColor, color);
- int expectedDepth = TDisplayModeUtils::NumDisplayModeBitsPerPixel(format);
-
- CFbsBitmap *nativeBitmap = 0;
- CFbsBitmapDevice *bitmapDevice = 0;
- CBitmapContext *bitmapContext = 0;
-
- nativeBitmap = new (ELeave) CFbsBitmap();
- TInt err = nativeBitmap->Create(TSize(width, height), format);
- CleanupStack::PushL(nativeBitmap);
- QVERIFY(err == KErrNone);
- bitmapDevice = CFbsBitmapDevice::NewL(nativeBitmap);
- CleanupStack::PushL(bitmapDevice);
-
- err = bitmapDevice->CreateBitmapContext(bitmapContext);
- CleanupStack::PushL(bitmapContext);
- QVERIFY(err == KErrNone);
- TRgb symbianColor = TRgb(color.red(), color.green(), color.blue(), color.alpha());
- bitmapContext->SetBrushColor(symbianColor);
- bitmapContext->Clear();
-
- __UHEAP_MARK;
- { // Test the null case
- CFbsBitmap *bitmap = 0;
- QPixmap pixmap = QPixmap::fromSymbianCFbsBitmap(bitmap);
- QVERIFY(pixmap.isNull());
- }
- __UHEAP_MARKEND;
-
- __UHEAP_MARK;
- { // Test the normal case
- QPixmap pixmap = QPixmap::fromSymbianCFbsBitmap(nativeBitmap);
-// QCOMPARE(pixmap.depth(), expectedDepth); // Depth is not preserved now
- QCOMPARE(pixmap.width(), width);
- QCOMPARE(pixmap.height(), height);
- QImage image = pixmap.toImage();
-
- QColor actualColor(image.pixel(1, 1));
- QCOMPARE(actualColor, color);
-
- QImage shouldBe(pixmap.width(), pixmap.height(), image.format());
- if (image.format() == QImage::Format_RGB16)
- shouldBe.fill(qrgb565(color.rgba()).rawValue());
- else
- shouldBe.fill(color.rgba());
- QCOMPARE(image, shouldBe);
- }
- __UHEAP_MARKEND;
-
- CleanupStack::PopAndDestroy(3);
-}
-
-void tst_QPixmap::toSymbianCFbsBitmap_data()
-{
- QTest::addColumn<int>("red");
- QTest::addColumn<int>("green");
- QTest::addColumn<int>("blue");
-
- QTest::newRow("red") << 255 << 0 << 0;
- QTest::newRow("green") << 0 << 255 << 0;
- QTest::newRow("blue") << 0 << 0 << 255;
-}
-
-void tst_QPixmap::toSymbianCFbsBitmap()
-{
- QFETCH(int, red);
- QFETCH(int, green);
- QFETCH(int, blue);
-
- QPixmap pm(100, 100);
- pm.fill(QColor(red, green, blue));
-
- CFbsBitmap *bitmap = pm.toSymbianCFbsBitmap();
-
- QVERIFY(bitmap != 0);
-
- // Verify size
- QCOMPARE(100, (int) bitmap->SizeInPixels().iWidth);
- QCOMPARE(100, (int) bitmap->SizeInPixels().iHeight);
-
- // Verify pixel color
- TRgb pixel;
- bitmap->GetPixel(pixel, TPoint(0,0));
- QCOMPARE((int)pixel.Red(), red);
- QCOMPARE((int)pixel.Green(), green);
- QCOMPARE((int)pixel.Blue(), blue);
-
- // Clean up
- delete bitmap;
-}
-#endif
-
-void tst_QPixmap::onlyNullPixmapsOutsideGuiThread()
-{
-#ifdef Q_WS_QPA
- QSKIP("QTBUG-20864 can't determine if threaded pixmaps are available for qpa", SkipAll);
-#endif
-#if !defined(Q_WS_WIN) && !defined(Q_WS_MAC)
- class Thread : public QThread
- {
- public:
- void run()
- {
- QTest::ignoreMessage(QtWarningMsg,
- "QPixmap: It is not safe to use pixmaps outside the GUI thread");
- QPixmap pixmap;
- QVERIFY(pixmap.isNull());
-
- QTest::ignoreMessage(QtWarningMsg,
- "QPixmap: It is not safe to use pixmaps outside the GUI thread");
- QPixmap pixmap1(100, 100);
- QVERIFY(pixmap1.isNull());
-
- QTest::ignoreMessage(QtWarningMsg,
- "QPixmap: It is not safe to use pixmaps outside the GUI thread");
- QPixmap pixmap2(pixmap1);
- QVERIFY(pixmap2.isNull());
- }
- };
- Thread thread;
-#if defined(Q_OS_SYMBIAN)
- thread.setStackSize(0x10000);
-#endif
- thread.start();
-#if defined(Q_OS_SYMBIAN)
- QVERIFY(thread.wait(10000));
-#else
- thread.wait();
-#endif
-
-#endif // !defined(Q_WS_WIN) && !defined(Q_WS_MAC)
-}
-
-void tst_QPixmap::refUnref()
-{
- // Simple ref/unref
- {
- QPixmap p;
- }
- {
- QBitmap b;
- }
-
- // Get a copy of a pixmap that goes out of scope
- {
- QPixmap b;
- {
- QPixmap a(10, 10);
- a.fill(Qt::color0);
- b = a;
- }
- }
- {
- QBitmap mask;
- {
- QBitmap bitmap(10, 10);
- bitmap.fill(Qt::color1);
- mask = bitmap.mask();
- }
- mask.fill(Qt::color0);
- }
-
-}
-
-void tst_QPixmap::copy()
-{
- QPixmap src(32, 32);
- {
- QPainter p(&src);
- p.fillRect(0, 0, 32, 32, Qt::red);
- p.fillRect(10, 10, 10, 10, Qt::blue);
- }
-
- QPixmap dest = src.copy(10, 10, 10, 10);
-
- QPixmap expected(10, 10);
- expected.fill(Qt::blue);
- QVERIFY(lenientCompare(dest, expected));
-
- QPixmap trans;
- trans.fill(Qt::transparent);
-
- QPixmap transCopy = trans.copy();
- QVERIFY(pixmapsAreEqual(&trans, &transCopy));
-}
-
-void tst_QPixmap::depthOfNullObjects()
-{
- QBitmap b1;
- QVERIFY(b1.depth() == 0);
- QPixmap p4;
- QVERIFY(p4.depth() == 0);
-}
-
-void tst_QPixmap::transformed()
-{
- QPixmap p1(20, 10);
- p1.fill(Qt::red);
- {
- QPainter p(&p1);
- p.drawRect(0, 0, p1.width() - 1, p1.height() - 1);
- }
-
- QPixmap p2(10, 20);
- {
- QPainter p(&p2);
- p.rotate(90);
- p.drawPixmap(0, -p1.height(), p1);
- }
-
- QPixmap p3(20, 10);
- {
- QPainter p(&p3);
- p.rotate(180);
- p.drawPixmap(-p1.width(), -p1.height(), p1);
- }
-
- QPixmap p4(10, 20);
- {
- QPainter p(&p4);
- p.rotate(270);
- p.drawPixmap(-p1.width(), 0, p1);
- }
-
- QPixmap p1_90 = p1.transformed(QTransform().rotate(90));
- QPixmap p1_180 = p1.transformed(QTransform().rotate(180));
- QPixmap p1_270 = p1.transformed(QTransform().rotate(270));
-
- QVERIFY(lenientCompare(p1_90, p2));
- QVERIFY(lenientCompare(p1_180, p3));
- QVERIFY(lenientCompare(p1_270, p4));
-}
-
-void tst_QPixmap::transformed2()
-{
- QPixmap pm(3, 3);
- pm.fill(Qt::red);
- QPainter p(&pm);
- p.fillRect(0, 0, 3, 3, QBrush(Qt::Dense4Pattern));
- p.end();
-
- QTransform transform;
- transform.rotate(-90);
- transform.scale(3, 3);
-
- QPixmap actual = pm.transformed(transform);
-
- QPixmap expected(9, 9);
- expected.fill(Qt::red);
- p.begin(&expected);
- p.setBrush(Qt::black);
- p.setPen(Qt::NoPen);
- p.drawRect(3, 0, 3, 3);
- p.drawRect(0, 3, 3, 3);
- p.drawRect(6, 3, 3, 3);
- p.drawRect(3, 6, 3, 3);
- p.end();
-
- QVERIFY(lenientCompare(actual, expected));
-}
-
-void tst_QPixmap::fromImage_crash()
-{
- QImage *img = new QImage(64, 64, QImage::Format_ARGB32_Premultiplied);
-
- QPixmap pm = QPixmap::fromImage(*img);
- QPainter painter(&pm);
-
- delete img;
-}
-
-//This is testing QPixmapData::createCompatiblePixmapData - see QTBUG-5977
-void tst_QPixmap::splash_crash()
-{
- QPixmap pix;
- pix = QPixmap(":/images/designer.png");
- QSplashScreen splash(pix);
- splash.show();
- QCoreApplication::processEvents();
- splash.close();
-}
-
-void tst_QPixmap::fromData()
-{
- unsigned char bits[] = { 0xaa, 0x55 };
-
- QBitmap bm = QBitmap::fromData(QSize(8, 2), bits);
- QImage img = bm.toImage();
-
- QSet<QRgb> colors;
- for (int y = 0; y < img.height(); ++y)
- for (int x = 0; x < img.width(); ++x)
- colors << img.pixel(x, y);
-
- QCOMPARE(colors.size(), 2);
-
- QCOMPARE(img.pixel(0, 0), QRgb(0xffffffff));
- QCOMPARE(img.pixel(0, 1), QRgb(0xff000000));
-}
-
-void tst_QPixmap::loadFromDataNullValues()
-{
- {
- QPixmap pixmap;
- pixmap.loadFromData(QByteArray());
- QVERIFY(pixmap.isNull());
- }
- {
- QPixmap pixmap;
- pixmap.loadFromData(0, 123);
- QVERIFY(pixmap.isNull());
- }
- {
- QPixmap pixmap;
- const uchar bla[] = "bla";
- pixmap.loadFromData(bla, 0);
- QVERIFY(pixmap.isNull());
- }
-}
-
-void tst_QPixmap::loadFromDataImage_data()
-{
- QTest::addColumn<QString>("imagePath");
-#ifdef Q_OS_SYMBIAN
- const QString prefix = QLatin1String(SRCDIR) + "loadFromData";
-#else
- const QString prefix = QLatin1String(SRCDIR) + "/loadFromData";
-#endif
- QTest::newRow("designer_argb32.png") << prefix + "/designer_argb32.png";
- // When no extension is provided we try all extensions that has been registered by image providers
- QTest::newRow("designer_argb32") << prefix + "/designer_argb32.png";
- QTest::newRow("designer_indexed8_no_alpha.png") << prefix + "/designer_indexed8_no_alpha.png";
- QTest::newRow("designer_indexed8_with_alpha.png") << prefix + "/designer_indexed8_with_alpha.png";
- QTest::newRow("designer_rgb32.png") << prefix + "/designer_rgb32.png";
- QTest::newRow("designer_indexed8_no_alpha.gif") << prefix + "/designer_indexed8_no_alpha.gif";
- QTest::newRow("designer_indexed8_with_alpha.gif") << prefix + "/designer_indexed8_with_alpha.gif";
- QTest::newRow("designer_rgb32.jpg") << prefix + "/designer_rgb32.jpg";
-}
-
-void tst_QPixmap::loadFromDataImage()
-{
- QFETCH(QString, imagePath);
-
- QImage imageRef(imagePath);
- QPixmap pixmapWithCopy = QPixmap::fromImage(imageRef);
-
- QFile file(imagePath);
- file.open(QIODevice::ReadOnly);
- QByteArray rawData = file.readAll();
-
- QPixmap directLoadingPixmap;
- directLoadingPixmap.loadFromData(rawData);
-
- QVERIFY(pixmapsAreEqual(&pixmapWithCopy, &directLoadingPixmap));
-}
-
-void tst_QPixmap::fromImageReader_data()
-{
- QTest::addColumn<QString>("imagePath");
-#ifdef Q_OS_SYMBIAN
- const QString prefix = QLatin1String(SRCDIR) + "loadFromData";
-#else
- const QString prefix = QLatin1String(SRCDIR) + "/loadFromData";
-#endif
- QTest::newRow("designer_argb32.png") << prefix + "/designer_argb32.png";
- QTest::newRow("designer_indexed8_no_alpha.png") << prefix + "/designer_indexed8_no_alpha.png";
- QTest::newRow("designer_indexed8_with_alpha.png") << prefix + "/designer_indexed8_with_alpha.png";
- QTest::newRow("designer_rgb32.png") << prefix + "/designer_rgb32.png";
- QTest::newRow("designer_indexed8_no_alpha.gif") << prefix + "/designer_indexed8_no_alpha.gif";
- QTest::newRow("designer_indexed8_with_alpha.gif") << prefix + "/designer_indexed8_with_alpha.gif";
- QTest::newRow("designer_rgb32.jpg") << prefix + "/designer_rgb32.jpg";
- QTest::newRow("designer_indexed8_with_alpha_animated") << prefix + "/designer_indexed8_with_alpha_animated.gif";
- QTest::newRow("designer_indexed8_with_alpha_animated") << prefix + "/designer_indexed8_no_alpha_animated.gif";
-}
-
-void tst_QPixmap::fromImageReader()
-{
- QFETCH(QString, imagePath);
-
- QImage imageRef(imagePath);
- QPixmap pixmapWithCopy = QPixmap::fromImage(imageRef);
-
- QImageReader imageReader(imagePath);
-
- QPixmap directLoadingPixmap = QPixmap::fromImageReader(&imageReader);
-
- QVERIFY(pixmapsAreEqual(&pixmapWithCopy, &directLoadingPixmap));
-}
-
-void tst_QPixmap::fromImageReaderAnimatedGif_data()
-{
- QTest::addColumn<QString>("imagePath");
- QTest::newRow("gif with alpha") << QString::fromLatin1("/designer_indexed8_with_alpha_animated.gif");
- QTest::newRow("gif without alpha") << QString::fromLatin1("/designer_indexed8_no_alpha_animated.gif");
-}
-
-void tst_QPixmap::fromImageReaderAnimatedGif()
-{
- QFETCH(QString, imagePath);
-#ifdef Q_OS_SYMBIAN
- const QString prefix = QLatin1String(SRCDIR) + "loadFromData";
-#else
- const QString prefix = QLatin1String(SRCDIR) + "/loadFromData";
-#endif
- const QString path = prefix + imagePath;
-
- QImageReader referenceReader(path);
- QImageReader pixmapReader(path);
-
- QVERIFY(referenceReader.canRead());
- QVERIFY(referenceReader.imageCount() > 1);
-
- for (int i = 0; i < referenceReader.imageCount(); ++i) {
- QImage refImage = referenceReader.read();
- QPixmap refPixmap = QPixmap::fromImage(refImage);
-
- QPixmap directLoadingPixmap = QPixmap::fromImageReader(&pixmapReader);
- QVERIFY(pixmapsAreEqual(&refPixmap, &directLoadingPixmap));
- }
-}
-
-void tst_QPixmap::task_246446()
-{
- // This crashed without the bugfix in 246446
- QPixmap pm(10, 10);
- pm.fill(Qt::transparent); // force 32-bit depth
- QBitmap bm;
- pm.setMask(bm);
- {
- QPixmap pm2(pm);
- }
- QVERIFY(pm.width() == 10);
- QVERIFY(pm.mask().isNull());
-}
-
-void tst_QPixmap::preserveDepth()
-{
- QPixmap target(64, 64);
- target.fill(Qt::transparent);
-
- QPixmap source(64, 64);
- source.fill(Qt::white);
-
- int depth = source.depth();
-
- QPainter painter(&target);
- painter.setBrush(source);
- painter.drawRect(target.rect());
- painter.end();
-
- QCOMPARE(depth, source.depth());
-}
-
-void tst_QPixmap::loadAsBitmapOrPixmap()
-{
- QImage tmp(10, 10, QImage::Format_RGB32);
- tmp.save("temp_image.png");
-
- bool ok;
-
- // Check that we can load the pixmap as a pixmap and that it then turns into a pixmap
- QPixmap pixmap("temp_image.png");
- QVERIFY(!pixmap.isNull());
- QVERIFY(pixmap.depth() > 1);
- QVERIFY(!pixmap.isQBitmap());
-
- pixmap = QPixmap();
- ok = pixmap.load("temp_image.png");
- QVERIFY(ok);
- QVERIFY(!pixmap.isNull());
- QVERIFY(pixmap.depth() > 1);
- QVERIFY(!pixmap.isQBitmap());
-
- //now we can try to load it without an extension
- pixmap = QPixmap();
- ok = pixmap.load("temp_image");
- QVERIFY(ok);
- QVERIFY(!pixmap.isNull());
- QVERIFY(pixmap.depth() > 1);
- QVERIFY(!pixmap.isQBitmap());
-
- // The do the same check for bitmaps..
- QBitmap bitmap("temp_image.png");
- QVERIFY(!bitmap.isNull());
- QVERIFY(bitmap.depth() == 1);
- QVERIFY(bitmap.isQBitmap());
-
- bitmap = QBitmap();
- ok = bitmap.load("temp_image.png");
- QVERIFY(ok);
- QVERIFY(!bitmap.isNull());
- QVERIFY(bitmap.depth() == 1);
- QVERIFY(bitmap.isQBitmap());
-}
-
-void tst_QPixmap::toImageDeepCopy()
-{
- QPixmap pixmap(64, 64);
- pixmap.fill(Qt::white);
-
- QPainter painter(&pixmap);
- QImage first = pixmap.toImage();
-
- painter.setBrush(Qt::black);
- painter.drawEllipse(pixmap.rect());
-
- QImage second = pixmap.toImage();
-
- QVERIFY(first != second);
-}
-
-#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_OPENVG)
-Q_OPENVG_EXPORT VGImage qPixmapToVGImage(const QPixmap& pixmap);
-class FriendlyVGPixmapData : public QVGPixmapData
-{
-public:
- FriendlyVGPixmapData(PixelType type) : QVGPixmapData(type) { }
- bool sourceIsNull() { return source.isNull(); }
- friend QPixmap pixmapFromVGImage(VGImage image);
-};
-QPixmap pixmapFromVGImage(VGImage image)
-{
- if (image != VG_INVALID_HANDLE) {
- int w = vgGetParameteri(image, VG_IMAGE_WIDTH);
- int h = vgGetParameteri(image, VG_IMAGE_HEIGHT);
- FriendlyVGPixmapData *pd = new FriendlyVGPixmapData(QPixmapData::PixmapType);
- pd->resize(w, h);
- pd->vgImage = image;
- pd->recreate = false;
- pd->prevSize = QSize(pd->w, pd->h);
- return QPixmap(pd);
- }
- return QPixmap();
-}
-class Content : public QWidget
-{
-public:
- void paintEvent(QPaintEvent *) {
- QPainter painter(this);
- QColor testPixel(qRgb(200, 150, 100));
- if (pm.isNull()) { // first phase: create a VGImage
- painter.beginNativePainting();
- vgimage = vgCreateImage(VG_sARGB_8888_PRE, w, h, VG_IMAGE_QUALITY_FASTER);
- QImage img(20, 10, QImage::Format_ARGB32_Premultiplied);
- img.fill(qRgb(0, 0, 0));
- QPainter p(&img);
- p.fillRect(0, 0, img.width(), img.height(), testPixel);
- p.end();
- vgImageSubData(vgimage, img.bits(), img.bytesPerLine(), VG_sARGB_8888_PRE, 0, 0, img.width(), img.height());
- // Now the area 0,0 20x10 (in OpenVG coords) is filled with some color.
- painter.endNativePainting();
- } else { // second phase: check if readback works
- painter.drawPixmap(0, 0, pm);
- // Drawing should not cause readback, this is important for performance;
- noreadback_ok = static_cast<FriendlyVGPixmapData *>(pm.pixmapData())->sourceIsNull();
- // However toImage() requires readback.
- QImage img = pm.toImage();
- readback_ok = img.width() == pm.width();
- readback_ok &= img.height() == pm.height();
- readback_ok &= !static_cast<FriendlyVGPixmapData *>(pm.pixmapData())->sourceIsNull();
- uint pix = img.pixel(1, 1);
- content_ok = qRed(pix) == testPixel.red();
- content_ok &= qGreen(pix) == testPixel.green();
- content_ok &= qBlue(pix) == testPixel.blue();
- pix = img.pixel(img.width() - 1, img.height() - 1);
- content_ok &= qRed(pix) == 0;
- content_ok &= qGreen(pix) == 0;
- content_ok &= qBlue(pix) == 0;
- }
- }
- int w;
- int h;
- VGImage vgimage;
- QPixmap pm;
- bool noreadback_ok;
- bool readback_ok;
- bool content_ok;
-};
-void tst_QPixmap::vgImageReadBack()
-{
- QPixmap tmp(10, 20);
- if (tmp.pixmapData()->classId() == QPixmapData::OpenVGClass) {
- Content c;
- c.w = 50;
- c.h = 60;
- c.vgimage = VG_INVALID_HANDLE;
- c.noreadback_ok = c.readback_ok = c.content_ok = false;
- c.showFullScreen();
- QTest::qWaitForWindowShown(&c);
- QVERIFY(c.vgimage != VG_INVALID_HANDLE);
- QPixmap pm = pixmapFromVGImage(c.vgimage);
- QVERIFY(!pm.isNull());
- QCOMPARE(pm.width(), c.w);
- QCOMPARE(pm.height(), c.h);
- QVERIFY(qPixmapToVGImage(pm) == c.vgimage);
- QVERIFY(static_cast<FriendlyVGPixmapData *>(pm.pixmapData())->sourceIsNull());
- c.pm = pm;
- // Make sure the second phase in paintEvent is executed too.
- c.hide();
- c.showFullScreen();
- QTest::qWaitForWindowShown(&c);
- QVERIFY(c.noreadback_ok);
- QVERIFY(c.readback_ok);
- QVERIFY(c.content_ok);
- } else {
- QSKIP("Not using openvg graphicssystem", SkipSingle);
- }
-}
-#endif // Symbian & OpenVG
-
-void tst_QPixmap::scaled_QTBUG19157()
-{
- QPixmap foo(5000, 1);
- foo = foo.scaled(1024, 1024, Qt::KeepAspectRatio);
- QVERIFY(!foo.isNull());
-}
-
-QTEST_MAIN(tst_QPixmap)
-#include "tst_qpixmap.moc"
diff --git a/tests/auto/qpixmapfilter/qpixmapfilter.pro b/tests/auto/qpixmapfilter/qpixmapfilter.pro
deleted file mode 100644
index d52a3c39a3..0000000000
--- a/tests/auto/qpixmapfilter/qpixmapfilter.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-load(qttest_p4)
-
-QT += gui-private
-
-SOURCES += tst_qpixmapfilter.cpp
-
-wince*: {
- addFiles.files = noise.png
- addFiles.path = .
- DEPLOYMENT += addFiles
-}
-
diff --git a/tests/auto/qplaintextedit/qplaintextedit.pro b/tests/auto/qplaintextedit/qplaintextedit.pro
index fef1ac83aa..feac5e3f43 100644
--- a/tests/auto/qplaintextedit/qplaintextedit.pro
+++ b/tests/auto/qplaintextedit/qplaintextedit.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += gui-private
INCLUDEPATH += ../
diff --git a/tests/auto/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/qplaintextedit/tst_qplaintextedit.cpp
index 0802f51752..8a423dc933 100644
--- a/tests/auto/qplaintextedit/tst_qplaintextedit.cpp
+++ b/tests/auto/qplaintextedit/tst_qplaintextedit.cpp
@@ -50,7 +50,7 @@
#include <qapplication.h>
#include <qclipboard.h>
#include <qtextbrowser.h>
-#include <private/qtextcontrol_p.h>
+#include <private/qwidgettextcontrol_p.h>
#include <qscrollbar.h>
#include <qtextobject.h>
@@ -1136,7 +1136,7 @@ void tst_QPlainTextEdit::mimeDataReimplementations()
QCOMPARE(ed.insertCallCount, 0);
#ifdef QT_BUILD_INTERNAL
- QTextControl *control = qFindChild<QTextControl *>(&ed);
+ QWidgetTextControl *control = qFindChild<QWidgetTextControl *>(&ed);
QVERIFY(control);
control->canInsertFromMimeData(QApplication::clipboard()->mimeData());
diff --git a/tests/auto/qpluginloader/tst/tst.pro b/tests/auto/qpluginloader/tst/tst.pro
deleted file mode 100644
index 7ae6d89143..0000000000
--- a/tests/auto/qpluginloader/tst/tst.pro
+++ /dev/null
@@ -1,32 +0,0 @@
-load(qttest_p4)
-SOURCES += ../tst_qpluginloader.cpp
-TARGET = ../tst_qpluginloader
-QT = core
-HEADERS += ../theplugin/plugininterface.h
-
-win32 {
- CONFIG(debug, debug|release) {
- TARGET = ../../debug/tst_qpluginloader
-} else {
- TARGET = ../../release/tst_qpluginloader
- }
-}
-
-
-wince*: {
- addFiles.files = $$OUT_PWD/../bin/*.dll
- addFiles.path = bin
- DEPLOYMENT += addFiles
-}
-
-symbian: {
- libDep.files = tst_qpluginloaderlib.dll
- libDep.path = /sys/bin
- pluginDep.files = theplugin.dll
- pluginDep.path = bin
-
- DEPLOYMENT += libDep pluginDep
-}
-
-DEFINES += SRCDIR=\\\"$$PWD/../\\\"
-mac*:CONFIG+=insignificant_test
diff --git a/tests/auto/qpointer/qpointer.pro b/tests/auto/qpointer/qpointer.pro
deleted file mode 100644
index a30a6fa42b..0000000000
--- a/tests/auto/qpointer/qpointer.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qpointer.cpp
-
-
diff --git a/tests/auto/qpolygon/qpolygon.pro b/tests/auto/qpolygon/qpolygon.pro
deleted file mode 100644
index e832666d7c..0000000000
--- a/tests/auto/qpolygon/qpolygon.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qpolygon.cpp
-
-unix:!mac:!symbian:LIBS+=-lm
-
-
diff --git a/tests/auto/qprinter/qprinter.pro b/tests/auto/qprinter/qprinter.pro
deleted file mode 100644
index b412688544..0000000000
--- a/tests/auto/qprinter/qprinter.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qprinter.cpp
-
-mac*:CONFIG+=insignificant_test
diff --git a/tests/auto/qprinter/tst_qprinter.cpp b/tests/auto/qprinter/tst_qprinter.cpp
deleted file mode 100644
index f67f8af3bd..0000000000
--- a/tests/auto/qprinter/tst_qprinter.cpp
+++ /dev/null
@@ -1,1044 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-
-#include <qprinter.h>
-#include <qpagesetupdialog.h>
-#include <qpainter.h>
-#include <qprintdialog.h>
-#include <qprinterinfo.h>
-#include <qvariant.h>
-#include <qpainter.h>
-#include <qprintengine.h>
-
-#include <math.h>
-
-#ifdef Q_WS_WIN
-#include <windows.h>
-#endif
-
-Q_DECLARE_METATYPE(QRect)
-
-QT_FORWARD_DECLARE_CLASS(QPrinter)
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-#ifndef QT_NO_PRINTER
-
-class tst_QPrinter : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QPrinter();
- virtual ~tst_QPrinter();
-
-
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-private slots:
- void getSetCheck();
-// Add your testfunctions and testdata create functions here
- void testPageSize();
- void testPageRectAndPaperRect();
- void testPageRectAndPaperRect_data();
- void testSetOptions();
- void testMargins_data();
- void testMargins();
- void testNonExistentPrinter();
- void testPageSetupDialog();
- void testMulitpleSets_data();
- void testMulitpleSets();
- void testPageMargins_data();
- void testPageMargins();
- void changingOutputFormat();
- void outputFormatFromSuffix();
- void setGetPaperSize();
- void valuePreservation();
- void errorReporting();
- void testCustomPageSizes();
- void printDialogCompleter();
-
- void testCopyCount();
- void testCurrentPage();
-
- void taskQTBUG4497_reusePrinterOnDifferentFiles();
- void testPdfTitle();
-
-private:
-};
-
-// Testing get/set functions
-void tst_QPrinter::getSetCheck()
-{
- QPrinter obj1;
- // OutputFormat QPrinter::outputFormat()
- // void QPrinter::setOutputFormat(OutputFormat)
- obj1.setOutputFormat(QPrinter::OutputFormat(QPrinter::PdfFormat));
- QCOMPARE(QPrinter::OutputFormat(QPrinter::PdfFormat), obj1.outputFormat());
-
- // bool QPrinter::collateCopies()
- // void QPrinter::setCollateCopies(bool)
- obj1.setCollateCopies(false);
- QCOMPARE(false, obj1.collateCopies());
- obj1.setCollateCopies(true);
- QCOMPARE(true, obj1.collateCopies());
-
- obj1.setColorMode(QPrinter::GrayScale);
- QCOMPARE(obj1.colorMode(), QPrinter::GrayScale);
- obj1.setColorMode(QPrinter::Color);
- QCOMPARE(obj1.colorMode(), QPrinter::Color);
-
- obj1.setCreator(QString::fromLatin1("RandomQtUser"));
- QCOMPARE(obj1.creator(), QString::fromLatin1("RandomQtUser"));
-
- obj1.setDocName(QString::fromLatin1("RandomQtDocument"));
- QCOMPARE(obj1.docName(), QString::fromLatin1("RandomQtDocument"));
-
- obj1.setDoubleSidedPrinting(true);
- QCOMPARE(obj1.doubleSidedPrinting(), true);
- obj1.setDoubleSidedPrinting(false);
- QCOMPARE(obj1.doubleSidedPrinting(), false);
-
- obj1.setFromTo(1, 4);
- QCOMPARE(obj1.fromPage(), 1);
- QCOMPARE(obj1.toPage(), 4);
-
- obj1.setFullPage(true);
- QCOMPARE(obj1.fullPage(), true);
- obj1.setFullPage(false);
- QCOMPARE(obj1.fullPage(), false);
-
- obj1.setOrientation(QPrinter::Landscape);
- QCOMPARE(obj1.orientation(), QPrinter::Landscape);
- obj1.setOrientation(QPrinter::Portrait);
- QCOMPARE(obj1.orientation(), QPrinter::Portrait);
-
- obj1.setOutputFileName(QString::fromLatin1("RandomQtName"));
- QCOMPARE(obj1.outputFileName(), QString::fromLatin1("RandomQtName"));
-
- obj1.setPageOrder(QPrinter::FirstPageFirst);
- QCOMPARE(obj1.pageOrder(), QPrinter::FirstPageFirst);
- obj1.setPageOrder(QPrinter::LastPageFirst);
- QCOMPARE(obj1.pageOrder(), QPrinter::LastPageFirst);
-
- obj1.setPaperSource(QPrinter::Cassette);
- QCOMPARE(obj1.paperSource(), QPrinter::Cassette);
- obj1.setPaperSource(QPrinter::Middle);
- QCOMPARE(obj1.paperSource(), QPrinter::Middle);
-
-#ifdef Q_OS_UNIX
- obj1.setPrintProgram(QString::fromLatin1("/bin/true"));
- QCOMPARE(obj1.printProgram(), QString::fromLatin1("/bin/true"));
-
- obj1.setPrinterSelectionOption(QString::fromLatin1("--option"));
- QCOMPARE(obj1.printerSelectionOption(), QString::fromLatin1("--option"));
-#endif
-
- obj1.setPrinterName(QString::fromLatin1("myPrinter"));
- QCOMPARE(obj1.printerName(), QString::fromLatin1("myPrinter"));
-
- // bool QPrinter::fontEmbeddingEnabled()
- // void QPrinter::setFontEmbeddingEnabled(bool)
- obj1.setFontEmbeddingEnabled(false);
- QCOMPARE(false, obj1.fontEmbeddingEnabled());
- obj1.setFontEmbeddingEnabled(true);
- QCOMPARE(true, obj1.fontEmbeddingEnabled());
-
- // PageSize QPrinter::pageSize()
- // void QPrinter::setPageSize(PageSize)
- obj1.setPageSize(QPrinter::PageSize(QPrinter::A4));
- QCOMPARE(QPrinter::PageSize(QPrinter::A4), obj1.pageSize());
- obj1.setPageSize(QPrinter::PageSize(QPrinter::Letter));
- QCOMPARE(QPrinter::PageSize(QPrinter::Letter), obj1.pageSize());
- obj1.setPageSize(QPrinter::PageSize(QPrinter::Legal));
- QCOMPARE(QPrinter::PageSize(QPrinter::Legal), obj1.pageSize());
-
- // PrintRange QPrinter::printRange()
- // void QPrinter::setPrintRange(PrintRange)
- obj1.setPrintRange(QPrinter::PrintRange(QPrinter::AllPages));
- QCOMPARE(QPrinter::PrintRange(QPrinter::AllPages), obj1.printRange());
- obj1.setPrintRange(QPrinter::PrintRange(QPrinter::Selection));
- QCOMPARE(QPrinter::PrintRange(QPrinter::Selection), obj1.printRange());
- obj1.setPrintRange(QPrinter::PrintRange(QPrinter::PageRange));
- QCOMPARE(QPrinter::PrintRange(QPrinter::PageRange), obj1.printRange());
-}
-
-tst_QPrinter::tst_QPrinter()
-{
-}
-
-tst_QPrinter::~tst_QPrinter()
-{
-}
-
-// initTestCase will be executed once before the first testfunction is executed.
-void tst_QPrinter::initTestCase()
-{
-// TODO: Add testcase generic initialization code here.
-// suggestion:
-// testWidget = new QPrinter(0,"testWidget");
-// testWidget->setFixedSize(200, 200);
-// qApp->setMainWidget(testWidget);
-// testWidget->show();
-}
-
-// cleanupTestCase will be executed once after the last testfunction is executed.
-void tst_QPrinter::cleanupTestCase()
-{
-// TODO: Add testcase generic cleanup code here.
-// suggestion:
-// testWidget->hide();
-// qApp->setMainWidget(0);
-// delete testWidget;
-}
-
-// init() will be executed immediately before each testfunction is run.
-void tst_QPrinter::init()
-{
-// TODO: Add testfunction specific initialization code here.
-}
-
-// cleanup() will be executed immediately after each testfunction is run.
-void tst_QPrinter::cleanup()
-{
-// TODO: Add testfunction specific cleanup code here.
-}
-
-#define MYCOMPARE(a, b) QCOMPARE(QVariant((int)a), QVariant((int)b))
-
-void tst_QPrinter::testPageSetupDialog()
-{
- // Make sure this doesn't crash at least
- {
- QPrinter printer;
- QPageSetupDialog dialog(&printer);
- }
-}
-
-void tst_QPrinter::testPageSize()
-{
-#if defined (Q_WS_WIN)
- QPrinter prn;
-
- prn.setPageSize(QPrinter::Letter);
- MYCOMPARE(prn.pageSize(), QPrinter::Letter);
- MYCOMPARE(prn.winPageSize(), DMPAPER_LETTER);
-
- prn.setPageSize(QPrinter::A4);
- MYCOMPARE(prn.pageSize(), QPrinter::A4);
- MYCOMPARE(prn.winPageSize(), DMPAPER_A4);
-
- prn.setWinPageSize(DMPAPER_LETTER);
- MYCOMPARE(prn.winPageSize(), DMPAPER_LETTER);
- MYCOMPARE(prn.pageSize(), QPrinter::Letter);
-
- prn.setWinPageSize(DMPAPER_A4);
- MYCOMPARE(prn.winPageSize(), DMPAPER_A4);
- MYCOMPARE(prn.pageSize(), QPrinter::A4);
-#else
- QSKIP("QPrinter::winPageSize() does not exist for nonwindows platforms", SkipAll);
-#endif
-}
-
-void tst_QPrinter::testPageRectAndPaperRect_data()
-{
- QTest::addColumn<int>("orientation");
- QTest::addColumn<bool>("withPainter");
- QTest::addColumn<int>("resolution");
- QTest::addColumn<bool>("doPaperRect");
-
- // paperrect
- QTest::newRow("paperRect0") << int(QPrinter::Portrait) << true << 300 << true;
- QTest::newRow("paperRect1") << int(QPrinter::Portrait) << false << 300 << true;
- QTest::newRow("paperRect2") << int(QPrinter::Landscape) << true << 300 << true;
- QTest::newRow("paperRect3") << int(QPrinter::Landscape) << false << 300 << true;
- QTest::newRow("paperRect4") << int(QPrinter::Portrait) << true << 600 << true;
- QTest::newRow("paperRect5") << int(QPrinter::Portrait) << false << 600 << true;
- QTest::newRow("paperRect6") << int(QPrinter::Landscape) << true << 600 << true;
- QTest::newRow("paperRect7") << int(QPrinter::Landscape) << false << 600 << true;
- QTest::newRow("paperRect8") << int(QPrinter::Portrait) << true << 1200 << true;
- QTest::newRow("paperRect9") << int(QPrinter::Portrait) << false << 1200 << true;
- QTest::newRow("paperRect10") << int(QPrinter::Landscape) << true << 1200 << true;
- QTest::newRow("paperRect11") << int(QPrinter::Landscape) << false << 1200 << true;
-
- // page rect
- QTest::newRow("pageRect0") << int(QPrinter::Portrait) << true << 300 << false;
- QTest::newRow("pageRect1") << int(QPrinter::Portrait) << false << 300 << false;
- QTest::newRow("pageRect2") << int(QPrinter::Landscape) << true << 300 << false;
- QTest::newRow("pageRect3") << int(QPrinter::Landscape) << false << 300 << false;
- QTest::newRow("pageRect4") << int(QPrinter::Portrait) << true << 600 << false;
- QTest::newRow("pageRect5") << int(QPrinter::Portrait) << false << 600 << false;
- QTest::newRow("pageRect6") << int(QPrinter::Landscape) << true << 600 << false;
- QTest::newRow("pageRect7") << int(QPrinter::Landscape) << false << 600 << false;
- QTest::newRow("pageRect8") << int(QPrinter::Portrait) << true << 1200 << false;
- QTest::newRow("pageRect9") << int(QPrinter::Portrait) << false << 1200 << false;
- QTest::newRow("pageRect10") << int(QPrinter::Landscape) << true << 1200 << false;
- QTest::newRow("pageRect11") << int(QPrinter::Landscape) << false << 1200 << false;
-}
-
-void tst_QPrinter::testPageRectAndPaperRect()
-{
- QFETCH(bool, withPainter);
- QFETCH(int, orientation);
- QFETCH(int, resolution);
- QFETCH(bool, doPaperRect);
-
- QPainter *painter = 0;
- QPrinter printer(QPrinter::HighResolution);
- printer.setOrientation(QPrinter::Orientation(orientation));
- printer.setOutputFileName("silly");
-
- QRect pageRect = doPaperRect ? printer.paperRect() : printer.pageRect();
- float inchesX = float(pageRect.width()) / float(printer.resolution());
- float inchesY = float(pageRect.height()) / float(printer.resolution());
- printer.setResolution(resolution);
- if (withPainter)
- painter = new QPainter(&printer);
-
- QRect otherRect = doPaperRect ? printer.paperRect() : printer.pageRect();
- float otherInchesX = float(otherRect.width()) / float(printer.resolution());
- float otherInchesY = float(otherRect.height()) / float(printer.resolution());
- if (painter != 0)
- delete painter;
-
- QVERIFY(qAbs(otherInchesX - inchesX) < 0.01);
- QVERIFY(qAbs(otherInchesY - inchesY) < 0.01);
-
- QVERIFY(printer.orientation() == QPrinter::Portrait || pageRect.width() > pageRect.height());
- QVERIFY(printer.orientation() != QPrinter::Portrait || pageRect.width() < pageRect.height());
-}
-
-void tst_QPrinter::testSetOptions()
-{
- QPrinter prn;
- QPrintDialog dlg(&prn);
-
- // Verify default values
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), TRUE);
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), FALSE);
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), TRUE);
-
- dlg.setEnabledOptions(QAbstractPrintDialog::PrintPageRange);
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), FALSE);
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), FALSE);
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), TRUE);
-
- dlg.setEnabledOptions((QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintSelection
- | QAbstractPrintDialog::PrintPageRange)));
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), FALSE);
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), TRUE);
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), TRUE);
-
- dlg.setEnabledOptions(QAbstractPrintDialog::PrintSelection);
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), FALSE);
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), TRUE);
- MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), FALSE);
-}
-
-void tst_QPrinter::testMargins_data()
-{
- QTest::addColumn<int>("orientation");
- QTest::addColumn<bool>("fullpage");
- QTest::addColumn<int>("pagesize");
- QTest::addColumn<int>("width");
- QTest::addColumn<int>("height");
- QTest::addColumn<bool>("withPainter");
-
- QTest::newRow("data0") << int(QPrinter::Portrait) << true << int(QPrinter::A4) << 210 << 297 << false;
- QTest::newRow("data1") << int(QPrinter::Landscape) << true << int(QPrinter::A4) << 297 << 210 << false;
- QTest::newRow("data2") << int(QPrinter::Landscape) << false << int(QPrinter::A4) << 297 << 210 << false;
- QTest::newRow("data3") << int(QPrinter::Portrait) << false << int(QPrinter::A4) << 210 << 297 << false;
- QTest::newRow("data4") << int(QPrinter::Portrait) << true << int(QPrinter::A4) << 210 << 297 << true;
- QTest::newRow("data5") << int(QPrinter::Landscape) << true << int(QPrinter::A4) << 297 << 210 << true;
- QTest::newRow("data6") << int(QPrinter::Landscape) << false << int(QPrinter::A4) << 297 << 210 << true;
- QTest::newRow("data7") << int(QPrinter::Portrait) << false << int(QPrinter::A4) << 210 << 297 << true;
-}
-
-void tst_QPrinter::testMargins()
-{
- QFETCH(bool, withPainter);
- QFETCH(int, orientation);
- QFETCH(int, pagesize);
- QFETCH(int, width);
- QFETCH(int, height);
- QFETCH(bool, fullpage);
- Q_UNUSED(width);
- Q_UNUSED(height);
- QPrinter printer;
- QPainter *painter = 0;
- printer.setOutputFileName("silly");
- printer.setOrientation((QPrinter::Orientation)orientation);
- printer.setFullPage(fullpage);
- printer.setPageSize((QPrinter::PageSize)pagesize);
- if (withPainter)
- painter = new QPainter(&printer);
-
- if (painter)
- delete painter;
-}
-
-void tst_QPrinter::testNonExistentPrinter()
-{
-#if defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_MAC)
- QSKIP("QPrinter::testNonExistentPrinter() is not relevant for this platform", SkipAll);
-#else
- QPrinter printer;
- QPainter painter;
-
- // Make sure it doesn't crash on setting or getting properties
- printer.setPrinterName("some non existing printer");
- printer.setPageSize(QPrinter::A4);
- printer.setOrientation(QPrinter::Portrait);
- printer.setFullPage(true);
- printer.pageSize();
- printer.orientation();
- printer.fullPage();
- printer.setCopyCount(1);
- printer.printerName();
-
- // nor metrics
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmWidth), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmHeight), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmWidthMM), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmHeightMM), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmNumColors), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmDepth), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmDpiX), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmDpiY), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmPhysicalDpiX), 0);
- QCOMPARE(printer.printEngine()->metric(QPaintDevice::PdmPhysicalDpiY), 0);
-
- QVERIFY(!painter.begin(&printer));
-#endif
-}
-
-
-void tst_QPrinter::testMulitpleSets_data()
-{
- QTest::addColumn<int>("resolution");
- QTest::addColumn<int>("pageSize");
- QTest::addColumn<int>("widthMMAfter");
- QTest::addColumn<int>("heightMMAfter");
-
-
- QTest::newRow("lowRes") << int(QPrinter::ScreenResolution) << int(QPrinter::A4) << 210 << 297;
- QTest::newRow("lowResLetter") << int(QPrinter::ScreenResolution) << int(QPrinter::Letter) << 216 << 279;
- QTest::newRow("lowResA5") << int(QPrinter::ScreenResolution) << int(QPrinter::A5) << 148 << 210;
- QTest::newRow("midRes") << int(QPrinter::PrinterResolution) << int(QPrinter::A4) << 210 << 297;
- QTest::newRow("midResLetter") << int(QPrinter::PrinterResolution) << int(QPrinter::Letter) << 216 << 279;
- QTest::newRow("midResA5") << int(QPrinter::PrinterResolution) << int(QPrinter::A5) << 148 << 210;
- QTest::newRow("highRes") << int(QPrinter::HighResolution) << int(QPrinter::A4) << 210 << 297;
- QTest::newRow("highResLetter") << int(QPrinter::HighResolution) << int(QPrinter::Letter) << 216 << 279;
- QTest::newRow("highResA5") << int(QPrinter::HighResolution) << int(QPrinter::A5) << 148 << 210;
-}
-
-static void computePageValue(const QPrinter &printer, int &retWidth, int &retHeight)
-{
- const double Inch2MM = 25.4;
-
- double width = double(printer.paperRect().width()) / printer.logicalDpiX() * Inch2MM;
- double height = double(printer.paperRect().height()) / printer.logicalDpiY() * Inch2MM;
- retWidth = qRound(width);
- retHeight = qRound(height);
-}
-
-void tst_QPrinter::testMulitpleSets()
-{
- // A very simple test, but Mac needs to have its format "validated" if the format is changed
- // This takes care of that.
- QFETCH(int, resolution);
- QFETCH(int, pageSize);
- QFETCH(int, widthMMAfter);
- QFETCH(int, heightMMAfter);
-
-
- QPrinter::PrinterMode mode = QPrinter::PrinterMode(resolution);
- QPrinter::PageSize printerPageSize = QPrinter::PageSize(pageSize);
- QPrinter printer(mode);
- printer.setFullPage(true);
-
- int paperWidth, paperHeight;
- //const int Tolerance = 2;
-
- computePageValue(printer, paperWidth, paperHeight);
- printer.setPageSize(printerPageSize);
-
- if (printer.pageSize() != printerPageSize) {
- QSKIP("Current page size is not supported on this printer", SkipSingle);
- return;
- }
-
- QCOMPARE(printer.widthMM(), widthMMAfter);
- QCOMPARE(printer.heightMM(), heightMMAfter);
-
- computePageValue(printer, paperWidth, paperHeight);
-
- QVERIFY(qAbs(paperWidth - widthMMAfter) <= 2);
- QVERIFY(qAbs(paperHeight - heightMMAfter) <= 2);
-
- // Set it again and see if it still works.
- printer.setPageSize(printerPageSize);
- QCOMPARE(printer.widthMM(), widthMMAfter);
- QCOMPARE(printer.heightMM(), heightMMAfter);
-
- printer.setOrientation(QPrinter::Landscape);
- computePageValue(printer, paperWidth, paperHeight);
- QVERIFY(qAbs(paperWidth - heightMMAfter) <= 2);
- QVERIFY(qAbs(paperHeight - widthMMAfter) <= 2);
-}
-
-void tst_QPrinter::changingOutputFormat()
-{
- QPrinter p;
- p.setOutputFormat(QPrinter::PostScriptFormat);
- p.setPageSize(QPrinter::A8);
- p.setOutputFormat(QPrinter::PdfFormat);
- QCOMPARE(p.pageSize(), QPrinter::A8);
-}
-
-void tst_QPrinter::outputFormatFromSuffix()
-{
- if (QPrinterInfo::availablePrinters().size() == 0)
- QSKIP("No printers available.", SkipAll);
- QPrinter p;
- QVERIFY(p.outputFormat() == QPrinter::NativeFormat);
- p.setOutputFileName("test.ps");
- QVERIFY(p.outputFormat() == QPrinter::PostScriptFormat);
- p.setOutputFileName("test.pdf");
- QVERIFY(p.outputFormat() == QPrinter::PdfFormat);
- p.setOutputFileName(QString());
- QVERIFY(p.outputFormat() == QPrinter::NativeFormat);
-}
-
-void tst_QPrinter::setGetPaperSize()
-{
- QPrinter p;
- p.setOutputFormat(QPrinter::PdfFormat);
- QSizeF size(500, 10);
- p.setPaperSize(size, QPrinter::Millimeter);
- QCOMPARE(p.paperSize(QPrinter::Millimeter), size);
- QSizeF ptSize = p.paperSize(QPrinter::Point);
- //qDebug() << ptSize;
- QVERIFY(qAbs(ptSize.width() - size.width() * (72/25.4)) < 1E-4);
- QVERIFY(qAbs(ptSize.height() - size.height() * (72/25.4)) < 1E-4);
-}
-
-void tst_QPrinter::testPageMargins_data()
-{
- QTest::addColumn<qreal>("left");
- QTest::addColumn<qreal>("top");
- QTest::addColumn<qreal>("right");
- QTest::addColumn<qreal>("bottom");
- QTest::addColumn<int>("unit");
-
- QTest::newRow("data0") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Millimeter);
- QTest::newRow("data1") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Point);
- QTest::newRow("data2") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Inch);
- QTest::newRow("data3") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Pica);
- QTest::newRow("data4") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Didot);
- QTest::newRow("data5") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Cicero);
-}
-
-void tst_QPrinter::testPageMargins()
-{
- QPrinter obj1;
-
- qreal toMillimeters[6];
- toMillimeters[QPrinter::Millimeter] = 1;
- toMillimeters[QPrinter::Point] = 0.352777778;
- toMillimeters[QPrinter::Inch] = 25.4;
- toMillimeters[QPrinter::Pica] = 4.23333333;
- toMillimeters[QPrinter::Didot] = 0.376;
- toMillimeters[QPrinter::Cicero] = 4.51166667;
-
- QFETCH(qreal, left);
- QFETCH(qreal, top);
- QFETCH(qreal, right);
- QFETCH(qreal, bottom);
- QFETCH(int, unit);
-
- qreal nLeft, nTop, nRight, nBottom;
-
- obj1.setPageMargins(left, top, right, bottom, static_cast<QPrinter::Unit>(unit));
-
- qreal tolerance = 0.05;
-
- obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Millimeter);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Millimeter]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Millimeter]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Millimeter]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Millimeter]) < tolerance);
-
- obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Point);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Point]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Point]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Point]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Point]) < tolerance);
-
- obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Inch);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Inch]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Inch]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Inch]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Inch]) < tolerance);
-
- obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Pica);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Pica]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Pica]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Pica]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Pica]) < tolerance);
-
- obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Didot);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Didot]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Didot]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Didot]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Didot]) < tolerance);
-
- obj1.getPageMargins(&nLeft, &nTop, &nRight, &nBottom, QPrinter::Cicero);
- QVERIFY(fabs(left*toMillimeters[unit] - nLeft*toMillimeters[QPrinter::Cicero]) < tolerance);
- QVERIFY(fabs(top*toMillimeters[unit] - nTop*toMillimeters[QPrinter::Cicero]) < tolerance);
- QVERIFY(fabs(right*toMillimeters[unit] - nRight*toMillimeters[QPrinter::Cicero]) < tolerance);
- QVERIFY(fabs(bottom*toMillimeters[unit] - nBottom*toMillimeters[QPrinter::Cicero]) < tolerance);
-}
-
-void tst_QPrinter::valuePreservation()
-{
- QPrinter::OutputFormat oldFormat = QPrinter::PdfFormat;
- QPrinter::OutputFormat newFormat = QPrinter::PostScriptFormat;
-
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- bool status = printer.collateCopies();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.collateCopies(), status);
-
- printer.setCollateCopies(!status);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.collateCopies(), !status);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.collateCopies(), !status);
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QPrinter::ColorMode status = printer.colorMode();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.colorMode(), status);
-
- printer.setColorMode(QPrinter::ColorMode(!status));
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.colorMode(), QPrinter::ColorMode(!status));
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.colorMode(), QPrinter::ColorMode(!status));
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QString status = printer.creator();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.creator(), status);
-
- status = QString::fromLatin1("Mr. Test");
- printer.setCreator(status);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.creator(), status);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.creator(), status);
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QString status = printer.docName();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.docName(), status);
-
- status = QString::fromLatin1("Test document");
- printer.setDocName(status);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.docName(), status);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.docName(), status);
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- bool status = printer.doubleSidedPrinting();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.doubleSidedPrinting(), status);
-
- printer.setDoubleSidedPrinting(!status);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.doubleSidedPrinting(), !status);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.doubleSidedPrinting(), !status);
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- bool status = printer.fontEmbeddingEnabled();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.fontEmbeddingEnabled(), status);
-
- printer.setFontEmbeddingEnabled(!status);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.fontEmbeddingEnabled(), !status);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.fontEmbeddingEnabled(), !status);
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- bool status = printer.fullPage();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.fullPage(), status);
-
- printer.setFullPage(!status);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.fullPage(), !status);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.fullPage(), !status);
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QPrinter::Orientation status = printer.orientation();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.orientation(), status);
-
- printer.setOrientation(QPrinter::Orientation(!status));
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.orientation(), QPrinter::Orientation(!status));
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.orientation(), QPrinter::Orientation(!status));
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QString status = printer.outputFileName();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.outputFileName(), status);
-
- status = QString::fromLatin1("Test file");
- printer.setOutputFileName(status);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.outputFileName(), status);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.outputFileName(), status);
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QPrinter::PageOrder status = printer.pageOrder();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.pageOrder(), status);
-
- printer.setPageOrder(QPrinter::PageOrder(!status));
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.pageOrder(), QPrinter::PageOrder(!status));
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.pageOrder(), QPrinter::PageOrder(!status));
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QPrinter::PageSize status = printer.pageSize();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.pageSize(), status);
-
- printer.setPageSize(QPrinter::B5);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.pageSize(), QPrinter::B5);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.pageSize(), QPrinter::B5);
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QPrinter::PaperSource status = printer.paperSource();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.paperSource(), status);
-
- printer.setPaperSource(QPrinter::Manual);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.paperSource(), QPrinter::Manual);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.paperSource(), QPrinter::Manual);
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QString status = printer.printProgram();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.printProgram(), status);
-
- status = QString::fromLatin1("/usr/local/bin/lpr");
- printer.setPrintProgram(status);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.printProgram(), status);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.printProgram(), status);
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QPrinter::PrintRange status = printer.printRange();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.printRange(), status);
-
- printer.setPrintRange(QPrinter::PrintRange(!status));
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.printRange(), QPrinter::PrintRange(!status));
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.printRange(), QPrinter::PrintRange(!status));
- }
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QString status = printer.printerName();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.printerName(), status);
-
- status = QString::fromLatin1("SuperDuperPrinter");
- printer.setPrinterName(status);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.printerName(), status);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.printerName(), status);
- }
-#ifndef Q_OS_WIN
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- QString status = printer.printerSelectionOption();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.printerSelectionOption(), status);
-
- status = QString::fromLatin1("Optional option");
- printer.setPrinterSelectionOption(status);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.printerSelectionOption(), status);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.printerSelectionOption(), status);
- }
-#endif
- {
- QPrinter printer;
- printer.setOutputFormat(oldFormat);
- int status = printer.resolution();
- printer.setOutputFormat(newFormat);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.resolution(), status);
-
- printer.setResolution(status-150);
- printer.setOutputFormat(newFormat);
- QCOMPARE(printer.resolution(), status-150);
- printer.setOutputFormat(oldFormat);
- QCOMPARE(printer.resolution(), status-150);
- }
-}
-
-void tst_QPrinter::errorReporting()
-{
- QPrinter p;
- p.setOutputFormat(QPrinter::PdfFormat);
- QCOMPARE(p.isValid(), true);
- QPainter painter;
-#ifndef Q_WS_WIN
- // not sure how to choose a never-writable file on windows. But its QFile behavior anyway, so lets rely on it failing elsewhere
- p.setOutputFileName("/foobar/nonwritable.pdf");
- QCOMPARE(painter.begin(&p), false); // it should check the output file is writable
-#endif
- p.setOutputFileName("test.pdf");
- QCOMPARE(painter.begin(&p), true); // it should check the output
- QCOMPARE(p.isValid(), true);
- painter.end();
-}
-
-void tst_QPrinter::testCustomPageSizes()
-{
- QPrinter p;
-
- QSizeF customSize(8.5, 11.0);
- p.setPaperSize(customSize, QPrinter::Inch);
-
- QSizeF paperSize = p.paperSize(QPrinter::Inch);
- QCOMPARE(paperSize, customSize);
-
- QPrinter p2(QPrinter::HighResolution);
- p2.setPaperSize(customSize, QPrinter::Inch);
- paperSize = p.paperSize(QPrinter::Inch);
- QCOMPARE(paperSize, customSize);
-}
-
-void tst_QPrinter::printDialogCompleter()
-{
-#if defined(QT_NO_COMPLETER) || defined(QT_NO_FILEDIALOG)
- QSKIP("QT_NO_COMPLETER || QT_NO_FILEDIALOG: Auto-complete turned off in QPrinterDialog.", QTest::SkipAll);
-#else
- QPrintDialog dialog;
- dialog.printer()->setOutputFileName("file.pdf");
- dialog.setEnabledOptions(QAbstractPrintDialog::PrintToFile);
- dialog.show();
-
- QTest::qWait(100);
-
- QTest::keyClick(&dialog, Qt::Key_Tab);
- QTest::keyClick(&dialog, 'P');
- // The test passes if it doesn't crash.
-#endif
-}
-
-void tst_QPrinter::testCopyCount()
-{
- QPrinter p;
- p.setCopyCount(15);
- QCOMPARE(p.copyCount(), 15);
-}
-
-static void printPage(QPainter *painter)
-{
- painter->setPen(QPen(Qt::black, 4));
- painter->drawRect(50, 60, 70, 80);
-}
-
-void tst_QPrinter::taskQTBUG4497_reusePrinterOnDifferentFiles()
-{
- QPrinter printer;
- {
-
- printer.setOutputFileName("out1.ps");
- QPainter painter(&printer);
- printPage(&painter);
-
- }
- {
-
- printer.setOutputFileName("out2.ps");
- QPainter painter(&printer);
- printPage(&painter);
-
- }
- QFile file1("out1.ps");
- QVERIFY(file1.open(QIODevice::ReadOnly));
-
- QFile file2("out2.ps");
- QVERIFY(file2.open(QIODevice::ReadOnly));
-
- QCOMPARE(file1.readAll(), file2.readAll());
-}
-
-void tst_QPrinter::testCurrentPage()
-{
- QPrinter printer;
- printer.setFromTo(1, 10);
-
- // Test set print range
- printer.setPrintRange(QPrinter::CurrentPage);
- QCOMPARE(printer.printRange(), QPrinter::CurrentPage);
- QCOMPARE(printer.fromPage(), 1);
- QCOMPARE(printer.toPage(), 10);
-
- QPrintDialog dialog(&printer);
-
- // Test default Current Page option to off
- QCOMPARE(dialog.isOptionEnabled(QPrintDialog::PrintCurrentPage), false);
-
- // Test enable Current Page option
- dialog.setOption(QPrintDialog::PrintCurrentPage);
- QCOMPARE(dialog.isOptionEnabled(QPrintDialog::PrintCurrentPage), true);
-
-}
-
-void tst_QPrinter::testPdfTitle()
-{
- // Check the document name is represented correctly in produced pdf
- {
- QPainter painter;
- QPrinter printer;
- // This string is just the UTF-8 encoding of the string: \()f &oslash; hiragana o
- const char title[]={0x5c, 0x28, 0x29, 0x66, 0xc3, 0xb8, 0xe3, 0x81, 0x8a, 0x00};
- printer.setOutputFileName("file.pdf");
- printer.setDocName(QString::fromUtf8(title));
- painter.begin(&printer);
- painter.end();
- }
- QFile file("file.pdf");
- QVERIFY(file.open(QIODevice::ReadOnly));
- // The we expect the title to appear in the PDF as:
- // ASCII('\title (') UTF16(\\\(\)f &oslash; hiragana o) ASCII(')').
- // which has the following binary representation
- const char expected[] = {
- 0x2f, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x20, 0x28, 0xfe,
- 0xff, 0x00, 0x5c, 0x5c, 0x00, 0x5c, 0x28, 0x00, 0x5c,
- 0x29, 0x00, 0x66, 0x00, 0xf8, 0x30, 0x4a, 0x29};
- QVERIFY(file.readAll().contains(QByteArray(expected, 26)));
-}
-
-QTEST_MAIN(tst_QPrinter)
-#include "tst_qprinter.moc"
-
-#else //QT_NO_PRINTER
-
-QTEST_NOOP_MAIN
-
-#endif //QT_NO_PRINTER
diff --git a/tests/auto/qprinterinfo/qprinterinfo.pro b/tests/auto/qprinterinfo/qprinterinfo.pro
deleted file mode 100644
index ade217faf3..0000000000
--- a/tests/auto/qprinterinfo/qprinterinfo.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qprinterinfo.cpp
-
-QT += network
-
-DEFINES += QT_USE_USING_NAMESPACE
-
diff --git a/tests/auto/qprocess/testGuiProcess/main.cpp b/tests/auto/qprocess/testGuiProcess/main.cpp
deleted file mode 100644
index 2c8f5f0e55..0000000000
--- a/tests/auto/qprocess/testGuiProcess/main.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QtGui>
-#include <stdio.h>
-
-int main(int argc, char **argv)
-{
- QApplication app(argc, argv);
-
- QLabel label("This process is just waiting to die");
- label.show();
-
- int c;
- Q_UNUSED(c);
- fgetc(stdin); // block until fed
-
- qDebug("Process is running");
-
- return 0;
-}
diff --git a/tests/auto/qprocess/testGuiProcess/testGuiProcess.pro b/tests/auto/qprocess/testGuiProcess/testGuiProcess.pro
deleted file mode 100644
index 15a9e8e4e4..0000000000
--- a/tests/auto/qprocess/testGuiProcess/testGuiProcess.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-SOURCES += main.cpp
-CONFIG += console
-DESTDIR = ./
-
diff --git a/tests/auto/qprocess/testSoftExit/main_win.cpp b/tests/auto/qprocess/testSoftExit/main_win.cpp
deleted file mode 100644
index 29dbc46bcf..0000000000
--- a/tests/auto/qprocess/testSoftExit/main_win.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <windows.h>
-#include <stdio.h>
-
-int main()
-{
- printf("Ready\n");
- fflush(stdout);
-
- MSG msg;
- while (GetMessage(&msg, NULL, 0, 0)) {
- if (msg.message == WM_CLOSE)
- PostQuitMessage(0);
- }
-
- return msg.wParam;
-}
diff --git a/tests/auto/qprogressbar/qprogressbar.pro b/tests/auto/qprogressbar/qprogressbar.pro
index 6f0d7728fe..70d8c9111f 100644
--- a/tests/auto/qprogressbar/qprogressbar.pro
+++ b/tests/auto/qprogressbar/qprogressbar.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qprogressbar.cpp
diff --git a/tests/auto/qprogressdialog/qprogressdialog.pro b/tests/auto/qprogressdialog/qprogressdialog.pro
index 3a98d0b017..f3861e4cd3 100644
--- a/tests/auto/qprogressdialog/qprogressdialog.pro
+++ b/tests/auto/qprogressdialog/qprogressdialog.pro
@@ -3,7 +3,7 @@
############################################################
load(qttest_p4)
-
+QT += widgets
SOURCES += tst_qprogressdialog.cpp
diff --git a/tests/auto/qpropertyanimation/qpropertyanimation.pro b/tests/auto/qpropertyanimation/qpropertyanimation.pro
deleted file mode 100644
index 6d6ddbf65b..0000000000
--- a/tests/auto/qpropertyanimation/qpropertyanimation.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-QT = core gui
-SOURCES += tst_qpropertyanimation.cpp
-
-
diff --git a/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp b/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp
deleted file mode 100644
index f08879e1ce..0000000000
--- a/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp
+++ /dev/null
@@ -1,1243 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include "../../shared/util.h"
-
-#include <QtCore/qpropertyanimation.h>
-#include <QtCore/qvariantanimation.h>
-#include <QtGui/qwidget.h>
-#include "../../shared/util.h"
-
-//TESTED_CLASS=QPropertyAnimation
-//TESTED_FILES=
-
-class UncontrolledAnimation : public QPropertyAnimation
-{
- Q_OBJECT
-public:
- int duration() const { return -1; /* not time driven */ }
-
-protected:
- void updateCurrentTime(int currentTime)
- {
- QPropertyAnimation::updateCurrentTime(currentTime);
- if (currentTime >= QPropertyAnimation::duration() || currentLoop() >= 1)
- stop();
- }
-};
-
-class MyObject : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(qreal x READ x WRITE setX)
-public:
- MyObject() : m_x(0) { }
- qreal x() const { return m_x; }
- void setX(qreal x) { m_x = x; }
-private:
- qreal m_x;
-};
-
-class DummyPropertyAnimation : public QPropertyAnimation
-{
-public:
- DummyPropertyAnimation(QObject *parent = 0) : QPropertyAnimation(parent)
- {
- setTargetObject(&o);
- this->setPropertyName("x");
- setEndValue(100);
- }
-
- MyObject o;
-};
-
-
-class tst_QPropertyAnimation : public QObject
-{
- Q_OBJECT
-public:
- tst_QPropertyAnimation();
- virtual ~tst_QPropertyAnimation();
-
-public Q_SLOTS:
- void init();
- void cleanup();
-
-private slots:
- void construction();
- void setCurrentTime_data();
- void setCurrentTime();
- void statesAndSignals_data();
- void statesAndSignals();
- void deletion1();
- void deletion2();
- void deletion3();
- void duration0();
- void noStartValue();
- void noStartValueWithLoop();
- void startWhenAnotherIsRunning();
- void easingcurve_data();
- void easingcurve();
- void startWithoutStartValue();
- void startBackwardWithoutEndValue();
- void playForwardBackward();
- void interpolated();
- void setStartEndValues_data();
- void setStartEndValues();
- void zeroDurationStart();
- void operationsInStates_data();
- void operationsInStates();
- void oneKeyValue();
- void updateOnSetKeyValues();
- void restart();
- void valueChanged();
- void twoAnimations();
- void deletedInUpdateCurrentTime();
- void totalDuration();
- void zeroLoopCount();
-};
-
-tst_QPropertyAnimation::tst_QPropertyAnimation()
-{
-}
-
-tst_QPropertyAnimation::~tst_QPropertyAnimation()
-{
-}
-
-void tst_QPropertyAnimation::init()
-{
- qRegisterMetaType<QAbstractAnimation::State>("QAbstractAnimation::State");
- qRegisterMetaType<QAbstractAnimation::DeletionPolicy>("QAbstractAnimation::DeletionPolicy");
-}
-
-void tst_QPropertyAnimation::cleanup()
-{
-}
-
-class AnimationObject : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(int value READ value WRITE setValue)
- Q_PROPERTY(qreal realValue READ realValue WRITE setRealValue)
-public:
- AnimationObject(int startValue = 0)
- : v(startValue), rv(startValue)
- { }
-
- int value() const { return v; }
- void setValue(int value) { v = value; }
-
- qreal realValue() const { return rv; }
- void setRealValue(qreal value) { rv = value; }
-
- int v;
- qreal rv;
-};
-
-
-void tst_QPropertyAnimation::construction()
-{
- QPropertyAnimation panimation;
-}
-
-void tst_QPropertyAnimation::setCurrentTime_data()
-{
- QTest::addColumn<int>("duration");
- QTest::addColumn<int>("loopCount");
- QTest::addColumn<int>("currentTime");
- QTest::addColumn<int>("testCurrentTime");
- QTest::addColumn<int>("testCurrentLoop");
-
- QTest::newRow("-1") << -1 << 1 << 0 << 0 << 0;
- QTest::newRow("0") << 0 << 1 << 0 << 0 << 0;
- QTest::newRow("1") << 0 << 1 << 1 << 0 << 0;
- QTest::newRow("2") << 0 << 2 << 1 << 0 << 0;
- QTest::newRow("3") << 1 << 1 << 0 << 0 << 0;
- QTest::newRow("4") << 1 << 1 << 1 << 1 << 0;
- QTest::newRow("5") << 1 << 2 << 1 << 0 << 1;
- QTest::newRow("6") << 1 << 2 << 2 << 1 << 1;
- QTest::newRow("7") << 1 << 2 << 3 << 1 << 1;
- QTest::newRow("8") << 1 << 3 << 2 << 0 << 2;
- QTest::newRow("9") << 1 << 3 << 3 << 1 << 2;
- QTest::newRow("a") << 10 << 1 << 0 << 0 << 0;
- QTest::newRow("b") << 10 << 1 << 1 << 1 << 0;
- QTest::newRow("c") << 10 << 1 << 10 << 10 << 0;
- QTest::newRow("d") << 10 << 2 << 10 << 0 << 1;
- QTest::newRow("e") << 10 << 2 << 11 << 1 << 1;
- QTest::newRow("f") << 10 << 2 << 20 << 10 << 1;
- QTest::newRow("g") << 10 << 2 << 21 << 10 << 1;
- QTest::newRow("negloop 0") << 10 << -1 << 0 << 0 << 0;
- QTest::newRow("negloop 1") << 10 << -1 << 10 << 0 << 1;
- QTest::newRow("negloop 2") << 10 << -1 << 15 << 5 << 1;
- QTest::newRow("negloop 3") << 10 << -1 << 20 << 0 << 2;
- QTest::newRow("negloop 4") << 10 << -1 << 30 << 0 << 3;
-}
-
-void tst_QPropertyAnimation::setCurrentTime()
-{
- QFETCH(int, duration);
- QFETCH(int, loopCount);
- QFETCH(int, currentTime);
- QFETCH(int, testCurrentTime);
- QFETCH(int, testCurrentLoop);
-
- QPropertyAnimation animation;
- if (duration < 0)
- QTest::ignoreMessage(QtWarningMsg, "QVariantAnimation::setDuration: cannot set a negative duration");
- animation.setDuration(duration);
- animation.setLoopCount(loopCount);
- animation.setCurrentTime(currentTime);
-
- QCOMPARE(animation.currentLoopTime(), testCurrentTime);
- QCOMPARE(animation.currentLoop(), testCurrentLoop);
-}
-
-void tst_QPropertyAnimation::statesAndSignals_data()
-{
- QTest::addColumn<bool>("uncontrolled");
- QTest::newRow("normal animation") << false;
- QTest::newRow("animation with undefined duration") << true;
-}
-
-void tst_QPropertyAnimation::statesAndSignals()
-{
- QFETCH(bool, uncontrolled);
- QPropertyAnimation *anim;
- if (uncontrolled)
- anim = new UncontrolledAnimation;
- else
- anim = new DummyPropertyAnimation;
- anim->setDuration(100);
-
- QSignalSpy finishedSpy(anim, SIGNAL(finished()));
- QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QSignalSpy currentLoopSpy(anim, SIGNAL(currentLoopChanged(int)));
-
- anim->setCurrentTime(1);
- anim->setCurrentTime(100);
- QCOMPARE(finishedSpy.count(), 0);
- QCOMPARE(runningSpy.count(), 0);
- QCOMPARE(currentLoopSpy.count(), 0);
- QCOMPARE(anim->state(), QAnimationGroup::Stopped);
-
- anim->setLoopCount(3);
- anim->setCurrentTime(101);
-
- if (uncontrolled)
- QSKIP("Uncontrolled animations don't handle looping", SkipSingle);
-
- QCOMPARE(currentLoopSpy.count(), 1);
- QCOMPARE(anim->currentLoop(), 1);
-
- anim->setCurrentTime(0);
- QCOMPARE(currentLoopSpy.count(), 2);
- QCOMPARE(anim->currentLoop(), 0);
-
- anim->start();
- QCOMPARE(anim->state(), QAnimationGroup::Running);
- QCOMPARE(runningSpy.count(), 1); //anim must have started
- QCOMPARE(anim->currentLoop(), 0);
- runningSpy.clear();
-
- anim->stop();
- QCOMPARE(anim->state(), QAnimationGroup::Stopped);
- QCOMPARE(runningSpy.count(), 1); //anim must have stopped
- QCOMPARE(finishedSpy.count(), 0);
- QCOMPARE(anim->currentLoopTime(), 0);
- QCOMPARE(anim->currentLoop(), 0);
- QCOMPARE(currentLoopSpy.count(), 2);
- runningSpy.clear();
-
- anim->start();
- QTest::qWait(1000);
- QTRY_COMPARE(anim->state(), QAnimationGroup::Stopped);
- QCOMPARE(runningSpy.count(), 2); //started and stopped again
- runningSpy.clear();
- QCOMPARE(finishedSpy.count(), 1);
- QCOMPARE(anim->currentLoopTime(), 100);
- QCOMPARE(anim->currentLoop(), 2);
- QCOMPARE(currentLoopSpy.count(), 4);
-
- anim->start(); // auto-rewinds
- QCOMPARE(anim->state(), QAnimationGroup::Running);
- QCOMPARE(anim->currentTime(), 0);
- QCOMPARE(anim->currentLoop(), 0);
- QCOMPARE(currentLoopSpy.count(), 5);
- QCOMPARE(runningSpy.count(), 1); // anim has started
- QCOMPARE(finishedSpy.count(), 1);
- QCOMPARE(anim->currentLoop(), 0);
- runningSpy.clear();
-
- QTest::qWait(1000);
-
- QCOMPARE(currentLoopSpy.count(), 7);
- QCOMPARE(anim->state(), QAnimationGroup::Stopped);
- QCOMPARE(anim->currentLoop(), 2);
- QCOMPARE(runningSpy.count(), 1); // anim has stopped
- QCOMPARE(finishedSpy.count(), 2);
- QCOMPARE(anim->currentLoopTime(), 100);
-
- delete anim;
-}
-
-void tst_QPropertyAnimation::deletion1()
-{
- QObject *object = new QWidget;
- QPointer<QPropertyAnimation> anim = new QPropertyAnimation(object, "minimumWidth");
-
- //test that the animation is deleted correctly depending of the deletion flag passed in start()
- QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QSignalSpy finishedSpy(anim, SIGNAL(finished()));
- anim->setStartValue(10);
- anim->setEndValue(20);
- anim->setDuration(200);
- anim->start();
- QCOMPARE(runningSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 0);
-
- QVERIFY(anim);
- QCOMPARE(anim->state(), QAnimationGroup::Running);
- QTest::qWait(100);
- QVERIFY(anim);
- QCOMPARE(anim->state(), QAnimationGroup::Running);
- QTest::qWait(150);
- QVERIFY(anim); //The animation should not have been deleted
- QTRY_COMPARE(anim->state(), QAnimationGroup::Stopped);
- QCOMPARE(runningSpy.count(), 2);
- QCOMPARE(finishedSpy.count(), 1);
-
- anim->start(QVariantAnimation::DeleteWhenStopped);
- QVERIFY(anim);
- QCOMPARE(anim->state(), QAnimationGroup::Running);
- QTest::qWait(100);
- QVERIFY(anim);
- QCOMPARE(anim->state(), QAnimationGroup::Running);
- QTest::qWait(150);
- QTRY_COMPARE(runningSpy.count(), 4);
- QCOMPARE(finishedSpy.count(), 2);
- QVERIFY(!anim); //The animation must have been deleted
- delete object;
-}
-
-void tst_QPropertyAnimation::deletion2()
-{
- //test that the animation get deleted if the object is deleted
- QObject *object = new QWidget;
- QPointer<QPropertyAnimation> anim = new QPropertyAnimation(object,"minimumWidth");
- anim->setStartValue(10);
- anim->setEndValue(20);
- anim->setDuration(200);
-
- QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QSignalSpy finishedSpy(anim, SIGNAL(finished()));
-
- anim->setStartValue(10);
- anim->setEndValue(20);
- anim->setDuration(200);
- anim->start();
-
- QTest::qWait(50);
- QVERIFY(anim);
- QCOMPARE(anim->state(), QAnimationGroup::Running);
-
- QCOMPARE(runningSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 0);
-
- //we can't call deletaLater directly because the delete would only happen in the next loop of _this_ event loop
- QTimer::singleShot(0, object, SLOT(deleteLater()));
- QTest::qWait(50);
-
- QVERIFY(anim->targetObject() == 0);
-}
-
-void tst_QPropertyAnimation::deletion3()
-{
- //test that the stopped signal is emit when the animation is destroyed
- QObject *object = new QWidget;
- QPropertyAnimation *anim = new QPropertyAnimation(object,"minimumWidth");
- anim->setStartValue(10);
- anim->setEndValue(20);
- anim->setDuration(200);
-
- QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QSignalSpy finishedSpy(anim, SIGNAL(finished()));
- anim->start();
-
- QTest::qWait(50);
- QCOMPARE(anim->state(), QAnimationGroup::Running);
- QCOMPARE(runningSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 0);
- delete anim;
- QCOMPARE(runningSpy.count(), 2);
- QCOMPARE(finishedSpy.count(), 0);
-}
-
-void tst_QPropertyAnimation::duration0()
-{
- QObject o;
- o.setProperty("ole", 42);
- QCOMPARE(o.property("ole").toInt(), 42);
-
- QPropertyAnimation animation(&o, "ole");
- animation.setEndValue(43);
- QVERIFY(!animation.currentValue().isValid());
- QCOMPARE(animation.currentValue().toInt(), 0);
- animation.setStartValue(42);
- QVERIFY(animation.currentValue().isValid());
- QCOMPARE(animation.currentValue().toInt(), 42);
-
- QCOMPARE(o.property("ole").toInt(), 42);
- animation.setDuration(0);
- QCOMPARE(animation.currentValue().toInt(), 43); //it is at the end
- animation.start();
- QCOMPARE(animation.state(), QAnimationGroup::Stopped);
- QCOMPARE(animation.currentTime(), 0);
- QCOMPARE(o.property("ole").toInt(), 43);
-}
-
-class StartValueTester : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(int ole READ ole WRITE setOle)
-public:
- StartValueTester() : o(0) { }
- int ole() const { return o; }
- void setOle(int v) { o = v; values << v; }
-
- int o;
- QList<int> values;
-};
-
-void tst_QPropertyAnimation::noStartValue()
-{
- StartValueTester o;
- o.setProperty("ole", 42);
- o.values.clear();
-
- QPropertyAnimation a(&o, "ole");
- a.setEndValue(420);
- a.setDuration(250);
- a.start();
-
- QTest::qWait(300);
-
- QTRY_COMPARE(o.values.first(), 42);
- QCOMPARE(o.values.last(), 420);
-}
-
-void tst_QPropertyAnimation::noStartValueWithLoop()
-{
- StartValueTester o;
- o.setProperty("ole", 42);
- o.values.clear();
-
- QPropertyAnimation a(&o, "ole");
- a.setEndValue(420);
- a.setDuration(250);
- a.setLoopCount(2);
- a.start();
-
- a.setCurrentTime(250);
- QCOMPARE(o.values.first(), 42);
- QCOMPARE(a.currentValue().toInt(), 42);
- QCOMPARE(o.values.last(), 42);
-
- a.setCurrentTime(500);
- QCOMPARE(a.currentValue().toInt(), 420);
-}
-
-void tst_QPropertyAnimation::startWhenAnotherIsRunning()
-{
- StartValueTester o;
- o.setProperty("ole", 42);
- o.values.clear();
-
- {
- //normal case: the animation finishes and is deleted
- QPointer<QVariantAnimation> anim = new QPropertyAnimation(&o, "ole");
- anim->setEndValue(100);
- QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- anim->start(QVariantAnimation::DeleteWhenStopped);
- QTest::qWait(anim->duration() + 100);
- QTRY_COMPARE(runningSpy.count(), 2); //started and then stopped
- QVERIFY(!anim);
- }
-
- {
- QPointer<QVariantAnimation> anim = new QPropertyAnimation(&o, "ole");
- anim->setEndValue(100);
- QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- anim->start(QVariantAnimation::DeleteWhenStopped);
- QTest::qWait(anim->duration()/2);
- QPointer<QVariantAnimation> anim2 = new QPropertyAnimation(&o, "ole");
- anim2->setEndValue(100);
- QCOMPARE(runningSpy.count(), 1);
- QCOMPARE(anim->state(), QVariantAnimation::Running);
-
- //anim2 will interrupt anim1
- QMetaObject::invokeMethod(anim2, "start", Qt::QueuedConnection, Q_ARG(QAbstractAnimation::DeletionPolicy, QVariantAnimation::DeleteWhenStopped));
- QTest::qWait(50);
- QVERIFY(!anim); //anim should have been deleted
- QVERIFY(anim2);
- QTest::qWait(anim2->duration());
- QTRY_VERIFY(!anim2); //anim2 is finished: it should have been deleted by now
- QVERIFY(!anim);
- }
-
-}
-
-// copy from easing.cpp in case that function changes definition
-static qreal easeInOutBack(qreal t)
-{
- qreal s = 1.70158;
- qreal t_adj = 2.0f * (qreal)t;
- if (t_adj < 1) {
- s *= 1.525f;
- return 1.0/2*(t_adj*t_adj*((s+1)*t_adj - s));
- } else {
- t_adj -= 2;
- s *= 1.525f;
- return 1.0/2*(t_adj*t_adj*((s+1)*t_adj + s) + 2);
- }
-}
-
-void tst_QPropertyAnimation::easingcurve_data()
-{
- QTest::addColumn<int>("currentTime");
- QTest::addColumn<int>("expectedvalue");
-
- QTest::newRow("interpolation1") << 0 << 0;
- QTest::newRow("interpolation2") << 1000 << 1000;
- QTest::newRow("extrapolationbelow") << 250 << -99;
- QTest::newRow("extrapolationabove") << 750 << 1099;
-}
-
-void tst_QPropertyAnimation::easingcurve()
-{
- QFETCH(int, currentTime);
- QFETCH(int, expectedvalue);
- QObject o;
- o.setProperty("ole", 42);
- QCOMPARE(o.property("ole").toInt(), 42);
-
- QPropertyAnimation pAnimation(&o, "ole");
- pAnimation.setStartValue(0);
- pAnimation.setEndValue(1000);
- pAnimation.setDuration(1000);
-
- // this easingcurve assumes that we extrapolate before startValue and after endValue
- QEasingCurve easingCurve;
- easingCurve.setCustomType(easeInOutBack);
- pAnimation.setEasingCurve(easingCurve);
- pAnimation.start();
- pAnimation.pause();
- pAnimation.setCurrentTime(currentTime);
- QCOMPARE(o.property("ole").toInt(), expectedvalue);
-}
-
-void tst_QPropertyAnimation::startWithoutStartValue()
-{
- QObject o;
- o.setProperty("ole", 42);
- QCOMPARE(o.property("ole").toInt(), 42);
-
- QPropertyAnimation anim(&o, "ole");
- anim.setEndValue(100);
-
- anim.start();
-
- QTest::qWait(100);
- int current = anim.currentValue().toInt();
- //it is somewhere in the animation
- QVERIFY(current > 42);
- QVERIFY(current < 100);
-
- QTest::qWait(200);
- QTRY_COMPARE(anim.state(), QVariantAnimation::Stopped);
- current = anim.currentValue().toInt();
- QCOMPARE(current, 100);
- QCOMPARE(o.property("ole").toInt(), current);
-
- anim.setEndValue(110);
- anim.start();
- current = anim.currentValue().toInt();
- // the default start value will reevaluate the current property
- // and set it to the end value of the last iteration
- QCOMPARE(current, 100);
- QTest::qWait(100);
- current = anim.currentValue().toInt();
- //it is somewhere in the animation
- QVERIFY(current >= 100);
- QVERIFY(current <= 110);
-}
-
-void tst_QPropertyAnimation::startBackwardWithoutEndValue()
-{
- QObject o;
- o.setProperty("ole", 42);
- QCOMPARE(o.property("ole").toInt(), 42);
-
- QPropertyAnimation anim(&o, "ole");
- anim.setStartValue(100);
- anim.setDirection(QAbstractAnimation::Backward);
-
- //we start without an end value
- anim.start();
- QCOMPARE(anim.state(), QAbstractAnimation::Running);
- QCOMPARE(o.property("ole").toInt(), 42); //the initial value
-
- QTest::qWait(100);
- int current = anim.currentValue().toInt();
- //it is somewhere in the animation
- QVERIFY(current > 42);
- QVERIFY(current < 100);
-
- QTest::qWait(200);
- QTRY_COMPARE(anim.state(), QVariantAnimation::Stopped);
- current = anim.currentValue().toInt();
- QCOMPARE(current, 100);
- QCOMPARE(o.property("ole").toInt(), current);
-
- anim.setStartValue(110);
- anim.start();
- current = anim.currentValue().toInt();
- // the default start value will reevaluate the current property
- // and set it to the end value of the last iteration
- QCOMPARE(current, 100);
- QTest::qWait(100);
- current = anim.currentValue().toInt();
- //it is somewhere in the animation
- QVERIFY(current >= 100);
- QVERIFY(current <= 110);
-}
-
-
-void tst_QPropertyAnimation::playForwardBackward()
-{
- QObject o;
- o.setProperty("ole", 0);
- QCOMPARE(o.property("ole").toInt(), 0);
-
- QPropertyAnimation anim(&o, "ole");
- anim.setStartValue(0);
- anim.setEndValue(100);
- anim.start();
- QTest::qWait(anim.duration() + 100);
- QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
- QCOMPARE(anim.currentTime(), anim.duration());
-
- //the animation is at the end
- anim.setDirection(QVariantAnimation::Backward);
- anim.start();
- QCOMPARE(anim.state(), QAbstractAnimation::Running);
- QTest::qWait(anim.duration() + 100);
- QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
- QCOMPARE(anim.currentTime(), 0);
-
- //the direction is backward
- //restarting should jump to the end
- anim.start();
- QCOMPARE(anim.state(), QAbstractAnimation::Running);
- QCOMPARE(anim.currentTime(), anim.duration());
- QTest::qWait(anim.duration() + 100);
- QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
- QCOMPARE(anim.currentTime(), 0);
-}
-
-struct Number
-{
- Number() {}
- Number(int n)
- : n(n) {}
-
- Number(const Number &other)
- : n(other.n){}
-
- Number &operator=(const Number &other) {
- n = other.n;
- return *this;
- }
- bool operator==(const Number &other) const {
- return n == other.n;
- }
-
- int n;
-};
-
-Q_DECLARE_METATYPE(Number)
-Q_DECLARE_METATYPE(QAbstractAnimation::State)
-
-QVariant numberInterpolator(const Number &f, const Number &t, qreal progress)
-{
- return qVariantFromValue<Number>(Number(f.n + (t.n - f.n)*progress));
-}
-
-QVariant xaxisQPointInterpolator(const QPointF &f, const QPointF &t, qreal progress)
-{
- return QPointF(f.x() + (t.x() - f.x())*progress, f.y());
-}
-
-void tst_QPropertyAnimation::interpolated()
-{
- QObject o;
- o.setProperty("point", QPointF()); //this will avoid warnings
- o.setProperty("number", qVariantFromValue<Number>(Number(42)));
- QCOMPARE(qVariantValue<Number>(o.property("number")), Number(42));
- {
- qRegisterAnimationInterpolator<Number>(numberInterpolator);
- QPropertyAnimation anim(&o, "number");
- anim.setStartValue(qVariantFromValue<Number>(Number(0)));
- anim.setEndValue(qVariantFromValue<Number>(Number(100)));
- anim.setDuration(1000);
- anim.start();
- anim.pause();
- anim.setCurrentTime(100);
- Number t(qVariantValue<Number>(o.property("number")));
- QCOMPARE(t, Number(10));
- anim.setCurrentTime(500);
- QCOMPARE(qVariantValue<Number>(o.property("number")), Number(50));
- }
- {
- qRegisterAnimationInterpolator<QPointF>(xaxisQPointInterpolator);
- QPropertyAnimation anim(&o, "point");
- anim.setStartValue(QPointF(0,0));
- anim.setEndValue(QPointF(100, 100));
- anim.setDuration(1000);
- anim.start();
- anim.pause();
- anim.setCurrentTime(100);
- QCOMPARE(o.property("point"), QVariant(QPointF(10, 0)));
- anim.setCurrentTime(500);
- QCOMPARE(o.property("point"), QVariant(QPointF(50, 0)));
- }
- {
- // unregister it and see if we get back the default behaviour
- qRegisterAnimationInterpolator<QPointF>(0);
- QPropertyAnimation anim(&o, "point");
- anim.setStartValue(QPointF(0,0));
- anim.setEndValue(QPointF(100, 100));
- anim.setDuration(1000);
- anim.start();
- anim.pause();
- anim.setCurrentTime(100);
- QCOMPARE(o.property("point").toPointF(), QPointF(10, 10));
- anim.setCurrentTime(500);
- QCOMPARE(o.property("point").toPointF(), QPointF(50, 50));
- }
-
- {
- // Interpolate a qreal property with a int interpolator
- AnimationObject o1;
- o1.setRealValue(42.42);
- QPropertyAnimation anim(&o1, "realValue");
- anim.setStartValue(0);
- anim.setEndValue(100);
- anim.start();
- QCOMPARE(o1.realValue(), qreal(0));
- anim.setCurrentTime(250);
- QCOMPARE(o1.realValue(), qreal(100));
- }
-}
-
-Q_DECLARE_METATYPE(QVariant)
-
-void tst_QPropertyAnimation::setStartEndValues_data()
-{
- QTest::addColumn<QByteArray>("propertyName");
- QTest::addColumn<QVariant>("initialValue");
- QTest::addColumn<QVariant>("startValue");
- QTest::addColumn<QVariant>("endValue");
-
- QTest::newRow("dynamic property") << QByteArray("ole") << QVariant(42) << QVariant(0) << QVariant(10);
- QTest::newRow("real property, with unmatching types") << QByteArray("x") << QVariant(42.) << QVariant(0) << QVariant(10.);
-}
-
-void tst_QPropertyAnimation::setStartEndValues()
-{
- MyObject object;
- QFETCH(QByteArray, propertyName);
- QFETCH(QVariant, initialValue);
- QFETCH(QVariant, startValue);
- QFETCH(QVariant, endValue);
-
- //this tests the start value, end value and default start value
- object.setProperty(propertyName, initialValue);
- QPropertyAnimation anim(&object, propertyName);
- QVariantAnimation::KeyValues values;
- QCOMPARE(anim.keyValues(), values);
-
- //let's add a start value
- anim.setStartValue(startValue);
- values << QVariantAnimation::KeyValue(0, startValue);
- QCOMPARE(anim.keyValues(), values);
-
- anim.setEndValue(endValue);
- values << QVariantAnimation::KeyValue(1, endValue);
- QCOMPARE(anim.keyValues(), values);
-
- //now we can play with objects
- QCOMPARE(object.property(propertyName).toDouble(), initialValue.toDouble());
- anim.start();
- QVERIFY(anim.startValue().isValid());
- QCOMPARE(object.property(propertyName), anim.startValue());
- anim.setCurrentTime(anim.duration()/2);
- QCOMPARE(object.property(propertyName).toDouble(), (startValue.toDouble() + endValue.toDouble())/2 ); //just in the middle of the animation
- anim.setCurrentTime(anim.duration()); //we go to the end of the animation
- QCOMPARE(anim.state(), QAnimationGroup::Stopped); //it should have stopped
- QVERIFY(anim.endValue().isValid());
- QCOMPARE(object.property(propertyName), anim.endValue()); //end of the animations
-
- //now we remove the explicit start value and test the implicit one
- anim.stop();
- object.setProperty(propertyName, initialValue);
-
- //let's reset the start value
- values.remove(0);
- anim.setStartValue(QVariant());
- QCOMPARE(anim.keyValues(), values);
- QVERIFY(!anim.startValue().isValid());
-
- anim.start();
- QCOMPARE(object.property(propertyName), initialValue);
- anim.setCurrentTime(anim.duration()/2);
- QCOMPARE(object.property(propertyName).toDouble(), (initialValue.toDouble() + endValue.toDouble())/2 ); //just in the middle of the animation
- anim.setCurrentTime(anim.duration()); //we go to the end of the animation
- QCOMPARE(anim.state(), QAnimationGroup::Stopped); //it should have stopped
- QVERIFY(anim.endValue().isValid());
- QCOMPARE(object.property(propertyName), anim.endValue()); //end of the animations
-
- //now we set back the startValue
- anim.setStartValue(startValue);
- QVERIFY(anim.startValue().isValid());
- anim.start();
- QCOMPARE(object.property(propertyName), startValue);
-}
-
-void tst_QPropertyAnimation::zeroDurationStart()
-{
- DummyPropertyAnimation anim;
- QSignalSpy spy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- anim.setDuration(0);
- QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
- anim.start();
- //the animation stops immediately
- QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
- QCOMPARE(spy.count(), 2);
-
- //let's check the first state change
- const QVariantList firstChange = spy.first();
- //old state
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(firstChange.last()), QAbstractAnimation::Stopped);
- //new state
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(firstChange.first()), QAbstractAnimation::Running);
-
- //let's check the first state change
- const QVariantList secondChange = spy.last();
- //old state
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(secondChange.last()), QAbstractAnimation::Running);
- //new state
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(secondChange.first()), QAbstractAnimation::Stopped);
-}
-
-#define Pause 1
-#define Start 2
-#define Resume 3
-#define Stop 4
-
-void tst_QPropertyAnimation::operationsInStates_data()
-{
- QTest::addColumn<QAbstractAnimation::State>("originState");
- QTest::addColumn<int>("operation");
- QTest::addColumn<QString>("expectedWarning");
- QTest::addColumn<QAbstractAnimation::State>("expectedState");
-
- QString pauseWarn(QLatin1String("QAbstractAnimation::pause: Cannot pause a stopped animation"));
- QString resumeWarn(QLatin1String("QAbstractAnimation::resume: Cannot resume an animation that is not paused"));
-
- QTest::newRow("S-pause") << QAbstractAnimation::Stopped << Pause << pauseWarn << QAbstractAnimation::Stopped;
- QTest::newRow("S-start") << QAbstractAnimation::Stopped << Start << QString() << QAbstractAnimation::Running;
- QTest::newRow("S-resume") << QAbstractAnimation::Stopped << Resume << resumeWarn << QAbstractAnimation::Stopped;
- QTest::newRow("S-stop") << QAbstractAnimation::Stopped << Stop << QString() << QAbstractAnimation::Stopped;
-
- QTest::newRow("P-pause") << QAbstractAnimation::Paused << Pause << QString() << QAbstractAnimation::Paused;
- QTest::newRow("P-start") << QAbstractAnimation::Paused << Start << QString() << QAbstractAnimation::Running;
- QTest::newRow("P-resume") << QAbstractAnimation::Paused << Resume << QString() << QAbstractAnimation::Running;
- QTest::newRow("P-stop") << QAbstractAnimation::Paused << Stop << QString() << QAbstractAnimation::Stopped;
-
- QTest::newRow("R-pause") << QAbstractAnimation::Running << Pause << QString() << QAbstractAnimation::Paused;
- QTest::newRow("R-start") << QAbstractAnimation::Running << Start << QString() << QAbstractAnimation::Running;
- QTest::newRow("R-resume") << QAbstractAnimation::Running << Resume << resumeWarn << QAbstractAnimation::Running;
- QTest::newRow("R-stop") << QAbstractAnimation::Running << Stop << QString() << QAbstractAnimation::Stopped;
-}
-
-void tst_QPropertyAnimation::operationsInStates()
-{
-/**
- * | pause() |start() |resume() |stop()
- * ----------+------------+-----------+-----------+-------------------+
- * Stopped | Stopped |Running |Stopped |Stopped |
- * _| qWarning |restart |qWarning | |
- * Paused | Paused |Running |Running |Stopped |
- * _| | | | |
- * Running | Paused |Running |Running |Stopped |
- * | |restart |qWarning | |
- * ----------+------------+-----------+-----------+-------------------+
-**/
-
- QFETCH(QAbstractAnimation::State, originState);
- QFETCH(int, operation);
- QFETCH(QString, expectedWarning);
- QFETCH(QAbstractAnimation::State, expectedState);
-
- QObject o;
- o.setProperty("ole", 42);
- QPropertyAnimation anim(&o, "ole");
- anim.setEndValue(100);
- QSignalSpy spy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
-
- anim.stop();
- switch (originState) {
- case QAbstractAnimation::Stopped:
- break;
- case QAbstractAnimation::Paused:
- anim.start();
- anim.pause();
- break;
- case QAbstractAnimation::Running:
- anim.start();
- break;
- }
- if (!expectedWarning.isEmpty()) {
- QTest::ignoreMessage(QtWarningMsg, qPrintable(expectedWarning));
- }
- QCOMPARE(anim.state(), originState);
- switch (operation) {
- case Pause:
- anim.pause();
- break;
- case Start:
- anim.start();
- break;
- case Resume:
- anim.resume();
- break;
- case Stop:
- anim.stop();
- break;
- }
-
- QCOMPARE(anim.state(), expectedState);
-}
-#undef Pause
-#undef Start
-#undef Resume
-#undef Stop
-
-void tst_QPropertyAnimation::oneKeyValue()
-{
- QObject o;
- o.setProperty("ole", 42);
- QCOMPARE(o.property("ole").toInt(), 42);
-
- QPropertyAnimation animation(&o, "ole");
- animation.setStartValue(43);
- animation.setEndValue(44);
- animation.setDuration(100);
-
- animation.setCurrentTime(0);
-
- QVERIFY(animation.currentValue().isValid());
- QCOMPARE(animation.currentValue().toInt(), 43);
- QCOMPARE(o.property("ole").toInt(), 42);
-
- // remove the last key value
- animation.setKeyValueAt(1.0, QVariant());
-
- // we will neither interpolate, nor update the current value
- // since there is only one 1 key value defined
- animation.setCurrentTime(100);
-
- // the animation should not have been modified
- QVERIFY(animation.currentValue().isValid());
- QCOMPARE(animation.currentValue().toInt(), 43);
- QCOMPARE(o.property("ole").toInt(), 42);
-}
-
-void tst_QPropertyAnimation::updateOnSetKeyValues()
-{
- QObject o;
- o.setProperty("ole", 100);
- QCOMPARE(o.property("ole").toInt(), 100);
-
- QPropertyAnimation animation(&o, "ole");
- animation.setStartValue(100);
- animation.setEndValue(200);
- animation.setDuration(100);
-
- animation.setCurrentTime(50);
- QCOMPARE(animation.currentValue().toInt(), 150);
- animation.setKeyValueAt(0.0, 300);
- QCOMPARE(animation.currentValue().toInt(), 250);
-
- o.setProperty("ole", 100);
- QPropertyAnimation animation2(&o, "ole");
- QVariantAnimation::KeyValues kValues;
- kValues << QVariantAnimation::KeyValue(0.0, 100) << QVariantAnimation::KeyValue(1.0, 200);
- animation2.setKeyValues(kValues);
- animation2.setDuration(100);
- animation2.setCurrentTime(50);
- QCOMPARE(animation2.currentValue().toInt(), 150);
-
- kValues.clear();
- kValues << QVariantAnimation::KeyValue(0.0, 300) << QVariantAnimation::KeyValue(1.0, 200);
- animation2.setKeyValues(kValues);
-
- QCOMPARE(animation2.currentValue().toInt(), animation.currentValue().toInt());
-}
-
-
-//this class will 'throw' an error in the test lib
-// if the property ole is set to ErrorValue
-class MyErrorObject : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(int ole READ ole WRITE setOle)
-public:
-
- static const int ErrorValue = 10000;
-
- MyErrorObject() : m_ole(0) { }
- int ole() const { return m_ole; }
- void setOle(int o)
- {
- QVERIFY(o != ErrorValue);
- m_ole = o;
- }
-
-private:
- int m_ole;
-
-
-};
-
-void tst_QPropertyAnimation::restart()
-{
- //here we check that be restarting an animation
- //it doesn't get an bogus intermediate value (end value)
- //because the time is not yet reset to 0
- MyErrorObject o;
- o.setOle(100);
- QCOMPARE(o.property("ole").toInt(), 100);
-
- QPropertyAnimation anim(&o, "ole");
- anim.setEndValue(200);
- anim.start();
- anim.setCurrentTime(anim.duration());
- QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
- QCOMPARE(o.property("ole").toInt(), 200);
-
- //we'll check that the animation never gets a wrong value when starting it
- //after having changed the end value
- anim.setEndValue(MyErrorObject::ErrorValue);
- anim.start();
-}
-
-void tst_QPropertyAnimation::valueChanged()
-{
- qRegisterMetaType<QVariant>("QVariant");
-
- //we check that we receive the valueChanged signal
- MyErrorObject o;
- o.setOle(0);
- QCOMPARE(o.property("ole").toInt(), 0);
- QPropertyAnimation anim(&o, "ole");
- anim.setEndValue(5);
- anim.setDuration(1000);
- QSignalSpy spy(&anim, SIGNAL(valueChanged(QVariant)));
- anim.start();
-
- QTest::qWait(anim.duration() + 100);
-
- QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
- QCOMPARE(anim.currentTime(), anim.duration());
-
- //let's check that the values go forward
- QCOMPARE(spy.count(), 6); //we should have got everything from 0 to 5
- for (int i = 0; i < spy.count(); ++i) {
- QCOMPARE(qvariant_cast<QVariant>(spy.at(i).first()).toInt(), i);
- }
-}
-
-//this class will help us make sure that 2 animations started
-//at the same time also end at the same time
-class MySyncObject : public MyErrorObject
-{
- Q_OBJECT
-public:
- MySyncObject() : anim(this, "ole")
- {
- anim.setEndValue(1000);
- }
-public slots:
- void checkAnimationFinished()
- {
- QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
- QCOMPARE(ole(), 1000);
- }
-
-public:
- QPropertyAnimation anim;
-};
-
-void tst_QPropertyAnimation::twoAnimations()
-{
- MySyncObject o1, o2;
- o1.setOle(0);
- o2.setOle(0);
-
- //when the animation in o1 is finished
- //the animation in o2 should stop around the same time
- //We use a queued connection to check just after the tick from the common timer
- //the other way is true too
- QObject::connect(&o1.anim, SIGNAL(finished()),
- &o2, SLOT(checkAnimationFinished()), Qt::QueuedConnection);
- QObject::connect(&o2.anim, SIGNAL(finished()),
- &o1, SLOT(checkAnimationFinished()), Qt::QueuedConnection);
-
- o1.anim.start();
- o2.anim.start();
-
- QTest::qWait(o1.anim.duration() + 100);
- QTRY_COMPARE(o1.anim.state(), QAbstractAnimation::Stopped);
- QCOMPARE(o2.anim.state(), QAbstractAnimation::Stopped);
-
- QCOMPARE(o1.ole(), 1000);
- QCOMPARE(o2.ole(), 1000);
-}
-
-class MyComposedAnimation : public QPropertyAnimation
-{
- Q_OBJECT
-public:
- MyComposedAnimation(QObject *target, const QByteArray &propertyName, const QByteArray &innerPropertyName)
- : QPropertyAnimation(target, propertyName)
- {
- innerAnim = new QPropertyAnimation(target, innerPropertyName);
- this->setEndValue(1000);
- innerAnim->setEndValue(1000);
- innerAnim->setDuration(duration() + 100);
- }
-
- void start()
- {
- QPropertyAnimation::start();
- innerAnim->start();
- }
-
- void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
- {
- QPropertyAnimation::updateState(newState, oldState);
- if (newState == QAbstractAnimation::Stopped)
- delete innerAnim;
- }
-
-public:
- QPropertyAnimation *innerAnim;
-};
-
-void tst_QPropertyAnimation::deletedInUpdateCurrentTime()
-{
- // this test case reproduces an animation being deleted in the updateCurrentTime of
- // another animation(was causing segfault).
- // the deleted animation must have been started after the animation that is deleting.
- AnimationObject o;
- o.setValue(0);
- o.setRealValue(0.0);
-
- MyComposedAnimation composedAnimation(&o, "value", "realValue");
- composedAnimation.start();
- QCOMPARE(composedAnimation.state(), QAbstractAnimation::Running);
- QTest::qWait(composedAnimation.duration() + 100);
-
- QTRY_COMPARE(composedAnimation.state(), QAbstractAnimation::Stopped);
- QCOMPARE(o.value(), 1000);
-}
-
-void tst_QPropertyAnimation::totalDuration()
-{
- QPropertyAnimation anim;
- QCOMPARE(anim.totalDuration(), 250);
- anim.setLoopCount(2);
- QCOMPARE(anim.totalDuration(), 2*250);
- anim.setLoopCount(-1);
- QCOMPARE(anim.totalDuration(), -1);
- anim.setDuration(0);
- QCOMPARE(anim.totalDuration(), 0);
-}
-
-void tst_QPropertyAnimation::zeroLoopCount()
-{
- DummyPropertyAnimation* anim;
- anim = new DummyPropertyAnimation;
- anim->setStartValue(0);
- anim->setDuration(20);
- anim->setLoopCount(0);
-
- QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QSignalSpy finishedSpy(anim, SIGNAL(finished()));
-
- QCOMPARE(anim->state(), QAnimationGroup::Stopped);
- QCOMPARE(anim->currentValue().toInt(), 0);
- QCOMPARE(runningSpy.count(), 0);
- QCOMPARE(finishedSpy.count(), 0);
-
- anim->start();
-
- QCOMPARE(anim->state(), QAnimationGroup::Stopped);
- QCOMPARE(anim->currentValue().toInt(), 0);
- QCOMPARE(runningSpy.count(), 0);
- QCOMPARE(finishedSpy.count(), 0);
-}
-
-QTEST_MAIN(tst_QPropertyAnimation)
-#include "tst_qpropertyanimation.moc"
diff --git a/tests/auto/qpushbutton/qpushbutton.pro b/tests/auto/qpushbutton/qpushbutton.pro
index 0d5f9418e1..e2fd455951 100644
--- a/tests/auto/qpushbutton/qpushbutton.pro
+++ b/tests/auto/qpushbutton/qpushbutton.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qpushbutton.cpp
diff --git a/tests/auto/qradiobutton/qradiobutton.pro b/tests/auto/qradiobutton/qradiobutton.pro
index 90e23ab2e0..82b2ff20a8 100644
--- a/tests/auto/qradiobutton/qradiobutton.pro
+++ b/tests/auto/qradiobutton/qradiobutton.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qradiobutton.cpp
diff --git a/tests/auto/qrawfont/qrawfont.pro b/tests/auto/qrawfont/qrawfont.pro
deleted file mode 100644
index 1f73055b00..0000000000
--- a/tests/auto/qrawfont/qrawfont.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-load(qttest_p4)
-
-QT = core core-private gui gui-private
-
-SOURCES += \
- tst_qrawfont.cpp
-
-INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/harfbuzz/src
-
-wince*|symbian*: {
- DEFINES += SRCDIR=\\\"\\\"
-} else {
- DEFINES += SRCDIR=\\\"$$PWD/\\\"
-}
diff --git a/tests/auto/qregion/tst_qregion.cpp b/tests/auto/qregion/tst_qregion.cpp
deleted file mode 100644
index bbc09c9b57..0000000000
--- a/tests/auto/qregion/tst_qregion.cpp
+++ /dev/null
@@ -1,1025 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <qregion.h>
-
-#include <qbitmap.h>
-#include <qpainter.h>
-#include <qpolygon.h>
-#ifdef Q_WS_X11
-#include <private/qt_x11_p.h>
-#endif
-
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QRegion : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QRegion();
-
-private slots:
- void boundingRect();
- void rects();
- void swap();
- void setRects();
- void ellipseRegion();
- void polygonRegion();
- void bitmapRegion();
- void intersected_data();
- void intersected();
- void emptyPolygonRegion_data();
- void emptyPolygonRegion();
-
- void intersects_region_data();
- void intersects_region();
- void intersects_rect_data();
- void intersects_rect();
- void contains_point();
-
- void operator_plus_data();
- void operator_plus();
- void operator_minus_data();
- void operator_minus();
- void operator_intersect_data();
- void operator_intersect();
- void operator_xor_data();
- void operator_xor();
-
- void rectCount_data();
- void rectCount();
-
- void isEmpty_data();
- void isEmpty();
-#ifdef Q_OS_WIN
- void handle();
-#endif
-#if defined(Q_WS_X11) && defined(QT_BUILD_INTERNAL)
- void clipRectangles();
-#endif
-
- void regionFromPath();
-
- void regionToPath_data();
- void regionToPath();
-};
-
-Q_DECLARE_METATYPE(QPolygon)
-Q_DECLARE_METATYPE(QVector<QRect>)
-Q_DECLARE_METATYPE(QRegion)
-
-tst_QRegion::tst_QRegion()
-{
-}
-
-void tst_QRegion::boundingRect()
-{
- {
- QRect rect;
- QRegion region( rect );
- QCOMPARE( region.boundingRect(), rect );
- }
- {
- QRect rect( 10, -20, 30, 40 );
- QRegion region( rect );
- QCOMPARE( region.boundingRect(), rect );
- }
- {
- QRect rect(15,25,10,10);
- QRegion region( rect );
- QCOMPARE( region.boundingRect(), rect );
- }
-
-}
-
-void tst_QRegion::rects()
-{
- {
- QRect rect;
- QRegion region( rect );
- QVERIFY( region.isEmpty() );
- QVERIFY( region.rects().isEmpty() );
- }
- {
- QRect rect( 10, -20, 30, 40 );
- QRegion region( rect );
- QCOMPARE( region.rects().count(), 1 );
- QCOMPARE( region.rects()[0], rect );
- }
- {
- QRect r( QPoint(10, 10), QPoint(40, 40) );
- QRegion region( r );
- QVERIFY( region.contains( QPoint(10,10) ) );
- QVERIFY( region.contains( QPoint(20,40) ) );
- QVERIFY( region.contains( QPoint(40,20) ) );
- QVERIFY( !region.contains( QPoint(20,41) ) );
- QVERIFY( !region.contains( QPoint(41,20) ) );
- }
- {
- QRect r( 10, 10, 30, 30 );
- QRegion region( r );
- QVERIFY( region.contains( QPoint(10,10) ) );
- QVERIFY( region.contains( QPoint(20,39) ) );
- QVERIFY( region.contains( QPoint(39,20) ) );
- QVERIFY( !region.contains( QPoint(20,40) ) );
- QVERIFY( !region.contains( QPoint(40,20) ) );
- }
-}
-
-void tst_QRegion::swap()
-{
- QRegion r1(QRect( 0, 0,10,10));
- QRegion r2(QRect(10,10,10,10));
- r1.swap(r2);
- QCOMPARE(r1.rects().front(), QRect(10,10,10,10));
- QCOMPARE(r2.rects().front(), QRect( 0, 0,10,10));
-}
-
-void tst_QRegion::setRects()
-{
- {
- QRegion region;
- region.setRects( 0, 0 );
- QVERIFY( region.rects().isEmpty() );
- }
- {
- QRegion region;
- QRect rect;
- region.setRects( &rect, 0 );
- QVERIFY(region.isEmpty());
- QVERIFY(region == QRegion());
- QVERIFY(!region.boundingRect().isValid());
- QVERIFY(region.rects().isEmpty());
- }
- {
- QRegion region;
- QRect rect;
- region.setRects( &rect, 1 );
- QVERIFY( !region.boundingRect().isValid() );
- QVERIFY( region.rects().isEmpty() );
- }
- {
- QRegion region;
- QRect rect( 10, -20, 30, 40 );
- region.setRects( &rect, 1 );
- QCOMPARE( region.rects().count(), 1 );
- QCOMPARE( region.rects()[0], rect );
- }
-}
-
-void tst_QRegion::ellipseRegion()
-{
- QRegion region(0, 0, 100, 100, QRegion::Ellipse);
-
- // These should not be inside the circe
- QVERIFY(!region.contains(QPoint(13, 13)));
- QVERIFY(!region.contains(QPoint(13, 86)));
- QVERIFY(!region.contains(QPoint(86, 13)));
- QVERIFY(!region.contains(QPoint(86, 86)));
-
- // These should be inside
- QVERIFY(region.contains(QPoint(16, 16)));
- QVERIFY(region.contains(QPoint(16, 83)));
- QVERIFY(region.contains(QPoint(83, 16)));
- QVERIFY(region.contains(QPoint(83, 83)));
-
- // ..a..
- // .. ..
- // . .
- // . .
- // b c
- // . .
- // . .
- // .. ..
- // ..d..
- QVERIFY(region.contains(QPoint(50, 0))); // Mid-top (a)
- QVERIFY(region.contains(QPoint(0, 50))); // Mid-left (b)
- QVERIFY(region.contains(QPoint(99, 50))); // Mid-right (c)
- QVERIFY(region.contains(QPoint(50, 99))); // Mid-bottom (d)
-
- QRect bounds = region.boundingRect();
- QCOMPARE(bounds.x(), 0);
- QCOMPARE(bounds.y(), 0);
- QCOMPARE(bounds.width(), 100);
- QCOMPARE(bounds.height(), 100);
-}
-
-void tst_QRegion::polygonRegion()
-{
- QPolygon pa;
- {
- QRegion region ( pa );
- QVERIFY( region.isEmpty() );
- }
- {
- pa.setPoints( 8, 10, 10, // a____________b
- 40, 10, // | |
- 40, 20, // |___ ___|
- 30, 20, // | |
- 30, 40, // | |
- 20, 40, // | |
- 20, 20, // |____c
- 10, 20 );
-
- QRegion region ( pa );
- QVERIFY( !region.isEmpty() );
-
- // These should not be inside the circle
- QVERIFY( !region.contains( QPoint( 9, 9 ) ) );
- QVERIFY( !region.contains( QPoint( 30, 41 ) ) );
- QVERIFY( !region.contains( QPoint( 41, 10 ) ) );
- QVERIFY( !region.contains( QPoint( 31, 21 ) ) );
-
- // These should be inside
- QVERIFY( region.contains( QPoint( 10, 10 ) ) ); // Upper-left (a)
-
- }
-}
-
-void tst_QRegion::emptyPolygonRegion_data()
-{
- QTest::addColumn<QPolygon>("pa");
- QTest::addColumn<bool>("isEmpty");
- QTest::addColumn<int>("numRects");
- QTest::addColumn<QVector<QRect> >("rects");
-
- QPolygon pa;
-
-
- QTest::newRow("no points") << pa << true << 0 << QVector<QRect>();
- pa = QPolygon() << QPoint(10,10);
- QTest::newRow("one point") << pa << true << 0 << QVector<QRect>();
- pa = QPolygon() << QPoint(10,10) << QPoint(10,20);
- QTest::newRow("two points, horizontal") << pa << true << 0 << QVector<QRect>();
-
- pa = QPolygon() << QPoint(10,10) << QPoint(20,10);
- QTest::newRow("two points, vertical") << pa << true << 0 << QVector<QRect>();
-
- pa = QPolygon() << QPoint(10,10) << QPoint(20,20);
- QTest::newRow("two points, diagonal") << pa << true << 0 << QVector<QRect>();
-
- pa = QPolygon() << QPoint(10,10) << QPoint(15,15) << QPoint(10,15) << QPoint(10, 10) ;
- QVector<QRect> v;
- v << QRect(10,11,1, 1) << QRect(10,12,2,1) << QRect(10,13,3,1) << QRect(10,14,4,1);
- QTest::newRow("triangle") << pa << false << 4 << v;
-
- v.clear();
- v << QRect(10,10,10,10);
-
- QTest::newRow("rectangle") << QPolygon(QRect(10,10,10,10)) << false << 1 << v;
-
-}
-
-void tst_QRegion::emptyPolygonRegion()
-{
- QFETCH(QPolygon, pa);
-
- QRegion r(pa);
- QTEST(r.isEmpty(), "isEmpty");
- QTEST(r.rects().count(), "numRects");
- QTEST(r.rects(), "rects");
-}
-
-
-static const char *circle_xpm[] = {
- "20 20 2 1",
- " c #FFFFFF",
- ". c #000000",
- " ...... ",
- " .......... ",
- " .............. ",
- " ................ ",
- " ................ ",
- " .................. ",
- " .................. ",
- "....................",
- "....................",
- "....................",
- "....................",
- "....................",
- "....................",
- " .................. ",
- " .................. ",
- " ................ ",
- " ................ ",
- " .............. ",
- " .......... ",
- " ...... "
-};
-
-void tst_QRegion::bitmapRegion()
-{
- QBitmap circle;
- {
- QRegion region( circle );
- QVERIFY( region.isEmpty() );
- }
- {
- circle = QPixmap( circle_xpm );
- QRegion region( circle );
-
- //// These should not be inside the circe
- QVERIFY( !region.contains( QPoint( 2, 2 ) ) );
- QVERIFY( !region.contains( QPoint( 2, 17 ) ) );
- QVERIFY( !region.contains( QPoint( 17, 2 ) ) );
- QVERIFY( !region.contains( QPoint( 17, 17 ) ) );
-
- //// These should be inside
- QVERIFY( region.contains( QPoint( 3, 3 ) ) );
- QVERIFY( region.contains( QPoint( 3, 16 ) ) );
- QVERIFY( region.contains( QPoint( 16, 3 ) ) );
- QVERIFY( region.contains( QPoint( 16, 16 ) ) );
-
- QVERIFY( region.contains( QPoint( 0, 10 ) ) ); // Mid-left
- QVERIFY( region.contains( QPoint( 10, 0 ) ) ); // Mid-top
- QVERIFY( region.contains( QPoint( 19, 10 ) ) ); // Mid-right
- QVERIFY( region.contains( QPoint( 10, 19 ) ) ); // Mid-bottom
- }
-}
-
-void tst_QRegion::intersected_data()
-{
- QTest::addColumn<QRegion>("r1");
- QTest::addColumn<QRegion>("r2");
- QTest::addColumn<bool>("intersects");
- // QTest::addColumn<QRegion>("intersected");
-
- QPolygon ps1(8);
- QPolygon ps2(8);
- ps1.putPoints(0,8, 20,20, 50,20, 50,100, 70,100, 70,20, 120,20, 120,200, 20, 200);
- ps2.putPoints(0,8, 100,150, 140,150, 140,160, 160,160, 160,150, 200,150, 200,180, 100,180);
- QTest::newRow("task30716") << QRegion(ps1) << QRegion(ps2) << true;
-}
-
-void tst_QRegion::intersected()
-{
- QFETCH(QRegion, r1);
- QFETCH(QRegion, r2);
- QFETCH(bool, intersects);
-
- QRegion interReg = r1.intersected(r2);
- QVERIFY(interReg.isEmpty() != intersects);
- // Need a way to test the intersected QRegion is right
-}
-
-void tst_QRegion::intersects_region_data()
-{
- QTest::addColumn<QRegion>("r1");
- QTest::addColumn<QRegion>("r2");
- QTest::addColumn<bool>("intersects");
-
- QTest::newRow("rect overlap rect") << QRegion(100, 100, 200, 200)
- << QRegion(200, 200, 200, 200)
- << true;
-
- QTest::newRow("rect not overlap rect") << QRegion(100, 100, 200, 200)
- << QRegion(400, 400, 200, 200)
- << false;
-
- QTest::newRow("ellipse overlap ellipse") << QRegion(100, 100, 200, 200, QRegion::Ellipse)
- << QRegion(200, 200, 200, 200, QRegion::Ellipse)
- << true;
-
- QTest::newRow("ellipse not overlap ellipse") << QRegion(100, 100, 200, 200, QRegion::Ellipse)
- << QRegion(400, 400, 200, 200, QRegion::Ellipse)
- << false;
-}
-
-void tst_QRegion::intersects_region()
-{
- QFETCH(QRegion, r1);
- QFETCH(QRegion, r2);
- QFETCH(bool, intersects);
- QCOMPARE(r1.intersects(r2), intersects);
-}
-
-
-void tst_QRegion::intersects_rect_data()
-{
- QTest::addColumn<QRegion>("region");
- QTest::addColumn<QRect>("rect");
- QTest::addColumn<bool>("intersects");
-
- QTest::newRow("rect overlap rect") << QRegion(100, 100, 200, 200)
- << QRect(200, 200, 200, 200)
- << true;
-
- QTest::newRow("rect not overlap rect") << QRegion(100, 100, 200, 200)
- << QRect(400, 400, 200, 200)
- << false;
-
- QTest::newRow("ellipse overlap rect") << QRegion(100, 100, 200, 200, QRegion::Ellipse)
- << QRect(200, 200, 200, 200)
- << true;
-
- QTest::newRow("ellipse not overlap rect") << QRegion(100, 100, 200, 200, QRegion::Ellipse)
- << QRect(400, 400, 200, 200)
- << false;
-}
-
-void tst_QRegion::intersects_rect()
-{
- QFETCH(QRegion, region);
- QFETCH(QRect, rect);
- QFETCH(bool, intersects);
- QCOMPARE(region.intersects(rect), intersects);
-}
-
-void tst_QRegion::contains_point()
-{
- QCOMPARE(QRegion().contains(QPoint(1,1)),false);
- QCOMPARE(QRegion(0,0,2,2).contains(QPoint(1,1)),true);
-}
-
-void tst_QRegion::operator_plus_data()
-{
- QTest::addColumn<QRegion>("r1");
- QTest::addColumn<QRegion>("r2");
- QTest::addColumn<QRegion>("expected");
-
- QTest::newRow("empty 0") << QRegion() << QRegion() << QRegion();
- QTest::newRow("empty 1") << QRegion() << QRegion(QRect(10, 10, 10, 10))
- << QRegion(QRect(10, 10, 10, 10));
- QTest::newRow("empty 2") << QRegion(QRect(10, 10, 10, 10)) << QRegion()
- << QRegion(QRect(10, 10, 10, 10));
-
- QRegion expected;
- QVector<QRect> rects;
- rects << QRect(10, 10, 10, 10) << QRect(22, 10, 10, 10);
- expected.setRects(rects.constData(), rects.size());
- QTest::newRow("non overlapping") << QRegion(10, 10, 10, 10)
- << QRegion(22, 10, 10, 10)
- << expected;
-
- rects.clear();
- rects << QRect(50, 0, 50, 2);
- expected.setRects(rects.constData(), rects.size());
- QTest::newRow("adjacent y-rects") << QRegion(50, 0, 50, 1)
- << QRegion(50, 1, 50, 1)
- << expected;
-
- rects.clear();
- rects << QRect(50, 0, 2, 1);
- expected.setRects(rects.constData(), rects.size());
- QTest::newRow("adjacent x-rects") << QRegion(50, 0, 1, 1)
- << QRegion(51, 0, 1, 1)
- << expected;
-
- rects.clear();
- rects << QRect(10, 10, 10, 10) << QRect(10, 20, 5, 10);
- QRegion r1;
- r1.setRects(rects.constData(), rects.size());
- QTest::newRow("double merge") << r1 << QRegion(15, 20, 5, 10)
- << QRegion(10, 10, 10, 20);
- rects.clear();
- rects << QRect(15, 10, 5, 10) << QRect(10, 20, 10, 10);
- r1.setRects(rects.constData(), rects.size());
- QTest::newRow("double merge 2") << r1 << QRegion(10, 10, 5, 10)
- << QRegion(10, 10, 10, 20);
- QTest::newRow("overlapping x") << QRegion(10, 10, 10, 10)
- << QRegion(15, 10, 10, 10)
- << QRegion(10, 10, 15, 10);
- QTest::newRow("overlapping y") << QRegion(10, 10, 10, 10)
- << QRegion(10, 15, 10, 10)
- << QRegion(10, 10, 10, 15);
- rects.clear();
- rects << QRect(10, 10, 10, 10) << QRect(10, 20, 5, 10);
- r1.setRects(rects.constData(), rects.size());
- rects.clear();
- rects << QRect(15, 20, 5, 10) << QRect(10, 30, 10, 10);
- QRegion r2;
- r2.setRects(rects.constData(), rects.size());
- QTest::newRow("triple merge") << r1 << r2
- << QRegion(10, 10, 10, 30);
-
- rects.clear();
- rects << QRect(10, 10, 4, 10) << QRect(15, 10, 10, 10);
- r1.setRects(rects.constData(), rects.size());
- rects.clear();
- rects << QRect(15, 20, 10, 10);
- r2.setRects(rects.constData(), rects.size());
- rects.clear();
- rects << QRect(10, 10, 4, 10) << QRect(15, 10, 10, 10)
- << QRect(15, 20, 10, 10);
- expected.setRects(rects.constData(), rects.size());
- QTest::newRow("don't merge y") << r1 << r2 << expected;
-
- QTest::newRow("equal 1") << QRegion(10, 10, 10, 10)
- << QRegion(10, 10, 10, 10)
- << QRegion(10, 10, 10, 10);
- QTest::newRow("equal 2") << expected << expected << expected;
-}
-
-void tst_QRegion::operator_plus()
-{
- QFETCH(QRegion, r1);
- QFETCH(QRegion, r2);
- QFETCH(QRegion, expected);
-
- if (r1 + r2 != expected) {
- qDebug() << "r1 + r2" << (r1 + r2);
- qDebug() << "expected" << expected;
- }
- QCOMPARE(r1 + r2, expected);
- if (r2.rectCount() == 1) {
- if (r1 + r2.boundingRect() != expected) {
- qDebug() << "r1 + QRect(r2)" << (r1 + r2.boundingRect());
- qDebug() << "expected" << expected;
- }
- QCOMPARE(r1 + r2.boundingRect(), expected);
- }
-
- if (r2 + r1 != expected) {
- qDebug() << "r2 + r1" << (r2 + r1);
- qDebug() << "expected" << expected;
- }
- QCOMPARE(r2 + r1, expected);
- if (r1.rectCount() == 1) {
- if (r1 + r2.boundingRect() != expected) {
- qDebug() << "r2 + QRect(r1)" << (r2 + r1.boundingRect());
- qDebug() << "expected" << expected;
- }
- QCOMPARE(r2 + r1.boundingRect(), expected);
- }
-
- QRegion result1 = r1;
- result1 += r2;
- if (result1 != expected) {
- qDebug() << "r1 += r2" << result1;
- qDebug() << "expected" << expected;
- }
- QCOMPARE(result1, expected);
- if (r2.rectCount() == 1) {
- result1 = r1;
- result1 += r2.boundingRect();
- if (result1 != expected) {
- qDebug() << "r1 += QRect(r2)" << result1;
- qDebug() << "expected" << expected;
- }
- QCOMPARE(result1, expected);
- }
-
- QRegion result2 = r2;
- result2 += r1;
- if (result2 != expected) {
- qDebug() << "r2 += r1" << result2;
- qDebug() << "expected" << expected;
- }
- QCOMPARE(result2, expected);
- if (r1.rectCount() == 1) {
- result2 = r2;
- result2 += r1.boundingRect();
- if (result2 != expected) {
- qDebug() << "r2 += QRect(r1)" << result2;
- qDebug() << "expected" << expected;
- }
- QCOMPARE(result2, expected);
- }
-}
-
-void tst_QRegion::operator_minus_data()
-{
- QTest::addColumn<QRegion>("dest");
- QTest::addColumn<QRegion>("subtract");
- QTest::addColumn<QRegion>("expected");
-
- QTest::newRow("empty 0") << QRegion() << QRegion() << QRegion();
- QTest::newRow("empty 1") << QRegion() << QRegion(QRect(10, 10, 10, 10))
- << QRegion();
- QTest::newRow("empty 2") << QRegion(QRect(10, 10, 10, 10)) << QRegion()
- << QRegion(QRect(10, 10, 10, 10));
-
- QRegion dest;
- QVector<QRect> rects;
- rects << QRect(10, 10, 10, 10) << QRect(22, 10, 10, 10);
- dest.setRects(rects.constData(), rects.size());
- QTest::newRow("simple 1") << dest
- << QRegion(22, 10, 10, 10)
- << QRegion(10, 10, 10, 10);
- QTest::newRow("simple 2") << dest
- << QRegion(10, 10, 10, 10)
- << QRegion(22, 10, 10, 10);
-
- rects.clear();
- rects << QRect(0, 0, 10, 10) << QRect(15, 0, 10, 10);
- dest.setRects(rects.constData(), rects.size());
-
- QRegion minus;
- rects.clear();
- rects << QRect(0, 0, 12, 12) << QRect(15, 0, 12, 12);
- minus.setRects(rects.constData(), rects.size());
- QTest::newRow("empty 3") << dest << minus << QRegion();
-}
-
-void tst_QRegion::operator_minus()
-{
- QFETCH(QRegion, dest);
- QFETCH(QRegion, subtract);
- QFETCH(QRegion, expected);
-
- if (dest - subtract != expected) {
- qDebug() << "dest - subtract" << (dest - subtract);
- qDebug() << "expected" << expected;
- };
- QCOMPARE(dest - subtract, expected);
-
- dest -= subtract;
-
- if (dest != expected) {
- qDebug() << "dest" << dest;
- qDebug() << "expected" << expected;
- };
- QCOMPARE(dest, expected);
-}
-
-void tst_QRegion::operator_intersect_data()
-{
- QTest::addColumn<QRegion>("r1");
- QTest::addColumn<QRegion>("r2");
- QTest::addColumn<QRegion>("expected");
-
- QTest::newRow("empty 0") << QRegion() << QRegion() << QRegion();
- QTest::newRow("empty 1") << QRegion() << QRegion(QRect(10, 10, 10, 10))
- << QRegion();
- QTest::newRow("empty 2") << QRegion(QRect(10, 10, 10, 10)) << QRegion()
- << QRegion();
-
- QRegion dest;
- QVector<QRect> rects;
- rects << QRect(10, 10, 10, 10) << QRect(22, 10, 10, 10);
- dest.setRects(rects.constData(), rects.size());
- QTest::newRow("simple 1") << dest
- << QRegion(22, 10, 10, 10)
- << QRegion(22, 10, 10, 10);
- QTest::newRow("simple 2") << dest
- << QRegion(10, 10, 10, 10)
- << QRegion(10, 10, 10, 10);
-
- rects.clear();
- rects << QRect(10, 10, 10, 10) << QRect(10, 20, 15, 10);
- dest.setRects(rects.constData(), rects.size());
- QTest::newRow("merge 1") << dest
- << QRegion(10, 10, 10, 20)
- << QRegion(10, 10, 10, 20);
-
- rects.clear();
- rects << QRect(11, 11, 218, 117) << QRect(11, 128, 218, 27)
- << QRect(264, 128, 122, 27) << QRect(11, 155, 218, 43)
- << QRect(11, 198, 218, 27) << QRect(264, 198, 122, 27)
- << QRect(11, 225, 218, 221);
- dest.setRects(rects.constData(), rects.size());
- QTest::newRow("merge 2") << dest << QRegion(11, 11, 218, 458)
- << QRegion(11, 11, 218, 435);
-
- rects.clear();
- rects << QRect(0, 0, 10, 10) << QRect(20, 0, 10, 10);
- dest.setRects(rects.constData(), rects.size());
- QTest::newRow("empty 3") << dest << QRegion(11, 0, 5, 5) << QRegion();
-
- QTest::newRow("extents check") << dest << QRegion(0, 0, 15, 15)
- << QRegion(0, 0, 10, 10);
-
- rects.clear();
- rects << QRect(10, 10, 10, 10) << QRect(10, 20, 10, 10)
- << QRect(30, 20, 10, 10) << QRect(10, 30, 10, 10);
- dest.setRects(rects.constData(), rects.size());
- rects.clear();
- rects << QRect(10, 10, 10, 10) << QRect(10, 20, 10, 10)
- << QRect(30, 20, 10, 10);
- QRegion expected;
- expected.setRects(rects.constData(), rects.size());
- QTest::newRow("dont merge") << dest << QRegion(0, 0, 100, 30)
- << expected;
-}
-
-void tst_QRegion::operator_intersect()
-{
- QFETCH(QRegion, r1);
- QFETCH(QRegion, r2);
- QFETCH(QRegion, expected);
-
- if ((r1 & r2) != expected) {
- qDebug() << "r1 & r2" << (r1 & r2);
- qDebug() << "expected" << expected;
- }
- QCOMPARE(r1 & r2, expected);
-
- if ((r2 & r1) != expected) {
- qDebug() << "r2 & r1" << (r2 & r1);
- qDebug() << "expected" << expected;
- }
- QCOMPARE(r2 & r1, expected);
-
- r1 &= r2;
- QCOMPARE(r1, expected);
-}
-
-void tst_QRegion::operator_xor_data()
-{
- QTest::addColumn<QRegion>("dest");
- QTest::addColumn<QRegion>("arg");
- QTest::addColumn<QRegion>("expected");
-
- QTest::newRow("empty 0") << QRegion() << QRegion() << QRegion();
- QTest::newRow("empty 1") << QRegion() << QRegion(QRect(10, 10, 10, 10))
- << QRegion(QRect(10, 10, 10, 10));
- QTest::newRow("empty 2") << QRegion(QRect(10, 10, 10, 10)) << QRegion()
- << QRegion(QRect(10, 10, 10, 10));
-
- QRegion dest;
- QVector<QRect> rects;
- rects << QRect(10, 10, 10, 10) << QRect(22, 10, 10, 10);
- dest.setRects(rects.constData(), rects.size());
- QTest::newRow("simple 1") << dest
- << QRegion(22, 10, 10, 10)
- << QRegion(10, 10, 10, 10);
- QTest::newRow("simple 2") << dest
- << QRegion(10, 10, 10, 10)
- << QRegion(22, 10, 10, 10);
- QTest::newRow("simple 3") << dest << dest << QRegion();
- QTest::newRow("simple 4") << QRegion(10, 10, 10, 10)
- << QRegion(10, 10, 5, 10)
- << QRegion(15, 10, 5, 10);
- QTest::newRow("simple 5") << QRegion(10, 10, 10, 10)
- << QRegion(10, 10, 10, 5)
- << QRegion(10, 15, 10, 5);
-
- const QRegion rgnA(0, 0, 100, 100);
- const QRegion rgnB(0, 0, 10, 10);
-
- QTest::newRow("simple 6") << rgnA
- << rgnA - rgnB
- << rgnB;
-
- QTest::newRow("simple 7") << rgnB
- << rgnA
- << rgnA - rgnB;
-}
-
-void tst_QRegion::operator_xor()
-{
- QFETCH(QRegion, dest);
- QFETCH(QRegion, arg);
- QFETCH(QRegion, expected);
-
- QCOMPARE(dest ^ arg, expected);
- QCOMPARE(dest.xored(arg), expected);
-
- dest ^= arg;
- QCOMPARE(dest, expected);
-}
-
-void tst_QRegion::rectCount_data()
-{
- QTest::addColumn<QRegion>("region");
- QTest::addColumn<int>("expected");
-
- QTest::newRow("empty") << QRegion() << 0;
- QTest::newRow("rect") << QRegion(10, 10, 10, 10) << 1;
-
- QRegion dest;
- QVector<QRect> rects;
- rects << QRect(10, 10, 10, 10) << QRect(22, 10, 10, 10);
- dest.setRects(rects.constData(), rects.size());
-
- QTest::newRow("2 rects") << dest << rects.size();
-}
-
-void tst_QRegion::rectCount()
-{
- QFETCH(QRegion, region);
- QFETCH(int, expected);
-
- QCOMPARE(region.rectCount(), expected);
-}
-
-void tst_QRegion::isEmpty_data()
-{
- QTest::addColumn<QRegion>("region");
-
- QTest::newRow("QRegion") << QRegion();
-
- QVector<QRect> rects;
- rects << QRect(0, 0, 10, 10) << QRect(15, 0, 10, 10);
- QRegion r1;
- r1.setRects(rects.constData(), rects.size());
-
- QRegion r2;
- rects.clear();
- rects << QRect(0, 0, 12, 12) << QRect(15, 0, 12, 12);
- r2.setRects(rects.constData(), rects.size());
- QTest::newRow("minus") << (r1 - r2);
-}
-
-void tst_QRegion::isEmpty()
-{
- QFETCH(QRegion, region);
-
- QVERIFY(region.isEmpty());
- QCOMPARE(region, QRegion());
- QCOMPARE(region.rectCount(), 0);
- QCOMPARE(region.boundingRect(), QRect());
- QVERIFY(region.rects().isEmpty());
-}
-
-#ifdef Q_OS_WIN
-void tst_QRegion::handle()
-{
- QRegion r;
- HRGN hrgn = r.handle();
- QRegion r2(QRect(0,0,10,10));
- hrgn = r2.handle();
-}
-#endif
-
-#if defined(Q_WS_X11) && defined(QT_BUILD_INTERNAL)
-void tst_QRegion::clipRectangles()
-{
- QRegion region(30, 30, 30, 30);
- int num = 0;
- qt_getClipRects(region, num);
- QCOMPARE(num, 1);
-
- region += QRegion(10, 10, 10, 10);
- XRectangle *rects2 = static_cast<XRectangle *>(qt_getClipRects(region, num));
- QCOMPARE(num, 2);
-
- // Here's the important part (Y-sorted):
- QCOMPARE(int(rects2[0].y), 10);
- QCOMPARE(int(rects2[1].y), 30);
-}
-#endif
-
-void tst_QRegion::regionFromPath()
-{
- {
- QPainterPath path;
- path.addRect(0, 0, 10, 10);
- path.addRect(0, 100, 100, 1000);
-
- QRegion rgn(path.toFillPolygon().toPolygon());
- QCOMPARE(rgn.rects().size(), 2);
- QCOMPARE(rgn.rects().at(0), QRect(0, 0, 10, 10));
- QCOMPARE(rgn.rects().at(1), QRect(0, 100, 100, 1000));
-
- QCOMPARE(rgn.boundingRect(), QRect(0, 0, 100, 1100));
- }
-
- {
- QPainterPath path;
- path.addRect(0, 0, 100, 100);
- path.addRect(10, 10, 80, 80);
-
- QRegion rgn(path.toFillPolygon().toPolygon());
- QCOMPARE(rgn.rects().size(), 4);
-
- QCOMPARE(rgn.rects().at(0), QRect(0, 0, 100, 10));
- QCOMPARE(rgn.rects().at(1), QRect(0, 10, 10, 80));
- QCOMPARE(rgn.rects().at(2), QRect(90, 10, 10, 80));
- QCOMPARE(rgn.rects().at(3), QRect(0, 90, 100, 10));
-
- QCOMPARE(rgn.boundingRect(), QRect(0, 0, 100, 100));
- }
-}
-
-Q_DECLARE_METATYPE(QPainterPath)
-
-void tst_QRegion::regionToPath_data()
-{
- QTest::addColumn<QPainterPath>("path");
- {
- QPainterPath path;
- path.addRect(QRect(0, 0, 10, 10));
-
- QTest::newRow("Rectangle") << path;
- }
-
- {
- QPainterPath path;
- path.addRect(QRect(0, 0, 10, 10));
- path.addRect(QRect(20, 0, 10, 10));
-
- QTest::newRow("Two rects") << path;
- }
-
- {
- QPainterPath path;
- path.addEllipse(QRect(0, 0, 10, 10));
-
- QTest::newRow("Ellipse") << path;
- }
-
- {
- QPainterPath path;
- path.addRect(QRect(0, 0, 3, 8));
- path.addRect(QRect(6, 0, 3, 8));
- path.addRect(QRect(3, 3, 3, 2));
- path.addRect(QRect(12, 3, 3, 2));
-
- QTest::newRow("H-dot") << path;
- }
-
- {
- QPainterPath path;
- for (int y = 0; y <= 10; ++y) {
- for (int x = 0; x <= 10; ++x) {
- if (!(y & 1) || ((x ^ y) & 1))
- path.addRect(QRect(x, y, 1, 1));
- }
- }
-
- QTest::newRow("Grid") << path;
- }
-}
-
-#ifdef QT_BUILD_INTERNAL
-QT_BEGIN_NAMESPACE
-extern QPainterPath qt_regionToPath(const QRegion &region);
-QT_END_NAMESPACE
-#endif
-
-void tst_QRegion::regionToPath()
-{
-#ifdef QT_BUILD_INTERNAL
-
- QFETCH(QPainterPath, path);
-
- for (int i = 0; i < 360; i += 10) {
-
- QTransform transform;
- transform.scale(5, 5);
- transform.rotate(i);
-
- QPainterPath mapped = transform.map(path);
- QRegion region(mapped.toFillPolygon().toPolygon());
-
- QPainterPath a;
- a.addRegion(region);
-
- QPainterPath b = qt_regionToPath(region);
-
- QRect r = a.boundingRect().toAlignedRect();
- QImage ia(r.size(), QImage::Format_RGB32);
- ia.fill(0xffffffff);
- QImage ib = ia;
-
- QPainter p(&ia);
- p.translate(-r.x(), -r.y());
- p.fillPath(a, Qt::red);
- p.end();
- p.begin(&ib);
- p.translate(-r.x(), -r.y());
- p.fillPath(b, Qt::red);
- p.end();
-
- QCOMPARE(ia, ib);
- QCOMPARE(a.boundingRect(), b.boundingRect());
- }
-#endif
-}
-
-QTEST_MAIN(tst_QRegion)
-#include "tst_qregion.moc"
diff --git a/tests/auto/qresourceengine/qresourceengine.pro b/tests/auto/qresourceengine/qresourceengine.pro
deleted file mode 100644
index 9ca6994716..0000000000
--- a/tests/auto/qresourceengine/qresourceengine.pro
+++ /dev/null
@@ -1,46 +0,0 @@
-######################################################################
-# Automatically generated by qmake (2.00a) ma 2. mai 16:14:33 2005
-######################################################################
-
-load(qttest_p4)
-load(resources)
-
-# Input
-SOURCES += tst_qresourceengine.cpp
-RESOURCES += testqrc/test.qrc
-
-symbian-sbsv2 {
- runtime_resource.target = $$PWD/runtime_resource.rcc
-} else {
- runtime_resource.target = runtime_resource.rcc
-}
-runtime_resource.depends = $$PWD/testqrc/test.qrc
-runtime_resource.commands = $$QMAKE_RCC -root /runtime_resource/ -binary $${runtime_resource.depends} -o $${runtime_resource.target}
-QMAKE_EXTRA_TARGETS = runtime_resource
-PRE_TARGETDEPS += $${runtime_resource.target}
-
-QT = core
-wince*|symbian:{
- deploy.files += runtime_resource.rcc parentdir.txt
- test.files = testqrc/*
- test.path = testqrc
- alias.files = testqrc/aliasdir/*
- alias.path = testqrc/aliasdir
- other.files = testqrc/otherdir/*
- other.path = testqrc/otherdir
- search1.files = testqrc/searchpath1/*
- search1.path = testqrc/searchpath1
- search2.files = testqrc/searchpath2/*
- search2.path = testqrc/searchpath2
- sub.files = testqrc/subdir/*
- sub.path = testqrc/subdir
- testsub.files = testqrc/test/*
- testsub.path = testqrc/test
- testsub2.files = testqrc/test/test/*
- testsub2.path = testqrc/test/test
- DEPLOYMENT += deploy test alias other search1 search2 sub testsub testsub2
- !symbian:DEFINES += SRCDIR=\\\"\\\"
-} else {
- DEFINES += SRCDIR=\\\"$$PWD/\\\"
-}
-CONFIG += parallel_test
diff --git a/tests/auto/qscrollarea/qscrollarea.pro b/tests/auto/qscrollarea/qscrollarea.pro
index bcb2ff347c..5b2602bbdb 100644
--- a/tests/auto/qscrollarea/qscrollarea.pro
+++ b/tests/auto/qscrollarea/qscrollarea.pro
@@ -3,7 +3,7 @@
############################################################
load(qttest_p4)
-
+QT += widgets
SOURCES += tst_qscrollarea.cpp
diff --git a/tests/auto/qscrollbar/qscrollbar.pro b/tests/auto/qscrollbar/qscrollbar.pro
index 40ce0cf6b8..262855452f 100644
--- a/tests/auto/qscrollbar/qscrollbar.pro
+++ b/tests/auto/qscrollbar/qscrollbar.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qscrollbar.cpp
-
mac*:CONFIG+=insignificant_test
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qscroller/qscroller.pro b/tests/auto/qscroller/qscroller.pro
index 1c990dcb04..6daf0b30d3 100644
--- a/tests/auto/qscroller/qscroller.pro
+++ b/tests/auto/qscroller/qscroller.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qscroller.cpp
CONFIG += insignificant_test
diff --git a/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp b/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
deleted file mode 100644
index eaebe3e14e..0000000000
--- a/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
+++ /dev/null
@@ -1,1672 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include "../../shared/util.h"
-
-#include <QtCore/qanimationgroup.h>
-#include <QtCore/qsequentialanimationgroup.h>
-
-//TESTED_CLASS=QSequentialAnimationGroup
-//TESTED_FILES=
-
-Q_DECLARE_METATYPE(QAbstractAnimation::State)
-Q_DECLARE_METATYPE(QAbstractAnimation*)
-
-class tst_QSequentialAnimationGroup : public QObject
-{
- Q_OBJECT
-public:
- tst_QSequentialAnimationGroup();
- virtual ~tst_QSequentialAnimationGroup();
-
-public Q_SLOTS:
- void init();
- void cleanup();
-
-private slots:
- void construction();
- void setCurrentTime();
- void setCurrentTimeWithUncontrolledAnimation();
- void seekingForwards();
- void seekingBackwards();
- void pauseAndResume();
- void restart();
- void looping();
- void startDelay();
- void clearGroup();
- void groupWithZeroDurationAnimations();
- void propagateGroupUpdateToChildren();
- void updateChildrenWithRunningGroup();
- void deleteChildrenWithRunningGroup();
- void startChildrenWithStoppedGroup();
- void stopGroupWithRunningChild();
- void startGroupWithRunningChild();
- void zeroDurationAnimation();
- void stopUncontrolledAnimations();
- void finishWithUncontrolledAnimation();
- void addRemoveAnimation();
- void currentAnimation();
- void currentAnimationWithZeroDuration();
- void insertAnimation();
- void clear();
- void pauseResume();
-};
-
-tst_QSequentialAnimationGroup::tst_QSequentialAnimationGroup()
-{
-}
-
-tst_QSequentialAnimationGroup::~tst_QSequentialAnimationGroup()
-{
-}
-
-void tst_QSequentialAnimationGroup::init()
-{
- qRegisterMetaType<QAbstractAnimation::State>("QAbstractAnimation::State");
- qRegisterMetaType<QAbstractAnimation*>("QAbstractAnimation*");
-}
-
-void tst_QSequentialAnimationGroup::cleanup()
-{
-}
-
-void tst_QSequentialAnimationGroup::construction()
-{
- QSequentialAnimationGroup animationgroup;
-}
-
-class AnimationObject : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(int value READ value WRITE setValue)
-public:
- AnimationObject(int startValue = 0)
- : v(startValue)
- { }
-
- int value() const { return v; }
- void setValue(int value) { v = value; }
-
- int v;
-};
-
-class TestAnimation : public QVariantAnimation
-{
- Q_OBJECT
-public:
- virtual void updateCurrentValue(const QVariant &value) { Q_UNUSED(value)};
- virtual void updateState(QAbstractAnimation::State newState,
- QAbstractAnimation::State oldState)
- {
- Q_UNUSED(oldState)
- Q_UNUSED(newState)
- };
-};
-
-class DummyPropertyAnimation : public QPropertyAnimation
-{
-public:
- DummyPropertyAnimation(QObject *parent = 0) : QPropertyAnimation(parent)
- {
- setTargetObject(&o);
- this->setPropertyName("value");
- setEndValue(0);
- }
-
- AnimationObject o;
-};
-
-class UncontrolledAnimation : public QPropertyAnimation
-{
- Q_OBJECT
-public:
- UncontrolledAnimation(QObject *target, QObject *parent = 0)
- : QPropertyAnimation(target, "value", parent)
- {
- setDuration(250);
- setEndValue(0);
- }
-
- int duration() const { return -1; /* not time driven */ }
-
-protected:
- void updateCurrentTime(int currentTime)
- {
- QPropertyAnimation::updateCurrentTime(currentTime);
- if (currentTime >= QPropertyAnimation::duration())
- stop();
- }
-};
-
-void tst_QSequentialAnimationGroup::setCurrentTime()
-{
- // sequence operating on same object/property
- QAnimationGroup *sequence = new QSequentialAnimationGroup();
- QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
- QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
- QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
- a2_s_o1->setLoopCount(3);
- sequence->addAnimation(a1_s_o1);
- sequence->addAnimation(a2_s_o1);
- sequence->addAnimation(a3_s_o1);
-
- // sequence operating on different object/properties
- QAnimationGroup *sequence2 = new QSequentialAnimationGroup();
- QVariantAnimation *a1_s_o2 = new DummyPropertyAnimation;
- QVariantAnimation *a1_s_o3 = new DummyPropertyAnimation;
- sequence2->addAnimation(a1_s_o2);
- sequence2->addAnimation(a1_s_o3);
-
- QSequentialAnimationGroup group;
- group.addAnimation(sequence);
- group.addAnimation(sequence2);
-
- // Current time = 1
- group.setCurrentTime(1);
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
-
- QCOMPARE(group.currentLoopTime(), 1);
- QCOMPARE(sequence->currentLoopTime(), 1);
- QCOMPARE(a1_s_o1->currentLoopTime(), 1);
- QCOMPARE(a2_s_o1->currentLoopTime(), 0);
- QCOMPARE(a3_s_o1->currentLoopTime(), 0);
- QCOMPARE(a1_s_o2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o3->currentLoopTime(), 0);
-
- // Current time = 250
- group.setCurrentTime(250);
- QCOMPARE(group.currentLoopTime(), 250);
- QCOMPARE(sequence->currentLoopTime(), 250);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 0);
- QCOMPARE(a3_s_o1->currentLoopTime(), 0);
- QCOMPARE(a1_s_o2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o3->currentLoopTime(), 0);
-
- // Current time = 251
- group.setCurrentTime(251);
- QCOMPARE(group.currentLoopTime(), 251);
- QCOMPARE(sequence->currentLoopTime(), 251);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 1);
- QCOMPARE(a2_s_o1->currentLoop(), 0);
- QCOMPARE(a3_s_o1->currentLoopTime(), 0);
- QCOMPARE(sequence2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o3->currentLoopTime(), 0);
-
- // Current time = 750
- group.setCurrentTime(750);
- QCOMPARE(group.currentLoopTime(), 750);
- QCOMPARE(sequence->currentLoopTime(), 750);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 0);
- QCOMPARE(a2_s_o1->currentLoop(), 2);
- QCOMPARE(a3_s_o1->currentLoopTime(), 0);
- QCOMPARE(sequence2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o3->currentLoopTime(), 0);
-
- // Current time = 1000
- group.setCurrentTime(1000);
- QCOMPARE(group.currentLoopTime(), 1000);
- QCOMPARE(sequence->currentLoopTime(), 1000);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 2);
- QCOMPARE(a3_s_o1->currentLoopTime(), 0);
- QCOMPARE(sequence2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o3->currentLoopTime(), 0);
-
- // Current time = 1010
- group.setCurrentTime(1010);
- QCOMPARE(group.currentLoopTime(), 1010);
- QCOMPARE(sequence->currentLoopTime(), 1010);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 2);
- QCOMPARE(a3_s_o1->currentLoopTime(), 10);
- QCOMPARE(sequence2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o3->currentLoopTime(), 0);
-
- // Current time = 1250
- group.setCurrentTime(1250);
- QCOMPARE(group.currentLoopTime(), 1250);
- QCOMPARE(sequence->currentLoopTime(), 1250);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 2);
- QCOMPARE(a3_s_o1->currentLoopTime(), 250);
- QCOMPARE(sequence2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o3->currentLoopTime(), 0);
-
- // Current time = 1500
- group.setCurrentTime(1500);
- QCOMPARE(group.currentLoopTime(), 1500);
- QCOMPARE(sequence->currentLoopTime(), 1250);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 2);
- QCOMPARE(a3_s_o1->currentLoopTime(), 250);
- QCOMPARE(sequence2->currentLoopTime(), 250);
- QCOMPARE(a1_s_o2->currentLoopTime(), 250);
- QCOMPARE(a1_s_o3->currentLoopTime(), 0);
-
- // Current time = 1750
- group.setCurrentTime(1750);
- QCOMPARE(group.currentLoopTime(), 1750);
- QCOMPARE(sequence->currentLoopTime(), 1250);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 2);
- QCOMPARE(a3_s_o1->currentLoopTime(), 250);
- QCOMPARE(sequence2->currentLoopTime(), 500);
- QCOMPARE(a1_s_o2->currentLoopTime(), 250);
- QCOMPARE(a1_s_o3->currentLoopTime(), 250);
-
- // Current time = 2000
- group.setCurrentTime(2000);
- QCOMPARE(group.currentLoopTime(), 1750);
- QCOMPARE(sequence->currentLoopTime(), 1250);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 2);
- QCOMPARE(a3_s_o1->currentLoopTime(), 250);
- QCOMPARE(sequence2->currentLoopTime(), 500);
- QCOMPARE(a1_s_o2->currentLoopTime(), 250);
- QCOMPARE(a1_s_o3->currentLoopTime(), 250);
-}
-
-void tst_QSequentialAnimationGroup::setCurrentTimeWithUncontrolledAnimation()
-{
- AnimationObject t_o1;
-
- // sequence operating on different object/properties
- QAnimationGroup *sequence = new QSequentialAnimationGroup();
- QPropertyAnimation *a1_s_o1 = new DummyPropertyAnimation;
- QPropertyAnimation *a1_s_o2 = new DummyPropertyAnimation;
- sequence->addAnimation(a1_s_o1);
- sequence->addAnimation(a1_s_o2);
-
- QPropertyAnimation *notTimeDriven = new UncontrolledAnimation(&t_o1);
- QCOMPARE(notTimeDriven->totalDuration(), -1);
-
- QAbstractAnimation *loopsForever = new DummyPropertyAnimation;
- loopsForever->setLoopCount(-1);
- QCOMPARE(loopsForever->totalDuration(), -1);
-
- QSequentialAnimationGroup group;
- group.addAnimation(sequence);
- group.addAnimation(notTimeDriven);
- group.addAnimation(loopsForever);
- group.start();
- group.pause(); // this allows the group to listen for the finish signal of its children
-
- // Current time = 1
- group.setCurrentTime(1);
- QCOMPARE(group.state(), QAnimationGroup::Paused);
- QCOMPARE(sequence->state(), QAnimationGroup::Paused);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Paused);
- QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
- QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped);
- QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped);
-
- QCOMPARE(group.currentLoopTime(), 1);
- QCOMPARE(sequence->currentLoopTime(), 1);
- QCOMPARE(a1_s_o1->currentLoopTime(), 1);
- QCOMPARE(a1_s_o2->currentLoopTime(), 0);
- QCOMPARE(notTimeDriven->currentLoopTime(), 0);
- QCOMPARE(loopsForever->currentLoopTime(), 0);
-
- // Current time = 250
- group.setCurrentTime(250);
- QCOMPARE(group.currentLoopTime(), 250);
- QCOMPARE(sequence->currentLoopTime(), 250);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a1_s_o2->currentLoopTime(), 0);
- QCOMPARE(notTimeDriven->currentLoopTime(), 0);
- QCOMPARE(loopsForever->currentLoopTime(), 0);
-
- // Current time = 500
- group.setCurrentTime(500);
- QCOMPARE(group.currentLoopTime(), 500);
- QCOMPARE(sequence->currentLoopTime(), 500);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a1_s_o2->currentLoopTime(), 250);
- QCOMPARE(notTimeDriven->currentLoopTime(), 0);
- QCOMPARE(loopsForever->currentLoopTime(), 0);
- QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation *>(notTimeDriven));
-
- // Current time = 505
- group.setCurrentTime(505);
- QCOMPARE(group.currentLoopTime(), 505);
- QCOMPARE(sequence->currentLoopTime(), 500);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a1_s_o2->currentLoopTime(), 250);
- QCOMPARE(notTimeDriven->currentLoopTime(), 5);
- QCOMPARE(loopsForever->currentLoopTime(), 0);
- QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation *>(notTimeDriven));
- QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
- QCOMPARE(notTimeDriven->state(), QAnimationGroup::Paused);
- QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped);
-
- // Current time = 750 (end of notTimeDriven animation)
- group.setCurrentTime(750);
- QCOMPARE(group.currentLoopTime(), 750);
- QCOMPARE(sequence->currentLoopTime(), 500);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a1_s_o2->currentLoopTime(), 250);
- QCOMPARE(notTimeDriven->currentLoopTime(), 250);
- QCOMPARE(loopsForever->currentLoopTime(), 0);
- QCOMPARE(group.currentAnimation(), loopsForever);
- QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
- QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped);
- QCOMPARE(loopsForever->state(), QAnimationGroup::Paused);
-
- // Current time = 800 (as notTimeDriven was finished at 750, loopsforever should still run)
- group.setCurrentTime(800);
- QCOMPARE(group.currentLoopTime(), 800);
- QCOMPARE(group.currentAnimation(), loopsForever);
- QCOMPARE(sequence->currentLoopTime(), 500);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a1_s_o2->currentLoopTime(), 250);
- QCOMPARE(notTimeDriven->currentLoopTime(), 250);
- QCOMPARE(loopsForever->currentLoopTime(), 50);
-
- loopsForever->stop(); // this should stop the group
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
- QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped);
- QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped);
-}
-
-void tst_QSequentialAnimationGroup::seekingForwards()
-{
-
- // sequence operating on same object/property
- QAnimationGroup *sequence = new QSequentialAnimationGroup;
- QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
- QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
- QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
- a2_s_o1->setLoopCount(3);
- sequence->addAnimation(a1_s_o1);
- sequence->addAnimation(a2_s_o1);
- sequence->addAnimation(a3_s_o1);
-
- // sequence operating on different object/properties
- QAnimationGroup *sequence2 = new QSequentialAnimationGroup;
- QVariantAnimation *a1_s_o2 = new DummyPropertyAnimation;
- QVariantAnimation *a1_s_o3 = new DummyPropertyAnimation;
- sequence2->addAnimation(a1_s_o2);
- sequence2->addAnimation(a1_s_o3);
-
- QSequentialAnimationGroup group;
- group.addAnimation(sequence);
- group.addAnimation(sequence2);
-
- // Current time = 1
- group.setCurrentTime(1);
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
-
- QCOMPARE(group.currentLoopTime(), 1);
- QCOMPARE(sequence->currentLoopTime(), 1);
- QCOMPARE(a1_s_o1->currentLoopTime(), 1);
- QCOMPARE(a2_s_o1->currentLoopTime(), 0);
- QCOMPARE(a3_s_o1->currentLoopTime(), 0);
- QCOMPARE(sequence2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o3->currentLoopTime(), 0);
-
- // Current time = 1500
- group.setCurrentTime(1500);
- QCOMPARE(group.currentLoopTime(), 1500);
- QCOMPARE(sequence->currentLoopTime(), 1250);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 2);
- QCOMPARE(a3_s_o1->currentLoopTime(), 250);
- QCOMPARE(sequence2->currentLoopTime(), 250);
- QCOMPARE(a1_s_o2->currentLoopTime(), 250);
- QCOMPARE(a1_s_o3->currentLoopTime(), 0);
-
- // this will restart the group
- group.start();
- group.pause();
- QCOMPARE(group.state(), QAnimationGroup::Paused);
- QCOMPARE(sequence->state(), QAnimationGroup::Paused);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Paused);
- QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
-
- // Current time = 1750
- group.setCurrentTime(1750);
- QCOMPARE(group.currentLoopTime(), 1750);
- QCOMPARE(sequence->currentLoopTime(), 1250);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 2);
- QCOMPARE(a3_s_o1->currentLoopTime(), 250);
- QCOMPARE(sequence2->currentLoopTime(), 500);
- QCOMPARE(a1_s_o2->currentLoopTime(), 250);
- QCOMPARE(a1_s_o3->currentLoopTime(), 250);
-}
-
-void tst_QSequentialAnimationGroup::seekingBackwards()
-{
- // sequence operating on same object/property
- QAnimationGroup *sequence = new QSequentialAnimationGroup();
- QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
- QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
- QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
- a2_s_o1->setLoopCount(3);
- sequence->addAnimation(a1_s_o1);
- sequence->addAnimation(a2_s_o1);
- sequence->addAnimation(a3_s_o1);
-
- // sequence operating on different object/properties
- QAnimationGroup *sequence2 = new QSequentialAnimationGroup();
- QVariantAnimation *a1_s_o2 = new DummyPropertyAnimation;
- QVariantAnimation *a1_s_o3 = new DummyPropertyAnimation;
- sequence2->addAnimation(a1_s_o2);
- sequence2->addAnimation(a1_s_o3);
-
- QSequentialAnimationGroup group;
- group.addAnimation(sequence);
- group.addAnimation(sequence2);
-
- group.start();
-
- // Current time = 1600
- group.setCurrentTime(1600);
- QCOMPARE(group.currentLoopTime(), 1600);
- QCOMPARE(sequence->currentLoopTime(), 1250);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 2);
- QCOMPARE(a3_s_o1->currentLoopTime(), 250);
- QCOMPARE(sequence2->currentLoopTime(), 350);
- QCOMPARE(a1_s_o2->currentLoopTime(), 250);
- QCOMPARE(a1_s_o3->currentLoopTime(), 100);
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(sequence2->state(), QAnimationGroup::Running);
- QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o3->state(), QAnimationGroup::Running);
-
- // Seeking backwards, current time = 1
- group.setCurrentTime(1);
- QCOMPARE(group.currentLoopTime(), 1);
- QCOMPARE(sequence->currentLoopTime(), 1);
- QCOMPARE(a1_s_o1->currentLoopTime(), 1);
-
- QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children,"
- "hence they don't reset from their current animation", Continue);
- QCOMPARE(a2_s_o1->currentLoopTime(), 0);
- QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children,"
- "hence they don't reset from their current animation", Continue);
- QCOMPARE(a2_s_o1->currentLoop(), 0);
- QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children,"
- "hence they don't reset from their current animation", Continue);
- QCOMPARE(a3_s_o1->currentLoopTime(), 0);
- QCOMPARE(sequence2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o2->currentLoopTime(), 0);
- QCOMPARE(a1_s_o3->currentLoopTime(), 0);
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(sequence->state(), QAnimationGroup::Running);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Running);
- QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
-
- // Current time = 2000
- group.setCurrentTime(2000);
- QCOMPARE(group.currentLoopTime(), 1750);
- QCOMPARE(sequence->currentLoopTime(), 1250);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 2);
- QCOMPARE(a3_s_o1->currentLoopTime(), 250);
- QCOMPARE(sequence2->currentLoopTime(), 500);
- QCOMPARE(a1_s_o2->currentLoopTime(), 250);
- QCOMPARE(a1_s_o3->currentLoopTime(), 250);
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
-}
-
-typedef QList<QAbstractAnimation::State> StateList;
-
-static bool compareStates(const QSignalSpy& spy, const StateList &expectedStates)
-{
- bool equals = true;
- for (int i = 0; i < qMax(expectedStates.count(), spy.count()); ++i) {
- if (i >= spy.count() || i >= expectedStates.count()) {
- equals = false;
- break;
- }
- QList<QVariant> args = spy.at(i);
- QAbstractAnimation::State st = expectedStates.at(i);
- QAbstractAnimation::State actual = qVariantValue<QAbstractAnimation::State>(args.first());
- if (equals && actual != st) {
- equals = false;
- break;
- }
- }
- if (!equals) {
- const char *stateStrings[] = {"Stopped", "Paused", "Running"};
- QString e,a;
- for (int i = 0; i < qMax(expectedStates.count(), spy.count()); ++i) {
- if (i < expectedStates.count()) {
- int exp = int(expectedStates.at(i));
- if (!e.isEmpty())
- e += QLatin1String(", ");
- e += QLatin1String(stateStrings[exp]);
- }
- if (i < spy.count()) {
- QList<QVariant> args = spy.at(i);
- QAbstractAnimation::State actual = qVariantValue<QAbstractAnimation::State>(args.value(1));
- if (!a.isEmpty())
- a += QLatin1String(", ");
- if (int(actual) >= 0 && int(actual) <= 2) {
- a += QLatin1String(stateStrings[int(actual)]);
- } else {
- a += QLatin1String("NaN");
- }
- }
-
- }
- qDebug("\n"
- "expected (count == %d): %s\n"
- "actual (count == %d): %s\n", expectedStates.count(), qPrintable(e), spy.count(), qPrintable(a));
- }
- return equals;
-}
-
-void tst_QSequentialAnimationGroup::pauseAndResume()
-{
- // sequence operating on same object/property
- QAnimationGroup *sequence = new QSequentialAnimationGroup();
- QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
- QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
- QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
- a2_s_o1->setLoopCount(2);
- sequence->addAnimation(a1_s_o1);
- sequence->addAnimation(a2_s_o1);
- sequence->addAnimation(a3_s_o1);
- sequence->setLoopCount(2);
-
- QSignalSpy a1StateChangedSpy(a1_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QSignalSpy seqStateChangedSpy(sequence, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
-
- QSequentialAnimationGroup group;
- group.addAnimation(sequence);
-
- group.start();
- group.pause();
-
- // Current time = 1751
- group.setCurrentTime(1751);
- QCOMPARE(group.currentLoopTime(), 1751);
- QCOMPARE(sequence->currentLoopTime(), 751);
- QCOMPARE(sequence->currentLoop(), 1);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 1);
- QCOMPARE(a3_s_o1->currentLoop(), 0);
- QCOMPARE(a3_s_o1->currentLoopTime(), 1);
-
- QCOMPARE(group.state(), QAnimationGroup::Paused);
- QCOMPARE(sequence->state(), QAnimationGroup::Paused);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a3_s_o1->state(), QAnimationGroup::Paused);
-
- QCOMPARE(a1StateChangedSpy.count(), 5); // Running,Paused,Stopped,Running,Stopped
- QCOMPARE(seqStateChangedSpy.count(), 2); // Running,Paused
-
- QVERIFY(compareStates(a1StateChangedSpy, (StateList() << QAbstractAnimation::Running
- << QAbstractAnimation::Paused
- << QAbstractAnimation::Stopped
- << QAbstractAnimation::Running
- << QAbstractAnimation::Stopped)));
-
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(0).first()),
- QAnimationGroup::Running);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(1).first()),
- QAnimationGroup::Paused);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(2).first()),
- QAnimationGroup::Stopped);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(3).first()),
- QAnimationGroup::Running);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(4).first()),
- QAnimationGroup::Stopped);
-
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(0).first()),
- QAnimationGroup::Running);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(1).first()),
- QAnimationGroup::Paused);
-
- group.resume();
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(sequence->state(), QAnimationGroup::Running);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a3_s_o1->state(), QAnimationGroup::Running);
-
- QVERIFY(group.currentLoopTime() >= 1751);
- QVERIFY(sequence->currentLoopTime() >= 751);
- QCOMPARE(sequence->currentLoop(), 1);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 1);
- QCOMPARE(a3_s_o1->currentLoop(), 0);
- QVERIFY(a3_s_o1->currentLoopTime() >= 1);
-
- QCOMPARE(seqStateChangedSpy.count(), 3); // Running,Paused,Running
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(2).first()),
- QAnimationGroup::Running);
-
- group.pause();
-
- QCOMPARE(group.state(), QAnimationGroup::Paused);
- QCOMPARE(sequence->state(), QAnimationGroup::Paused);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a3_s_o1->state(), QAnimationGroup::Paused);
-
- QVERIFY(group.currentLoopTime() >= 1751);
- QVERIFY(sequence->currentLoopTime() >= 751);
- QCOMPARE(sequence->currentLoop(), 1);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 1);
- QCOMPARE(a3_s_o1->currentLoop(), 0);
- QVERIFY(a3_s_o1->currentLoopTime() >= 1);
-
- QCOMPARE(seqStateChangedSpy.count(), 4); // Running,Paused,Running,Paused
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(3).first()),
- QAnimationGroup::Paused);
-
- group.stop();
-
- QCOMPARE(seqStateChangedSpy.count(), 5); // Running,Paused,Running,Paused,Stopped
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(4).first()),
- QAnimationGroup::Stopped);
-}
-
-void tst_QSequentialAnimationGroup::restart()
-{
- // sequence operating on same object/property
- QAnimationGroup *sequence = new QSequentialAnimationGroup();
- QSignalSpy seqCurrentAnimChangedSpy(sequence, SIGNAL(currentAnimationChanged(QAbstractAnimation*)));
- QSignalSpy seqStateChangedSpy(sequence, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
-
- QVariantAnimation *anims[3];
- QSignalSpy *animsStateChanged[3];
-
- for (int i = 0; i < 3; i++) {
- anims[i] = new DummyPropertyAnimation;
- anims[i]->setDuration(100);
- animsStateChanged[i] = new QSignalSpy(anims[i], SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- }
-
- anims[1]->setLoopCount(2);
- sequence->addAnimation(anims[0]);
- sequence->addAnimation(anims[1]);
- sequence->addAnimation(anims[2]);
- sequence->setLoopCount(2);
-
- QSequentialAnimationGroup group;
- group.addAnimation(sequence);
-
- group.start();
-
- QTest::qWait(500);
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
-
- QTest::qWait(300);
- QTRY_COMPARE(group.state(), QAnimationGroup::Stopped);
-
- for (int i = 0; i < 3; i++) {
- QCOMPARE(animsStateChanged[i]->count(), 4);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(0).first()),
- QAnimationGroup::Running);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(1).first()),
- QAnimationGroup::Stopped);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(2).first()),
- QAnimationGroup::Running);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(3).first()),
- QAnimationGroup::Stopped);
- }
-
- QCOMPARE(seqStateChangedSpy.count(), 2);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(0).first()),
- QAnimationGroup::Running);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(1).first()),
- QAnimationGroup::Stopped);
-
- QCOMPARE(seqCurrentAnimChangedSpy.count(), 6);
- for(int i=0; i<seqCurrentAnimChangedSpy.count(); i++)
- QCOMPARE(static_cast<QAbstractAnimation*>(anims[i%3]), qVariantValue<QAbstractAnimation*>(seqCurrentAnimChangedSpy.at(i).at(0)));
-
- group.start();
-
- QCOMPARE(animsStateChanged[0]->count(), 5);
- QCOMPARE(animsStateChanged[1]->count(), 4);
- QCOMPARE(animsStateChanged[2]->count(), 4);
- QCOMPARE(seqStateChangedSpy.count(), 3);
-}
-
-void tst_QSequentialAnimationGroup::looping()
-{
- // sequence operating on same object/property
- QSequentialAnimationGroup *sequence = new QSequentialAnimationGroup();
- QAbstractAnimation *a1_s_o1 = new DummyPropertyAnimation;
- QAbstractAnimation *a2_s_o1 = new DummyPropertyAnimation;
- QAbstractAnimation *a3_s_o1 = new DummyPropertyAnimation;
-
- QSignalSpy a1Spy(a1_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QSignalSpy a2Spy(a2_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QSignalSpy a3Spy(a3_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QSignalSpy seqSpy(sequence, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
-
- a2_s_o1->setLoopCount(2);
- sequence->addAnimation(a1_s_o1);
- sequence->addAnimation(a2_s_o1);
- sequence->addAnimation(a3_s_o1);
- sequence->setLoopCount(2);
-
- QSequentialAnimationGroup group;
- QSignalSpy groupSpy(&group, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
-
- group.addAnimation(sequence);
- group.setLoopCount(2);
-
- group.start();
- group.pause();
-
- // Current time = 1750
- group.setCurrentTime(1750);
- QCOMPARE(group.currentLoopTime(), 1750);
- QCOMPARE(sequence->currentLoopTime(), 750);
- QCOMPARE(sequence->currentLoop(), 1);
- QCOMPARE(a1_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 1);
- // this animation is at the beginning because it is the current one inside sequence
- QCOMPARE(a3_s_o1->currentLoop(), 0);
- QCOMPARE(a3_s_o1->currentLoopTime(), 0);
- QCOMPARE(sequence->currentAnimation(), a3_s_o1);
-
- QCOMPARE(group.state(), QAnimationGroup::Paused);
- QCOMPARE(sequence->state(), QAnimationGroup::Paused);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a3_s_o1->state(), QAnimationGroup::Paused);
-
- QCOMPARE(a1Spy.count(), 5); // Running,Paused,Stopped,Running,Stopped
- QVERIFY(compareStates(a1Spy, (StateList() << QAbstractAnimation::Running
- << QAbstractAnimation::Paused
- << QAbstractAnimation::Stopped
- << QAbstractAnimation::Running
- << QAbstractAnimation::Stopped)));
-
- QCOMPARE(a2Spy.count(), 4); // Running,Stopped,Running,Stopped
- QVERIFY(compareStates(a3Spy, (StateList() << QAbstractAnimation::Running
- << QAbstractAnimation::Stopped
- << QAbstractAnimation::Running
- << QAbstractAnimation::Paused)));
-
- QCOMPARE(seqSpy.count(), 2); // Running,Paused
- QCOMPARE(groupSpy.count(), 2); // Running,Paused
-
- // Looping, current time = duration + 1
- group.setCurrentTime(group.duration() + 1);
- QCOMPARE(group.currentLoopTime(), 1);
- QCOMPARE(group.currentLoop(), 1);
- QCOMPARE(sequence->currentLoopTime(), 1);
- QCOMPARE(sequence->currentLoop(), 0);
- QCOMPARE(a1_s_o1->currentLoopTime(), 1);
- QCOMPARE(a2_s_o1->currentLoopTime(), 250);
- QCOMPARE(a2_s_o1->currentLoop(), 1);
- // this animation is at the end because it was run on the previous loop
- QCOMPARE(a3_s_o1->currentLoop(), 0);
- QCOMPARE(a3_s_o1->currentLoopTime(), 250);
-
- QCOMPARE(group.state(), QAnimationGroup::Paused);
- QCOMPARE(sequence->state(), QAnimationGroup::Paused);
- QCOMPARE(a1_s_o1->state(), QAnimationGroup::Paused);
- QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a3_s_o1->state(), QAnimationGroup::Stopped);
-
- QCOMPARE(a1Spy.count(), 7); // Running,Paused,Stopped,Running,Stopped,Running,Stopped
- QCOMPARE(a2Spy.count(), 4); // Running, Stopped, Running, Stopped
- QVERIFY(compareStates(a3Spy, (StateList() << QAbstractAnimation::Running
- << QAbstractAnimation::Stopped
- << QAbstractAnimation::Running
- << QAbstractAnimation::Paused
- << QAbstractAnimation::Stopped)));
- QVERIFY(compareStates(seqSpy, (StateList() << QAbstractAnimation::Running
- << QAbstractAnimation::Paused
- << QAbstractAnimation::Stopped
- << QAbstractAnimation::Running
- << QAbstractAnimation::Paused)));
- QCOMPARE(groupSpy.count(), 2);
-}
-
-void tst_QSequentialAnimationGroup::startDelay()
-{
- QSequentialAnimationGroup group;
- group.addPause(250);
- group.addPause(125);
- QCOMPARE(group.totalDuration(), 375);
-
- group.start();
- QCOMPARE(group.state(), QAnimationGroup::Running);
-
- QTest::qWait(500);
-
- QTRY_COMPARE(group.state(), QAnimationGroup::Stopped);
- QVERIFY(group.currentLoopTime() == 375);
-}
-
-void tst_QSequentialAnimationGroup::clearGroup()
-{
- QSequentialAnimationGroup group;
-
- static const int animationCount = 20;
-
- for (int i = 0; i < animationCount/2; ++i) {
- QSequentialAnimationGroup *subGroup = new QSequentialAnimationGroup(&group);
- group.addPause(100);
- subGroup->addPause(10);
- }
-
- QCOMPARE(group.animationCount(), animationCount);
-
- QPointer<QAbstractAnimation> children[animationCount];
- for (int i = 0; i < animationCount; ++i) {
- QVERIFY(group.animationAt(i) != 0);
- children[i] = group.animationAt(i);
- }
-
- group.clear();
- QCOMPARE(group.animationCount(), 0);
- QCOMPARE(group.currentLoopTime(), 0);
- for (int i = 0; i < animationCount; ++i)
- QVERIFY(children[i].isNull());
-}
-
-void tst_QSequentialAnimationGroup::groupWithZeroDurationAnimations()
-{
- QObject o;
- QObject o2;
-
- o.setProperty("myProperty", 42);
- o.setProperty("myOtherProperty", 13);
- o2.setProperty("myProperty", 42);
- o2.setProperty("myOtherProperty", 13);
-
- QSequentialAnimationGroup group;
-
- QVariantAnimation *a1 = new QPropertyAnimation(&o, "myProperty");
- a1->setDuration(0);
- a1->setEndValue(43);
- group.addAnimation(a1);
-
- //this should just run fine and change nothing
- group.setCurrentTime(0);
- QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(a1));
-
- QVariantAnimation *a2 = new QPropertyAnimation(&o2, "myOtherProperty");
- a2->setDuration(500);
- a2->setEndValue(31);
- group.addAnimation(a2);
-
- QVariantAnimation *a3 = new QPropertyAnimation(&o, "myProperty");
- a3->setDuration(0);
- a3->setEndValue(44);
- group.addAnimation(a3);
-
- QVariantAnimation *a4 = new QPropertyAnimation(&o, "myOtherProperty");
- a4->setDuration(250);
- a4->setEndValue(75);
- group.addAnimation(a4);
-
- QVariantAnimation *a5 = new QPropertyAnimation(&o2, "myProperty");
- a5->setDuration(0);
- a5->setEndValue(12);
- group.addAnimation(a5);
-
- QCOMPARE(o.property("myProperty").toInt(), 42);
- QCOMPARE(o.property("myOtherProperty").toInt(), 13);
- QCOMPARE(o2.property("myProperty").toInt(), 42);
- QCOMPARE(o2.property("myOtherProperty").toInt(), 13);
-
-
- group.start();
-
- QCOMPARE(o.property("myProperty").toInt(), 43);
- QCOMPARE(o.property("myOtherProperty").toInt(), 13);
- QCOMPARE(o2.property("myProperty").toInt(), 42);
- QCOMPARE(o2.property("myOtherProperty").toInt(), 13);
-
- QTest::qWait(100);
-
- int o2val = o2.property("myOtherProperty").toInt();
- QVERIFY(o2val > 13);
- QVERIFY(o2val < 31);
- QCOMPARE(o.property("myProperty").toInt(), 43);
- QCOMPARE(o.property("myOtherProperty").toInt(), 13);
-
- QTest::qWait(500);
-
- QTRY_COMPARE(o.property("myProperty").toInt(), 44);
- QCOMPARE(o2.property("myProperty").toInt(), 42);
- QCOMPARE(o2.property("myOtherProperty").toInt(), 31);
- QCOMPARE(a1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a3->state(), QAnimationGroup::Stopped);
- QCOMPARE(a4->state(), QAnimationGroup::Running);
- QCOMPARE(a5->state(), QAnimationGroup::Stopped);
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QTest::qWait(500);
-
- QTRY_COMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(o.property("myProperty").toInt(), 44);
- QCOMPARE(o.property("myOtherProperty").toInt(), 75);
- QCOMPARE(o2.property("myProperty").toInt(), 12);
- QCOMPARE(o2.property("myOtherProperty").toInt(), 31);
- QCOMPARE(a1->state(), QAnimationGroup::Stopped);
- QCOMPARE(a2->state(), QAnimationGroup::Stopped);
- QCOMPARE(a3->state(), QAnimationGroup::Stopped);
- QCOMPARE(a4->state(), QAnimationGroup::Stopped);
- QCOMPARE(a5->state(), QAnimationGroup::Stopped);
-}
-
-void tst_QSequentialAnimationGroup::propagateGroupUpdateToChildren()
-{
- // this test verifies if group state changes are updating its children correctly
- QSequentialAnimationGroup group;
-
- QObject o;
- o.setProperty("ole", 42);
- QCOMPARE(o.property("ole").toInt(), 42);
-
- QPropertyAnimation anim1(&o, "ole");
- anim1.setEndValue(43);
- anim1.setDuration(100);
- QVERIFY(!anim1.currentValue().isValid());
- QCOMPARE(anim1.currentValue().toInt(), 0);
- QCOMPARE(o.property("ole").toInt(), 42);
-
- TestAnimation anim2;
- anim2.setStartValue(0);
- anim2.setEndValue(100);
- anim2.setDuration(200);
-
- QVERIFY(anim2.currentValue().isValid());
- QCOMPARE(anim2.currentValue().toInt(), 0);
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
-
- group.addAnimation(&anim1);
- group.addAnimation(&anim2);
-
- group.start();
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(anim1.state(), QAnimationGroup::Running);
- QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
-
- group.pause();
-
- QCOMPARE(group.state(), QAnimationGroup::Paused);
- QCOMPARE(anim1.state(), QAnimationGroup::Paused);
- QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
-
- group.stop();
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
-}
-
-void tst_QSequentialAnimationGroup::updateChildrenWithRunningGroup()
-{
- // assert that its possible to modify a child's state directly while their group is running
- QSequentialAnimationGroup group;
-
- TestAnimation anim;
- anim.setStartValue(0);
- anim.setEndValue(100);
- anim.setDuration(200);
-
- QSignalSpy groupStateChangedSpy(&group, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QSignalSpy childStateChangedSpy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
-
- QCOMPARE(groupStateChangedSpy.count(), 0);
- QCOMPARE(childStateChangedSpy.count(), 0);
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim.state(), QAnimationGroup::Stopped);
-
- group.addAnimation(&anim);
-
- group.start();
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(anim.state(), QAnimationGroup::Running);
-
- QCOMPARE(groupStateChangedSpy.count(), 1);
- QCOMPARE(childStateChangedSpy.count(), 1);
-
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(0).first()),
- QAnimationGroup::Running);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(childStateChangedSpy.at(0).first()),
- QAnimationGroup::Running);
-
- // starting directly a running child will not have any effect
- anim.start();
-
- QCOMPARE(groupStateChangedSpy.count(), 1);
- QCOMPARE(childStateChangedSpy.count(), 1);
-
- anim.pause();
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(anim.state(), QAnimationGroup::Paused);
-
- // in the animation stops directly, the group will still be running
- anim.stop();
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(anim.state(), QAnimationGroup::Stopped);
-}
-
-void tst_QSequentialAnimationGroup::deleteChildrenWithRunningGroup()
-{
- // test if children can be activated when their group is stopped
- QSequentialAnimationGroup group;
-
- QVariantAnimation *anim1 = new TestAnimation;
- anim1->setStartValue(0);
- anim1->setEndValue(100);
- anim1->setDuration(200);
- group.addAnimation(anim1);
-
- QCOMPARE(group.duration(), anim1->duration());
-
- group.start();
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(anim1->state(), QAnimationGroup::Running);
-
- QTest::qWait(100);
- QTRY_VERIFY(group.currentLoopTime() > 0);
-
- delete anim1;
- QCOMPARE(group.animationCount(), 0);
- QCOMPARE(group.duration(), 0);
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(group.currentLoopTime(), 0); //that's the invariant
-}
-
-void tst_QSequentialAnimationGroup::startChildrenWithStoppedGroup()
-{
- // test if children can be activated when their group is stopped
- QSequentialAnimationGroup group;
-
- TestAnimation anim1;
- anim1.setStartValue(0);
- anim1.setEndValue(100);
- anim1.setDuration(200);
-
- TestAnimation anim2;
- anim2.setStartValue(0);
- anim2.setEndValue(100);
- anim2.setDuration(200);
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
-
- group.addAnimation(&anim1);
- group.addAnimation(&anim2);
-
- group.stop();
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
-
- anim1.start();
- anim2.start();
- anim2.pause();
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1.state(), QAnimationGroup::Running);
- QCOMPARE(anim2.state(), QAnimationGroup::Paused);
-}
-
-void tst_QSequentialAnimationGroup::stopGroupWithRunningChild()
-{
- // children that started independently will not be affected by a group stop
- QSequentialAnimationGroup group;
-
- TestAnimation anim1;
- anim1.setStartValue(0);
- anim1.setEndValue(100);
- anim1.setDuration(200);
-
- TestAnimation anim2;
- anim2.setStartValue(0);
- anim2.setEndValue(100);
- anim2.setDuration(200);
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
-
- group.addAnimation(&anim1);
- group.addAnimation(&anim2);
-
- anim1.start();
- anim2.start();
- anim2.pause();
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1.state(), QAnimationGroup::Running);
- QCOMPARE(anim2.state(), QAnimationGroup::Paused);
-
- group.stop();
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1.state(), QAnimationGroup::Running);
- QCOMPARE(anim2.state(), QAnimationGroup::Paused);
-
- anim1.stop();
- anim2.stop();
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
-}
-
-void tst_QSequentialAnimationGroup::startGroupWithRunningChild()
-{
- // as the group has precedence over its children, starting a group will restart all the children
- QSequentialAnimationGroup group;
-
- TestAnimation *anim1 = new TestAnimation();
- anim1->setStartValue(0);
- anim1->setEndValue(100);
- anim1->setDuration(200);
-
- TestAnimation *anim2 = new TestAnimation();
- anim2->setStartValue(0);
- anim2->setEndValue(100);
- anim2->setDuration(200);
-
- QSignalSpy stateChangedSpy1(anim1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QSignalSpy stateChangedSpy2(anim2, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
-
- QCOMPARE(stateChangedSpy1.count(), 0);
- QCOMPARE(stateChangedSpy2.count(), 0);
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
- QCOMPARE(anim2->state(), QAnimationGroup::Stopped);
-
- group.addAnimation(anim1);
- group.addAnimation(anim2);
-
- anim1->start();
- anim2->start();
- anim2->pause();
-
- QVERIFY(compareStates(stateChangedSpy1, (StateList() << QAbstractAnimation::Running)));
-
- QVERIFY(compareStates(stateChangedSpy2, (StateList() << QAbstractAnimation::Running
- << QAbstractAnimation::Paused)));
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1->state(), QAnimationGroup::Running);
- QCOMPARE(anim2->state(), QAnimationGroup::Paused);
-
- group.start();
-
- QVERIFY(compareStates(stateChangedSpy1, (StateList() << QAbstractAnimation::Running
- << QAbstractAnimation::Stopped
- << QAbstractAnimation::Running)));
- QVERIFY(compareStates(stateChangedSpy2, (StateList() << QAbstractAnimation::Running
- << QAbstractAnimation::Paused)));
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(anim1->state(), QAnimationGroup::Running);
- QCOMPARE(anim2->state(), QAnimationGroup::Paused);
-
- QTest::qWait(300);
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
- QCOMPARE(anim2->state(), QAnimationGroup::Running);
-
- QCOMPARE(stateChangedSpy2.count(), 4);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(2).first()),
- QAnimationGroup::Stopped);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(3).first()),
- QAnimationGroup::Running);
-
- group.stop();
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
- QCOMPARE(anim2->state(), QAnimationGroup::Stopped);
-}
-
-void tst_QSequentialAnimationGroup::zeroDurationAnimation()
-{
- QSequentialAnimationGroup group;
-
- TestAnimation *anim1 = new TestAnimation();
- anim1->setStartValue(0);
- anim1->setEndValue(100);
- anim1->setDuration(0);
-
- TestAnimation *anim2 = new TestAnimation();
- anim2->setStartValue(0);
- anim2->setEndValue(100);
- anim2->setDuration(100);
-
- DummyPropertyAnimation *anim3 = new DummyPropertyAnimation;
- anim3->setEndValue(100);
- anim3->setDuration(0);
-
- QSignalSpy stateChangedSpy(anim1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
-
- group.addAnimation(anim1);
- group.addAnimation(anim2);
- group.addAnimation(anim3);
- group.setLoopCount(2);
- group.start();
-
- QCOMPARE(stateChangedSpy.count(), 2);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(0).first()),
- QAnimationGroup::Running);
- QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(1).first()),
- QAnimationGroup::Stopped);
-
- QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
- QCOMPARE(anim2->state(), QAnimationGroup::Running);
- QCOMPARE(group.state(), QAnimationGroup::Running);
-
- //now let's try to seek to the next loop
- group.setCurrentTime(group.duration() + 1);
- QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
- QCOMPARE(anim2->state(), QAnimationGroup::Running);
- QCOMPARE(anim3->state(), QAnimationGroup::Stopped);
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(anim3->o.value(), 100); //anim3 should have been run
-}
-
-void tst_QSequentialAnimationGroup::stopUncontrolledAnimations()
-{
- QSequentialAnimationGroup group;
-
- AnimationObject o1;
- UncontrolledAnimation notTimeDriven(&o1);
- QCOMPARE(notTimeDriven.totalDuration(), -1);
-
- TestAnimation loopsForever;
- loopsForever.setStartValue(0);
- loopsForever.setEndValue(100);
- loopsForever.setDuration(100);
- loopsForever.setLoopCount(-1);
-
- group.addAnimation(&notTimeDriven);
- group.addAnimation(&loopsForever);
-
- group.start();
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running);
- QCOMPARE(loopsForever.state(), QAnimationGroup::Stopped);
-
- notTimeDriven.stop();
-
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
- QCOMPARE(loopsForever.state(), QAnimationGroup::Running);
-
- loopsForever.stop();
-
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
- QCOMPARE(loopsForever.state(), QAnimationGroup::Stopped);
-}
-
-void tst_QSequentialAnimationGroup::finishWithUncontrolledAnimation()
-{
- AnimationObject o1;
-
- //1st case:
- //first we test a group with one uncontrolled animation
- QSequentialAnimationGroup group;
- UncontrolledAnimation notTimeDriven(&o1, &group);
- QSignalSpy spy(&group, SIGNAL(finished()));
-
- group.start();
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running);
- QCOMPARE(group.currentLoopTime(), 0);
- QCOMPARE(notTimeDriven.currentLoopTime(), 0);
-
- QTest::qWait(300); //wait for the end of notTimeDriven
- QTRY_COMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
- const int actualDuration = notTimeDriven.currentLoopTime();
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(group.currentLoopTime(), actualDuration);
- QCOMPARE(spy.count(), 1);
-
- //2nd case:
- // lets make sure the seeking will work again
- spy.clear();
- DummyPropertyAnimation anim(&group);
- QSignalSpy animStateChangedSpy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
-
- group.setCurrentTime(300);
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
- QCOMPARE(notTimeDriven.currentLoopTime(), actualDuration);
- QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
-
- //3rd case:
- //now let's add a perfectly defined animation at the end
- QCOMPARE(animStateChangedSpy.count(), 0);
- group.start();
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running);
- QCOMPARE(group.currentLoopTime(), 0);
- QCOMPARE(notTimeDriven.currentLoopTime(), 0);
-
- QCOMPARE(animStateChangedSpy.count(), 0);
-
- QTest::qWait(300); //wait for the end of notTimeDriven
- QTRY_COMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(anim.state(), QAnimationGroup::Running);
- QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
- QCOMPARE(animStateChangedSpy.count(), 1);
- QTest::qWait(300); //wait for the end of anim
-
- QTRY_COMPARE(anim.state(), QAnimationGroup::Stopped);
- QCOMPARE(anim.currentLoopTime(), anim.duration());
-
- //we should simply be at the end
- QCOMPARE(spy.count(), 1);
- QCOMPARE(animStateChangedSpy.count(), 2);
- QCOMPARE(group.currentLoopTime(), notTimeDriven.currentLoopTime() + anim.currentLoopTime());
-}
-
-void tst_QSequentialAnimationGroup::addRemoveAnimation()
-{
- //this test is specific to the sequential animation group
- QSequentialAnimationGroup group;
-
- QCOMPARE(group.duration(), 0);
- QCOMPARE(group.currentLoopTime(), 0);
- QAbstractAnimation *anim1 = new QPropertyAnimation;
- group.addAnimation(anim1);
- QCOMPARE(group.duration(), 250);
- QCOMPARE(group.currentLoopTime(), 0);
- QCOMPARE(group.currentAnimation(), anim1);
-
- //let's append an animation
- QAbstractAnimation *anim2 = new QPropertyAnimation;
- group.addAnimation(anim2);
- QCOMPARE(group.duration(), 500);
- QCOMPARE(group.currentLoopTime(), 0);
- QCOMPARE(group.currentAnimation(), anim1);
-
- //let's prepend an animation
- QAbstractAnimation *anim0 = new QPropertyAnimation;
- group.insertAnimation(0, anim0);
- QCOMPARE(group.duration(), 750);
- QCOMPARE(group.currentLoopTime(), 0);
- QCOMPARE(group.currentAnimation(), anim0); //anim0 has become the new currentAnimation
-
- group.setCurrentTime(300); //anim0 | anim1 | anim2
- QCOMPARE(group.currentLoopTime(), 300);
- QCOMPARE(group.currentAnimation(), anim1);
- QCOMPARE(anim1->currentLoopTime(), 50);
-
- group.removeAnimation(anim0); //anim1 | anim2
- QCOMPARE(group.currentLoopTime(), 50);
- QCOMPARE(group.currentAnimation(), anim1);
- QCOMPARE(anim1->currentLoopTime(), 50);
-
- group.setCurrentTime(0);
- group.insertAnimation(0, anim0); //anim0 | anim1 | anim2
- group.setCurrentTime(300);
- QCOMPARE(group.currentLoopTime(), 300);
- QCOMPARE(group.currentAnimation(), anim1);
- QCOMPARE(anim1->currentLoopTime(), 50);
-
- group.removeAnimation(anim1); //anim0 | anim2
- QCOMPARE(group.currentLoopTime(), 250);
- QCOMPARE(group.currentAnimation(), anim2);
- QCOMPARE(anim0->currentLoopTime(), 250);
-}
-
-void tst_QSequentialAnimationGroup::currentAnimation()
-{
- QSequentialAnimationGroup group;
- QVERIFY(group.currentAnimation() == 0);
-
- QPropertyAnimation anim;
- anim.setDuration(0);
- group.addAnimation(&anim);
- QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
-}
-
-void tst_QSequentialAnimationGroup::currentAnimationWithZeroDuration()
-{
- QSequentialAnimationGroup group;
- QVERIFY(group.currentAnimation() == 0);
-
- QPropertyAnimation zero1;
- zero1.setDuration(0);
- QPropertyAnimation zero2;
- zero2.setDuration(0);
-
- QPropertyAnimation anim;
-
- QPropertyAnimation zero3;
- zero3.setDuration(0);
- QPropertyAnimation zero4;
- zero4.setDuration(0);
-
-
- group.addAnimation(&zero1);
- group.addAnimation(&zero2);
- group.addAnimation(&anim);
- group.addAnimation(&zero3);
- group.addAnimation(&zero4);
-
- QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&zero1));
-
- group.setCurrentTime(0);
- QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
-
- group.setCurrentTime(group.duration());
- QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&zero4));
-
- group.setDirection(QAbstractAnimation::Backward);
-
- group.setCurrentTime(0);
- QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&zero1));
-
- group.setCurrentTime(group.duration());
- QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
-}
-
-void tst_QSequentialAnimationGroup::insertAnimation()
-{
- QSequentialAnimationGroup group;
- group.setLoopCount(2);
- QPropertyAnimation *anim = new DummyPropertyAnimation(&group);
- QCOMPARE(group.duration(), anim->duration());
- group.setCurrentTime(300);
- QCOMPARE(group.currentLoop(), 1);
-
- //this will crash if the sequential group calls duration on the created animation
- new QPropertyAnimation(&group);
-}
-
-
-class SequentialAnimationGroup : public QSequentialAnimationGroup
-{
- Q_OBJECT
-public slots:
- void clear()
- {
- QSequentialAnimationGroup::clear();
- }
-
- void refill()
- {
- stop();
- clear();
- new DummyPropertyAnimation(this);
- start();
- }
-
-};
-
-
-void tst_QSequentialAnimationGroup::clear()
-{
- SequentialAnimationGroup group;
- QPointer<QAbstractAnimation> anim1 = new DummyPropertyAnimation(&group);
- group.connect(anim1, SIGNAL(finished()), SLOT(clear()));
- new DummyPropertyAnimation(&group);
- QCOMPARE(group.animationCount(), 2);
-
- group.start();
- QTest::qWait(anim1->duration() + 100);
- QTRY_COMPARE(group.animationCount(), 0);
- QCOMPARE(group.state(), QAbstractAnimation::Stopped);
- QCOMPARE(group.currentLoopTime(), 0);
-
- anim1 = new DummyPropertyAnimation(&group);
- group.connect(anim1, SIGNAL(finished()), SLOT(refill()));
- group.start();
- QTest::qWait(anim1->duration() + 100);
- QTRY_COMPARE(group.state(), QAbstractAnimation::Running);
- QVERIFY(anim1 == 0); //anim1 should have been deleted
-}
-
-void tst_QSequentialAnimationGroup::pauseResume()
-{
- QObject dummy;
- dummy.setProperty("foo", 0);
- QParallelAnimationGroup group;
- QPropertyAnimation *anim = new QPropertyAnimation(&dummy, "foo", &group);
- anim->setDuration(250);
- anim->setEndValue(250);
- QSignalSpy spy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
- QCOMPARE(group.duration(), 250);
- group.start();
- QTest::qWait(100);
- QTRY_COMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(anim->state(), QAnimationGroup::Running);
- QCOMPARE(spy.count(), 1);
- spy.clear();
- const int currentTime = group.currentLoopTime();
- QCOMPARE(anim->currentLoopTime(), currentTime);
-
- group.pause();
- QCOMPARE(group.state(), QAnimationGroup::Paused);
- QCOMPARE(group.currentLoopTime(), currentTime);
- QCOMPARE(anim->state(), QAnimationGroup::Paused);
- QCOMPARE(anim->currentLoopTime(), currentTime);
- QCOMPARE(spy.count(), 1);
- spy.clear();
-
- group.resume();
- QCOMPARE(group.state(), QAnimationGroup::Running);
- QCOMPARE(group.currentLoopTime(), currentTime);
- QCOMPARE(anim->state(), QAnimationGroup::Running);
- QCOMPARE(anim->currentLoopTime(), currentTime);
- QCOMPARE(spy.count(), 1);
-}
-
-QTEST_MAIN(tst_QSequentialAnimationGroup)
-#include "tst_qsequentialanimationgroup.moc"
diff --git a/tests/auto/qsettings/tst_qsettings.cpp b/tests/auto/qsettings/tst_qsettings.cpp
deleted file mode 100644
index 1887aff846..0000000000
--- a/tests/auto/qsettings/tst_qsettings.cpp
+++ /dev/null
@@ -1,3179 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <qdebug.h>
-#include <QtTest/QtTest>
-
-#include <QtCore/QSettings>
-#include <private/qsettings_p.h>
-//#include <QtGui/QApplication>
-#include <QtCore/QCoreApplication>
-#include <QtCore/QtGlobal>
-#include <QtCore/QMetaType>
-#include <QtCore/QtDebug>
-#include <QtCore/QString>
-#include "../../shared/util.h"
-
-#if !defined(Q_OS_SYMBIAN)
-# include <cctype>
-#endif
-#if defined(Q_OS_WIN) && defined(Q_CC_GNU)
-// need for unlink on mingw
-#include <io.h>
-#endif
-
-#if defined(Q_OS_WIN)
-#include <QtCore/qt_windows.h>
-#endif
-
-#ifndef QSETTINGS_P_H_VERSION
-#define QSETTINGS_P_H_VERSION 1
-#endif
-
-//TESTED_FILES=
-
-QT_FORWARD_DECLARE_CLASS(QSettings)
-QT_FORWARD_DECLARE_CLASS(QSettings)
-
-class tst_QSettings : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QSettings();
-
-public slots:
- void init();
- void cleanup();
-private slots:
- void getSetCheck();
- void ctor_data();
- void ctor();
- void beginGroup();
- void setValue();
- void remove();
- void contains();
- void sync();
- void setFallbacksEnabled();
- void setFallbacksEnabled_data();
- void fromFile_data();
- void fromFile();
- void setIniCodec();
- void testArrays_data();
- void testArrays();
- void testEscapes();
- void testCaseSensitivity_data();
- void testCaseSensitivity();
- void testErrorHandling_data();
- void testErrorHandling();
- void testIniParsing_data();
- void testIniParsing();
- void testChildKeysAndGroups_data();
- void testChildKeysAndGroups();
- void testUpdateRequestEvent();
- void testThreadSafety();
- void testNormalizedKey_data();
- void testNormalizedKey();
- void testEmptyData();
- void testResourceFiles();
- void fileName();
- void isWritable_data();
- void isWritable();
- void childGroups_data();
- void childGroups();
- void childKeys_data();
- void childKeys();
- void allKeys_data();
- void allKeys();
- void registerFormat();
- void setPath();
- void setDefaultFormat();
- void dontCreateNeedlessPaths();
-#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
- void dontReorderIniKeysNeedlessly();
-#endif
-#if defined(Q_OS_WIN)
- void qtbug_13249();
-#endif
-
- void testVariantTypes_data();
- void testVariantTypes();
- void rainersSyncBugOnMac_data();
- void rainersSyncBugOnMac();
- void recursionBug();
-
- void testByteArray_data();
- void testByteArray();
-
-private:
- void oldWriteEntry_data();
- void oldReadEntry_data();
- void oldWriteEntryHelper(QSettings &settings);
- void oldReadEntryHelper(QSettings &settings);
-};
-
-// Testing get/set functions
-void tst_QSettings::getSetCheck()
-{
- QSettings obj1;
- // bool QSettings::fallbacksEnabled()
- // void QSettings::setFallbacksEnabled(bool)
- obj1.setFallbacksEnabled(false);
- QCOMPARE(false, obj1.fallbacksEnabled());
- obj1.setFallbacksEnabled(true);
- QCOMPARE(true, obj1.fallbacksEnabled());
-}
-
-//using namespace std;
-
-//#include <qapplication.h>
-#include <qcoreapplication.h>
-#include <qdir.h>
-#include <qregexp.h>
-#include <qthread.h>
-#include <stdlib.h>
-#ifndef Q_OS_WIN
-#include <unistd.h>
-#endif
-
-Q_DECLARE_METATYPE(QSettings::Format)
-
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
-static void removePath(const QString& _path)
-{
- QString path = _path;
- QDir dir(path);
- if (!dir.exists())
- return;
- QStringList entries = dir.entryList();
- foreach(QString name, entries) {
- QString absolute = path + name;
- if (QFileInfo(absolute).isDir())
- removePath(absolute+"\\");
- else
- QFile::remove(absolute);
- }
- dir.cdUp();
- if (path[path.size()-1] == '\\')
- path = path.left(path.size()-1);
- dir.rmdir(path.mid(path.lastIndexOf('\\')+1));
-}
-#endif
-
-static QString settingsPath(const char *path = "")
-{
- // Temporary path for files that are specified explictly in the constructor.
- QString tempPath = QDir::tempPath();
- if (tempPath.endsWith("/"))
- tempPath.truncate(tempPath.size() - 1);
- return QDir::toNativeSeparators(tempPath + "/tst_QSettings/" + QLatin1String(path));
-}
-
-static bool readCustom1File(QIODevice &device, QSettings::SettingsMap &map)
-{
- QDataStream in(&device);
- quint32 magic;
- in >> magic;
- in >> map;
- return (magic == 0x01010101 && in.status() == QDataStream::Ok);
-}
-
-static bool writeCustom1File(QIODevice &device, const QSettings::SettingsMap &map)
-{
- QDataStream out(&device);
- out << quint32(0x01010101);
- out << map;
- return out.status() == QDataStream::Ok;
-}
-
-static bool readCustom2File(QIODevice &device, QSettings::SettingsMap &map)
-{
- QDataStream in(&device);
- quint64 magic;
- in >> magic;
- in >> map;
- return (magic == Q_UINT64_C(0x0202020202020202) && in.status() == QDataStream::Ok);
-}
-
-static bool writeCustom2File(QIODevice &device, const QSettings::SettingsMap &map)
-{
- QDataStream out(&device);
- out << Q_UINT64_C(0x0202020202020202);
- out << map;
- return out.status() == QDataStream::Ok;
-}
-
-static bool readCustom3File(QIODevice &device, QSettings::SettingsMap &map)
-{
- QTextStream in(&device);
- QString tag;
- in >> tag;
- if (tag == "OK") {
- map.insert("retval", "OK");
- return true;
- } else {
- return false;
- }
-}
-
-static bool writeCustom3File(QIODevice &device, const QSettings::SettingsMap &map)
-{
- QTextStream out(&device);
- if (map.value("retval") != "OK")
- return false;
-
- out << "OK";
- return true;
-}
-
-static void populateWithFormats()
-{
- QTest::addColumn<QSettings::Format>("format");
-
- QTest::newRow("native") << QSettings::NativeFormat;
- QTest::newRow("ini") << QSettings::IniFormat;
- QTest::newRow("custom1") << QSettings::CustomFormat1;
- QTest::newRow("custom2") << QSettings::CustomFormat2;
-}
-
-tst_QSettings::tst_QSettings()
-{
- QSettings::Format custom1 = QSettings::registerFormat("custom1", readCustom1File, writeCustom1File);
- QSettings::Format custom2 = QSettings::registerFormat("custom2", readCustom2File, writeCustom2File
-#ifndef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
- , Qt::CaseInsensitive
-#endif
- );
- QVERIFY(custom1 == QSettings::CustomFormat1);
- QVERIFY(custom2 == QSettings::CustomFormat2);
-}
-
-void tst_QSettings::init()
-{
- QSettings::setSystemIniPath(settingsPath("__system__"));
- QSettings::setUserIniPath(settingsPath("__user__"));
-
-#if defined(Q_OS_WIN)
- QSettings("HKEY_CURRENT_USER\\Software\\software.org", QSettings::NativeFormat).clear();
- QSettings("HKEY_LOCAL_MACHINE\\Software\\software.org", QSettings::NativeFormat).clear();
- QSettings("HKEY_CURRENT_USER\\Software\\other.software.org", QSettings::NativeFormat).clear();
- QSettings("HKEY_LOCAL_MACHINE\\Software\\other.software.org", QSettings::NativeFormat).clear();
- QSettings("HKEY_CURRENT_USER\\Software\\foo", QSettings::NativeFormat).clear();
- QSettings("HKEY_CURRENT_USER\\Software\\bar", QSettings::NativeFormat).clear();
- QSettings("HKEY_CURRENT_USER\\Software\\bat", QSettings::NativeFormat).clear();
- QSettings("HKEY_CURRENT_USER\\Software\\baz", QSettings::NativeFormat).clear();
- QSettings("HKEY_LOCAL_MACHINE\\Software\\foo", QSettings::NativeFormat).clear();
- QSettings("HKEY_LOCAL_MACHINE\\Software\\bar", QSettings::NativeFormat).clear();
- QSettings("HKEY_LOCAL_MACHINE\\Software\\bat", QSettings::NativeFormat).clear();
- QSettings("HKEY_LOCAL_MACHINE\\Software\\baz", QSettings::NativeFormat).clear();
- if (QDir(settingsPath()).exists()) {
-#if defined(Q_OS_WINCE)
- removePath(settingsPath());
-#else
- if (QSysInfo::windowsVersion() & QSysInfo::WV_NT_based)
- system(QString("rmdir /Q /S %1").arg(settingsPath()).toLatin1());
- else
- system(QString("deltree /Y %1").arg(settingsPath()).toLatin1());
-#endif
- }
-#elif defined(Q_OS_DARWIN)
- QSettings(QSettings::UserScope, "software.org", "KillerAPP").clear();
- QSettings(QSettings::SystemScope, "software.org", "KillerAPP").clear();
- QSettings(QSettings::UserScope, "other.software.org", "KillerAPP").clear();
- QSettings(QSettings::SystemScope, "other.software.org", "KillerAPP").clear();
- QSettings(QSettings::UserScope, "software.org").clear();
- QSettings(QSettings::SystemScope, "software.org").clear();
- QSettings(QSettings::UserScope, "other.software.org").clear();
- QSettings(QSettings::SystemScope, "other.software.org").clear();
-#elif defined(Q_OS_SYMBIAN)
- removePath(settingsPath());
-#endif
-
-#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
- system(QString("chmod -R u+rw %1 2> /dev/null").arg(settingsPath()).toLatin1());
- system(QString("rm -fr %1 2> /dev/null").arg(settingsPath()).toLatin1());
-#endif
-
- QFile::remove("foo");
-}
-
-void tst_QSettings::cleanup()
-{
- init();
-}
-
-/*
- Test the constructors and the assignment operator.
-*/
-
-void tst_QSettings::ctor_data()
-{
- populateWithFormats();
-}
-
-void tst_QSettings::ctor()
-{
- QFETCH(QSettings::Format, format);
-
- {
- QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
- QSettings settings2(format, QSettings::UserScope, "software.org");
- QSettings settings3(format, QSettings::SystemScope, "software.org", "KillerAPP");
- QSettings settings4(format, QSettings::SystemScope, "software.org");
-
- QSettings settings5(format, QSettings::UserScope, "software.org", "KillerAPP");
- QSettings settings6(format, QSettings::UserScope, "software.org");
- QSettings settings7(format, QSettings::SystemScope, "software.org", "KillerAPP");
- QSettings settings8(format, QSettings::SystemScope, "software.org");
-
- // test QSettings::format() while we're at it
- QVERIFY(settings1.format() == format);
- QVERIFY(settings2.format() == format);
- QVERIFY(settings3.format() == format);
- QVERIFY(settings4.format() == format);
-
- // test QSettings::scope() while we're at it
- QVERIFY(settings1.scope() == QSettings::UserScope);
- QVERIFY(settings2.scope() == QSettings::UserScope);
- QVERIFY(settings3.scope() == QSettings::SystemScope);
- QVERIFY(settings4.scope() == QSettings::SystemScope);
-
- // test QSettings::organizationName() while we're at it
- QVERIFY(settings1.organizationName() == "software.org");
- QVERIFY(settings2.organizationName() == "software.org");
- QVERIFY(settings3.organizationName() == "software.org");
- QVERIFY(settings4.organizationName() == "software.org");
-
- // test QSettings::applicationName() while we're at it
- QCOMPARE(settings1.applicationName(), QString("KillerAPP"));
- QVERIFY(settings2.applicationName().isEmpty());
- QVERIFY(settings3.applicationName() == "KillerAPP");
- QVERIFY(settings4.applicationName().isEmpty());
-
- /*
- Go forwards.
- */
- settings4.setValue("key 1", QString("doodah"));
-
- QCOMPARE(settings1.value("key 1").toString(), QString("doodah"));
- QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
- QCOMPARE(settings3.value("key 1").toString(), QString("doodah"));
- QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
-
- settings3.setValue("key 1", QString("blah"));
- QCOMPARE(settings1.value("key 1").toString(), QString("blah"));
- QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
- QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
- QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
-
- settings2.setValue("key 1", QString("whoa"));
- QCOMPARE(settings1.value("key 1").toString(), QString("whoa"));
- QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
- QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
- QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
-
- settings1.setValue("key 1", QString("gurgle"));
- QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
- QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
- QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
- QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
-
- /*
- Test the copies.
- */
- QCOMPARE(settings5.value("key 1").toString(), settings1.value("key 1").toString());
- QCOMPARE(settings6.value("key 1").toString(), settings2.value("key 1").toString());
- QCOMPARE(settings7.value("key 1").toString(), settings3.value("key 1").toString());
- QCOMPARE(settings8.value("key 1").toString(), settings4.value("key 1").toString());
-
- /*
- Go backwards.
- */
-
- settings2.setValue("key 1", QString("bilboh"));
- QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
- QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
- QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
- QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
-
- settings3.setValue("key 1", QString("catha"));
- QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
- QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
- QCOMPARE(settings3.value("key 1").toString(), QString("catha"));
- QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
-
- settings4.setValue("key 1", QString("quirko"));
- QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
- QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
- QCOMPARE(settings3.value("key 1").toString(), QString("catha"));
- QCOMPARE(settings4.value("key 1").toString(), QString("quirko"));
-
- /*
- Test the copies again.
- */
- QCOMPARE(settings5.value("key 1").toString(), settings1.value("key 1").toString());
- QCOMPARE(settings6.value("key 1").toString(), settings2.value("key 1").toString());
- QCOMPARE(settings7.value("key 1").toString(), settings3.value("key 1").toString());
- QCOMPARE(settings8.value("key 1").toString(), settings4.value("key 1").toString());
-
- /*
- "General" is a problem key for .ini files.
- */
- settings1.setValue("General", 1);
- settings1.setValue("%General", 2);
- settings1.setValue("alpha", 3);
- settings1.setValue("General/alpha", 4);
- settings1.setValue("%General/alpha", 5);
- settings1.setValue("alpha/General", 6);
- settings1.setValue("alpha/%General", 7);
- settings1.setValue("General/General", 8);
- settings1.setValue("General/%General", 9);
- settings1.setValue("%General/General", 10);
- settings1.setValue("%General/%General", 11);
- }
-
- {
- /*
- Test that the data was stored on disk after all instances
- of QSettings are destroyed.
- */
-
- QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
- QSettings settings2(format, QSettings::UserScope, "software.org");
- QSettings settings3(format, QSettings::SystemScope, "software.org", "KillerAPP");
- QSettings settings4(format, QSettings::SystemScope, "software.org");
-
- QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
- QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
- QCOMPARE(settings3.value("key 1").toString(), QString("catha"));
- QCOMPARE(settings4.value("key 1").toString(), QString("quirko"));
-
- /*
- Test problem keys.
- */
-
- QCOMPARE(settings1.value("General").toInt(), 1);
- QCOMPARE(settings1.value("%General").toInt(), 2);
- QCOMPARE(settings1.value("alpha").toInt(), 3);
- QCOMPARE(settings1.value("General/alpha").toInt(), 4);
- QCOMPARE(settings1.value("%General/alpha").toInt(), 5);
- QCOMPARE(settings1.value("alpha/General").toInt(), 6);
- QCOMPARE(settings1.value("alpha/%General").toInt(), 7);
- QCOMPARE(settings1.value("General/General").toInt(), 8);
- QCOMPARE(settings1.value("General/%General").toInt(), 9);
- QCOMPARE(settings1.value("%General/General").toInt(), 10);
- QCOMPARE(settings1.value("%General/%General").toInt(), 11);
-
- /*
- Test that the organization and product parameters is
- case-insensitive on Windows and Mac, case-sensitive on
- Unix.
- */
- QSettings settings5(format, QSettings::UserScope, "SoftWare.ORG", "killerApp");
- if (format == QSettings::NativeFormat) {
-#if defined(Q_OS_WIN) || defined(Q_OS_DARWIN) || defined(Q_OS_SYMBIAN)
- QCOMPARE(settings5.value("key 1").toString(), QString("gurgle"));
-#else
- QVERIFY(!settings5.contains("key 1"));
-#endif
- } else {
-#if defined(Q_OS_WIN) || defined(Q_OS_DARWIN) || defined(Q_OS_SYMBIAN)
- QCOMPARE(settings5.value("key 1").toString(), QString("gurgle"));
-#else
- QVERIFY(!settings5.contains("key 1"));
-#endif
- }
- }
-
- {
- QSettings settings1(settingsPath("custom/custom.conf"), QSettings::IniFormat);
- settings1.beginGroup("alpha/beta");
- settings1.setValue("geometry", -7);
- settings1.setValue("geometry/x", 1);
- settings1.setValue("geometry/y", 2);
- QSettings settings2(settingsPath("custom/custom.conf"), QSettings::IniFormat);
- settings1.setValue("geometry/width", 3);
- settings2.setValue("alpha/beta/geometry/height", 4);
- settings2.setValue("alpha/gamma/splitter", 5);
- settings1.endGroup();
-
- // test QSettings::scope() while we're at it
- QVERIFY(settings1.scope() == QSettings::UserScope);
-
- // test QSettings::organizationName() while we're at it
- QVERIFY(settings1.organizationName().isEmpty());
-
- // test QSettings::applicationName() while we're at it
- QVERIFY(settings1.organizationName().isEmpty());
-
- QSettings settings3(settingsPath("custom/custom2.conf"), QSettings::IniFormat);
- settings3.beginGroup("doodley/beta");
- settings3.setValue("geometry", -7);
- settings3.setValue("geometry/x", 1);
- settings3.setValue("geometry/y", 2);
- settings3.setValue("geometry/width", 3);
- settings3.setValue("geometry/height", 4);
- settings3.endGroup();
- settings3.setValue("alpha/gamma/splitter", 5);
-
- QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), -7);
- QCOMPARE(settings1.value("alpha/beta/geometry/x").toInt(), 1);
- QCOMPARE(settings1.value("alpha/beta/geometry/y").toInt(), 2);
- QCOMPARE(settings1.value("alpha/beta/geometry/width").toInt(), 3);
- QCOMPARE(settings1.value("alpha/beta/geometry/height").toInt(), 4);
- QCOMPARE(settings1.value("alpha/gamma/splitter").toInt(), 5);
- QCOMPARE(settings1.allKeys().count(), 6);
-
- QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), -7);
- QCOMPARE(settings2.value("alpha/beta/geometry/x").toInt(), 1);
- QCOMPARE(settings2.value("alpha/beta/geometry/y").toInt(), 2);
- QCOMPARE(settings2.value("alpha/beta/geometry/width").toInt(), 3);
- QCOMPARE(settings2.value("alpha/beta/geometry/height").toInt(), 4);
- QCOMPARE(settings2.value("alpha/gamma/splitter").toInt(), 5);
- QCOMPARE(settings2.allKeys().count(), 6);
- }
-
- {
- QSettings settings1(settingsPath("custom/custom.conf"), QSettings::IniFormat);
- QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), -7);
- QCOMPARE(settings1.value("alpha/beta/geometry/x").toInt(), 1);
- QCOMPARE(settings1.value("alpha/beta/geometry/y").toInt(), 2);
- QCOMPARE(settings1.value("alpha/beta/geometry/width").toInt(), 3);
- QCOMPARE(settings1.value("alpha/beta/geometry/height").toInt(), 4);
- QCOMPARE(settings1.value("alpha/gamma/splitter").toInt(), 5);
- QCOMPARE(settings1.allKeys().count(), 6);
- }
-
- {
- // QSettings's default constructor is native by default
- if (format == QSettings::NativeFormat) {
- QCoreApplication::instance()->setOrganizationName("");
- QCoreApplication::instance()->setApplicationName("");
- QSettings settings;
- QCOMPARE(settings.status(), QSettings::AccessError);
- QCoreApplication::instance()->setOrganizationName("software.org");
- QCoreApplication::instance()->setApplicationName("KillerAPP");
- QSettings settings2;
- QCOMPARE(settings2.status(), QSettings::NoError);
- QSettings settings3("software.org", "KillerAPP");
- QCOMPARE(settings2.fileName(), settings3.fileName());
- QCoreApplication::instance()->setOrganizationName("");
- QCoreApplication::instance()->setApplicationName("");
- }
-
- QSettings settings(format, QSettings::UserScope, "", "");
- QCOMPARE(settings.status(), QSettings::AccessError);
- QSettings settings2(format, QSettings::UserScope, "software.org", "KillerAPP");
- QCOMPARE(settings2.status(), QSettings::NoError);
-
- // test QSettings::format() while we're at it
- QVERIFY(settings.format() == format);
- QVERIFY(settings2.format() == format);
-
- // test QSettings::scope() while we're at it
- QVERIFY(settings.scope() == QSettings::UserScope);
- QVERIFY(settings2.scope() == QSettings::UserScope);
-
- // test QSettings::organizationName() while we're at it
- QVERIFY(settings.organizationName().isEmpty());
- QVERIFY(settings2.organizationName() == "software.org");
-
- // test QSettings::applicationName() while we're at it
- QVERIFY(settings.applicationName().isEmpty());
- QVERIFY(settings2.applicationName() == "KillerAPP");
- }
-}
-
-void tst_QSettings::testByteArray_data()
-{
- QTest::addColumn<QByteArray>("data");
-
- QByteArray bytes("Hello world!");
-
- QTest::newRow("latin1") << bytes;
-#ifndef QT_NO_COMPRESS
- QTest::newRow("compressed") << qCompress(bytes);
-#endif
- QTest::newRow("with \\0") << bytes + '\0' + bytes;
-}
-
-void tst_QSettings::testByteArray()
-{
- QFETCH(QByteArray, data);
-
- // write
- {
- QSettings settings("Trolltech", "tst_qsettings");
- settings.setValue("byteArray", data);
- }
- // read
- {
- QSettings settings("Trolltech", "tst_qsettings");
- QByteArray ret = settings.value("byteArray", data).toByteArray();
- QCOMPARE(ret, data);
- }
-}
-
-void tst_QSettings::testErrorHandling_data()
-{
- QTest::addColumn<int>("filePerms"); // -1 means file should not exist
- QTest::addColumn<int>("dirPerms");
- QTest::addColumn<int>("statusAfterCtor");
- QTest::addColumn<bool>("shouldBeEmpty");
- QTest::addColumn<int>("statusAfterGet");
- QTest::addColumn<int>("statusAfterSetAndSync");
-
- // file dir afterCtor empty afterGet afterSetAndSync
- QTest::newRow("0600 0700") << 0600 << 0700 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
-
- QTest::newRow("0400 0700") << 0400 << 0700 << (int)QSettings::NoError
- << false << (int)QSettings::NoError << (int)QSettings::AccessError;
- QTest::newRow("0200 0700") << 0200 << 0700 << (int)QSettings::AccessError
- << true << (int)QSettings::AccessError << (int)QSettings::AccessError;
-
- QTest::newRow(" -1 0700") << -1 << 0700 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::NoError;
-
- QTest::newRow(" -1 0000") << -1 << 0000 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::AccessError;
- QTest::newRow(" -1 0100") << -1 << 0100 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::AccessError;
- QTest::newRow("0600 0100") << 0600 << 0100 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
- QTest::newRow(" -1 0300") << -1 << 0300 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::NoError;
- QTest::newRow("0600 0300") << 0600 << 0300 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
- QTest::newRow(" -1 0500") << -1 << 0500 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::AccessError;
- QTest::newRow("0600 0500") << 0600 << 0500 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
-}
-
-void tst_QSettings::testErrorHandling()
-{
-#ifdef QT_BUILD_INTERNAL
-#ifdef Q_OS_WIN
- QSKIP("Windows doesn't support most file modes, including read-only directories, so this test is moot.", SkipAll);
-#elif defined(Q_OS_SYMBIAN)
- QSKIP("Symbian/Open C doesn't support execute or write only file modes, or directory permissions, so this test is mostly moot.", SkipAll);
-#elif defined(Q_OS_UNIX)
- if (::getuid() == 0)
- QSKIP("Running this test as root doesn't work, since file perms do not bother him", SkipAll);
-#else
- QFETCH(int, filePerms);
- QFETCH(int, dirPerms);
- QFETCH(int, statusAfterCtor);
- QFETCH(bool, shouldBeEmpty);
- QFETCH(int, statusAfterGet);
- QFETCH(int, statusAfterSetAndSync);
-
- system(QString("chmod 700 %1 2>/dev/null").arg(settingsPath("someDir")).toLatin1());
- system(QString("chmod -R u+rwx %1 2>/dev/null").arg(settingsPath("someDir")).toLatin1());
- system(QString("rm -fr %1").arg(settingsPath("someDir")).toLatin1());
-
- // prepare a file with some settings
- if (filePerms != -1) {
- QSettings settings(settingsPath("someDir/someSettings.ini"), QSettings::IniFormat);
- QCOMPARE((int) settings.status(), (int) QSettings::NoError);
-
- settings.beginGroup("alpha/beta");
- settings.setValue("geometry", -7);
- settings.setValue("geometry/x", 1);
- settings.setValue("geometry/y", 2);
- settings.setValue("geometry/width", 3);
- settings.setValue("geometry/height", 4);
- settings.endGroup();
- settings.setValue("alpha/gamma/splitter", 5);
- } else {
- system(QString("mkdir -p %1").arg(settingsPath("someDir")).toLatin1());
- }
-
- if (filePerms != -1) {
- system(QString("chmod %1 %2")
- .arg(QString::number(filePerms, 8))
- .arg(settingsPath("someDir/someSettings.ini"))
- .toLatin1());
- }
- system(QString("chmod %1 %2")
- .arg(QString::number(dirPerms, 8))
- .arg(settingsPath("someDir"))
- .toLatin1());
-
- // the test
- {
- QConfFile::clearCache();
- QSettings settings(settingsPath("someDir/someSettings.ini"), QSettings::IniFormat);
- QCOMPARE((int)settings.status(), statusAfterCtor);
- if (shouldBeEmpty) {
- QCOMPARE(settings.allKeys().count(), 0);
- } else {
- QVERIFY(settings.allKeys().count() > 0);
- }
- settings.value("alpha/beta/geometry");
- QCOMPARE((int)settings.status(), statusAfterGet);
- settings.setValue("alpha/beta/geometry", 100);
- QCOMPARE((int)settings.status(), statusAfterGet);
- QCOMPARE(settings.value("alpha/beta/geometry").toInt(), 100);
- settings.sync();
- QCOMPARE(settings.value("alpha/beta/geometry").toInt(), 100);
- QCOMPARE((int)settings.status(), statusAfterSetAndSync);
- }
-#endif // !Q_OS_WIN
-#endif
-}
-
-Q_DECLARE_METATYPE(QVariant)
-Q_DECLARE_METATYPE(QSettings::Status)
-
-void tst_QSettings::testIniParsing_data()
-{
- QTest::addColumn<QByteArray>("inicontent");
- QTest::addColumn<QString>("key");
- QTest::addColumn<QVariant>("expect");
- QTest::addColumn<QSettings::Status>("status");
-
- // Test "forgiving" parsing of entries not terminated with newline or unterminated strings
- QTest::newRow("good1") << QByteArray("v=1\n") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("good2") << QByteArray("v=1\\\n2") << "v" << QVariant(12) << QSettings::NoError;
- QTest::newRow("good3") << QByteArray("v=1\\\r2") << "v" << QVariant(12) << QSettings::NoError;
- QTest::newRow("good4") << QByteArray("v=1\\\n\r2") << "v" << QVariant(12) << QSettings::NoError;
- QTest::newRow("good5") << QByteArray("v=1\\\r\n2") << "v" << QVariant(12) << QSettings::NoError;
- QTest::newRow("good6") << QByteArray("v \t = \t 1\\\r\n2") << "v" << QVariant(12) << QSettings::NoError;
- QTest::newRow("garbage1") << QByteArray("v") << "v" << QVariant() << QSettings::FormatError;
- QTest::newRow("nonterm1") << QByteArray("v=str") << "v" << QVariant("str") << QSettings::NoError;
- QTest::newRow("nonterm2") << QByteArray("v=\"str\"") << "v" << QVariant("str") << QSettings::NoError;
- QTest::newRow("nonterm3") << QByteArray("v=\"str") << "v" << QVariant("str") << QSettings::NoError;
- QTest::newRow("nonterm4") << QByteArray("v=\\") << "v" << QVariant("") << QSettings::NoError;
- QTest::newRow("nonterm5") << QByteArray("u=s\nv=\"str") << "v" << QVariant("str") << QSettings::NoError;
- QTest::newRow("nonterm6") << QByteArray("v=\"str\nw=ok") << "v" << QVariant("str\nw=ok") << QSettings::NoError;
- QTest::newRow("nonterm7") << QByteArray("v=") << "v" << QVariant("") << QSettings::NoError;
- QTest::newRow("nonterm8") << QByteArray("v=\"str\njnk") << "v" << QVariant("str\njnk") << QSettings::NoError;
- QTest::newRow("nonterm9") << QByteArray("v=1\\") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("nonterm10") << QByteArray("v=1\\\n") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("nonterm11") << QByteArray("v=1\\\r") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("nonterm12") << QByteArray("v=1\\\n\r") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("nonterm13") << QByteArray("v=1\\\r\n") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("nonterm14") << QByteArray("v=1\\\n\nx=2") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("nonterm15") << QByteArray("v=1\\\r\rx=2") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("nonterm16") << QByteArray("v=1\\\n\n\nx=2") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("nonterm17") << QByteArray("; foo\nv=1") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("nonterm18") << QByteArray("; foo\n\nv=1") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("nonterm19") << QByteArray("\nv=1;foo") << "v" << QVariant(1) << QSettings::NoError;
- QTest::newRow("nonterm20") << QByteArray("v=x ") << "v" << QVariant("x") << QSettings::NoError;
- QTest::newRow("nonterm21") << QByteArray("v=x ;") << "v" << QVariant("x") << QSettings::NoError;
-}
-
-void tst_QSettings::testIniParsing()
-{
-#ifdef QT_BUILD_INTERNAL
- qRegisterMetaType<QVariant>("QVariant");
- qRegisterMetaType<QSettings::Status>("QSettings::Status");
-
- QDir dir(settingsPath());
- QVERIFY(dir.mkpath("someDir"));
- QFile f(dir.path()+"/someDir/someSettings.ini");
-
- QFETCH(QByteArray, inicontent);
- QFETCH(QString, key);
- QFETCH(QVariant, expect);
- QFETCH(QSettings::Status, status);
-
- QVERIFY(f.open(QFile::WriteOnly));
- f.write(inicontent);
- f.close();
-
- QConfFile::clearCache();
- QSettings settings(settingsPath("someDir/someSettings.ini"), QSettings::IniFormat);
-
- if ( settings.status() == QSettings::NoError ) { // else no point proceeding
- QVariant v = settings.value(key);
- QVERIFY(v.canConvert(expect.type()));
- // check some types so as to give prettier error messages
- if ( v.type() == QVariant::String ) {
- QCOMPARE(v.toString(), expect.toString());
- } else if ( v.type() == QVariant::Int ) {
- QCOMPARE(v.toInt(), expect.toInt());
- } else {
- QCOMPARE(v, expect);
- }
- }
-
- QCOMPARE(settings.status(), status);
-#endif
-}
-
-/*
- Tests beginGroup(), endGroup(), and group().
-*/
-void tst_QSettings::beginGroup()
-{
- QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
- QSettings settings2(QSettings::UserScope, "software.org", "KillerAPP");
-
- /*
- Let's start with some back and forthing.
- */
-
- settings1.beginGroup("alpha");
- QCOMPARE(settings1.group(), QString("alpha"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString());
- settings1.beginGroup("/beta");
- QCOMPARE(settings1.group(), QString("beta"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString());
-
- settings1.beginGroup("///gamma//");
- QCOMPARE(settings1.group(), QString("gamma"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString());
-
- settings1.setValue("geometry", 5);
- QCOMPARE(settings1.value("geometry").toInt(), 5);
- QCOMPARE(settings1.value("/geometry///").toInt(), 5);
- QCOMPARE(settings2.value("geometry").toInt(), 5);
- QCOMPARE(settings2.value("/geometry///").toInt(), 5);
-
- /*
- OK, now start for real.
- */
-
- settings1.beginGroup("alpha");
- QCOMPARE(settings1.group(), QString("alpha"));
- settings1.setValue("geometry", 66);
- QCOMPARE(settings1.value("geometry").toInt(), 66);
- QCOMPARE(settings2.value("geometry").toInt(), 5);
- QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
-
- QSettings settings3(QSettings::UserScope, "software.org", "KillerAPP");
- settings3.beginGroup("alpha");
- QCOMPARE(settings3.value("geometry").toInt(), 66);
-
- settings1.beginGroup("/beta///");
- QCOMPARE(settings1.group(), QString("alpha/beta"));
- settings1.setValue("geometry", 777);
- QCOMPARE(settings1.value("geometry").toInt(), 777);
- QCOMPARE(settings2.value("geometry").toInt(), 5);
- QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
- QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), 777);
- QCOMPARE(settings3.value("geometry").toInt(), 66);
- QCOMPARE(settings3.value("beta/geometry").toInt(), 777);
-
- settings3.beginGroup("gamma");
- settings3.setValue("geometry", 8888);
- QCOMPARE(settings3.value("geometry").toInt(), 8888);
- QCOMPARE(settings2.value("geometry").toInt(), 5);
- QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
- QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), 777);
- QCOMPARE(settings2.value("alpha/gamma/geometry").toInt(), 8888);
- QCOMPARE(settings1.value("geometry").toInt(), 777);
-
- // endGroup() should do nothing if group() is empty
- for (int i = 0; i < 10; ++i)
- settings2.endGroup();
- QCOMPARE(settings2.value("geometry").toInt(), 5);
- QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
- QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), 777);
- QCOMPARE(settings2.value("alpha/gamma/geometry").toInt(), 8888);
-
- QCOMPARE(settings1.group(), QString("alpha/beta"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString("alpha"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString());
- QCOMPARE(settings1.value("geometry").toInt(), 5);
- QCOMPARE(settings1.value("alpha/geometry").toInt(), 66);
- QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), 777);
- QCOMPARE(settings1.value("alpha/gamma/geometry").toInt(), 8888);
-
- settings1.beginGroup("delta");
- QCOMPARE(settings1.group(), QString("delta"));
- settings1.beginGroup("");
- QCOMPARE(settings1.group(), QString("delta"));
- settings1.beginGroup("/");
- QCOMPARE(settings1.group(), QString("delta"));
- settings1.beginGroup("////");
- QCOMPARE(settings1.group(), QString("delta"));
- settings1.beginGroup("////omega///epsilon zeta eta theta/ / /");
- QCOMPARE(settings1.group(), QString("delta/omega/epsilon zeta eta theta/ / "));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString("delta"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString("delta"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString("delta"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString("delta"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString());
-}
-
-/*
- Tests setValue() and getXxx().
-*/
-void tst_QSettings::setValue()
-{
- QSettings settings(QSettings::UserScope, "software.org", "KillerAPP");
-
- settings.setValue("key 2", (int)0x7fffffff);
- QCOMPARE(settings.value("key 2").toInt(), (int)0x7fffffff);
- QCOMPARE(settings.value("key 2").toString(), QString::number((int)0x7fffffff));
- settings.setValue("key 2", -1);
- QCOMPARE(settings.value("key 2").toInt(), -1);
- QCOMPARE(settings.value("key 2").toString(), QString("-1"));
- settings.setValue("key 2", (int)0x80000000);
- QCOMPARE(settings.value("key 2").toInt(), (int)0x80000000);
- settings.setValue("key 2", (int)0);
- QCOMPARE(settings.value("key 2", 123).toInt(), (int)0);
- settings.setValue("key 2", (int)12345);
- QCOMPARE(settings.value("key 2").toInt(), (int)12345);
- QCOMPARE(settings.value("no such key", 1234).toInt(), (int)1234);
- QCOMPARE(settings.value("no such key").toInt(), (int)0);
-
- settings.setValue("key 2", true);
- QCOMPARE(settings.value("key 2").toBool(), true);
- settings.setValue("key 2", false);
- QCOMPARE(settings.value("key 2", true).toBool(), false);
- settings.setValue("key 2", (int)1);
- QCOMPARE(settings.value("key 2").toBool(), true);
- settings.setValue("key 2", (int)-1);
- QCOMPARE(settings.value("key 2").toBool(), true);
- settings.setValue("key 2", (int)0);
- QCOMPARE(settings.value("key 2", true).toBool(), false);
- settings.setValue("key 2", QString("true"));
- QCOMPARE(settings.value("key 2").toBool(), true);
- settings.setValue("key 2", QString("false"));
- QCOMPARE(settings.value("key 2", true).toBool(), false);
-/*
- settings.setValue("key 2", "true");
- QCOMPARE(settings.value("key 2").toBool(), true);
- settings.setValue("key 2", "false");
- QCOMPARE(settings.value("key 2", true).toBool(), false);
- settings.setValue("key 2", "");
- QCOMPARE(settings.value("key 2", true).toBool(), true);
- settings.setValue("key 2", "");
- QCOMPARE(settings.value("key 2", false).toBool(), false);
- settings.setValue("key 2", "0.000e-00"); // cannot convert double to a bool
- QCOMPARE(settings.value("key 2", true).toBool(), true);
- settings.setValue("key 2", "0.000e-00");
- QCOMPARE(settings.value("key 2", false).toBool(), false);
-
-*/
- settings.setValue("key 2", QStringList());
- QCOMPARE(settings.value("key 2").toStringList(), QStringList());
- settings.setValue("key 2", QStringList(""));
- QCOMPARE(settings.value("key 2").toStringList(), QStringList(""));
- settings.setValue("key 2", QStringList() << "" << "");
- QCOMPARE(settings.value("key 2").toStringList(), QStringList() << "" << "");
- settings.setValue("key 2", QStringList() << "" << "a" << "" << "bc" << "");
- QCOMPARE(settings.value("key 2").toStringList(), QStringList() << "" << "a" << "" << "bc" << "");
-
- settings.setValue("key 3", QList<QVariant>());
- QCOMPARE(settings.value("key 3").toList(), QList<QVariant>());
- settings.setValue("key 3", QList<QVariant>() << 1 << QString("a"));
- QCOMPARE(settings.value("key 3").toList(), QList<QVariant>() << 1 << QString("a"));
-
- QList<QVariant> outerList;
- outerList << 1 << QString("b");
- QList<QVariant> innerList = outerList;
- outerList.append(QVariant(innerList));
- outerList.append(QVariant(innerList));
- outerList << 2 << QString("c");
- innerList = outerList;
- outerList.append(QVariant(innerList));
- // outerList: [1, "b", [1, "b"], [1, "b"], 2, "c", [1, "b", [1, "b"], [1, "b"], 2, "c"]]
-
- settings.setValue("key 3", outerList);
- QCOMPARE(settings.value("key 3").toList(), outerList);
- QCOMPARE(settings.value("key 3").toList().size(), 7);
-
- QMap<QString, QVariant> map;
- map.insert("1", "one");
- map.insert("2", "two");
- map.insert("3", outerList);
- map.insert("5", "cinco");
- map.insert("10", "zehn");
- settings.setValue("key 4", map);
- QCOMPARE(settings.value("key 4").toMap(), map);
-}
-
-void tst_QSettings::testVariantTypes_data()
-{
- populateWithFormats();
-}
-
-void tst_QSettings::testVariantTypes()
-{
-#ifdef QT_BUILD_INTERNAL
-#define testVal(key, val, tp, rtype) \
- { \
- QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP"); \
- settings1.setValue(key, qVariantFromValue(val)); \
- } \
- QConfFile::clearCache(); \
- { \
- QSettings settings2(format, QSettings::UserScope, "software.org", "KillerAPP"); \
- QVariant v = settings2.value(key); \
- QVERIFY(qvariant_cast<tp >(v) == val); \
- QVERIFY(v.type() == QVariant::rtype); \
- }
-
- typedef QMap<QString, QVariant> TestVariantMap;
-
- QFETCH(QSettings::Format, format);
-
- TestVariantMap m2;
- m2.insert("ene", "due");
- m2.insert("rike", "fake");
- m2.insert("borba", "dorba");
- testVal("key2", m2, TestVariantMap, Map);
-
- QStringList l2;
-
- l2 << "ene" << "due" << "@Point(1 2)" << "@fake";
- testVal("key3", l2, QStringList, StringList);
-
- l2.clear();
- l2 << "ene" << "due" << "rike" << "fake";
- testVal("key3", l2, QStringList, StringList);
-
- QList<QVariant> l3;
- QDate date = QDate::currentDate();
- QTime time = QTime::currentTime();
- l3 << QString("ene") << 10 << qVariantFromValue(QColor(1, 2, 3)) << QVariant(QRect(1, 2, 3, 4))
- << QVariant(QSize(4, 56)) << QVariant(QPoint(4, 2)) << true << false << date << time;
- testVal("key3", l3, QVariantList, List);
-
- testVal("key4", QString("hello"), QString, String);
- testVal("key5", QColor(1, 2, 3), QColor, Color);
- testVal("key6", QRect(1, 2, 3, 4), QRect, Rect);
- testVal("key7", QSize(4, 56), QSize, Size);
- testVal("key8", QPoint(4, 2), QPoint, Point);
- testVal("key10", date, QDate, Date);
- testVal("key11", time, QTime, Time);
- testVal("key12", QByteArray("foo bar"), QByteArray, ByteArray);
-
- {
- QSettings settings(format, QSettings::UserScope, "software.org", "KillerAPP");
- QVERIFY(!settings.contains("key99"));
- QCOMPARE(settings.value("key99"), QVariant());
-
- settings.setValue("key99", QVariant());
- QVERIFY(settings.contains("key99"));
- QCOMPARE(settings.value("key99"), QVariant());
-
- settings.setValue("key99", QVariant(1));
- QVERIFY(settings.contains("key99"));
- QCOMPARE(settings.value("key99"), QVariant(1));
-
- settings.setValue("key99", QVariant());
- QVERIFY(settings.contains("key99"));
- QCOMPARE(settings.value("key99"), QVariant());
-
- settings.remove("key99");
- QVERIFY(!settings.contains("key99"));
- QCOMPARE(settings.value("key99"), QVariant());
- }
-
- QList<QVariant> l4;
- l4 << QVariant(m2) << QVariant(l2) << QVariant(l3);
- testVal("key13", l4, QVariantList, List);
-
- // We store key sequences as strings instead of binary variant blob, for improved
- // readability in the resulting format.
- if (format >= QSettings::InvalidFormat) {
- testVal("keysequence", QKeySequence(Qt::ControlModifier + Qt::Key_F1), QKeySequence, KeySequence);
- } else {
- testVal("keysequence", QKeySequence(Qt::ControlModifier + Qt::Key_F1), QString, String);
- }
-
-#undef testVal
-#endif
-}
-
-void tst_QSettings::remove()
-{
- QSettings settings0(QSettings::UserScope, "software.org", "KillerAPP");
- int initialNumKeys = settings0.allKeys().size();
- QCOMPARE(settings0.value("key 1", "123").toString(), QString("123"));
- settings0.remove("key 1");
- QCOMPARE(settings0.value("key 1", "456").toString(), QString("456"));
-
- settings0.setValue("key 1", "bubloo");
- QCOMPARE(settings0.value("key 1").toString(), QString("bubloo"));
- settings0.remove("key 2");
- QCOMPARE(settings0.value("key 1").toString(), QString("bubloo"));
- settings0.remove("key 1");
- QCOMPARE(settings0.value("key 1", "789").toString(), QString("789"));
-
- /*
- Make sure that removing a key removes all the subkeys.
- */
- settings0.setValue("alpha/beta/geometry", -7);
- settings0.setValue("alpha/beta/geometry/x", 1);
- settings0.setValue("alpha/beta/geometry/y", 2);
- settings0.setValue("alpha/beta/geometry/width", 3);
- settings0.setValue("alpha/beta/geometry/height", 4);
- settings0.setValue("alpha/gamma/splitter", 5);
-
- settings0.remove("alpha/beta/geometry/x");
- QCOMPARE(settings0.value("alpha/beta/geometry").toInt(), -7);
- QCOMPARE(settings0.value("alpha/beta/geometry/x", 999).toInt(), 999);
- QCOMPARE(settings0.value("alpha/beta/geometry/y").toInt(), 2);
- QCOMPARE(settings0.value("alpha/beta/geometry/width").toInt(), 3);
- QCOMPARE(settings0.value("alpha/beta/geometry/height").toInt(), 4);
- QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
-
- settings0.remove("alpha/beta/geometry");
- QCOMPARE(settings0.value("alpha/beta/geometry", 777).toInt(), 777);
- QCOMPARE(settings0.value("alpha/beta/geometry/x", 111).toInt(), 111);
- QCOMPARE(settings0.value("alpha/beta/geometry/y", 222).toInt(), 222);
- QCOMPARE(settings0.value("alpha/beta/geometry/width", 333).toInt(), 333);
- QCOMPARE(settings0.value("alpha/beta/geometry/height", 444).toInt(), 444);
- QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
-
- settings0.setValue("alpha/beta/geometry", -7);
- settings0.setValue("alpha/beta/geometry/x", 1);
- settings0.setValue("alpha/beta/geometry/y", 2);
- settings0.setValue("alpha/beta/geometry/width", 3);
- settings0.setValue("alpha/beta/geometry/height", 4);
- settings0.setValue("alpha/gamma/splitter", 5);
- QCOMPARE(settings0.allKeys().size(), initialNumKeys + 6);
-
- settings0.beginGroup("alpha/beta/geometry");
- settings0.remove("");
- settings0.endGroup();
- QVERIFY(!settings0.contains("alpha/beta/geometry"));
- QVERIFY(!settings0.contains("alpha/beta/geometry/x"));
- QVERIFY(!settings0.contains("alpha/beta/geometry/y"));
- QVERIFY(!settings0.contains("alpha/beta/geometry/width"));
- QVERIFY(!settings0.contains("alpha/beta/geometry/height"));
- QVERIFY(settings0.contains("alpha/gamma/splitter"));
- QCOMPARE(settings0.allKeys().size(), initialNumKeys + 1);
-
- settings0.beginGroup("alpha/beta");
- settings0.remove("");
- settings0.endGroup();
- QVERIFY(!settings0.contains("alpha/beta/geometry"));
- QVERIFY(!settings0.contains("alpha/beta/geometry/x"));
- QVERIFY(!settings0.contains("alpha/beta/geometry/y"));
- QVERIFY(!settings0.contains("alpha/beta/geometry/width"));
- QVERIFY(!settings0.contains("alpha/beta/geometry/height"));
- QVERIFY(settings0.contains("alpha/gamma/splitter"));
- QCOMPARE(settings0.allKeys().size(), initialNumKeys + 1);
-
- settings0.remove("");
- QVERIFY(!settings0.contains("alpha/gamma/splitter"));
- QCOMPARE(settings0.allKeys().size(), initialNumKeys);
-
- /*
- Do it again, but this time let's use setGroup().
- */
-
- settings0.setValue("alpha/beta/geometry", -7);
- settings0.setValue("alpha/beta/geometry/x", 1);
- settings0.setValue("alpha/beta/geometry/y", 2);
- settings0.setValue("alpha/beta/geometry/width", 3);
- settings0.setValue("alpha/beta/geometry/height", 4);
- settings0.setValue("alpha/gamma/splitter", 5);
-
- settings0.beginGroup("foo/bar/baz/doesn't");
- settings0.remove("exist");
- settings0.endGroup();
- QCOMPARE(settings0.value("alpha/beta/geometry").toInt(), -7);
- QCOMPARE(settings0.value("alpha/beta/geometry/x").toInt(), 1);
- QCOMPARE(settings0.value("alpha/beta/geometry/y").toInt(), 2);
- QCOMPARE(settings0.value("alpha/beta/geometry/width").toInt(), 3);
- QCOMPARE(settings0.value("alpha/beta/geometry/height").toInt(), 4);
- QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
-
- settings0.beginGroup("alpha/beta/geometry");
- settings0.remove("x");
- settings0.endGroup();
- QCOMPARE(settings0.value("alpha/beta/geometry").toInt(), -7);
- QCOMPARE(settings0.value("alpha/beta/geometry/x", 999).toInt(), 999);
- QCOMPARE(settings0.value("alpha/beta/geometry/y").toInt(), 2);
- QCOMPARE(settings0.value("alpha/beta/geometry/width").toInt(), 3);
- QCOMPARE(settings0.value("alpha/beta/geometry/height").toInt(), 4);
- QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
-
- settings0.remove("alpha/beta");
- QCOMPARE(settings0.value("alpha/beta/geometry", 777).toInt(), 777);
- QCOMPARE(settings0.value("alpha/beta/geometry/x", 111).toInt(), 111);
- QCOMPARE(settings0.value("alpha/beta/geometry/y", 222).toInt(), 222);
- QCOMPARE(settings0.value("alpha/beta/geometry/width", 333).toInt(), 333);
- QCOMPARE(settings0.value("alpha/beta/geometry/height", 444).toInt(), 444);
- QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
-
- settings0.clear();
- QCOMPARE(settings0.value("alpha/gamma/splitter", 888).toInt(), 888);
-
- /*
- OK, now let's check what happens if settings are spread across
- multiple files (user vs. global, product-specific vs.
- company-wide).
- */
-
- QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
- QSettings settings2(QSettings::UserScope, "software.org");
- QSettings settings3(QSettings::SystemScope, "software.org", "KillerAPP");
- QSettings settings4(QSettings::SystemScope, "software.org");
-
- settings4.setValue("key 1", "doodah");
- settings3.setValue("key 1", "blah");
- settings2.setValue("key 1", "whoa");
- settings1.setValue("key 1", "gurgle");
- QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
- QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
- QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
- QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
-
- settings1.remove("key 1");
- QCOMPARE(settings1.value("key 1").toString(), QString("whoa"));
- QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
- QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
- QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
-
- settings2.remove("key 1");
- QCOMPARE(settings1.value("key 1").toString(), QString("blah"));
- QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
- QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
- QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
-
- settings3.remove("key 1");
- QCOMPARE(settings1.value("key 1").toString(), QString("doodah"));
- QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
- QCOMPARE(settings3.value("key 1").toString(), QString("doodah"));
- QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
-
- settings4.remove("key 1");
- QVERIFY(!settings1.contains("key 1"));
- QVERIFY(!settings2.contains("key 1"));
- QVERIFY(!settings3.contains("key 1"));
- QVERIFY(!settings4.contains("key 1"));
-
- /*
- Get ready for the next part of the test.
- */
-
- settings1.clear();
- settings2.clear();
- settings3.clear();
- settings4.clear();
-
- settings1.sync();
- settings2.sync();
- settings3.sync();
- settings4.sync();
-
- /*
- Check that recursive removes work correctly when some of the
- keys are loaded from the file and others have been modified in
- memory (corresponds to originalKeys vs. addedKeys in the
- QSettingsFile code).
- */
-
- settings1.setValue("alpha/beta/geometry", -7);
- settings1.setValue("alpha/beta/geometry/x", 1);
- settings1.setValue("alpha/beta/geometry/y", 2);
- settings1.setValue("alpha/gamma/splitter", 5);
- settings1.sync();
-
- settings1.setValue("alpha/beta/geometry/width", 3);
- settings1.setValue("alpha/beta/geometry/height", 4);
-
- settings1.remove("alpha/beta/geometry/y");
- QVERIFY(settings1.contains("alpha/beta/geometry"));
- QVERIFY(settings1.contains("alpha/beta/geometry/x"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
- QVERIFY(settings1.contains("alpha/beta/geometry/width"));
- QVERIFY(settings1.contains("alpha/beta/geometry/height"));
- QCOMPARE(settings1.allKeys().size(), initialNumKeys + 5);
-
- settings1.remove("alpha/beta/geometry/y");
- QCOMPARE(settings1.allKeys().size(), initialNumKeys + 5);
-
- settings1.remove("alpha/beta/geometry/height");
- QVERIFY(settings1.contains("alpha/beta/geometry"));
- QVERIFY(settings1.contains("alpha/beta/geometry/x"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
- QVERIFY(settings1.contains("alpha/beta/geometry/width"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/height"));
- QCOMPARE(settings1.allKeys().size(), initialNumKeys + 4);
-
- settings1.remove("alpha/beta/geometry");
- QVERIFY(!settings1.contains("alpha/beta/geometry"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/x"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/width"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/height"));
- QVERIFY(settings1.contains("alpha/gamma/splitter"));
- QCOMPARE(settings1.allKeys().size(), initialNumKeys + 1);
-
- settings1.sync();
- QVERIFY(!settings1.contains("alpha/beta/geometry"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/x"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/width"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/height"));
- QVERIFY(settings1.contains("alpha/gamma/splitter"));
- QCOMPARE(settings1.allKeys().size(), initialNumKeys + 1);
-}
-
-/*
- Tests contains() and keys().
-*/
-void tst_QSettings::contains()
-{
- QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
- int initialNumKeys = settings1.allKeys().size(); // 0 on all platforms but Mac OS X.
- settings1.setValue("alpha/beta/geometry", -7);
- settings1.setValue("alpha/beta/geometry/x", 1);
- settings1.setValue("alpha/beta/geometry/y", 2);
- settings1.setValue("alpha/beta/geometry/width", 3);
- settings1.setValue("alpha/beta/geometry/height", 4);
- settings1.setValue("alpha/gamma/splitter", 5);
- settings1.setValue("alpha/gamma/splitter/ /", 5);
-
- QVERIFY(!settings1.contains("alpha"));
- QVERIFY(!settings1.contains("alpha/beta"));
- QVERIFY(!settings1.contains("///alpha///beta///"));
- QVERIFY(settings1.contains("alpha/beta/geometry"));
- QVERIFY(settings1.contains("///alpha///beta//geometry//"));
- QVERIFY(settings1.contains("alpha/beta/geometry/x"));
- QVERIFY(settings1.contains("alpha/beta/geometry/y"));
- QVERIFY(settings1.contains("alpha/beta/geometry/width"));
- QVERIFY(settings1.contains("alpha/beta/geometry/height"));
- QVERIFY(!settings1.contains("alpha/beta/geometry/height/foo/bar/doesn't/exist"));
- QVERIFY(!settings1.contains("alpha/gamma"));
- QVERIFY(settings1.contains("alpha/gamma/splitter"));
- QVERIFY(settings1.contains("alpha/gamma/splitter/ "));
- QVERIFY(settings1.contains("////alpha/gamma/splitter// ////"));
-
- settings1.beginGroup("alpha");
- QVERIFY(!settings1.contains("beta"));
- QVERIFY(!settings1.contains("/////beta///"));
- QVERIFY(settings1.contains("beta/geometry"));
- QVERIFY(settings1.contains("/////beta//geometry//"));
- QVERIFY(settings1.contains("beta/geometry/x"));
- QVERIFY(settings1.contains("beta/geometry/y"));
- QVERIFY(settings1.contains("beta/geometry/width"));
- QVERIFY(settings1.contains("beta/geometry/height"));
- QVERIFY(!settings1.contains("beta/geometry/height/foo/bar/doesn't/exist"));
- QVERIFY(!settings1.contains("gamma"));
- QVERIFY(settings1.contains("gamma/splitter"));
- QVERIFY(settings1.contains("gamma/splitter/ "));
- QVERIFY(settings1.contains("////gamma/splitter// ////"));
-
- settings1.beginGroup("beta/geometry");
- QVERIFY(settings1.contains("x"));
- QVERIFY(settings1.contains("y"));
- QVERIFY(settings1.contains("width"));
- QVERIFY(settings1.contains("height"));
- QVERIFY(!settings1.contains("height/foo/bar/doesn't/exist"));
-
- QStringList keys = settings1.allKeys();
- QStringList expectedResult = QStringList() << "x" << "y" << "width" << "height";
- keys.sort();
- expectedResult.sort();
- int i;
- QCOMPARE(keys, expectedResult);
- for (i = 0; i < keys.size(); ++i) {
- QVERIFY(settings1.contains(keys.at(i)));
- }
-
- settings1.endGroup();
- QVERIFY(settings1.group() == "alpha");
- keys = settings1.allKeys();
- QCOMPARE(keys.size(), expectedResult.size() + 3);
- for (i = 0; i < keys.size(); ++i) {
- QVERIFY(settings1.contains(keys.at(i)));
- }
-
- settings1.endGroup();
- QVERIFY(settings1.group().isEmpty());
- keys = settings1.allKeys();
-
- QCOMPARE(keys.size(), initialNumKeys + 7);
- for (i = 0; i < keys.size(); ++i) {
- QVERIFY(settings1.contains(keys.at(i)));
- }
-}
-
-void tst_QSettings::sync()
-{
- /*
- What we're trying to test here is the case where two
- instances of the same application access the same preference
- files. We want to make sure that the results are 'merged',
- rather than having the last application overwrite settings
- set by the first application (like in Qt 3).
-
- This is only applicable to the INI format. The Windows
- registry and Mac's CFPreferences API should take care of this
- by themselves.
- */
-
- QSettings settings1(QSettings::IniFormat, QSettings::UserScope, "software.org");
- settings1.setValue("alpha/beta/geometry", -7);
- settings1.setValue("alpha/beta/geometry/x", 1);
- settings1.setValue("alpha/beta/geometry/y", 2);
- settings1.setValue("alpha/beta/geometry/width", 3);
- settings1.setValue("alpha/beta/geometry/height", 4);
- settings1.setValue("alpha/gamma/splitter", 5);
- settings1.sync(); // and it all goes into the file
-
- QSettings settings2(QSettings::IniFormat, QSettings::UserScope, "other.software.org");
- settings2.setValue("alpha/beta/geometry/x", 8);
- settings2.sync();
-
- settings2.setValue("moo/beta/geometry", -7);
- settings2.setValue("moo/beta/geometry/x", 1);
- settings2.setValue("moo/beta/geometry/y", 2);
- settings2.setValue("moo/beta/geometry/width", 3);
- settings2.setValue("moo/beta/geometry/height", 4);
- settings2.setValue("moo/gamma/splitter", 5);
- settings2.setValue("alpha/gamma/splitter", 15);
- settings2.remove("alpha/beta/geometry/x");
- settings2.remove("alpha/beta/geometry/y"); // should do nothing
-
- // Now "some other app" will change other.software.org.ini
- QString userConfDir = settingsPath("__user__") + QDir::separator();
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
- unlink((userConfDir + "other.software.org.ini").toLatin1());
- rename((userConfDir + "software.org.ini").toLatin1(),
- (userConfDir + "other.software.org.ini").toLatin1());
-#else
- QFile::remove(userConfDir + "other.software.org.ini");
- QFile::rename(userConfDir + "software.org.ini" , userConfDir + "other.software.org.ini");
-#endif
-
- settings2.sync();
-
- // And voila, we should be merged
-
- QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), -7);
- QVERIFY(!settings2.contains("alpha/beta/geometry/x")); // <----- removed by settings2
- QCOMPARE(settings2.value("alpha/beta/geometry/y").toInt(), 2);
- QCOMPARE(settings2.value("alpha/beta/geometry/width").toInt(), 3);
- QCOMPARE(settings2.value("alpha/beta/geometry/height").toInt(), 4);
- QCOMPARE(settings2.value("alpha/gamma/splitter").toInt(), 15); // <---- set by settings2
- QCOMPARE(settings2.value("moo/beta/geometry").toInt(), -7);
- QCOMPARE(settings2.value("moo/beta/geometry/x").toInt(), 1);
- QCOMPARE(settings2.value("moo/beta/geometry/y").toInt(), 2);
- QCOMPARE(settings2.value("moo/beta/geometry/width").toInt(), 3);
- QCOMPARE(settings2.value("moo/beta/geometry/height").toInt(), 4);
- QCOMPARE(settings2.value("moo/gamma/splitter").toInt(), 5);
- QCOMPARE(settings2.allKeys().count(), 11);
-
- // Now, software.org.ini no longer exists, this is same as another app
- // clearing all settings.
- settings1.sync();
- QCOMPARE(settings1.allKeys().count(), 0);
-
-/*
- // Now "some other app" will change software.org.conf
- unlink((userConfDir + "software.org.ini").toLatin1());
- rename((userConfDir + "other.software.org.ini").toLatin1(),
- (userConfDir + "software.org.ini").toLatin1());
-
- settings1.sync();
- QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), -7);
- QCOMPARE(settings1.value("alpha/beta/geometry/y").toInt(), 2);
- QCOMPARE(settings1.value("alpha/beta/geometry/width").toInt(), 3);
- QCOMPARE(settings1.value("alpha/beta/geometry/height").toInt(), 4);
- QCOMPARE(settings1.value("alpha/gamma/splitter").toInt(), 15);
- QCOMPARE(settings1.value("moo/beta/geometry").toInt(), -7);
- QCOMPARE(settings1.value("moo/beta/geometry/x").toInt(), 1);
- QCOMPARE(settings1.value("moo/beta/geometry/y").toInt(), 2);
- QCOMPARE(settings1.value("moo/beta/geometry/width").toInt(), 3);
- QCOMPARE(settings1.value("moo/beta/geometry/height").toInt(), 4);
- QCOMPARE(settings1.value("moo/gamma/splitter").toInt(), 5);
- QCOMPARE(settings1.allKeys().count(), 11);
-*/
-}
-
-void tst_QSettings::setFallbacksEnabled_data()
-{
- populateWithFormats();
-}
-
-void tst_QSettings::setFallbacksEnabled()
-{
- QFETCH(QSettings::Format, format);
-
- QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
- QSettings settings2(format, QSettings::UserScope, "software.org");
- QSettings settings3(format, QSettings::SystemScope, "software.org", "KillerAPP");
- QSettings settings4(format, QSettings::SystemScope, "software.org");
-
- settings1.setValue("key 1", "alpha");
- settings2.setValue("key 1", "beta");
- settings3.setValue("key 1", "gamma");
- settings4.setValue("key 1", "delta");
-
- settings1.setValue("key 2", "alpha");
- settings2.setValue("key 2", "beta");
- settings3.setValue("key 2", "gamma");
-
- settings1.setValue("key 3", "alpha");
- settings3.setValue("key 3", "gamma");
- settings4.setValue("key 3", "delta");
-
- settings1.setValue("key 4", "alpha");
- settings2.setValue("key 4", "beta");
- settings4.setValue("key 4", "delta");
-
- settings2.setValue("key 5", "beta");
- settings3.setValue("key 5", "gamma");
- settings4.setValue("key 5", "delta");
-
- QVERIFY(settings1.fallbacksEnabled());
- QVERIFY(settings2.fallbacksEnabled());
- QVERIFY(settings3.fallbacksEnabled());
- QVERIFY(settings4.fallbacksEnabled());
-
- settings1.setFallbacksEnabled(false);
- settings2.setFallbacksEnabled(false);
- settings3.setFallbacksEnabled(false);
- settings4.setFallbacksEnabled(false);
-
- QVERIFY(!settings1.fallbacksEnabled());
- QVERIFY(!settings2.fallbacksEnabled());
- QVERIFY(!settings3.fallbacksEnabled());
- QVERIFY(!settings4.fallbacksEnabled());
-
- /*
- Make sure that the QSettings objects can still access their
- main associated file when fallbacks are turned off.
- */
-
- QCOMPARE(settings1.value("key 1").toString(), QString("alpha"));
- QCOMPARE(settings2.value("key 1").toString(), QString("beta"));
- QCOMPARE(settings3.value("key 1").toString(), QString("gamma"));
- QCOMPARE(settings4.value("key 1").toString(), QString("delta"));
-
- QCOMPARE(settings1.value("key 2").toString(), QString("alpha"));
- QCOMPARE(settings2.value("key 2").toString(), QString("beta"));
- QCOMPARE(settings3.value("key 2").toString(), QString("gamma"));
- QVERIFY(!settings4.contains("key 2"));
-
- QCOMPARE(settings1.value("key 3").toString(), QString("alpha"));
- QCOMPARE(settings3.value("key 3").toString(), QString("gamma"));
- QCOMPARE(settings4.value("key 3").toString(), QString("delta"));
- QVERIFY(!settings2.contains("key 3"));
-
- QCOMPARE(settings1.value("key 4").toString(), QString("alpha"));
- QCOMPARE(settings2.value("key 4").toString(), QString("beta"));
- QCOMPARE(settings4.value("key 4").toString(), QString("delta"));
- QVERIFY(!settings3.contains("key 4"));
-
- QCOMPARE(settings2.value("key 5").toString(), QString("beta"));
- QCOMPARE(settings3.value("key 5").toString(), QString("gamma"));
- QCOMPARE(settings4.value("key 5").toString(), QString("delta"));
- QVERIFY(!settings1.contains("key 5"));
-
- QCOMPARE(settings1.value("key 1").toString(), QString("alpha"));
- QCOMPARE(settings1.value("key 5").toString(), QString(""));
- QVERIFY(settings1.contains("key 1"));
- QVERIFY(!settings1.contains("key 5"));
-}
-
-void tst_QSettings::testChildKeysAndGroups_data()
-{
- populateWithFormats();
-}
-
-void tst_QSettings::testChildKeysAndGroups()
-{
- QFETCH(QSettings::Format, format);
-
- QSettings settings1(format, QSettings::UserScope, "software.org");
- settings1.setFallbacksEnabled(false);
- settings1.setValue("alpha/beta/geometry", -7);
- settings1.setValue("alpha/beta/geometry/x", 1);
- settings1.setValue("alpha/beta/geometry/y", 2);
- settings1.setValue("alpha/beta/geometry/width", 3);
- settings1.setValue("alpha/beta/geometry/height", 4);
- settings1.setValue("alpha/gamma/splitter", 5);
-
- QCOMPARE(settings1.childKeys(), QStringList());
- QCOMPARE(settings1.childGroups(), QStringList() << "alpha");
-
- settings1.beginGroup("/alpha");
- QCOMPARE(settings1.childKeys(), QStringList());
- QCOMPARE(settings1.childGroups(), QStringList() << "beta" << "gamma");
-
- settings1.beginGroup("/beta");
- QCOMPARE(settings1.childKeys(), QStringList() << "geometry");
- QCOMPARE(settings1.childGroups(), QStringList() << "geometry");
-
- settings1.beginGroup("/geometry");
- QCOMPARE(settings1.childKeys(), QStringList() << "height" << "width" << "x" << "y");
- QCOMPARE(settings1.childGroups(), QStringList());
-
- settings1.beginGroup("/width");
- QCOMPARE(settings1.childKeys(), QStringList());
- QCOMPARE(settings1.childGroups(), QStringList());
-
- settings1.endGroup();
- settings1.endGroup();
- settings1.endGroup();
- settings1.endGroup();
-
- { // task 53792
- QSettings settings2("other.software.org");
- settings2.setValue("viewbar/foo/test1", "1");
- settings2.setValue("viewbar/foo/test2", "2");
- settings2.setValue("viewbar/foo/test3", "3");
- settings2.setValue("viewbar/foo/test4", "4");
- settings2.setValue("viewbar/foo/test5", "5");
- settings2.setValue("viewbar/bar/test1", "1");
- settings2.setValue("viewbar/bar/test2", "2");
- settings2.setValue("viewbar/bar/test3", "3");
- settings2.setValue("viewbar/bar/test4", "4");
- settings2.setValue("viewbar/bar/test5", "5");
-
- settings2.beginGroup("viewbar");
- QStringList l = settings2.childGroups();
- settings2.endGroup();
- l.sort();
- QCOMPARE(l, QStringList() << "bar" << "foo");
- }
-}
-
-void tst_QSettings::testUpdateRequestEvent()
-{
- QFile::remove("foo");
- QVERIFY(!QFile::exists("foo"));
-
- QSettings settings1("foo", QSettings::IniFormat);
- QVERIFY(!QFile::exists("foo"));
- QVERIFY(QFileInfo("foo").size() == 0);
- settings1.setValue("key1", 1);
- QVERIFY(QFileInfo("foo").size() == 0);
-
- QTRY_VERIFY(QFileInfo("foo").size() > 0);
-
- settings1.remove("key1");
- QVERIFY(QFileInfo("foo").size() > 0);
-
- QTRY_VERIFY(QFileInfo("foo").size() == 0);
-
- settings1.setValue("key2", 2);
- QVERIFY(QFileInfo("foo").size() == 0);
-
- QTRY_VERIFY(QFileInfo("foo").size() > 0);
-
- settings1.clear();
- QVERIFY(QFileInfo("foo").size() > 0);
-
- QTRY_VERIFY(QFileInfo("foo").size() == 0);
-}
-
-const int NumIterations = 5;
-const int NumThreads = 4;
-
-class SettingsThread : public QThread
-{
-public:
- void run();
- void start(int n) { param = n; QThread::start(); }
-
-private:
- int param;
-};
-
-void SettingsThread::run()
-{
- for (int i = 0; i < NumIterations; ++i) {
- QSettings settings("software.org", "KillerAPP");
- settings.setValue(QString::number((param * NumIterations) + i), param);
- settings.sync();
- QCOMPARE((int)settings.status(), (int)QSettings::NoError);
- }
-}
-
-void tst_QSettings::testThreadSafety()
-{
- SettingsThread threads[NumThreads];
- int i, j;
-
- for (i = 0; i < NumThreads; ++i)
- threads[i].start(i + 1);
- for (i = 0; i < NumThreads; ++i)
- threads[i].wait();
-
- QSettings settings("software.org", "KillerAPP");
- for (i = 0; i < NumThreads; ++i) {
- int param = i + 1;
- for (j = 0; j < NumIterations; ++j) {
- QCOMPARE(settings.value(QString::number((param * NumIterations) + j)).toInt(), param);
- }
- }
-}
-
-void tst_QSettings::testNormalizedKey_data()
-{
- QTest::addColumn<QString>("inKey");
- QTest::addColumn<QString>("outKey");
-
- QTest::newRow("empty1") << "" << "";
- QTest::newRow("empty2") << "/" << "";
- QTest::newRow("empty3") << "//" << "";
- QTest::newRow("empty4") << "///" << "";
-
- QTest::newRow("a1") << "a" << "a";
- QTest::newRow("a2") << "/a" << "a";
- QTest::newRow("a3") << "a/" << "a";
- QTest::newRow("a4") << "//a" << "a";
- QTest::newRow("a5") << "a//" << "a";
- QTest::newRow("a6") << "///a" << "a";
- QTest::newRow("a7") << "a///" << "a";
- QTest::newRow("a8") << "///a/" << "a";
- QTest::newRow("a9") << "/a///" << "a";
-
- QTest::newRow("ab1") << "aaa/bbb" << "aaa/bbb";
- QTest::newRow("ab2") << "/aaa/bbb" << "aaa/bbb";
- QTest::newRow("ab3") << "aaa/bbb/" << "aaa/bbb";
- QTest::newRow("ab4") << "/aaa/bbb/" << "aaa/bbb";
- QTest::newRow("ab5") << "aaa///bbb" << "aaa/bbb";
- QTest::newRow("ab6") << "aaa///bbb/" << "aaa/bbb";
- QTest::newRow("ab7") << "/aaa///bbb/" << "aaa/bbb";
- QTest::newRow("ab8") << "////aaa///bbb////" << "aaa/bbb";
-}
-
-void tst_QSettings::testNormalizedKey()
-{
-#ifdef QT_BUILD_INTERNAL
- QFETCH(QString, inKey);
- QFETCH(QString, outKey);
-
- inKey.detach();
-
- QString result = QSettingsPrivate::normalizedKey(inKey);
- QCOMPARE(result, outKey);
-
- /*
- If the key is already normalized, we verify that outKey is
- just a shallow copy of the input string. This is an important
- optimization that shouldn't be removed accidentally.
- */
- if (inKey == outKey) {
- QVERIFY(!result.isDetached());
- } else {
- if (!result.isEmpty()) {
- QVERIFY(result.isDetached());
- }
- }
-#endif
-}
-
-void tst_QSettings::testEmptyData()
-{
- QString filename(QDir::tempPath() + "/empty.ini");
- QFile::remove(filename);
- QVERIFY(!QFile::exists(filename));
-
- QString nullString;
- QString emptyString("");
- QStringList emptyList;
- QStringList list;
- QStringList list2;
-
- QVariantList emptyVList;
- QVariantList vList, vList2, vList3;
-
- list << emptyString << nullString;
- list2 << emptyString;
- vList << emptyString;
- vList2 << emptyString << nullString;
- vList3 << QString("foo");
-
- {
- QSettings settings(filename, QSettings::IniFormat);
- settings.setValue("nullString", nullString);
- settings.setValue("emptyString", emptyString);
- settings.setValue("emptyList", emptyList);
- settings.setValue("list", list);
- settings.setValue("list2", list2);
- settings.setValue("emptyVList", emptyVList);
- settings.setValue("vList", vList);
- settings.setValue("vList2", vList2);
- settings.setValue("vList3", vList3);
- QVERIFY(settings.status() == QSettings::NoError);
- }
- {
- QSettings settings(filename, QSettings::IniFormat);
- QCOMPARE(settings.value("nullString").toString(), nullString);
- QCOMPARE(settings.value("emptyString").toString(), emptyString);
- QCOMPARE(settings.value("emptyList").toStringList(), emptyList);
- QCOMPARE(settings.value("list").toStringList(), list);
- QCOMPARE(settings.value("list2").toStringList(), list2);
- QCOMPARE(settings.value("emptyVList").toList(), emptyVList);
- QCOMPARE(settings.value("vList").toList(), vList);
- QCOMPARE(settings.value("vList2").toList(), vList2);
- QCOMPARE(settings.value("vList3").toList(), vList3);
- QVERIFY(settings.status() == QSettings::NoError);
- }
-
- {
- QSettings settings("Trolltech", "tst_qsettings");
- settings.setValue("nullString", nullString);
- settings.setValue("emptyString", emptyString);
- settings.setValue("emptyList", emptyList);
- settings.setValue("list", list);
- settings.setValue("list2", list2);
- settings.setValue("emptyVList", emptyVList);
- settings.setValue("vList", vList);
- settings.setValue("vList2", vList2);
- settings.setValue("vList3", vList3);
- QVERIFY(settings.status() == QSettings::NoError);
- }
- {
- QSettings settings("Trolltech", "tst_qsettings");
- QCOMPARE(settings.value("nullString").toString(), nullString);
- QCOMPARE(settings.value("emptyString").toString(), emptyString);
- QCOMPARE(settings.value("emptyList").toStringList(), emptyList);
- QCOMPARE(settings.value("list").toStringList(), list);
- QCOMPARE(settings.value("list2").toStringList(), list2);
- QCOMPARE(settings.value("emptyVList").toList(), emptyVList);
- QCOMPARE(settings.value("vList").toList(), vList);
- QCOMPARE(settings.value("vList2").toList(), vList2);
- QCOMPARE(settings.value("vList3").toList(), vList3);
- QVERIFY(settings.status() == QSettings::NoError);
- }
- QFile::remove(filename);
-}
-
-void tst_QSettings::testResourceFiles()
-{
- QSettings settings(":/resourcefile.ini", QSettings::IniFormat);
- QVERIFY(settings.status() == QSettings::NoError);
- QVERIFY(!settings.isWritable());
- QCOMPARE(settings.value("Field 1/Bottom").toInt(), 89);
- settings.setValue("Field 1/Bottom", 90);
-
- // the next two lines check the statu quo; another behavior would be possible
- QVERIFY(settings.status() == QSettings::NoError);
- QCOMPARE(settings.value("Field 1/Bottom").toInt(), 90);
-
- settings.sync();
- QVERIFY(settings.status() == QSettings::AccessError);
- QCOMPARE(settings.value("Field 1/Bottom").toInt(), 90);
-}
-
-void tst_QSettings::fromFile_data()
-{
- populateWithFormats();
-}
-
-void tst_QSettings::fromFile()
-{
- QFETCH(QSettings::Format, format);
-
- QFile::remove("foo");
- QVERIFY(!QFile::exists("foo"));
-
- QString path = "foo";
-
-#ifdef Q_OS_WIN
- if (format == QSettings::NativeFormat)
- path = "\\HKEY_CURRENT_USER\\Software\\foo";
-#endif
-
- QStringList strList = QStringList() << "hope" << "destiny" << "chastity";
-
- {
- QSettings settings1(path, format);
- QVERIFY(settings1.allKeys().isEmpty());
-
- settings1.setValue("alpha", 1);
- settings1.setValue("alpha", 2);
- settings1.setValue("beta", strList);
-
- QSettings settings2(path, format);
- QCOMPARE(settings2.value("alpha").toInt(), 2);
-
- settings1.sync();
-#ifndef Q_OS_WIN
- QVERIFY(QFile::exists("foo"));
-#endif
- QCOMPARE(settings1.value("alpha").toInt(), 2);
- QCOMPARE(settings2.value("alpha").toInt(), 2);
-
- settings2.setValue("alpha", 3);
- settings2.setValue("gamma/foo.bar", 4);
- QCOMPARE(settings1.value("alpha").toInt(), 3);
- QCOMPARE(settings2.value("alpha").toInt(), 3);
- QCOMPARE(settings1.value("beta").toStringList(), strList);
- QCOMPARE(settings2.value("beta").toStringList(), strList);
- QCOMPARE(settings1.value("gamma/foo.bar").toInt(), 4);
- QCOMPARE(settings2.value("gamma/foo.bar").toInt(), 4);
- }
-
- {
- QSettings settings1(path, format);
- QCOMPARE(settings1.value("alpha").toInt(), 3);
- QCOMPARE(settings1.value("beta").toStringList(), strList);
- QCOMPARE(settings1.value("gamma/foo.bar").toInt(), 4);
- QCOMPARE(settings1.allKeys().size(), 3);
- }
-}
-
-void tst_QSettings::setIniCodec()
-{
-#ifdef QT_BUILD_INTERNAL
- QByteArray expeContents4, expeContents5;
- QByteArray actualContents4, actualContents5;
-
- {
- QFile inFile(":/resourcefile4.ini");
- inFile.open(QIODevice::ReadOnly);
- expeContents4 = inFile.readAll();
- inFile.close();
- }
-
- {
- QFile inFile(":/resourcefile5.ini");
- inFile.open(QIODevice::ReadOnly);
- expeContents5 = inFile.readAll();
- inFile.close();
- }
-
- {
- QSettings settings4(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP");
- settings4.setIniCodec("UTF-8");
- settings4.setValue(QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"), QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"));
- settings4.sync();
-
- QSettings settings5(QSettings::IniFormat, QSettings::UserScope, "other.software.org", "KillerAPP");
- settings5.setIniCodec("ISO 8859-1");
- settings5.setValue(QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"), QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"));
- settings5.sync();
-
- {
- QFile inFile(settings4.fileName());
- inFile.open(QIODevice::ReadOnly);
- actualContents4 = inFile.readAll();
- inFile.close();
- }
-
- {
- QFile inFile(settings5.fileName());
- inFile.open(QIODevice::ReadOnly);
- actualContents5 = inFile.readAll();
- inFile.close();
- }
- }
-
- QConfFile::clearCache();
-
- QCOMPARE(actualContents4, expeContents4);
- QCOMPARE(actualContents5, expeContents5);
-
- QSettings settings4(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP");
- settings4.setIniCodec("UTF-8");
- QSettings settings5(QSettings::IniFormat, QSettings::UserScope, "other.software.org", "KillerAPP");
- settings5.setIniCodec("Latin-1");
-
- QCOMPARE(settings4.allKeys().count(), 1);
- QCOMPARE(settings5.allKeys().count(), 1);
-
- QCOMPARE(settings4.allKeys().first(), settings5.allKeys().first());
- QCOMPARE(settings4.value(settings4.allKeys().first()).toString(),
- settings5.value(settings5.allKeys().first()).toString());
-#endif
-}
-
-static bool containsSubList(QStringList mom, QStringList son)
-{
- for (int i = 0; i < son.size(); ++i) {
- if (!mom.contains(son.at(i)))
- return false;
- }
- return true;
-}
-
-void tst_QSettings::testArrays_data()
-{
- populateWithFormats();
-}
-
-/*
- Tests beginReadArray(), beginWriteArray(), endArray(), and
- setArrayIndex().
-*/
-void tst_QSettings::testArrays()
-{
- QFETCH(QSettings::Format, format);
-
- {
- QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
-
- settings1.beginWriteArray("foo/bar", 3);
- settings1.setValue("bip", 1);
- settings1.setArrayIndex(0);
- settings1.setValue("ene", 2);
- settings1.setValue("due", 3);
- settings1.setValue("rike", 4);
- settings1.setArrayIndex(1);
- settings1.setValue("ene", 5);
- settings1.setValue("due", 6);
- settings1.setValue("rike", 7);
- settings1.setArrayIndex(2);
- settings1.setValue("ene", 8);
- settings1.setValue("due", 9);
- settings1.setValue("rike", 10);
- settings1.endArray();
-
- QStringList expectedList;
- expectedList
- << "foo/bar/bip"
- << "foo/bar/size"
- << "foo/bar/1/ene"
- << "foo/bar/1/due"
- << "foo/bar/1/rike"
- << "foo/bar/2/ene"
- << "foo/bar/2/due"
- << "foo/bar/2/rike"
- << "foo/bar/3/ene"
- << "foo/bar/3/due"
- << "foo/bar/3/rike";
- expectedList.sort();
-
- QStringList actualList = settings1.allKeys();
- actualList.sort();
- QVERIFY(containsSubList(actualList, expectedList));
-
- QCOMPARE(settings1.value("/foo/bar/bip").toInt(), 1);
- QCOMPARE(settings1.value("/foo/bar/1/ene").toInt(), 2);
- QCOMPARE(settings1.value("/foo/bar/1/due").toInt(), 3);
- QCOMPARE(settings1.value("/foo/bar/1/rike").toInt(), 4);
- QCOMPARE(settings1.value("/foo/bar/2/ene").toInt(), 5);
- QCOMPARE(settings1.value("/foo/bar/2/due").toInt(), 6);
- QCOMPARE(settings1.value("/foo/bar/2/rike").toInt(), 7);
- QCOMPARE(settings1.value("/foo/bar/3/ene").toInt(), 8);
- QCOMPARE(settings1.value("/foo/bar/3/due").toInt(), 9);
- QCOMPARE(settings1.value("/foo/bar/3/rike").toInt(), 10);
-
- settings1.beginGroup("/foo");
- int count = settings1.beginReadArray("bar");
- QCOMPARE(count, 3);
- QCOMPARE(settings1.value("bip").toInt(), 1);
- settings1.setArrayIndex(0);
- QCOMPARE(settings1.value("ene").toInt(), 2);
- QCOMPARE(settings1.value("due").toInt(), 3);
- QCOMPARE(settings1.value("rike").toInt(), 4);
- QCOMPARE(settings1.allKeys().count(), 3);
- settings1.setArrayIndex(1);
- QCOMPARE(settings1.value("ene").toInt(), 5);
- QCOMPARE(settings1.value("due").toInt(), 6);
- QCOMPARE(settings1.value("rike").toInt(), 7);
- QCOMPARE(settings1.allKeys().count(), 3);
- settings1.setArrayIndex(2);
- QCOMPARE(settings1.value("ene").toInt(), 8);
- QCOMPARE(settings1.value("due").toInt(), 9);
- QCOMPARE(settings1.value("rike").toInt(), 10);
- QCOMPARE(settings1.allKeys().count(), 3);
-
- settings1.endArray();
- settings1.endGroup();
- }
- /*
- Check that we get the arrays right when we load them again
- */
-
- {
- QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
-
- QStringList expectedList;
- expectedList
- << "foo/bar/bip"
- << "foo/bar/size"
- << "foo/bar/1/ene"
- << "foo/bar/1/due"
- << "foo/bar/1/rike"
- << "foo/bar/2/ene"
- << "foo/bar/2/due"
- << "foo/bar/2/rike"
- << "foo/bar/3/ene"
- << "foo/bar/3/due"
- << "foo/bar/3/rike";
- expectedList.sort();
-
- QStringList actualList = settings1.allKeys();
- actualList.sort();
- QVERIFY(containsSubList(actualList, expectedList));
-
- QCOMPARE(settings1.value("/foo/bar/bip").toInt(), 1);
- QCOMPARE(settings1.value("/foo/bar/1/ene").toInt(), 2);
- QCOMPARE(settings1.value("/foo/bar/1/due").toInt(), 3);
- QCOMPARE(settings1.value("/foo/bar/1/rike").toInt(), 4);
- QCOMPARE(settings1.value("/foo/bar/2/ene").toInt(), 5);
- QCOMPARE(settings1.value("/foo/bar/2/due").toInt(), 6);
- QCOMPARE(settings1.value("/foo/bar/2/rike").toInt(), 7);
- QCOMPARE(settings1.value("/foo/bar/3/ene").toInt(), 8);
- QCOMPARE(settings1.value("/foo/bar/3/due").toInt(), 9);
- QCOMPARE(settings1.value("/foo/bar/3/rike").toInt(), 10);
-
- settings1.beginGroup("/foo");
- int count = settings1.beginReadArray("bar");
- QCOMPARE(count, 3);
- QCOMPARE(settings1.value("bip").toInt(), 1);
- settings1.setArrayIndex(0);
- QCOMPARE(settings1.value("ene").toInt(), 2);
- QCOMPARE(settings1.value("due").toInt(), 3);
- QCOMPARE(settings1.value("rike").toInt(), 4);
- QCOMPARE(settings1.allKeys().count(), 3);
- settings1.setArrayIndex(1);
- QCOMPARE(settings1.value("ene").toInt(), 5);
- QCOMPARE(settings1.value("due").toInt(), 6);
- QCOMPARE(settings1.value("rike").toInt(), 7);
- QCOMPARE(settings1.allKeys().count(), 3);
- settings1.setArrayIndex(2);
- QCOMPARE(settings1.value("ene").toInt(), 8);
- QCOMPARE(settings1.value("due").toInt(), 9);
- QCOMPARE(settings1.value("rike").toInt(), 10);
- QCOMPARE(settings1.allKeys().count(), 3);
-
- settings1.endArray();
- settings1.endGroup();
- }
- /*
- This code generates lots of warnings, but that's on purpose.
- Basically, we check that endGroup() can be used instead of
- endArray() and vice versa. This is not documented, but this
- is the behavior that we have chosen.
- */
- QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
- settings1.clear();
- settings1.beginGroup("/alpha");
- QCOMPARE(settings1.group(), QString("alpha"));
- settings1.setArrayIndex(0);
- QCOMPARE(settings1.group(), QString("alpha"));
- settings1.setArrayIndex(1);
- QCOMPARE(settings1.group(), QString("alpha"));
- settings1.setArrayIndex(2);
- QCOMPARE(settings1.group(), QString("alpha"));
- settings1.beginGroup("/beta");
- QCOMPARE(settings1.group(), QString("alpha/beta"));
- settings1.beginGroup("");
- QCOMPARE(settings1.group(), QString("alpha/beta"));
- settings1.beginWriteArray("DO", 4);
- QCOMPARE(settings1.value("size").toInt(), 4);
- QCOMPARE(settings1.group(), QString("alpha/beta/DO"));
- settings1.setArrayIndex(0);
- QCOMPARE(settings1.group(), QString("alpha/beta/DO/1"));
- settings1.setArrayIndex(1);
- QCOMPARE(settings1.group(), QString("alpha/beta/DO/2"));
- settings1.beginGroup("1");
- QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
- settings1.setArrayIndex(3);
- QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
- settings1.setArrayIndex(4);
- QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
- settings1.beginWriteArray("RE");
- QVERIFY(!settings1.contains("size"));
- QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1/RE"));
- settings1.setArrayIndex(0);
- QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1/RE/1"));
- settings1.setArrayIndex(1);
- QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1/RE/2"));
- settings1.endArray();
- QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
- settings1.endArray();
- QCOMPARE(settings1.group(), QString("alpha/beta/DO/2"));
- settings1.setArrayIndex(2);
- QCOMPARE(settings1.group(), QString("alpha/beta/DO/3"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString("alpha/beta"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString("alpha/beta"));
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString("alpha"));
- settings1.endArray();
- QCOMPARE(settings1.group(), QString());
- settings1.endGroup();
- QCOMPARE(settings1.group(), QString());
-
- /*
- Now, let's make sure that things work well if an array
- is spread across multiple files.
- */
- int i;
-
- settings1.clear();
- QSettings settings2(format, QSettings::UserScope, "software.org");
-
- QStringList threeStrings;
- threeStrings << "Uno" << "Dos" << "Tres";
-
- QStringList fiveStrings;
- fiveStrings << "alpha" << "beta" << "gamma" << "delta" << "epsilon";
-
- settings1.beginWriteArray("strings");
- for (i = threeStrings.size() - 1; i >= 0; --i) {
- settings1.setArrayIndex(i);
- settings1.setValue("fileName", threeStrings.at(i));
- }
- settings1.endArray();
-
- settings2.beginWriteArray("strings");
- for (i = fiveStrings.size() - 1; i >= 0; --i) {
- settings2.setArrayIndex(i);
- settings2.setValue("fileName", fiveStrings.at(i));
- }
- settings2.endArray();
-
- int size1 = settings1.beginReadArray("strings");
- QCOMPARE(size1, 3);
- QCOMPARE(settings1.value("size").toInt(), 3);
-
- for (i = 0; i < size1; ++i) {
- settings1.setArrayIndex(i);
- QString str = settings1.value("fileName").toString();
- QCOMPARE(str, threeStrings.at(i));
- }
- settings1.endArray();
-
- int size2 = settings2.beginReadArray("strings");
- QCOMPARE(size2, 5);
- QCOMPARE(settings2.value("size").toInt(), 5);
-
- for (i = 0; i < size2; ++i) {
- settings2.setArrayIndex(i);
- QString str = settings2.value("fileName").toString();
- QCOMPARE(str, fiveStrings.at(i));
- }
- settings2.endArray();
-
- size1 = settings1.beginReadArray("strings");
- QCOMPARE(size1, 3);
-
- // accessing entries beyond the end of settings1 goes to settings2
- for (i = size1; i < size2; ++i) {
- settings1.setArrayIndex(i);
- QString str = settings1.value("fileName").toString();
- QCOMPARE(str, fiveStrings.at(i));
- }
- settings1.endArray();
-}
-
-#ifdef QT_BUILD_INTERNAL
-static QByteArray iniEscapedKey(const QString &str)
-{
- QByteArray result;
- QSettingsPrivate::iniEscapedKey(str, result);
- return result;
-}
-
-static QString iniUnescapedKey(const QByteArray &ba)
-{
- QString result;
- QSettingsPrivate::iniUnescapedKey(ba, 0, ba.size(), result);
- return result;
-}
-
-static QByteArray iniEscapedStringList(const QStringList &strList)
-{
- QByteArray result;
- QSettingsPrivate::iniEscapedStringList(strList, result, 0);
- return result;
-}
-
-static QStringList iniUnescapedStringList(const QByteArray &ba)
-{
- QStringList result;
- QString str;
-#if QSETTINGS_P_H_VERSION >= 2
- bool isStringList = QSettingsPrivate::iniUnescapedStringList(ba, 0, ba.size(), str, result
-#if QSETTINGS_P_H_VERSION >= 3
- , 0
-#endif
- );
- if (!isStringList)
- result = QStringList(str);
-#else
- QStringList *strList = QSettingsPrivate::iniUnescapedStringList(ba, 0, ba.size(), str);
- if (strList) {
- result = *strList;
- delete strList;
- } else {
- result = QStringList(str);
- }
-#endif
- return result;
-}
-#endif
-
-QString escapeWeirdChars(const QString &s)
-{
- QString result;
- bool escapeNextDigit = false;
-
- for (int i = 0; i < s.length(); ++i) {
- QChar c = s.at(i);
- if (c.unicode() < ' ' || c.unicode() > '~'
- || (escapeNextDigit && c.unicode() >= '0' && c.unicode() <= 'f')) {
- result += QString("\\x%1").arg(c.unicode(), 0, 16);
- escapeNextDigit = true;
- } else {
- result += c;
- escapeNextDigit = false;
- }
- }
-
- return result;
-}
-
-void tst_QSettings::testEscapes()
-{
-#ifdef QT_BUILD_INTERNAL
- QSettings settings(QSettings::UserScope, "software.org", "KillerAPP");
-
-#define testEscapedKey(plainKey, escKey) \
- QCOMPARE(iniEscapedKey(plainKey), QByteArray(escKey)); \
- QCOMPARE(iniUnescapedKey(escKey), QString(plainKey));
-
-#define testUnescapedKey(escKey, plainKey, reescKey) \
- QCOMPARE(iniUnescapedKey(escKey), QString(plainKey)); \
- QCOMPARE(iniEscapedKey(plainKey), QByteArray(reescKey)); \
- QCOMPARE(iniUnescapedKey(reescKey), QString(plainKey));
-
-#define testEscapedStringList(plainStrList, escStrList) \
- { \
- QStringList plainList(plainStrList); \
- QByteArray escList(escStrList); \
- QCOMPARE(iniEscapedStringList(plainList), escList); \
- QCOMPARE(iniUnescapedStringList(escList), plainList); \
- } \
-
-
-#define testUnescapedStringList(escStrList, plainStrList, reescStrList) \
- { \
- QStringList plainList(plainStrList); \
- QByteArray escList(escStrList); \
- QByteArray reescList(reescStrList); \
- QCOMPARE(iniUnescapedStringList(escList), plainList); \
- QCOMPARE(iniEscapedStringList(plainList), reescList); \
- QCOMPARE(iniUnescapedStringList(reescList), plainList); \
- } \
-
-
-#define testVariant(val, escStr, func) \
- { \
- QVariant v(val); \
- QString s = QSettingsPrivate::variantToString(v); \
- /*qDebug() << QString("testVariant(): reference=\"%1\" result=\"%2\"").arg(escStr).arg(s); */\
- QCOMPARE(s, escStr); \
- QCOMPARE(QVariant(QSettingsPrivate::stringToVariant(escStr)), v); \
- QVERIFY(val == v.func()); \
- }
-
-#define testBadEscape(escStr, vStr) \
- { \
- QVariant v = QSettingsPrivate::stringToVariant(QString(escStr)); \
- QCOMPARE(v.toString(), QString(vStr)); \
- }
-
- testEscapedKey("", "");
- testEscapedKey(" ", "%20");
- testEscapedKey(" 0123 abcd ", "%200123%20abcd%20");
- testEscapedKey("~!@#$%^&*()_+.-/\\=", "%7E%21%40%23%24%25%5E%26%2A%28%29_%2B.-\\%5C%3D");
- testEscapedKey(QString() + QChar(0xabcd) + QChar(0x1234) + QChar(0x0081), "%UABCD%U1234%81");
- testEscapedKey(QString() + QChar(0xFE) + QChar(0xFF) + QChar(0x100) + QChar(0x101), "%FE%FF%U0100%U0101");
-
- testUnescapedKey("", "", "");
- testUnescapedKey("%20", " ", "%20");
- testUnescapedKey("/alpha/beta", "/alpha/beta", "\\alpha\\beta");
- testUnescapedKey("\\alpha\\beta", "/alpha/beta", "\\alpha\\beta");
- testUnescapedKey("%5Calpha%5Cbeta", "\\alpha\\beta", "%5Calpha%5Cbeta");
- testUnescapedKey("%", "%", "%25");
- testUnescapedKey("%f%!%%%%1x%x1%U%Uz%U123%U1234%1234%", QString("%f%!%%%%1x%x1%U%Uz%U123") + QChar(0x1234) + "\x12" + "34%",
- "%25f%25%21%25%25%25%251x%25x1%25U%25Uz%25U123%U1234%1234%25");
-
- testEscapedStringList("", "");
- testEscapedStringList(" ", "\" \"");
- testEscapedStringList(";", "\";\"");
- testEscapedStringList(",", "\",\"");
- testEscapedStringList("=", "\"=\"");
- testEscapedStringList("abc-def", "abc-def");
- testEscapedStringList(QChar(0) + QString("0"), "\\0\\x30");
- testEscapedStringList("~!@#$%^&*()_+.-/\\=", "\"~!@#$%^&*()_+.-/\\\\=\"");
- testEscapedStringList("~!@#$%^&*()_+.-/\\", "~!@#$%^&*()_+.-/\\\\");
- testEscapedStringList(QString("\x7F") + "12aFz", "\\x7f\\x31\\x32\\x61\\x46z");
- testEscapedStringList(QString(" \t\n\\n") + QChar(0x123) + QChar(0x4567), "\" \\t\\n\\\\n\\x123\\x4567\"");
- testEscapedStringList(QString("\a\b\f\n\r\t\v'\"?\001\002\x03\x04"), "\\a\\b\\f\\n\\r\\t\\v'\\\"?\\x1\\x2\\x3\\x4");
- testEscapedStringList(QStringList() << "," << ";" << "a" << "ab, \tc, d ", "\",\", \";\", a, \"ab, \\tc, d \"");
-
- /*
- Test .ini syntax that cannot be generated by QSettings (but can be entered by users).
- */
- testUnescapedStringList("", "", "");
- testUnescapedStringList("\"\"", "", "");
- testUnescapedStringList("\"abcdef\"", "abcdef", "abcdef");
- testUnescapedStringList("\"\\?\\'\\\"\"", "?'\"", "?'\\\"");
- testUnescapedStringList("\\0\\00\\000\\0000000\\1\\111\\11111\\x\\x0\\xABCDEFGH\\x0123456\\",
- QString() + QChar(0) + QChar(0) + QChar(0) + QChar(0) + QChar(1)
- + QChar(0111) + QChar(011111) + QChar(0) + QChar(0xCDEF) + "GH"
- + QChar(0x3456),
- "\\0\\0\\0\\0\\x1I\\x1249\\0\\xcdefGH\\x3456");
- testUnescapedStringList(QByteArray("\\c\\d\\e\\f\\g\\$\\*\\\0", 16), "\f", "\\f");
- testUnescapedStringList("\"a\", \t\"bc \", \" d\" , \"ef \" ,,g, hi i,,, ,",
- QStringList() << "a" << "bc " << " d" << "ef " << "" << "g" << "hi i"
- << "" << "" << "" << "",
- "a, \"bc \", \" d\", \"ef \", , g, hi i, , , , ");
- testUnescapedStringList("a , b , c d , efg ",
- QStringList() << "a" << "b" << "c d" << "efg",
- "a, b, c d, efg");
-
- // streaming qvariant into a string
- testVariant(QString("Hello World!"), QString("Hello World!"), toString);
- testVariant(QString("Hello, World!"), QString("Hello, World!"), toString);
- testVariant(QString("@Hello World!"), QString("@@Hello World!"), toString);
- testVariant(QString("@@Hello World!"), QString("@@@Hello World!"), toString);
- testVariant(QByteArray("Hello World!"), QString("@ByteArray(Hello World!)"), toString);
- testVariant(QByteArray("@Hello World!"), QString("@ByteArray(@Hello World!)"), toString);
- testVariant(QVariant(100), QString("100"), toString);
- testVariant(QStringList() << "ene" << "due" << "rike", QString::fromLatin1("@Variant(\x0\x0\x0\xb\x0\x0\x0\x3\x0\x0\x0\x6\x0\x65\x0n\x0\x65\x0\x0\x0\x6\x0\x64\x0u\x0\x65\x0\x0\x0\x8\x0r\x0i\x0k\x0\x65)", 50), toStringList);
- testVariant(QRect(1, 2, 3, 4), QString("@Rect(1 2 3 4)"), toRect);
- testVariant(QSize(5, 6), QString("@Size(5 6)"), toSize);
- testVariant(QPoint(7, 8), QString("@Point(7 8)"), toPoint);
-
- testBadEscape("", "");
- testBadEscape("@", "@");
- testBadEscape("@@", "@");
- testBadEscape("@@@", "@@");
- testBadEscape(" ", " ");
- testBadEscape("@Rect", "@Rect");
- testBadEscape("@Rect(", "@Rect(");
- testBadEscape("@Rect()", "@Rect()");
- testBadEscape("@Rect)", "@Rect)");
- testBadEscape("@Rect(1 2 3)", "@Rect(1 2 3)");
- testBadEscape("@@Rect(1 2 3)", "@Rect(1 2 3)");
-#endif
-}
-
-void tst_QSettings::testCaseSensitivity_data()
-{
- populateWithFormats();
-}
-
-void tst_QSettings::testCaseSensitivity()
-{
- QFETCH(QSettings::Format, format);
-
- for (int pass = 0; pass < 2; ++pass) {
- QSettings settings(format, QSettings::UserScope, "software.org", "KillerAPP");
- settings.beginGroup("caseSensitivity");
-
- bool cs = true;
-#ifndef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
- switch (format) {
- case QSettings::NativeFormat:
-#ifdef Q_OS_DARWIN
- cs = true;
-#else
- cs = false;
-#endif
- break;
- case QSettings::IniFormat:
- cs = false;
- break;
- case QSettings::CustomFormat1:
- cs = true;
- break;
- case QSettings::CustomFormat2:
- cs = false;
- break;
- default:
- ;
- }
-#endif
-
- if (pass == 0) {
- settings.setValue("key 1", 1);
- settings.setValue("KEY 1", 2);
- settings.setValue("key 2", 3);
- }
-
- for (int i = 0; i < 2; ++i) {
- QVERIFY(settings.contains("key 1"));
- QVERIFY(settings.contains("KEY 1"));
- QCOMPARE(settings.value("KEY 1").toInt(), 2);
-/* QVERIFY(settings.allKeys().contains("/KEY 1"));
- QVERIFY(settings.allKeys().contains("/key 2")); */
-
- if (cs) {
- QVERIFY(!settings.contains("kEy 1"));
- QCOMPARE(settings.value("key 1").toInt(), 1);
- QCOMPARE(settings.allKeys().size(), 3);
- QVERIFY(settings.allKeys().contains("key 1"));
- } else {
- QVERIFY(settings.contains("kEy 1"));
- QCOMPARE(settings.value("kEy 1").toInt(), 2);
- QCOMPARE(settings.value("key 1").toInt(), 2);
- QCOMPARE(settings.allKeys().size(), 2);
- }
-
- settings.sync();
- }
-
- settings.remove("KeY 1");
-
- if (cs) {
- QVERIFY(!settings.contains("KeY 1"));
- QVERIFY(settings.contains("key 1"));
- QVERIFY(settings.contains("KEY 1"));
- QCOMPARE(settings.value("key 1").toInt(), 1);
- QCOMPARE(settings.value("KEY 1").toInt(), 2);
- QCOMPARE(settings.allKeys().size(), 3);
- } else {
- QVERIFY(!settings.contains("KeY 1"));
- QVERIFY(!settings.contains("key 1"));
- QVERIFY(!settings.contains("KEY 1"));
- QCOMPARE(settings.allKeys().size(), 1);
- }
- settings.setValue("KEY 1", 2);
- }
-}
-
-void tst_QSettings::fileName()
-{
-#ifdef Q_OS_MAC
- QSettings s1(QSettings::UserScope, "Apple", "Console");
- QSettings s2(QSettings::UserScope, "Apple");
- QSettings s3(QSettings::SystemScope, "Apple", "Console");
- QSettings s4(QSettings::SystemScope, "Apple");
-
- QCOMPARE(s1.fileName(), QDir::homePath() + "/Library/Preferences/com.apple.Console.plist");
- QCOMPARE(s2.fileName(), QDir::homePath() + "/Library/Preferences/com.apple.plist");
- QCOMPARE(s3.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
- QCOMPARE(s4.fileName(), QString("/Library/Preferences/com.apple.plist"));
-
- QSettings s5(QSettings::SystemScope, "Apple.com", "Console");
- QCOMPARE(s5.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
-
- QSettings s6(QSettings::SystemScope, "apple.com", "Console");
- QCOMPARE(s6.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
-
- QSettings s7(QSettings::SystemScope, "apple.Com", "Console");
- QCOMPARE(s7.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
-
- QSettings s8(QSettings::SystemScope, "apple.fr", "Console");
- QCOMPARE(s8.fileName(), QString("/Library/Preferences/fr.apple.Console.plist"));
-
- QSettings s9(QSettings::SystemScope, "apple.co.jp", "Console");
- QCOMPARE(s9.fileName(), QString("/Library/Preferences/jp.co.apple.Console.plist"));
-
- QSettings s10(QSettings::SystemScope, "apple.org", "Console");
- QCOMPARE(s10.fileName(), QString("/Library/Preferences/org.apple.Console.plist"));
-
- QSettings s11(QSettings::SystemScope, "apple.net", "Console");
- QCOMPARE(s11.fileName(), QString("/Library/Preferences/net.apple.Console.plist"));
-
- QSettings s12(QSettings::SystemScope, "apple.museum", "Console");
- QCOMPARE(s12.fileName(), QString("/Library/Preferences/museum.apple.Console.plist"));
-
- QSettings s13(QSettings::SystemScope, "apple.FR", "Console");
- QCOMPARE(s13.fileName(), QString("/Library/Preferences/fr.apple.Console.plist"));
-
- QSettings s14(QSettings::SystemScope, "apple.mUseum", "Console");
- QCOMPARE(s14.fileName(), QString("/Library/Preferences/museum.apple.Console.plist"));
-
- QSettings s15(QSettings::SystemScope, "apple.zz", "Console");
- QCOMPARE(s15.fileName(), QString("/Library/Preferences/zz.apple.Console.plist"));
-
- QSettings s15_prime(QSettings::SystemScope, "apple.foo", "Console");
- QCOMPARE(s15_prime.fileName(), QString("/Library/Preferences/com.apple-foo.Console.plist"));
-
- QSettings s16(QSettings::SystemScope, "apple.f", "Console");
- QCOMPARE(s16.fileName(), QString("/Library/Preferences/com.apple-f.Console.plist"));
-
- QSettings s17(QSettings::SystemScope, "apple.", "Console");
- QCOMPARE(s17.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
-
- QSettings s18(QSettings::SystemScope, "Foo, Inc.", "Console");
- QCOMPARE(s18.fileName(), QString("/Library/Preferences/com.foo-inc.Console.plist"));
-
- QSettings s19(QSettings::SystemScope, "Foo, Inc.com", "Console");
- QCOMPARE(s19.fileName(), QString("/Library/Preferences/com.foo, inc.Console.plist"));
-
- QSettings s20(QSettings::SystemScope, QLatin1String(" ") + QChar(0xbd) + QLatin1String("Foo//:/Barxxx Baz!()#@.com"), "Console");
- QCOMPARE(s20.fileName(), QLatin1String("/Library/Preferences/com. ") + QChar(0xbd) + QLatin1String("foo : barxxx baz!()#@.Console.plist"));
-
- QSettings s21(QSettings::SystemScope, QLatin1String(" ") + QChar(0xbd) + QLatin1String("Foo//:/Bar,,, Baz!()#"), "Console");
- QCOMPARE(s21.fileName(), QString("/Library/Preferences/com.foo-bar-baz.Console.plist"));
-#else
- QSKIP("Please write a fileName() test for the other platforms", SkipAll);
-#endif
-}
-
-void tst_QSettings::isWritable_data()
-{
- populateWithFormats();
-}
-
-void tst_QSettings::isWritable()
-{
- QFETCH(QSettings::Format, format);
-
- {
- QSettings s1(format, QSettings::UserScope, "software.org", "KillerAPP");
- s1.setValue("foo", 1);
- s1.sync();
- // that should create the file
- }
-
- {
- QSettings s1(format, QSettings::UserScope, "software.org", "KillerAPP");
- QVERIFY(s1.isWritable());
- }
-
- {
- QSettings s1(format, QSettings::SystemScope, "software.org", "KillerAPP");
- s1.setValue("foo", 1);
- s1.sync();
- // that should create the file, *if* we have the permissions
- }
-
- {
- QSettings s1(format, QSettings::SystemScope, "software.org", "KillerAPP");
- QSettings s2(format, QSettings::SystemScope, "software.org", "Something Different");
- QSettings s3(format, QSettings::SystemScope, "foo.org", "Something Different");
- if (s1.contains("foo")) {
- QVERIFY(s1.isWritable());
- QVERIFY(s2.isWritable());
- QVERIFY(s3.isWritable());
- } else {
- QVERIFY(!s1.isWritable());
- QVERIFY(!s2.isWritable());
- QVERIFY(!s3.isWritable());
- }
- }
-}
-
-void tst_QSettings::childGroups_data()
-{
- populateWithFormats();
-}
-
-void tst_QSettings::childGroups()
-{
-#ifdef QT_BUILD_INTERNAL
- QFETCH(QSettings::Format, format);
-
- {
- QSettings settings(format, QSettings::SystemScope, "software.org");
- settings.setValue("alpha", "1");
- settings.setValue("alpha/a", "2");
- settings.setValue("alpha/b", "3");
- settings.setValue("alpha/c", "4");
- settings.setValue("beta", "5");
- settings.setValue("gamma", "6");
- settings.setValue("gamma/d", "7");
- settings.setValue("gamma/d/e", "8");
- settings.setValue("gamma/f/g", "9");
- settings.setValue("omicron/h/i/j/x", "10");
- settings.setValue("omicron/h/i/k/y", "11");
- settings.setValue("zeta/z", "12");
- }
-
- for (int pass = 0; pass < 3; ++pass) {
- QConfFile::clearCache();
- QSettings settings(format, QSettings::SystemScope, "software.org");
- settings.setFallbacksEnabled(false);
- if (pass == 1) {
- settings.value("gamma/d");
- } else if (pass == 2) {
- settings.value("gamma");
- }
-
- settings.beginGroup("gamma");
- QCOMPARE(settings.childGroups(), QStringList() << "d" << "f");
- settings.beginGroup("d");
- QCOMPARE(settings.childGroups(), QStringList());
- settings.endGroup();
- settings.endGroup();
-
- settings.beginGroup("alpha");
- QCOMPARE(settings.childGroups(), QStringList());
- settings.endGroup();
-
- settings.beginGroup("d");
- QCOMPARE(settings.childGroups(), QStringList());
- settings.endGroup();
-
- settings.beginGroup("/omicron///h/i///");
- QCOMPARE(settings.childGroups(), QStringList() << "j" << "k");
- settings.endGroup();
-
- settings.beginGroup("////");
- QCOMPARE(settings.childGroups(), QStringList() << "alpha" << "gamma" << "omicron" << "zeta");
- settings.endGroup();
-
- QCOMPARE(settings.childGroups(), QStringList() << "alpha" << "gamma" << "omicron" << "zeta");
- }
-#endif
-}
-
-void tst_QSettings::childKeys_data()
-{
- populateWithFormats();
-}
-
-void tst_QSettings::childKeys()
-{
-#ifdef QT_BUILD_INTERNAL
- QFETCH(QSettings::Format, format);
-
- {
- QSettings settings(format, QSettings::SystemScope, "software.org");
- settings.setValue("alpha", "1");
- settings.setValue("alpha/a", "2");
- settings.setValue("alpha/b", "3");
- settings.setValue("alpha/c", "4");
- settings.setValue("beta", "5");
- settings.setValue("gamma", "6");
- settings.setValue("gamma/d", "7");
- settings.setValue("gamma/d/e", "8");
- settings.setValue("gamma/f/g", "9");
- settings.setValue("omicron/h/i/j/x", "10");
- settings.setValue("omicron/h/i/k/y", "11");
- settings.setValue("zeta/z", "12");
- }
-
- for (int pass = 0; pass < 3; ++pass) {
- QConfFile::clearCache();
- QSettings settings(format, QSettings::SystemScope, "software.org");
- settings.setFallbacksEnabled(false);
- if (pass == 1) {
- settings.value("gamma/d");
- } else if (pass == 2) {
- settings.value("gamma");
- }
-
- settings.beginGroup("gamma");
- QCOMPARE(settings.childKeys(), QStringList() << "d");
- settings.beginGroup("d");
- QCOMPARE(settings.childKeys(), QStringList() << "e");
- settings.endGroup();
- settings.endGroup();
-
- settings.beginGroup("alpha");
- QCOMPARE(settings.childKeys(), QStringList() << "a" << "b" << "c");
- settings.endGroup();
-
- settings.beginGroup("d");
- QCOMPARE(settings.childKeys(), QStringList());
- settings.endGroup();
-
- settings.beginGroup("/omicron///h/i///");
- QCOMPARE(settings.childKeys(), QStringList());
- settings.endGroup();
-
- settings.beginGroup("////");
- QCOMPARE(settings.childKeys(), QStringList() << "alpha" << "beta" << "gamma");
- settings.endGroup();
-
- QCOMPARE(settings.childKeys(), QStringList() << "alpha" << "beta" << "gamma");
- }
-#endif
-}
-
-void tst_QSettings::allKeys_data()
-{
- populateWithFormats();
-}
-
-void tst_QSettings::allKeys()
-{
-#ifdef QT_BUILD_INTERNAL
- QFETCH(QSettings::Format, format);
-
- QStringList allKeys;
- allKeys << "alpha" << "alpha/a" << "alpha/b" << "alpha/c" << "beta" << "gamma" << "gamma/d"
- << "gamma/d/e" << "gamma/f/g" << "omicron/h/i/j/x" << "omicron/h/i/k/y" << "zeta/z";
-
- {
- QSettings settings(format, QSettings::SystemScope, "software.org");
- for (int i = 0; i < allKeys.size(); ++i)
- settings.setValue(allKeys.at(i), QString::number(i + 1));
- }
-
- for (int pass = 0; pass < 3; ++pass) {
- QConfFile::clearCache();
- QSettings settings(format, QSettings::SystemScope, "software.org");
- settings.setFallbacksEnabled(false);
-
- if (pass == 1) {
- settings.value("gamma/d");
- } else if (pass == 2) {
- settings.value("gamma");
- }
-
- settings.beginGroup("gamma");
- QCOMPARE(settings.allKeys(), QStringList() << "d" << "d/e" << "f/g");
- settings.beginGroup("d");
- QCOMPARE(settings.allKeys(), QStringList() << "e");
- settings.endGroup();
- settings.endGroup();
-
- settings.beginGroup("alpha");
- QCOMPARE(settings.allKeys(), QStringList() << "a" << "b" << "c");
- settings.endGroup();
-
- settings.beginGroup("d");
- QCOMPARE(settings.allKeys(), QStringList());
- settings.endGroup();
-
- settings.beginGroup("/omicron///h/i///");
- QCOMPARE(settings.allKeys(), QStringList() << "j/x" << "k/y");
- settings.endGroup();
-
- settings.beginGroup("////");
- QCOMPARE(settings.allKeys(), allKeys);
- settings.endGroup();
-
- QCOMPARE(settings.allKeys(), allKeys);
- }
-#endif
-}
-
-void tst_QSettings::registerFormat()
-{
- QSettings settings1(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP");
- QSettings settings2(QSettings::CustomFormat1, QSettings::UserScope, "software.org", "KillerAPP");
-
- QString fileName = settings1.fileName();
- fileName.chop(3); // "ini";
- fileName.append("custom1");
- QCOMPARE(settings2.fileName(), fileName);
-
- // OK, let's see if it can read a generated file of a custom type
- // Beware: readCustom3File() and writeCustom3File() have unintuitive behavior
- // so we can test error handling
-
- QSettings::Format custom3 = QSettings::registerFormat("custom3", readCustom3File, writeCustom3File);
- QVERIFY(custom3 == QSettings::CustomFormat3);
-
- QDir dir(settingsPath());
- QVERIFY(dir.mkpath("someDir"));
- QFile f(dir.path()+"/someDir/someSettings.custom3");
-
- QVERIFY(f.open(QFile::WriteOnly));
- f.write("OK");
- f.close();
-
- {
- QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat3);
- QCOMPARE(settings.status(), QSettings::NoError);
- QCOMPARE(settings.value("retval").toString(), QString("OK"));
- QVERIFY(settings.isWritable());
- }
-
- QVERIFY(f.open(QFile::WriteOnly));
- f.write("NotOK");
- f.close();
-
- {
- QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat3);
- QCOMPARE(settings.status(), QSettings::FormatError);
- QCOMPARE(settings.value("retval").toString(), QString());
- QVERIFY(settings.isWritable());
- }
-
- QVERIFY(f.open(QFile::WriteOnly));
- f.write("OK");
- f.close();
-
- {
- QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat3);
- QCOMPARE(settings.status(), QSettings::NoError);
- settings.setValue("zzz", "bar");
- settings.sync();
- QCOMPARE(settings.status(), QSettings::NoError);
-
- settings.setValue("retval", "NotOK");
- settings.sync();
- QCOMPARE(settings.status(), QSettings::AccessError);
-
- QCOMPARE(settings.value("retval").toString(), QString("NotOK"));
- QVERIFY(settings.isWritable());
- }
-
- {
- QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat4);
- QCOMPARE(settings.status(), QSettings::AccessError);
- QVERIFY(!settings.isWritable());
- }
-}
-
-void tst_QSettings::setPath()
-{
-#define TEST_PATH(doSet, ext, format, scope, path) \
- { \
- if (doSet) \
- QSettings::setPath(QSettings::format, QSettings::scope, settingsPath(path)); \
- QSettings settings1(QSettings::format, QSettings::scope, "software.org", "KillerAPP"); \
- QCOMPARE(QDir(settings1.fileName()), QDir(settingsPath(path) + QDir::separator() + "software.org" \
- + QDir::separator() + "KillerAPP." + ext)); \
- }
-
- /*
- The first pass checks that setPath() works; the second
- path checks that it has no bad side effects.
- */
- for (int i = 0; i < 2; ++i) {
-#if !defined(Q_OS_WIN) && !defined(Q_OS_MAC)
- TEST_PATH(i == 0, "conf", NativeFormat, UserScope, "alpha")
- TEST_PATH(i == 0, "conf", NativeFormat, SystemScope, "beta")
-#endif
- TEST_PATH(i == 0, "ini", IniFormat, UserScope, "gamma")
- TEST_PATH(i == 0, "ini", IniFormat, SystemScope, "omicron")
- TEST_PATH(i == 0, "custom1", CustomFormat1, UserScope, "epsilon")
- TEST_PATH(i == 0, "custom1", CustomFormat1, SystemScope, "zeta")
- TEST_PATH(i == 0, "custom2", CustomFormat2, UserScope, "eta")
- TEST_PATH(i == 0, "custom2", CustomFormat2, SystemScope, "iota")
- }
-}
-
-void tst_QSettings::setDefaultFormat()
-{
- QVERIFY(QSettings::defaultFormat() == QSettings::NativeFormat);
-
- QSettings::setDefaultFormat(QSettings::CustomFormat1);
- QSettings settings1("org", "app");
- QSettings settings2(QSettings::SystemScope, "org", "app");
- QSettings settings3;
-
- QVERIFY(settings1.format() == QSettings::NativeFormat);
- QVERIFY(settings2.format() == QSettings::NativeFormat);
- QVERIFY(settings3.format() == QSettings::CustomFormat1);
-
- QSettings::setDefaultFormat(QSettings::NativeFormat);
- QVERIFY(QSettings::defaultFormat() == QSettings::NativeFormat);
-
- QVERIFY(settings1.format() == QSettings::NativeFormat);
- QVERIFY(settings2.format() == QSettings::NativeFormat);
- QVERIFY(settings3.format() == QSettings::CustomFormat1);
-}
-
-void tst_QSettings::dontCreateNeedlessPaths()
-{
- QString path;
- {
- QSettings settings(QSettings::IniFormat, QSettings::UserScope, "Hello", "Test");
- QVariant val = settings.value("foo", "bar");
- path = settings.fileName();
- }
-
- QFileInfo fileInfo(path);
- QVERIFY(!fileInfo.dir().exists());
-}
-
-#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
-void tst_QSettings::dontReorderIniKeysNeedlessly()
-{
-#ifdef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
- QSKIP("This Qt build does not preserve ordering, as a code size optimization.", SkipAll);
-#endif
-
- /*
- This is a very strong test. It asserts that modifying
- resourcefile2.ini will lead to the exact contents of
- resourcefile3.ini. Right now it's run only on Unix
- systems, but that should be enough since the INI
- code (unlike this test) is platform-agnostic.
-
- Things that are tested:
-
- * keys are written in the same order that they were
- read in
-
- * new keys are put at the end of their respective
- sections
- */
-
- QFile inFile(":/resourcefile2.ini");
- inFile.open(QIODevice::ReadOnly);
- QByteArray contentsBefore = inFile.readAll();
- inFile.close();
-
- QByteArray expectedContentsAfter;
-
- {
- QFile inFile(":/resourcefile3.ini");
- inFile.open(QIODevice::ReadOnly);
- expectedContentsAfter = inFile.readAll();
- inFile.close();
- }
-
- QString outFileName;
- QString outFileName2;
-
- QTemporaryFile outFile;
- outFile.open();
- outFile.write(contentsBefore);
- outFileName = outFile.fileName();
- outFile.close();
-
- QSettings settings(outFileName, QSettings::IniFormat);
- QVERIFY(settings.status() == QSettings::NoError);
- QVERIFY(settings.isWritable());
-
- settings.setValue("Field 1/Bottom", 90);
- settings.setValue("Field 1/x", 1);
- settings.setValue("Field 1/y", 1);
- settings.setValue("Field 1/width", 1);
- settings.setValue("Field 1/height", 1);
- settings.sync();
-
- QFile outFile2(outFileName);
- QVERIFY(outFile2.open(QIODevice::ReadOnly));
- QCOMPARE(outFile2.readAll(), expectedContentsAfter);
- outFile2.close();
-}
-#endif
-
-void tst_QSettings::rainersSyncBugOnMac_data()
-{
- ctor_data();
-}
-
-void tst_QSettings::rainersSyncBugOnMac()
-{
- QFETCH(QSettings::Format, format);
-
- QString fileName;
-
- {
- QSettings s1(format, QSettings::UserScope, "software.org", "KillerAPP");
- QCOMPARE(s1.value("key1", 5).toInt(), 5);
- fileName = s1.fileName();
- }
-
- {
- QSettings s2(fileName, format);
- s2.setValue("key1", 25);
- }
-
- {
- QSettings s3(format, QSettings::UserScope, "software.org", "KillerAPP");
- QCOMPARE(s3.value("key1", 30).toInt(), 25);
- }
-}
-
-void tst_QSettings::recursionBug()
-{
- QPixmap pix(10,10);
- pix.fill("blue");
-
- {
- QSettings settings(settingsPath("starrunner.ini"), QSettings::IniFormat);
- settings.setValue("General/Pixmap", pix );
- }
-}
-
-#if defined(Q_OS_WIN)
-
-static DWORD readKeyType(HKEY handle, const QString &rSubKey)
-{
- DWORD dataType;
- DWORD dataSize;
- LONG res = RegQueryValueEx(handle, reinterpret_cast<const wchar_t *>(rSubKey.utf16()), 0, &dataType, 0, &dataSize);
-
- if (res == ERROR_SUCCESS)
- return dataType;
-
- return 0;
-}
-
-void tst_QSettings::qtbug_13249()
-{
- QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
-
- qint32 x = 1024;
- settings1.setValue("qtbug_13249_a", (qint32)x);
- QCOMPARE(settings1.value("qtbug_13249_a").toInt(), (qint32)1024);
- settings1.setValue("qtbug_13249_b", (quint32)x);
- QCOMPARE(settings1.value("qtbug_13249_b").toUInt(), (quint32)1024);
- settings1.setValue("qtbug_13249_c", (qint64)x);
- QCOMPARE(settings1.value("qtbug_13249_c").toLongLong(), (qint64)1024);
- settings1.setValue("qtbug_13249_d", (quint64)x);
- QCOMPARE(settings1.value("qtbug_13249_d").toULongLong(), (quint64)1024);
- settings1.sync();
-
- HKEY handle;
- LONG res;
- QString keyName = "Software\\software.org\\KillerAPP";
- res = RegOpenKeyEx(HKEY_CURRENT_USER, reinterpret_cast<const wchar_t *>(keyName.utf16()), 0, KEY_READ, &handle);
- if (res == ERROR_SUCCESS)
- {
- DWORD dataType;
- dataType = readKeyType(handle, QString("qtbug_13249_a"));
- if (dataType != 0) {
- QCOMPARE((int)REG_DWORD, (int)dataType);
- }
- dataType = readKeyType(handle, QString("qtbug_13249_b"));
- if (dataType != 0) {
- QCOMPARE((int)REG_DWORD, (int)dataType);
- }
- dataType = readKeyType(handle, QString("qtbug_13249_c"));
- if (dataType != 0) {
- QCOMPARE((int)REG_QWORD, (int)dataType);
- }
- dataType = readKeyType(handle, QString("qtbug_13249_d"));
- if (dataType != 0) {
- QCOMPARE((int)REG_QWORD, (int)dataType);
- }
- RegCloseKey(handle);
- }
-}
-#endif
-/*
-// Not tested at the moment.
-void tst_QSettings::oldSubkeyList()
-{
- QVERIFY( TRUE );
-}
-*/
-
-QTEST_MAIN(tst_QSettings)
-#include "tst_qsettings.moc"
-
-
-// foo
diff --git a/tests/auto/qsharedpointer/qsharedpointer.pro b/tests/auto/qsharedpointer/qsharedpointer.pro
deleted file mode 100644
index 014006e782..0000000000
--- a/tests/auto/qsharedpointer/qsharedpointer.pro
+++ /dev/null
@@ -1,15 +0,0 @@
-load(qttest_p4)
-
-SOURCES += tst_qsharedpointer.cpp \
- forwarddeclaration.cpp \
- forwarddeclared.cpp \
- wrapper.cpp
-
-HEADERS += forwarddeclared.h \
- wrapper.h
-
-QT = core
-!symbian:DEFINES += SRCDIR=\\\"$$PWD/\\\"
-
-include(externaltests.pri)
-CONFIG += parallel_test
diff --git a/tests/auto/qsharedpointer_and_qwidget/qsharedpointer_and_qwidget.pro b/tests/auto/qsharedpointer_and_qwidget/qsharedpointer_and_qwidget.pro
index db647a55c5..c947e7a246 100644
--- a/tests/auto/qsharedpointer_and_qwidget/qsharedpointer_and_qwidget.pro
+++ b/tests/auto/qsharedpointer_and_qwidget/qsharedpointer_and_qwidget.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qsharedpointer_and_qwidget.cpp
DEFINES += SRCDIR=\\\"$$PWD/\\\"
diff --git a/tests/auto/qsharedpointer_and_qwidget/tst_qsharedpointer_and_qwidget.cpp b/tests/auto/qsharedpointer_and_qwidget/tst_qsharedpointer_and_qwidget.cpp
index 0bdf6c64cf..90b71c517c 100644
--- a/tests/auto/qsharedpointer_and_qwidget/tst_qsharedpointer_and_qwidget.cpp
+++ b/tests/auto/qsharedpointer_and_qwidget/tst_qsharedpointer_and_qwidget.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include <QtGui/QWidget>
-#include <QtGui/QPushButton>
+#include <QtWidgets/QWidget>
+#include <QtWidgets/QPushButton>
#include <QtTest/QtTest>
QT_BEGIN_NAMESPACE
diff --git a/tests/auto/qshortcut/qshortcut.pro b/tests/auto/qshortcut/qshortcut.pro
deleted file mode 100644
index 61e24b570a..0000000000
--- a/tests/auto/qshortcut/qshortcut.pro
+++ /dev/null
@@ -1,10 +0,0 @@
-load(qttest_p4)
-
-# Project Configuration ----------------------------------------------
-INCLUDEPATH += ../
-
-# Normal Test Files --------------------------------------------------
-HEADERS +=
-SOURCES += tst_qshortcut.cpp
-
-
diff --git a/tests/auto/qsidebar/qsidebar.pro b/tests/auto/qsidebar/qsidebar.pro
index 3ace4fe8a5..6487d201a4 100644
--- a/tests/auto/qsidebar/qsidebar.pro
+++ b/tests/auto/qsidebar/qsidebar.pro
@@ -1,6 +1,7 @@
CONFIG += qttest_p4
QT += core-private
+QT += widgets widgets-private
SOURCES += tst_qsidebar.cpp
TARGET = tst_qsidebar
diff --git a/tests/auto/qsidebar/tst_qsidebar.cpp b/tests/auto/qsidebar/tst_qsidebar.cpp
index 1104a17654..4a7123567d 100644
--- a/tests/auto/qsidebar/tst_qsidebar.cpp
+++ b/tests/auto/qsidebar/tst_qsidebar.cpp
@@ -41,8 +41,8 @@
#include <QtTest/QtTest>
-#include "../../../src/gui/dialogs/qsidebar_p.h"
-#include "../../../src/gui/dialogs/qfilesystemmodel_p.h"
+#include "../../../src/widgets/dialogs/qsidebar_p.h"
+#include "../../../src/widgets/dialogs/qfilesystemmodel_p.h"
//TESTED_CLASS=
//TESTED_FILES=
diff --git a/tests/auto/qsignalmapper/qsignalmapper.pro b/tests/auto/qsignalmapper/qsignalmapper.pro
deleted file mode 100644
index 3215a5943d..0000000000
--- a/tests/auto/qsignalmapper/qsignalmapper.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qsignalmapper.cpp
-
-
-
diff --git a/tests/auto/qsizegrip/qsizegrip.pro b/tests/auto/qsizegrip/qsizegrip.pro
index 7bc43d5283..da6dd5af49 100644
--- a/tests/auto/qsizegrip/qsizegrip.pro
+++ b/tests/auto/qsizegrip/qsizegrip.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
INCLUDEPATH += .
+QT += widgets
SOURCES += tst_qsizegrip.cpp
diff --git a/tests/auto/qslider/qslider.pro b/tests/auto/qslider/qslider.pro
index 32fcc81941..41f011649d 100644
--- a/tests/auto/qslider/qslider.pro
+++ b/tests/auto/qslider/qslider.pro
@@ -3,7 +3,7 @@
############################################################
load(qttest_p4)
-
+QT += widgets
SOURCES += tst_qslider.cpp
diff --git a/tests/auto/qsocketnotifier/qsocketnotifier.pro b/tests/auto/qsocketnotifier/qsocketnotifier.pro
deleted file mode 100644
index c0fdc6a9b3..0000000000
--- a/tests/auto/qsocketnotifier/qsocketnotifier.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qsocketnotifier.cpp
-QT = core-private network-private
-
-requires(contains(QT_CONFIG,private_tests))
-
-include(../platformsocketengine/platformsocketengine.pri)
-
-symbian: TARGET.CAPABILITY = NetworkServices
-
-
diff --git a/tests/auto/qsocketnotifier/tst_qsocketnotifier.cpp b/tests/auto/qsocketnotifier/tst_qsocketnotifier.cpp
deleted file mode 100644
index 77836b4671..0000000000
--- a/tests/auto/qsocketnotifier/tst_qsocketnotifier.cpp
+++ /dev/null
@@ -1,359 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <QtCore/QCoreApplication>
-#include <QtCore/QSocketNotifier>
-#include <QtNetwork/QTcpServer>
-#include <QtNetwork/QTcpSocket>
-#ifdef Q_OS_SYMBIAN
-#include <private/qsymbiansocketengine_p.h>
-#define NATIVESOCKETENGINE QSymbianSocketEngine
-#else
-#include <private/qnativesocketengine_p.h>
-#define NATIVESOCKETENGINE QNativeSocketEngine
-#endif
-#ifdef Q_OS_UNIX
-#include <private/qnet_unix_p.h>
-#endif
-#include <limits>
-#include <sys/select.h>
-
-class tst_QSocketNotifier : public QObject
-{
- Q_OBJECT
-public:
- tst_QSocketNotifier();
- ~tst_QSocketNotifier();
-
-private slots:
- void unexpectedDisconnection();
- void mixingWithTimers();
- void posixSockets();
- void bogusFds();
-};
-
-tst_QSocketNotifier::tst_QSocketNotifier()
-{ }
-
-tst_QSocketNotifier::~tst_QSocketNotifier()
-{
-}
-
-class UnexpectedDisconnectTester : public QObject
-{
- Q_OBJECT
-public:
- NATIVESOCKETENGINE *readEnd1, *readEnd2;
- int sequence;
-
- UnexpectedDisconnectTester(NATIVESOCKETENGINE *s1, NATIVESOCKETENGINE *s2)
- : readEnd1(s1), readEnd2(s2), sequence(0)
- {
- QSocketNotifier *notifier1 =
- new QSocketNotifier(readEnd1->socketDescriptor(), QSocketNotifier::Read, this);
- connect(notifier1, SIGNAL(activated(int)), SLOT(handleActivated()));
- QSocketNotifier *notifier2 =
- new QSocketNotifier(readEnd2->socketDescriptor(), QSocketNotifier::Read, this);
- connect(notifier2, SIGNAL(activated(int)), SLOT(handleActivated()));
- }
-
-public slots:
- void handleActivated()
- {
- char data1[1], data2[1];
- ++sequence;
- if (sequence == 1) {
- // read from both ends
- (void) readEnd1->read(data1, sizeof(data1));
- (void) readEnd2->read(data2, sizeof(data2));
- emit finished();
- } else if (sequence == 2) {
- // we should never get here
- QCOMPARE(readEnd2->read(data2, sizeof(data2)), qint64(-2));
- QVERIFY(readEnd2->isValid());
- }
- }
-
-signals:
- void finished();
-};
-
-void tst_QSocketNotifier::unexpectedDisconnection()
-{
-#ifdef Q_OS_SYMBIAN
- QSKIP("Symbian socket engine pseudo descriptors can't be used for QSocketNotifier", SkipAll);
-#else
- /*
- Given two sockets and two QSocketNotifiers registered on each
- their socket. If both sockets receive data, and the first slot
- invoked by one of the socket notifiers empties both sockets, the
- other notifier will also emit activated(). This results in
- unexpected disconnection in QAbstractSocket.
-
- The use case is that somebody calls one of the
- waitFor... functions in a QSocketNotifier activated slot, and
- the waitFor... functions do local selects that can empty both
- stdin and stderr while waiting for fex bytes to be written.
- */
-
- QTcpServer server;
- QVERIFY(server.listen(QHostAddress::LocalHost, 0));
-
- NATIVESOCKETENGINE readEnd1;
- readEnd1.initialize(QAbstractSocket::TcpSocket);
- bool b = readEnd1.connectToHost(server.serverAddress(), server.serverPort());
- QVERIFY(readEnd1.waitForWrite());
-// while (!b && readEnd1.state() != QAbstractSocket::ConnectedState)
-// b = readEnd1.connectToHost(server.serverAddress(), server.serverPort());
- QVERIFY(readEnd1.state() == QAbstractSocket::ConnectedState);
- QVERIFY(server.waitForNewConnection());
- QTcpSocket *writeEnd1 = server.nextPendingConnection();
- QVERIFY(writeEnd1 != 0);
-
- NATIVESOCKETENGINE readEnd2;
- readEnd2.initialize(QAbstractSocket::TcpSocket);
- b = readEnd2.connectToHost(server.serverAddress(), server.serverPort());
- QVERIFY(readEnd2.waitForWrite());
-// while (!b)
-// b = readEnd2.connectToHost(server.serverAddress(), server.serverPort());
- QVERIFY(readEnd2.state() == QAbstractSocket::ConnectedState);
- QVERIFY(server.waitForNewConnection());
- QTcpSocket *writeEnd2 = server.nextPendingConnection();
- QVERIFY(writeEnd2 != 0);
-
- writeEnd1->write("1", 1);
- writeEnd2->write("2", 1);
-
- writeEnd1->waitForBytesWritten();
- writeEnd2->waitForBytesWritten();
-
- writeEnd1->flush();
- writeEnd2->flush();
-
- UnexpectedDisconnectTester tester(&readEnd1, &readEnd2);
-
- QTimer timer;
- timer.setSingleShot(true);
- timer.start(30000);
- do {
- // we have to wait until sequence value changes
- // as any event can make us jump out processing
- QCoreApplication::processEvents(QEventLoop::WaitForMoreEvents);
- QVERIFY(timer.isActive()); //escape if test would hang
- } while(tester.sequence <= 0);
-
- QVERIFY(readEnd1.state() == QAbstractSocket::ConnectedState);
- QVERIFY(readEnd2.state() == QAbstractSocket::ConnectedState);
-
- QCOMPARE(tester.sequence, 2);
-
- readEnd1.close();
- readEnd2.close();
- writeEnd1->close();
- writeEnd2->close();
- server.close();
-#endif
-}
-
-class MixingWithTimersHelper : public QObject
-{
- Q_OBJECT
-
-public:
- MixingWithTimersHelper(QTimer *timer, QTcpServer *server);
-
- bool timerActivated;
- bool socketActivated;
-
-private slots:
- void timerFired();
- void socketFired();
-};
-
-MixingWithTimersHelper::MixingWithTimersHelper(QTimer *timer, QTcpServer *server)
-{
- timerActivated = false;
- socketActivated = false;
-
- connect(timer, SIGNAL(timeout()), SLOT(timerFired()));
- connect(server, SIGNAL(newConnection()), SLOT(socketFired()));
-}
-
-void MixingWithTimersHelper::timerFired()
-{
- timerActivated = true;
-}
-
-void MixingWithTimersHelper::socketFired()
-{
- socketActivated = true;
-}
-
-void tst_QSocketNotifier::mixingWithTimers()
-{
- QTimer timer;
- timer.setInterval(0);
- timer.start();
-
- QTcpServer server;
- QVERIFY(server.listen(QHostAddress::LocalHost, 0));
-
- MixingWithTimersHelper helper(&timer, &server);
-
- QCoreApplication::processEvents();
-
- QCOMPARE(helper.timerActivated, true);
- QCOMPARE(helper.socketActivated, false);
-
- helper.timerActivated = false;
- helper.socketActivated = false;
-
- QTcpSocket socket;
- socket.connectToHost(server.serverAddress(), server.serverPort());
-
- QCoreApplication::processEvents();
-
- QCOMPARE(helper.timerActivated, true);
- QCOMPARE(helper.socketActivated, true);
-}
-
-void tst_QSocketNotifier::posixSockets()
-{
-#ifndef Q_OS_UNIX
- QSKIP("test only for posix", SkipAll);
-#else
-
- QTcpServer server;
- QVERIFY(server.listen(QHostAddress::LocalHost, 0));
-
- int posixSocket = qt_safe_socket(AF_INET, SOCK_STREAM, 0);
- sockaddr_in addr;
- addr.sin_addr.s_addr = htonl(0x7f000001);
- addr.sin_family = AF_INET;
- addr.sin_port = htons(server.serverPort());
- qt_safe_connect(posixSocket, (const struct sockaddr*)&addr, sizeof(sockaddr_in));
- QVERIFY(server.waitForNewConnection(5000));
- QScopedPointer<QTcpSocket> passive(server.nextPendingConnection());
-
- ::fcntl(posixSocket, F_SETFL, ::fcntl(posixSocket, F_GETFL) | O_NONBLOCK);
-
- {
- QSocketNotifier rn(posixSocket, QSocketNotifier::Read);
- connect(&rn, SIGNAL(activated(int)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QSignalSpy readSpy(&rn, SIGNAL(activated(int)));
- QSocketNotifier wn(posixSocket, QSocketNotifier::Write);
- connect(&wn, SIGNAL(activated(int)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QSignalSpy writeSpy(&wn, SIGNAL(activated(int)));
- QSocketNotifier en(posixSocket, QSocketNotifier::Exception);
- connect(&en, SIGNAL(activated(int)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QSignalSpy errorSpy(&en, SIGNAL(activated(int)));
-
- passive->write("hello",6);
- passive->waitForBytesWritten(5000);
-
- QTestEventLoop::instance().enterLoop(3);
- QCOMPARE(readSpy.count(), 1);
- QEXPECT_FAIL("", "QTBUG-20982 fails", Abort);
- QCOMPARE(writeSpy.count(), 0);
- QCOMPARE(errorSpy.count(), 0);
-
- char buffer[100];
- qt_safe_read(posixSocket, buffer, 100);
- QCOMPARE(buffer, "hello");
-
- qt_safe_write(posixSocket, "goodbye", 8);
-
- QTestEventLoop::instance().enterLoop(3);
- QCOMPARE(readSpy.count(), 1);
- QCOMPARE(writeSpy.count(), 1);
- QCOMPARE(errorSpy.count(), 0);
- QCOMPARE(passive->readAll(), QByteArray("goodbye",8));
- }
- qt_safe_close(posixSocket);
-#endif
-}
-
-void tst_QSocketNotifier::bogusFds()
-{
-#ifndef Q_OS_WIN
- QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Internal error");
-#endif
- QSocketNotifier max(std::numeric_limits<int>::max(), QSocketNotifier::Read);
- QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Invalid socket specified");
-#ifndef Q_OS_WIN
- // FIXME QTBUG-20982: this fails, and ignoreMessage can't be skipped or QEXPECT_FAILed
- // QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Internal error");
-#endif
- QSocketNotifier min(std::numeric_limits<int>::min(), QSocketNotifier::Write);
-#ifndef Q_OS_WIN
- // FIXME QTBUG-20982: this fails, and ignoreMessage can't be skipped or QEXPECT_FAILed
- // QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Internal error");
-#endif
- //bogus magic number is the first pseudo socket descriptor from symbian socket engine.
- QSocketNotifier bogus(0x40000000, QSocketNotifier::Exception);
- QSocketNotifier largestlegal(FD_SETSIZE - 1, QSocketNotifier::Read);
-
- QSignalSpy maxspy(&max, SIGNAL(activated(int)));
- QSignalSpy minspy(&min, SIGNAL(activated(int)));
- QSignalSpy bogspy(&bogus, SIGNAL(activated(int)));
- QSignalSpy llspy(&largestlegal, SIGNAL(activated(int)));
-
- //generate some unrelated socket activity
- QTcpServer server;
- QVERIFY(server.listen(QHostAddress::LocalHost));
- connect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTcpSocket client;
- client.connectToHost(QHostAddress::LocalHost, server.serverPort());
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(server.hasPendingConnections());
-
- //check no activity on bogus notifiers
- QCOMPARE(maxspy.count(), 0);
- QCOMPARE(minspy.count(), 0);
- QCOMPARE(bogspy.count(), 0);
- QCOMPARE(llspy.count(), 0);
-}
-
-QTEST_MAIN(tst_QSocketNotifier)
-#include <tst_qsocketnotifier.moc>
diff --git a/tests/auto/qsocks5socketengine/tst_qsocks5socketengine.cpp b/tests/auto/qsocks5socketengine/tst_qsocks5socketengine.cpp
deleted file mode 100644
index ef342ab8a9..0000000000
--- a/tests/auto/qsocks5socketengine/tst_qsocks5socketengine.cpp
+++ /dev/null
@@ -1,959 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qcoreapplication.h>
-
-#include <private/qsocks5socketengine_p.h>
-#include <qhostinfo.h>
-#include <qhostaddress.h>
-#include <qtcpsocket.h>
-#include <qhttp.h>
-#include <qauthenticator.h>
-#include <qdebug.h>
-#include <qtcpserver.h>
-#include <qmetatype.h>
-#include <qdebug.h>
-
-#include "../network-settings.h"
-
-Q_DECLARE_METATYPE(QQueue<QByteArray>)
-
-class tst_QSocks5SocketEngine : public QObject, public QAbstractSocketEngineReceiver
-{
- Q_OBJECT
-
-public:
- tst_QSocks5SocketEngine();
- virtual ~tst_QSocks5SocketEngine();
-
-
-public slots:
- void init();
- void cleanup();
-private slots:
- void construction();
- void errorTest_data();
- void errorTest();
- void simpleConnectToIMAP();
- void simpleErrorsAndStates();
- void udpTest();
- void serverTest();
- void tcpSocketBlockingTest();
- void tcpSocketNonBlockingTest();
- void downloadBigFile();
- // void tcpLoopbackPerformance();
- void passwordAuth();
- void passwordAuth2();
-
-protected slots:
- void tcpSocketNonBlocking_hostFound();
- void tcpSocketNonBlocking_connected();
- void tcpSocketNonBlocking_closed();
- void tcpSocketNonBlocking_readyRead();
- void tcpSocketNonBlocking_bytesWritten(qint64);
- void exitLoopSlot();
- void downloadBigFileSlot();
- void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *auth);
-
-private:
- void readNotification() { }
- void writeNotification() { }
- void exceptionNotification() { }
- void connectionNotification() { }
- QTcpSocket *tcpSocketNonBlocking_socket;
- QStringList tcpSocketNonBlocking_data;
- qint64 tcpSocketNonBlocking_totalWritten;
- QTcpSocket *tmpSocket;
- qint64 bytesAvailable;
-};
-
-class MiniSocks5Server: public QTcpServer
-{
- Q_OBJECT
-public:
- QQueue<QByteArray> responses;
-
- MiniSocks5Server(const QQueue<QByteArray> r)
- : responses(r)
- {
- listen();
- connect(this, SIGNAL(newConnection()), SLOT(handleNewConnection()));
- }
-
-private slots:
- void handleNewConnection()
- {
- QTcpSocket *client = nextPendingConnection();
- connect(client, SIGNAL(readyRead()), SLOT(handleClientCommand()));
- client->setProperty("pendingResponses", qVariantFromValue(responses));
- }
-
- void handleClientCommand()
- {
- // WARNING
- // this assumes that the client command is received in its entirety
- // should be ok, since SOCKSv5 commands are rather small
- QTcpSocket *client = static_cast<QTcpSocket *>(sender());
- QQueue<QByteArray> pendingResponses =
- qvariant_cast<QQueue<QByteArray> >(client->property("pendingResponses"));
- if (pendingResponses.isEmpty())
- client->disconnectFromHost();
- else
- client->write(pendingResponses.dequeue());
- client->setProperty("pendingResponses", qVariantFromValue(pendingResponses));
- }
-};
-
-tst_QSocks5SocketEngine::tst_QSocks5SocketEngine()
-{
- Q_SET_DEFAULT_IAP
-}
-
-tst_QSocks5SocketEngine::~tst_QSocks5SocketEngine()
-{
-}
-
-void tst_QSocks5SocketEngine::init()
-{
- tmpSocket = 0;
- bytesAvailable = 0;
-}
-
-void tst_QSocks5SocketEngine::cleanup()
-{
-}
-
-//---------------------------------------------------------------------------
-void tst_QSocks5SocketEngine::construction()
-{
- QSocks5SocketEngine socketDevice;
-
- QVERIFY(!socketDevice.isValid());
-
- // Initialize device
- QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(socketDevice.isValid());
- QVERIFY(socketDevice.protocol() == QAbstractSocket::IPv4Protocol);
- QVERIFY(socketDevice.socketType() == QAbstractSocket::TcpSocket);
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
- // QVERIFY(socketDevice.socketDescriptor() != -1);
- QVERIFY(socketDevice.localAddress() == QHostAddress());
- QVERIFY(socketDevice.localPort() == 0);
- QVERIFY(socketDevice.peerAddress() == QHostAddress());
- QVERIFY(socketDevice.peerPort() == 0);
- QVERIFY(socketDevice.error() == QAbstractSocket::UnknownSocketError);
-
- //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::bytesAvailable() was called in QAbstractSocket::UnconnectedState");
- QVERIFY(socketDevice.bytesAvailable() == 0);
-
- //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::hasPendingDatagrams() was called in QAbstractSocket::UnconnectedState");
- QVERIFY(!socketDevice.hasPendingDatagrams());
-}
-
-//---------------------------------------------------------------------------
-void tst_QSocks5SocketEngine::errorTest_data()
-{
- QTest::addColumn<QString>("hostname");
- QTest::addColumn<int>("port");
- QTest::addColumn<QString>("username");
- QTest::addColumn<QQueue<QByteArray> >("responses");
- QTest::addColumn<int>("expectedError");
-
- QQueue<QByteArray> responses;
- QTest::newRow("proxy-host-not-found") << "this-host-does-not-exist." << 1080 << QString()
- << responses
- << int(QAbstractSocket::ProxyNotFoundError);
- QTest::newRow("proxy-connection-refused") << "127.0.0.1" << 2 << QString()
- << responses
- << int(QAbstractSocket::ProxyConnectionRefusedError);
-
-#define REPLY(name, contents) \
- static const char raw_ ## name [] = contents; \
- const QByteArray name = QByteArray::fromRawData(raw_ ## name, sizeof raw_ ## name - 1)
-
- REPLY(garbage, "\4\4\4\4");
- // authentication method replies
- REPLY(noAuthentication, "\5\0");
- REPLY(passwordAuthentication, "\5\2");
- REPLY(garbageAuthentication, "\5\177");
- REPLY(noAcceptableAuthentication, "\5\377");
- // authentication replies
- REPLY(authenticationAccepted, "\5\0");
- REPLY(authenticationNotAccepted, "\5\1");
- // connection replies
- REPLY(connectionAccepted, "\5\0\0\4\177\0\0\1\0\100");
- REPLY(connectionNotAllowed, "\5\2\0");
- REPLY(networkUnreachable, "\5\3\0");
- REPLY(hostUnreachable, "\5\4\0");
- REPLY(connectionRefused, "\5\5\0");
-
-#undef REPLY
-
- responses << garbage;
- QTest::newRow("garbage1") << QString() << 0 << QString() << responses
- << int(QAbstractSocket::ProxyProtocolError);
-
- responses.clear();
- responses << noAuthentication << garbage;
- QTest::newRow("garbage2") << QString() << 0 << QString() << responses
- << int(QAbstractSocket::ProxyProtocolError);
-
- responses.clear();
- responses << garbageAuthentication;
- QTest::newRow("unknown-auth-method") << QString() << 0 << QString()
- << responses
- << int(QAbstractSocket::SocketAccessError);
-
- responses.clear();
- responses << noAcceptableAuthentication;
- QTest::newRow("no-acceptable-authentication") << QString() << 0 << QString()
- << responses
- << int(QAbstractSocket::ProxyAuthenticationRequiredError);
-
- responses.clear();
- responses << passwordAuthentication << authenticationNotAccepted;
- QTest::newRow("authentication-required") << QString() << 0 << "foo"
- << responses
- << int(QAbstractSocket::ProxyAuthenticationRequiredError);
-
- responses.clear();
- responses << noAuthentication << connectionNotAllowed;
- QTest::newRow("connection-not-allowed") << QString() << 0 << QString()
- << responses
- << int(QAbstractSocket::SocketAccessError);
-
- responses.clear();
- responses << noAuthentication << networkUnreachable;
- QTest::newRow("network-unreachable") << QString() << 0 << QString()
- << responses
- << int(QAbstractSocket::NetworkError);
-
- responses.clear();
- responses << noAuthentication << hostUnreachable;
- QTest::newRow("host-unreachable") << QString() << 0 << QString()
- << responses
- << int(QAbstractSocket::HostNotFoundError);
-
- responses.clear();
- responses << noAuthentication << connectionRefused;
- QTest::newRow("connection-refused") << QString() << 0 << QString()
- << responses
- << int(QAbstractSocket::ConnectionRefusedError);
-}
-
-void tst_QSocks5SocketEngine::errorTest()
-{
- QFETCH(QString, hostname);
- QFETCH(int, port);
- QFETCH(QString, username);
- QFETCH(QQueue<QByteArray>, responses);
- QFETCH(int, expectedError);
-
- MiniSocks5Server server(responses);
-
- if (hostname.isEmpty()) {
- hostname = "127.0.0.1";
- port = server.serverPort();
- }
- QTcpSocket socket;
- socket.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, hostname, port, username, username));
- socket.connectToHost("0.1.2.3", 12345);
-
- connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)),
- &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(int(socket.error()), expectedError);
-}
-
-//---------------------------------------------------------------------------
-void tst_QSocks5SocketEngine::simpleConnectToIMAP()
-{
- QSocks5SocketEngine socketDevice;
-
- // Initialize device
- QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-
- socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
-
- QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
- QVERIFY(socketDevice.waitForWrite());
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
-
- // Wait for the greeting
- QVERIFY(socketDevice.waitForRead());
-
- // Read the greeting
- qint64 available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- QByteArray array;
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
-
- // Write a logout message
- QByteArray array2 = "XXXX LOGOUT\r\n";
- QVERIFY(socketDevice.write(array2.data(),
- array2.size()) == array2.size());
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
-
- available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QCOMPARE(array.constData(), "* BYE LOGOUT received\r\nXXXX OK Completed\r\n");
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
- char c;
- QVERIFY(socketDevice.read(&c, sizeof(c)) == -1);
- QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-}
-
-//---------------------------------------------------------------------------
-void tst_QSocks5SocketEngine::simpleErrorsAndStates()
-{
- {
- QSocks5SocketEngine socketDevice;
-
- // Initialize device
- QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
-
- socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
-
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
- QVERIFY(!socketDevice.connectToHost(QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first(), 8088));
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
- if (socketDevice.waitForWrite(15000)) {
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState ||
- socketDevice.state() == QAbstractSocket::ConnectedState);
- } else {
- QVERIFY(socketDevice.error() == QAbstractSocket::SocketTimeoutError);
- }
- }
-
-}
-
-/*
-//---------------------------------------------------------------------------
-void tst_QSocks5SocketEngine::tcpLoopbackPerformance()
-{
- QTcpServer server;
-
- // Bind to any port on all interfaces
- QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
- QVERIFY(server.state() == QAbstractSocket::BoundState);
- quint16 port = server.localPort();
-
- // Listen for incoming connections
- QVERIFY(server.listen());
- QVERIFY(server.state() == QAbstractSocket::ListeningState);
-
- // Initialize a Tcp socket
- QSocks5SocketEngine client;
- QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
-
- client.setProxy(QHostAddress("80.232.37.158"), 1081);
-
- // Connect to our server
- if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) {
- QVERIFY(client.waitForWrite());
- QVERIFY(client.connectToHost(QHostAddress("127.0.0.1"), port));
- }
-
- // The server accepts the connectio
- int socketDescriptor = server.accept();
- QVERIFY(socketDescriptor > 0);
-
- // A socket device is initialized on the server side, passing the
- // socket descriptor from accept(). It's pre-connected.
- QSocketLayer serverSocket;
- QVERIFY(serverSocket.initialize(socketDescriptor));
- QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
-
- const int messageSize = 1024 * 256;
- QByteArray message1(messageSize, '@');
- QByteArray answer(messageSize, '@');
-
- QTime timer;
- timer.start();
- qlonglong readBytes = 0;
- while (timer.elapsed() < 5000) {
- qlonglong written = serverSocket.write(message1.data(), message1.size());
- while (written > 0) {
- client.waitForRead();
- if (client.bytesAvailable() > 0) {
- qlonglong readNow = client.read(answer.data(), answer.size());
- written -= readNow;
- readBytes += readNow;
- }
- }
- }
-
- qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
- readBytes / (1024.0 * 1024.0),
- timer.elapsed() / 1024.0,
- (readBytes / (timer.elapsed() / 1000.0)) / (1024 * 1024));
-}
-*/
-
-//---------------------------------------------------------------------------
-void tst_QSocks5SocketEngine::serverTest()
-{
- QSocks5SocketEngine server;
-
- // Initialize a Tcp socket
- QVERIFY(server.initialize(QAbstractSocket::TcpSocket));
-
- QNetworkProxy proxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
-
- server.setProxy(proxy);
-
- // Bind to any port on all interfaces
- QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0));
- QVERIFY(server.state() == QAbstractSocket::BoundState);
-
- // Listen for incoming connections
- QVERIFY(server.listen());
- QVERIFY(server.state() == QAbstractSocket::ListeningState);
-
- // Initialize a Tcp socket
- QSocks5SocketEngine client;
- QVERIFY(client.initialize(QAbstractSocket::TcpSocket));
-
- client.setProxy(proxy);
-
- // QTest::wait(100000); // ### timing problem on win32
-
-
- // Connect to our server
- if (!client.connectToHost(server.localAddress(), server.localPort())) {
- QVERIFY(client.waitForWrite());
- // QTest::wait(100); // ### timing problem on win32
- QVERIFY(client.state() == QAbstractSocket::ConnectedState);
- //QTest::wait(100);
- }
-
- QVERIFY(server.waitForRead());
-
- // The server accepts the connection
- int socketDescriptor = server.accept();
- QVERIFY(socketDescriptor > 0);
-
- // A socket device is initialized on the server side, passing the
- // socket descriptor from accept(). It's pre-connected.
-
- QSocks5SocketEngine serverSocket;
- QVERIFY(serverSocket.initialize(socketDescriptor));
- QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState);
-
- QVERIFY(serverSocket.localAddress() == client.peerAddress());
- QVERIFY(serverSocket.localPort() == client.peerPort());
- // this seems depends on the socks server implementation, especially
- // when connecting /to/ the socks server /through/ the same socks server
- //QVERIFY(serverSocket.peerAddress() == client.localAddress());
- //QVERIFY(serverSocket.peerPort() == client.localPort());
-
- // The server socket sends a greeting to the client
- QByteArray greeting = "Greetings!";
- QVERIFY(serverSocket.write(greeting.data(),
- greeting.size()) == greeting.size());
-
- // The client waits for the greeting to arrive
- QVERIFY(client.waitForRead());
- qint64 available = client.bytesAvailable();
- QVERIFY(available > 0);
-
- // The client reads the greeting and checks that it's correct
- QByteArray response;
- response.resize(available);
- QVERIFY(client.read(response.data(),
- response.size()) == response.size());
- QCOMPARE(response, greeting);
-}
-
-
-//---------------------------------------------------------------------------
-void tst_QSocks5SocketEngine::udpTest()
-{
-#ifdef SYMBIAN_WINSOCK_CONNECTIVITY
- QSKIP("UDP works bads on non WinPCAP emulator setting", SkipAll);
-#endif
-
- QSocks5SocketEngine udpSocket;
-
- // Initialize device #1
- QVERIFY(udpSocket.initialize(QAbstractSocket::UdpSocket));
- QVERIFY(udpSocket.isValid());
-
- QNetworkProxy proxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
-
- udpSocket.setProxy(proxy);
-
- QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv4Protocol);
- QVERIFY(udpSocket.socketType() == QAbstractSocket::UdpSocket);
- QVERIFY(udpSocket.state() == QAbstractSocket::UnconnectedState);
-
- // Bind #1
- QVERIFY(udpSocket.bind(QHostAddress("0.0.0.0"), 0));
- QVERIFY(udpSocket.state() == QAbstractSocket::BoundState);
- QVERIFY(udpSocket.localPort() != 0);
-
- // Initialize device #2
- QSocks5SocketEngine udpSocket2;
- QVERIFY(udpSocket2.initialize(QAbstractSocket::UdpSocket));
-
- udpSocket2.setProxy(proxy);
-
- // Connect device #2 to #1
- QVERIFY(udpSocket2.connectToHost(udpSocket.localAddress(), udpSocket.localPort()));
- QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState);
-
- // Write a message to #1
- QByteArray message1 = "hei der";
- QVERIFY(udpSocket2.write(message1.data(),
- message1.size()) == message1.size());
-
- // Read the message from #2
- QVERIFY(udpSocket.waitForRead());
- QVERIFY(udpSocket.hasPendingDatagrams());
- qint64 available = udpSocket.pendingDatagramSize();
- QVERIFY(available > 0);
- QByteArray answer;
- answer.resize(available);
- QHostAddress senderAddress;
- quint16 senderPort = 0;
- QVERIFY(udpSocket.readDatagram(answer.data(), answer.size(),
- &senderAddress,
- &senderPort) == message1.size());
- QVERIFY(senderAddress == udpSocket2.localAddress());
- QVERIFY(senderPort == udpSocket2.localPort());
-}
-
-void tst_QSocks5SocketEngine::tcpSocketBlockingTest()
-{
- QSocks5SocketEngineHandler socks5;
-
- QTcpSocket socket;
-
- // Connect
- socket.connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket.waitForConnected());
- QCOMPARE(socket.state(), QTcpSocket::ConnectedState);
-
- // Read greeting
- QVERIFY(socket.waitForReadyRead(5000));
- QString s = socket.readLine();
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(s.toLatin1()), s.toLatin1().constData());
-
- // Write NOOP
- QCOMPARE((int) socket.write("1 NOOP\r\n", 8), 8);
-
- if (!socket.canReadLine())
- QVERIFY(socket.waitForReadyRead(5000));
-
- // Read response
- s = socket.readLine();
- QCOMPARE(s.toLatin1().constData(), "1 OK Completed\r\n");
-
- // Write LOGOUT
- QCOMPARE((int) socket.write("2 LOGOUT\r\n", 10), 10);
-
- if (!socket.canReadLine())
- QVERIFY(socket.waitForReadyRead(5000));
-
- // Read two lines of respose
- s = socket.readLine();
- QCOMPARE(s.toLatin1().constData(), "* BYE LOGOUT received\r\n");
-
- if (!socket.canReadLine())
- QVERIFY(socket.waitForReadyRead(5000));
-
- s = socket.readLine();
- QCOMPARE(s.toLatin1().constData(), "2 OK Completed\r\n");
-
- // Close the socket
- socket.close();
-
- // Check that it's closed
- QCOMPARE(socket.state(), QTcpSocket::UnconnectedState);
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QSocks5SocketEngine::tcpSocketNonBlockingTest()
-{
- QSocks5SocketEngineHandler socks5;
-
- QTcpSocket socket;
- connect(&socket, SIGNAL(hostFound()), SLOT(tcpSocketNonBlocking_hostFound()));
- connect(&socket, SIGNAL(connected()), SLOT(tcpSocketNonBlocking_connected()));
- connect(&socket, SIGNAL(disconnected()), SLOT(tcpSocketNonBlocking_closed()));
- connect(&socket, SIGNAL(bytesWritten(qint64)), SLOT(tcpSocketNonBlocking_bytesWritten(qint64)));
- connect(&socket, SIGNAL(readyRead()), SLOT(tcpSocketNonBlocking_readyRead()));
- tcpSocketNonBlocking_socket = &socket;
-
- // Connect
- socket.connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket.state() == QTcpSocket::HostLookupState ||
- socket.state() == QTcpSocket::ConnectingState);
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
- if (socket.state() == QTcpSocket::ConnectingState) {
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
- }
-
- QCOMPARE(socket.state(), QTcpSocket::ConnectedState);
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
- // Read greeting
- QVERIFY(!tcpSocketNonBlocking_data.isEmpty());
- QByteArray data = tcpSocketNonBlocking_data.at(0).toLatin1();
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(data), data.constData());
-
- tcpSocketNonBlocking_data.clear();
-
- tcpSocketNonBlocking_totalWritten = 0;
-
- // Write NOOP
- QCOMPARE((int) socket.write("1 NOOP\r\n", 8), 8);
-
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
- QVERIFY(tcpSocketNonBlocking_totalWritten == 8);
-
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
- // Read response
- QVERIFY(!tcpSocketNonBlocking_data.isEmpty());
- QCOMPARE(tcpSocketNonBlocking_data.at(0).toLatin1().constData(), "1 OK Completed\r\n");
- tcpSocketNonBlocking_data.clear();
-
-
- tcpSocketNonBlocking_totalWritten = 0;
-
- // Write LOGOUT
- QCOMPARE((int) socket.write("2 LOGOUT\r\n", 10), 10);
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
- QVERIFY(tcpSocketNonBlocking_totalWritten == 10);
-
- // Wait for greeting
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout()) {
- QFAIL("Timed out");
- }
-
- // Read two lines of respose
- QCOMPARE(tcpSocketNonBlocking_data.at(0).toLatin1().constData(), "* BYE LOGOUT received\r\n");
- QCOMPARE(tcpSocketNonBlocking_data.at(1).toLatin1().constData(), "2 OK Completed\r\n");
- tcpSocketNonBlocking_data.clear();
-
- // Close the socket
- socket.close();
-
- // Check that it's closed
- QCOMPARE(socket.state(), QTcpSocket::UnconnectedState);
-}
-
-void tst_QSocks5SocketEngine::tcpSocketNonBlocking_hostFound()
-{
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QSocks5SocketEngine::tcpSocketNonBlocking_connected()
-{
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QSocks5SocketEngine::tcpSocketNonBlocking_readyRead()
-{
- while (tcpSocketNonBlocking_socket->canReadLine())
- tcpSocketNonBlocking_data.append(tcpSocketNonBlocking_socket->readLine());
-
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QSocks5SocketEngine::tcpSocketNonBlocking_bytesWritten(qint64 written)
-{
- tcpSocketNonBlocking_totalWritten += written;
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QSocks5SocketEngine::tcpSocketNonBlocking_closed()
-{
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QSocks5SocketEngine::downloadBigFile()
-{
- QSocks5SocketEngineHandler socks5;
-
- if (tmpSocket)
- delete tmpSocket;
- tmpSocket = new QTcpSocket;
-
- connect(tmpSocket, SIGNAL(connected()), SLOT(exitLoopSlot()));
- connect(tmpSocket, SIGNAL(readyRead()), SLOT(downloadBigFileSlot()));
-
- tmpSocket->connectToHost(QtNetworkSettings::serverName(), 80);
-
- QTestEventLoop::instance().enterLoop(30);
- if (QTestEventLoop::instance().timeout())
- QFAIL("Network operation timed out");
-
- QByteArray hostName = QtNetworkSettings::serverName().toLatin1();
- QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState);
- QVERIFY(tmpSocket->write("GET /qtest/mediumfile HTTP/1.0\r\n") > 0);
- QVERIFY(tmpSocket->write("HOST: ") > 0);
- QVERIFY(tmpSocket->write(hostName.data()) > 0);
- QVERIFY(tmpSocket->write("\r\n") > 0);
- QVERIFY(tmpSocket->write("\r\n") > 0);
-
- bytesAvailable = 0;
-
- QTime stopWatch;
- stopWatch.start();
-
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
- QTestEventLoop::instance().enterLoop(60);
-#else
- QTestEventLoop::instance().enterLoop(180);
-#endif
- if (QTestEventLoop::instance().timeout())
- QFAIL("Network operation timed out");
-
- QCOMPARE(bytesAvailable, qint64(10000000));
-
- QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState);
-
- /*qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
- bytesAvailable / (1024.0 * 1024.0),
- stopWatch.elapsed() / 1024.0,
- (bytesAvailable / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));*/
-
- delete tmpSocket;
- tmpSocket = 0;
-}
-
-void tst_QSocks5SocketEngine::exitLoopSlot()
-{
- QTestEventLoop::instance().exitLoop();
-}
-
-
-void tst_QSocks5SocketEngine::downloadBigFileSlot()
-{
- QByteArray tmp=tmpSocket->readAll();
- int correction=tmp.indexOf((char)0,0); //skip header
- if (correction==-1) correction=0;
- bytesAvailable += (tmp.size()-correction);
- if (bytesAvailable >= 10000000)
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QSocks5SocketEngine::passwordAuth()
-{
- QSocks5SocketEngine socketDevice;
-
- // Initialize device
- QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-
- socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080, "qsockstest", "password"));
-
- // Connect to imap.trolltech.com's IP
- QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
- QVERIFY(socketDevice.waitForWrite());
- if (!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143)) {
- qDebug("%d, %s", socketDevice.error(), socketDevice.errorString().toLatin1().constData());
- }
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
-
- // Wait for the greeting
- QVERIFY(socketDevice.waitForRead());
-
- // Read the greeting
- qint64 available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- QByteArray array;
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
-
- // Write a logout message
- QByteArray array2 = "XXXX LOGOUT\r\n";
- QVERIFY(socketDevice.write(array2.data(),
- array2.size()) == array2.size());
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
-
- available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QCOMPARE(array.constData(), "* BYE LOGOUT received\r\nXXXX OK Completed\r\n");
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
- char c;
- QVERIFY(socketDevice.read(&c, sizeof(c)) == -1);
- QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QSocks5SocketEngine::proxyAuthenticationRequired(const QNetworkProxy &,
- QAuthenticator *auth)
-{
- auth->setUser("qsockstest");
- auth->setPassword("password");
-}
-
-void tst_QSocks5SocketEngine::passwordAuth2()
-{
- QSocks5SocketEngine socketDevice;
-
- // Initialize device
- QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-
- socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081));
- socketDevice.setReceiver(this);
-
- QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState);
- while (socketDevice.state() == QAbstractSocket::ConnectingState) {
- QVERIFY(socketDevice.waitForWrite());
- socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143);
- }
- if (socketDevice.state() != QAbstractSocket::ConnectedState)
- qDebug("%d, %s", socketDevice.error(), socketDevice.errorString().toLatin1().constData());
- QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState);
- QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP());
-
- // Wait for the greeting
- QVERIFY(socketDevice.waitForRead());
-
- // Read the greeting
- qint64 available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- QByteArray array;
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(array), array.constData());
-
- // Write a logout message
- QByteArray array2 = "XXXX LOGOUT\r\n";
- QVERIFY(socketDevice.write(array2.data(),
- array2.size()) == array2.size());
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
-
- available = socketDevice.bytesAvailable();
- QVERIFY(available > 0);
- array.resize(available);
- QVERIFY(socketDevice.read(array.data(), array.size()) == available);
-
- // Check that the greeting is what we expect it to be
- QCOMPARE(array.constData(), "* BYE LOGOUT received\r\nXXXX OK Completed\r\n");
-
- // Wait for the response
- QVERIFY(socketDevice.waitForRead());
- char c;
- QVERIFY(socketDevice.read(&c, sizeof(c)) == -1);
- QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError);
- QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState);
-}
-
-//----------------------------------------------------------------------------------
-
-QTEST_MAIN(tst_QSocks5SocketEngine)
-#include "tst_qsocks5socketengine.moc"
diff --git a/tests/auto/qsoftkeymanager/qsoftkeymanager.pro b/tests/auto/qsoftkeymanager/qsoftkeymanager.pro
index 61ed4dcc8b..7032964629 100644
--- a/tests/auto/qsoftkeymanager/qsoftkeymanager.pro
+++ b/tests/auto/qsoftkeymanager/qsoftkeymanager.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qsoftkeymanager.cpp
requires(symbian)
diff --git a/tests/auto/qsortfilterproxymodel/qsortfilterproxymodel.pro b/tests/auto/qsortfilterproxymodel/qsortfilterproxymodel.pro
index 7edd4a53cc..a60fbac944 100644
--- a/tests/auto/qsortfilterproxymodel/qsortfilterproxymodel.pro
+++ b/tests/auto/qsortfilterproxymodel/qsortfilterproxymodel.pro
@@ -1,5 +1,7 @@
load(qttest_p4)
+QT += gui widgets
+
INCLUDEPATH += $$PWD/../modeltest
SOURCES += tst_qsortfilterproxymodel.cpp ../modeltest/dynamictreemodel.cpp ../modeltest/modeltest.cpp
diff --git a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index 33e8627680..093bcd2c86 100644
--- a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -48,6 +48,7 @@
#include <QtCore>
#include <QtGui>
+#include <QtWidgets/QSortFilterProxyModel>
#include <qdebug.h>
diff --git a/tests/auto/qspinbox/qspinbox.pro b/tests/auto/qspinbox/qspinbox.pro
index a65554a087..56a58dadce 100644
--- a/tests/auto/qspinbox/qspinbox.pro
+++ b/tests/auto/qspinbox/qspinbox.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qspinbox.cpp
diff --git a/tests/auto/qspinbox/tst_qspinbox.cpp b/tests/auto/qspinbox/tst_qspinbox.cpp
index 7f72afc7e7..6feef459e6 100644
--- a/tests/auto/qspinbox/tst_qspinbox.cpp
+++ b/tests/auto/qspinbox/tst_qspinbox.cpp
@@ -1039,7 +1039,7 @@ void tst_QSpinBox::taskQTBUG_5008_textFromValueAndValidate()
QTRY_COMPARE(static_cast<QWidget *>(&spinbox), QApplication::activeWindow());
QCOMPARE(spinbox.text(), spinbox.locale().toString(spinbox.value()));
spinbox.lineEdit()->setCursorPosition(2); //just after the first thousand separator
- QTest::keyClick(0, Qt::Key_0); // let's insert a 0
+ QTest::keyClick(static_cast<QWindow *>(0), Qt::Key_0); // let's insert a 0
QCOMPARE(spinbox.value(), 10000000); //it's been multiplied by 10
spinbox.clearFocus(); //make sure the value is correctly formatted
QCOMPARE(spinbox.text(), spinbox.locale().toString(spinbox.value()));
diff --git a/tests/auto/qsplitter/qsplitter.pro b/tests/auto/qsplitter/qsplitter.pro
index bca4fc40fd..a0e6878aa9 100644
--- a/tests/auto/qsplitter/qsplitter.pro
+++ b/tests/auto/qsplitter/qsplitter.pro
@@ -1,7 +1,7 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qsplitter.cpp
-
wince*|symbian: {
addFiles.files = extradata.txt setSizes3.dat
addFiles.path = .
diff --git a/tests/auto/qsql/qsql.pro b/tests/auto/qsql/qsql.pro
deleted file mode 100644
index e367a8e1c1..0000000000
--- a/tests/auto/qsql/qsql.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qsql.cpp
-
-QT += sql sql-private
-
-wince*: {
- DEPLOYMENT_PLUGIN += qsqlite
-}
-
-symbian {
- qt_not_deployed {
- contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
- sqlite.path = /sys/bin
- sqlite.files = sqlite3.dll
- DEPLOYMENT += sqlite
- }
- }
-}
diff --git a/tests/auto/qsql/tst_qsql.cpp b/tests/auto/qsql/tst_qsql.cpp
deleted file mode 100644
index e8c6d14f5b..0000000000
--- a/tests/auto/qsql/tst_qsql.cpp
+++ /dev/null
@@ -1,277 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <qapplication.h>
-#include <qsqldatabase.h>
-#include <qsqlerror.h>
-#include <qsqlquery.h>
-#include <qsqlrecord.h>
-#include <qsql.h>
-#include <qsqlresult.h>
-#include <qsqldriver.h>
-#include <qdebug.h>
-#include <private/qsqlnulldriver_p.h>
-
-#include "../qsqldatabase/tst_databases.h"
-
-//TESTED_FILES=
-
-class tst_QSql : public QObject
-{
-Q_OBJECT
-
-public:
- tst_QSql();
- virtual ~tst_QSql();
-
-
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-private slots:
- void open();
- void openInvalid();
- void registerSqlDriver();
-
- // problem specific tests
- void openErrorRecovery();
- void concurrentAccess();
- void basicDriverTest();
-};
-
-/****************** General Qt SQL Module tests *****************/
-
-tst_QSql::tst_QSql()
-{
-}
-
-tst_QSql::~tst_QSql()
-{
-}
-
-void tst_QSql::initTestCase()
-{
-}
-
-void tst_QSql::cleanupTestCase()
-{
-}
-
-void tst_QSql::init()
-{
-}
-
-void tst_QSql::cleanup()
-{
-}
-
-
-// this is a very basic test for drivers that cannot create/delete tables
-// it can be used while developing new drivers,
-// it's original purpose is to test ODBC Text datasources that are basically
-// to stupid to do anything more advanced than SELECT/INSERT/UPDATE/DELETE
-// the datasource has to have a table called "qtest_basictest" consisting
-// of a field "id"(integer) and "name"(char/varchar).
-void tst_QSql::basicDriverTest()
-{
- int argc = 0;
- QApplication app( argc, 0, false );
- tst_Databases dbs;
- dbs.open();
-
- foreach( const QString& dbName, dbs.dbNames )
- {
- QSqlDatabase db = QSqlDatabase::database( dbName );
- QVERIFY_SQL( db, isValid() );
-
- QStringList tables = db.tables();
- QString tableName;
-
- if ( tables.contains( "qtest_basictest.txt" ) )
- tableName = "qtest_basictest.txt";
- else if ( tables.contains( "qtest_basictest" ) )
- tableName = "qtest_basictest";
- else if ( tables.contains( "QTEST_BASICTEST" ) )
- tableName = "QTEST_BASICTEST";
- else {
- QVERIFY( 1 );
- continue;
- }
-
- qDebug("Testing: %s", qPrintable(tst_Databases::dbToString( db )));
-
- QSqlRecord rInf = db.record( tableName );
- QCOMPARE( rInf.count(), 2 );
- QCOMPARE( rInf.fieldName( 0 ).toLower(), QString( "id" ) );
- QCOMPARE( rInf.fieldName( 1 ).toLower(), QString( "name" ) );
- }
-
- dbs.close();
- QVERIFY( 1 ); // make sure the test doesn't fail if no database drivers are there
-}
-
-// make sure that the static stuff will be deleted
-// when using multiple QApplication objects
-void tst_QSql::open()
-{
- int i;
- int argc = 0;
- int count = -1;
- for ( i = 0; i < 10; ++i ) {
-
- QApplication app( argc, 0, false );
- tst_Databases dbs;
-
- dbs.open();
- if ( count == -1 )
- // first iteration: see how many dbs are open
- count = (int) dbs.dbNames.count();
- else
- // next iterations: make sure all are opened again
- QCOMPARE( count, (int)dbs.dbNames.count() );
- dbs.close();
- }
-}
-
-void tst_QSql::openInvalid()
-{
- QSqlDatabase db;
- QVERIFY(!db.open());
-
- QSqlDatabase db2 = QSqlDatabase::addDatabase("doesnt_exist_will_never_exist", "blah");
- QFAIL_SQL(db2, open());
-}
-
-void tst_QSql::concurrentAccess()
-{
- int argc = 0;
- QApplication app( argc, 0, false );
- tst_Databases dbs;
-
- dbs.open();
- foreach ( const QString& dbName, dbs.dbNames ) {
- QSqlDatabase db = QSqlDatabase::database( dbName );
- QVERIFY( db.isValid() );
- if (tst_Databases::isMSAccess(db))
- continue;
-
- QSqlDatabase ndb = QSqlDatabase::addDatabase( db.driverName(), "tst_QSql::concurrentAccess" );
- ndb.setDatabaseName( db.databaseName() );
- ndb.setHostName( db.hostName() );
- ndb.setPort( db.port() );
- ndb.setUserName( db.userName() );
- ndb.setPassword( db.password() );
- QVERIFY_SQL( ndb, open() );
-
- QCOMPARE( db.tables(), ndb.tables() );
- }
- // no database servers installed - don't fail
- QVERIFY(1);
- dbs.close();
-}
-
-void tst_QSql::openErrorRecovery()
-{
- int argc = 0;
- QApplication app( argc, 0, false );
- tst_Databases dbs;
-
- dbs.addDbs();
- if (dbs.dbNames.isEmpty())
- QSKIP("No database drivers installed", SkipAll);
- foreach ( const QString& dbName, dbs.dbNames ) {
- QSqlDatabase db = QSqlDatabase::database( dbName, false );
- CHECK_DATABASE( db );
-
- QString userName = db.userName();
- QString password = db.password();
-
- // force an open error
- if ( db.open( "dummy130977", "doesnt_exist" ) ) {
- qDebug("Promiscuous database server without access control - test skipped for %s",
- qPrintable(tst_Databases::dbToString( db )) );
- QVERIFY(1);
- continue;
- }
-
- QFAIL_SQL( db, isOpen() );
- QVERIFY_SQL( db, isOpenError() );
-
- // now open it
- if ( !db.open( userName, password ) ) {
- qDebug() << "Could not open Database " << tst_Databases::dbToString( db ) <<
- ". Assuming DB is down, skipping... (Error: " <<
- tst_Databases::printError( db.lastError() ) << ")";
- continue;
- }
- QVERIFY_SQL( db, open( userName, password ) );
- QVERIFY_SQL( db, isOpen() );
- QFAIL_SQL( db, isOpenError() );
- db.close();
- QFAIL_SQL( db, isOpen() );
-
- // force another open error
- QFAIL_SQL( db, open( "dummy130977", "doesnt_exist" ) );
- QFAIL_SQL( db, isOpen() );
- QVERIFY_SQL( db, isOpenError() );
- }
-}
-
-void tst_QSql::registerSqlDriver()
-{
- int argc = 0;
- QApplication app( argc, 0, false );
-
- QSqlDatabase::registerSqlDriver( "QSQLTESTDRIVER", new QSqlDriverCreator<QSqlNullDriver> );
- QVERIFY( QSqlDatabase::drivers().contains( "QSQLTESTDRIVER" ) );
-
- QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLTESTDRIVER" );
- QVERIFY( db.isValid() );
-
- QCOMPARE( db.tables(), QStringList() );
-}
-
-QTEST_APPLESS_MAIN(tst_QSql)
-#include "tst_qsql.moc"
diff --git a/tests/auto/qsqlquerymodel/qsqlquerymodel.pro b/tests/auto/qsqlquerymodel/qsqlquerymodel.pro
deleted file mode 100644
index 4b23e94715..0000000000
--- a/tests/auto/qsqlquerymodel/qsqlquerymodel.pro
+++ /dev/null
@@ -1,20 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qsqlquerymodel.cpp
-
-QT += sql
-
-wince*: {
- DEPLOYMENT_PLUGIN += qsqlite
- LIBS += -lws2
-}else:symbian {
- qt_not_deployed {
- contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
- sqlite.path = /sys/bin
- sqlite.files = sqlite3.dll
- DEPLOYMENT += sqlite
- }
- }
-} else {
- win32:LIBS += -lws2_32
-}
-
diff --git a/tests/auto/qsqlquerymodel/tst_qsqlquerymodel.cpp b/tests/auto/qsqlquerymodel/tst_qsqlquerymodel.cpp
deleted file mode 100644
index 073f3da137..0000000000
--- a/tests/auto/qsqlquerymodel/tst_qsqlquerymodel.cpp
+++ /dev/null
@@ -1,641 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <QtGui>
-
-#include <qsqldriver.h>
-#include <qsqldatabase.h>
-#include <qsqlerror.h>
-#include <qsqlfield.h>
-#include <qsqlquery.h>
-#include <qsqlrecord.h>
-
-#include <qsqlquerymodel.h>
-#include <qsortfilterproxymodel.h>
-
-#include "../qsqldatabase/tst_databases.h"
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-Q_DECLARE_METATYPE(Qt::Orientation)
-
-class tst_QSqlQueryModel : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QSqlQueryModel();
- virtual ~tst_QSqlQueryModel();
-
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-
-private slots:
- void insertColumn_data() { generic_data(); }
- void insertColumn();
- void removeColumn_data() { generic_data(); }
- void removeColumn();
- void record_data() { generic_data(); }
- void record();
- void setHeaderData_data() { generic_data(); }
- void setHeaderData();
- void fetchMore_data() { generic_data(); }
- void fetchMore();
-
- //problem specific tests
- void withSortFilterProxyModel_data() { generic_data(); }
- void withSortFilterProxyModel();
- void setQuerySignalEmission_data() { generic_data(); }
- void setQuerySignalEmission();
- void setQueryWithNoRowsInResultSet_data() { generic_data(); }
- void setQueryWithNoRowsInResultSet();
-
- void task_180617();
- void task_180617_data() { generic_data(); }
- void task_QTBUG_4963_setHeaderDataWithProxyModel();
-
-private:
- void generic_data(const QString &engine=QString());
- void dropTestTables(QSqlDatabase db);
- void createTestTables(QSqlDatabase db);
- void populateTestTables(QSqlDatabase db);
- tst_Databases dbs;
-};
-
-/* Stupid class that makes protected members public for testing */
-class DBTestModel: public QSqlQueryModel
-{
-public:
- DBTestModel(QObject *parent = 0): QSqlQueryModel(parent) {}
- QModelIndex indexInQuery(const QModelIndex &item) const { return QSqlQueryModel::indexInQuery(item); }
-};
-
-tst_QSqlQueryModel::tst_QSqlQueryModel()
-{
-}
-
-tst_QSqlQueryModel::~tst_QSqlQueryModel()
-{
-}
-
-void tst_QSqlQueryModel::initTestCase()
-{
- qRegisterMetaType<QModelIndex>("QModelIndex");
- dbs.open();
- for (QStringList::ConstIterator it = dbs.dbNames.begin(); it != dbs.dbNames.end(); ++it) {
- QSqlDatabase db = QSqlDatabase::database((*it));
- CHECK_DATABASE(db);
- dropTestTables(db); //in case of leftovers
- createTestTables(db);
- populateTestTables(db);
- }
-}
-
-void tst_QSqlQueryModel::cleanupTestCase()
-{
- for (QStringList::ConstIterator it = dbs.dbNames.begin(); it != dbs.dbNames.end(); ++it) {
- QSqlDatabase db = QSqlDatabase::database((*it));
- CHECK_DATABASE(db);
- dropTestTables(db);
- }
- dbs.close();
-}
-
-void tst_QSqlQueryModel::dropTestTables(QSqlDatabase db)
-{
- QStringList tableNames;
- tableNames << qTableName("test", __FILE__)
- << qTableName("test2", __FILE__)
- << qTableName("test3", __FILE__)
- << qTableName("many", __FILE__);
- tst_Databases::safeDropTables(db, tableNames);
-}
-
-void tst_QSqlQueryModel::createTestTables(QSqlDatabase db)
-{
- dropTestTables(db);
- QSqlQuery q(db);
- if(tst_Databases::isPostgreSQL(db))
- QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
- QVERIFY_SQL( q, exec("create table " + qTableName("test", __FILE__) + "(id integer not null, name varchar(20), title integer, primary key (id))"));
- QVERIFY_SQL( q, exec("create table " + qTableName("test2", __FILE__) + "(id integer not null, title varchar(20), primary key (id))"));
- QVERIFY_SQL( q, exec("create table " + qTableName("test3", __FILE__) + "(id integer not null, primary key (id))"));
- QVERIFY_SQL( q, exec("create table " + qTableName("many", __FILE__) + "(id integer not null, name varchar(20), primary key (id))"));
-}
-
-void tst_QSqlQueryModel::populateTestTables(QSqlDatabase db)
-{
- qWarning() << "Populating test tables, this can take quite a while... ZZZzzz...";
- bool hasTransactions = db.driver()->hasFeature(QSqlDriver::Transactions);
-
- QSqlQuery q(db), q2(db);
-
- tst_Databases::safeDropTables(db, QStringList() << qTableName("manytmp", __FILE__) << qTableName("test3tmp", __FILE__));
- QVERIFY_SQL(q, exec("create table " + qTableName("manytmp", __FILE__) + "(id integer not null, name varchar(20), primary key (id))"));
- QVERIFY_SQL(q, exec("create table " + qTableName("test3tmp", __FILE__) + "(id integer not null, primary key (id))"));
-
- if (hasTransactions) QVERIFY_SQL(db, transaction());
-
- QVERIFY_SQL(q, exec("insert into " + qTableName("test", __FILE__) + " values(1, 'harry', 1)"));
- QVERIFY_SQL(q, exec("insert into " + qTableName("test", __FILE__) + " values(2, 'trond', 2)"));
- QVERIFY_SQL(q, exec("insert into " + qTableName("test2", __FILE__) + " values(1, 'herr')"));
- QVERIFY_SQL(q, exec("insert into " + qTableName("test2", __FILE__) + " values(2, 'mister')"));
-
- QVERIFY_SQL(q, exec(QString("insert into " + qTableName("test3", __FILE__) + " values(0)")));
- QVERIFY_SQL(q, prepare("insert into "+qTableName("test3", __FILE__)+"(id) select id + ? from "+qTableName("test3tmp", __FILE__)));
- for (int i=1; i<260; i*=2) {
- q2.exec("delete from "+qTableName("test3tmp", __FILE__));
- QVERIFY_SQL(q2, exec("insert into "+qTableName("test3tmp", __FILE__)+"(id) select id from "+qTableName("test3", __FILE__)));
- q.bindValue(0, i);
- QVERIFY_SQL(q, exec());
- }
-
- QVERIFY_SQL(q, exec(QString("insert into " + qTableName("many", __FILE__) + "(id, name) values (0, \'harry\')")));
- QVERIFY_SQL(q, prepare("insert into "+qTableName("many", __FILE__)+"(id, name) select id + ?, name from "+qTableName("manytmp", __FILE__)));
- for (int i=1; i < 2048; i*=2) {
- q2.exec("delete from "+qTableName("manytmp", __FILE__));
- QVERIFY_SQL(q2, exec("insert into "+qTableName("manytmp", __FILE__)+"(id, name) select id, name from "+qTableName("many", __FILE__)));
- q.bindValue(0, i);
- QVERIFY_SQL(q, exec());
- }
-
- if (hasTransactions) QVERIFY_SQL(db, commit());
-
- tst_Databases::safeDropTables(db, QStringList() << qTableName("manytmp", __FILE__) << qTableName("test3tmp", __FILE__));
-}
-
-void tst_QSqlQueryModel::generic_data(const QString& engine)
-{
- if ( dbs.fillTestTable(engine) == 0 ) {
- if(engine.isEmpty())
- QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
- else
- QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
- }
-}
-
-void tst_QSqlQueryModel::init()
-{
-}
-
-void tst_QSqlQueryModel::cleanup()
-{
-}
-
-void tst_QSqlQueryModel::removeColumn()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- DBTestModel model;
- model.setQuery(QSqlQuery("select * from " + qTableName("test", __FILE__), db));
- model.fetchMore();
- QSignalSpy spy(&model, SIGNAL(columnsAboutToBeRemoved(QModelIndex, int, int)));
-
- QCOMPARE(model.columnCount(), 3);
- QVERIFY(model.removeColumn(0));
- QCOMPARE(spy.count(), 1);
- QVERIFY(*(QModelIndex *)spy.at(0).at(0).constData() == QModelIndex());
- QCOMPARE(spy.at(0).at(1).toInt(), 0);
- QCOMPARE(spy.at(0).at(2).toInt(), 0);
-
- QCOMPARE(model.columnCount(), 2);
- QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), 1);
- QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), 2);
- QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), -1);
-
- QVERIFY(model.insertColumn(1));
- QCOMPARE(model.columnCount(), 3);
- QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), 1);
- QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), 2);
- QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), -1);
-
- QCOMPARE(model.data(model.index(0, 0)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 1)), QVariant());
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 3)), QVariant());
-
- QVERIFY(!model.removeColumn(42));
- QVERIFY(!model.removeColumn(3));
- QVERIFY(!model.removeColumn(1, model.index(1, 2)));
- QCOMPARE(model.columnCount(), 3);
-
- QVERIFY(model.removeColumn(2));
-
- QCOMPARE(spy.count(), 2);
- QVERIFY(*(QModelIndex *)spy.at(1).at(0).constData() == QModelIndex());
- QCOMPARE(spy.at(1).at(1).toInt(), 2);
- QCOMPARE(spy.at(1).at(2).toInt(), 2);
-
- QCOMPARE(model.columnCount(), 2);
- QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), 1);
- QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), -1);
-
- QVERIFY(model.removeColumn(1));
-
- QCOMPARE(spy.count(), 3);
- QVERIFY(*(QModelIndex *)spy.at(2).at(0).constData() == QModelIndex());
- QCOMPARE(spy.at(2).at(1).toInt(), 1);
- QCOMPARE(spy.at(2).at(2).toInt(), 1);
-
- QCOMPARE(model.columnCount(), 1);
- QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), 1);
- QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), -1);
- QCOMPARE(model.data(model.index(0, 0)).toString(), QString("harry"));
-
- QVERIFY(model.removeColumn(0));
-
- QCOMPARE(spy.count(), 4);
- QVERIFY(*(QModelIndex *)spy.at(3).at(0).constData() == QModelIndex());
- QCOMPARE(spy.at(3).at(1).toInt(), 0);
- QCOMPARE(spy.at(3).at(2).toInt(), 0);
-
- QCOMPARE(model.columnCount(), 0);
- QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), -1);
-}
-
-void tst_QSqlQueryModel::insertColumn()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- DBTestModel model;
- model.setQuery(QSqlQuery("select * from " + qTableName("test", __FILE__), db));
- model.fetchMore(); // necessary???
-
- bool isToUpper = db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2");
- const QString idColumn(isToUpper ? "ID" : "id");
- const QString nameColumn(isToUpper ? "NAME" : "name");
- const QString titleColumn(isToUpper ? "TITLE" : "title");
-
- QSignalSpy spy(&model, SIGNAL(columnsInserted(QModelIndex, int, int)));
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 3)), QVariant());
-
- QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), idColumn);
- QCOMPARE(model.headerData(1, Qt::Horizontal).toString(), nameColumn);
- QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), titleColumn);
- QCOMPARE(model.headerData(3, Qt::Horizontal).toString(), QString("4"));
-
- QVERIFY(model.insertColumn(1));
-
- QCOMPARE(spy.count(), 1);
- QVERIFY(*(QModelIndex *)spy.at(0).at(0).constData() == QModelIndex());
- QCOMPARE(spy.at(0).at(1).toInt(), 1);
- QCOMPARE(spy.at(0).at(2).toInt(), 1);
-
- QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), 0);
- QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), 1);
- QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), 2);
- QCOMPARE(model.indexInQuery(model.index(0, 4)).column(), -1);
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)), QVariant());
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 4)), QVariant());
-
- QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), idColumn);
- QCOMPARE(model.headerData(1, Qt::Horizontal).toString(), QString("2"));
- QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), nameColumn);
- QCOMPARE(model.headerData(3, Qt::Horizontal).toString(), titleColumn);
- QCOMPARE(model.headerData(4, Qt::Horizontal).toString(), QString("5"));
-
- QVERIFY(!model.insertColumn(-1));
- QVERIFY(!model.insertColumn(100));
- QVERIFY(!model.insertColumn(1, model.index(1, 1)));
-
- QVERIFY(model.insertColumn(0));
-
- QCOMPARE(spy.count(), 2);
- QVERIFY(*(QModelIndex *)spy.at(1).at(0).constData() == QModelIndex());
- QCOMPARE(spy.at(1).at(1).toInt(), 0);
- QCOMPARE(spy.at(1).at(2).toInt(), 0);
-
- QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), 0);
- QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), 1);
- QCOMPARE(model.indexInQuery(model.index(0, 4)).column(), 2);
- QCOMPARE(model.indexInQuery(model.index(0, 5)).column(), -1);
-
- QVERIFY(!model.insertColumn(6));
- QVERIFY(model.insertColumn(5));
-
- QCOMPARE(spy.count(), 3);
- QVERIFY(*(QModelIndex *)spy.at(2).at(0).constData() == QModelIndex());
- QCOMPARE(spy.at(2).at(1).toInt(), 5);
- QCOMPARE(spy.at(2).at(2).toInt(), 5);
-
- QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), 0);
- QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), 1);
- QCOMPARE(model.indexInQuery(model.index(0, 4)).column(), 2);
- QCOMPARE(model.indexInQuery(model.index(0, 5)).column(), -1);
- QCOMPARE(model.indexInQuery(model.index(0, 6)).column(), -1);
-
- QCOMPARE(model.record().field(0).name(), QString());
- QCOMPARE(model.record().field(1).name(), idColumn);
- QCOMPARE(model.record().field(2).name(), QString());
- QCOMPARE(model.record().field(3).name(), nameColumn);
- QCOMPARE(model.record().field(4).name(), titleColumn);
- QCOMPARE(model.record().field(5).name(), QString());
- QCOMPARE(model.record().field(6).name(), QString());
-
- QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), QString("1"));
- QCOMPARE(model.headerData(1, Qt::Horizontal).toString(), idColumn);
- QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), QString("3"));
- QCOMPARE(model.headerData(3, Qt::Horizontal).toString(), nameColumn);
- QCOMPARE(model.headerData(4, Qt::Horizontal).toString(), titleColumn);
- QCOMPARE(model.headerData(5, Qt::Horizontal).toString(), QString("6"));
- QCOMPARE(model.headerData(6, Qt::Horizontal).toString(), QString("7"));
-}
-
-void tst_QSqlQueryModel::record()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlQueryModel model;
- model.setQuery(QSqlQuery("select * from " + qTableName("test", __FILE__), db));
-
- QSqlRecord rec = model.record();
-
- bool isToUpper = db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2");
-
- QCOMPARE(rec.count(), 3);
- QCOMPARE(rec.fieldName(0), isToUpper ? QString("ID") : QString("id"));
- QCOMPARE(rec.fieldName(1), isToUpper ? QString("NAME") : QString("name"));
- QCOMPARE(rec.fieldName(2), isToUpper ? QString("TITLE") : QString("title"));
- QCOMPARE(rec.value(0), QVariant(rec.field(0).type()));
- QCOMPARE(rec.value(1), QVariant(rec.field(1).type()));
- QCOMPARE(rec.value(2), QVariant(rec.field(2).type()));
-
- rec = model.record(0);
- QCOMPARE(rec.fieldName(0), isToUpper ? QString("ID") : QString("id"));
- QCOMPARE(rec.fieldName(1), isToUpper ? QString("NAME") : QString("name"));
- QCOMPARE(rec.fieldName(2), isToUpper ? QString("TITLE") : QString("title"));
- QCOMPARE(rec.value(0).toString(), QString("1"));
- QCOMPARE(rec.value(1), QVariant("harry"));
- QCOMPARE(rec.value(2), QVariant(1));
-}
-
-void tst_QSqlQueryModel::setHeaderData()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlQueryModel model;
-
- QVERIFY(!model.setHeaderData(5, Qt::Vertical, "foo"));
- QVERIFY(model.headerData(5, Qt::Vertical).isValid());
-
- model.setQuery(QSqlQuery("select * from " + qTableName("test", __FILE__), db));
-
- qRegisterMetaType<Qt::Orientation>("Qt::Orientation");
- QSignalSpy spy(&model, SIGNAL(headerDataChanged(Qt::Orientation, int, int)));
- QVERIFY(model.setHeaderData(2, Qt::Horizontal, "bar"));
- QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), QString("bar"));
- QCOMPARE(spy.count(), 1);
- QCOMPARE(qvariant_cast<Qt::Orientation>(spy.value(0).value(0)), Qt::Horizontal);
- QCOMPARE(spy.value(0).value(1).toInt(), 2);
- QCOMPARE(spy.value(0).value(2).toInt(), 2);
-
- QVERIFY(!model.setHeaderData(7, Qt::Horizontal, "foo", Qt::ToolTipRole));
- QVERIFY(!model.headerData(7, Qt::Horizontal, Qt::ToolTipRole).isValid());
-
- bool isToUpper = db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2");
- QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), isToUpper ? QString("ID") : QString("id"));
- QCOMPARE(model.headerData(1, Qt::Horizontal).toString(), isToUpper ? QString("NAME") : QString("name"));
- QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), QString("bar"));
- QVERIFY(model.headerData(3, Qt::Horizontal).isValid());
-}
-
-void tst_QSqlQueryModel::fetchMore()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlQueryModel model;
- QSignalSpy spy(&model, SIGNAL(rowsInserted(QModelIndex, int, int)));
-
- model.setQuery(QSqlQuery("select * from " + qTableName("many", __FILE__), db));
- int rowCount = model.rowCount();
-
- QCOMPARE(spy.value(0).value(1).toInt(), 0);
- QCOMPARE(spy.value(0).value(2).toInt(), rowCount - 1);
-
- // If the driver doesn't return the query size fetchMore() causes the
- // model to grow and new signals are emitted
- if (!db.driver()->hasFeature(QSqlDriver::QuerySize)) {
- spy.clear();
- model.fetchMore();
- int newRowCount = model.rowCount();
- QCOMPARE(spy.value(0).value(1).toInt(), rowCount);
- QCOMPARE(spy.value(0).value(2).toInt(), newRowCount - 1);
- }
-}
-
-// For task 149491: When used with QSortFilterProxyModel, a view and a
-// database that doesn't support the QuerySize feature, blank rows was
-// appended if the query returned more than 256 rows and setQuery()
-// was called more than once. This because an insertion of rows was
-// triggered at the same time as the model was being cleared.
-void tst_QSqlQueryModel::withSortFilterProxyModel()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- if (db.driver()->hasFeature(QSqlDriver::QuerySize))
- QSKIP("Test applies only for drivers not reporting the query size.", SkipSingle);
-
- QSqlQueryModel model;
- model.setQuery(QSqlQuery("SELECT * FROM " + qTableName("test3", __FILE__), db));
- QSortFilterProxyModel proxy;
- proxy.setSourceModel(&model);
-
- QTableView view;
- view.setModel(&proxy);
-
- QSignalSpy modelRowsRemovedSpy(&model, SIGNAL(rowsRemoved(const QModelIndex &, int, int)));
- QSignalSpy modelRowsInsertedSpy(&model, SIGNAL(rowsInserted(const QModelIndex &, int, int)));
- model.setQuery(QSqlQuery("SELECT * FROM " + qTableName("test3", __FILE__), db));
- view.scrollToBottom();
-
- QTestEventLoop::instance().enterLoop(1);
-
- QCOMPARE(proxy.rowCount(), 511);
-
- // The second call to setQuery() clears the model by removing it's rows.
- // Only 256 rows because that is what was cached.
- QCOMPARE(modelRowsRemovedSpy.count(), 1);
- QCOMPARE(modelRowsRemovedSpy.value(0).value(1).toInt(), 0);
- QCOMPARE(modelRowsRemovedSpy.value(0).value(2).toInt(), 255);
-
- // The call to scrollToBottom() forces the model to fetch all rows,
- // which will be done in two steps.
- QCOMPARE(modelRowsInsertedSpy.count(), 2);
- QCOMPARE(modelRowsInsertedSpy.value(0).value(1).toInt(), 0);
- QCOMPARE(modelRowsInsertedSpy.value(0).value(2).toInt(), 255);
- QCOMPARE(modelRowsInsertedSpy.value(1).value(1).toInt(), 256);
- QCOMPARE(modelRowsInsertedSpy.value(1).value(2).toInt(), 510);
-}
-
-// For task 155402: When the model is already empty when setQuery() is called
-// no rows have to be removed and rowsAboutToBeRemoved and rowsRemoved should
-// not be emitted.
-void tst_QSqlQueryModel::setQuerySignalEmission()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlQueryModel model;
- QSignalSpy modelRowsAboutToBeRemovedSpy(&model, SIGNAL(rowsAboutToBeRemoved(const QModelIndex &, int, int)));
- QSignalSpy modelRowsRemovedSpy(&model, SIGNAL(rowsRemoved(const QModelIndex &, int, int)));
-
- // First select, the model was empty and no rows had to be removed!
- model.setQuery(QSqlQuery("SELECT * FROM " + qTableName("test", __FILE__), db));
- QCOMPARE(modelRowsAboutToBeRemovedSpy.count(), 0);
- QCOMPARE(modelRowsRemovedSpy.count(), 0);
-
- // Second select, the model wasn't empty and two rows had to be removed!
- model.setQuery(QSqlQuery("SELECT * FROM " + qTableName("test", __FILE__), db));
- QCOMPARE(modelRowsAboutToBeRemovedSpy.count(), 1);
- QCOMPARE(modelRowsAboutToBeRemovedSpy.value(0).value(1).toInt(), 0);
- QCOMPARE(modelRowsAboutToBeRemovedSpy.value(0).value(2).toInt(), 1);
- QCOMPARE(modelRowsRemovedSpy.count(), 1);
- QCOMPARE(modelRowsRemovedSpy.value(0).value(1).toInt(), 0);
- QCOMPARE(modelRowsRemovedSpy.value(0).value(2).toInt(), 1);
-}
-
-// For task 170783: When the query's result set is empty no rows should be inserted,
-// i.e. no rowsAboutToBeInserted or rowsInserted signals should be emitted.
-void tst_QSqlQueryModel::setQueryWithNoRowsInResultSet()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlQueryModel model;
- QSignalSpy modelRowsAboutToBeInsertedSpy(&model, SIGNAL(rowsAboutToBeInserted(const QModelIndex &, int, int)));
- QSignalSpy modelRowsInsertedSpy(&model, SIGNAL(rowsInserted(const QModelIndex &, int, int)));
-
- // The query's result set will be empty so no signals should be emitted!
- QSqlQuery query(db);
- QVERIFY_SQL(query, exec("SELECT * FROM " + qTableName("test", __FILE__) + " where 0 = 1"));
- model.setQuery(query);
- QCOMPARE(modelRowsAboutToBeInsertedSpy.count(), 0);
- QCOMPARE(modelRowsInsertedSpy.count(), 0);
-}
-
-// For task 180617
-// According to the task, several specific duplicate SQL queries would cause
-// multiple empty grid lines to be visible in the view
-void tst_QSqlQueryModel::task_180617()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
- const QString test3(qTableName("test3", __FILE__));
-
- QTableView view;
- QCOMPARE(view.columnAt(0), -1);
- QCOMPARE(view.rowAt(0), -1);
-
- QSqlQueryModel model;
- model.setQuery( "SELECT TOP 0 * FROM " + test3, db );
- view.setModel(&model);
-
- bool error = false;
- // Usually a syntax error
- if (model.lastError().isValid()) // usually a syntax error
- error = true;
-
- QCOMPARE(view.columnAt(0), (error)?-1:0 );
- QCOMPARE(view.rowAt(0), -1);
-
- model.setQuery( "SELECT TOP 0 * FROM " + test3, db );
- model.setQuery( "SELECT TOP 0 * FROM " + test3, db );
- model.setQuery( "SELECT TOP 0 * FROM " + test3, db );
- model.setQuery( "SELECT TOP 0 * FROM " + test3, db );
-
- QCOMPARE(view.columnAt(0), (error)?-1:0 );
- QCOMPARE(view.rowAt(0), -1);
-}
-
-void tst_QSqlQueryModel::task_QTBUG_4963_setHeaderDataWithProxyModel()
-{
- QSqlQueryModel plainModel;
- QSortFilterProxyModel proxyModel;
- proxyModel.setSourceModel(&plainModel);
- QVERIFY(!plainModel.setHeaderData(0, Qt::Horizontal, QObject::tr("ID")));
- // And it should not crash.
-}
-
-QTEST_MAIN(tst_QSqlQueryModel)
-#include "tst_qsqlquerymodel.moc"
diff --git a/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
deleted file mode 100644
index 5f1a6211aa..0000000000
--- a/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+++ /dev/null
@@ -1,1494 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <QtSql/QtSql>
-
-#include "../qsqldatabase/tst_databases.h"
-
-const QString reltest1(qTableName("reltest1", __FILE__)),
- reltest2(qTableName("reltest2", __FILE__)),
- reltest3(qTableName("reltest3", __FILE__)),
- reltest4(qTableName("reltest4", __FILE__)),
- reltest5(qTableName("reltest5", __FILE__));
-
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QSqlRelationalTableModel : public QObject
-{
- Q_OBJECT
-
-public:
- void recreateTestTables(QSqlDatabase);
-
- tst_Databases dbs;
-
-public slots:
- void initTestCase_data();
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-
-private slots:
- void data();
- void setData();
- void multipleRelation();
- void insertRecord();
- void setRecord();
- void insertWithStrategies();
- void removeColumn();
- void filter();
- void sort();
- void revert();
-
- void clearDisplayValuesCache();
- void insertRecordDuplicateFieldNames();
- void invalidData();
- void relationModel();
- void casing();
- void escapedRelations();
- void escapedTableName();
- void whiteSpaceInIdentifiers();
- void psqlSchemaTest();
- void selectAfterUpdate();
-
-private:
- void dropTestTables( QSqlDatabase db );
-};
-
-
-void tst_QSqlRelationalTableModel::initTestCase_data()
-{
- dbs.open();
- if (dbs.fillTestTable() == 0) {
- qWarning("NO DATABASES");
- QSKIP("No database drivers are available in this Qt configuration", SkipAll);
- }
-}
-
-void tst_QSqlRelationalTableModel::recreateTestTables(QSqlDatabase db)
-{
- dropTestTables(db);
-
- QSqlQuery q(db);
- QVERIFY_SQL( q, exec("create table " + reltest1 +
- " (id int not null primary key, name varchar(20), title_key int, another_title_key int)"));
- QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(1, 'harry', 1, 2)"));
- QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(2, 'trond', 2, 1)"));
- QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(3, 'vohi', 1, 2)"));
- QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(4, 'boris', 2, 2)"));
- QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(5, 'nat', NULL, NULL)"));
- QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(6, 'ale', NULL, 2)"));
-
- QVERIFY_SQL( q, exec("create table " + reltest2 + " (tid int not null primary key, title varchar(20))"));
- QVERIFY_SQL( q, exec("insert into " + reltest2 + " values(1, 'herr')"));
- QVERIFY_SQL( q, exec("insert into " + reltest2 + " values(2, 'mister')"));
-
- QVERIFY_SQL( q, exec("create table " + reltest3 + " (id int not null primary key, name varchar(20), city_key int)"));
- QVERIFY_SQL( q, exec("insert into " + reltest3 + " values(1, 'Gustav', 1)"));
- QVERIFY_SQL( q, exec("insert into " + reltest3 + " values(2, 'Heidi', 2)"));
-
- QVERIFY_SQL( q, exec("create table " + reltest4 + " (id int not null primary key, name varchar(20))"));
- QVERIFY_SQL( q, exec("insert into " + reltest4 + " values(1, 'Oslo')"));
- QVERIFY_SQL( q, exec("insert into " + reltest4 + " values(2, 'Trondheim')"));
-
- QVERIFY_SQL( q, exec("create table " + reltest5 + " (title varchar(20) not null primary key, abbrev varchar(20))"));
- QVERIFY_SQL( q, exec("insert into " + reltest5 + " values('herr', 'Hr')"));
- QVERIFY_SQL( q, exec("insert into " + reltest5 + " values('mister', 'Mr')"));
-
- if (testWhiteSpaceNames(db.driverName())) {
- QString reltest6 = db.driver()->escapeIdentifier(qTableName("rel", __FILE__)+" test6", QSqlDriver::TableName);
- QVERIFY_SQL( q, exec("create table " + reltest6 + " (id int not null primary key, " + db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName) +
- " int, " + db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName) + " int)"));
- QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(1, 1,9)"));
- QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(2, 2,8)"));
-
- QString reltest7 = db.driver()->escapeIdentifier(qTableName("rel", __FILE__)+" test7", QSqlDriver::TableName);
- QVERIFY_SQL( q, exec("create table " + reltest7 + " (" + db.driver()->escapeIdentifier("city id", QSqlDriver::TableName) + " int not null primary key, " + db.driver()->escapeIdentifier("city name", QSqlDriver::FieldName) + " varchar(20))"));
- QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(1, 'New York')"));
- QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(2, 'Washington')"));
- }
-}
-
-void tst_QSqlRelationalTableModel::initTestCase()
-{
- foreach (const QString &dbname, dbs.dbNames) {
- QSqlDatabase db=QSqlDatabase::database(dbname);
- if (db.driverName().startsWith("QIBASE"))
- db.exec("SET DIALECT 3");
- else if (tst_Databases::isSqlServer(db)) {
- db.exec("SET ANSI_DEFAULTS ON");
- db.exec("SET IMPLICIT_TRANSACTIONS OFF");
- }
- else if(tst_Databases::isPostgreSQL(db))
- db.exec("set client_min_messages='warning'");
- recreateTestTables(db);
- }
-}
-
-void tst_QSqlRelationalTableModel::cleanupTestCase()
-{
- foreach (const QString &dbName, dbs.dbNames) {
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE( db );
- dropTestTables( QSqlDatabase::database(dbName) );
- }
- dbs.close();
-}
-
-void tst_QSqlRelationalTableModel::dropTestTables( QSqlDatabase db )
-{
- QStringList tableNames;
- tableNames << reltest1
- << reltest2
- << reltest3
- << reltest4
- << reltest5
- << (qTableName( "rel", __FILE__)+" test6")
- << (qTableName( "rel", __FILE__)+" test7")
- << qTableName("CASETEST1", db.driver() )
- << qTableName("casetest1", db.driver() );
- tst_Databases::safeDropTables( db, tableNames );
-
- db.exec("DROP SCHEMA "+qTableName("QTBUG_5373", __FILE__)+" CASCADE");
- db.exec("DROP SCHEMA "+qTableName("QTBUG_5373_s2", __FILE__)+" CASCADE");
-}
-
-void tst_QSqlRelationalTableModel::init()
-{
-}
-
-void tst_QSqlRelationalTableModel::cleanup()
-{
-}
-
-void tst_QSqlRelationalTableModel::data()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.columnCount(), 4);
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- //try a non-existent index
- QVERIFY2(model.data(model.index(0,4)).isValid() == false,"Invalid index returned valid QVariant");
-
- // check row with null relation: they are reported only in LeftJoin mode
- QCOMPARE(model.rowCount(), 4);
-
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(4, 0)).toInt(), 5);
- QCOMPARE(model.data(model.index(4, 1)).toString(), QString("nat"));
- QVERIFY2(model.data(model.index(4, 2)).isValid() == true, "NULL relation reported with invalid QVariant");
-
- //check data retrieval when relational key is a non-integer type
- //in this case a string
- QSqlRelationalTableModel model2(0,db);
- model2.setTable(reltest2);
- model2.setRelation(1, QSqlRelation(reltest5,"title","abbrev"));
- QVERIFY_SQL(model2, select());
-
- QCOMPARE(model2.data(model2.index(0, 1)).toString(), QString("Hr"));
- QCOMPARE(model2.data(model2.index(1, 1)).toString(), QString("Mr"));
-}
-
-void tst_QSqlRelationalTableModel::setData()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- // set the values using OnRowChange Strategy
- {
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setSort(0, Qt::AscendingOrder);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
-
- QVERIFY(model.setData(model.index(0, 1), QString("harry2")));
- QVERIFY(model.setData(model.index(0, 2), 2));
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
-
- model.submit();
-
- QVERIFY(model.setData(model.index(3,1), QString("boris2")));
- QVERIFY(model.setData(model.index(3, 2), 1));
-
- QCOMPARE(model.data(model.index(3,1)).toString(), QString("boris2"));
- QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
-
- model.submit();
- }
- { //verify values
- QSqlRelationalTableModel model(0, db);
- model.setTable(reltest1);
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 2);
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
- QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
-
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
-
- }
-
- //set the values using OnFieldChange strategy
- {
- QSqlRelationalTableModel model(0, db);
- model.setTable(reltest1);
- model.setEditStrategy(QSqlTableModel::OnFieldChange);
- model.setSort(0, Qt::AscendingOrder);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
-
- QVERIFY(model.setData(model.index(1,1), QString("trond2")));
- QVERIFY(model.setData(model.index(2,2), 2));
-
- QCOMPARE(model.data(model.index(1,1)).toString(), QString("trond2"));
- QCOMPARE(model.data(model.index(2,2)).toString(), QString("mister"));
- }
- { //verify values
- QSqlRelationalTableModel model(0, db);
- model.setTable(reltest1);
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond2"));
- QCOMPARE(model.data(model.index(2, 2)).toInt(), 2);
-
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
- QCOMPARE(model.data(model.index(2, 2)).toString(), QString("mister"));
- }
-
- //set values using OnManualSubmit strategy
- {
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
-
- //sybase doesn't allow tables with the same alias used twice as col names
- //so don't set up an identical relation when using the tds driver
- if (!db.driverName().startsWith("QTDS"))
- model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
-
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QVERIFY(model.setData(model.index(2, 1), QString("vohi2")));
- QVERIFY(model.setData(model.index(3, 2), 1));
- QVERIFY(model.setData(model.index(0, 3), 1));
-
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi2"));
- QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
- else
- QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
-
- QVERIFY_SQL(model, submitAll());
- }
- { //verify values
- QSqlRelationalTableModel model(0, db);
- model.setTable(reltest1);
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi2"));
- QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
-
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- if (!db.driverName().startsWith("QTDS"))
- model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
- QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
-
- if (!db.driverName().startsWith("QTDS"))
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
- else
- QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
- }
-
- //check setting of data when the relational key is a non-integer type
- //in this case a string.
- {
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest2);
- model.setRelation(1, QSqlRelation(reltest5, "title", "abbrev"));
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("Hr"));
- QVERIFY(model.setData(model.index(0,1), QString("mister")));
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("Mr"));
- QVERIFY_SQL(model, submitAll());
-
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("Mr"));
- }
-
- // Redo same tests, with a LeftJoin
- {
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest2);
- model.setRelation(1, QSqlRelation(reltest5, "title", "abbrev"));
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("Mr"));
- QVERIFY(model.setData(model.index(0,1), QString("herr")));
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("Hr"));
- QVERIFY_SQL(model, submitAll());
-
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("Hr"));
- }
-
-}
-
-void tst_QSqlRelationalTableModel::multipleRelation()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
- recreateTestTables(db);
-
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("Trondheim"));
-
- // Redo same test in the LeftJoin mode
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
- model.setSort(0, Qt::AscendingOrder);
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("Trondheim"));
-}
-
-void tst_QSqlRelationalTableModel::insertRecord()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QSqlRecord rec;
- QSqlField f1("id", QVariant::Int);
- QSqlField f2("name", QVariant::String);
- QSqlField f3("title_key", QVariant::Int);
- QSqlField f4("another_title_key", QVariant::Int);
-
- f1.setValue(7);
- f2.setValue("test");
- f3.setValue(1);
- f4.setValue(2);
-
- f1.setGenerated(true);
- f2.setGenerated(true);
- f3.setGenerated(true);
- f4.setGenerated(true);
-
- rec.append(f1);
- rec.append(f2);
- rec.append(f3);
- rec.append(f4);
-
- QVERIFY_SQL(model, insertRecord(-1, rec));
-
- QCOMPARE(model.data(model.index(4, 0)).toInt(), 7);
- QCOMPARE(model.data(model.index(4, 1)).toString(), QString("test"));
- QCOMPARE(model.data(model.index(4, 2)).toString(), QString("herr"));
-
- // In LeftJoin mode, two additional rows are fetched
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(6, 0)).toInt(), 7);
- QCOMPARE(model.data(model.index(6, 1)).toString(), QString("test"));
- QCOMPARE(model.data(model.index(6, 2)).toString(), QString("herr"));
-}
-
-void tst_QSqlRelationalTableModel::setRecord()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
- recreateTestTables(db);
-
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QSqlRecord rec;
- QSqlField f1("id", QVariant::Int);
- QSqlField f2("name", QVariant::String);
- QSqlField f3("title_key", QVariant::Int);
- QSqlField f4("another_title_key", QVariant::Int);
-
- f1.setValue(7);
- f2.setValue("tester");
- f3.setValue(1);
- f4.setValue(2);
-
- f1.setGenerated(true);
- f2.setGenerated(true);
- f3.setGenerated(true);
- f4.setGenerated(true);
-
- rec.append(f1);
- rec.append(f2);
- rec.append(f3);
- rec.append(f4);
-
- QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(1, 2)).toString(), QString("mister"));
-
- QVERIFY_SQL(model, setRecord(1, rec));
-
- QCOMPARE(model.data(model.index(1, 0)).toInt(), 7);
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("tester"));
- QCOMPARE(model.data(model.index(1, 2)).toString(), QString("herr"));
-
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, submit());
-
- QCOMPARE(model.data(model.index(3, 0)).toInt(), 7);
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("tester"));
- QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
-
-}
-
-void tst_QSqlRelationalTableModel::insertWithStrategies()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- model.setSort(0, Qt::AscendingOrder);
-
- if (!db.driverName().startsWith("QTDS"))
- model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0,0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0,2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
- QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
- else
- QCOMPARE(model.data(model.index(0,3)).toInt(), 2);
-
- model.insertRows(0, 1);
- model.setData(model.index(0, 0), 1011);
- model.setData(model.index(0, 1), "test");
- model.setData(model.index(0, 2), 2);
- model.setData(model.index(0, 3), 1);
-
- QCOMPARE(model.data(model.index(0,0)).toInt(), 1011);
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("test"));
- QCOMPARE(model.data(model.index(0,2)).toString(), QString("mister"));
- if (!db.driverName().startsWith("QTDS"))
- QCOMPARE(model.data(model.index(0,3)).toString(), QString("herr"));
- else
- QCOMPARE(model.data(model.index(0,3)).toInt(), 1);
-
- QCOMPARE(model.data(model.index(1,0)).toInt(), 1);
- QCOMPARE(model.data(model.index(1,1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1,2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
- QCOMPARE(model.data(model.index(1,3)).toString(), QString("mister"));
- else
- QCOMPARE(model.data(model.index(1,3)).toInt(), 2);
-
-
-
- QVERIFY_SQL(model, submitAll());
-
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
-
- QCOMPARE(model.data(model.index(0,0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0,2)).toString(), QString("herr"));
-
- if (!db.driverName().startsWith("QTDS")) {
- QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
- model.setData(model.index(0,3),1);
- QCOMPARE(model.data(model.index(0,3)).toString(), QString("herr"));
- } else {
- QCOMPARE(model.data(model.index(0,3)).toInt(), 2);
- model.setData(model.index(0,3),1);
- QCOMPARE(model.data(model.index(0,3)).toInt(), 1);
- }
-
- model.insertRows(0, 2);
- model.setData(model.index(0, 0), 1012);
- model.setData(model.index(0, 1), "george");
- model.setData(model.index(0, 2), 2);
- model.setData(model.index(0, 3), 2);
-
- model.setData(model.index(1, 0), 1013);
- model.setData(model.index(1, 1), "kramer");
- model.setData(model.index(1, 2), 2);
- model.setData(model.index(1, 3), 1);
-
- QCOMPARE(model.data(model.index(0,0)).toInt(),1012);
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("george"));
- QCOMPARE(model.data(model.index(0,2)).toString(), QString("mister"));
- if (!db.driverName().startsWith("QTDS"))
- QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
- else
- QCOMPARE(model.data(model.index(0,3)).toInt(), 2);
-
-
- QCOMPARE(model.data(model.index(1,0)).toInt(),1013);
- QCOMPARE(model.data(model.index(1,1)).toString(), QString("kramer"));
- QCOMPARE(model.data(model.index(1,2)).toString(), QString("mister"));
- if (!db.driverName().startsWith("QTDS"))
- QCOMPARE(model.data(model.index(1,3)).toString(), QString("herr"));
- else
- QCOMPARE(model.data(model.index(1,3)).toInt(), 1);
-
- QCOMPARE(model.data(model.index(2,0)).toInt(), 1);
- QCOMPARE(model.data(model.index(2,1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(2,2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
- QCOMPARE(model.data(model.index(2,3)).toString(), QString("herr"));
- else
- QCOMPARE(model.data(model.index(2,3)).toInt(), 1);
-
- QVERIFY_SQL(model, submitAll());
-}
-
-void tst_QSqlRelationalTableModel::removeColumn()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
- recreateTestTables(db);
-
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
-
- QVERIFY_SQL(model, removeColumn(3));
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.columnCount(), 3);
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(0, 3)), QVariant());
-
- // try removing more than one column
- QVERIFY_SQL(model, removeColumns(1, 2));
- QCOMPARE(model.columnCount(), 1);
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)), QVariant());
-
- // try in LeftJoin mode the same tests
- CHECK_DATABASE(db);
- recreateTestTables(db);
-
- QSqlRelationalTableModel lmodel(0, db);
-
- lmodel.setTable(reltest1);
- lmodel.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- lmodel.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(lmodel, select());
-
- QVERIFY_SQL(lmodel, removeColumn(3));
- QVERIFY_SQL(lmodel, select());
-
- QCOMPARE(lmodel.columnCount(), 3);
-
- QCOMPARE(lmodel.data(lmodel.index(0, 0)).toInt(), 1);
- QCOMPARE(lmodel.data(lmodel.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(lmodel.data(lmodel.index(0, 2)).toString(), QString("herr"));
- QCOMPARE(lmodel.data(lmodel.index(0, 3)), QVariant());
-
- // try removing more than one column
- QVERIFY_SQL(lmodel, removeColumns(1, 2));
- QCOMPARE(lmodel.columnCount(), 1);
- QCOMPARE(lmodel.data(lmodel.index(0, 0)).toInt(), 1);
- QCOMPARE(lmodel.data(lmodel.index(0, 1)), QVariant());
-}
-
-void tst_QSqlRelationalTableModel::filter()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
- recreateTestTables(db);
-
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- model.setFilter("title = 'herr'");
-
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 2);
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(1, 2)).toString(), QString("herr"));
-
- // Redo same filter test in LeftJoin mode
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model,select());
-
- QCOMPARE(model.rowCount(), 2);
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(1, 2)).toString(), QString("herr"));
-}
-
-void tst_QSqlRelationalTableModel::sort()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- if (!db.driverName().startsWith("QTDS"))
- model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
-
- model.setSort(2, Qt::DescendingOrder);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.rowCount(), 4);
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(1, 2)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(2, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
-
-
- model.setSort(3, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- if (!db.driverName().startsWith("QTDS")) {
- QCOMPARE(model.rowCount(), 4);
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(1, 3)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(2, 3)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(3, 3)).toString(), QString("mister"));
- } else {
- QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
- QCOMPARE(model.data(model.index(1, 3)).toInt(), 2);
- QCOMPARE(model.data(model.index(2, 3)).toInt(), 2);
- QCOMPARE(model.data(model.index(3, 3)).toInt(), 2);
- }
-
- // redo same test in LeftJoin mode
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- model.setSort(2, Qt::DescendingOrder);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.rowCount(), 6);
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(1, 2)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(2, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(4, 2)).toString(), QString(""));
- QCOMPARE(model.data(model.index(5, 2)).toString(), QString(""));
-
- model.setSort(3, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- if (!db.driverName().startsWith("QTDS")) {
- QCOMPARE(model.rowCount(), 6);
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString(""));
- QCOMPARE(model.data(model.index(1, 3)).toString(), QString("herr"));
- QCOMPARE(model.data(model.index(2, 3)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(3, 3)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(4, 3)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(5, 3)).toString(), QString("mister"));
- } else {
- QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
- QCOMPARE(model.data(model.index(1, 3)).toInt(), 2);
- QCOMPARE(model.data(model.index(2, 3)).toInt(), 2);
- QCOMPARE(model.data(model.index(3, 3)).toInt(), 2);
- }
-}
-
-static void testRevert(QSqlRelationalTableModel &model)
-{
- /* revert single row */
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
- QVERIFY(model.setData(model.index(0, 2), 2, Qt::EditRole));
-
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
- model.revertRow(0);
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- /* revert all */
- QVERIFY(model.setData(model.index(0, 2), 2, Qt::EditRole));
-
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
- model.revertAll();
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- // the following only works for OnManualSubmit
- if (model.editStrategy() != QSqlTableModel::OnManualSubmit)
- return;
-
- /* revert inserted rows */
- int initialRowCount = model.rowCount();
- QVERIFY(model.insertRows(4, 4));
- QVERIFY(model.rowCount() == (initialRowCount + 4));
-
- /* make sure the new rows are initialized to nothing */
- QVERIFY(model.data(model.index(4, 2)).toString().isEmpty());
- QVERIFY(model.data(model.index(5, 2)).toString().isEmpty());
- QVERIFY(model.data(model.index(6, 2)).toString().isEmpty());
- QVERIFY(model.data(model.index(7, 2)).toString().isEmpty());
-
- /* Set some values */
- QVERIFY(model.setData(model.index(4, 0), 42, Qt::EditRole));
- QVERIFY(model.setData(model.index(5, 0), 43, Qt::EditRole));
- QVERIFY(model.setData(model.index(6, 0), 44, Qt::EditRole));
- QVERIFY(model.setData(model.index(7, 0), 45, Qt::EditRole));
-
- QVERIFY(model.setData(model.index(4, 2), 2, Qt::EditRole));
- QVERIFY(model.setData(model.index(5, 2), 2, Qt::EditRole));
- QVERIFY(model.setData(model.index(6, 2), 1, Qt::EditRole));
- QVERIFY(model.setData(model.index(7, 2), 2, Qt::EditRole));
-
- /* Now revert the newly inserted rows */
- model.revertAll();
- QVERIFY(model.rowCount() == initialRowCount);
-
- /* Insert rows again */
- QVERIFY(model.insertRows(4, 4));
-
- /* make sure the new rows are initialized to nothing */
- QVERIFY(model.data(model.index(4, 2)).toString().isEmpty());
- QVERIFY(model.data(model.index(5, 2)).toString().isEmpty());
- QVERIFY(model.data(model.index(6, 2)).toString().isEmpty());
- QVERIFY(model.data(model.index(7, 2)).toString().isEmpty());
-}
-
-void tst_QSqlRelationalTableModel::revert()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
-
- model.setSort(0, Qt::AscendingOrder);
-
- QVERIFY_SQL(model, select());
- QCOMPARE(model.data(model.index(0, 0)).toString(), QString("1"));
-
- testRevert(model);
- if (QTest::currentTestFailed())
- return;
-
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
- testRevert(model);
-
- /* and again with OnManualSubmit */
- model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
- QVERIFY_SQL(model, select());
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- testRevert(model);
-
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- testRevert(model);
-}
-
-void tst_QSqlRelationalTableModel::clearDisplayValuesCache()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlRelationalTableModel model(0, db);
-
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
-
- if (!db.driverName().startsWith("QTDS"))
- model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
- model.setSort(1, Qt::AscendingOrder);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
-
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(3, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
- QCOMPARE(model.data(model.index(3, 3)).toString(), QString("mister"));
- else
- QCOMPARE(model.data(model.index(3, 3)).toInt(), 2 );
-
- model.insertRow(model.rowCount());
- QVERIFY(model.setData(model.index(4, 0), 7, Qt::EditRole));
- QVERIFY(model.setData(model.index(4, 1), "anders", Qt::EditRole));
- QVERIFY(model.setData(model.index(4, 2), 1, Qt::EditRole));
- QVERIFY(model.setData(model.index(4, 3), 1, Qt::EditRole));
- model.submitAll();
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 7);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("anders"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
- else
- QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
-
- QCOMPARE(model.data(model.index(4, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(4, 2)).toString(), QString("herr"));
- if (!db.driverName().startsWith("QTDS"))
- QCOMPARE(model.data(model.index(4, 3)).toString(), QString("mister"));
- else
- QCOMPARE(model.data(model.index(4, 3)).toInt(), 2);
-}
-
-// For task 140782 and 176374: If the main table and the the related tables uses the same
-// name for a column or display column then insertRecord() would return true though it
-// actually failed.
-void tst_QSqlRelationalTableModel::insertRecordDuplicateFieldNames()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlRelationalTableModel model(0, db);
- model.setTable(reltest3);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- model.setSort(0, Qt::AscendingOrder);
-
- // Duplication of "name", used in both reltest3 and reltest4.
- model.setRelation(2, QSqlRelation(reltest4, "id", "name"));
- QVERIFY_SQL(model, select());
-
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
- QCOMPARE(model.record(1).value((reltest4+QLatin1String("_name_2")).toUpper()).toString(),
- QString("Trondheim"));
- } else {
- QCOMPARE(model.record(1).value((reltest4+QLatin1String("_name_2"))).toString(),
- QString("Trondheim"));
- }
-
- QSqlRecord rec = model.record();
- rec.setValue(0, 3);
- rec.setValue(1, "Berge");
- rec.setValue(2, 1); // Must insert the key value
-
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
- QCOMPARE(rec.fieldName(0), QLatin1String("ID"));
- QCOMPARE(rec.fieldName(1), QLatin1String("NAME")); // This comes from main table
- } else {
- QCOMPARE(rec.fieldName(0), QLatin1String("id"));
- QCOMPARE(rec.fieldName(1), QLatin1String("name"));
- }
-
- // The duplicate field names is aliased because it's comes from the relation's display column.
- if(db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
- QCOMPARE(rec.fieldName(2), (reltest4+QLatin1String("_name_2")).toUpper());
- else
- QCOMPARE(rec.fieldName(2), reltest4+QLatin1String("_name_2"));
-
- QVERIFY(model.insertRecord(-1, rec));
- QCOMPARE(model.data(model.index(2, 2)).toString(), QString("Oslo"));
- QVERIFY(model.submitAll());
- QCOMPARE(model.data(model.index(2, 2)).toString(), QString("Oslo"));
-}
-
-void tst_QSqlRelationalTableModel::invalidData()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlRelationalTableModel model(0, db);
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
-
- //try set a non-existent relational key
- QVERIFY(model.setData(model.index(0, 2), 3) == false);
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- //try to set data in non valid index
- QVERIFY(model.setData(model.index(0,10),5) == false);
-
- //same test with LeftJoin mode
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- //try set a non-existent relational key
- QVERIFY(model.setData(model.index(0, 2), 3) == false);
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- //try to set data in non valid index
- QVERIFY(model.setData(model.index(0,10),5) == false);
-}
-
-void tst_QSqlRelationalTableModel::relationModel()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlRelationalTableModel model(0, db);
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
-
- QVERIFY(model.relationModel(0) == NULL);
- QVERIFY(model.relationModel(1) == NULL);
- QVERIFY(model.relationModel(2) != NULL);
- QVERIFY(model.relationModel(3) == NULL);
- QVERIFY(model.relationModel(4) == NULL);
-
- model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
- QVERIFY_SQL(model, select());
-
- QVERIFY(model.relationModel(0) == NULL);
- QVERIFY(model.relationModel(1) == NULL);
- QVERIFY(model.relationModel(2) != NULL);
- QVERIFY(model.relationModel(3) != NULL);
- QVERIFY(model.relationModel(4) == NULL);
-
- QSqlTableModel *rel_model = model.relationModel(2);
- QCOMPARE(rel_model->data(rel_model->index(0,1)).toString(), QString("herr"));
-
- //same test in JoinMode
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QVERIFY(model.relationModel(0) == NULL);
- QVERIFY(model.relationModel(1) == NULL);
- QVERIFY(model.relationModel(2) != NULL);
- QVERIFY(model.relationModel(3) != NULL);
- QVERIFY(model.relationModel(4) == NULL);
-
- QSqlTableModel *rel_model2 = model.relationModel(2);
- QCOMPARE(rel_model2->data(rel_model->index(0,1)).toString(), QString("herr"));
-}
-
-void tst_QSqlRelationalTableModel::casing()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- if (db.driverName().startsWith("QSQLITE") || db.driverName().startsWith("QIBASE") || tst_Databases::isSqlServer(db))
- QSKIP("The casing test for this database is irrelevant since this database does not treat different cases as separate entities", SkipAll);
-
- QSqlQuery q(db);
- QVERIFY_SQL( q, exec("create table " + qTableName("CASETEST1", db.driver()).toUpper() +
- " (id int not null primary key, name varchar(20), title_key int, another_title_key int)"));
-
- if( !q.exec("create table " + qTableName("casetest1", db.driver()) +
- " (ident int not null primary key, name varchar(20), title_key int)"))
- QSKIP("The casing test for this database is irrelevant since this database does not treat different cases as separate entities", SkipAll);
-
- QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(1, 'harry', 1, 2)"));
- QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(2, 'trond', 2, 1)"));
- QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(3, 'vohi', 1, 2)"));
- QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(4, 'boris', 2, 2)"));
- QVERIFY_SQL( q, exec("insert into " + qTableName("casetest1", db.driver()) + " values(1, 'jerry', 1)"));
- QVERIFY_SQL( q, exec("insert into " + qTableName("casetest1", db.driver()) + " values(2, 'george', 2)"));
- QVERIFY_SQL( q, exec("insert into " + qTableName("casetest1", db.driver()) + " values(4, 'kramer', 2)"));
-
- if (db.driverName().startsWith("QOCI")) {
- //try an owner that doesn't exist
- QSqlRecord rec = db.driver()->record("doug." + qTableName("CASETEST1", db.driver()).toUpper());
- QCOMPARE( rec.count(), 0);
-
- //try an owner that does exist
- rec = db.driver()->record(db.userName() + "." + qTableName("CASETEST1", db.driver()).toUpper());
- QCOMPARE( rec.count(), 4);
- }
- QSqlRecord rec = db.driver()->record(qTableName("CASETEST1", db.driver()).toUpper());
- QCOMPARE( rec.count(), 4);
-
- rec = db.driver()->record(qTableName("casetest1", db.driver()));
- QCOMPARE( rec.count(), 3);
-
- QSqlTableModel upperCaseModel(0, db);
- upperCaseModel.setTable(qTableName("CASETEST1", db.driver()).toUpper());
-
- QCOMPARE(upperCaseModel.tableName(),qTableName("CASETEST1",db.driver()).toUpper());
-
- QVERIFY_SQL(upperCaseModel, select());
-
- QCOMPARE(upperCaseModel.rowCount(), 4);
-
- QSqlTableModel lowerCaseModel(0, db);
- lowerCaseModel.setTable(qTableName("casetest1", db.driver()));
- QCOMPARE(lowerCaseModel.tableName(), qTableName("casetest1",db.driver()));
- QVERIFY_SQL(lowerCaseModel, select());
-
- QCOMPARE(lowerCaseModel.rowCount(), 3);
-
- QSqlRelationalTableModel model(0, db);
- model.setTable(qTableName("CASETEST1", db.driver()).toUpper());
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-}
-
-void tst_QSqlRelationalTableModel::escapedRelations()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
- recreateTestTables(db);
-
- QSqlRelationalTableModel model(0, db);
- model.setTable(reltest1);
-
- //try with relation table name quoted
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
- model.setRelation(2, QSqlRelation(db.driver()->escapeIdentifier(reltest2.toUpper(),QSqlDriver::TableName),
- "tid",
- "title"));
- } else {
- model.setRelation(2, QSqlRelation(db.driver()->escapeIdentifier(reltest2,QSqlDriver::TableName),
- "tid",
- "title"));
-
- }
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- //try with index column quoted
- model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
- model.setRelation(2, QSqlRelation(reltest2,
- db.driver()->escapeIdentifier("tid", QSqlDriver::FieldName).toUpper(),
- "title"));
- } else {
- model.setRelation(2, QSqlRelation(reltest2,
- db.driver()->escapeIdentifier("tid", QSqlDriver::FieldName),
- "title"));
- }
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- //try with display column quoted
- model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
-
- model.setRelation(2, QSqlRelation(reltest2,
- "tid",
- db.driver()->escapeIdentifier("title", QSqlDriver::FieldName).toUpper()));
- } else {
- model.setRelation(2, QSqlRelation(reltest2,
- "tid",
- db.driver()->escapeIdentifier("title", QSqlDriver::FieldName)));
- }
-
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- //try with tablename and index and display columns quoted in the relation
- model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
- model.setRelation(2, QSqlRelation(reltest2,
- "tid",
- db.driver()->escapeIdentifier("title", QSqlDriver::FieldName).toUpper()));
- } else {
- model.setRelation(2, QSqlRelation(reltest2,
- "tid",
- db.driver()->escapeIdentifier("title", QSqlDriver::FieldName)));
- }
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
-}
-
-void tst_QSqlRelationalTableModel::escapedTableName()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- // set the values using OnRowChange Strategy with an escaped tablename
- {
- QSqlRelationalTableModel model(0, db);
-
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
- model.setTable(db.driver()->escapeIdentifier(reltest1.toUpper(), QSqlDriver::TableName));
- } else {
- model.setTable(db.driver()->escapeIdentifier(reltest1, QSqlDriver::TableName));
- }
- model.setSort(0, Qt::AscendingOrder);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
-
- QVERIFY(model.setData(model.index(0, 1), QString("harry2")));
- QVERIFY(model.setData(model.index(0, 2), 2));
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
-
- model.submit();
-
- QVERIFY(model.setData(model.index(3,1), QString("boris2")));
- QVERIFY(model.setData(model.index(3, 2), 1));
-
- QCOMPARE(model.data(model.index(3,1)).toString(), QString("boris2"));
- QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
-
- model.submit();
- }
- { //verify values
- QSqlRelationalTableModel model(0, db);
- model.setTable(reltest1);
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 2);
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
- QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
-
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
-
- }
-
- //ok, now do same test with LeftJoin
- {
- QSqlRelationalTableModel model(0, db);
-
- if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
- model.setTable(db.driver()->escapeIdentifier(reltest1.toUpper(), QSqlDriver::TableName));
- } else {
- model.setTable(db.driver()->escapeIdentifier(reltest1, QSqlDriver::TableName));
- }
- model.setSort(0, Qt::AscendingOrder);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QVERIFY(model.setData(model.index(0, 1), QString("harry2")));
- QVERIFY(model.setData(model.index(0, 2), 2));
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
-
- model.submit();
-
- QVERIFY(model.setData(model.index(3,1), QString("boris2")));
- QVERIFY(model.setData(model.index(3, 2), 1));
-
- QCOMPARE(model.data(model.index(3,1)).toString(), QString("boris2"));
- QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
-
- model.submit();
- }
- { //verify values
- QSqlRelationalTableModel model(0, db);
- model.setTable(reltest1);
- model.setSort(0, Qt::AscendingOrder);
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 2);
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
- QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
-
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
- QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
-
- }
-}
-
-void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- if (!testWhiteSpaceNames(db.driverName()))
- QSKIP("White space test irrelevant for driver", SkipAll);
- QSqlRelationalTableModel model(0, db);
- model.setTable(db.driver()->escapeIdentifier(qTableName("rel", __FILE__)+" test6", QSqlDriver::TableName));
- model.setSort(0, Qt::DescendingOrder);
- model.setRelation(1, QSqlRelation(db.driver()->escapeIdentifier(qTableName("rel", __FILE__)+" test7", QSqlDriver::TableName),
- db.driver()->escapeIdentifier("city id", QSqlDriver::FieldName),
- db.driver()->escapeIdentifier("city name", QSqlDriver::FieldName)));
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("Washington"));
- QCOMPARE(model.data(model.index(1,1)).toString(), QString("New York"));
-
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0,1)).toString(), QString("Washington"));
- QCOMPARE(model.data(model.index(1,1)).toString(), QString("New York"));
-
- model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
- QVERIFY_SQL(model, select());
-
- QSqlRecord rec;
- QSqlField f1("id", QVariant::Int);
- QSqlField f2(db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName), QVariant::Int);
- QSqlField f3(db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName), QVariant::Int);
-
- f1.setValue(3);
- f2.setValue(2);
- f3.setValue(7);
-
- f1.setGenerated(true);
- f2.setGenerated(true);
- f3.setGenerated(true);
-
- rec.append(f1);
- rec.append(f2);
- rec.append(f3);
-
- QVERIFY_SQL(model, insertRecord(-1, rec));
- model.submitAll();
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("Washington"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 7);
-
- //TODO: For some reson setting a record using manual submit fails
- //model.setEditStrategy(QSqlTableModel::OnManualSubmit);
-
- QSqlRecord recNew;
- QSqlField f1New("id", QVariant::Int);
- QSqlField f2New(db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName), QVariant::Int);
- QSqlField f3New(db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName), QVariant::Int);
-
- f1New.setValue(4);
- f2New.setValue(1);
- f3New.setValue(6);
-
- f1New.setGenerated(true);
- f2New.setGenerated(true);
- f3New.setGenerated(true);
-
- recNew.append(f1New);
- recNew.append(f2New);
- recNew.append(f3New);
-
- QVERIFY_SQL(model, setRecord(0, recNew));
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 4);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("New York"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 6);
-
- QVERIFY_SQL(model, submitAll());
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 4);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("New York"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 6);
-}
-
-void tst_QSqlRelationalTableModel::psqlSchemaTest()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- if(!tst_Databases::isPostgreSQL(db)) {
- QSKIP("Postgresql specific test", SkipSingle);
- return;
- }
- QSqlRelationalTableModel model(0, db);
- QSqlQuery q(db);
- QVERIFY_SQL(q, exec("create schema "+qTableName("QTBUG_5373", __FILE__)));
- QVERIFY_SQL(q, exec("create schema "+qTableName("QTBUG_5373_s2", __FILE__)));
- QVERIFY_SQL(q, exec("create table "+qTableName("QTBUG_5373", __FILE__)+"."+qTableName("document", __FILE__)+"(document_id int primary key, relatingid int, userid int)"));
- QVERIFY_SQL(q, exec("create table "+qTableName("QTBUG_5373_s2", __FILE__)+"."+qTableName("user", __FILE__)+"(userid int primary key, username char(40))"));
- model.setTable(qTableName("QTBUG_5373", __FILE__)+"."+qTableName("document", __FILE__));
- model.setRelation(1, QSqlRelation(qTableName("QTBUG_5373_s2", __FILE__)+"."+qTableName("user", __FILE__), "userid", "username"));
- model.setRelation(2, QSqlRelation(qTableName("QTBUG_5373_s2", __FILE__)+"."+qTableName("user", __FILE__), "userid", "username"));
- QVERIFY_SQL(model, select());
-
- model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
- QVERIFY_SQL(model, select());
-}
-
-void tst_QSqlRelationalTableModel::selectAfterUpdate()
-{
- QFETCH_GLOBAL(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlRelationalTableModel model(0, db);
- model.setTable(reltest1);
- model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
- QVERIFY_SQL(model, select());
- QVERIFY(model.relationModel(2)->rowCount() == 2);
- {
- QSqlQuery q(db);
- QVERIFY_SQL(q, exec("insert into " + reltest2 + " values(3, 'mrs')"));
- model.relationModel(2)->select();
- }
- QVERIFY(model.relationModel(2)->rowCount() == 3);
- QVERIFY(model.setData(model.index(0,2), 3));
- QVERIFY(model.submitAll());
- QCOMPARE(model.data(model.index(0,2)), QVariant("mrs"));
-}
-
-QTEST_MAIN(tst_QSqlRelationalTableModel)
-#include "tst_qsqlrelationaltablemodel.moc"
diff --git a/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp b/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp
deleted file mode 100644
index 96a1f1caa5..0000000000
--- a/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp
+++ /dev/null
@@ -1,1377 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include "../qsqldatabase/tst_databases.h"
-#include <QtSql>
-
-const QString test(qTableName("test", __FILE__)),
- test2(qTableName("test2", __FILE__)),
- test3(qTableName("test3", __FILE__));
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-Q_DECLARE_METATYPE(QModelIndex)
-
-class tst_QSqlTableModel : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QSqlTableModel();
- virtual ~tst_QSqlTableModel();
-
-
- void dropTestTables();
- void createTestTables();
- void recreateTestTables();
- void repopulateTestTables();
-
- tst_Databases dbs;
-
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-private slots:
-
- void select_data() { generic_data(); }
- void select();
- void insertColumns_data() { generic_data_with_strategies(); }
- void insertColumns();
- void submitAll_data() { generic_data(); }
- void submitAll();
- void setRecord_data() { generic_data(); }
- void setRecord();
- void insertRow_data() { generic_data_with_strategies(); }
- void insertRow();
- void insertRecord_data() { generic_data(); }
- void insertRecord();
- void insertMultiRecords_data() { generic_data(); }
- void insertMultiRecords();
- void removeRow_data() { generic_data(); }
- void removeRow();
- void removeRows_data() { generic_data(); }
- void removeRows();
- void removeInsertedRow_data() { generic_data_with_strategies(); }
- void removeInsertedRow();
- void removeInsertedRows_data() { generic_data(); }
- void removeInsertedRows();
- void setFilter_data() { generic_data(); }
- void setFilter();
- void setInvalidFilter_data() { generic_data(); }
- void setInvalidFilter();
-
- void emptyTable_data() { generic_data(); }
- void emptyTable();
- void tablesAndSchemas_data() { generic_data("QPSQL"); }
- void tablesAndSchemas();
- void whitespaceInIdentifiers_data() { generic_data(); }
- void whitespaceInIdentifiers();
- void primaryKeyOrder_data() { generic_data("QSQLITE"); }
- void primaryKeyOrder();
-
- void sqlite_bigTable_data() { generic_data("QSQLITE"); }
- void sqlite_bigTable();
-
- // bug specific tests
- void insertRecordBeforeSelect_data() { generic_data(); }
- void insertRecordBeforeSelect();
- void submitAllOnInvalidTable_data() { generic_data(); }
- void submitAllOnInvalidTable();
- void insertRecordsInLoop_data() { generic_data(); }
- void insertRecordsInLoop();
- void sqlite_attachedDatabase_data() { generic_data("QSQLITE"); }
- void sqlite_attachedDatabase(); // For task 130799
- void tableModifyWithBlank_data() { generic_data(); }
- void tableModifyWithBlank(); // For mail task
-
- void removeColumnAndRow_data() { generic_data(); }
- void removeColumnAndRow(); // task 256032
-
- void insertBeforeDelete_data() { generic_data(); }
- void insertBeforeDelete();
-private:
- void generic_data(const QString& engine=QString());
- void generic_data_with_strategies(const QString& engine=QString());
-};
-
-tst_QSqlTableModel::tst_QSqlTableModel()
-{
- qRegisterMetaType<QModelIndex>("QModelIndex");
- dbs.open();
-}
-
-tst_QSqlTableModel::~tst_QSqlTableModel()
-{
-}
-
-void tst_QSqlTableModel::dropTestTables()
-{
- for (int i = 0; i < dbs.dbNames.count(); ++i) {
- QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i));
- QSqlQuery q(db);
- if(tst_Databases::isPostgreSQL(db))
- QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
-
- QStringList tableNames;
- tableNames << test
- << test2
- << test3
- << qTableName("test4", __FILE__)
- << qTableName("emptytable", __FILE__)
- << qTableName("bigtable", __FILE__)
- << qTableName("foo", __FILE__);
- if (testWhiteSpaceNames(db.driverName()))
- tableNames << qTableName("qtestw hitespace", db.driver());
-
- tst_Databases::safeDropTables(db, tableNames);
-
- if (db.driverName().startsWith("QPSQL")) {
- q.exec("DROP SCHEMA " + qTableName("testschema", __FILE__) + " CASCADE");
- }
- }
-}
-
-void tst_QSqlTableModel::createTestTables()
-{
- for (int i = 0; i < dbs.dbNames.count(); ++i) {
- QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i));
- QSqlQuery q(db);
-
- QVERIFY_SQL( q, exec("create table " + test + "(id int, name varchar(20), title int)"));
-
- QVERIFY_SQL( q, exec("create table " + test2 + "(id int, title varchar(20))"));
-
- QVERIFY_SQL( q, exec("create table " + test3 + "(id int, random varchar(20), randomtwo varchar(20))"));
-
- if(!tst_Databases::isSqlServer(db))
- QVERIFY_SQL( q, exec("create table " + qTableName("test4", __FILE__) + "(column1 varchar(50), column2 varchar(50), column3 varchar(50))"));
- else
- QVERIFY_SQL( q, exec("create table " + qTableName("test4", __FILE__) + "(column1 varchar(50), column2 varchar(50) NULL, column3 varchar(50))"));
-
-
- QVERIFY_SQL( q, exec("create table " + qTableName("emptytable", __FILE__) + "(id int)"));
-
- if (testWhiteSpaceNames(db.driverName())) {
- QString qry = "create table " + qTableName("qtestw hitespace", db.driver()) + " ("+ db.driver()->escapeIdentifier("a field", QSqlDriver::FieldName) + " int)";
- QVERIFY_SQL( q, exec(qry));
- }
- }
-}
-
-void tst_QSqlTableModel::repopulateTestTables()
-{
- for (int i = 0; i < dbs.dbNames.count(); ++i) {
- QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i));
- QSqlQuery q(db);
-
- q.exec("delete from " + test);
- QVERIFY_SQL( q, exec("insert into " + test + " values(1, 'harry', 1)"));
- QVERIFY_SQL( q, exec("insert into " + test + " values(2, 'trond', 2)"));
- QVERIFY_SQL( q, exec("insert into " + test + " values(3, 'vohi', 3)"));
-
- q.exec("delete from " + test2);
- QVERIFY_SQL( q, exec("insert into " + test2 + " values(1, 'herr')"));
- QVERIFY_SQL( q, exec("insert into " + test2 + " values(2, 'mister')"));
-
- q.exec("delete from " + test3);
- QVERIFY_SQL( q, exec("insert into " + test3 + " values(1, 'foo', 'bar')"));
- QVERIFY_SQL( q, exec("insert into " + test3 + " values(2, 'baz', 'joe')"));
- }
-}
-
-void tst_QSqlTableModel::recreateTestTables()
-{
- dropTestTables();
- createTestTables();
- repopulateTestTables();
-}
-
-void tst_QSqlTableModel::generic_data(const QString &engine)
-{
- if ( dbs.fillTestTable(engine) == 0 ) {
- if (engine.isEmpty())
- QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
- else
- QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
- }
-}
-
-void tst_QSqlTableModel::generic_data_with_strategies(const QString &engine)
-{
- if ( dbs.fillTestTableWithStrategies(engine) == 0 ) {
- if (engine.isEmpty())
- QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
- else
- QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
- }
-}
-
-void tst_QSqlTableModel::initTestCase()
-{
- recreateTestTables();
-}
-
-void tst_QSqlTableModel::cleanupTestCase()
-{
- dropTestTables();
- dbs.close();
-}
-
-void tst_QSqlTableModel::init()
-{
-}
-
-void tst_QSqlTableModel::cleanup()
-{
- repopulateTestTables();
-}
-
-void tst_QSqlTableModel::select()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.rowCount(), 3);
- QCOMPARE(model.columnCount(), 3);
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 3)), QVariant());
-
- QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
- QCOMPARE(model.data(model.index(1, 3)), QVariant());
-
- QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(2, 2)).toInt(), 3);
- QCOMPARE(model.data(model.index(2, 3)), QVariant());
-
- QCOMPARE(model.data(model.index(3, 0)), QVariant());
- QCOMPARE(model.data(model.index(3, 1)), QVariant());
- QCOMPARE(model.data(model.index(3, 2)), QVariant());
- QCOMPARE(model.data(model.index(3, 3)), QVariant());
-}
-
-void tst_QSqlTableModel::insertColumns()
-{
- // Just like the select test, with extra stuff
- QFETCH(QString, dbName);
- QFETCH(int, submitpolicy_i);
- QSqlTableModel::EditStrategy submitpolicy = (QSqlTableModel::EditStrategy) submitpolicy_i;
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- model.setEditStrategy(submitpolicy);
-
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.rowCount(), 3);
- QCOMPARE(model.columnCount(), 3);
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 3)), QVariant());
-
- QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
- QCOMPARE(model.data(model.index(1, 3)), QVariant());
-
- QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(2, 2)).toInt(), 3);
- QCOMPARE(model.data(model.index(2, 3)), QVariant());
-
- QCOMPARE(model.data(model.index(3, 0)), QVariant());
- QCOMPARE(model.data(model.index(3, 1)), QVariant());
- QCOMPARE(model.data(model.index(3, 2)), QVariant());
- QCOMPARE(model.data(model.index(3, 3)), QVariant());
-
- // Now add a column at 0 and 2
- model.insertColumn(0);
- model.insertColumn(2);
-
- QCOMPARE(model.rowCount(), 3);
- QCOMPARE(model.columnCount(), 5);
-
- QCOMPARE(model.data(model.index(0, 0)), QVariant());
- QCOMPARE(model.data(model.index(0, 1)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 2)), QVariant());
- QCOMPARE(model.data(model.index(0, 3)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 4)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 5)), QVariant());
-
- QCOMPARE(model.data(model.index(1, 0)), QVariant());
- QCOMPARE(model.data(model.index(1, 1)).toInt(), 2);
- QCOMPARE(model.data(model.index(1, 2)), QVariant());
- QCOMPARE(model.data(model.index(1, 3)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(1, 4)).toInt(), 2);
- QCOMPARE(model.data(model.index(1, 5)), QVariant());
-
- QCOMPARE(model.data(model.index(2, 0)), QVariant());
- QCOMPARE(model.data(model.index(2, 1)).toInt(), 3);
- QCOMPARE(model.data(model.index(2, 2)), QVariant());
- QCOMPARE(model.data(model.index(2, 3)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(2, 4)).toInt(), 3);
- QCOMPARE(model.data(model.index(2, 5)), QVariant());
-
- QCOMPARE(model.data(model.index(3, 0)), QVariant());
- QCOMPARE(model.data(model.index(3, 1)), QVariant());
- QCOMPARE(model.data(model.index(3, 2)), QVariant());
- QCOMPARE(model.data(model.index(3, 3)), QVariant());
- QCOMPARE(model.data(model.index(3, 4)), QVariant());
- QCOMPARE(model.data(model.index(3, 5)), QVariant());
-}
-
-void tst_QSqlTableModel::setRecord()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QList<QSqlTableModel::EditStrategy> policies = QList<QSqlTableModel::EditStrategy>() << QSqlTableModel::OnFieldChange << QSqlTableModel::OnRowChange << QSqlTableModel::OnManualSubmit;
-
- QString Xsuffix;
- foreach( QSqlTableModel::EditStrategy submitpolicy, policies) {
-
- QSqlTableModel model(0, db);
- model.setEditStrategy((QSqlTableModel::EditStrategy)submitpolicy);
- model.setTable(test3);
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- for (int i = 0; i < model.rowCount(); ++i) {
- QSignalSpy spy(&model, SIGNAL(dataChanged(QModelIndex,QModelIndex)));
-
- QSqlRecord rec = model.record(i);
- rec.setValue(1, rec.value(1).toString() + 'X');
- rec.setValue(2, rec.value(2).toString() + 'X');
- QVERIFY(model.setRecord(i, rec));
-
- if ((QSqlTableModel::EditStrategy)submitpolicy == QSqlTableModel::OnManualSubmit) {
- // setRecord should emit dataChanged() itself for manualSubmit
- QCOMPARE(spy.count(), 1);
- QCOMPARE(spy.at(0).count(), 2);
- QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(0)), model.index(i, 0));
- QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(1)), model.index(i, rec.count() - 1));
- QVERIFY(model.submitAll());
- } else if ((QSqlTableModel::EditStrategy)submitpolicy == QSqlTableModel::OnRowChange && i == model.rowCount() -1)
- model.submit();
- else {
- // dataChanged() is not emitted when submitAll() is called
- QCOMPARE(spy.count(), 2);
- QCOMPARE(spy.at(0).count(), 2);
- QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(0)), model.index(i, 1));
- QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(1)), model.index(i, 1));
- }
- }
-
- Xsuffix.append('X');
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("foo").append(Xsuffix));
- QCOMPARE(model.data(model.index(0, 2)).toString(), QString("bar").append(Xsuffix));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("baz").append(Xsuffix));
- QCOMPARE(model.data(model.index(1, 2)).toString(), QString("joe").append(Xsuffix));
- }
-}
-
-void tst_QSqlTableModel::insertRow()
-{
- QFETCH(QString, dbName);
- QFETCH(int, submitpolicy_i);
- QSqlTableModel::EditStrategy submitpolicy = (QSqlTableModel::EditStrategy) submitpolicy_i;
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setEditStrategy(submitpolicy);
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
- QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
- QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(2, 2)).toInt(), 3);
-
- QVERIFY(model.insertRow(2));
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
- QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
- QCOMPARE(model.data(model.index(2, 0)).toInt(), 0);
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(2, 2)).toInt(), 0);
- QCOMPARE(model.data(model.index(3, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(3, 2)).toInt(), 3);
-
- QSqlRecord rec = model.record(1);
- rec.setValue(0, 42);
- rec.setValue(1, QString("francis"));
-
- // FieldChange updates immediately and resorts
- // Row/Manual submit does not resort
- QVERIFY(model.setRecord(2, rec));
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
- QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
-
- // See comment above setRecord
- if (submitpolicy == QSqlTableModel::OnFieldChange) {
- QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(2, 2)).toInt(), 3);
- QCOMPARE(model.data(model.index(3, 0)).toInt(), 42);
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("francis"));
- QCOMPARE(model.data(model.index(3, 2)).toInt(), 2);
- } else {
- QCOMPARE(model.data(model.index(2, 0)).toInt(), 42);
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("francis"));
- QCOMPARE(model.data(model.index(2, 2)).toInt(), 2);
- QCOMPARE(model.data(model.index(3, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(3, 2)).toInt(), 3);
- }
-
- QVERIFY(model.submitAll());
-
- // After the submit we should have the resorted view
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
- QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
- QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(2, 2)).toInt(), 3);
- QCOMPARE(model.data(model.index(3, 0)).toInt(), 42);
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("francis"));
- QCOMPARE(model.data(model.index(3, 2)).toInt(), 2);
-
-}
-
-void tst_QSqlTableModel::insertRecord()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QSqlRecord rec = model.record();
- rec.setValue(0, 42);
- rec.setValue(1, QString("vohi"));
- rec.setValue(2, 1);
- QVERIFY(model.insertRecord(1, rec));
- QCOMPARE(model.rowCount(), 4);
-
- QCOMPARE(model.data(model.index(1, 0)).toInt(), 42);
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(1, 2)).toInt(), 1);
-
- model.revertAll();
- model.setEditStrategy(QSqlTableModel::OnRowChange);
-
- QVERIFY(model.insertRecord(-1, rec));
-
- QCOMPARE(model.data(model.index(3, 0)).toInt(), 42);
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
-}
-
-void tst_QSqlTableModel::insertMultiRecords()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.rowCount(), 3);
-
- QVERIFY(model.insertRow(2));
-
- QCOMPARE(model.data(model.index(2, 0)), QVariant(model.record().field(0).type()));
- QCOMPARE(model.data(model.index(2, 1)), QVariant(model.record().field(1).type()));
- QCOMPARE(model.data(model.index(2, 2)), QVariant(model.record().field(2).type()));
-
- QVERIFY(model.insertRow(3));
- QVERIFY(model.insertRow(0));
-
- QCOMPARE(model.data(model.index(5, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(5, 1)).toString(), QString("vohi"));
- QCOMPARE(model.data(model.index(5, 2)).toInt(), 3);
-
- QVERIFY(model.setData(model.index(0, 0), QVariant(42)));
- QVERIFY(model.setData(model.index(3, 0), QVariant(43)));
- QVERIFY(model.setData(model.index(4, 0), QVariant(44)));
- QVERIFY(model.setData(model.index(4, 1), QVariant(QLatin1String("gunnar"))));
- QVERIFY(model.setData(model.index(4, 2), QVariant(1)));
-
- QVERIFY(model.submitAll());
- model.clear();
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
- QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
- QCOMPARE(model.data(model.index(3, 0)).toInt(), 42);
- QCOMPARE(model.data(model.index(4, 0)).toInt(), 43);
- QCOMPARE(model.data(model.index(5, 0)).toInt(), 44);
- QCOMPARE(model.data(model.index(5, 1)).toString(), QString("gunnar"));
- QCOMPARE(model.data(model.index(5, 2)).toInt(), 1);
-}
-
-void tst_QSqlTableModel::submitAll()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- QVERIFY_SQL(model, select());
-
- QVERIFY(model.setData(model.index(0, 1), "harry2", Qt::EditRole));
- QVERIFY(model.setData(model.index(1, 1), "trond2", Qt::EditRole));
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond2"));
-
- QVERIFY_SQL(model, submitAll());
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond2"));
-
- QVERIFY(model.setData(model.index(0, 1), "harry", Qt::EditRole));
- QVERIFY(model.setData(model.index(1, 1), "trond", Qt::EditRole));
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
-
- QVERIFY_SQL(model, submitAll());
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
-}
-
-void tst_QSqlTableModel::removeRow()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 3);
-
- // headerDataChanged must be emitted by the model when the edit strategy is OnManualSubmit,
- // when OnFieldChange or OnRowChange it's not needed because the model will re-select.
- qRegisterMetaType<Qt::Orientation>("Qt::Orientation");
- QSignalSpy headerDataChangedSpy(&model, SIGNAL(headerDataChanged(Qt::Orientation, int, int)));
-
- QVERIFY(model.removeRow(1));
- QCOMPARE(headerDataChangedSpy.count(), 1);
- QCOMPARE(*static_cast<const Qt::Orientation *>(headerDataChangedSpy.at(0).value(0).constData()), Qt::Vertical);
- QCOMPARE(headerDataChangedSpy.at(0).at(1).toInt(), 1);
- QCOMPARE(headerDataChangedSpy.at(0).at(2).toInt(), 1);
- QVERIFY(model.submitAll());
- QCOMPARE(model.rowCount(), 2);
-
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
- QCOMPARE(model.data(model.index(1, 0)).toInt(), 3);
- model.clear();
-
- recreateTestTables();
-
- model.setTable(test);
- model.setEditStrategy(QSqlTableModel::OnRowChange);
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 3);
-
- headerDataChangedSpy.clear();
- QVERIFY(model.removeRow(1));
- QCOMPARE(headerDataChangedSpy.count(), 0);
- QCOMPARE(model.rowCount(), 2);
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("vohi"));
-}
-
-void tst_QSqlTableModel::removeRows()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- model.setEditStrategy(QSqlTableModel::OnFieldChange);
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 3);
-
- QSignalSpy beforeDeleteSpy(&model, SIGNAL(beforeDelete(int)));
-
- // Make sure wrong stuff is ok
- QVERIFY(!model.removeRows(-1,1)); // negative start
- QVERIFY(!model.removeRows(-1, 0)); // negative start, and zero count
- QVERIFY(!model.removeRows(1, 0)); // zero count
- QVERIFY(!model.removeRows(5, 1)); // past end (causes a beforeDelete to be emitted)
- QVERIFY(!model.removeRows(1, 0, model.index(2, 0))); // can't pass a valid modelindex
-
- QVERIFY_SQL(model, removeRows(0, 2));
- QCOMPARE(beforeDeleteSpy.count(), 3);
- QVERIFY(beforeDeleteSpy.at(0).at(0).toInt() == 5);
- QVERIFY(beforeDeleteSpy.at(1).at(0).toInt() == 0);
- QVERIFY(beforeDeleteSpy.at(2).at(0).toInt() == 1);
- QCOMPARE(model.rowCount(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("vohi"));
- model.clear();
-
- recreateTestTables();
- model.setTable(test);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 3);
- beforeDeleteSpy.clear();
-
- // When the edit strategy is OnManualSubmit the beforeDelete() signal
- // isn't emitted until submitAll() is called.
-
- QVERIFY(!model.removeRows(-1,1)); // negative start
- QVERIFY(!model.removeRows(-1, 0)); // negative start, and zero count
- QVERIFY(!model.removeRows(1, 0)); // zero count
- QVERIFY(!model.removeRows(5, 1)); // past end (DOESN'T cause a beforeDelete to be emitted)
- QVERIFY(!model.removeRows(1, 0, model.index(2, 0))); // can't pass a valid modelindex
-
- qRegisterMetaType<Qt::Orientation>("Qt::Orientation");
- QSignalSpy headerDataChangedSpy(&model, SIGNAL(headerDataChanged(Qt::Orientation, int, int)));
- QVERIFY(model.removeRows(0, 2, QModelIndex()));
- QCOMPARE(headerDataChangedSpy.count(), 2);
- QCOMPARE(headerDataChangedSpy.at(0).at(1).toInt(), 0);
- QCOMPARE(headerDataChangedSpy.at(0).at(2).toInt(), 0);
- QCOMPARE(headerDataChangedSpy.at(1).at(1).toInt(), 1);
- QCOMPARE(headerDataChangedSpy.at(1).at(2).toInt(), 1);
- QCOMPARE(model.rowCount(), 3);
- QVERIFY(beforeDeleteSpy.count() == 0);
- QVERIFY(model.submitAll());
- QVERIFY(beforeDeleteSpy.count() == 2);
- QVERIFY(beforeDeleteSpy.at(0).at(0).toInt() == 0);
- QVERIFY(beforeDeleteSpy.at(1).at(0).toInt() == 1);
- QCOMPARE(model.rowCount(), 1);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("vohi"));
-}
-
-void tst_QSqlTableModel::removeInsertedRow()
-{
- QFETCH(QString, dbName);
- QFETCH(int, submitpolicy_i);
- QSqlTableModel::EditStrategy submitpolicy = (QSqlTableModel::EditStrategy) submitpolicy_i;
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
-
- model.setEditStrategy(submitpolicy);
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 3);
-
- QVERIFY(model.insertRow(1));
- QCOMPARE(model.rowCount(), 4);
-
- QVERIFY(model.removeRow(1));
- QCOMPARE(model.rowCount(), 3);
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
-
- // Now insert a row with a null, and check that removing it also works (QTBUG-15979 etc)
- model.insertRow(1);
- model.setData(model.index(1,0), 55);
- model.setData(model.index(1,1), QString("null columns"));
- model.setData(model.index(1,2), QVariant());
-
- model.submitAll();
-
- QCOMPARE(model.rowCount(), 4);
- QCOMPARE(model.data(model.index(3, 0)).toInt(), 55);
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("null columns"));
- QCOMPARE(model.data(model.index(3, 2)).isNull(), true);
-
- QVERIFY(model.removeRow(3));
- model.submitAll();
- QCOMPARE(model.rowCount(), 3);
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
-}
-
-void tst_QSqlTableModel::removeInsertedRows()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit); // you can't insert more than one row otherwise
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 3);
-
- // First put two empty rows, and remove them one by one
- QVERIFY(model.insertRows(1, 2));
- QCOMPARE(model.rowCount(), 5);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
-
- QVERIFY(model.removeRow(1));
- QCOMPARE(model.rowCount(), 4);
-
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
-
- QVERIFY(model.removeRow(1));
- QCOMPARE(model.rowCount(), 3);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
-
- // Now put two empty rows, and remove them all at once
- QVERIFY(model.insertRows(1, 2));
- QCOMPARE(model.rowCount(), 5);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
-
- QVERIFY(model.removeRows(1, 2));
- QCOMPARE(model.rowCount(), 3);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
-
-
- // Now put two empty rows, and remove one good and two empty
- QVERIFY(model.insertRows(1, 2));
- QCOMPARE(model.rowCount(), 5);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
-
- QVERIFY(model.removeRows(0, 3));
- QVERIFY(model.submitAll()); // otherwise the remove of the real row doesn't work
-
- QCOMPARE(model.rowCount(), 2);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("vohi"));
-
- // Reset back again
- model.clear();
- recreateTestTables();
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit); // you can't insert more than one row otherwise
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 3);
-
- // Now two empty and one good
- QVERIFY(model.insertRows(1, 2));
- QCOMPARE(model.rowCount(), 5);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
-
- QVERIFY(model.removeRows(1, 3));
- QVERIFY(model.submitAll());
- QCOMPARE(model.rowCount(), 2);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("vohi"));
-
- // Reset back again
- model.clear();
- recreateTestTables();
- model.setTable(test);
- model.setSort(0, Qt::AscendingOrder);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit); // you can't insert more than one row otherwise
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 3);
-
- // one empty, one good, one empty
- QVERIFY(model.insertRows(1, 1));
- QVERIFY(model.insertRows(3, 1));
- QCOMPARE(model.rowCount(), 5);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(2, 1)).toString(), QString("trond"));
- QCOMPARE(model.data(model.index(3, 1)).toString(), QString());
- QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
-
- QVERIFY(model.removeRows(1, 3));
- QVERIFY(model.submitAll());
- QCOMPARE(model.rowCount(), 2);
- QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
- QCOMPARE(model.data(model.index(1, 1)).toString(), QString("vohi"));
-}
-
-void tst_QSqlTableModel::emptyTable()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- QCOMPARE(model.rowCount(), 0);
- QCOMPARE(model.columnCount(), 0);
-
- model.setTable(qTableName("emptytable", __FILE__));
- QCOMPARE(model.rowCount(), 0);
- QCOMPARE(model.columnCount(), 1);
-
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 0);
- QCOMPARE(model.columnCount(), 1);
-}
-
-void tst_QSqlTableModel::tablesAndSchemas()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlQuery q(db);
- q.exec("DROP SCHEMA " + qTableName("testschema", __FILE__) + " CASCADE");
- QVERIFY_SQL( q, exec("create schema " + qTableName("testschema", __FILE__)));
- QString tableName = qTableName("testschema", __FILE__) + '.' + qTableName("testtable", __FILE__);
- QVERIFY_SQL( q, exec("create table " + tableName + "(id int)"));
- QVERIFY_SQL( q, exec("insert into " + tableName + " values(1)"));
- QVERIFY_SQL( q, exec("insert into " + tableName + " values(2)"));
-
- QSqlTableModel model(0, db);
- model.setTable(tableName);
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 2);
- QCOMPARE(model.columnCount(), 1);
-}
-
-void tst_QSqlTableModel::whitespaceInIdentifiers()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- if (!testWhiteSpaceNames(db.driverName()))
- QSKIP("DBMS doesn't support whitespaces in identifiers", SkipSingle);
-
- QString tableName = qTableName("qtestw hitespace", db.driver());
-
- QSqlTableModel model(0, db);
- model.setTable(tableName);
- QVERIFY_SQL(model, select());
-}
-
-void tst_QSqlTableModel::primaryKeyOrder()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlQuery q(db);
-
- if(tst_Databases::isPostgreSQL(db))
- QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
-
- QVERIFY_SQL( q, exec("create table "+qTableName("foo", __FILE__)+"(a varchar(20), id int not null primary key, b varchar(20))"));
-
- QSqlTableModel model(0, db);
- model.setTable(qTableName("foo", __FILE__));
-
- QSqlIndex pk = model.primaryKey();
- QCOMPARE(pk.count(), 1);
- QCOMPARE(pk.fieldName(0), QLatin1String("id"));
-
- QVERIFY(model.insertRow(0));
- QVERIFY(model.setData(model.index(0, 0), "hello"));
- QVERIFY(model.setData(model.index(0, 1), 42));
- QVERIFY(model.setData(model.index(0, 2), "blah"));
- QVERIFY_SQL(model, submitAll());
-
- QVERIFY(model.setData(model.index(0, 1), 43));
- QVERIFY_SQL(model, submitAll());
-
- QCOMPARE(model.data(model.index(0, 1)).toInt(), 43);
-}
-
-void tst_QSqlTableModel::setInvalidFilter()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- // set an invalid filter, make sure it fails
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setFilter("blahfahsel");
-
- QCOMPARE(model.filter(), QString("blahfahsel"));
- QVERIFY(!model.select());
-
- // set a valid filter later, make sure if passes
- model.setFilter("id = 1");
- QVERIFY_SQL(model, select());
-}
-
-void tst_QSqlTableModel::setFilter()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setFilter("id = 1");
- QCOMPARE(model.filter(), QString("id = 1"));
- QVERIFY_SQL(model, select());
-
- QCOMPARE(model.rowCount(), 1);
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
-
- QSignalSpy rowsRemovedSpy(&model, SIGNAL(rowsRemoved(QModelIndex,int,int)));
- QSignalSpy rowsAboutToBeRemovedSpy(&model,
- SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)));
- QSignalSpy rowsInsertedSpy(&model, SIGNAL(rowsInserted(QModelIndex,int,int)));
- QSignalSpy rowsAboutToBeInsertedSpy(&model,
- SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)));
- model.setFilter("id = 2");
-
- // check the signals
- QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1);
- QCOMPARE(rowsRemovedSpy.count(), 1);
- QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
- QCOMPARE(rowsInsertedSpy.count(), 1);
- QList<QVariant> args = rowsAboutToBeRemovedSpy.takeFirst();
- QCOMPARE(args.count(), 3);
- QCOMPARE(qvariant_cast<QModelIndex>(args.at(0)), QModelIndex());
- QCOMPARE(args.at(1).toInt(), 0);
- QCOMPARE(args.at(2).toInt(), 0);
- args = rowsRemovedSpy.takeFirst();
- QCOMPARE(args.count(), 3);
- QCOMPARE(qvariant_cast<QModelIndex>(args.at(0)), QModelIndex());
- QCOMPARE(args.at(1).toInt(), 0);
- QCOMPARE(args.at(2).toInt(), 0);
- args = rowsInsertedSpy.takeFirst();
- QCOMPARE(args.count(), 3);
- QCOMPARE(qvariant_cast<QModelIndex>(args.at(0)), QModelIndex());
- QCOMPARE(args.at(1).toInt(), 0);
- QCOMPARE(args.at(2).toInt(), 0);
- args = rowsAboutToBeInsertedSpy.takeFirst();
- QCOMPARE(args.count(), 3);
- QCOMPARE(qvariant_cast<QModelIndex>(args.at(0)), QModelIndex());
- QCOMPARE(args.at(1).toInt(), 0);
- QCOMPARE(args.at(2).toInt(), 0);
-
- QCOMPARE(model.rowCount(), 1);
- QCOMPARE(model.data(model.index(0, 0)).toInt(), 2);
-}
-
-void tst_QSqlTableModel::sqlite_bigTable()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
- const QString bigtable(qTableName("bigtable", __FILE__));
-
- bool hasTransactions = db.driver()->hasFeature(QSqlDriver::Transactions);
- if (hasTransactions) QVERIFY(db.transaction());
- QSqlQuery q(db);
- QVERIFY_SQL( q, exec("create table "+bigtable+"(id int primary key, name varchar)"));
- QVERIFY_SQL( q, prepare("insert into "+bigtable+"(id, name) values (?, ?)"));
- QTime startTime;
- startTime.start();
- for (int i = 0; i < 10000; ++i) {
- q.addBindValue(i);
- q.addBindValue(QString::number(i));
- if(i%1000 == 0 && startTime.elapsed() > 5000)
- qDebug() << i << "records written";
- QVERIFY_SQL( q, exec());
- }
- q.clear();
- if (hasTransactions) QVERIFY(db.commit());
-
- QSqlTableModel model(0, db);
- model.setTable(bigtable);
- QVERIFY_SQL(model, select());
-
- QSqlRecord rec = model.record();
- rec.setValue("id", 424242);
- rec.setValue("name", "Guillaume");
- QVERIFY_SQL(model, insertRecord(-1, rec));
-
- model.clear();
-}
-
-// For task 118547: couldn't insert records unless select()
-// had first been called.
-void tst_QSqlTableModel::insertRecordBeforeSelect()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- QCOMPARE(model.lastError().type(), QSqlError::NoError);
-
- QSqlRecord buffer = model.record();
- buffer.setValue("id", 13);
- buffer.setValue("name", QString("The Lion King"));
- buffer.setValue("title", 0);
- QVERIFY_SQL(model, insertRecord(-1, buffer));
-
- buffer.setValue("id", 26);
- buffer.setValue("name", QString("T. Leary"));
- buffer.setValue("title", 0);
- QVERIFY_SQL(model, insertRecord(1, buffer));
-
- int rowCount = model.rowCount();
- model.clear();
- QCOMPARE(model.rowCount(), 0);
-
- QSqlTableModel model2(0, db);
- model2.setTable(test);
- QVERIFY_SQL(model2, select());
- QCOMPARE(model2.rowCount(), rowCount);
-}
-
-// For task 118547: set errors if table doesn't exist and if records
-// are inserted and submitted on a non-existing table.
-void tst_QSqlTableModel::submitAllOnInvalidTable()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
-
- // setTable returns a void, so the error can only be caught by
- // manually checking lastError(). ### Qt5: This should be changed!
- model.setTable(qTableName("invalidTable", __FILE__));
- QCOMPARE(model.lastError().type(), QSqlError::StatementError);
-
- // This will give us an empty record which is expected behavior
- QSqlRecord buffer = model.record();
- buffer.setValue("bogus", 1000);
- buffer.setValue("bogus2", QString("I will go nowhere!"));
-
- // Inserting the record into the *model* will work (OnManualSubmit)
- QVERIFY_SQL(model, insertRecord(-1, buffer));
-
- // The submit and select shall fail because the table doesn't exist
- QEXPECT_FAIL("", "The table doesn't exist: submitAll() shall fail",
- Continue);
- QVERIFY_SQL(model, submitAll());
- QEXPECT_FAIL("", "The table doesn't exist: select() shall fail",
- Continue);
- QVERIFY_SQL(model, select());
-}
-
-// For task 147575: the rowsRemoved signal emitted from the model was lying
-void tst_QSqlTableModel::insertRecordsInLoop()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- model.select();
-
- QSqlRecord record = model.record();
- record.setValue(0, 10);
- record.setValue(1, "Testman");
- record.setValue(2, 1);
-
- QSignalSpy spyRowsRemoved(&model, SIGNAL(rowsRemoved(const QModelIndex &, int, int)));
- QSignalSpy spyRowsInserted(&model, SIGNAL(rowsInserted(const QModelIndex &, int, int)));
- for (int i = 0; i < 10; i++) {
- QVERIFY(model.insertRecord(model.rowCount(), record));
- QCOMPARE(spyRowsInserted.at(i).at(1).toInt(), i+3); // The table already contains three rows
- QCOMPARE(spyRowsInserted.at(i).at(2).toInt(), i+3);
- }
- model.submitAll(); // submitAll() calls select() which clears and repopulates the table
-
- int firstRowIndex = 0, lastRowIndex = 12;
- QCOMPARE(spyRowsRemoved.count(), 1);
- QCOMPARE(spyRowsRemoved.at(0).at(1).toInt(), firstRowIndex);
- QCOMPARE(spyRowsRemoved.at(0).at(2).toInt(), lastRowIndex);
-
- QCOMPARE(spyRowsInserted.at(10).at(1).toInt(), firstRowIndex);
- QCOMPARE(spyRowsInserted.at(10).at(2).toInt(), lastRowIndex);
- QCOMPARE(spyRowsInserted.count(), 11);
-
- QCOMPARE(model.rowCount(), 13);
- QCOMPARE(model.columnCount(), 3);
-}
-
-void tst_QSqlTableModel::sqlite_attachedDatabase()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
- if(db.databaseName() == ":memory:")
- QSKIP(":memory: database, skipping test", SkipSingle);
-
- QSqlDatabase attachedDb = QSqlDatabase::cloneDatabase(db, db.driverName() + QLatin1String("attached"));
- attachedDb.setDatabaseName(db.databaseName()+QLatin1String("attached.dat"));
- QVERIFY_SQL(attachedDb, open());
- QSqlQuery q(attachedDb);
- tst_Databases::safeDropTables(attachedDb, QStringList() << "atest" << "atest2");
- QVERIFY_SQL( q, exec("CREATE TABLE atest(id int, text varchar(20))"));
- QVERIFY_SQL( q, exec("CREATE TABLE atest2(id int, text varchar(20))"));
- QVERIFY_SQL( q, exec("INSERT INTO atest VALUES(1, 'attached-atest')"));
- QVERIFY_SQL( q, exec("INSERT INTO atest2 VALUES(2, 'attached-atest2')"));
-
- QSqlQuery q2(db);
- tst_Databases::safeDropTable(db, "atest");
- QVERIFY_SQL(q2, exec("CREATE TABLE atest(id int, text varchar(20))"));
- QVERIFY_SQL(q2, exec("INSERT INTO atest VALUES(3, 'main')"));
- QVERIFY_SQL(q2, exec("ATTACH DATABASE \""+attachedDb.databaseName()+"\" as adb"));
-
- // This should query the table in the attached database (schema supplied)
- QSqlTableModel model(0, db);
- model.setTable("adb.atest");
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 1);
- QCOMPARE(model.data(model.index(0, 0), Qt::DisplayRole).toInt(), 1);
- QCOMPARE(model.data(model.index(0, 1), Qt::DisplayRole).toString(), QLatin1String("attached-atest"));
-
- // This should query the table in the attached database (unique tablename)
- model.setTable("atest2");
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 1);
- QCOMPARE(model.data(model.index(0, 0), Qt::DisplayRole).toInt(), 2);
- QCOMPARE(model.data(model.index(0, 1), Qt::DisplayRole).toString(), QLatin1String("attached-atest2"));
-
- // This should query the table in the main database (tables in main db has 1st priority)
- model.setTable("atest");
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 1);
- QCOMPARE(model.data(model.index(0, 0), Qt::DisplayRole).toInt(), 3);
- QCOMPARE(model.data(model.index(0, 1), Qt::DisplayRole).toString(), QLatin1String("main"));
-}
-
-
-void tst_QSqlTableModel::tableModifyWithBlank()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(qTableName("test4", __FILE__));
- model.select();
-
- //generate a time stamp for the test. Add one second to the current time to make sure
- //it is different than the QSqlQuery test.
- QString timeString=QDateTime::currentDateTime().addSecs(1).toString(Qt::ISODate);
-
- //insert a new row, with column0 being the timestamp.
- //Should be equivalent to QSqlQuery INSERT INTO... command)
- QVERIFY_SQL(model, insertRow(0));
- QVERIFY_SQL(model, setData(model.index(0,0),timeString));
- QVERIFY_SQL(model, submitAll());
-
- //set a filter on the table so the only record we get is the one we just made
- //I could just do another setData command, but I want to make sure the TableModel
- //matches exactly what is stored in the database
- model.setFilter("column1='"+timeString+"'"); //filter to get just the newly entered row
- QVERIFY_SQL(model, select());
-
- //Make sure we only get one record, and that it is the one we just made
- QCOMPARE(model.rowCount(), 1); //verify only one entry
- QCOMPARE(model.record(0).value(0).toString(), timeString); //verify correct record
-
- //At this point we know that the initial value (timestamp) was succsefully stored in the database
- //Attempt to modify the data in the new record
- //equivalent to query.exec("update test set column3="... command in direct test
- //set the data in the first column to "col1ModelData"
- QVERIFY_SQL(model, setData(model.index(0,1), "col1ModelData"));
-
- //do a quick check to make sure that the setData command properly set the value in the model
- QCOMPARE(model.record(0).value(1).toString(), QLatin1String("col1ModelData"));
-
- //submit the changed data to the database
- //This is where I have been getting errors.
- QVERIFY_SQL(model, submitAll());
-
- //make sure the model has the most current data for our record
- QVERIFY_SQL(model, select());
-
- //verify that our new record was the only record returned
- QCOMPARE(model.rowCount(), 1);
-
- //And that the record returned is, in fact, our test record.
- QCOMPARE(model.record(0).value(0).toString(), timeString);
-
- //Make sure the value of the first column matches what we set it to previously.
- QCOMPARE(model.record(0).value(1).toString(), QLatin1String("col1ModelData"));
-}
-
-void tst_QSqlTableModel::removeColumnAndRow()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- QVERIFY_SQL(model, select());
- QCOMPARE(model.rowCount(), 3);
- QCOMPARE(model.columnCount(), 3);
-
- QVERIFY(model.removeColumn(0));
- QVERIFY(model.removeRow(0));
- QVERIFY(model.submitAll());
- QCOMPARE(model.rowCount(), 2);
- QCOMPARE(model.columnCount(), 2);
-
- // check with another table because the model has been modified
- // but not the sql table
- QSqlTableModel model2(0, db);
- model2.setTable(test);
- QVERIFY_SQL(model2, select());
- QCOMPARE(model2.rowCount(), 2);
- QCOMPARE(model2.columnCount(), 3);
-}
-
-void tst_QSqlTableModel::insertBeforeDelete()
-{
- QFETCH(QString, dbName);
- QSqlDatabase db = QSqlDatabase::database(dbName);
- CHECK_DATABASE(db);
-
- QSqlQuery q(db);
- QVERIFY_SQL( q, exec("insert into " + test + " values(9, 'andrew', 9)"));
- QVERIFY_SQL( q, exec("insert into " + test + " values(10, 'justin', 10)"));
-
- QSqlTableModel model(0, db);
- model.setTable(test);
- model.setEditStrategy(QSqlTableModel::OnManualSubmit);
- QVERIFY_SQL(model, select());
-
- QSqlRecord rec = model.record();
- rec.setValue(0, 4);
- rec.setValue(1, QString("bill"));
- rec.setValue(2, 4);
- QVERIFY_SQL(model, insertRecord(4, rec));
-
- QVERIFY_SQL(model, removeRow(5));
- QVERIFY_SQL(model, submitAll());
- QCOMPARE(model.rowCount(), 5);
-}
-
-QTEST_MAIN(tst_QSqlTableModel)
-#include "tst_qsqltablemodel.moc"
diff --git a/tests/auto/qsslsocket/qsslsocket.pro b/tests/auto/qsslsocket/qsslsocket.pro
deleted file mode 100644
index 1f5c7f6aaf..0000000000
--- a/tests/auto/qsslsocket/qsslsocket.pro
+++ /dev/null
@@ -1,48 +0,0 @@
-load(qttest_p4)
-
-SOURCES += tst_qsslsocket.cpp
-!wince*:win32:LIBS += -lws2_32
-QT += core-private network-private
-QT -= gui
-
-TARGET = tst_qsslsocket
-
-win32 {
- CONFIG(debug, debug|release) {
- DESTDIR = debug
-} else {
- DESTDIR = release
- }
-}
-
-# OpenSSL support
-contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) {
- symbian {
- INCLUDEPATH *= $$OS_LAYER_SSL_SYSTEMINCLUDE
- } else {
- include($$QT_SOURCE_TREE/config.tests/unix/openssl/openssl.pri)
- }
- # Add optional SSL libs
- LIBS += $$OPENSSL_LIBS
-}
-
-wince* {
- DEFINES += SRCDIR=\\\"./\\\"
-
- certFiles.files = certs ssl.tar.gz
- certFiles.path = .
- DEPLOYMENT += certFiles
-} else:symbian {
- DEFINES += QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
- TARGET.EPOCHEAPSIZE="0x100 0x3000000"
- TARGET.CAPABILITY=NetworkServices ReadUserData
-
- certFiles.files = certs ssl.tar.gz
- certFiles.path = .
- DEPLOYMENT += certFiles
- INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE # Needed for e32svr.h in S^3 envs
-} else {
- DEFINES += SRCDIR=\\\"$$PWD/\\\"
-}
-
-requires(contains(QT_CONFIG,private_tests))
diff --git a/tests/auto/qsslsocket/tst_qsslsocket.cpp b/tests/auto/qsslsocket/tst_qsslsocket.cpp
deleted file mode 100644
index 4ffcba6e65..0000000000
--- a/tests/auto/qsslsocket/tst_qsslsocket.cpp
+++ /dev/null
@@ -1,2095 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtCore/qthread.h>
-#include <QtNetwork/qhostaddress.h>
-#include <QtNetwork/qhostinfo.h>
-#include <QtNetwork/qnetworkproxy.h>
-#include <QtNetwork/qsslcipher.h>
-#include <QtNetwork/qsslconfiguration.h>
-#include <QtNetwork/qsslkey.h>
-#include <QtNetwork/qsslsocket.h>
-#include <QtNetwork/qtcpserver.h>
-#include <QtTest/QtTest>
-
-#include <QNetworkProxy>
-#include <QAuthenticator>
-
-#include "private/qhostinfo_p.h"
-#include "private/qsslsocket_openssl_p.h"
-#include "private/qsslsocket_openssl_symbols_p.h"
-
-#include "../network-settings.h"
-
-Q_DECLARE_METATYPE(QAbstractSocket::SocketState)
-Q_DECLARE_METATYPE(QAbstractSocket::SocketError)
-#ifndef QT_NO_OPENSSL
-Q_DECLARE_METATYPE(QSslSocket::SslMode)
-typedef QList<QSslError::SslError> SslErrorList;
-Q_DECLARE_METATYPE(SslErrorList)
-Q_DECLARE_METATYPE(QSslError)
-Q_DECLARE_METATYPE(QSsl::SslProtocol)
-Q_DECLARE_METATYPE(QSslConfiguration)
-#endif
-
-#if defined Q_OS_HPUX && defined Q_CC_GNU
-// This error is delivered every time we try to use the fluke CA
-// certificate. For now we work around this bug. Task 202317.
-#define QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
-#endif
-
-#ifdef Q_OS_SYMBIAN
-#define SRCDIR ""
-#endif
-
-#ifndef QT_NO_OPENSSL
-class QSslSocketPtr: public QSharedPointer<QSslSocket>
-{
-public:
- inline QSslSocketPtr(QSslSocket *ptr = 0)
- : QSharedPointer<QSslSocket>(ptr)
- { }
-
- inline operator QSslSocket *() const { return data(); }
-};
-#endif
-
-class tst_QSslSocket : public QObject
-{
- Q_OBJECT
-
- int proxyAuthCalled;
-
-public:
- tst_QSslSocket();
- virtual ~tst_QSslSocket();
-
- static void enterLoop(int secs)
- {
- ++loopLevel;
- QTestEventLoop::instance().enterLoop(secs);
- }
-
- static bool timeout()
- {
- return QTestEventLoop::instance().timeout();
- }
-
-#ifndef QT_NO_OPENSSL
- QSslSocketPtr newSocket();
-#endif
-
-public slots:
- void initTestCase_data();
- void init();
- void cleanup();
- void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth);
-
-#ifndef QT_NO_OPENSSL
-private slots:
- void constructing();
- void simpleConnect();
- void simpleConnectWithIgnore();
-
- // API tests
- void sslErrors_data();
- void sslErrors();
- void addCaCertificate();
- void addCaCertificates();
- void addCaCertificates2();
- void ciphers();
- void connectToHostEncrypted();
- void connectToHostEncryptedWithVerificationPeerName();
- void sessionCipher();
- void flush();
- void isEncrypted();
- void localCertificate();
- void mode();
- void peerCertificate();
- void peerCertificateChain();
- void privateKey();
- void privateKeyOpaque();
- void protocol();
- void protocolServerSide_data();
- void protocolServerSide();
- void setCaCertificates();
- void setLocalCertificate();
- void setPrivateKey();
- void setSocketDescriptor();
- void setSslConfiguration_data();
- void setSslConfiguration();
- void waitForEncrypted();
- void waitForEncryptedMinusOne();
- void waitForConnectedEncryptedReadyRead();
- void startClientEncryption();
- void startServerEncryption();
- void addDefaultCaCertificate();
- void addDefaultCaCertificates();
- void addDefaultCaCertificates2();
- void defaultCaCertificates();
- void defaultCiphers();
- void resetDefaultCiphers();
- void setDefaultCaCertificates();
- void setDefaultCiphers();
- void supportedCiphers();
- void systemCaCertificates();
- void wildcardCertificateNames();
- void wildcard();
- void setEmptyKey();
- void spontaneousWrite();
- void setReadBufferSize();
- void setReadBufferSize_task_250027();
- void waitForMinusOne();
- void verifyMode();
- void verifyDepth();
- void peerVerifyError();
- void disconnectFromHostWhenConnecting();
- void disconnectFromHostWhenConnected();
- void resetProxy();
- void ignoreSslErrorsList_data();
- void ignoreSslErrorsList();
- void ignoreSslErrorsListWithSlot_data();
- void ignoreSslErrorsListWithSlot();
- void readFromClosedSocket();
- void writeBigChunk();
- void blacklistedCertificates();
- void setEmptyDefaultConfiguration();
- void versionAccessors();
-
- static void exitLoop()
- {
- // Safe exit - if we aren't in an event loop, don't
- // exit one.
- if (loopLevel > 0) {
- --loopLevel;
- QTestEventLoop::instance().exitLoop();
- }
- }
-
-protected slots:
- void ignoreErrorSlot()
- {
- socket->ignoreSslErrors();
- }
- void untrustedWorkaroundSlot(const QList<QSslError> &errors)
- {
- if (errors.size() == 1 &&
- (errors.first().error() == QSslError::CertificateUntrusted ||
- errors.first().error() == QSslError::SelfSignedCertificate))
- socket->ignoreSslErrors();
- }
- void ignoreErrorListSlot(const QList<QSslError> &errors);
-
-private:
- QSslSocket *socket;
- QList<QSslError> storedExpectedSslErrors;
-#endif // QT_NO_OPENSSL
-private:
- static int loopLevel;
-};
-
-int tst_QSslSocket::loopLevel = 0;
-
-tst_QSslSocket::tst_QSslSocket()
-{
-#ifndef QT_NO_OPENSSL
- qRegisterMetaType<QList<QSslError> >("QList<QSslError>");
- qRegisterMetaType<QSslError>("QSslError");
- qRegisterMetaType<QAbstractSocket::SocketState>("QAbstractSocket::SocketState");
- qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
- qRegisterMetaType<QAbstractSocket::SocketState>("QSslSocket::SslMode");
-#endif
- Q_SET_DEFAULT_IAP
-}
-
-tst_QSslSocket::~tst_QSslSocket()
-{
-}
-
-enum ProxyTests {
- NoProxy = 0x00,
- Socks5Proxy = 0x01,
- HttpProxy = 0x02,
- TypeMask = 0x0f,
-
- NoAuth = 0x00,
- AuthBasic = 0x10,
- AuthNtlm = 0x20,
- AuthMask = 0xf0
-};
-
-void tst_QSslSocket::initTestCase_data()
-{
- QTest::addColumn<bool>("setProxy");
- QTest::addColumn<int>("proxyType");
-
- QTest::newRow("WithoutProxy") << false << 0;
- QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy);
- QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic);
-
- QTest::newRow("WithHttpProxy") << true << int(HttpProxy);
- QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic);
- // uncomment the line below when NTLM works
-// QTest::newRow("WithHttpProxyNtlmAuth") << true << int(HttpProxy | AuthNtlm);
-}
-
-void tst_QSslSocket::init()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- QString fluke = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString();
- QNetworkProxy proxy;
-
- switch (proxyType) {
- case Socks5Proxy:
- proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, fluke, 1080);
- break;
-
- case Socks5Proxy | AuthBasic:
- proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, fluke, 1081);
- break;
-
- case HttpProxy | NoAuth:
- proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3128);
- break;
-
- case HttpProxy | AuthBasic:
- proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3129);
- break;
-
- case HttpProxy | AuthNtlm:
- proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3130);
- break;
- }
- QNetworkProxy::setApplicationProxy(proxy);
- }
-
- qt_qhostinfo_clear_cache();
-}
-
-void tst_QSslSocket::cleanup()
-{
- QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
-}
-
-#ifndef QT_NO_OPENSSL
-QSslSocketPtr tst_QSslSocket::newSocket()
-{
- QSslSocket *socket = new QSslSocket;
-
- proxyAuthCalled = 0;
- connect(socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- Qt::DirectConnection);
-
- return QSslSocketPtr(socket);
-}
-#endif
-
-void tst_QSslSocket::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
-{
- ++proxyAuthCalled;
- auth->setUser("qsockstest");
- auth->setPassword("password");
-}
-
-#ifndef QT_NO_OPENSSL
-
-void tst_QSslSocket::constructing()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocket socket;
-
- QCOMPARE(socket.state(), QSslSocket::UnconnectedState);
- QCOMPARE(socket.mode(), QSslSocket::UnencryptedMode);
- QVERIFY(!socket.isEncrypted());
- QCOMPARE(socket.bytesAvailable(), qint64(0));
- QCOMPARE(socket.bytesToWrite(), qint64(0));
- QVERIFY(!socket.canReadLine());
- QVERIFY(socket.atEnd());
- QCOMPARE(socket.localCertificate(), QSslCertificate());
- QCOMPARE(socket.sslConfiguration(), QSslConfiguration::defaultConfiguration());
- QCOMPARE(socket.errorString(), QString("Unknown error"));
- char c = '\0';
- QVERIFY(!socket.getChar(&c));
- QCOMPARE(c, '\0');
- QVERIFY(!socket.isOpen());
- QVERIFY(!socket.isReadable());
- QVERIFY(socket.isSequential());
- QVERIFY(!socket.isTextModeEnabled());
- QVERIFY(!socket.isWritable());
- QCOMPARE(socket.openMode(), QIODevice::NotOpen);
- QVERIFY(socket.peek(2).isEmpty());
- QCOMPARE(socket.pos(), qint64(0));
- QVERIFY(!socket.putChar('c'));
- QVERIFY(socket.read(2).isEmpty());
- QCOMPARE(socket.read(0, 0), qint64(-1));
- QVERIFY(socket.readAll().isEmpty());
- QTest::ignoreMessage(QtWarningMsg, "QIODevice::readLine: Called with maxSize < 2");
- QCOMPARE(socket.readLine(0, 0), qint64(-1));
- char buf[10];
- QCOMPARE(socket.readLine(buf, sizeof(buf)), qint64(-1));
- QTest::ignoreMessage(QtWarningMsg, "QIODevice::seek: The device is not open");
- QVERIFY(!socket.reset());
- QTest::ignoreMessage(QtWarningMsg, "QIODevice::seek: The device is not open");
- QVERIFY(!socket.seek(2));
- QCOMPARE(socket.size(), qint64(0));
- QVERIFY(!socket.waitForBytesWritten(10));
- QVERIFY(!socket.waitForReadyRead(10));
- QCOMPARE(socket.write(0, 0), qint64(-1));
- QCOMPARE(socket.write(QByteArray()), qint64(-1));
- QCOMPARE(socket.error(), QAbstractSocket::UnknownSocketError);
- QVERIFY(!socket.flush());
- QVERIFY(!socket.isValid());
- QCOMPARE(socket.localAddress(), QHostAddress());
- QCOMPARE(socket.localPort(), quint16(0));
- QCOMPARE(socket.peerAddress(), QHostAddress());
- QVERIFY(socket.peerName().isEmpty());
- QCOMPARE(socket.peerPort(), quint16(0));
- QCOMPARE(socket.proxy().type(), QNetworkProxy::DefaultProxy);
- QCOMPARE(socket.readBufferSize(), qint64(0));
- QCOMPARE(socket.socketDescriptor(), -1);
- QCOMPARE(socket.socketType(), QAbstractSocket::TcpSocket);
- QVERIFY(!socket.waitForConnected(10));
- QTest::ignoreMessage(QtWarningMsg, "QSslSocket::waitForDisconnected() is not allowed in UnconnectedState");
- QVERIFY(!socket.waitForDisconnected(10));
- QCOMPARE(socket.protocol(), QSsl::SecureProtocols);
-
- QSslConfiguration savedDefault = QSslConfiguration::defaultConfiguration();
-
- // verify that changing the default config doesn't affect this socket
- // (on Unix, the ca certs might be empty, depending on whether we load
- // them on demand or not, so set them explicitly)
- socket.setCaCertificates(QSslSocket::systemCaCertificates());
- QSslSocket::setDefaultCaCertificates(QList<QSslCertificate>());
- QSslSocket::setDefaultCiphers(QList<QSslCipher>());
- QVERIFY(!socket.caCertificates().isEmpty());
- QVERIFY(!socket.ciphers().isEmpty());
-
- // verify the default as well:
- QVERIFY(QSslConfiguration::defaultConfiguration().caCertificates().isEmpty());
- QVERIFY(QSslConfiguration::defaultConfiguration().ciphers().isEmpty());
-
- QSslConfiguration::setDefaultConfiguration(savedDefault);
-}
-
-void tst_QSslSocket::simpleConnect()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QSslSocket socket;
- QSignalSpy connectedSpy(&socket, SIGNAL(connected()));
- QSignalSpy hostFoundSpy(&socket, SIGNAL(hostFound()));
- QSignalSpy disconnectedSpy(&socket, SIGNAL(disconnected()));
- QSignalSpy connectionEncryptedSpy(&socket, SIGNAL(encrypted()));
- QSignalSpy sslErrorsSpy(&socket, SIGNAL(sslErrors(const QList<QSslError> &)));
-
- connect(&socket, SIGNAL(connected()), this, SLOT(exitLoop()));
- connect(&socket, SIGNAL(disconnected()), this, SLOT(exitLoop()));
- connect(&socket, SIGNAL(modeChanged(QSslSocket::SslMode)), this, SLOT(exitLoop()));
- connect(&socket, SIGNAL(encrypted()), this, SLOT(exitLoop()));
- connect(&socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(exitLoop()));
- connect(&socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(exitLoop()));
-
- // Start connecting
- socket.connectToHost(QtNetworkSettings::serverName(), 993);
- QCOMPARE(socket.state(), QAbstractSocket::HostLookupState);
- enterLoop(10);
-
- // Entered connecting state
-#ifndef Q_OS_SYMBIAN
- QCOMPARE(socket.state(), QAbstractSocket::ConnectingState);
- QCOMPARE(connectedSpy.count(), 0);
-#endif
- QCOMPARE(hostFoundSpy.count(), 1);
- QCOMPARE(disconnectedSpy.count(), 0);
- enterLoop(10);
-
- // Entered connected state
- QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
- QCOMPARE(socket.mode(), QSslSocket::UnencryptedMode);
- QVERIFY(!socket.isEncrypted());
- QCOMPARE(connectedSpy.count(), 1);
- QCOMPARE(hostFoundSpy.count(), 1);
- QCOMPARE(disconnectedSpy.count(), 0);
-
- // Enter encrypted mode
- socket.startClientEncryption();
- QCOMPARE(socket.mode(), QSslSocket::SslClientMode);
- QVERIFY(!socket.isEncrypted());
- QCOMPARE(connectionEncryptedSpy.count(), 0);
- QCOMPARE(sslErrorsSpy.count(), 0);
-
- // Starting handshake
- enterLoop(10);
- QCOMPARE(sslErrorsSpy.count(), 1);
- QCOMPARE(connectionEncryptedSpy.count(), 0);
- QVERIFY(!socket.isEncrypted());
- QCOMPARE(socket.state(), QAbstractSocket::UnconnectedState);
-}
-
-void tst_QSslSocket::simpleConnectWithIgnore()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QSslSocket socket;
- this->socket = &socket;
- QSignalSpy encryptedSpy(&socket, SIGNAL(encrypted()));
- QSignalSpy sslErrorsSpy(&socket, SIGNAL(sslErrors(const QList<QSslError> &)));
-
- connect(&socket, SIGNAL(readyRead()), this, SLOT(exitLoop()));
- connect(&socket, SIGNAL(encrypted()), this, SLOT(exitLoop()));
- connect(&socket, SIGNAL(connected()), this, SLOT(exitLoop()));
- connect(&socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
- connect(&socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(exitLoop()));
-
- // Start connecting
- socket.connectToHost(QtNetworkSettings::serverName(), 993);
- QVERIFY(socket.state() != QAbstractSocket::UnconnectedState); // something must be in progress
- enterLoop(10);
-
- // Start handshake
- QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
- socket.startClientEncryption();
- enterLoop(10);
-
- // Done; encryption should be enabled.
- QCOMPARE(sslErrorsSpy.count(), 1);
- QVERIFY(socket.isEncrypted());
- QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
- QCOMPARE(encryptedSpy.count(), 1);
-
- // Wait for incoming data
- if (!socket.canReadLine())
- enterLoop(10);
-
- QByteArray data = socket.readAll();
- socket.disconnectFromHost();
- QVERIFY2(QtNetworkSettings::compareReplyIMAPSSL(data), data.constData());
-}
-
-void tst_QSslSocket::sslErrors_data()
-{
- QTest::addColumn<QString>("host");
- QTest::addColumn<int>("port");
- QTest::addColumn<SslErrorList>("expected");
-
- QTest::newRow(qPrintable(QtNetworkSettings::serverLocalName()))
- << QtNetworkSettings::serverLocalName()
- << 993
- << (SslErrorList() << QSslError::HostNameMismatch
- << QSslError::SelfSignedCertificate);
-}
-
-void tst_QSslSocket::sslErrors()
-{
- QFETCH(QString, host);
- QFETCH(int, port);
- QFETCH(SslErrorList, expected);
-
- QSslSocketPtr socket = newSocket();
- socket->connectToHostEncrypted(host, port);
- if (!socket->waitForConnected())
- QEXPECT_FAIL("imap.trolltech.com", "server not open to internet", Continue);
- socket->waitForEncrypted(5000);
-
- SslErrorList output;
- foreach (QSslError error, socket->sslErrors()) {
- output << error.error();
- }
-
-#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
- if (output.count() && output.last() == QSslError::CertificateUntrusted)
- output.takeLast();
-#endif
- QCOMPARE(output, expected);
-}
-
-void tst_QSslSocket::addCaCertificate()
-{
- if (!QSslSocket::supportsSsl())
- return;
-}
-
-void tst_QSslSocket::addCaCertificates()
-{
- if (!QSslSocket::supportsSsl())
- return;
-}
-
-void tst_QSslSocket::addCaCertificates2()
-{
- if (!QSslSocket::supportsSsl())
- return;
-}
-
-void tst_QSslSocket::ciphers()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocket socket;
- QCOMPARE(socket.ciphers(), QSslSocket::supportedCiphers());
- socket.setCiphers(QList<QSslCipher>());
- QVERIFY(socket.ciphers().isEmpty());
- socket.setCiphers(socket.defaultCiphers());
- QCOMPARE(socket.ciphers(), QSslSocket::supportedCiphers());
- socket.setCiphers(socket.defaultCiphers());
- QCOMPARE(socket.ciphers(), QSslSocket::supportedCiphers());
-
- // Task 164356
- socket.setCiphers("ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
-}
-
-void tst_QSslSocket::connectToHostEncrypted()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocketPtr socket = newSocket();
- this->socket = socket;
- QVERIFY(socket->addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem")));
-#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
- connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
- this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
-#endif
-
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
-
- // This should pass unconditionally when using fluke's CA certificate.
- // or use untrusted certificate workaround
- QVERIFY2(socket->waitForEncrypted(10000), qPrintable(socket->errorString()));
-
- socket->disconnectFromHost();
- QVERIFY(socket->waitForDisconnected());
-
- QCOMPARE(socket->mode(), QSslSocket::SslClientMode);
-
- socket->connectToHost(QtNetworkSettings::serverName(), 13);
-
- QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
-
- QVERIFY(socket->waitForDisconnected());
-}
-
-void tst_QSslSocket::connectToHostEncryptedWithVerificationPeerName()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocketPtr socket = newSocket();
- this->socket = socket;
-
- socket->addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"));
-#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
- connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
- this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
-#endif
-
- // connect to the server with its local name, but use the full name for verification.
- socket->connectToHostEncrypted(QtNetworkSettings::serverLocalName(), 443, QtNetworkSettings::serverName());
-
- // This should pass unconditionally when using fluke's CA certificate.
- QVERIFY2(socket->waitForEncrypted(10000), qPrintable(socket->errorString()));
-
- socket->disconnectFromHost();
- QVERIFY(socket->waitForDisconnected());
-
- QCOMPARE(socket->mode(), QSslSocket::SslClientMode);
-}
-
-void tst_QSslSocket::sessionCipher()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocketPtr socket = newSocket();
- this->socket = socket;
- connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
- QVERIFY(socket->sessionCipher().isNull());
- socket->connectToHost(QtNetworkSettings::serverName(), 443 /* https */);
- QVERIFY(socket->waitForConnected(10000));
- QVERIFY(socket->sessionCipher().isNull());
- socket->startClientEncryption();
- QVERIFY(socket->waitForEncrypted(5000));
- QVERIFY(!socket->sessionCipher().isNull());
- QVERIFY(QSslSocket::supportedCiphers().contains(socket->sessionCipher()));
- socket->disconnectFromHost();
- QVERIFY(socket->waitForDisconnected());
-}
-
-void tst_QSslSocket::flush()
-{
-}
-
-void tst_QSslSocket::isEncrypted()
-{
-}
-
-void tst_QSslSocket::localCertificate()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- // This test does not make 100% sense yet. We just set some local CA/cert/key and use it
- // to authenticate ourselves against the server. The server does not actually check this
- // values. This test should just run the codepath inside qsslsocket_openssl.cpp
-
- QSslSocketPtr socket = newSocket();
- QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem");
- socket->setCaCertificates(localCert);
- socket->setLocalCertificate(QLatin1String(SRCDIR "certs/fluke.cert"));
- socket->setPrivateKey(QLatin1String(SRCDIR "certs/fluke.key"));
-
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY(socket->waitForEncrypted(10000));
-}
-
-void tst_QSslSocket::mode()
-{
-}
-
-void tst_QSslSocket::peerCertificate()
-{
-}
-
-void tst_QSslSocket::peerCertificateChain()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocketPtr socket = newSocket();
- this->socket = socket;
-
- QList<QSslCertificate> caCertificates = QSslCertificate::fromPath(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"));
- QVERIFY(caCertificates.count() == 1);
- socket->addCaCertificates(caCertificates);
-#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
- connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
- this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
-#endif
-
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
- QVERIFY(socket->peerCertificateChain().isEmpty());
- QVERIFY2(socket->waitForEncrypted(10000), qPrintable(socket->errorString()));
-
- QList<QSslCertificate> certChain = socket->peerCertificateChain();
- QVERIFY(certChain.count() > 0);
- QCOMPARE(certChain.first(), socket->peerCertificate());
-
- socket->disconnectFromHost();
- QVERIFY(socket->waitForDisconnected());
-
- // connect again to a different server
- socket->connectToHostEncrypted("trolltech.com", 443);
- socket->ignoreSslErrors();
- QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
- QVERIFY(socket->peerCertificateChain().isEmpty());
- QVERIFY2(socket->waitForEncrypted(10000), qPrintable(socket->errorString()));
-
- QCOMPARE(socket->peerCertificateChain().first(), socket->peerCertificate());
- QVERIFY(socket->peerCertificateChain() != certChain);
-
- socket->disconnectFromHost();
- QVERIFY(socket->waitForDisconnected());
-
- // now do it again back to the original server
- socket->connectToHost(QtNetworkSettings::serverName(), 443);
- QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
- QVERIFY(socket->peerCertificateChain().isEmpty());
- QVERIFY2(socket->waitForConnected(10000), "Network timeout");
-
- socket->startClientEncryption();
- QVERIFY2(socket->waitForEncrypted(10000), qPrintable(socket->errorString()));
-
- QCOMPARE(socket->peerCertificateChain().first(), socket->peerCertificate());
- QVERIFY(socket->peerCertificateChain() == certChain);
-
- socket->disconnectFromHost();
- QVERIFY(socket->waitForDisconnected());
-}
-
-void tst_QSslSocket::privateKey()
-{
-}
-
-void tst_QSslSocket::privateKeyOpaque()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QFile file(SRCDIR "certs/fluke.key");
- QVERIFY(file.open(QIODevice::ReadOnly));
- QSslKey key(file.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
- QVERIFY(!key.isNull());
-
- EVP_PKEY *pkey = q_EVP_PKEY_new();
- q_EVP_PKEY_set1_RSA(pkey, reinterpret_cast<RSA *>(key.handle()));
-
- // This test does not make 100% sense yet. We just set some local CA/cert/key and use it
- // to authenticate ourselves against the server. The server does not actually check this
- // values. This test should just run the codepath inside qsslsocket_openssl.cpp
-
- QSslSocketPtr socket = newSocket();
- QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem");
- socket->setCaCertificates(localCert);
- socket->setLocalCertificate(QLatin1String(SRCDIR "certs/fluke.cert"));
- socket->setPrivateKey(QSslKey(reinterpret_cast<Qt::HANDLE>(pkey)));
-
- socket->setPeerVerifyMode(QSslSocket::QueryPeer);
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY(socket->waitForEncrypted(10000));
-}
-
-void tst_QSslSocket::protocol()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocketPtr socket = newSocket();
- this->socket = socket;
- QList<QSslCertificate> certs = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem");
-
- socket->setCaCertificates(certs);
-#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
- connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
- this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
-#endif
-
- QCOMPARE(socket->protocol(), QSsl::SecureProtocols);
- {
- // Fluke allows SSLv3.
- socket->setProtocol(QSsl::SslV3);
- QCOMPARE(socket->protocol(), QSsl::SslV3);
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
- QCOMPARE(socket->protocol(), QSsl::SslV3);
- socket->abort();
- QCOMPARE(socket->protocol(), QSsl::SslV3);
- socket->connectToHost(QtNetworkSettings::serverName(), 443);
- QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
- socket->startClientEncryption();
- QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
- QCOMPARE(socket->protocol(), QSsl::SslV3);
- socket->abort();
- }
- {
- // Fluke allows TLSV1.
- socket->setProtocol(QSsl::TlsV1);
- QCOMPARE(socket->protocol(), QSsl::TlsV1);
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
- QCOMPARE(socket->protocol(), QSsl::TlsV1);
- socket->abort();
- QCOMPARE(socket->protocol(), QSsl::TlsV1);
- socket->connectToHost(QtNetworkSettings::serverName(), 443);
- QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
- socket->startClientEncryption();
- QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
- QCOMPARE(socket->protocol(), QSsl::TlsV1);
- socket->abort();
- }
- {
- // Fluke allows SSLV2.
- socket->setProtocol(QSsl::SslV2);
- QCOMPARE(socket->protocol(), QSsl::SslV2);
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY(socket->waitForEncrypted());
- QCOMPARE(socket->protocol(), QSsl::SslV2);
- socket->abort();
- QCOMPARE(socket->protocol(), QSsl::SslV2);
- socket->connectToHost(QtNetworkSettings::serverName(), 443);
- QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
- socket->startClientEncryption();
- QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
- socket->abort();
- }
- {
- // Fluke allows SSLV3, so it allows AnyProtocol.
- socket->setProtocol(QSsl::AnyProtocol);
- QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY(socket->waitForEncrypted());
- QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
- socket->abort();
- QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
- socket->connectToHost(QtNetworkSettings::serverName(), 443);
- QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
- socket->startClientEncryption();
- QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
- QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
- socket->abort();
- }
- {
- // Fluke allows SSLV3, so it allows NoSslV2
- socket->setProtocol(QSsl::TlsV1SslV3);
- QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY(socket->waitForEncrypted());
- QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
- socket->abort();
- QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
- socket->connectToHost(QtNetworkSettings::serverName(), 443);
- QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
- socket->startClientEncryption();
- QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString()));
- QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
- socket->abort();
- }
-}
-
-class SslServer : public QTcpServer
-{
- Q_OBJECT
-public:
- SslServer(const QString &keyFile = SRCDIR "certs/fluke.key", const QString &certFile = SRCDIR "certs/fluke.cert")
- : socket(0),
- protocol(QSsl::TlsV1),
- m_keyFile(keyFile),
- m_certFile(certFile) { }
- QSslSocket *socket;
- QSsl::SslProtocol protocol;
- QString m_keyFile;
- QString m_certFile;
-
-protected:
- void incomingConnection(int socketDescriptor)
- {
- socket = new QSslSocket(this);
- socket->setProtocol(protocol);
- connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
-
- QFile file(m_keyFile);
- QVERIFY(file.open(QIODevice::ReadOnly));
- QSslKey key(file.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
- QVERIFY(!key.isNull());
- socket->setPrivateKey(key);
-
- QList<QSslCertificate> localCert = QSslCertificate::fromPath(m_certFile);
- QVERIFY(!localCert.isEmpty());
- QVERIFY(localCert.first().handle());
- socket->setLocalCertificate(localCert.first());
-
- QVERIFY(socket->setSocketDescriptor(socketDescriptor, QAbstractSocket::ConnectedState));
- QVERIFY(!socket->peerAddress().isNull());
- QVERIFY(socket->peerPort() != 0);
- QVERIFY(!socket->localAddress().isNull());
- QVERIFY(socket->localPort() != 0);
-
- socket->startServerEncryption();
- }
-
-protected slots:
- void ignoreErrorSlot()
- {
- socket->ignoreSslErrors();
- }
-};
-
-void tst_QSslSocket::protocolServerSide_data()
-{
-
- QTest::addColumn<QSsl::SslProtocol>("serverProtocol");
- QTest::addColumn<QSsl::SslProtocol>("clientProtocol");
- QTest::addColumn<bool>("works");
-
- QTest::newRow("ssl2-ssl2") << QSsl::SslV2 << QSsl::SslV2 << false; // no idea why it does not work, but we don't care about SSL 2
- QTest::newRow("ssl3-ssl3") << QSsl::SslV3 << QSsl::SslV3 << true;
- QTest::newRow("tls1-tls1") << QSsl::TlsV1 << QSsl::TlsV1 << true;
- QTest::newRow("tls1ssl3-tls1ssl3") << QSsl::TlsV1SslV3 << QSsl::TlsV1SslV3 << true;
- QTest::newRow("any-any") << QSsl::AnyProtocol << QSsl::AnyProtocol << true;
- QTest::newRow("secure-secure") << QSsl::SecureProtocols << QSsl::SecureProtocols << true;
-
- QTest::newRow("ssl2-ssl3") << QSsl::SslV2 << QSsl::SslV3 << false;
- QTest::newRow("ssl2-tls1") << QSsl::SslV2 << QSsl::TlsV1 << false;
- QTest::newRow("ssl2-tls1ssl3") << QSsl::SslV2 << QSsl::TlsV1SslV3 << false;
- QTest::newRow("ssl2-secure") << QSsl::SslV2 << QSsl::SecureProtocols << false;
- QTest::newRow("ssl2-any") << QSsl::SslV2 << QSsl::AnyProtocol << false; // no idea why it does not work, but we don't care about SSL 2
-
- QTest::newRow("ssl3-ssl2") << QSsl::SslV3 << QSsl::SslV2 << false;
- QTest::newRow("ssl3-tls1") << QSsl::SslV3 << QSsl::TlsV1 << false;
- QTest::newRow("ssl3-tls1ssl3") << QSsl::SslV3 << QSsl::TlsV1SslV3 << true;
- QTest::newRow("ssl3-secure") << QSsl::SslV3 << QSsl::SecureProtocols << true;
- QTest::newRow("ssl3-any") << QSsl::SslV3 << QSsl::AnyProtocol << false; // we wont set a SNI header here because we connect to a
- // numerical IP, so OpenSSL will send a SSL 2 handshake
-
- QTest::newRow("tls1-ssl2") << QSsl::TlsV1 << QSsl::SslV2 << false;
- QTest::newRow("tls1-ssl3") << QSsl::TlsV1 << QSsl::SslV3 << false;
- QTest::newRow("tls1-tls1ssl3") << QSsl::TlsV1 << QSsl::TlsV1SslV3 << true;
- QTest::newRow("tls1-secure") << QSsl::TlsV1 << QSsl::SecureProtocols << true;
- QTest::newRow("tls1-any") << QSsl::TlsV1 << QSsl::AnyProtocol << false; // we wont set a SNI header here because we connect to a
- // numerical IP, so OpenSSL will send a SSL 2 handshake
-
- QTest::newRow("tls1ssl3-ssl2") << QSsl::TlsV1SslV3 << QSsl::SslV2 << false;
- QTest::newRow("tls1ssl3-ssl3") << QSsl::TlsV1SslV3 << QSsl::SslV3 << true;
- QTest::newRow("tls1ssl3-tls1") << QSsl::TlsV1SslV3 << QSsl::TlsV1 << true;
- QTest::newRow("tls1ssl3-secure") << QSsl::TlsV1SslV3 << QSsl::SecureProtocols << true;
- QTest::newRow("tls1ssl3-any") << QSsl::TlsV1SslV3 << QSsl::AnyProtocol << true;
-
- QTest::newRow("secure-ssl2") << QSsl::SecureProtocols << QSsl::SslV2 << false;
- QTest::newRow("secure-ssl3") << QSsl::SecureProtocols << QSsl::SslV3 << true;
- QTest::newRow("secure-tls1") << QSsl::SecureProtocols << QSsl::TlsV1 << true;
- QTest::newRow("secure-tls1ssl3") << QSsl::SecureProtocols << QSsl::TlsV1SslV3 << true;
- QTest::newRow("secure-any") << QSsl::SecureProtocols << QSsl::AnyProtocol << true;
-
- QTest::newRow("any-ssl2") << QSsl::AnyProtocol << QSsl::SslV2 << false; // no idea why it does not work, but we don't care about SSL 2
- QTest::newRow("any-ssl3") << QSsl::AnyProtocol << QSsl::SslV3 << true;
- QTest::newRow("any-tls1") << QSsl::AnyProtocol << QSsl::TlsV1 << true;
- QTest::newRow("any-tls1ssl3") << QSsl::AnyProtocol << QSsl::TlsV1SslV3 << true;
- QTest::newRow("any-secure") << QSsl::AnyProtocol << QSsl::SecureProtocols << true;
-}
-
-void tst_QSslSocket::protocolServerSide()
-{
- if (!QSslSocket::supportsSsl()) {
- qWarning("SSL not supported, skipping test");
- return;
- }
-
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QFETCH(QSsl::SslProtocol, serverProtocol);
- SslServer server;
- server.protocol = serverProtocol;
- QVERIFY(server.listen());
-
- QEventLoop loop;
- QTimer::singleShot(5000, &loop, SLOT(quit()));
-
- QSslSocketPtr client = new QSslSocket;
- socket = client;
- QFETCH(QSsl::SslProtocol, clientProtocol);
- socket->setProtocol(clientProtocol);
- // upon SSL wrong version error, error will be triggered, not sslErrors
- connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit()));
- connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
- connect(client, SIGNAL(encrypted()), &loop, SLOT(quit()));
-
- client->connectToHostEncrypted(QHostAddress(QHostAddress::LocalHost).toString(), server.serverPort());
-
- loop.exec();
-
- QFETCH(bool, works);
- QAbstractSocket::SocketState expectedState = (works) ? QAbstractSocket::ConnectedState : QAbstractSocket::UnconnectedState;
- QCOMPARE(client->state(), expectedState);
- QCOMPARE(client->isEncrypted(), works);
-}
-
-void tst_QSslSocket::setCaCertificates()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocket socket;
- QCOMPARE(socket.caCertificates(), QSslSocket::defaultCaCertificates());
- socket.setCaCertificates(QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem"));
- QCOMPARE(socket.caCertificates().size(), 1);
- socket.setCaCertificates(socket.defaultCaCertificates());
- QCOMPARE(socket.caCertificates(), QSslSocket::defaultCaCertificates());
-}
-
-void tst_QSslSocket::setLocalCertificate()
-{
-}
-
-void tst_QSslSocket::setPrivateKey()
-{
-}
-
-void tst_QSslSocket::setSocketDescriptor()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- SslServer server;
- QVERIFY(server.listen());
-
- QEventLoop loop;
- QTimer::singleShot(5000, &loop, SLOT(quit()));
-
- QSslSocketPtr client = new QSslSocket;
- socket = client;
- connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
- connect(client, SIGNAL(encrypted()), &loop, SLOT(quit()));
-
- client->connectToHostEncrypted(QHostAddress(QHostAddress::LocalHost).toString(), server.serverPort());
-
- loop.exec();
-
- QCOMPARE(client->state(), QAbstractSocket::ConnectedState);
- QVERIFY(client->isEncrypted());
- QVERIFY(!client->peerAddress().isNull());
- QVERIFY(client->peerPort() != 0);
- QVERIFY(!client->localAddress().isNull());
- QVERIFY(client->localPort() != 0);
-}
-
-void tst_QSslSocket::setSslConfiguration_data()
-{
- QTest::addColumn<QSslConfiguration>("configuration");
- QTest::addColumn<bool>("works");
-
- QTest::newRow("empty") << QSslConfiguration() << false;
- QSslConfiguration conf = QSslConfiguration::defaultConfiguration();
- QTest::newRow("default") << conf << false; // does not contain test server cert
- QList<QSslCertificate> testServerCert = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem");
- conf.setCaCertificates(testServerCert);
- QTest::newRow("set-root-cert") << conf << true;
- conf.setProtocol(QSsl::SecureProtocols);
- QTest::newRow("secure") << conf << true;
-}
-
-void tst_QSslSocket::setSslConfiguration()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocketPtr socket = newSocket();
- QFETCH(QSslConfiguration, configuration);
- socket->setSslConfiguration(configuration);
- this->socket = socket;
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QFETCH(bool, works);
- QCOMPARE(socket->waitForEncrypted(10000), works);
- if (works) {
- socket->disconnectFromHost();
- QVERIFY2(socket->waitForDisconnected(), qPrintable(socket->errorString()));
- }
-}
-
-void tst_QSslSocket::waitForEncrypted()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocketPtr socket = newSocket();
- this->socket = socket;
-
- connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
-
- QVERIFY(socket->waitForEncrypted(10000));
-}
-
-void tst_QSslSocket::waitForEncryptedMinusOne()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocketPtr socket = newSocket();
- this->socket = socket;
-
- connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
-
- QVERIFY(socket->waitForEncrypted(-1));
-}
-
-void tst_QSslSocket::waitForConnectedEncryptedReadyRead()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocketPtr socket = newSocket();
- this->socket = socket;
-
- connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
-
-#ifdef Q_OS_SYMBIAN
- QVERIFY(socket->waitForConnected(10000));
- QVERIFY(socket->waitForEncrypted(10000));
-
- // dont forget to login
- QCOMPARE((int) socket->write("USER ftptest\r\n"), 14);
- QCOMPARE((int) socket->write("PASS ftP2Ptf\r\n"), 14);
-
- QVERIFY(socket->waitForReadyRead(10000));
- QVERIFY(!socket->peerCertificate().isNull());
- QVERIFY(!socket->peerCertificateChain().isEmpty());
-#else
- QVERIFY(socket->waitForConnected(10000));
- QVERIFY(socket->waitForEncrypted(10000));
- QVERIFY(socket->waitForReadyRead(10000));
- QVERIFY(!socket->peerCertificate().isNull());
- QVERIFY(!socket->peerCertificateChain().isEmpty());
-#endif
-}
-
-void tst_QSslSocket::startClientEncryption()
-{
-}
-
-void tst_QSslSocket::startServerEncryption()
-{
-}
-
-void tst_QSslSocket::addDefaultCaCertificate()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- // Reset the global CA chain
- QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates());
-
- QList<QSslCertificate> flukeCerts = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem");
- QCOMPARE(flukeCerts.size(), 1);
- QList<QSslCertificate> globalCerts = QSslSocket::defaultCaCertificates();
- QVERIFY(!globalCerts.contains(flukeCerts.first()));
- QSslSocket::addDefaultCaCertificate(flukeCerts.first());
- QCOMPARE(QSslSocket::defaultCaCertificates().size(), globalCerts.size() + 1);
- QVERIFY(QSslSocket::defaultCaCertificates().contains(flukeCerts.first()));
-
- // Restore the global CA chain
- QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates());
-}
-
-void tst_QSslSocket::addDefaultCaCertificates()
-{
-}
-
-void tst_QSslSocket::addDefaultCaCertificates2()
-{
-}
-
-void tst_QSslSocket::defaultCaCertificates()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QList<QSslCertificate> certs = QSslSocket::defaultCaCertificates();
- QVERIFY(certs.size() > 1);
- QCOMPARE(certs, QSslSocket::systemCaCertificates());
-}
-
-void tst_QSslSocket::defaultCiphers()
-{
-}
-
-void tst_QSslSocket::resetDefaultCiphers()
-{
-}
-
-void tst_QSslSocket::setDefaultCaCertificates()
-{
-}
-
-void tst_QSslSocket::setDefaultCiphers()
-{
-}
-
-void tst_QSslSocket::supportedCiphers()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QList<QSslCipher> ciphers = QSslSocket::supportedCiphers();
- QVERIFY(ciphers.size() > 1);
-
- QSslSocket socket;
- QCOMPARE(socket.supportedCiphers(), ciphers);
- QCOMPARE(socket.defaultCiphers(), ciphers);
- QCOMPARE(socket.ciphers(), ciphers);
-}
-
-void tst_QSslSocket::systemCaCertificates()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QList<QSslCertificate> certs = QSslSocket::systemCaCertificates();
- QVERIFY(certs.size() > 1);
- QCOMPARE(certs, QSslSocket::defaultCaCertificates());
-}
-
-void tst_QSslSocket::wildcardCertificateNames()
-{
- // Passing CN matches
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("www.example.com"), QString("www.example.com")), true );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.example.com"), QString("www.example.com")), true );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("xxx*.example.com"), QString("xxxwww.example.com")), true );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("f*.example.com"), QString("foo.example.com")), true );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("192.168.0.0"), QString("192.168.0.0")), true );
-
- // Failing CN matches
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("xxx.example.com"), QString("www.example.com")), false );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*"), QString("www.example.com")), false );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.*.com"), QString("www.example.com")), false );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.example.com"), QString("baa.foo.example.com")), false );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("f*.example.com"), QString("baa.example.com")), false );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.com"), QString("example.com")), false );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*fail.com"), QString("example.com")), false );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.example."), QString("www.example.")), false );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.example."), QString("www.example")), false );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString(""), QString("www")), false );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*"), QString("www")), false );
- QCOMPARE( QSslSocketBackendPrivate::isMatchingHostname(QString("*.168.0.0"), QString("192.168.0.0")), false );
-}
-
-void tst_QSslSocket::wildcard()
-{
- QSKIP("TODO: solve wildcard problem", SkipAll);
-
- if (!QSslSocket::supportsSsl())
- return;
-
- // Fluke runs an apache server listening on port 4443, serving the
- // wildcard fluke.*.troll.no. The DNS entry for
- // fluke.wildcard.dev.troll.no, served by ares (root for dev.troll.no),
- // returns the CNAME fluke.troll.no for this domain. The web server
- // responds with the wildcard, and QSslSocket should accept that as a
- // valid connection. This was broken in 4.3.0.
- QSslSocketPtr socket = newSocket();
- socket->addCaCertificates(QLatin1String("certs/aspiriniks.ca.crt"));
- this->socket = socket;
-#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
- connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
- this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
-#endif
- socket->connectToHostEncrypted(QtNetworkSettings::wildcardServerName(), 4443);
-
- QVERIFY2(socket->waitForEncrypted(3000), qPrintable(socket->errorString()));
-
- QSslCertificate certificate = socket->peerCertificate();
- QCOMPARE(certificate.subjectInfo(QSslCertificate::CommonName), QString(QtNetworkSettings::serverLocalName() + ".*." + QtNetworkSettings::serverDomainName()));
- QCOMPARE(certificate.issuerInfo(QSslCertificate::CommonName), QtNetworkSettings::serverName());
-
- socket->close();
-}
-
-class SslServer2 : public QTcpServer
-{
-protected:
- void incomingConnection(int socketDescriptor)
- {
- QSslSocket *socket = new QSslSocket(this);
- socket->ignoreSslErrors();
-
- // Only set the certificate
- QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/fluke.cert");
- QVERIFY(!localCert.isEmpty());
- QVERIFY(localCert.first().handle());
- socket->setLocalCertificate(localCert.first());
-
- QVERIFY(socket->setSocketDescriptor(socketDescriptor, QAbstractSocket::ConnectedState));
-
- socket->startServerEncryption();
- }
-};
-
-void tst_QSslSocket::setEmptyKey()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- SslServer2 server;
- server.listen();
-
- QSslSocket socket;
- socket.connectToHostEncrypted("127.0.0.1", server.serverPort());
-
- QTestEventLoop::instance().enterLoop(2);
-
- QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
- QCOMPARE(socket.error(), QAbstractSocket::UnknownSocketError);
-}
-
-void tst_QSslSocket::spontaneousWrite()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- SslServer server;
- QSslSocket *receiver = new QSslSocket(this);
- connect(receiver, SIGNAL(readyRead()), SLOT(exitLoop()));
-
- // connect two sockets to each other:
- QVERIFY(server.listen(QHostAddress::LocalHost));
- receiver->connectToHost("127.0.0.1", server.serverPort());
- QVERIFY(receiver->waitForConnected(5000));
- QVERIFY(server.waitForNewConnection(0));
-
- QSslSocket *sender = server.socket;
- QVERIFY(sender);
- QVERIFY(sender->state() == QAbstractSocket::ConnectedState);
- receiver->setObjectName("receiver");
- sender->setObjectName("sender");
- receiver->ignoreSslErrors();
- receiver->startClientEncryption();
-
- // SSL handshake:
- connect(receiver, SIGNAL(encrypted()), SLOT(exitLoop()));
- enterLoop(1);
- QVERIFY(!timeout());
- QVERIFY(sender->isEncrypted());
- QVERIFY(receiver->isEncrypted());
-
- // make sure there's nothing to be received on the sender:
- while (sender->waitForReadyRead(10) || receiver->waitForBytesWritten(10)) {}
-
- // spontaneously write something:
- QByteArray data("Hello World");
- sender->write(data);
-
- // check if the other side receives it:
- enterLoop(1);
- QVERIFY(!timeout());
- QCOMPARE(receiver->bytesAvailable(), qint64(data.size()));
- QCOMPARE(receiver->readAll(), data);
-}
-
-void tst_QSslSocket::setReadBufferSize()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- SslServer server;
- QSslSocket *receiver = new QSslSocket(this);
- connect(receiver, SIGNAL(readyRead()), SLOT(exitLoop()));
-
- // connect two sockets to each other:
- QVERIFY(server.listen(QHostAddress::LocalHost));
- receiver->connectToHost("127.0.0.1", server.serverPort());
- QVERIFY(receiver->waitForConnected(5000));
- QVERIFY(server.waitForNewConnection(0));
-
- QSslSocket *sender = server.socket;
- QVERIFY(sender);
- QVERIFY(sender->state() == QAbstractSocket::ConnectedState);
- receiver->setObjectName("receiver");
- sender->setObjectName("sender");
- receiver->ignoreSslErrors();
- receiver->startClientEncryption();
-
- // SSL handshake:
- connect(receiver, SIGNAL(encrypted()), SLOT(exitLoop()));
- enterLoop(1);
- QVERIFY(!timeout());
- QVERIFY(sender->isEncrypted());
- QVERIFY(receiver->isEncrypted());
-
- QByteArray data(2048, 'b');
- receiver->setReadBufferSize(39 * 1024); // make it a non-multiple of the data.size()
-
- // saturate the incoming buffer
- while (sender->state() == QAbstractSocket::ConnectedState &&
- receiver->state() == QAbstractSocket::ConnectedState &&
- receiver->bytesAvailable() < receiver->readBufferSize()) {
- sender->write(data);
- //qDebug() << receiver->bytesAvailable() << "<" << receiver->readBufferSize() << (receiver->bytesAvailable() < receiver->readBufferSize());
-
- while (sender->bytesToWrite())
- QVERIFY(sender->waitForBytesWritten(10));
-
- // drain it:
- while (receiver->bytesAvailable() < receiver->readBufferSize() &&
- receiver->waitForReadyRead(10)) {}
- }
-
- //qDebug() << sender->bytesToWrite() << "bytes to write";
- //qDebug() << receiver->bytesAvailable() << "bytes available";
-
- // send a bit more
- sender->write(data);
- sender->write(data);
- sender->write(data);
- sender->write(data);
- QVERIFY(sender->waitForBytesWritten(10));
-
- qint64 oldBytesAvailable = receiver->bytesAvailable();
-
- // now unset the read buffer limit and iterate
- receiver->setReadBufferSize(0);
- enterLoop(1);
- QVERIFY(!timeout());
-
- QVERIFY(receiver->bytesAvailable() > oldBytesAvailable);
-}
-
-class SetReadBufferSize_task_250027_handler : public QObject {
- Q_OBJECT
-public slots:
- void readyReadSlot() {
- QTestEventLoop::instance().exitLoop();
- }
- void waitSomeMore(QSslSocket *socket) {
- QTime t;
- t.start();
- while (!socket->encryptedBytesAvailable()) {
- QCoreApplication::processEvents(QEventLoop::AllEvents | QEventLoop::WaitForMoreEvents, 250);
- if (t.elapsed() > 1000 || socket->state() != QAbstractSocket::ConnectedState)
- return;
- }
- }
-};
-
-void tst_QSslSocket::setReadBufferSize_task_250027()
-{
- // do not execute this when a proxy is set.
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QSslSocketPtr socket = newSocket();
- socket->setReadBufferSize(1000); // limit to 1 kb/sec
- socket->ignoreSslErrors();
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- socket->ignoreSslErrors();
- QVERIFY(socket->waitForConnected(10*1000));
- QVERIFY(socket->waitForEncrypted(10*1000));
-
- // exit the event loop as soon as we receive a readyRead()
- SetReadBufferSize_task_250027_handler setReadBufferSize_task_250027_handler;
- connect(socket, SIGNAL(readyRead()), &setReadBufferSize_task_250027_handler, SLOT(readyReadSlot()));
-
- // provoke a response by sending a request
- socket->write("GET /qtest/fluke.gif HTTP/1.0\n"); // this file is 27 KB
- socket->write("Host: ");
- socket->write(QtNetworkSettings::serverName().toLocal8Bit().constData());
- socket->write("\n");
- socket->write("Connection: close\n");
- socket->write("\n");
- socket->flush();
-
- QTestEventLoop::instance().enterLoop(10);
- setReadBufferSize_task_250027_handler.waitSomeMore(socket);
- QByteArray firstRead = socket->readAll();
- // First read should be some data, but not the whole file
- QVERIFY(firstRead.size() > 0 && firstRead.size() < 20*1024);
-
- QTestEventLoop::instance().enterLoop(10);
- setReadBufferSize_task_250027_handler.waitSomeMore(socket);
- QByteArray secondRead = socket->readAll();
- // second read should be some more data
- QVERIFY(secondRead.size() > 0);
-
- socket->close();
-}
-
-class SslServer3 : public QTcpServer
-{
- Q_OBJECT
-public:
- SslServer3() : socket(0) { }
- QSslSocket *socket;
-
-protected:
- void incomingConnection(int socketDescriptor)
- {
- socket = new QSslSocket(this);
- connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
-
- QFile file(SRCDIR "certs/fluke.key");
- QVERIFY(file.open(QIODevice::ReadOnly));
- QSslKey key(file.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
- QVERIFY(!key.isNull());
- socket->setPrivateKey(key);
-
- QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/fluke.cert");
- QVERIFY(!localCert.isEmpty());
- QVERIFY(localCert.first().handle());
- socket->setLocalCertificate(localCert.first());
-
- QVERIFY(socket->setSocketDescriptor(socketDescriptor, QAbstractSocket::ConnectedState));
- QVERIFY(!socket->peerAddress().isNull());
- QVERIFY(socket->peerPort() != 0);
- QVERIFY(!socket->localAddress().isNull());
- QVERIFY(socket->localPort() != 0);
- }
-
-protected slots:
- void ignoreErrorSlot()
- {
- socket->ignoreSslErrors();
- }
-};
-
-class ThreadedSslServer: public QThread
-{
- Q_OBJECT
-public:
- QSemaphore dataReadSemaphore;
- int serverPort;
- bool ok;
-
- ThreadedSslServer() : serverPort(-1), ok(false)
- { }
-
- ~ThreadedSslServer()
- {
- if (isRunning()) wait(2000);
- QVERIFY(ok);
- }
-
-signals:
- void listening();
-
-protected:
- void run()
- {
- // if all goes well (no timeouts), this thread will sleep for a total of 500 ms
- // (i.e., 5 times 100 ms, one sleep for each operation)
-
- SslServer3 server;
- server.listen(QHostAddress::LocalHost);
- serverPort = server.serverPort();
- emit listening();
-
- // delayed acceptance:
- QTest::qSleep(100);
-#ifndef Q_OS_SYMBIAN
- bool ret = server.waitForNewConnection(2000);
-#else
- bool ret = server.waitForNewConnection(20000);
-#endif
- Q_UNUSED(ret);
-
- // delayed start of encryption
- QTest::qSleep(100);
- QSslSocket *socket = server.socket;
- if (!socket || !socket->isValid())
- return; // error
- socket->ignoreSslErrors();
- socket->startServerEncryption();
- if (!socket->waitForEncrypted(2000))
- return; // error
-
- // delayed reading data
- QTest::qSleep(100);
- if (!socket->waitForReadyRead(2000))
- return; // error
- socket->readAll();
- dataReadSemaphore.release();
-
- // delayed sending data
- QTest::qSleep(100);
- socket->write("Hello, World");
- while (socket->bytesToWrite())
- if (!socket->waitForBytesWritten(2000))
- return; // error
-
- // delayed replying (reading then sending)
- QTest::qSleep(100);
- if (!socket->waitForReadyRead(2000))
- return; // error
- socket->write("Hello, World");
- while (socket->bytesToWrite())
- if (!socket->waitForBytesWritten(2000))
- return; // error
-
- // delayed disconnection:
- QTest::qSleep(100);
- socket->disconnectFromHost();
- if (!socket->waitForDisconnected(2000))
- return; // error
-
- delete socket;
- ok = true;
- }
-};
-
-void tst_QSslSocket::waitForMinusOne()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- ThreadedSslServer server;
- connect(&server, SIGNAL(listening()), SLOT(exitLoop()));
-
- // start the thread and wait for it to be ready
- server.start();
- enterLoop(1);
- QVERIFY(!timeout());
-
- // connect to the server
- QSslSocket socket;
- QTest::qSleep(100);
- socket.connectToHost("127.0.0.1", server.serverPort);
- QVERIFY(socket.waitForConnected(-1));
- socket.ignoreSslErrors();
- socket.startClientEncryption();
-
- // first verification: this waiting should take 200 ms
- QVERIFY2(socket.waitForEncrypted(-1), qPrintable(socket.errorString()));
- QVERIFY(socket.isEncrypted());
- QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
- QCOMPARE(socket.bytesAvailable(), Q_INT64_C(0));
-
- // second verification: write and make sure the other side got it (100 ms)
- socket.write("How are you doing?");
- QVERIFY(socket.bytesToWrite() != 0);
- QVERIFY(socket.waitForBytesWritten(-1));
- QVERIFY(server.dataReadSemaphore.tryAcquire(1, 2000));
-
- // third verification: it should wait for 100 ms:
- QVERIFY(socket.waitForReadyRead(-1));
- QVERIFY(socket.isEncrypted());
- QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
- QVERIFY(socket.bytesAvailable() != 0);
-
- // fourth verification: deadlock prevention:
- // we write and then wait for reading; the other side needs to receive before
- // replying (100 ms delay)
- socket.write("I'm doing just fine!");
- QVERIFY(socket.bytesToWrite() != 0);
- QVERIFY(socket.waitForReadyRead(-1));
-
- // fifth verification: it should wait for 200 ms more
- QVERIFY(socket.waitForDisconnected(-1));
-}
-
-class VerifyServer : public QTcpServer
-{
- Q_OBJECT
-public:
- VerifyServer() : socket(0) { }
- QSslSocket *socket;
-
-protected:
- void incomingConnection(int socketDescriptor)
- {
- socket = new QSslSocket(this);
-
- socket->setPrivateKey(SRCDIR "certs/fluke.key");
- socket->setLocalCertificate(SRCDIR "certs/fluke.cert");
- socket->setSocketDescriptor(socketDescriptor);
- socket->startServerEncryption();
- }
-};
-
-void tst_QSslSocket::verifyMode()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QSslSocket socket;
- QCOMPARE(socket.peerVerifyMode(), QSslSocket::AutoVerifyPeer);
- socket.setPeerVerifyMode(QSslSocket::VerifyNone);
- QCOMPARE(socket.peerVerifyMode(), QSslSocket::VerifyNone);
- socket.setPeerVerifyMode(QSslSocket::VerifyNone);
- socket.setPeerVerifyMode(QSslSocket::VerifyPeer);
- QCOMPARE(socket.peerVerifyMode(), QSslSocket::VerifyPeer);
-
- socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY(!socket.waitForEncrypted());
-
- QList<QSslError> expectedErrors = QList<QSslError>()
- << QSslError(QSslError::SelfSignedCertificate, socket.peerCertificate());
- QCOMPARE(socket.sslErrors(), expectedErrors);
- socket.abort();
-
- VerifyServer server;
- server.listen();
-
- QSslSocket clientSocket;
- clientSocket.connectToHostEncrypted("127.0.0.1", server.serverPort());
- clientSocket.ignoreSslErrors();
-
- QEventLoop loop;
- QTimer::singleShot(5000, &loop, SLOT(quit()));
- connect(&clientSocket, SIGNAL(encrypted()), &loop, SLOT(quit()));
- loop.exec();
-
- QVERIFY(clientSocket.isEncrypted());
- QVERIFY(server.socket->sslErrors().isEmpty());
-}
-
-void tst_QSslSocket::verifyDepth()
-{
- QSslSocket socket;
- QCOMPARE(socket.peerVerifyDepth(), 0);
- socket.setPeerVerifyDepth(1);
- QCOMPARE(socket.peerVerifyDepth(), 1);
- QTest::ignoreMessage(QtWarningMsg, "QSslSocket::setPeerVerifyDepth: cannot set negative depth of -1");
- socket.setPeerVerifyDepth(-1);
- QCOMPARE(socket.peerVerifyDepth(), 1);
-}
-
-void tst_QSslSocket::peerVerifyError()
-{
- QSslSocketPtr socket = newSocket();
- QSignalSpy sslErrorsSpy(socket, SIGNAL(sslErrors(QList<QSslError>)));
- QSignalSpy peerVerifyErrorSpy(socket, SIGNAL(peerVerifyError(QSslError)));
-
- socket->connectToHostEncrypted(QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString(), 443);
- QVERIFY(!socket->waitForEncrypted(10000));
- QVERIFY(!peerVerifyErrorSpy.isEmpty());
- QVERIFY(!sslErrorsSpy.isEmpty());
- QCOMPARE(qVariantValue<QSslError>(peerVerifyErrorSpy.last().at(0)).error(), QSslError::HostNameMismatch);
- QCOMPARE(qVariantValue<QList<QSslError> >(sslErrorsSpy.at(0).at(0)).size(), peerVerifyErrorSpy.size());
-}
-
-void tst_QSslSocket::disconnectFromHostWhenConnecting()
-{
- QSslSocketPtr socket = newSocket();
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
- socket->ignoreSslErrors();
- socket->write("XXXX LOGOUT\r\n");
- QAbstractSocket::SocketState state = socket->state();
- // without proxy, the state will be HostLookupState;
- // with proxy, the state will be ConnectingState.
- QVERIFY(socket->state() == QAbstractSocket::HostLookupState ||
- socket->state() == QAbstractSocket::ConnectingState);
- socket->disconnectFromHost();
- // the state of the socket must be the same before and after calling
- // disconnectFromHost()
- QCOMPARE(state, socket->state());
- QVERIFY(socket->state() == QAbstractSocket::HostLookupState ||
- socket->state() == QAbstractSocket::ConnectingState);
- QVERIFY(socket->waitForDisconnected(10000));
- QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState);
- // we did not call close, so the socket must be still open
- QVERIFY(socket->isOpen());
- QCOMPARE(socket->bytesToWrite(), qint64(0));
-
- // dont forget to login
- QCOMPARE((int) socket->write("USER ftptest\r\n"), 14);
-
-}
-
-void tst_QSslSocket::disconnectFromHostWhenConnected()
-{
- QSslSocketPtr socket = newSocket();
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
- socket->ignoreSslErrors();
-#ifndef Q_OS_SYMBIAN
- QVERIFY(socket->waitForEncrypted(5000));
-#else
- QVERIFY(socket->waitForEncrypted(10000));
-#endif
- socket->write("XXXX LOGOUT\r\n");
- QCOMPARE(socket->state(), QAbstractSocket::ConnectedState);
- socket->disconnectFromHost();
- QCOMPARE(socket->state(), QAbstractSocket::ClosingState);
-#ifdef Q_OS_SYMBIAN
- // I don't understand how socket->waitForDisconnected can work on other platforms
- // since socket->write will end to:
- // QMetaObject::invokeMethod(this, "_q_flushWriteBuffer", Qt::QueuedConnection);
- // In order that _q_flushWriteBuffer will be called the eventloop need to run
- // If we just call waitForDisconnected, which blocks the whole thread how that can happen?
- connect(socket, SIGNAL(disconnected()), this, SLOT(exitLoop()));
- enterLoop(5);
- QVERIFY(!timeout());
-#else
- QVERIFY(socket->waitForDisconnected(5000));
-#endif
- QCOMPARE(socket->bytesToWrite(), qint64(0));
-}
-
-void tst_QSslSocket::resetProxy()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- // check fix for bug 199941
-
- QNetworkProxy goodProxy(QNetworkProxy::NoProxy);
- QNetworkProxy badProxy(QNetworkProxy::HttpProxy, "thisCannotWorkAbsolutelyNotForSure", 333);
-
- // make sure the connection works, and then set a nonsense proxy, and then
- // make sure it does not work anymore
- QSslSocket socket;
- socket.addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"));
- socket.setProxy(goodProxy);
- socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY2(socket.waitForConnected(10000), qPrintable(socket.errorString()));
- socket.abort();
- socket.setProxy(badProxy);
- socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY(! socket.waitForConnected(10000));
-
- // dont forget to login
- QCOMPARE((int) socket.write("USER ftptest\r\n"), 14);
- QCOMPARE((int) socket.write("PASS password\r\n"), 15);
-
- enterLoop(10);
-
- // now the other way round:
- // set the nonsense proxy and make sure the connection does not work,
- // and then set the right proxy and make sure it works
- QSslSocket socket2;
- socket2.addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"));
- socket2.setProxy(badProxy);
- socket2.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY(! socket2.waitForConnected(10000));
- socket2.abort();
- socket2.setProxy(goodProxy);
- socket2.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY2(socket2.waitForConnected(10000), qPrintable(socket.errorString()));
-}
-
-void tst_QSslSocket::ignoreSslErrorsList_data()
-{
- QTest::addColumn<QList<QSslError> >("expectedSslErrors");
- QTest::addColumn<int>("expectedSslErrorSignalCount");
-
- // construct the list of errors that we will get with the SSL handshake and that we will ignore
- QList<QSslError> expectedSslErrors;
- // fromPath gives us a list of certs, but it actually only contains one
- QList<QSslCertificate> certs = QSslCertificate::fromPath(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"));
- QSslError rightError(QSslError::SelfSignedCertificate, certs.at(0));
- QSslError wrongError(QSslError::SelfSignedCertificate);
-
-
- QTest::newRow("SSL-failure-empty-list") << expectedSslErrors << 1;
- expectedSslErrors.append(wrongError);
- QTest::newRow("SSL-failure-wrong-error") << expectedSslErrors << 1;
- expectedSslErrors.append(rightError);
- QTest::newRow("allErrorsInExpectedList1") << expectedSslErrors << 0;
- expectedSslErrors.removeAll(wrongError);
- QTest::newRow("allErrorsInExpectedList2") << expectedSslErrors << 0;
- expectedSslErrors.removeAll(rightError);
- QTest::newRow("SSL-failure-empty-list-again") << expectedSslErrors << 1;
-}
-
-void tst_QSslSocket::ignoreSslErrorsList()
-{
- QSslSocket socket;
- connect(&socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-
-// this->socket = &socket;
- QSslCertificate cert;
-
- QFETCH(QList<QSslError>, expectedSslErrors);
- socket.ignoreSslErrors(expectedSslErrors);
-
- QFETCH(int, expectedSslErrorSignalCount);
- QSignalSpy sslErrorsSpy(&socket, SIGNAL(error(QAbstractSocket::SocketError)));
-
- socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
-
- bool expectEncryptionSuccess = (expectedSslErrorSignalCount == 0);
- QCOMPARE(socket.waitForEncrypted(10000), expectEncryptionSuccess);
- QCOMPARE(sslErrorsSpy.count(), expectedSslErrorSignalCount);
-}
-
-void tst_QSslSocket::ignoreSslErrorsListWithSlot_data()
-{
- ignoreSslErrorsList_data();
-}
-
-// this is not a test, just a slot called in the test below
-void tst_QSslSocket::ignoreErrorListSlot(const QList<QSslError> &)
-{
- socket->ignoreSslErrors(storedExpectedSslErrors);
-}
-
-void tst_QSslSocket::ignoreSslErrorsListWithSlot()
-{
- QSslSocket socket;
- this->socket = &socket;
-
- QFETCH(QList<QSslError>, expectedSslErrors);
- // store the errors to ignore them later in the slot connected below
- storedExpectedSslErrors = expectedSslErrors;
- connect(&socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- connect(&socket, SIGNAL(sslErrors(const QList<QSslError> &)),
- this, SLOT(ignoreErrorListSlot(const QList<QSslError> &)));
- socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
-
- QFETCH(int, expectedSslErrorSignalCount);
- bool expectEncryptionSuccess = (expectedSslErrorSignalCount == 0);
- QCOMPARE(socket.waitForEncrypted(10000), expectEncryptionSuccess);
-}
-
-// make sure a closed socket has no bytesAvailable()
-// related to https://bugs.webkit.org/show_bug.cgi?id=28016
-void tst_QSslSocket::readFromClosedSocket()
-{
- QSslSocketPtr socket = newSocket();
- socket->ignoreSslErrors();
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- socket->ignoreSslErrors();
- socket->waitForConnected();
- socket->waitForEncrypted();
- // provoke a response by sending a request
- socket->write("GET /qtest/fluke.gif HTTP/1.1\n");
- socket->write("Host: ");
- socket->write(QtNetworkSettings::serverName().toLocal8Bit().constData());
- socket->write("\n");
- socket->write("\n");
- socket->waitForBytesWritten();
- socket->waitForReadyRead();
- QVERIFY(socket->state() == QAbstractSocket::ConnectedState);
- QVERIFY(socket->bytesAvailable());
- socket->close();
- QVERIFY(!socket->bytesAvailable());
- QVERIFY(!socket->bytesToWrite());
- QVERIFY(socket->state() == QAbstractSocket::UnconnectedState);
-}
-
-void tst_QSslSocket::writeBigChunk()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslSocketPtr socket = newSocket();
- this->socket = socket;
-
- connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
-
- QByteArray data;
- data.resize(1024*1024*10); // 10 MB
- // init with garbage. needed so ssl cannot compress it in an efficient way.
- for (size_t i = 0; i < data.size() / sizeof(int); i++) {
- int r = qrand();
- data.data()[i*sizeof(int)] = r;
- }
-
- QVERIFY(socket->waitForEncrypted(10000));
- QString errorBefore = socket->errorString();
-
- int ret = socket->write(data.constData(), data.size());
- QVERIFY(data.size() == ret);
-
- // spin the event loop once so QSslSocket::transmit() gets called
- QCoreApplication::processEvents();
- QString errorAfter = socket->errorString();
-
- // no better way to do this right now since the error is the same as the default error.
- if (socket->errorString().startsWith(QLatin1String("Unable to write data")))
- {
- qWarning() << socket->error() << socket->errorString();
- QFAIL("Error while writing! Check if the OpenSSL BIO size is limited?!");
- }
- // also check the error string. If another error (than UnknownError) occurred, it should be different than before
- QVERIFY(errorBefore == errorAfter);
-
- // check that everything has been written to OpenSSL
- QVERIFY(socket->bytesToWrite() == 0);
-
- socket->close();
-}
-
-void tst_QSslSocket::blacklistedCertificates()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- SslServer server(SRCDIR "certs/fake-login.live.com.key", SRCDIR "certs/fake-login.live.com.pem");
- QSslSocket *receiver = new QSslSocket(this);
- connect(receiver, SIGNAL(readyRead()), SLOT(exitLoop()));
-
- // connect two sockets to each other:
- QVERIFY(server.listen(QHostAddress::LocalHost));
- receiver->connectToHost("127.0.0.1", server.serverPort());
- QVERIFY(receiver->waitForConnected(5000));
- QVERIFY(server.waitForNewConnection(0));
-
- QSslSocket *sender = server.socket;
- QVERIFY(sender);
- QVERIFY(sender->state() == QAbstractSocket::ConnectedState);
- receiver->setObjectName("receiver");
- sender->setObjectName("sender");
- receiver->startClientEncryption();
-
- connect(receiver, SIGNAL(sslErrors(QList<QSslError>)), SLOT(exitLoop()));
- connect(receiver, SIGNAL(encrypted()), SLOT(exitLoop()));
- enterLoop(1);
- QList<QSslError> sslErrors = receiver->sslErrors();
- QVERIFY(sslErrors.count() > 0);
- // there are more errors (self signed cert and hostname mismatch), but we only care about the blacklist error
- QCOMPARE(sslErrors.at(0).error(), QSslError::CertificateBlacklisted);
-}
-
-void tst_QSslSocket::setEmptyDefaultConfiguration()
-{
- // used to produce a crash in QSslConfigurationPrivate::deepCopyDefaultConfiguration, QTBUG-13265
-
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslConfiguration emptyConf;
- QSslConfiguration::setDefaultConfiguration(emptyConf);
-
- QSslSocketPtr socket = newSocket();
- connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY2(!socket->waitForEncrypted(4000), qPrintable(socket->errorString()));
-}
-
-void tst_QSslSocket::versionAccessors()
-{
- if (!QSslSocket::supportsSsl())
- return;
-
- qDebug() << QSslSocket::sslLibraryVersionString();
- qDebug() << QString::number(QSslSocket::sslLibraryVersionNumber(), 16);
-}
-
-#endif // QT_NO_OPENSSL
-
-QTEST_MAIN(tst_QSslSocket)
-#include "tst_qsslsocket.moc"
diff --git a/tests/auto/qstackedlayout/qstackedlayout.pro b/tests/auto/qstackedlayout/qstackedlayout.pro
index 1fbf5d33db..30f074d9b1 100644
--- a/tests/auto/qstackedlayout/qstackedlayout.pro
+++ b/tests/auto/qstackedlayout/qstackedlayout.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qstackedlayout.cpp
diff --git a/tests/auto/qstackedwidget/qstackedwidget.pro b/tests/auto/qstackedwidget/qstackedwidget.pro
index b0ddc33077..c9436c6a86 100644
--- a/tests/auto/qstackedwidget/qstackedwidget.pro
+++ b/tests/auto/qstackedwidget/qstackedwidget.pro
@@ -3,7 +3,7 @@
############################################################
load(qttest_p4)
-
+QT += widgets
SOURCES += tst_qstackedwidget.cpp
diff --git a/tests/auto/qstandarditem/qstandarditem.pro b/tests/auto/qstandarditem/qstandarditem.pro
index 9f22729a7d..1d280fc2f5 100644
--- a/tests/auto/qstandarditem/qstandarditem.pro
+++ b/tests/auto/qstandarditem/qstandarditem.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qstandarditem.cpp
diff --git a/tests/auto/qstandarditemmodel/qstandarditemmodel.pro b/tests/auto/qstandarditemmodel/qstandarditemmodel.pro
index 0fc47b3624..8c634b9630 100644
--- a/tests/auto/qstandarditemmodel/qstandarditemmodel.pro
+++ b/tests/auto/qstandarditemmodel/qstandarditemmodel.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
SOURCES += tst_qstandarditemmodel.cpp
diff --git a/tests/auto/qstatemachine/qstatemachine.pro b/tests/auto/qstatemachine/qstatemachine.pro
deleted file mode 100644
index ab71202f18..0000000000
--- a/tests/auto/qstatemachine/qstatemachine.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-load(qttest_p4)
-QT = core core-private gui
-SOURCES += tst_qstatemachine.cpp
-
diff --git a/tests/auto/qstatemachine/tst_qstatemachine.cpp b/tests/auto/qstatemachine/tst_qstatemachine.cpp
deleted file mode 100644
index 854e81fb81..0000000000
--- a/tests/auto/qstatemachine/tst_qstatemachine.cpp
+++ /dev/null
@@ -1,4448 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include <QtCore/QCoreApplication>
-#include <QtGui/QPushButton>
-#include <QtGui/QGraphicsScene>
-#include <QtGui/QGraphicsSceneEvent>
-#include <QtGui/QGraphicsTextItem>
-
-#include "qstatemachine.h"
-#include "qstate.h"
-#include "qhistorystate.h"
-#include "qkeyeventtransition.h"
-#include "qmouseeventtransition.h"
-#include "private/qstate_p.h"
-#include "private/qstatemachine_p.h"
-
-// Will try to wait for the condition while allowing event processing
-#define QTRY_COMPARE(__expr, __expected) \
- do { \
- const int __step = 50; \
- const int __timeout = 5000; \
- if ((__expr) != (__expected)) { \
- QTest::qWait(0); \
- } \
- for (int __i = 0; __i < __timeout && ((__expr) != (__expected)); __i+=__step) { \
- QTest::qWait(__step); \
- } \
- QCOMPARE(__expr, __expected); \
- } while(0)
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-static int globalTick;
-
-// Run exec for a maximum of TIMEOUT msecs
-#define QCOREAPPLICATION_EXEC(TIMEOUT) \
-{ \
- QTimer timer; \
- timer.setSingleShot(true); \
- timer.setInterval(TIMEOUT); \
- timer.start(); \
- connect(&timer, SIGNAL(timeout()), QCoreApplication::instance(), SLOT(quit())); \
- QCoreApplication::exec(); \
-}
-
-class SignalEmitter : public QObject
-{
-Q_OBJECT
- public:
- SignalEmitter(QObject *parent = 0)
- : QObject(parent) {}
- void emitSignalWithNoArg()
- { emit signalWithNoArg(); }
- void emitSignalWithIntArg(int arg)
- { emit signalWithIntArg(arg); }
- void emitSignalWithStringArg(const QString &arg)
- { emit signalWithStringArg(arg); }
- void emitSignalWithDefaultArg()
- { emit signalWithDefaultArg(); }
-Q_SIGNALS:
- void signalWithNoArg();
- void signalWithIntArg(int);
- void signalWithStringArg(const QString &);
- void signalWithDefaultArg(int i = 42);
-};
-
-class tst_QStateMachine : public QObject
-{
- Q_OBJECT
-public:
- tst_QStateMachine();
- virtual ~tst_QStateMachine();
-
-private slots:
- void init();
- void cleanup();
-
- void rootState();
- void machineWithParent();
- void addAndRemoveState();
- void stateEntryAndExit();
- void assignProperty();
- void assignPropertyWithAnimation();
- void postEvent();
- void cancelDelayedEvent();
- void postDelayedEventAndStop();
- void stopAndPostEvent();
- void stateFinished();
- void parallelStates();
- void parallelRootState();
- void allSourceToTargetConfigurations();
- void signalTransitions();
- void eventTransitions();
- void graphicsSceneEventTransitions();
- void historyStates();
- void startAndStop();
- void targetStateWithNoParent();
- void targetStateDeleted();
- void transitionToRootState();
- void transitionFromRootState();
- void transitionEntersParent();
-
- void defaultErrorState();
- void customGlobalErrorState();
- void customLocalErrorStateInBrokenState();
- void customLocalErrorStateInOtherState();
- void customLocalErrorStateInParentOfBrokenState();
- void customLocalErrorStateOverridesParent();
- void errorStateHasChildren();
- void errorStateHasErrors();
- void errorStateIsRootState();
- void errorStateEntersParentFirst();
- void customErrorStateIsNull();
- void clearError();
- void historyStateHasNowhereToGo();
- void historyStateAsInitialState();
- void historyStateAfterRestart();
- void brokenStateIsNeverEntered();
- void customErrorStateNotInGraph();
- void transitionToStateNotInGraph();
- void restoreProperties();
-
- void defaultGlobalRestorePolicy();
- void globalRestorePolicySetToRestore();
- void globalRestorePolicySetToDontRestore();
-
- void noInitialStateForInitialState();
-
- //void restorePolicyNotInherited();
- //void mixedRestoreProperties();
- //void setRestorePolicyToDoNotRestore();
- //void setGlobalRestorePolicyToGlobalRestore();
- //void restorePolicyOnChildState();
-
- void transitionWithParent();
- void transitionsFromParallelStateWithNoChildren();
- void parallelStateTransition();
- void parallelStateAssignmentsDone();
- void nestedRestoreProperties();
- void nestedRestoreProperties2();
-
- void simpleAnimation();
- void twoAnimations();
- void twoAnimatedTransitions();
- void playAnimationTwice();
- void nestedTargetStateForAnimation();
- void propertiesAssignedSignalTransitionsReuseAnimationGroup();
- void animatedGlobalRestoreProperty();
- void specificTargetValueOfAnimation();
-
- void addDefaultAnimation();
- void addDefaultAnimationWithUnusedAnimation();
- void removeDefaultAnimation();
- void overrideDefaultAnimationWithSpecific();
-
-// void addDefaultAnimationForSource();
-// void addDefaultAnimationForTarget();
-// void removeDefaultAnimationForSource();
-// void removeDefaultAnimationForTarget();
-// void overrideDefaultAnimationWithSource();
-// void overrideDefaultAnimationWithTarget();
-// void overrideDefaultSourceAnimationWithSpecific();
-// void overrideDefaultTargetAnimationWithSpecific();
-// void overrideDefaultTargetAnimationWithSource();
-
- void nestedStateMachines();
- void goToState();
-
- void task260403_clonedSignals();
- void postEventFromOtherThread();
- void eventFilterForApplication();
- void eventClassesExported();
- void stopInTransitionToFinalState();
- void stopInEventTest_data();
- void stopInEventTest();
-};
-
-tst_QStateMachine::tst_QStateMachine()
-{
-}
-
-tst_QStateMachine::~tst_QStateMachine()
-{
-}
-
-class TestState : public QState
-{
-public:
- enum Event {
- Entry,
- Exit
- };
- TestState(QState *parent)
- : QState(parent) {}
- QList<QPair<int, Event> > events;
-protected:
- virtual void onEntry(QEvent *) {
- events.append(qMakePair(globalTick++, Entry));
- }
- virtual void onExit(QEvent *) {
- events.append(qMakePair(globalTick++, Exit));
- }
-};
-
-class TestTransition : public QAbstractTransition
-{
-public:
- TestTransition(QAbstractState *target)
- : QAbstractTransition()
- { setTargetState(target); }
- QList<int> triggers;
-protected:
- virtual bool eventTest(QEvent *) {
- return true;
- }
- virtual void onTransition(QEvent *) {
- triggers.append(globalTick++);
- }
-};
-
-void tst_QStateMachine::init()
-{
-}
-
-void tst_QStateMachine::cleanup()
-{
-}
-
-class EventTransition : public QAbstractTransition
-{
-public:
- EventTransition(QEvent::Type type, QAbstractState *target, QState *parent = 0)
- : QAbstractTransition(parent), m_type(type)
- { setTargetState(target); }
-protected:
- virtual bool eventTest(QEvent *e) {
- return (e->type() == m_type);
- }
- virtual void onTransition(QEvent *) {}
-private:
- QEvent::Type m_type;
-};
-
-void tst_QStateMachine::transitionToRootState()
-{
- QStateMachine machine;
- machine.setObjectName("machine");
-
- QState *initialState = new QState();
- initialState->setObjectName("initial");
- machine.addState(initialState);
- machine.setInitialState(initialState);
-
- QAbstractTransition *trans = new EventTransition(QEvent::User, &machine);
- initialState->addTransition(trans);
- QCOMPARE(trans->sourceState(), initialState);
- QCOMPARE(trans->targetState(), static_cast<QAbstractState *>(&machine));
-
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(initialState));
-
- machine.postEvent(new QEvent(QEvent::User));
- QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: No common ancestor for targets and source of transition from state 'initial'");
- QCoreApplication::processEvents();
- QVERIFY(machine.configuration().isEmpty());
- QVERIFY(!machine.isRunning());
-}
-
-void tst_QStateMachine::transitionFromRootState()
-{
- QStateMachine machine;
- QState *root = &machine;
- QState *s1 = new QState(root);
- EventTransition *trans = new EventTransition(QEvent::User, s1);
- root->addTransition(trans);
- QCOMPARE(trans->sourceState(), root);
- QCOMPARE(trans->targetState(), static_cast<QAbstractState *>(s1));
-}
-
-void tst_QStateMachine::transitionEntersParent()
-{
- QStateMachine machine;
-
- QObject *entryController = new QObject(&machine);
- entryController->setObjectName("entryController");
- entryController->setProperty("greatGrandParentEntered", false);
- entryController->setProperty("grandParentEntered", false);
- entryController->setProperty("parentEntered", false);
- entryController->setProperty("stateEntered", false);
-
- QState *greatGrandParent = new QState();
- greatGrandParent->setObjectName("grandParent");
- greatGrandParent->assignProperty(entryController, "greatGrandParentEntered", true);
- machine.addState(greatGrandParent);
- machine.setInitialState(greatGrandParent);
-
- QState *grandParent = new QState(greatGrandParent);
- grandParent->setObjectName("grandParent");
- grandParent->assignProperty(entryController, "grandParentEntered", true);
-
- QState *parent = new QState(grandParent);
- parent->setObjectName("parent");
- parent->assignProperty(entryController, "parentEntered", true);
-
- QState *state = new QState(parent);
- state->setObjectName("state");
- state->assignProperty(entryController, "stateEntered", true);
-
- QState *initialStateOfGreatGrandParent = new QState(greatGrandParent);
- initialStateOfGreatGrandParent->setObjectName("initialStateOfGreatGrandParent");
- greatGrandParent->setInitialState(initialStateOfGreatGrandParent);
-
- initialStateOfGreatGrandParent->addTransition(new EventTransition(QEvent::User, state));
-
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), true);
- QCOMPARE(entryController->property("grandParentEntered").toBool(), false);
- QCOMPARE(entryController->property("parentEntered").toBool(), false);
- QCOMPARE(entryController->property("stateEntered").toBool(), false);
- QCOMPARE(machine.configuration().count(), 2);
- QVERIFY(machine.configuration().contains(greatGrandParent));
- QVERIFY(machine.configuration().contains(initialStateOfGreatGrandParent));
-
- entryController->setProperty("greatGrandParentEntered", false);
- entryController->setProperty("grandParentEntered", false);
- entryController->setProperty("parentEntered", false);
- entryController->setProperty("stateEntered", false);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), false);
- QCOMPARE(entryController->property("grandParentEntered").toBool(), true);
- QCOMPARE(entryController->property("parentEntered").toBool(), true);
- QCOMPARE(entryController->property("stateEntered").toBool(), true);
- QCOMPARE(machine.configuration().count(), 4);
- QVERIFY(machine.configuration().contains(greatGrandParent));
- QVERIFY(machine.configuration().contains(grandParent));
- QVERIFY(machine.configuration().contains(parent));
- QVERIFY(machine.configuration().contains(state));
-}
-
-void tst_QStateMachine::defaultErrorState()
-{
- QStateMachine machine;
- QCOMPARE(machine.errorState(), reinterpret_cast<QAbstractState *>(0));
-
- QState *brokenState = new QState();
- brokenState->setObjectName("MyInitialState");
-
- machine.addState(brokenState);
- machine.setInitialState(brokenState);
-
- QState *childState = new QState(brokenState);
- childState->setObjectName("childState");
-
- QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'MyInitialState'");
-
- // initialState has no initial state
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
- QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'MyInitialState'"));
- QCOMPARE(machine.isRunning(), false);
-}
-
-class CustomErrorState: public QState
-{
-public:
- CustomErrorState(QStateMachine *machine, QState *parent = 0)
- : QState(parent), error(QStateMachine::NoError), m_machine(machine)
- {
- }
-
- void onEntry(QEvent *)
- {
- error = m_machine->error();
- errorString = m_machine->errorString();
- }
-
- QStateMachine::Error error;
- QString errorString;
-
-private:
- QStateMachine *m_machine;
-};
-
-void tst_QStateMachine::customGlobalErrorState()
-{
- QStateMachine machine;
-
- CustomErrorState *customErrorState = new CustomErrorState(&machine);
- customErrorState->setObjectName("customErrorState");
- machine.addState(customErrorState);
- machine.setErrorState(customErrorState);
-
- QState *initialState = new QState();
- initialState->setObjectName("initialState");
- machine.addState(initialState);
- machine.setInitialState(initialState);
-
- QState *brokenState = new QState();
- brokenState->setObjectName("brokenState");
- machine.addState(brokenState);
- QState *childState = new QState(brokenState);
- childState->setObjectName("childState");
-
- initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.errorState(), static_cast<QAbstractState*>(customErrorState));
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(initialState));
-
- machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(initialState));
-
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), true);
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(customErrorState));
- QCOMPARE(customErrorState->error, QStateMachine::NoInitialStateError);
- QCOMPARE(customErrorState->errorString, QString::fromLatin1("Missing initial state in compound state 'brokenState'"));
- QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
- QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'brokenState'"));
-}
-
-void tst_QStateMachine::customLocalErrorStateInBrokenState()
-{
- QStateMachine machine;
- CustomErrorState *customErrorState = new CustomErrorState(&machine);
- machine.addState(customErrorState);
-
- QState *initialState = new QState();
- initialState->setObjectName("initialState");
- machine.addState(initialState);
- machine.setInitialState(initialState);
-
- QState *brokenState = new QState();
- brokenState->setObjectName("brokenState");
- machine.addState(brokenState);
- brokenState->setErrorState(customErrorState);
-
- QState *childState = new QState(brokenState);
- childState->setObjectName("childState");
-
- initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), true);
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(customErrorState));
- QCOMPARE(customErrorState->error, QStateMachine::NoInitialStateError);
-}
-
-void tst_QStateMachine::customLocalErrorStateInOtherState()
-{
- QStateMachine machine;
- CustomErrorState *customErrorState = new CustomErrorState(&machine);
- machine.addState(customErrorState);
-
- QState *initialState = new QState();
- initialState->setObjectName("initialState");
- QTest::ignoreMessage(QtWarningMsg, "QState::setErrorState: error state cannot belong to a different state machine");
- initialState->setErrorState(customErrorState);
- machine.addState(initialState);
- machine.setInitialState(initialState);
-
- QState *brokenState = new QState();
- brokenState->setObjectName("brokenState");
-
- machine.addState(brokenState);
-
- QState *childState = new QState(brokenState);
- childState->setObjectName("childState");
-
- initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
-
- QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'brokenState'");
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), false);
-}
-
-void tst_QStateMachine::customLocalErrorStateInParentOfBrokenState()
-{
- QStateMachine machine;
- CustomErrorState *customErrorState = new CustomErrorState(&machine);
- machine.addState(customErrorState);
-
- QState *initialState = new QState();
- initialState->setObjectName("initialState");
- machine.addState(initialState);
- machine.setInitialState(initialState);
-
- QState *parentOfBrokenState = new QState();
- machine.addState(parentOfBrokenState);
- parentOfBrokenState->setObjectName("parentOfBrokenState");
- parentOfBrokenState->setErrorState(customErrorState);
-
- QState *brokenState = new QState(parentOfBrokenState);
- brokenState->setObjectName("brokenState");
- parentOfBrokenState->setInitialState(brokenState);
-
- QState *childState = new QState(brokenState);
- childState->setObjectName("childState");
-
- initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), true);
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(customErrorState));
-}
-
-void tst_QStateMachine::customLocalErrorStateOverridesParent()
-{
- QStateMachine machine;
- CustomErrorState *customErrorStateForParent = new CustomErrorState(&machine);
- machine.addState(customErrorStateForParent);
-
- CustomErrorState *customErrorStateForBrokenState = new CustomErrorState(&machine);
- machine.addState(customErrorStateForBrokenState);
-
- QState *initialState = new QState();
- initialState->setObjectName("initialState");
- machine.addState(initialState);
- machine.setInitialState(initialState);
-
- QState *parentOfBrokenState = new QState();
- machine.addState(parentOfBrokenState);
- parentOfBrokenState->setObjectName("parentOfBrokenState");
- parentOfBrokenState->setErrorState(customErrorStateForParent);
-
- QState *brokenState = new QState(parentOfBrokenState);
- brokenState->setObjectName("brokenState");
- brokenState->setErrorState(customErrorStateForBrokenState);
- parentOfBrokenState->setInitialState(brokenState);
-
- QState *childState = new QState(brokenState);
- childState->setObjectName("childState");
-
- initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(customErrorStateForBrokenState));
- QCOMPARE(customErrorStateForBrokenState->error, QStateMachine::NoInitialStateError);
- QCOMPARE(customErrorStateForParent->error, QStateMachine::NoError);
-}
-
-void tst_QStateMachine::errorStateHasChildren()
-{
- QStateMachine machine;
- CustomErrorState *customErrorState = new CustomErrorState(&machine);
- customErrorState->setObjectName("customErrorState");
- machine.addState(customErrorState);
-
- machine.setErrorState(customErrorState);
-
- QState *childOfErrorState = new QState(customErrorState);
- childOfErrorState->setObjectName("childOfErrorState");
- customErrorState->setInitialState(childOfErrorState);
-
- QState *initialState = new QState();
- initialState->setObjectName("initialState");
- machine.addState(initialState);
- machine.setInitialState(initialState);
-
- QState *brokenState = new QState();
- brokenState->setObjectName("brokenState");
- machine.addState(brokenState);
-
- QState *childState = new QState(brokenState);
- childState->setObjectName("childState");
-
- initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), true);
- QCOMPARE(machine.configuration().count(), 2);
- QVERIFY(machine.configuration().contains(customErrorState));
- QVERIFY(machine.configuration().contains(childOfErrorState));
-}
-
-
-void tst_QStateMachine::errorStateHasErrors()
-{
- QStateMachine machine;
- CustomErrorState *customErrorState = new CustomErrorState(&machine);
- customErrorState->setObjectName("customErrorState");
- machine.addState(customErrorState);
-
- machine.setErrorState(customErrorState);
-
- QState *childOfErrorState = new QState(customErrorState);
- childOfErrorState->setObjectName("childOfErrorState");
-
- QState *initialState = new QState();
- initialState->setObjectName("initialState");
- machine.addState(initialState);
- machine.setInitialState(initialState);
-
- QState *brokenState = new QState();
- brokenState->setObjectName("brokenState");
- machine.addState(brokenState);
-
- QState *childState = new QState(brokenState);
- childState->setObjectName("childState");
-
- initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
- QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'customErrorState'");
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), false);
- QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
- QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'customErrorState'"));
-}
-
-void tst_QStateMachine::errorStateIsRootState()
-{
- QStateMachine machine;
- QTest::ignoreMessage(QtWarningMsg, "QStateMachine::setErrorState: root state cannot be error state");
- machine.setErrorState(&machine);
-
- QState *initialState = new QState();
- initialState->setObjectName("initialState");
- machine.addState(initialState);
- machine.setInitialState(initialState);
-
- QState *brokenState = new QState();
- brokenState->setObjectName("brokenState");
- machine.addState(brokenState);
-
- QState *childState = new QState(brokenState);
- childState->setObjectName("childState");
-
- initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
- QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'brokenState'");
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), false);
-}
-
-void tst_QStateMachine::errorStateEntersParentFirst()
-{
- QStateMachine machine;
-
- QObject *entryController = new QObject(&machine);
- entryController->setObjectName("entryController");
- entryController->setProperty("greatGrandParentEntered", false);
- entryController->setProperty("grandParentEntered", false);
- entryController->setProperty("parentEntered", false);
- entryController->setProperty("errorStateEntered", false);
-
- QState *greatGrandParent = new QState();
- greatGrandParent->setObjectName("greatGrandParent");
- greatGrandParent->assignProperty(entryController, "greatGrandParentEntered", true);
- machine.addState(greatGrandParent);
- machine.setInitialState(greatGrandParent);
-
- QState *grandParent = new QState(greatGrandParent);
- grandParent->setObjectName("grandParent");
- grandParent->assignProperty(entryController, "grandParentEntered", true);
-
- QState *parent = new QState(grandParent);
- parent->setObjectName("parent");
- parent->assignProperty(entryController, "parentEntered", true);
-
- QState *errorState = new QState(parent);
- errorState->setObjectName("errorState");
- errorState->assignProperty(entryController, "errorStateEntered", true);
- machine.setErrorState(errorState);
-
- QState *initialStateOfGreatGrandParent = new QState(greatGrandParent);
- initialStateOfGreatGrandParent->setObjectName("initialStateOfGreatGrandParent");
- greatGrandParent->setInitialState(initialStateOfGreatGrandParent);
-
- QState *brokenState = new QState(greatGrandParent);
- brokenState->setObjectName("brokenState");
-
- QState *childState = new QState(brokenState);
- childState->setObjectName("childState");
-
- initialStateOfGreatGrandParent->addTransition(new EventTransition(QEvent::User, brokenState));
-
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), true);
- QCOMPARE(entryController->property("grandParentEntered").toBool(), false);
- QCOMPARE(entryController->property("parentEntered").toBool(), false);
- QCOMPARE(entryController->property("errorStateEntered").toBool(), false);
- QCOMPARE(machine.configuration().count(), 2);
- QVERIFY(machine.configuration().contains(greatGrandParent));
- QVERIFY(machine.configuration().contains(initialStateOfGreatGrandParent));
-
- entryController->setProperty("greatGrandParentEntered", false);
- entryController->setProperty("grandParentEntered", false);
- entryController->setProperty("parentEntered", false);
- entryController->setProperty("errorStateEntered", false);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), false);
- QCOMPARE(entryController->property("grandParentEntered").toBool(), true);
- QCOMPARE(entryController->property("parentEntered").toBool(), true);
- QCOMPARE(entryController->property("errorStateEntered").toBool(), true);
- QCOMPARE(machine.configuration().count(), 4);
- QVERIFY(machine.configuration().contains(greatGrandParent));
- QVERIFY(machine.configuration().contains(grandParent));
- QVERIFY(machine.configuration().contains(parent));
- QVERIFY(machine.configuration().contains(errorState));
-}
-
-void tst_QStateMachine::customErrorStateIsNull()
-{
- QStateMachine machine;
- machine.setErrorState(0);
-
- QState *initialState = new QState();
- machine.addState(initialState);
- machine.setInitialState(initialState);
-
- QState *brokenState = new QState();
- machine.addState(brokenState);
-
- new QState(brokenState);
- initialState->addTransition(new EventTransition(QEvent::User, brokenState));
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state ''");
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.errorState(), reinterpret_cast<QAbstractState *>(0));
- QCOMPARE(machine.isRunning(), false);
-}
-
-void tst_QStateMachine::clearError()
-{
- QStateMachine machine;
- machine.setErrorState(new QState(&machine)); // avoid warnings
-
- QState *brokenState = new QState(&machine);
- brokenState->setObjectName("brokenState");
- machine.setInitialState(brokenState);
- new QState(brokenState);
-
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), true);
- QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
- QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'brokenState'"));
-
- machine.clearError();
-
- QCOMPARE(machine.error(), QStateMachine::NoError);
- QVERIFY(machine.errorString().isEmpty());
-}
-
-void tst_QStateMachine::historyStateAsInitialState()
-{
- QStateMachine machine;
-
- QHistoryState *hs = new QHistoryState(&machine);
- machine.setInitialState(hs);
-
- QState *s1 = new QState(&machine);
- hs->setDefaultState(s1);
-
- QState *s2 = new QState(&machine);
-
- QHistoryState *s2h = new QHistoryState(s2);
- s2->setInitialState(s2h);
-
- QState *s21 = new QState(s2);
- s2h->setDefaultState(s21);
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
-
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().size(), 2);
- QVERIFY(machine.configuration().contains(s2));
- QVERIFY(machine.configuration().contains(s21));
-}
-
-void tst_QStateMachine::historyStateHasNowhereToGo()
-{
- QStateMachine machine;
-
- QState *initialState = new QState(&machine);
- machine.setInitialState(initialState);
- machine.setErrorState(new QState(&machine)); // avoid warnings
-
- QState *brokenState = new QState(&machine);
- brokenState->setObjectName("brokenState");
- brokenState->setInitialState(new QState(brokenState));
-
- QHistoryState *historyState = new QHistoryState(brokenState);
- historyState->setObjectName("historyState");
- initialState->addTransition(new EventTransition(QEvent::User, historyState));
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), true);
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(machine.errorState()));
- QCOMPARE(machine.error(), QStateMachine::NoDefaultStateInHistoryStateError);
- QCOMPARE(machine.errorString(), QString::fromLatin1("Missing default state in history state 'historyState'"));
-}
-
-void tst_QStateMachine::historyStateAfterRestart()
-{
- // QTBUG-8842
- QStateMachine machine;
-
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
- QState *s2 = new QState(&machine);
- QState *s21 = new QState(s2);
- QState *s22 = new QState(s2);
- QHistoryState *s2h = new QHistoryState(s2);
- s2h->setDefaultState(s21);
- s1->addTransition(new EventTransition(QEvent::User, s2h));
- s21->addTransition(new EventTransition(QEvent::User, s22));
- s2->addTransition(new EventTransition(QEvent::User, s1));
-
- for (int x = 0; x < 2; ++x) {
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 1);
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- // s1 -> s2h -> s21 (default state)
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().count(), 2);
- QVERIFY(machine.configuration().contains(s2));
- // This used to fail on the 2nd run because the
- // history had not been cleared.
- QVERIFY(machine.configuration().contains(s21));
-
- // s21 -> s22
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().count(), 2);
- QVERIFY(machine.configuration().contains(s2));
- QVERIFY(machine.configuration().contains(s22));
-
- // s2 -> s1 (s22 saved in s2h)
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- // s1 -> s2h -> s22 (saved state)
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().count(), 2);
- QVERIFY(machine.configuration().contains(s2));
- QVERIFY(machine.configuration().contains(s22));
-
- QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
- machine.stop();
- QTRY_COMPARE(stoppedSpy.count(), 1);
- }
-}
-
-void tst_QStateMachine::brokenStateIsNeverEntered()
-{
- QStateMachine machine;
-
- QObject *entryController = new QObject(&machine);
- entryController->setProperty("brokenStateEntered", false);
- entryController->setProperty("childStateEntered", false);
- entryController->setProperty("errorStateEntered", false);
-
- QState *initialState = new QState(&machine);
- machine.setInitialState(initialState);
-
- QState *errorState = new QState(&machine);
- errorState->assignProperty(entryController, "errorStateEntered", true);
- machine.setErrorState(errorState);
-
- QState *brokenState = new QState(&machine);
- brokenState->assignProperty(entryController, "brokenStateEntered", true);
- brokenState->setObjectName("brokenState");
-
- QState *childState = new QState(brokenState);
- childState->assignProperty(entryController, "childStateEntered", true);
-
- initialState->addTransition(new EventTransition(QEvent::User, brokenState));
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(entryController->property("errorStateEntered").toBool(), true);
- QCOMPARE(entryController->property("brokenStateEntered").toBool(), false);
- QCOMPARE(entryController->property("childStateEntered").toBool(), false);
-}
-
-void tst_QStateMachine::transitionToStateNotInGraph()
-{
- QStateMachine machine;
-
- QState *initialState = new QState(&machine);
- initialState->setObjectName("initialState");
- machine.setInitialState(initialState);
-
- QState independentState;
- independentState.setObjectName("independentState");
- initialState->addTransition(&independentState);
-
- machine.start();
- QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: No common ancestor for targets and source of transition from state 'initialState'");
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), false);
-}
-
-void tst_QStateMachine::customErrorStateNotInGraph()
-{
- QStateMachine machine;
-
- QState errorState;
- errorState.setObjectName("errorState");
- QTest::ignoreMessage(QtWarningMsg, "QState::setErrorState: error state cannot belong to a different state machine");
- machine.setErrorState(&errorState);
- QCOMPARE(machine.errorState(), reinterpret_cast<QAbstractState *>(0));
-
- QState *initialBrokenState = new QState(&machine);
- initialBrokenState->setObjectName("initialBrokenState");
- machine.setInitialState(initialBrokenState);
- new QState(initialBrokenState);
-
- machine.start();
- QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'initialBrokenState'");
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), false);
-}
-
-void tst_QStateMachine::restoreProperties()
-{
- QStateMachine machine;
- QCOMPARE(machine.globalRestorePolicy(), QStateMachine::DontRestoreProperties);
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
-
- QObject *object = new QObject(&machine);
- object->setProperty("a", 1);
- object->setProperty("b", 2);
-
- QState *S1 = new QState();
- S1->setObjectName("S1");
- S1->assignProperty(object, "a", 3);
- machine.addState(S1);
-
- QState *S2 = new QState();
- S2->setObjectName("S2");
- S2->assignProperty(object, "b", 5);
- machine.addState(S2);
-
- QState *S3 = new QState();
- S3->setObjectName("S3");
- machine.addState(S3);
-
- QFinalState *S4 = new QFinalState();
- machine.addState(S4);
-
- S1->addTransition(new EventTransition(QEvent::User, S2));
- S2->addTransition(new EventTransition(QEvent::User, S3));
- S3->addTransition(S4);
-
- machine.setInitialState(S1);
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(object->property("a").toInt(), 3);
- QCOMPARE(object->property("b").toInt(), 2);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(object->property("a").toInt(), 1);
- QCOMPARE(object->property("b").toInt(), 5);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(object->property("a").toInt(), 1);
- QCOMPARE(object->property("b").toInt(), 2);
-}
-
-void tst_QStateMachine::rootState()
-{
- QStateMachine machine;
- QCOMPARE(qobject_cast<QState*>(machine.parentState()), (QState*)0);
- QCOMPARE(machine.machine(), (QStateMachine*)0);
-
- QState *s1 = new QState(&machine);
- QCOMPARE(s1->parentState(), static_cast<QState*>(&machine));
-
- QState *s2 = new QState();
- s2->setParent(&machine);
- QCOMPARE(s2->parentState(), static_cast<QState*>(&machine));
-}
-
-void tst_QStateMachine::machineWithParent()
-{
- QObject object;
- QStateMachine *machine = new QStateMachine(&object);
- QCOMPARE(machine->parent(), &object);
- QCOMPARE(machine->parentState(), static_cast<QState*>(0));
-}
-
-void tst_QStateMachine::addAndRemoveState()
-{
-#ifdef QT_BUILD_INTERNAL
- QStateMachine machine;
- QStatePrivate *root_d = QStatePrivate::get(&machine);
- QCOMPARE(root_d->childStates().size(), 0);
-
- QTest::ignoreMessage(QtWarningMsg, "QStateMachine::addState: cannot add null state");
- machine.addState(0);
-
- QState *s1 = new QState();
- QCOMPARE(s1->parentState(), (QState*)0);
- QCOMPARE(s1->machine(), (QStateMachine*)0);
- machine.addState(s1);
- QCOMPARE(s1->machine(), static_cast<QStateMachine*>(&machine));
- QCOMPARE(s1->parentState(), static_cast<QState*>(&machine));
- QCOMPARE(root_d->childStates().size(), 1);
- QCOMPARE(root_d->childStates().at(0), (QAbstractState*)s1);
-
- QTest::ignoreMessage(QtWarningMsg, "QStateMachine::addState: state has already been added to this machine");
- machine.addState(s1);
-
- QState *s2 = new QState();
- QCOMPARE(s2->parentState(), (QState*)0);
- machine.addState(s2);
- QCOMPARE(s2->parentState(), static_cast<QState*>(&machine));
- QCOMPARE(root_d->childStates().size(), 2);
- QCOMPARE(root_d->childStates().at(0), (QAbstractState*)s1);
- QCOMPARE(root_d->childStates().at(1), (QAbstractState*)s2);
-
- QTest::ignoreMessage(QtWarningMsg, "QStateMachine::addState: state has already been added to this machine");
- machine.addState(s2);
-
- machine.removeState(s1);
- QCOMPARE(s1->parentState(), (QState*)0);
- QCOMPARE(root_d->childStates().size(), 1);
- QCOMPARE(root_d->childStates().at(0), (QAbstractState*)s2);
-
- machine.removeState(s2);
- QCOMPARE(s2->parentState(), (QState*)0);
- QCOMPARE(root_d->childStates().size(), 0);
-
- QTest::ignoreMessage(QtWarningMsg, "QStateMachine::removeState: cannot remove null state");
- machine.removeState(0);
-
- {
- QStateMachine machine2;
- {
- QString warning;
- warning.sprintf("QStateMachine::removeState: state %p's machine (%p) is different from this machine (%p)",
- &machine2, (void*)0, &machine);
- QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
- machine.removeState(&machine2);
- }
- // ### check this behavior
- machine.addState(&machine2);
- QCOMPARE(machine2.parent(), (QObject*)&machine);
- }
-
- delete s1;
- delete s2;
- // ### how to deal with this?
- // machine.removeState(machine.errorState());
-#endif
-}
-
-void tst_QStateMachine::stateEntryAndExit()
-{
- // Two top-level states
- {
- QStateMachine machine;
-
- TestState *s1 = new TestState(&machine);
- QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: cannot add transition to null state");
- s1->addTransition((QAbstractState*)0);
- QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: cannot add null transition");
- s1->addTransition((QAbstractTransition*)0);
- QTest::ignoreMessage(QtWarningMsg, "QState::removeTransition: cannot remove null transition");
- s1->removeTransition((QAbstractTransition*)0);
-
- TestState *s2 = new TestState(&machine);
- QFinalState *s3 = new QFinalState(&machine);
-
- TestTransition *t = new TestTransition(s2);
- QCOMPARE(t->machine(), (QStateMachine*)0);
- QCOMPARE(t->sourceState(), (QState*)0);
- QCOMPARE(t->targetState(), (QAbstractState*)s2);
- QCOMPARE(t->targetStates().size(), 1);
- QCOMPARE(t->targetStates().at(0), (QAbstractState*)s2);
- t->setTargetState(0);
- QCOMPARE(t->targetState(), (QAbstractState*)0);
- QVERIFY(t->targetStates().isEmpty());
- t->setTargetState(s2);
- QCOMPARE(t->targetState(), (QAbstractState*)s2);
- QTest::ignoreMessage(QtWarningMsg, "QAbstractTransition::setTargetStates: target state(s) cannot be null");
- t->setTargetStates(QList<QAbstractState*>() << 0);
- QCOMPARE(t->targetState(), (QAbstractState*)s2);
- t->setTargetStates(QList<QAbstractState*>() << s2);
- QCOMPARE(t->targetState(), (QAbstractState*)s2);
- QCOMPARE(t->targetStates().size(), 1);
- QCOMPARE(t->targetStates().at(0), (QAbstractState*)s2);
- s1->addTransition(t);
- QCOMPARE(t->sourceState(), (QState*)s1);
- QCOMPARE(t->machine(), &machine);
-
- {
- QAbstractTransition *trans = s2->addTransition(s3);
- QVERIFY(trans != 0);
- QCOMPARE(trans->sourceState(), (QState*)s2);
- QCOMPARE(trans->targetState(), (QAbstractState*)s3);
- {
- QString warning;
- warning.sprintf("QState::removeTransition: transition %p's source state (%p) is different from this state (%p)", trans, s2, s1);
- QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
- s1->removeTransition(trans);
- }
- s2->removeTransition(trans);
- QCOMPARE(trans->sourceState(), (QState*)0);
- QCOMPARE(trans->targetState(), (QAbstractState*)s3);
- s2->addTransition(trans);
- QCOMPARE(trans->sourceState(), (QState*)s2);
- }
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s1);
- QCOMPARE(machine.initialState(), (QAbstractState*)s1);
- {
- QString warning;
- warning.sprintf("QState::setInitialState: state %p is not a child of this state (%p)", &machine, &machine);
- QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
- machine.setInitialState(&machine);
- QCOMPARE(machine.initialState(), (QAbstractState*)s1);
- }
- QVERIFY(machine.configuration().isEmpty());
- globalTick = 0;
- QVERIFY(!machine.isRunning());
- QSignalSpy s1EnteredSpy(s1, SIGNAL(entered()));
- QSignalSpy s1ExitedSpy(s1, SIGNAL(exited()));
- QSignalSpy tTriggeredSpy(t, SIGNAL(triggered()));
- QSignalSpy s2EnteredSpy(s2, SIGNAL(entered()));
- QSignalSpy s2ExitedSpy(s2, SIGNAL(exited()));
- machine.start();
-
- QTRY_COMPARE(startedSpy.count(), 1);
- QTRY_COMPARE(finishedSpy.count(), 1);
- QTRY_COMPARE(stoppedSpy.count(), 0);
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(s3));
-
- // s1 is entered
- QCOMPARE(s1->events.count(), 2);
- QCOMPARE(s1->events.at(0).first, 0);
- QCOMPARE(s1->events.at(0).second, TestState::Entry);
- // s1 is exited
- QCOMPARE(s1->events.at(1).first, 1);
- QCOMPARE(s1->events.at(1).second, TestState::Exit);
- // t is triggered
- QCOMPARE(t->triggers.count(), 1);
- QCOMPARE(t->triggers.at(0), 2);
- // s2 is entered
- QCOMPARE(s2->events.count(), 2);
- QCOMPARE(s2->events.at(0).first, 3);
- QCOMPARE(s2->events.at(0).second, TestState::Entry);
- // s2 is exited
- QCOMPARE(s2->events.at(1).first, 4);
- QCOMPARE(s2->events.at(1).second, TestState::Exit);
-
- QCOMPARE(s1EnteredSpy.count(), 1);
- QCOMPARE(s1ExitedSpy.count(), 1);
- QCOMPARE(tTriggeredSpy.count(), 1);
- QCOMPARE(s2EnteredSpy.count(), 1);
- QCOMPARE(s2ExitedSpy.count(), 1);
- }
- // Two top-level states, one has two child states
- {
- QStateMachine machine;
-
- TestState *s1 = new TestState(&machine);
- TestState *s11 = new TestState(s1);
- TestState *s12 = new TestState(s1);
- TestState *s2 = new TestState(&machine);
- QFinalState *s3 = new QFinalState(&machine);
- s1->setInitialState(s11);
- TestTransition *t1 = new TestTransition(s12);
- s11->addTransition(t1);
- TestTransition *t2 = new TestTransition(s2);
- s12->addTransition(t2);
- s2->addTransition(s3);
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s1);
- globalTick = 0;
- machine.start();
-
- QTRY_COMPARE(startedSpy.count(), 1);
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(s3));
-
- // s1 is entered
- QCOMPARE(s1->events.count(), 2);
- QCOMPARE(s1->events.at(0).first, 0);
- QCOMPARE(s1->events.at(0).second, TestState::Entry);
- // s11 is entered
- QCOMPARE(s11->events.count(), 2);
- QCOMPARE(s11->events.at(0).first, 1);
- QCOMPARE(s11->events.at(0).second, TestState::Entry);
- // s11 is exited
- QCOMPARE(s11->events.at(1).first, 2);
- QCOMPARE(s11->events.at(1).second, TestState::Exit);
- // t1 is triggered
- QCOMPARE(t1->triggers.count(), 1);
- QCOMPARE(t1->triggers.at(0), 3);
- // s12 is entered
- QCOMPARE(s12->events.count(), 2);
- QCOMPARE(s12->events.at(0).first, 4);
- QCOMPARE(s12->events.at(0).second, TestState::Entry);
- // s12 is exited
- QCOMPARE(s12->events.at(1).first, 5);
- QCOMPARE(s12->events.at(1).second, TestState::Exit);
- // s1 is exited
- QCOMPARE(s1->events.at(1).first, 6);
- QCOMPARE(s1->events.at(1).second, TestState::Exit);
- // t2 is triggered
- QCOMPARE(t2->triggers.count(), 1);
- QCOMPARE(t2->triggers.at(0), 7);
- // s2 is entered
- QCOMPARE(s2->events.count(), 2);
- QCOMPARE(s2->events.at(0).first, 8);
- QCOMPARE(s2->events.at(0).second, TestState::Entry);
- // s2 is exited
- QCOMPARE(s2->events.at(1).first, 9);
- QCOMPARE(s2->events.at(1).second, TestState::Exit);
- }
-}
-
-void tst_QStateMachine::assignProperty()
-{
- QStateMachine machine;
- QState *s1 = new QState(&machine);
-
- QTest::ignoreMessage(QtWarningMsg, "QState::assignProperty: cannot assign property 'foo' of null object");
- s1->assignProperty(0, "foo", QVariant());
-
- s1->assignProperty(s1, "objectName", "s1");
- QFinalState *s2 = new QFinalState(&machine);
- s1->addTransition(s2);
- machine.setInitialState(s1);
- machine.start();
- QTRY_COMPARE(s1->objectName(), QString::fromLatin1("s1"));
-
- s1->assignProperty(s1, "objectName", "foo");
- machine.start();
- QTRY_COMPARE(s1->objectName(), QString::fromLatin1("foo"));
-
- s1->assignProperty(s1, "noSuchProperty", 123);
- machine.start();
- QTRY_COMPARE(s1->dynamicPropertyNames().size(), 1);
- QCOMPARE(s1->dynamicPropertyNames().at(0), QByteArray("noSuchProperty"));
- QCOMPARE(s1->objectName(), QString::fromLatin1("foo"));
-
- {
- QSignalSpy propertiesAssignedSpy(s1, SIGNAL(propertiesAssigned()));
- machine.start();
- QTRY_COMPARE(propertiesAssignedSpy.count(), 1);
- }
-
- // nested states
- {
- QState *s11 = new QState(s1);
- QString str = QString::fromLatin1("set by nested state");
- s11->assignProperty(s11, "objectName", str);
- s1->setInitialState(s11);
- machine.start();
- QTRY_COMPARE(s11->objectName(), str);
- }
-}
-
-void tst_QStateMachine::assignPropertyWithAnimation()
-{
- // Single animation
- {
- QStateMachine machine;
- QVERIFY(machine.isAnimated());
- machine.setAnimated(false);
- QVERIFY(!machine.isAnimated());
- machine.setAnimated(true);
- QVERIFY(machine.isAnimated());
- QObject obj;
- obj.setProperty("foo", 321);
- obj.setProperty("bar", 654);
- QState *s1 = new QState(&machine);
- s1->assignProperty(&obj, "foo", 123);
- QState *s2 = new QState(&machine);
- s2->assignProperty(&obj, "foo", 456);
- s2->assignProperty(&obj, "bar", 789);
- QAbstractTransition *trans = s1->addTransition(s2);
- QVERIFY(trans->animations().isEmpty());
- QTest::ignoreMessage(QtWarningMsg, "QAbstractTransition::addAnimation: cannot add null animation");
- trans->addAnimation(0);
- QPropertyAnimation anim(&obj, "foo");
- anim.setDuration(250);
- trans->addAnimation(&anim);
- QCOMPARE(trans->animations().size(), 1);
- QCOMPARE(trans->animations().at(0), (QAbstractAnimation*)&anim);
- QCOMPARE(anim.parent(), (QObject*)0);
- QTest::ignoreMessage(QtWarningMsg, "QAbstractTransition::removeAnimation: cannot remove null animation");
- trans->removeAnimation(0);
- trans->removeAnimation(&anim);
- QVERIFY(trans->animations().isEmpty());
- trans->addAnimation(&anim);
- QCOMPARE(trans->animations().size(), 1);
- QCOMPARE(trans->animations().at(0), (QAbstractAnimation*)&anim);
- QFinalState *s3 = new QFinalState(&machine);
- s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
-
- machine.setInitialState(s1);
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(obj.property("foo").toInt(), 456);
- QCOMPARE(obj.property("bar").toInt(), 789);
- }
- // Two animations
- {
- QStateMachine machine;
- QObject obj;
- obj.setProperty("foo", 321);
- obj.setProperty("bar", 654);
- QState *s1 = new QState(&machine);
- s1->assignProperty(&obj, "foo", 123);
- QState *s2 = new QState(&machine);
- s2->assignProperty(&obj, "foo", 456);
- s2->assignProperty(&obj, "bar", 789);
- QAbstractTransition *trans = s1->addTransition(s2);
- QPropertyAnimation anim(&obj, "foo");
- anim.setDuration(150);
- trans->addAnimation(&anim);
- QPropertyAnimation anim2(&obj, "bar");
- anim2.setDuration(150);
- trans->addAnimation(&anim2);
- QFinalState *s3 = new QFinalState(&machine);
- s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
-
- machine.setInitialState(s1);
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(obj.property("foo").toInt(), 456);
- QCOMPARE(obj.property("bar").toInt(), 789);
- }
- // Animation group
- {
- QStateMachine machine;
- QObject obj;
- obj.setProperty("foo", 321);
- obj.setProperty("bar", 654);
- QState *s1 = new QState(&machine);
- s1->assignProperty(&obj, "foo", 123);
- s1->assignProperty(&obj, "bar", 321);
- QState *s2 = new QState(&machine);
- s2->assignProperty(&obj, "foo", 456);
- s2->assignProperty(&obj, "bar", 654);
- s2->assignProperty(&obj, "baz", 789);
- QAbstractTransition *trans = s1->addTransition(s2);
- QSequentialAnimationGroup group;
- group.addAnimation(new QPropertyAnimation(&obj, "foo"));
- group.addAnimation(new QPropertyAnimation(&obj, "bar"));
- trans->addAnimation(&group);
- QFinalState *s3 = new QFinalState(&machine);
- s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
-
- machine.setInitialState(s1);
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(obj.property("foo").toInt(), 456);
- QCOMPARE(obj.property("bar").toInt(), 654);
- QCOMPARE(obj.property("baz").toInt(), 789);
- }
- // Nested states
- {
- QStateMachine machine;
- QObject obj;
- obj.setProperty("foo", 321);
- obj.setProperty("bar", 654);
- QState *s1 = new QState(&machine);
- QCOMPARE(s1->childMode(), QState::ExclusiveStates);
- s1->setChildMode(QState::ParallelStates);
- QCOMPARE(s1->childMode(), QState::ParallelStates);
- s1->setChildMode(QState::ExclusiveStates);
- QCOMPARE(s1->childMode(), QState::ExclusiveStates);
- QCOMPARE(s1->initialState(), (QAbstractState*)0);
- s1->setObjectName("s1");
- s1->assignProperty(&obj, "foo", 123);
- s1->assignProperty(&obj, "bar", 456);
- QState *s2 = new QState(&machine);
- s2->setObjectName("s2");
- s2->assignProperty(&obj, "foo", 321);
- QState *s21 = new QState(s2);
- s21->setObjectName("s21");
- s21->assignProperty(&obj, "bar", 654);
- QState *s22 = new QState(s2);
- s22->setObjectName("s22");
- s22->assignProperty(&obj, "bar", 789);
- s2->setInitialState(s21);
- QCOMPARE(s2->initialState(), (QAbstractState*)s21);
-
- QAbstractTransition *trans = s1->addTransition(s2);
- QPropertyAnimation anim(&obj, "foo");
- anim.setDuration(500);
- trans->addAnimation(&anim);
- QPropertyAnimation anim2(&obj, "bar");
- anim2.setDuration(250);
- trans->addAnimation(&anim2);
-
- s21->addTransition(s21, SIGNAL(propertiesAssigned()), s22);
-
- QFinalState *s3 = new QFinalState(&machine);
- s22->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
-
- machine.setInitialState(s1);
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(obj.property("foo").toInt(), 321);
- QCOMPARE(obj.property("bar").toInt(), 789);
- }
- // Aborted animation
- {
- QStateMachine machine;
- SignalEmitter emitter;
- QObject obj;
- obj.setProperty("foo", 321);
- obj.setProperty("bar", 654);
- QState *group = new QState(&machine);
- QState *s1 = new QState(group);
- group->setInitialState(s1);
- s1->assignProperty(&obj, "foo", 123);
- QState *s2 = new QState(group);
- s2->assignProperty(&obj, "foo", 456);
- s2->assignProperty(&obj, "bar", 789);
- QAbstractTransition *trans = s1->addTransition(&emitter, SIGNAL(signalWithNoArg()), s2);
- QPropertyAnimation anim(&obj, "foo");
- anim.setDuration(8000);
- trans->addAnimation(&anim);
- QPropertyAnimation anim2(&obj, "bar");
- anim2.setDuration(8000);
- trans->addAnimation(&anim2);
- QState *s3 = new QState(group);
- s3->assignProperty(&obj, "foo", 911);
- s2->addTransition(&emitter, SIGNAL(signalWithNoArg()), s3);
-
- machine.setInitialState(group);
- machine.start();
- QTRY_COMPARE(machine.configuration().contains(s1), true);
- QSignalSpy propertiesAssignedSpy(s2, SIGNAL(propertiesAssigned()));
- emitter.emitSignalWithNoArg();
- QTRY_COMPARE(machine.configuration().contains(s2), true);
- QVERIFY(propertiesAssignedSpy.isEmpty());
- emitter.emitSignalWithNoArg(); // will cause animations from s1-->s2 to abort
- QTRY_COMPARE(machine.configuration().contains(s3), true);
- QVERIFY(propertiesAssignedSpy.isEmpty());
- QCOMPARE(obj.property("foo").toInt(), 911);
- QCOMPARE(obj.property("bar").toInt(), 789);
- }
-}
-
-struct StringEvent : public QEvent
-{
-public:
- StringEvent(const QString &val)
- : QEvent(QEvent::Type(QEvent::User+2)),
- value(val) {}
-
- QString value;
-};
-
-class StringTransition : public QAbstractTransition
-{
-public:
- StringTransition(const QString &value, QAbstractState *target)
- : QAbstractTransition(), m_value(value)
- { setTargetState(target); }
-
-protected:
- virtual bool eventTest(QEvent *e)
- {
- if (e->type() != QEvent::Type(QEvent::User+2))
- return false;
- StringEvent *se = static_cast<StringEvent*>(e);
- return (m_value == se->value) && (!m_cond.isValid() || (m_cond.indexIn(m_value) != -1));
- }
- virtual void onTransition(QEvent *) {}
-
-private:
- QString m_value;
- QRegExp m_cond;
-};
-
-class StringEventPoster : public QState
-{
-public:
- StringEventPoster(const QString &value, QState *parent = 0)
- : QState(parent), m_value(value), m_delay(-1) {}
-
- void setString(const QString &value)
- { m_value = value; }
- void setDelay(int delay)
- { m_delay = delay; }
-
-protected:
- virtual void onEntry(QEvent *)
- {
- if (m_delay == -1)
- machine()->postEvent(new StringEvent(m_value));
- else
- machine()->postDelayedEvent(new StringEvent(m_value), m_delay);
- }
- virtual void onExit(QEvent *) {}
-
-private:
- QString m_value;
- int m_delay;
-};
-
-void tst_QStateMachine::postEvent()
-{
- for (int x = 0; x < 2; ++x) {
- QStateMachine machine;
- {
- QEvent e(QEvent::None);
- QTest::ignoreMessage(QtWarningMsg, "QStateMachine::postEvent: cannot post event when the state machine is not running");
- machine.postEvent(&e);
- }
- StringEventPoster *s1 = new StringEventPoster("a");
- if (x == 1)
- s1->setDelay(100);
- QFinalState *s2 = new QFinalState;
- s1->addTransition(new StringTransition("a", s2));
- machine.addState(s1);
- machine.addState(s2);
- machine.setInitialState(s1);
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
-
- s1->setString("b");
- QFinalState *s3 = new QFinalState();
- machine.addState(s3);
- s1->addTransition(new StringTransition("b", s3));
- finishedSpy.clear();
- machine.start();
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s3));
- }
-}
-
-void tst_QStateMachine::cancelDelayedEvent()
-{
- QStateMachine machine;
- QTest::ignoreMessage(QtWarningMsg, "QStateMachine::cancelDelayedEvent: the machine is not running");
- QVERIFY(!machine.cancelDelayedEvent(-1));
-
- QState *s1 = new QState(&machine);
- QFinalState *s2 = new QFinalState(&machine);
- s1->addTransition(new StringTransition("a", s2));
- machine.setInitialState(s1);
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- int id1 = machine.postDelayedEvent(new StringEvent("c"), 50000);
- QVERIFY(id1 != -1);
- int id2 = machine.postDelayedEvent(new StringEvent("b"), 25000);
- QVERIFY(id2 != -1);
- QVERIFY(id2 != id1);
- int id3 = machine.postDelayedEvent(new StringEvent("a"), 100);
- QVERIFY(id3 != -1);
- QVERIFY(id3 != id2);
- QVERIFY(machine.cancelDelayedEvent(id1));
- QVERIFY(!machine.cancelDelayedEvent(id1));
- QVERIFY(machine.cancelDelayedEvent(id2));
- QVERIFY(!machine.cancelDelayedEvent(id2));
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
-}
-
-void tst_QStateMachine::postDelayedEventAndStop()
-{
- QStateMachine machine;
- QState *s1 = new QState(&machine);
- QFinalState *s2 = new QFinalState(&machine);
- s1->addTransition(new StringTransition("a", s2));
- machine.setInitialState(s1);
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- int id1 = machine.postDelayedEvent(new StringEvent("a"), 0);
- QVERIFY(id1 != -1);
- QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
- machine.stop();
- QTRY_COMPARE(stoppedSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 2);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- int id2 = machine.postDelayedEvent(new StringEvent("a"), 1000);
- QVERIFY(id2 != -1);
- machine.stop();
- QTRY_COMPARE(stoppedSpy.count(), 2);
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 3);
- QTestEventLoop::instance().enterLoop(2);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-}
-
-void tst_QStateMachine::stopAndPostEvent()
-{
- QStateMachine machine;
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 1);
- QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
- machine.stop();
- QCOMPARE(stoppedSpy.count(), 0);
- machine.postEvent(new QEvent(QEvent::User));
- QTRY_COMPARE(stoppedSpy.count(), 1);
- QCoreApplication::processEvents();
-}
-
-void tst_QStateMachine::stateFinished()
-{
- QStateMachine machine;
- QState *s1 = new QState(&machine);
- QState *s1_1 = new QState(s1);
- QFinalState *s1_2 = new QFinalState(s1);
- s1_1->addTransition(s1_2);
- s1->setInitialState(s1_1);
- QFinalState *s2 = new QFinalState(&machine);
- s1->addTransition(s1, SIGNAL(finished()), s2);
- machine.setInitialState(s1);
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
-}
-
-void tst_QStateMachine::parallelStates()
-{
- QStateMachine machine;
-
- QState *s1 = new QState(QState::ParallelStates);
- QCOMPARE(s1->childMode(), QState::ParallelStates);
- QState *s1_1 = new QState(s1);
- QState *s1_1_1 = new QState(s1_1);
- QFinalState *s1_1_f = new QFinalState(s1_1);
- s1_1_1->addTransition(s1_1_f);
- s1_1->setInitialState(s1_1_1);
- QState *s1_2 = new QState(s1);
- QState *s1_2_1 = new QState(s1_2);
- QFinalState *s1_2_f = new QFinalState(s1_2);
- s1_2_1->addTransition(s1_2_f);
- s1_2->setInitialState(s1_2_1);
- {
- QString warning;
- warning.sprintf("QState::setInitialState: ignoring attempt to set initial state of parallel state group %p", s1);
- QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
- s1->setInitialState(0);
- }
- machine.addState(s1);
-
- QFinalState *s2 = new QFinalState();
- machine.addState(s2);
-
- s1->addTransition(s1, SIGNAL(finished()), s2);
-
- machine.setInitialState(s1);
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
-}
-
-void tst_QStateMachine::parallelRootState()
-{
- QStateMachine machine;
- QState *root = &machine;
- QCOMPARE(root->childMode(), QState::ExclusiveStates);
- root->setChildMode(QState::ParallelStates);
- QCOMPARE(root->childMode(), QState::ParallelStates);
-
- QState *s1 = new QState(root);
- QFinalState *s1_f = new QFinalState(s1);
- s1->setInitialState(s1_f);
- QState *s2 = new QState(root);
- QFinalState *s2_f = new QFinalState(s2);
- s2->setInitialState(s2_f);
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- QTest::ignoreMessage(QtWarningMsg, "QStateMachine::start: No initial state set for machine. Refusing to start.");
- machine.start();
- QCoreApplication::processEvents();
- QEXPECT_FAIL("", "parallel root state is not supported (task 256587)", Continue);
- QCOMPARE(startedSpy.count(), 1);
-}
-
-void tst_QStateMachine::allSourceToTargetConfigurations()
-{
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- s0->setObjectName("s0");
- QState *s1 = new QState(s0);
- s1->setObjectName("s1");
- QState *s11 = new QState(s1);
- s11->setObjectName("s11");
- QState *s2 = new QState(s0);
- s2->setObjectName("s2");
- QState *s21 = new QState(s2);
- s21->setObjectName("s21");
- QState *s211 = new QState(s21);
- s211->setObjectName("s211");
- QFinalState *f = new QFinalState(&machine);
- f->setObjectName("f");
-
- s0->setInitialState(s1);
- s1->setInitialState(s11);
- s2->setInitialState(s21);
- s21->setInitialState(s211);
-
- s11->addTransition(new StringTransition("g", s211));
- s1->addTransition(new StringTransition("a", s1));
- s1->addTransition(new StringTransition("b", s11));
- s1->addTransition(new StringTransition("c", s2));
- s1->addTransition(new StringTransition("d", s0));
- s1->addTransition(new StringTransition("f", s211));
- s211->addTransition(new StringTransition("d", s21));
- s211->addTransition(new StringTransition("g", s0));
- s211->addTransition(new StringTransition("h", f));
- s21->addTransition(new StringTransition("b", s211));
- s2->addTransition(new StringTransition("c", s1));
- s2->addTransition(new StringTransition("f", s11));
- s0->addTransition(new StringTransition("e", s211));
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new StringEvent("a"));
- QCoreApplication::processEvents();
- machine.postEvent(new StringEvent("b"));
- QCoreApplication::processEvents();
- machine.postEvent(new StringEvent("c"));
- QCoreApplication::processEvents();
- machine.postEvent(new StringEvent("d"));
- QCoreApplication::processEvents();
- machine.postEvent(new StringEvent("e"));
- QCoreApplication::processEvents();
- machine.postEvent(new StringEvent("f"));
- QCoreApplication::processEvents();
- machine.postEvent(new StringEvent("g"));
- QCoreApplication::processEvents();
- machine.postEvent(new StringEvent("h"));
- QCoreApplication::processEvents();
-
- QTRY_COMPARE(finishedSpy.count(), 1);
-}
-
-class TestSignalTransition : public QSignalTransition
-{
-public:
- TestSignalTransition(QState *sourceState = 0)
- : QSignalTransition(sourceState), m_sender(0)
- {}
- TestSignalTransition(QObject *sender, const char *signal,
- QAbstractState *target)
- : QSignalTransition(sender, signal), m_sender(0)
- { setTargetState(target); }
- QObject *senderReceived() const {
- return m_sender;
- }
- int signalIndexReceived() const {
- return m_signalIndex;
- }
- QVariantList argumentsReceived() const {
- return m_args;
- }
-protected:
- bool eventTest(QEvent *e) {
- if (!QSignalTransition::eventTest(e))
- return false;
- QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(e);
- m_sender = se->sender();
- m_signalIndex = se->signalIndex();
- m_args = se->arguments();
- return true;
- }
-private:
- QObject *m_sender;
- int m_signalIndex;
- QVariantList m_args;
-};
-
-void tst_QStateMachine::signalTransitions()
-{
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: sender cannot be null");
- QCOMPARE(s0->addTransition(0, SIGNAL(noSuchSignal()), 0), (QSignalTransition*)0);
-
- SignalEmitter emitter;
- QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: signal cannot be null");
- QCOMPARE(s0->addTransition(&emitter, 0, 0), (QSignalTransition*)0);
-
- QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: cannot add transition to null state");
- QCOMPARE(s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), 0), (QSignalTransition*)0);
-
- QFinalState *s1 = new QFinalState(&machine);
- QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: no such signal SignalEmitter::noSuchSignal()");
- QCOMPARE(s0->addTransition(&emitter, SIGNAL(noSuchSignal()), s1), (QSignalTransition*)0);
-
- QSignalTransition *trans = s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), s1);
- QVERIFY(trans != 0);
- QCOMPARE(trans->sourceState(), s0);
- QCOMPARE(trans->targetState(), (QAbstractState*)s1);
- QCOMPARE(trans->senderObject(), (QObject*)&emitter);
- QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithNoArg())));
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- emitter.emitSignalWithNoArg();
-
- QTRY_COMPARE(finishedSpy.count(), 1);
-
- emitter.emitSignalWithNoArg();
-
- trans->setSignal(SIGNAL(signalWithIntArg(int)));
- QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithIntArg(int))));
- machine.start();
- QCoreApplication::processEvents();
- emitter.emitSignalWithIntArg(123);
- QTRY_COMPARE(finishedSpy.count(), 2);
-
- machine.start();
- QCoreApplication::processEvents();
- trans->setSignal(SIGNAL(signalWithNoArg()));
- QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithNoArg())));
- emitter.emitSignalWithNoArg();
- QTRY_COMPARE(finishedSpy.count(), 3);
-
- SignalEmitter emitter2;
- machine.start();
- QCoreApplication::processEvents();
- trans->setSenderObject(&emitter2);
- emitter2.emitSignalWithNoArg();
- QTRY_COMPARE(finishedSpy.count(), 4);
-
- machine.start();
- QCoreApplication::processEvents();
- QTest::ignoreMessage(QtWarningMsg, "QSignalTransition: no such signal: SignalEmitter::noSuchSignal()");
- trans->setSignal(SIGNAL(noSuchSignal()));
- QCOMPARE(trans->signal(), QByteArray(SIGNAL(noSuchSignal())));
- }
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
- SignalEmitter emitter;
- QSignalTransition *trans = s0->addTransition(&emitter, "signalWithNoArg()", s1);
- QVERIFY(trans != 0);
- QCOMPARE(trans->sourceState(), s0);
- QCOMPARE(trans->targetState(), (QAbstractState*)s1);
- QCOMPARE(trans->senderObject(), (QObject*)&emitter);
- QCOMPARE(trans->signal(), QByteArray("signalWithNoArg()"));
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- emitter.emitSignalWithNoArg();
-
- QTRY_COMPARE(finishedSpy.count(), 1);
-
- trans->setSignal("signalWithIntArg(int)");
- QCOMPARE(trans->signal(), QByteArray("signalWithIntArg(int)"));
- machine.start();
- QCoreApplication::processEvents();
- emitter.emitSignalWithIntArg(123);
- QTRY_COMPARE(finishedSpy.count(), 2);
- }
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
- SignalEmitter emitter;
- TestSignalTransition *trans = new TestSignalTransition(&emitter, SIGNAL(signalWithIntArg(int)), s1);
- s0->addTransition(trans);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- emitter.emitSignalWithIntArg(123);
-
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(trans->senderReceived(), (QObject*)&emitter);
- QCOMPARE(trans->signalIndexReceived(), emitter.metaObject()->indexOfSignal("signalWithIntArg(int)"));
- QCOMPARE(trans->argumentsReceived().size(), 1);
- QCOMPARE(trans->argumentsReceived().at(0).toInt(), 123);
- }
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
- SignalEmitter emitter;
- TestSignalTransition *trans = new TestSignalTransition(&emitter, SIGNAL(signalWithStringArg(QString)), s1);
- s0->addTransition(trans);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- QString testString = QString::fromLatin1("hello");
- emitter.emitSignalWithStringArg(testString);
-
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(trans->senderReceived(), (QObject*)&emitter);
- QCOMPARE(trans->signalIndexReceived(), emitter.metaObject()->indexOfSignal("signalWithStringArg(QString)"));
- QCOMPARE(trans->argumentsReceived().size(), 1);
- QCOMPARE(trans->argumentsReceived().at(0).toString(), testString);
- }
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
-
- TestSignalTransition *trans = new TestSignalTransition();
- QCOMPARE(trans->senderObject(), (QObject*)0);
- QCOMPARE(trans->signal(), QByteArray());
-
- SignalEmitter emitter;
- trans->setSenderObject(&emitter);
- QCOMPARE(trans->senderObject(), (QObject*)&emitter);
- trans->setSignal(SIGNAL(signalWithNoArg()));
- QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithNoArg())));
- trans->setTargetState(s1);
- s0->addTransition(trans);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- emitter.emitSignalWithNoArg();
-
- QTRY_COMPARE(finishedSpy.count(), 1);
- }
- // Multiple transitions for same (object,signal)
- {
- QStateMachine machine;
- SignalEmitter emitter;
- QState *s0 = new QState(&machine);
- QState *s1 = new QState(&machine);
- QSignalTransition *t0 = s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), s1);
- QSignalTransition *t1 = s1->addTransition(&emitter, SIGNAL(signalWithNoArg()), s0);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s0));
-
- emitter.emitSignalWithNoArg();
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- s0->removeTransition(t0);
- emitter.emitSignalWithNoArg();
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s0));
-
- emitter.emitSignalWithNoArg();
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s0));
-
- s1->removeTransition(t1);
- emitter.emitSignalWithNoArg();
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s0));
-
- s0->addTransition(t0);
- s1->addTransition(t1);
- emitter.emitSignalWithNoArg();
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
- }
- // multiple signal transitions from same source
- {
- QStateMachine machine;
- SignalEmitter emitter;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
- s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), s1);
- QFinalState *s2 = new QFinalState(&machine);
- s0->addTransition(&emitter, SIGNAL(signalWithIntArg(int)), s2);
- QFinalState *s3 = new QFinalState(&machine);
- s0->addTransition(&emitter, SIGNAL(signalWithStringArg(QString)), s3);
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
-
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 1);
- emitter.emitSignalWithNoArg();
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 2);
- emitter.emitSignalWithIntArg(123);
- QTRY_COMPARE(finishedSpy.count(), 2);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
-
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 3);
- emitter.emitSignalWithStringArg("hello");
- QTRY_COMPARE(finishedSpy.count(), 3);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s3));
- }
- // signature normalization
- {
- QStateMachine machine;
- SignalEmitter emitter;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
- QSignalTransition *t0 = s0->addTransition(&emitter, SIGNAL( signalWithNoArg( ) ), s1);
- QVERIFY(t0 != 0);
- QCOMPARE(t0->signal(), QByteArray(SIGNAL( signalWithNoArg( ) )));
-
- QSignalTransition *t1 = s0->addTransition(&emitter, SIGNAL( signalWithStringArg( const QString & ) ), s1);
- QVERIFY(t1 != 0);
- QCOMPARE(t1->signal(), QByteArray(SIGNAL( signalWithStringArg( const QString & ) )));
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 0);
-
- emitter.emitSignalWithNoArg();
-
- QTRY_COMPARE(finishedSpy.count(), 1);
- }
-}
-
-class TestEventTransition : public QEventTransition
-{
-public:
- TestEventTransition(QState *sourceState = 0)
- : QEventTransition(sourceState),
- m_eventSource(0), m_eventType(QEvent::None)
- {}
- TestEventTransition(QObject *object, QEvent::Type type,
- QAbstractState *target)
- : QEventTransition(object, type),
- m_eventSource(0), m_eventType(QEvent::None)
- { setTargetState(target); }
- QObject *eventSourceReceived() const {
- return m_eventSource;
- }
- QEvent::Type eventTypeReceived() const {
- return m_eventType;
- }
-protected:
- bool eventTest(QEvent *e) {
- if (!QEventTransition::eventTest(e))
- return false;
- QStateMachine::WrappedEvent *we = static_cast<QStateMachine::WrappedEvent*>(e);
- m_eventSource = we->object();
- m_eventType = we->event()->type();
- return true;
- }
-private:
- QObject *m_eventSource;
- QEvent::Type m_eventType;
-};
-
-void tst_QStateMachine::eventTransitions()
-{
- QPushButton button;
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
-
- QMouseEventTransition *trans;
- trans = new QMouseEventTransition(&button, QEvent::MouseButtonPress, Qt::LeftButton);
- QCOMPARE(trans->targetState(), (QAbstractState*)0);
- trans->setTargetState(s1);
- QCOMPARE(trans->eventType(), QEvent::MouseButtonPress);
- QCOMPARE(trans->button(), Qt::LeftButton);
- QCOMPARE(trans->targetState(), (QAbstractState*)s1);
- s0->addTransition(trans);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- QTest::mousePress(&button, Qt::LeftButton);
- QTRY_COMPARE(finishedSpy.count(), 1);
-
- QTest::mousePress(&button, Qt::LeftButton);
-
- trans->setEventType(QEvent::MouseButtonRelease);
- QCOMPARE(trans->eventType(), QEvent::MouseButtonRelease);
- machine.start();
- QCoreApplication::processEvents();
- QTest::mouseRelease(&button, Qt::LeftButton);
- QTRY_COMPARE(finishedSpy.count(), 2);
-
- machine.start();
- QCoreApplication::processEvents();
- trans->setEventType(QEvent::MouseButtonPress);
- QTest::mousePress(&button, Qt::LeftButton);
- QTRY_COMPARE(finishedSpy.count(), 3);
-
- QPushButton button2;
- machine.start();
- QCoreApplication::processEvents();
- trans->setEventSource(&button2);
- QTest::mousePress(&button2, Qt::LeftButton);
- QTRY_COMPARE(finishedSpy.count(), 4);
- }
- for (int x = 0; x < 2; ++x) {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
-
- QEventTransition *trans;
- if (x == 0) {
- trans = new QEventTransition();
- QCOMPARE(trans->eventSource(), (QObject*)0);
- QCOMPARE(trans->eventType(), QEvent::None);
- trans->setEventSource(&button);
- trans->setEventType(QEvent::MouseButtonPress);
- trans->setTargetState(s1);
- } else if (x == 1) {
- trans = new QEventTransition(&button, QEvent::MouseButtonPress);
- trans->setTargetState(s1);
- }
- QCOMPARE(trans->eventSource(), (QObject*)&button);
- QCOMPARE(trans->eventType(), QEvent::MouseButtonPress);
- QCOMPARE(trans->targetState(), (QAbstractState*)s1);
- s0->addTransition(trans);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- QTest::mousePress(&button, Qt::LeftButton);
- QCoreApplication::processEvents();
-
- QTRY_COMPARE(finishedSpy.count(), 1);
- }
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
-
- QMouseEventTransition *trans = new QMouseEventTransition();
- QCOMPARE(trans->eventSource(), (QObject*)0);
- QCOMPARE(trans->eventType(), QEvent::None);
- QCOMPARE(trans->button(), Qt::NoButton);
- trans->setEventSource(&button);
- trans->setEventType(QEvent::MouseButtonPress);
- trans->setButton(Qt::LeftButton);
- trans->setTargetState(s1);
- s0->addTransition(trans);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- QTest::mousePress(&button, Qt::LeftButton);
- QCoreApplication::processEvents();
-
- QTRY_COMPARE(finishedSpy.count(), 1);
- }
-
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
-
- QKeyEventTransition *trans = new QKeyEventTransition(&button, QEvent::KeyPress, Qt::Key_A);
- QCOMPARE(trans->eventType(), QEvent::KeyPress);
- QCOMPARE(trans->key(), (int)Qt::Key_A);
- trans->setTargetState(s1);
- s0->addTransition(trans);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- QTest::keyPress(&button, Qt::Key_A);
- QCoreApplication::processEvents();
-
- QTRY_COMPARE(finishedSpy.count(), 1);
- }
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
-
- QKeyEventTransition *trans = new QKeyEventTransition();
- QCOMPARE(trans->eventSource(), (QObject*)0);
- QCOMPARE(trans->eventType(), QEvent::None);
- QCOMPARE(trans->key(), 0);
- trans->setEventSource(&button);
- trans->setEventType(QEvent::KeyPress);
- trans->setKey(Qt::Key_A);
- trans->setTargetState(s1);
- s0->addTransition(trans);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- QTest::keyPress(&button, Qt::Key_A);
- QCoreApplication::processEvents();
-
- QTRY_COMPARE(finishedSpy.count(), 1);
- }
- // Multiple transitions for same (object,event)
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QState *s1 = new QState(&machine);
- QEventTransition *t0 = new QEventTransition(&button, QEvent::MouseButtonPress);
- t0->setTargetState(s1);
- s0->addTransition(t0);
- QEventTransition *t1 = new QEventTransition(&button, QEvent::MouseButtonPress);
- t1->setTargetState(s0);
- s1->addTransition(t1);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s0));
-
- QTest::mousePress(&button, Qt::LeftButton);
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- s0->removeTransition(t0);
- QTest::mousePress(&button, Qt::LeftButton);
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s0));
-
- QTest::mousePress(&button, Qt::LeftButton);
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s0));
-
- s1->removeTransition(t1);
- QTest::mousePress(&button, Qt::LeftButton);
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s0));
-
- s0->addTransition(t0);
- s1->addTransition(t1);
- QTest::mousePress(&button, Qt::LeftButton);
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
- }
- // multiple event transitions from same source
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
- QFinalState *s2 = new QFinalState(&machine);
- QEventTransition *t0 = new QEventTransition(&button, QEvent::MouseButtonPress);
- t0->setTargetState(s1);
- s0->addTransition(t0);
- QEventTransition *t1 = new QEventTransition(&button, QEvent::MouseButtonRelease);
- t1->setTargetState(s2);
- s0->addTransition(t1);
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
-
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 1);
- QTest::mousePress(&button, Qt::LeftButton);
- QTRY_COMPARE(finishedSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 2);
- QTest::mouseRelease(&button, Qt::LeftButton);
- QTRY_COMPARE(finishedSpy.count(), 2);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
- }
- // custom event
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
-
- QEventTransition *trans = new QEventTransition(&button, QEvent::Type(QEvent::User+1));
- trans->setTargetState(s1);
- s0->addTransition(trans);
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- machine.setInitialState(s0);
- machine.start();
- QTest::ignoreMessage(QtWarningMsg, "QObject event transitions are not supported for custom types");
- QTRY_COMPARE(startedSpy.count(), 1);
- }
- // custom transition
- {
- QStateMachine machine;
- QState *s0 = new QState(&machine);
- QFinalState *s1 = new QFinalState(&machine);
-
- TestEventTransition *trans = new TestEventTransition(&button, QEvent::MouseButtonPress, s1);
- s0->addTransition(trans);
- QCOMPARE(trans->eventSourceReceived(), (QObject*)0);
- QCOMPARE(trans->eventTypeReceived(), QEvent::None);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.setInitialState(s0);
- machine.start();
- QCoreApplication::processEvents();
-
- QTest::mousePress(&button, Qt::LeftButton);
- QCoreApplication::processEvents();
-
- QTRY_COMPARE(finishedSpy.count(), 1);
-
- QCOMPARE(trans->eventSourceReceived(), (QObject*)&button);
- QCOMPARE(trans->eventTypeReceived(), QEvent::MouseButtonPress);
- }
-}
-
-void tst_QStateMachine::graphicsSceneEventTransitions()
-{
- QGraphicsScene scene;
- QGraphicsTextItem *textItem = scene.addText("foo");
-
- QStateMachine machine;
- QState *s1 = new QState(&machine);
- QFinalState *s2 = new QFinalState(&machine);
- QEventTransition *t = new QEventTransition(textItem, QEvent::GraphicsSceneMouseMove);
- t->setTargetState(s2);
- s1->addTransition(t);
- machine.setInitialState(s1);
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 1);
- QVERIFY(finishedSpy.count() == 0);
- QGraphicsSceneMouseEvent mouseEvent(QEvent::GraphicsSceneMouseMove);
- scene.sendEvent(textItem, &mouseEvent);
- QTRY_COMPARE(finishedSpy.count(), 1);
-}
-
-void tst_QStateMachine::historyStates()
-{
- for (int x = 0; x < 2; ++x) {
- QStateMachine machine;
- QState *root = &machine;
- QState *s0 = new QState(root);
- QState *s00 = new QState(s0);
- QState *s01 = new QState(s0);
- QHistoryState *s0h;
- if (x == 0) {
- s0h = new QHistoryState(s0);
- QCOMPARE(s0h->historyType(), QHistoryState::ShallowHistory);
- s0h->setHistoryType(QHistoryState::DeepHistory);
- } else {
- s0h = new QHistoryState(QHistoryState::DeepHistory, s0);
- }
- QCOMPARE(s0h->historyType(), QHistoryState::DeepHistory);
- s0h->setHistoryType(QHistoryState::ShallowHistory);
- QCOMPARE(s0h->historyType(), QHistoryState::ShallowHistory);
- QCOMPARE(s0h->defaultState(), (QAbstractState*)0);
- s0h->setDefaultState(s00);
- QCOMPARE(s0h->defaultState(), (QAbstractState*)s00);
- QString warning;
- warning.sprintf("QHistoryState::setDefaultState: state %p does not belong to this history state's group (%p)", s0, s0);
- QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
- s0h->setDefaultState(s0);
- QState *s1 = new QState(root);
- QFinalState *s2 = new QFinalState(root);
-
- s00->addTransition(new StringTransition("a", s01));
- s0->addTransition(new StringTransition("b", s1));
- s1->addTransition(new StringTransition("c", s0h));
- s0->addTransition(new StringTransition("d", s2));
-
- root->setInitialState(s0);
- s0->setInitialState(s00);
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 2);
- QVERIFY(machine.configuration().contains(s0));
- QVERIFY(machine.configuration().contains(s00));
-
- machine.postEvent(new StringEvent("a"));
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 2);
- QVERIFY(machine.configuration().contains(s0));
- QVERIFY(machine.configuration().contains(s01));
-
- machine.postEvent(new StringEvent("b"));
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- machine.postEvent(new StringEvent("c"));
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 2);
- QVERIFY(machine.configuration().contains(s0));
- QVERIFY(machine.configuration().contains(s01));
-
- machine.postEvent(new StringEvent("d"));
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
-
- QTRY_COMPARE(finishedSpy.count(), 1);
- }
-}
-
-void tst_QStateMachine::startAndStop()
-{
- QStateMachine machine;
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- QVERIFY(!machine.isRunning());
- QTest::ignoreMessage(QtWarningMsg, "QStateMachine::start: No initial state set for machine. Refusing to start.");
- machine.start();
- QCOMPARE(startedSpy.count(), 0);
- QCOMPARE(stoppedSpy.count(), 0);
- QCOMPARE(finishedSpy.count(), 0);
- QVERIFY(!machine.isRunning());
- machine.stop();
- QCOMPARE(startedSpy.count(), 0);
- QCOMPARE(stoppedSpy.count(), 0);
- QCOMPARE(finishedSpy.count(), 0);
-
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
- machine.start();
- QTRY_COMPARE(machine.isRunning(), true);
- QTRY_COMPARE(startedSpy.count(), 1);
- QCOMPARE(stoppedSpy.count(), 0);
- QCOMPARE(finishedSpy.count(), 0);
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- QTest::ignoreMessage(QtWarningMsg, "QStateMachine::start(): already running");
- machine.start();
-
- machine.stop();
- QTRY_COMPARE(machine.isRunning(), false);
- QTRY_COMPARE(stoppedSpy.count(), 1);
- QCOMPARE(startedSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 0);
-
- QCOMPARE(machine.configuration().count(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- machine.start();
- machine.stop();
- QTRY_COMPARE(startedSpy.count(), 2);
- QCOMPARE(stoppedSpy.count(), 2);
-}
-
-void tst_QStateMachine::targetStateWithNoParent()
-{
- QStateMachine machine;
- QState *s1 = new QState(&machine);
- s1->setObjectName("s1");
- QState s2;
- s1->addTransition(&s2);
- machine.setInitialState(s1);
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: No common ancestor for targets and source of transition from state 's1'");
- QTRY_COMPARE(startedSpy.count(), 1);
- QCOMPARE(machine.isRunning(), false);
- QCOMPARE(stoppedSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 0);
- QCOMPARE(machine.error(), QStateMachine::NoCommonAncestorForTransitionError);
-}
-
-void tst_QStateMachine::targetStateDeleted()
-{
- QStateMachine machine;
- QState *s1 = new QState(&machine);
- s1->setObjectName("s1");
- QState *s2 = new QState(&machine);
- QAbstractTransition *trans = s1->addTransition(s2);
- delete s2;
- QCOMPARE(trans->targetState(), (QAbstractState*)0);
- QVERIFY(trans->targetStates().isEmpty());
-}
-
-void tst_QStateMachine::defaultGlobalRestorePolicy()
-{
- QStateMachine machine;
-
- QObject *propertyHolder = new QObject(&machine);
- propertyHolder->setProperty("a", 1);
- propertyHolder->setProperty("b", 2);
-
- QState *s1 = new QState(&machine);
- s1->assignProperty(propertyHolder, "a", 3);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(propertyHolder, "b", 4);
-
- QState *s3 = new QState(&machine);
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
- s2->addTransition(new EventTransition(QEvent::User, s3));
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
- QCOMPARE(propertyHolder->property("b").toInt(), 2);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
- QCOMPARE(propertyHolder->property("b").toInt(), 4);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
- QCOMPARE(propertyHolder->property("b").toInt(), 4);
-}
-
-void tst_QStateMachine::noInitialStateForInitialState()
-{
- QStateMachine machine;
-
- QState *initialState = new QState(&machine);
- initialState->setObjectName("initialState");
- machine.setInitialState(initialState);
-
- QState *childState = new QState(initialState);
- (void)childState;
-
- QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: "
- "Missing initial state in compound state 'initialState'");
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.isRunning(), false);
- QCOMPARE(int(machine.error()), int(QStateMachine::NoInitialStateError));
-}
-
-/*
-void tst_QStateMachine::restorePolicyNotInherited()
-{
- QStateMachine machine;
-
- QObject *propertyHolder = new QObject();
- propertyHolder->setProperty("a", 1);
- propertyHolder->setProperty("b", 2);
-
- QState *parentState = new QState(&machine);
- parentState->setObjectName("parentState");
- parentState->setRestorePolicy(QState::RestoreProperties);
-
- QState *s1 = new QState(parentState);
- s1->setObjectName("s1");
- s1->assignProperty(propertyHolder, "a", 3);
- parentState->setInitialState(s1);
-
- QState *s2 = new QState(parentState);
- s2->setObjectName("s2");
- s2->assignProperty(propertyHolder, "b", 4);
-
- QState *s3 = new QState(parentState);
- s3->setObjectName("s3");
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
- s2->addTransition(new EventTransition(QEvent::User, s3));
-
- machine.setInitialState(parentState);
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
- QCOMPARE(propertyHolder->property("b").toInt(), 2);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
- QCOMPARE(propertyHolder->property("b").toInt(), 4);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
- QCOMPARE(propertyHolder->property("b").toInt(), 4);
-
-}*/
-
-void tst_QStateMachine::globalRestorePolicySetToDontRestore()
-{
- QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::DontRestoreProperties);
-
- QObject *propertyHolder = new QObject(&machine);
- propertyHolder->setProperty("a", 1);
- propertyHolder->setProperty("b", 2);
-
- QState *s1 = new QState(&machine);
- s1->assignProperty(propertyHolder, "a", 3);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(propertyHolder, "b", 4);
-
- QState *s3 = new QState(&machine);
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
- s2->addTransition(new EventTransition(QEvent::User, s3));
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
- QCOMPARE(propertyHolder->property("b").toInt(), 2);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
- QCOMPARE(propertyHolder->property("b").toInt(), 4);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
- QCOMPARE(propertyHolder->property("b").toInt(), 4);
-}
-
-/*
-void tst_QStateMachine::setRestorePolicyToDoNotRestore()
-{
- QObject *object = new QObject();
- object->setProperty("a", 1);
- object->setProperty("b", 2);
-
- QStateMachine machine;
-
- QState *S1 = new QState();
- S1->setObjectName("S1");
- S1->assignProperty(object, "a", 3);
- S1->setRestorePolicy(QState::DoNotRestoreProperties);
- machine.addState(S1);
-
- QState *S2 = new QState();
- S2->setObjectName("S2");
- S2->assignProperty(object, "b", 5);
- S2->setRestorePolicy(QState::DoNotRestoreProperties);
- machine.addState(S2);
-
- QState *S3 = new QState();
- S3->setObjectName("S3");
- S3->setRestorePolicy(QState::DoNotRestoreProperties);
- machine.addState(S3);
-
- QFinalState *S4 = new QFinalState();
- machine.addState(S4);
-
- S1->addTransition(new EventTransition(QEvent::User, S2));
- S2->addTransition(new EventTransition(QEvent::User, S3));
- S3->addTransition(S4);
-
- machine.setInitialState(S1);
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(object->property("a").toInt(), 3);
- QCOMPARE(object->property("b").toInt(), 2);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(object->property("a").toInt(), 3);
- QCOMPARE(object->property("b").toInt(), 5);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(object->property("a").toInt(), 3);
- QCOMPARE(object->property("b").toInt(), 5);
-}
-
-void tst_QStateMachine::setGlobalRestorePolicyToGlobalRestore()
-{
- s_countWarnings = false;
- QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::GlobalRestorePolicy);
-
- QCOMPARE(machine.globalRestorePolicy(), QStateMachine::DoNotRestoreProperties);
- QCOMPARE(s_msgType, QtWarningMsg);
-
- s_msgType = QtDebugMsg;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
- machine.setGlobalRestorePolicy(QStateMachine::GlobalRestorePolicy);
-
- QCOMPARE(machine.globalRestorePolicy(), QStateMachine::RestoreProperties);
- QCOMPARE(s_msgType, QtWarningMsg);
-}
-
-
-void tst_QStateMachine::restorePolicyOnChildState()
-{
- QStateMachine machine;
-
- QObject *propertyHolder = new QObject();
- propertyHolder->setProperty("a", 1);
- propertyHolder->setProperty("b", 2);
-
- QState *parentState = new QState(&machine);
- parentState->setObjectName("parentState");
-
- QState *s1 = new QState(parentState);
- s1->setRestorePolicy(QState::RestoreProperties);
- s1->setObjectName("s1");
- s1->assignProperty(propertyHolder, "a", 3);
- parentState->setInitialState(s1);
-
- QState *s2 = new QState(parentState);
- s2->setRestorePolicy(QState::RestoreProperties);
- s2->setObjectName("s2");
- s2->assignProperty(propertyHolder, "b", 4);
-
- QState *s3 = new QState(parentState);
- s3->setRestorePolicy(QState::RestoreProperties);
- s3->setObjectName("s3");
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
- s2->addTransition(new EventTransition(QEvent::User, s3));
-
- machine.setInitialState(parentState);
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
- QCOMPARE(propertyHolder->property("b").toInt(), 2);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 1);
- QCOMPARE(propertyHolder->property("b").toInt(), 4);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 1);
- QCOMPARE(propertyHolder->property("b").toInt(), 2);
-}
-*/
-
-void tst_QStateMachine::globalRestorePolicySetToRestore()
-{
- QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
-
- QObject *propertyHolder = new QObject(&machine);
- propertyHolder->setProperty("a", 1);
- propertyHolder->setProperty("b", 2);
-
- QState *s1 = new QState(&machine);
- s1->assignProperty(propertyHolder, "a", 3);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(propertyHolder, "b", 4);
-
- QState *s3 = new QState(&machine);
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
- s2->addTransition(new EventTransition(QEvent::User, s3));
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
- QCOMPARE(propertyHolder->property("b").toInt(), 2);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 1);
- QCOMPARE(propertyHolder->property("b").toInt(), 4);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("a").toInt(), 1);
- QCOMPARE(propertyHolder->property("b").toInt(), 2);
-}
-
-/*
-void tst_QStateMachine::mixedRestoreProperties()
-{
- QStateMachine machine;
-
- QObject *propertyHolder = new QObject();
- propertyHolder->setProperty("a", 1);
-
- QState *s1 = new QState(&machine);
- s1->setRestorePolicy(QState::RestoreProperties);
- s1->assignProperty(propertyHolder, "a", 3);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(propertyHolder, "a", 4);
-
- QState *s3 = new QState(&machine);
-
- QState *s4 = new QState(&machine);
- s4->assignProperty(propertyHolder, "a", 5);
-
- QState *s5 = new QState(&machine);
- s5->setRestorePolicy(QState::RestoreProperties);
- s5->assignProperty(propertyHolder, "a", 6);
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
- s2->addTransition(new EventTransition(QEvent::User, s3));
- s3->addTransition(new EventTransition(QEvent::User, s4));
- s4->addTransition(new EventTransition(QEvent::User, s5));
- s5->addTransition(new EventTransition(QEvent::User, s3));
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- // Enter s1, save current
- QCOMPARE(propertyHolder->property("a").toInt(), 3);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- // Enter s2, restorePolicy == DoNotRestore, so restore all properties
- QCOMPARE(propertyHolder->property("a").toInt(), 4);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- // Enter s3
- QCOMPARE(propertyHolder->property("a").toInt(), 4);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- // Enter s4
- QCOMPARE(propertyHolder->property("a").toInt(), 5);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- // Enter s5, save current
- QCOMPARE(propertyHolder->property("a").toInt(), 6);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- // Enter s3, restore
- QCOMPARE(propertyHolder->property("a").toInt(), 5);
-}
-*/
-
-void tst_QStateMachine::transitionWithParent()
-{
- QStateMachine machine;
- QState *s1 = new QState(&machine);
- QState *s2 = new QState(&machine);
- EventTransition *trans = new EventTransition(QEvent::User, s2, s1);
- QCOMPARE(trans->sourceState(), s1);
- QCOMPARE(trans->targetState(), (QAbstractState*)s2);
- QCOMPARE(trans->targetStates().size(), 1);
- QCOMPARE(trans->targetStates().at(0), (QAbstractState*)s2);
-}
-
-void tst_QStateMachine::simpleAnimation()
-{
- QStateMachine machine;
-
- QObject *object = new QObject(&machine);
- object->setProperty("fooBar", 1.0);
-
- QState *s1 = new QState(&machine);
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "fooBar", 2.0);
-
- EventTransition *et = new EventTransition(QEvent::User, s2);
- QPropertyAnimation *animation = new QPropertyAnimation(object, "fooBar", s2);
- et->addAnimation(animation);
- s1->addTransition(et);
-
- QState *s3 = new QState(&machine);
- s2->addTransition(animation, SIGNAL(finished()), s3);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(object->property("fooBar").toDouble(), 2.0);
-}
-
-class SlotCalledCounter: public QObject
-{
- Q_OBJECT
-public:
- SlotCalledCounter() : counter(0) {}
-
- int counter;
-
-public slots:
- void slot() { counter++; }
-};
-
-void tst_QStateMachine::twoAnimations()
-{
- QStateMachine machine;
-
- QObject *object = new QObject(&machine);
- object->setProperty("foo", 1.0);
- object->setProperty("bar", 3.0);
-
- QState *s1 = new QState(&machine);
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
- s2->assignProperty(object, "bar", 10.0);
-
- QPropertyAnimation *animationFoo = new QPropertyAnimation(object, "foo", s2);
- QPropertyAnimation *animationBar = new QPropertyAnimation(object, "bar", s2);
- animationBar->setDuration(900);
-
- SlotCalledCounter counter;
- connect(animationFoo, SIGNAL(finished()), &counter, SLOT(slot()));
- connect(animationBar, SIGNAL(finished()), &counter, SLOT(slot()));
-
- EventTransition *et = new EventTransition(QEvent::User, s2);
- et->addAnimation(animationFoo);
- et->addAnimation(animationBar);
- s1->addTransition(et);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
- s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(object->property("foo").toDouble(), 2.0);
- QCOMPARE(object->property("bar").toDouble(), 10.0);
-
- QCOMPARE(counter.counter, 2);
-}
-
-void tst_QStateMachine::twoAnimatedTransitions()
-{
- QStateMachine machine;
-
- QObject *object = new QObject(&machine);
- object->setProperty("foo", 1.0);
-
- QState *s1 = new QState(&machine);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 5.0);
- QPropertyAnimation *fooAnimation = new QPropertyAnimation(object, "foo", s2);
- EventTransition *trans = new EventTransition(QEvent::User, s2);
- s1->addTransition(trans);
- trans->addAnimation(fooAnimation);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
- s2->addTransition(fooAnimation, SIGNAL(finished()), s3);
-
- QState *s4 = new QState(&machine);
- s4->assignProperty(object, "foo", 2.0);
- QPropertyAnimation *fooAnimation2 = new QPropertyAnimation(object, "foo", s4);
- trans = new EventTransition(QEvent::User, s4);
- s3->addTransition(trans);
- trans->addAnimation(fooAnimation2);
-
- QState *s5 = new QState(&machine);
- QObject::connect(s5, SIGNAL(entered()), QApplication::instance(), SLOT(quit()));
- s4->addTransition(fooAnimation2, SIGNAL(finished()), s5);
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(object->property("foo").toDouble(), 5.0);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s5));
- QCOMPARE(object->property("foo").toDouble(), 2.0);
-}
-
-void tst_QStateMachine::playAnimationTwice()
-{
- QStateMachine machine;
-
- QObject *object = new QObject(&machine);
- object->setProperty("foo", 1.0);
-
- QState *s1 = new QState(&machine);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 5.0);
- QPropertyAnimation *fooAnimation = new QPropertyAnimation(object, "foo", s2);
- EventTransition *trans = new EventTransition(QEvent::User, s2);
- s1->addTransition(trans);
- trans->addAnimation(fooAnimation);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
- s2->addTransition(fooAnimation, SIGNAL(finished()), s3);
-
- QState *s4 = new QState(&machine);
- s4->assignProperty(object, "foo", 2.0);
- trans = new EventTransition(QEvent::User, s4);
- s3->addTransition(trans);
- trans->addAnimation(fooAnimation);
-
- QState *s5 = new QState(&machine);
- QObject::connect(s5, SIGNAL(entered()), QApplication::instance(), SLOT(quit()));
- s4->addTransition(fooAnimation, SIGNAL(finished()), s5);
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(object->property("foo").toDouble(), 5.0);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s5));
- QCOMPARE(object->property("foo").toDouble(), 2.0);
-}
-
-void tst_QStateMachine::nestedTargetStateForAnimation()
-{
- QStateMachine machine;
-
- QObject *object = new QObject(&machine);
- object->setProperty("foo", 1.0);
- object->setProperty("bar", 3.0);
-
- SlotCalledCounter counter;
-
- QState *s1 = new QState(&machine);
- QState *s2 = new QState(&machine);
-
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s2Child = new QState(s2);
- s2Child->assignProperty(object, "bar", 10.0);
- s2->setInitialState(s2Child);
-
- QState *s2Child2 = new QState(s2);
- s2Child2->assignProperty(object, "bar", 11.0);
- QAbstractTransition *at = new EventTransition(QEvent::User, s2Child2);
- s2Child->addTransition(at);
-
- QPropertyAnimation *animation = new QPropertyAnimation(object, "bar", s2);
- animation->setDuration(2000);
- connect(animation, SIGNAL(finished()), &counter, SLOT(slot()));
- at->addAnimation(animation);
-
- at = new EventTransition(QEvent::User, s2);
- s1->addTransition(at);
-
- animation = new QPropertyAnimation(object, "foo", s2);
- connect(animation, SIGNAL(finished()), &counter, SLOT(slot()));
- at->addAnimation(animation);
-
- animation = new QPropertyAnimation(object, "bar", s2);
- connect(animation, SIGNAL(finished()), &counter, SLOT(slot()));
- at->addAnimation(animation);
-
- QState *s3 = new QState(&machine);
- s2->addTransition(s2Child, SIGNAL(propertiesAssigned()), s3);
-
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
- machine.postEvent(new QEvent(QEvent::User));
-
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(object->property("foo").toDouble(), 2.0);
- QCOMPARE(object->property("bar").toDouble(), 10.0);
- QCOMPARE(counter.counter, 2);
-}
-
-void tst_QStateMachine::propertiesAssignedSignalTransitionsReuseAnimationGroup()
-{
- QStateMachine machine;
- QObject *object = new QObject(&machine);
- object->setProperty("foo", 0);
-
- QState *s1 = new QState(&machine);
- s1->assignProperty(object, "foo", 123);
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 456);
- QState *s3 = new QState(&machine);
- s3->assignProperty(object, "foo", 789);
- QFinalState *s4 = new QFinalState(&machine);
-
- QParallelAnimationGroup animationGroup;
- animationGroup.addAnimation(new QPropertyAnimation(object, "foo"));
- QSignalSpy animationFinishedSpy(&animationGroup, SIGNAL(finished()));
- s1->addTransition(s1, SIGNAL(propertiesAssigned()), s2)->addAnimation(&animationGroup);
- s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3)->addAnimation(&animationGroup);
- s3->addTransition(s3, SIGNAL(propertiesAssigned()), s4);
-
- machine.setInitialState(s1);
- QSignalSpy machineFinishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTRY_COMPARE(machineFinishedSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s4));
- QCOMPARE(object->property("foo").toInt(), 789);
-
- QCOMPARE(animationFinishedSpy.count(), 2);
-}
-
-void tst_QStateMachine::animatedGlobalRestoreProperty()
-{
- QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
-
- QObject *object = new QObject(&machine);
- object->setProperty("foo", 1.0);
-
- SlotCalledCounter counter;
-
- QState *s1 = new QState(&machine);
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s3 = new QState(&machine);
-
- QState *s4 = new QState(&machine);
- QObject::connect(s4, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- QAbstractTransition *at = new EventTransition(QEvent::User, s2);
- s1->addTransition(at);
- QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", s2);
- connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
- at->addAnimation(pa);
-
- at = s2->addTransition(pa, SIGNAL(finished()), s3);
- pa = new QPropertyAnimation(object, "foo", s3);
- connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
- at->addAnimation(pa);
-
- at = s3->addTransition(pa, SIGNAL(finished()), s4);
- pa = new QPropertyAnimation(object, "foo", s4);
- connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
- at->addAnimation(pa);
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
-
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s4));
- QCOMPARE(object->property("foo").toDouble(), 1.0);
- QCOMPARE(counter.counter, 2);
-}
-
-void tst_QStateMachine::specificTargetValueOfAnimation()
-{
- QStateMachine machine;
-
- QObject *object = new QObject(&machine);
- object->setProperty("foo", 1.0);
-
- QState *s1 = new QState(&machine);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QPropertyAnimation *anim = new QPropertyAnimation(object, "foo");
- anim->setEndValue(10.0);
- EventTransition *trans = new EventTransition(QEvent::User, s2);
- s1->addTransition(trans);
- trans->addAnimation(anim);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
- s2->addTransition(anim, SIGNAL(finished()), s3);
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(object->property("foo").toDouble(), 2.0);
- QCOMPARE(anim->endValue().toDouble(), 10.0);
-
- delete anim;
-}
-
-void tst_QStateMachine::addDefaultAnimation()
-{
- QStateMachine machine;
-
- QObject *object = new QObject();
- object->setProperty("foo", 1.0);
-
- QState *s1 = new QState(&machine);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
-
- QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
- machine.addDefaultAnimation(pa);
- s2->addTransition(pa, SIGNAL(finished()), s3);
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(object->property("foo").toDouble(), 2.0);
-
- delete object;
-}
-
-void tst_QStateMachine::addDefaultAnimationWithUnusedAnimation()
-{
- QStateMachine machine;
-
- QObject *object = new QObject(&machine);
- object->setProperty("foo", 1.0);
- object->setProperty("bar", 2.0);
-
- SlotCalledCounter counter;
-
- QState *s1 = new QState(&machine);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
-
- QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
- connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
- machine.addDefaultAnimation(pa);
- s2->addTransition(pa, SIGNAL(finished()), s3);
-
- pa = new QPropertyAnimation(object, "bar", &machine);
- connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
- machine.addDefaultAnimation(pa);
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(object->property("foo").toDouble(), 2.0);
- QCOMPARE(counter.counter, 1);
-}
-
-void tst_QStateMachine::removeDefaultAnimation()
-{
- QStateMachine machine;
-
- QObject propertyHolder;
- propertyHolder.setProperty("foo", 0);
-
- QCOMPARE(machine.defaultAnimations().size(), 0);
-
- QPropertyAnimation *anim = new QPropertyAnimation(&propertyHolder, "foo");
-
- machine.addDefaultAnimation(anim);
-
- QCOMPARE(machine.defaultAnimations().size(), 1);
- QVERIFY(machine.defaultAnimations().contains(anim));
-
- machine.removeDefaultAnimation(anim);
-
- QCOMPARE(machine.defaultAnimations().size(), 0);
-
- machine.addDefaultAnimation(anim);
-
- QPropertyAnimation *anim2 = new QPropertyAnimation(&propertyHolder, "foo");
- machine.addDefaultAnimation(anim2);
-
- QCOMPARE(machine.defaultAnimations().size(), 2);
- QVERIFY(machine.defaultAnimations().contains(anim));
- QVERIFY(machine.defaultAnimations().contains(anim2));
-
- machine.removeDefaultAnimation(anim);
-
- QCOMPARE(machine.defaultAnimations().size(), 1);
- QVERIFY(machine.defaultAnimations().contains(anim2));
-
- machine.removeDefaultAnimation(anim2);
- QCOMPARE(machine.defaultAnimations().size(), 0);
-
- delete anim;
- delete anim2;
-}
-
-void tst_QStateMachine::overrideDefaultAnimationWithSpecific()
-{
- QStateMachine machine;
-
- QObject *object = new QObject(&machine);
- object->setProperty("foo", 1.0);
-
- SlotCalledCounter counter;
-
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- QAbstractTransition *at = new EventTransition(QEvent::User, s2);
- s1->addTransition(at);
-
- QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
- connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
- s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
- connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- machine.addDefaultAnimation(defaultAnimation);
- at->addAnimation(moreSpecificAnimation);
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(counter.counter, 2); // specific animation started and stopped
-
- delete defaultAnimation;
- delete moreSpecificAnimation;
-}
-
-/*
-void tst_QStateMachine::addDefaultAnimationForSource()
-{
- QStateMachine machine;
-
- QObject *object = new QObject();
- object->setProperty("foo", 1.0);
-
- QState *s1 = new QState(&machine);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
-
- QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
- machine.addDefaultAnimationForSourceState(s1, pa);
- s2->addTransition(pa, SIGNAL(finished()), s3);
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(object->property("foo").toDouble(), 2.0);
-}
-
-void tst_QStateMachine::addDefaultAnimationForTarget()
-{
- QStateMachine machine;
-
- QObject *object = new QObject();
- object->setProperty("foo", 1.0);
-
- QState *s1 = new QState(&machine);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
-
- QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
- machine.addDefaultAnimationForTargetState(s2, pa);
- s2->addTransition(pa, SIGNAL(finished()), s3);
-
- machine.setInitialState(s1);
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(object->property("foo").toDouble(), 2.0);
-}
-
-void tst_QStateMachine::removeDefaultAnimationForSource()
-{
- QStateMachine machine;
-
- QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
-
- QPropertyAnimation *anim = new QPropertyAnimation(this, "foo");
-
- machine.addDefaultAnimationForSourceState(&machine, anim);
-
- QCOMPARE(machine.defaultAnimations().size(), 0);
- QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
- QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 1);
- QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim));
-
- machine.removeDefaultAnimationForTargetState(&machine, anim);
-
- QCOMPARE(machine.defaultAnimations().size(), 0);
- QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
- QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 1);
- QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim));
-
- machine.removeDefaultAnimationForSourceState(&machine, anim);
-
- QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
-
- machine.addDefaultAnimationForSourceState(&machine, anim);
-
- QPropertyAnimation *anim2 = new QPropertyAnimation(this, "foo");
- machine.addDefaultAnimationForSourceState(&machine, anim2);
-
- QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 2);
- QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim));
- QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim2));
-
- machine.removeDefaultAnimationForSourceState(&machine, anim);
-
- QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 1);
- QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim2));
-
- machine.removeDefaultAnimationForSourceState(&machine, anim2);
- QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
-}
-
-void tst_QStateMachine::removeDefaultAnimationForTarget()
-{
- QStateMachine machine;
-
- QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
-
- QPropertyAnimation *anim = new QPropertyAnimation(this, "foo");
-
- machine.addDefaultAnimationForTargetState(&machine, anim);
-
- QCOMPARE(machine.defaultAnimations().size(), 0);
- QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
- QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 1);
- QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim));
-
- machine.removeDefaultAnimationForSourceState(&machine, anim);
-
- QCOMPARE(machine.defaultAnimations().size(), 0);
- QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
- QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 1);
- QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim));
-
- machine.removeDefaultAnimationForTargetState(&machine, anim);
-
- QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
-
- machine.addDefaultAnimationForTargetState(&machine, anim);
-
- QPropertyAnimation *anim2 = new QPropertyAnimation(this, "foo");
- machine.addDefaultAnimationForTargetState(&machine, anim2);
-
- QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 2);
- QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim));
- QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim2));
-
- machine.removeDefaultAnimationForTargetState(&machine, anim);
-
- QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 1);
- QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim2));
-
- machine.removeDefaultAnimationForTargetState(&machine, anim2);
- QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
-}
-
-void tst_QStateMachine::overrideDefaultAnimationWithSource()
-{
- QStateMachine machine;
-
- QObject *object = new QObject();
- object->setProperty("foo", 1.0);
-
- SlotCalledCounter counter;
-
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
-
- QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
- connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
- s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
- connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- machine.addDefaultAnimation(defaultAnimation);
- machine.addDefaultAnimationForSourceState(s1, moreSpecificAnimation);
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(counter.counter, 2); // specific animation started and stopped
-}
-
-void tst_QStateMachine::overrideDefaultAnimationWithTarget()
-{
- QStateMachine machine;
-
- QObject *object = new QObject();
- object->setProperty("foo", 1.0);
-
- SlotCalledCounter counter;
-
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
-
- QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
- connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
- s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
- connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- machine.addDefaultAnimation(defaultAnimation);
- machine.addDefaultAnimationForTargetState(s2, moreSpecificAnimation);
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(counter.counter, 2); // specific animation started and stopped
-
-}
-
-void tst_QStateMachine::overrideDefaultSourceAnimationWithSpecific()
-{
- QStateMachine machine;
-
- QObject *object = new QObject();
- object->setProperty("foo", 1.0);
-
- SlotCalledCounter counter;
-
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- QAbstractTransition *at = s1->addTransition(new EventTransition(QEvent::User, s2));
-
- QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
- connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
- s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
- connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- machine.addDefaultAnimationForSourceState(s1, defaultAnimation);
- at->addAnimation(moreSpecificAnimation);
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(counter.counter, 2); // specific animation started and stopped
-}
-
-void tst_QStateMachine::overrideDefaultTargetAnimationWithSpecific()
-{
- QStateMachine machine;
-
- QObject *object = new QObject();
- object->setProperty("foo", 1.0);
-
- SlotCalledCounter counter;
-
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- QAbstractTransition *at = s1->addTransition(new EventTransition(QEvent::User, s2));
-
- QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
- connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
- s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
- connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- machine.addDefaultAnimationForTargetState(s2, defaultAnimation);
- at->addAnimation(moreSpecificAnimation);
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(counter.counter, 2); // specific animation started and stopped
-}
-
-void tst_QStateMachine::overrideDefaultTargetAnimationWithSource()
-{
- QStateMachine machine;
-
- QObject *object = new QObject();
- object->setProperty("foo", 1.0);
-
- SlotCalledCounter counter;
-
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(object, "foo", 2.0);
-
- QState *s3 = new QState(&machine);
- QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
-
- QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
- connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
- s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
- connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
-
- machine.addDefaultAnimationForTargetState(s2, defaultAnimation);
- machine.addDefaultAnimationForSourceState(s1, moreSpecificAnimation);
-
- machine.start();
- QCoreApplication::processEvents();
-
- machine.postEvent(new QEvent(QEvent::User));
- QCOREAPPLICATION_EXEC(5000);
-
- QVERIFY(machine.configuration().contains(s3));
- QCOMPARE(counter.counter, 2); // specific animation started and stopped
-}
-
-*/
-
-void tst_QStateMachine::parallelStateAssignmentsDone()
-{
- QStateMachine machine;
-
- QObject *propertyHolder = new QObject(&machine);
- propertyHolder->setProperty("foo", 123);
- propertyHolder->setProperty("bar", 456);
- propertyHolder->setProperty("zoot", 789);
-
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
-
- QState *parallelState = new QState(QState::ParallelStates, &machine);
- parallelState->assignProperty(propertyHolder, "foo", 321);
-
- QState *s2 = new QState(parallelState);
- s2->assignProperty(propertyHolder, "bar", 654);
-
- QState *s3 = new QState(parallelState);
- s3->assignProperty(propertyHolder, "zoot", 987);
-
- s1->addTransition(new EventTransition(QEvent::User, parallelState));
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("foo").toInt(), 123);
- QCOMPARE(propertyHolder->property("bar").toInt(), 456);
- QCOMPARE(propertyHolder->property("zoot").toInt(), 789);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(propertyHolder->property("foo").toInt(), 321);
- QCOMPARE(propertyHolder->property("bar").toInt(), 654);
- QCOMPARE(propertyHolder->property("zoot").toInt(), 987);
-}
-
-void tst_QStateMachine::transitionsFromParallelStateWithNoChildren()
-{
- QStateMachine machine;
-
- QState *parallelState = new QState(QState::ParallelStates, &machine);
- machine.setInitialState(parallelState);
-
- QState *s1 = new QState(&machine);
- parallelState->addTransition(new EventTransition(QEvent::User, s1));
-
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(1, machine.configuration().size());
- QVERIFY(machine.configuration().contains(parallelState));
-
- machine.postEvent(new QEvent(QEvent::User));
-
- QCoreApplication::processEvents();
-
- QCOMPARE(1, machine.configuration().size());
- QVERIFY(machine.configuration().contains(s1));
-}
-
-void tst_QStateMachine::parallelStateTransition()
-{
- QStateMachine machine;
-
- QState *parallelState = new QState(QState::ParallelStates, &machine);
- machine.setInitialState(parallelState);
-
- QState *s1 = new QState(parallelState);
- QState *s2 = new QState(parallelState);
-
- QState *s1InitialChild = new QState(s1);
- s1->setInitialState(s1InitialChild);
-
- QState *s2InitialChild = new QState(s2);
- s2->setInitialState(s2InitialChild);
-
- QState *s1OtherChild = new QState(s1);
-
- s1->addTransition(new EventTransition(QEvent::User, s1OtherChild));
-
- machine.start();
- QCoreApplication::processEvents();
-
- QVERIFY(machine.configuration().contains(parallelState));
- QVERIFY(machine.configuration().contains(s1));
- QVERIFY(machine.configuration().contains(s2));
- QVERIFY(machine.configuration().contains(s1InitialChild));
- QVERIFY(machine.configuration().contains(s2InitialChild));
- QCOMPARE(machine.configuration().size(), 5);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QVERIFY(machine.configuration().contains(parallelState));
-
- QVERIFY(machine.configuration().contains(s1));
-
- QVERIFY(machine.configuration().contains(s2));
- QVERIFY(machine.configuration().contains(s1OtherChild));
- QVERIFY(machine.configuration().contains(s2InitialChild));
- QCOMPARE(machine.configuration().size(), 5);
-
-}
-
-void tst_QStateMachine::nestedRestoreProperties()
-{
- QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
-
- QObject *propertyHolder = new QObject(&machine);
- propertyHolder->setProperty("foo", 1);
- propertyHolder->setProperty("bar", 2);
-
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(propertyHolder, "foo", 3);
-
- QState *s21 = new QState(s2);
- s21->assignProperty(propertyHolder, "bar", 4);
- s2->setInitialState(s21);
-
- QState *s22 = new QState(s2);
- s22->assignProperty(propertyHolder, "bar", 5);
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
- s21->addTransition(new EventTransition(QEvent::User, s22));
-
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
- QCOMPARE(propertyHolder->property("foo").toInt(), 1);
- QCOMPARE(propertyHolder->property("bar").toInt(), 2);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().size(), 2);
- QVERIFY(machine.configuration().contains(s2));
- QVERIFY(machine.configuration().contains(s21));
- QCOMPARE(propertyHolder->property("foo").toInt(), 3);
- QCOMPARE(propertyHolder->property("bar").toInt(), 4);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().size(), 2);
- QVERIFY(machine.configuration().contains(s2));
- QVERIFY(machine.configuration().contains(s22));
- QCOMPARE(propertyHolder->property("foo").toInt(), 3);
- QCOMPARE(propertyHolder->property("bar").toInt(), 5);
-}
-
-void tst_QStateMachine::nestedRestoreProperties2()
-{
- QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
-
- QObject *propertyHolder = new QObject(&machine);
- propertyHolder->setProperty("foo", 1);
- propertyHolder->setProperty("bar", 2);
-
- QState *s1 = new QState(&machine);
- machine.setInitialState(s1);
-
- QState *s2 = new QState(&machine);
- s2->assignProperty(propertyHolder, "foo", 3);
-
- QState *s21 = new QState(s2);
- s21->assignProperty(propertyHolder, "bar", 4);
- s2->setInitialState(s21);
-
- QState *s22 = new QState(s2);
- s22->assignProperty(propertyHolder, "foo", 6);
- s22->assignProperty(propertyHolder, "bar", 5);
-
- s1->addTransition(new EventTransition(QEvent::User, s2));
- s21->addTransition(new EventTransition(QEvent::User, s22));
- s22->addTransition(new EventTransition(QEvent::User, s21));
-
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
- QCOMPARE(propertyHolder->property("foo").toInt(), 1);
- QCOMPARE(propertyHolder->property("bar").toInt(), 2);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().size(), 2);
- QVERIFY(machine.configuration().contains(s2));
- QVERIFY(machine.configuration().contains(s21));
- QCOMPARE(propertyHolder->property("foo").toInt(), 3);
- QCOMPARE(propertyHolder->property("bar").toInt(), 4);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().size(), 2);
- QVERIFY(machine.configuration().contains(s2));
- QVERIFY(machine.configuration().contains(s22));
- QCOMPARE(propertyHolder->property("foo").toInt(), 6);
- QCOMPARE(propertyHolder->property("bar").toInt(), 5);
-
- machine.postEvent(new QEvent(QEvent::User));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().size(), 2);
- QVERIFY(machine.configuration().contains(s2));
- QVERIFY(machine.configuration().contains(s21));
- QCOMPARE(propertyHolder->property("foo").toInt(), 3);
- QCOMPARE(propertyHolder->property("bar").toInt(), 4);
-
-}
-
-void tst_QStateMachine::nestedStateMachines()
-{
- QStateMachine machine;
- QState *group = new QState(&machine);
- group->setChildMode(QState::ParallelStates);
- QStateMachine *subMachines[3];
- for (int i = 0; i < 3; ++i) {
- QState *subGroup = new QState(group);
- QStateMachine *subMachine = new QStateMachine(subGroup);
- {
- QState *initial = new QState(subMachine);
- QFinalState *done = new QFinalState(subMachine);
- initial->addTransition(new EventTransition(QEvent::User, done));
- subMachine->setInitialState(initial);
- }
- QFinalState *subMachineDone = new QFinalState(subGroup);
- subMachine->addTransition(subMachine, SIGNAL(finished()), subMachineDone);
- subGroup->setInitialState(subMachine);
- subMachines[i] = subMachine;
- }
- QFinalState *final = new QFinalState(&machine);
- group->addTransition(group, SIGNAL(finished()), final);
- machine.setInitialState(group);
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 1);
- QTRY_COMPARE(machine.configuration().count(), 1+2*3);
- QVERIFY(machine.configuration().contains(group));
- for (int i = 0; i < 3; ++i)
- QVERIFY(machine.configuration().contains(subMachines[i]));
-
- QCoreApplication::processEvents(); // starts the submachines
-
- for (int i = 0; i < 3; ++i)
- subMachines[i]->postEvent(new QEvent(QEvent::User));
-
- QTRY_COMPARE(finishedSpy.count(), 1);
-}
-
-void tst_QStateMachine::goToState()
-{
- QStateMachine machine;
- QState *s1 = new QState(&machine);
- QState *s2 = new QState(&machine);
- machine.setInitialState(s1);
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 1);
-
- QStateMachinePrivate::get(&machine)->goToState(s2);
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
-
- QStateMachinePrivate::get(&machine)->goToState(s2);
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
-
- QStateMachinePrivate::get(&machine)->goToState(s1);
- QStateMachinePrivate::get(&machine)->goToState(s2);
- QStateMachinePrivate::get(&machine)->goToState(s1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
-
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- // go to state in group
- QState *s2_1 = new QState(s2);
- s2->setInitialState(s2_1);
- QStateMachinePrivate::get(&machine)->goToState(s2_1);
- QCoreApplication::processEvents();
- QCOMPARE(machine.configuration().size(), 2);
- QVERIFY(machine.configuration().contains(s2));
- QVERIFY(machine.configuration().contains(s2_1));
-}
-
-class CloneSignalTransition : public QSignalTransition
-{
-public:
- CloneSignalTransition(QObject *sender, const char *signal, QAbstractState *target)
- : QSignalTransition(sender, signal)
- {
- setTargetState(target);
- }
-
- void onTransition(QEvent *e)
- {
- QSignalTransition::onTransition(e);
- QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(e);
- eventSignalIndex = se->signalIndex();
- }
-
- int eventSignalIndex;
-};
-
-void tst_QStateMachine::task260403_clonedSignals()
-{
- SignalEmitter emitter;
- QStateMachine machine;
- QState *s1 = new QState(&machine);
- QState *s2 = new QState(&machine);
- CloneSignalTransition *t1 = new CloneSignalTransition(&emitter, SIGNAL(signalWithDefaultArg()), s2);
- s1->addTransition(t1);
-
- machine.setInitialState(s1);
- machine.start();
- QTest::qWait(1);
-
- emitter.emitSignalWithDefaultArg();
- QTest::qWait(1);
- QCOMPARE(t1->eventSignalIndex, emitter.metaObject()->indexOfSignal("signalWithDefaultArg()"));
-}
-
-class EventPosterThread : public QThread
-{
- Q_OBJECT
-public:
- EventPosterThread(QStateMachine *machine, QObject *parent = 0)
- : QThread(parent), m_machine(machine), m_count(0)
- {
- moveToThread(this);
- QObject::connect(m_machine, SIGNAL(started()),
- this, SLOT(postEvent()));
- }
-protected:
- virtual void run()
- {
- exec();
- }
-private Q_SLOTS:
- void postEvent()
- {
- m_machine->postEvent(new QEvent(QEvent::User));
- if (++m_count < 10000)
- QTimer::singleShot(0, this, SLOT(postEvent()));
- else
- quit();
- }
-private:
- QStateMachine *m_machine;
- int m_count;
-};
-
-void tst_QStateMachine::postEventFromOtherThread()
-{
- QStateMachine machine;
- EventPosterThread poster(&machine);
- StringEventPoster *s1 = new StringEventPoster("foo", &machine);
- s1->addTransition(new EventTransition(QEvent::User, s1));
- QFinalState *f = new QFinalState(&machine);
- s1->addTransition(&poster, SIGNAL(finished()), f);
- machine.setInitialState(s1);
-
- poster.start();
-
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.start();
- QTRY_COMPARE(finishedSpy.count(), 1);
-}
-
-void tst_QStateMachine::eventFilterForApplication()
-{
- QStateMachine machine;
-
- QState *s1 = new QState(&machine);
- {
- machine.setInitialState(s1);
- }
-
- QState *s2 = new QState(&machine);
-
- QEventTransition *transition = new QEventTransition(QCoreApplication::instance(),
- QEvent::ApplicationActivate);
- transition->setTargetState(s2);
- s1->addTransition(transition);
-
- machine.start();
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-
- QCoreApplication::postEvent(QCoreApplication::instance(),
- new QEvent(QEvent::ApplicationActivate));
- QCoreApplication::processEvents();
-
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
-}
-
-void tst_QStateMachine::eventClassesExported()
-{
- // make sure this links
- QStateMachine::WrappedEvent *wrappedEvent = new QStateMachine::WrappedEvent(0, 0);
- Q_UNUSED(wrappedEvent);
- QStateMachine::SignalEvent *signalEvent = new QStateMachine::SignalEvent(0, 0, QList<QVariant>());
- Q_UNUSED(signalEvent);
-}
-
-void tst_QStateMachine::stopInTransitionToFinalState()
-{
- QStateMachine machine;
- QState *s1 = new QState(&machine);
- QFinalState *s2 = new QFinalState(&machine);
- QAbstractTransition *t1 = s1->addTransition(s2);
- machine.setInitialState(s1);
-
- QObject::connect(t1, SIGNAL(triggered()), &machine, SLOT(stop()));
- QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- QSignalSpy s2EnteredSpy(s2, SIGNAL(entered()));
- machine.start();
-
- // Stopping should take precedence over finished.
- QTRY_COMPARE(stoppedSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 0);
- QCOMPARE(s2EnteredSpy.count(), 1);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s2));
-}
-
-class StopInEventTestTransition : public QAbstractTransition
-{
-public:
- bool eventTest(QEvent *e)
- {
- if (e->type() == QEvent::User)
- machine()->stop();
- return false;
- }
- void onTransition(QEvent *)
- { }
-};
-
-void tst_QStateMachine::stopInEventTest_data()
-{
- QTest::addColumn<int>("eventPriority");
- QTest::newRow("NormalPriority") << int(QStateMachine::NormalPriority);
- QTest::newRow("HighPriority") << int(QStateMachine::HighPriority);
-}
-
-void tst_QStateMachine::stopInEventTest()
-{
- QFETCH(int, eventPriority);
-
- QStateMachine machine;
- QState *s1 = new QState(&machine);
- s1->addTransition(new StopInEventTestTransition());
- machine.setInitialState(s1);
-
- QSignalSpy startedSpy(&machine, SIGNAL(started()));
- machine.start();
- QTRY_COMPARE(startedSpy.count(), 1);
-
- QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
- QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
- machine.postEvent(new QEvent(QEvent::User), QStateMachine::EventPriority(eventPriority));
-
- QTRY_COMPARE(stoppedSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 0);
- QCOMPARE(machine.configuration().size(), 1);
- QVERIFY(machine.configuration().contains(s1));
-}
-
-QTEST_MAIN(tst_QStateMachine)
-#include "tst_qstatemachine.moc"
diff --git a/tests/auto/qstatictext/qstatictext.pro b/tests/auto/qstatictext/qstatictext.pro
deleted file mode 100644
index 0c16c4c149..0000000000
--- a/tests/auto/qstatictext/qstatictext.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-load(qttest_p4)
-QT = core core-private gui gui-private
-SOURCES += tst_qstatictext.cpp
-
diff --git a/tests/auto/qstatictext/tst_qstatictext.cpp b/tests/auto/qstatictext/tst_qstatictext.cpp
deleted file mode 100644
index 5d5ed3c737..0000000000
--- a/tests/auto/qstatictext/tst_qstatictext.cpp
+++ /dev/null
@@ -1,869 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include <QtGui/QApplication>
-#include <QtGui/QPainter>
-#include <QtGui/QImage>
-
-#include <qstatictext.h>
-#include <qpaintengine.h>
-
-#include <private/qstatictext_p.h>
-#include <private/qapplication_p.h>
-
-// #define DEBUG_SAVE_IMAGE
-
-class tst_QStaticText: public QObject
-{
- Q_OBJECT
-
-private:
- bool supportsTransformations() const;
-
-private slots:
- void initTestCase();
-
- void init();
- void cleanup();
-
- void constructionAndDestruction();
- void drawToPoint_data();
- void drawToPoint();
- void drawToRect_data();
- void drawToRect();
- void setFont();
- void setTextWidth();
- void prepareToCorrectData();
- void prepareToWrongData();
-
- void copyConstructor();
-
- void translatedPainter();
- void rotatedPainter();
- void scaledPainter();
- void projectedPainter();
-#if 0
- void rotatedScaledAndTranslatedPainter_data();
- void rotatedScaledAndTranslatedPainter();
-#endif
- void transformationChanged();
-
- void plainTextVsRichText();
-
- void setPenPlainText();
- void setPenRichText();
- void richTextOverridesPen();
-
- void drawStruckOutText();
- void drawOverlinedText();
- void drawUnderlinedText();
-
- void unprintableCharacter_qtbug12614();
-
- void underlinedColor_qtbug20159();
- void textDocumentColor();
-
-private:
- QImage const m_whiteSquare;
-};
-
-void tst_QStaticText::initTestCase()
-{
- // a "blank" square; we compare against in our testfunctions to verify
- // that we have actually painted something
- QPixmap pm(1000, 1000);
- pm.fill(Qt::white);
- const_cast<QImage&>(m_whiteSquare) = pm.toImage();
-}
-
-void tst_QStaticText::init()
-{
-}
-
-void tst_QStaticText::cleanup()
-{
-}
-
-void tst_QStaticText::constructionAndDestruction()
-{
- QStaticText text("My text");
-}
-
-void tst_QStaticText::copyConstructor()
-{
- QStaticText text(QLatin1String("My text"));
-
- QTextOption textOption(Qt::AlignRight);
- text.setTextOption(textOption);
-
- text.setPerformanceHint(QStaticText::AggressiveCaching);
- text.setTextWidth(123.456);
- text.setTextFormat(Qt::PlainText);
-
- QStaticText copiedText(text);
- copiedText.setText(QLatin1String("Other text"));
-
- QCOMPARE(copiedText.textOption().alignment(), Qt::AlignRight);
- QCOMPARE(copiedText.performanceHint(), QStaticText::AggressiveCaching);
- QCOMPARE(copiedText.textWidth(), 123.456);
- QCOMPARE(copiedText.textFormat(), Qt::PlainText);
-
- QStaticText otherCopiedText(copiedText);
- otherCopiedText.setTextWidth(789);
-
- QCOMPARE(otherCopiedText.text(), QString::fromLatin1("Other text"));
-}
-
-Q_DECLARE_METATYPE(QStaticText::PerformanceHint)
-void tst_QStaticText::drawToPoint_data()
-{
- QTest::addColumn<QStaticText::PerformanceHint>("performanceHint");
-
- QTest::newRow("Moderate caching") << QStaticText::ModerateCaching;
- QTest::newRow("Aggressive caching") << QStaticText::AggressiveCaching;
-}
-
-void tst_QStaticText::drawToPoint()
-{
- QFETCH(QStaticText::PerformanceHint, performanceHint);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
- text.setPerformanceHint(performanceHint);
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::drawToRect_data()
-{
- QTest::addColumn<QStaticText::PerformanceHint>("performanceHint");
-
- QTest::newRow("Moderate caching") << QStaticText::ModerateCaching;
- QTest::newRow("Aggressive caching") << QStaticText::AggressiveCaching;
-}
-
-void tst_QStaticText::drawToRect()
-{
- QFETCH(QStaticText::PerformanceHint, performanceHint);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.drawText(QRectF(11, 12, 10, 500), "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextWidth(10),
- p.setClipRect(QRectF(11, 12, 10, 500));
- text.setPerformanceHint(performanceHint);
- text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("drawToRect_imageDrawText.png");
- imageDrawStaticText.save("drawToRect_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::prepareToCorrectData()
-{
- QTransform transform;
- transform.scale(2.0, 2.0);
- transform.rotate(90, Qt::ZAxis);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.setTransform(transform);
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.setTransform(transform);
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.prepare(transform, p.font());
- text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("prepareToCorrectData_imageDrawText.png");
- imageDrawStaticText.save("prepareToCorrectData_imageDrawStaticText.png");
-#endif
-
-#ifdef Q_WS_QPA
- QEXPECT_FAIL("", "QTBUG-20977 fails on qpa", Abort);
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
-
- if (!supportsTransformations())
- QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::prepareToWrongData()
-{
- QTransform transform;
- transform.scale(2.0, 2.0);
- transform.rotate(90, Qt::ZAxis);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.prepare(transform, p.font());
- text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-
-void tst_QStaticText::setFont()
-{
- QFont font = QApplication::font();
- font.setBold(true);
- font.setPointSize(28);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
-
- p.setFont(font);
- p.drawText(QRectF(11, 120, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
-
- QStaticText text;
- text.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(0, 0, text);
-
- p.setFont(font);
- p.drawStaticText(11, 120, text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("setFont_imageDrawText.png");
- imageDrawStaticText.save("setFont_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::setTextWidth()
-{
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.drawText(QRectF(11, 12, 10, 500), "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextWidth(10);
- p.setClipRect(QRectF(11, 12, 10, 500));
- p.drawStaticText(QPointF(11, 12), text);
- }
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::translatedPainter()
-{
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.translate(100, 200);
-
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.translate(100, 200);
-
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-bool tst_QStaticText::supportsTransformations() const
-{
- QPixmap pm(10, 10);
- QPainter p(&pm);
- QPaintEngine *engine = p.paintEngine();
-
- QPaintEngine::Type type = engine->type();
-
- if (type == QPaintEngine::OpenGL
-#if !defined(Q_WS_WIN) && !defined(Q_WS_X11) && !defined(Q_WS_MAC)
- || type == QPaintEngine::Raster
-#endif
- )
- return false;
-
- return true;
-}
-
-void tst_QStaticText::rotatedPainter()
-{
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.rotate(30.0);
- p.drawText(QRectF(0, 0, 1000, 100), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- QPainter p(&imageDrawStaticText);
- p.rotate(30.0);
- p.drawStaticText(QPoint(0, 0), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("rotatedPainter_imageDrawText.png");
- imageDrawStaticText.save("rotatedPainter_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
-
- if (!supportsTransformations())
- QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::scaledPainter()
-{
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.scale(2.0, 0.2);
-
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.scale(2.0, 0.2);
-
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
-
- if (!supportsTransformations())
- QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::projectedPainter()
-{
- QTransform transform;
- transform.rotate(90, Qt::XAxis);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.setTransform(transform);
-
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.setTransform(transform);
-
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-#if 0
-void tst_QStaticText::rotatedScaledAndTranslatedPainter_data()
-{
- QTest::addColumn<qreal>("offset");
-
- for (int i=0; i<100; ++i) {
- qreal offset = 300 + i / 100.;
- QTest::newRow(QByteArray::number(offset).constData()) << offset;
- }
-}
-
-void tst_QStaticText::rotatedScaledAndTranslatedPainter()
-{
- QFETCH(qreal, offset);
-
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.translate(offset, 0);
- p.rotate(45.0);
- p.scale(2.0, 2.0);
- p.translate(100, 200);
-
- p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.translate(offset, 0);
- p.rotate(45.0);
- p.scale(2.0, 2.0);
- p.translate(100, 200);
-
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("rotatedScaledAndPainter_imageDrawText.png");
- imageDrawStaticText.save("rotatedScaledAndPainter_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
-
- if (!supportsTransformations())
- QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-#endif
-
-void tst_QStaticText::transformationChanged()
-{
- QPixmap imageDrawText(1000, 1000);
- imageDrawText.fill(Qt::white);
- {
- QPainter p(&imageDrawText);
- p.rotate(33.0);
- p.scale(0.5, 0.7);
-
- p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
-
- p.scale(2.0, 2.5);
- p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- }
-
- QPixmap imageDrawStaticText(1000, 1000);
- imageDrawStaticText.fill(Qt::white);
- {
- QPainter p(&imageDrawStaticText);
- p.rotate(33.0);
- p.scale(0.5, 0.7);
-
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(QPointF(0, 0), text);
-
- p.scale(2.0, 2.5);
- p.drawStaticText(QPointF(0, 0), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("transformationChanged_imageDrawText.png");
- imageDrawStaticText.save("transformationChanged_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
-
- if (!supportsTransformations())
- QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
- QCOMPARE(imageDrawStaticText, imageDrawText);
-}
-
-void tst_QStaticText::plainTextVsRichText()
-{
- QPixmap imagePlainText(1000, 1000);
- imagePlainText.fill(Qt::white);
- {
- QPainter p(&imagePlainText);
-
- QStaticText staticText;
- staticText.setText("FOObar");
- staticText.setTextFormat(Qt::PlainText);
-
- p.drawStaticText(10, 10, staticText);
- }
-
- QPixmap imageRichText(1000, 1000);
- imageRichText.fill(Qt::white);
- {
- QPainter p(&imageRichText);
-
- QStaticText staticText;
- staticText.setText("<html><body>FOObar</body></html>");
- staticText.setTextFormat(Qt::RichText);
-
- p.drawStaticText(10, 10, staticText);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imagePlainText.save("plainTextVsRichText_imagePlainText.png");
- imageRichText.save("plainTextVsRichText_imageRichText.png");
-#endif
-
- QVERIFY(imagePlainText.toImage() != m_whiteSquare);
- QCOMPARE(imagePlainText, imageRichText);
-}
-
-void tst_QStaticText::setPenPlainText()
-{
- QFont font = QApplication::font();
- font.setStyleStrategy(QFont::NoAntialias);
-
- QFontMetricsF fm(font);
- QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
- image.fill(Qt::white);
- {
- QPainter p(&image);
- p.setFont(font);
- p.setPen(Qt::green);
-
- QStaticText staticText("XXXXX");
- staticText.setTextFormat(Qt::PlainText);
- p.drawStaticText(0, 0, staticText);
- }
-
- QImage img = image.toImage();
- for (int x=0; x<img.width(); ++x) {
- for (int y=0; y<img.height(); ++y) {
- QRgb pixel = img.pixel(x, y);
- QVERIFY(pixel == QColor(Qt::white).rgba()
- || pixel == QColor(Qt::green).rgba());
- }
- }
-}
-
-void tst_QStaticText::setPenRichText()
-{
- QFont font = QApplication::font();
- font.setStyleStrategy(QFont::NoAntialias);
-
- QFontMetricsF fm(font);
- QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
- image.fill(Qt::white);
- {
- QPainter p(&image);
- p.setFont(font);
- p.setPen(Qt::green);
-
- QStaticText staticText;
- staticText.setText("<html><body>XXXXX</body></html>");
- staticText.setTextFormat(Qt::RichText);
- p.drawStaticText(0, 0, staticText);
- }
-
- QImage img = image.toImage();
- for (int x=0; x<img.width(); ++x) {
- for (int y=0; y<img.height(); ++y) {
- QRgb pixel = img.pixel(x, y);
- QVERIFY(pixel == QColor(Qt::white).rgba()
- || pixel == QColor(Qt::green).rgba());
- }
- }
-}
-
-void tst_QStaticText::richTextOverridesPen()
-{
- QFont font = QApplication::font();
- font.setStyleStrategy(QFont::NoAntialias);
-
- QFontMetricsF fm(font);
- QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
- image.fill(Qt::white);
- {
- QPainter p(&image);
- p.setFont(font);
- p.setPen(Qt::green);
-
- QStaticText staticText;
- staticText.setText("<html><body><font color=\"#ff0000\">XXXXX</font></body></html>");
- staticText.setTextFormat(Qt::RichText);
- p.drawStaticText(0, 0, staticText);
- }
-
- QImage img = image.toImage();
- for (int x=0; x<img.width(); ++x) {
- for (int y=0; y<img.height(); ++y) {
- QRgb pixel = img.pixel(x, y);
- QVERIFY(pixel == QColor(Qt::white).rgba()
- || pixel == QColor(Qt::red).rgba());
- }
- }
-}
-
-void tst_QStaticText::drawStruckOutText()
-{
- QPixmap imageDrawText(1000, 1000);
- QPixmap imageDrawStaticText(1000, 1000);
-
- imageDrawText.fill(Qt::white);
- imageDrawStaticText.fill(Qt::white);
-
- QString s = QString::fromLatin1("Foobar");
-
- QFont font;
- font.setStrikeOut(true);
-
- {
- QPainter p(&imageDrawText);
- p.setFont(font);
- p.drawText(QPointF(50, 50), s);
- }
-
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text = QStaticText(s);
- p.setFont(font);
- p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("drawStruckOutText_imageDrawText.png");
- imageDrawStaticText.save("drawStruckOutText_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawText, imageDrawStaticText);
-}
-
-void tst_QStaticText::drawOverlinedText()
-{
- QPixmap imageDrawText(1000, 1000);
- QPixmap imageDrawStaticText(1000, 1000);
-
- imageDrawText.fill(Qt::white);
- imageDrawStaticText.fill(Qt::white);
-
- QString s = QString::fromLatin1("Foobar");
-
- QFont font;
- font.setOverline(true);
-
- {
- QPainter p(&imageDrawText);
- p.setFont(font);
- p.drawText(QPointF(50, 50), s);
- }
-
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text = QStaticText(s);
- p.setFont(font);
- p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("drawOverlinedText_imageDrawText.png");
- imageDrawStaticText.save("drawOverlinedText_imageDrawStaticText.png");
-#endif
-
- QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawText, imageDrawStaticText);
-}
-
-void tst_QStaticText::drawUnderlinedText()
-{
- QPixmap imageDrawText(1000, 1000);
- QPixmap imageDrawStaticText(1000, 1000);
-
- imageDrawText.fill(Qt::white);
- imageDrawStaticText.fill(Qt::white);
-
- QString s = QString::fromLatin1("Foobar");
-
- QFont font;
- font.setUnderline(true);
-
- {
- QPainter p(&imageDrawText);
- p.setFont(font);
- p.drawText(QPointF(50, 50), s);
- }
-
- {
- QPainter p(&imageDrawStaticText);
- QStaticText text = QStaticText(s);
- p.setFont(font);
- p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
- }
-
-#if defined(DEBUG_SAVE_IMAGE)
- imageDrawText.save("drawUnderlinedText_imageDrawText.png");
- imageDrawStaticText.save("drawUnderlinedText_imageDrawStaticText.png");
-#endif
-
- QCOMPARE(imageDrawText, imageDrawStaticText);
-}
-
-void tst_QStaticText::unprintableCharacter_qtbug12614()
-{
- QString s(QChar(0x200B)); // U+200B, ZERO WIDTH SPACE
-
- QStaticText staticText(s);
-
- QVERIFY(staticText.size().isValid()); // Force layout. Should not crash.
-}
-
-void tst_QStaticText::underlinedColor_qtbug20159()
-{
- QString multiScriptText;
- multiScriptText += QChar(0x0410); // Cyrillic 'A'
- multiScriptText += QLatin1Char('A');
-
- QStaticText staticText(multiScriptText);
-
- QFont font;
- font.setUnderline(true);
-
- staticText.prepare(QTransform(), font);
-
- QStaticTextPrivate *d = QStaticTextPrivate::get(&staticText);
- QCOMPARE(d->itemCount, 2);
-
- // The pen should not be marked as dirty when drawing the underline
- QVERIFY(!d->items[0].color.isValid());
- QVERIFY(!d->items[1].color.isValid());
-}
-
-void tst_QStaticText::textDocumentColor()
-{
- QStaticText staticText("A<font color=\"red\">B</font>");
- staticText.setTextFormat(Qt::RichText);
- staticText.prepare();
-
- QStaticTextPrivate *d = QStaticTextPrivate::get(&staticText);
- QCOMPARE(d->itemCount, 2);
-
- // The pen should not be marked as dirty when drawing the underline
- QVERIFY(!d->items[0].color.isValid());
- QVERIFY(d->items[1].color.isValid());
-
- QCOMPARE(d->items[1].color, QColor(Qt::red));
-}
-
-QTEST_MAIN(tst_QStaticText)
-#include "tst_qstatictext.moc"
diff --git a/tests/auto/qstatusbar/qstatusbar.pro b/tests/auto/qstatusbar/qstatusbar.pro
index 6c79001af1..51ec0e9cdb 100644
--- a/tests/auto/qstatusbar/qstatusbar.pro
+++ b/tests/auto/qstatusbar/qstatusbar.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qstatusbar.cpp
diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp
deleted file mode 100644
index 844624ab45..0000000000
--- a/tests/auto/qstring/tst_qstring.cpp
+++ /dev/null
@@ -1,5147 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include <qregexp.h>
-#include <qtextcodec.h>
-#include <qtextstream.h>
-#include <qstringlist.h>
-#include <qstringmatcher.h>
-#include <qbytearraymatcher.h>
-#include <qvariant.h>
-
-#include <qlocale.h>
-#include <locale.h>
-
-Q_DECLARE_METATYPE(qlonglong)
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-#define CREATE_REF(string) \
- const QString padded = QString::fromLatin1(" %1 ").arg(string); \
- QStringRef ref = padded.midRef(1, padded.size() - 2);
-
-class tst_QString : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QString();
- virtual ~tst_QString();
-
-
-public slots:
- void init();
- void cleanup();
-private slots:
- void fromStdString();
- void toStdString();
- void check_QTextIOStream();
- void check_QTextStream();
- void check_QDataStream();
- void fromRawData();
- void setRawData();
- void endsWith();
- void startsWith();
- void setNum();
- void toDouble_data();
- void toDouble();
- void toFloat();
- void toLong_data();
- void toLong();
- void toULong_data();
- void toULong();
- void toLongLong();
- void toULongLong();
- void toUInt();
- void toInt();
- void toShort();
- void toUShort();
- void replace_qchar_qchar_data();
- void replace_qchar_qchar();
- void replace_qchar_qstring_data();
- void replace_qchar_qstring();
- void replace_uint_uint_data();
- void replace_uint_uint();
- void replace_uint_uint_extra();
- void replace_string_data();
- void replace_string();
- void replace_regexp_data();
- void replace_regexp();
- void remove_uint_uint_data();
- void remove_uint_uint();
- void remove_string_data();
- void remove_string();
- void remove_regexp_data();
- void remove_regexp();
- void swap();
- void prepend();
- void prepend_bytearray_data();
- void prepend_bytearray();
- void append();
- void append_bytearray_data();
- void append_bytearray();
- void operator_pluseq_bytearray_data();
- void operator_pluseq_bytearray();
- void operator_eqeq_nullstring();
- void operator_smaller();
- void insert();
- void simplified_data();
- void simplified();
- void trimmed();
- void toLower();
- void toUpper();
- void rightJustified();
- void leftJustified();
- void mid();
- void right();
- void left();
- void midRef();
- void rightRef();
- void leftRef();
- void stringRef();
- void contains();
- void count();
- void lastIndexOf_data();
- void lastIndexOf();
- void indexOf_data();
- void indexOf();
- void indexOf2_data();
- void indexOf2();
- void indexOf3_data();
-// void indexOf3();
- void sprintf();
- void fill();
- void truncate();
- void constructor();
- void constructorQByteArray_data();
- void constructorQByteArray();
- void STL();
- void isEmpty();
- void isNull();
- void acc_01();
- void length_data();
- void length();
- void utf8_data();
- void utf8();
- void fromUtf8_data();
- void fromUtf8();
- void nullFromUtf8();
- void fromLocal8Bit_data();
- void fromLocal8Bit();
- void local8Bit_data();
- void local8Bit();
- void fromLatin1Roundtrip_data();
- void fromLatin1Roundtrip();
- void toLatin1Roundtrip_data();
- void toLatin1Roundtrip();
- void stringRef_toLatin1Roundtrip_data();
- void stringRef_toLatin1Roundtrip();
- void stringRef_utf8_data();
- void stringRef_utf8();
- void stringRef_local8Bit_data();
- void stringRef_local8Bit();
- void fromLatin1();
- void fromAscii();
- void arg();
- void number();
- void arg_fillChar_data();
- void arg_fillChar();
- void capacity_data();
- void capacity();
- void section_data();
- void section();
- void double_conversion_data();
- void double_conversion();
- void integer_conversion_data();
- void integer_conversion();
- void tortureSprintfDouble();
- void toNum();
- void localeAwareCompare_data();
- void localeAwareCompare();
- void split_data();
- void split();
- void split_regexp();
- void fromUtf16_data();
- void fromUtf16();
- void latin1String();
- void nanAndInf();
- void compare_data();
- void compare();
- void resizeAfterFromRawData();
- void resizeAfterReserve();
- void resizeWithNegative() const;
- void truncateWithNegative() const;
- void QCharRefMutableUnicode() const;
- void QCharRefDetaching() const;
- void sprintfZU() const;
- void repeatedSignature() const;
- void repeated() const;
- void repeated_data() const;
- void task262677remove();
- void QTBUG10404_compareRef();
- void QTBUG9281_arg_locale();
-
- void toUpperLower_icu();
- void literals();
-};
-
-typedef QList<int> IntList;
-
-Q_DECLARE_METATYPE(QList<QVariant>)
-Q_DECLARE_METATYPE(IntList)
-
-// This next bit is needed for the NAN and INF in string -> number conversion tests
-#include <float.h>
-#include <limits.h>
-#include <math.h>
-#if defined (Q_WS_WIN)
-# include <windows.h>
-// mingw defines NAN and INFINITY to 0/0 and x/0
-# if defined(Q_CC_GNU)
-# undef NAN
-# undef INFINITY
-# else
-# define isnan(d) _isnan(d)
-# endif
-#endif
-#if defined (Q_OS_MAC) && !defined isnan
-#define isnan(d) __isnand(d)
-#endif
-#if defined (Q_OS_SOLARIS)
-# include <ieeefp.h>
-#endif
-#if defined (Q_OS_OSF) && (defined(__DECC) || defined(__DECCXX))
-# define INFINITY DBL_INFINITY
-# define NAN DBL_QNAN
-#endif
-#if defined(Q_OS_IRIX) && defined(Q_CC_GNU)
-# include <ieeefp.h>
-# define isnan(d) isnand(d)
-#endif
-
-enum {
- LittleEndian,
- BigEndian
-#ifdef Q_BYTE_ORDER
-# if Q_BYTE_ORDER == Q_BIG_ENDIAN
- , ByteOrder = BigEndian
-# elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN
- , ByteOrder = LittleEndian
-# else
-# error "undefined byte order"
-# endif
-};
-#else
-};
-static const unsigned int one = 1;
-static const bool ByteOrder = ((*((unsigned char *) &one) == 0) ? BigEndian : LittleEndian);
-#endif
-#if !defined(INFINITY)
-static const unsigned char be_inf_bytes[] = { 0x7f, 0xf0, 0, 0, 0, 0, 0,0 };
-static const unsigned char le_inf_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f };
-static inline double inf()
-{
- if (ByteOrder == BigEndian)
- return *reinterpret_cast<const double *>(be_inf_bytes);
- return *reinterpret_cast<const double *>(le_inf_bytes);
-}
-# define INFINITY (::inf())
-#endif
-#if !defined(NAN)
-static const unsigned char be_nan_bytes[] = { 0x7f, 0xf8, 0, 0, 0, 0, 0,0 };
-static const unsigned char le_nan_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf8, 0x7f };
-static inline double nan()
-{
- if (ByteOrder == BigEndian)
- return *reinterpret_cast<const double *>(be_nan_bytes);
- return *reinterpret_cast<const double *>(le_nan_bytes);
-}
-# define NAN (::nan())
-#endif
-
-tst_QString::tst_QString()
-{
- QTextCodec::setCodecForLocale(QTextCodec::codecForName("ISO 8859-1"));
-}
-
-tst_QString::~tst_QString()
-{
-}
-
-void tst_QString::init()
-{
-}
-
-void tst_QString::cleanup()
-{
- QLocale::setDefault(QString("C"));
-}
-
-void tst_QString::remove_uint_uint_data()
-{
- replace_uint_uint_data();
-}
-
-void tst_QString::remove_string_data()
-{
- replace_string_data();
-}
-
-void tst_QString::remove_regexp_data()
-{
- replace_regexp_data();
-}
-
-void tst_QString::indexOf3_data()
-{
- indexOf2_data();
-}
-
-void tst_QString::length_data()
-{
- QTest::addColumn<QString>("s1" );
- QTest::addColumn<int>("res" );
-
- QTest::newRow( "data0" ) << QString("Test") << 4;
- QTest::newRow( "data1" ) << QString("The quick brown fox jumps over the lazy dog") << 43;
- QTest::newRow( "data2" ) << QString() << 0;
- QTest::newRow( "data3" ) << QString("A") << 1;
- QTest::newRow( "data4" ) << QString("AB") << 2;
- QTest::newRow( "data5" ) << QString("AB\n") << 3;
- QTest::newRow( "data6" ) << QString("AB\nC") << 4;
- QTest::newRow( "data7" ) << QString("\n") << 1;
- QTest::newRow( "data8" ) << QString("\nA") << 2;
- QTest::newRow( "data9" ) << QString("\nAB") << 3;
- QTest::newRow( "data10" ) << QString("\nAB\nCDE") << 7;
- QTest::newRow( "data11" ) << QString("shdnftrheid fhgnt gjvnfmd chfugkh bnfhg thgjf vnghturkf chfnguh bjgnfhvygh hnbhgutjfv dhdnjds dcjs d") << 100;
-}
-
-void tst_QString::replace_qchar_qchar_data()
-{
- QTest::addColumn<QString>("src" );
- QTest::addColumn<QChar>("before" );
- QTest::addColumn<QChar>("after" );
- QTest::addColumn<int>("cs" );
- QTest::addColumn<QString>("expected" );
-
- QTest::newRow( "1" ) << QString("foo") << QChar('o') << QChar('a')
- << int(Qt::CaseSensitive) << QString("faa");
- QTest::newRow( "2" ) << QString("foo") << QChar('o') << QChar('a')
- << int(Qt::CaseInsensitive) << QString("faa");
- QTest::newRow( "3" ) << QString("foo") << QChar('O') << QChar('a')
- << int(Qt::CaseSensitive) << QString("foo");
- QTest::newRow( "4" ) << QString("foo") << QChar('O') << QChar('a')
- << int(Qt::CaseInsensitive) << QString("faa");
- QTest::newRow( "5" ) << QString("ababABAB") << QChar('a') << QChar(' ')
- << int(Qt::CaseSensitive) << QString(" b bABAB");
- QTest::newRow( "6" ) << QString("ababABAB") << QChar('a') << QChar(' ')
- << int(Qt::CaseInsensitive) << QString(" b b B B");
- QTest::newRow( "7" ) << QString("ababABAB") << QChar() << QChar(' ')
- << int(Qt::CaseInsensitive) << QString("ababABAB");
-}
-
-void tst_QString::replace_qchar_qchar()
-{
- QFETCH(QString, src);
- QFETCH(QChar, before);
- QFETCH(QChar, after);
- QFETCH(int, cs);
- QFETCH(QString, expected);
-
- QCOMPARE(src.replace(before, after, Qt::CaseSensitivity(cs)), expected);
-}
-
-void tst_QString::replace_qchar_qstring_data()
-{
- QTest::addColumn<QString>("src" );
- QTest::addColumn<QChar>("before" );
- QTest::addColumn<QString>("after" );
- QTest::addColumn<int>("cs" );
- QTest::addColumn<QString>("expected" );
-
- QTest::newRow( "1" ) << QString("foo") << QChar('o') << QString("aA")
- << int(Qt::CaseSensitive) << QString("faAaA");
- QTest::newRow( "2" ) << QString("foo") << QChar('o') << QString("aA")
- << int(Qt::CaseInsensitive) << QString("faAaA");
- QTest::newRow( "3" ) << QString("foo") << QChar('O') << QString("aA")
- << int(Qt::CaseSensitive) << QString("foo");
- QTest::newRow( "4" ) << QString("foo") << QChar('O') << QString("aA")
- << int(Qt::CaseInsensitive) << QString("faAaA");
- QTest::newRow( "5" ) << QString("ababABAB") << QChar('a') << QString(" ")
- << int(Qt::CaseSensitive) << QString(" b bABAB");
- QTest::newRow( "6" ) << QString("ababABAB") << QChar('a') << QString(" ")
- << int(Qt::CaseInsensitive) << QString(" b b B B");
- QTest::newRow( "7" ) << QString("ababABAB") << QChar() << QString(" ")
- << int(Qt::CaseInsensitive) << QString("ababABAB");
- QTest::newRow( "8" ) << QString("ababABAB") << QChar() << QString()
- << int(Qt::CaseInsensitive) << QString("ababABAB");
-}
-
-void tst_QString::replace_qchar_qstring()
-{
- QFETCH(QString, src);
- QFETCH(QChar, before);
- QFETCH(QString, after);
- QFETCH(int, cs);
- QFETCH(QString, expected);
-
- QCOMPARE(src.replace(before, after, Qt::CaseSensitivity(cs)), expected);
-}
-
-void tst_QString::replace_uint_uint_data()
-{
- QTest::addColumn<QString>("string" );
- QTest::addColumn<int>("index" );
- QTest::addColumn<int>("len" );
- QTest::addColumn<QString>("after" );
- QTest::addColumn<QString>("result" );
-
- QTest::newRow( "rem00" ) << QString("-<>ABCABCABCABC>") << 0 << 3 << QString("") << QString("ABCABCABCABC>");
- QTest::newRow( "rem01" ) << QString("ABCABCABCABC>") << 1 << 4 << QString("") << QString("ACABCABC>");
- QTest::newRow( "rem04" ) << QString("ACABCABC>") << 8 << 4 << QString("") << QString("ACABCABC");
- QTest::newRow( "rem05" ) << QString("ACABCABC") << 7 << 1 << QString("") << QString("ACABCAB");
- QTest::newRow( "rem06" ) << QString("ACABCAB") << 4 << 0 << QString("") << QString("ACABCAB");
-
- QTest::newRow( "rep00" ) << QString("ACABCAB") << 4 << 0 << QString("X") << QString("ACABXCAB");
- QTest::newRow( "rep01" ) << QString("ACABXCAB") << 4 << 1 << QString("Y") << QString("ACABYCAB");
- QTest::newRow( "rep02" ) << QString("ACABYCAB") << 4 << 1 << QString("") << QString("ACABCAB");
- QTest::newRow( "rep03" ) << QString("ACABCAB") << 0 << 9999 << QString("XX") << QString("XX");
- QTest::newRow( "rep04" ) << QString("XX") << 0 << 9999 << QString("") << QString("");
- QTest::newRow( "rep05" ) << QString("ACABCAB") << 0 << 2 << QString("XX") << QString("XXABCAB");
- QTest::newRow( "rep06" ) << QString("ACABCAB") << 1 << 2 << QString("XX") << QString("AXXBCAB");
- QTest::newRow( "rep07" ) << QString("ACABCAB") << 2 << 2 << QString("XX") << QString("ACXXCAB");
- QTest::newRow( "rep08" ) << QString("ACABCAB") << 3 << 2 << QString("XX") << QString("ACAXXAB");
- QTest::newRow( "rep09" ) << QString("ACABCAB") << 4 << 2 << QString("XX") << QString("ACABXXB");
- QTest::newRow( "rep10" ) << QString("ACABCAB") << 5 << 2 << QString("XX") << QString("ACABCXX");
- QTest::newRow( "rep10" ) << QString("ACABCAB") << 6 << 2 << QString("XX") << QString("ACABCAXX");
- QTest::newRow( "rep12" ) << QString() << 0 << 10 << QString("X") << QString("X");
- QTest::newRow( "rep13" ) << QString("short") << 0 << 10 << QString("X") << QString("X");
- QTest::newRow( "rep14" ) << QString() << 0 << 10 << QString("XX") << QString("XX");
- QTest::newRow( "rep15" ) << QString("short") << 0 << 10 << QString("XX") << QString("XX");
-}
-
-void tst_QString::replace_string_data()
-{
- QTest::addColumn<QString>("string" );
- QTest::addColumn<QString>("before" );
- QTest::addColumn<QString>("after" );
- QTest::addColumn<QString>("result" );
- QTest::addColumn<bool>("bcs" );
-
- QTest::newRow( "rem00" ) << QString("") << QString("") << QString("") << QString("") << true;
- QTest::newRow( "rem01" ) << QString("A") << QString("") << QString("") << QString("A") << true;
- QTest::newRow( "rem02" ) << QString("A") << QString("A") << QString("") << QString("") << true;
- QTest::newRow( "rem03" ) << QString("A") << QString("B") << QString("") << QString("A") << true;
- QTest::newRow( "rem04" ) << QString("AA") << QString("A") << QString("") << QString("") << true;
- QTest::newRow( "rem05" ) << QString("AB") << QString("A") << QString("") << QString("B") << true;
- QTest::newRow( "rem06" ) << QString("AB") << QString("B") << QString("") << QString("A") << true;
- QTest::newRow( "rem07" ) << QString("AB") << QString("C") << QString("") << QString("AB") << true;
- QTest::newRow( "rem08" ) << QString("ABA") << QString("A") << QString("") << QString("B") << true;
- QTest::newRow( "rem09" ) << QString("ABA") << QString("B") << QString("") << QString("AA") << true;
- QTest::newRow( "rem10" ) << QString("ABA") << QString("C") << QString("") << QString("ABA") << true;
- QTest::newRow( "rem11" ) << QString("banana") << QString("an") << QString("") << QString("ba") << true;
- QTest::newRow( "rem12" ) << QString("") << QString("A") << QString("") << QString("") << true;
- QTest::newRow( "rem13" ) << QString("") << QString("A") << QString() << QString("") << true;
- QTest::newRow( "rem14" ) << QString() << QString("A") << QString("") << QString() << true;
- QTest::newRow( "rem15" ) << QString() << QString("A") << QString() << QString() << true;
- QTest::newRow( "rem16" ) << QString() << QString("") << QString("") << QString("") << true;
- QTest::newRow( "rem17" ) << QString("") << QString() << QString("") << QString("") << true;
- QTest::newRow( "rem18" ) << QString("a") << QString("a") << QString("") << QString("") << false;
- QTest::newRow( "rem19" ) << QString("A") << QString("A") << QString("") << QString("") << false;
- QTest::newRow( "rem20" ) << QString("a") << QString("A") << QString("") << QString("") << false;
- QTest::newRow( "rem21" ) << QString("A") << QString("a") << QString("") << QString("") << false;
- QTest::newRow( "rem22" ) << QString("Alpha beta") << QString("a") << QString("") << QString("lph bet") << false;
-
- QTest::newRow( "rep00" ) << QString("ABC") << QString("B") << QString("-") << QString("A-C") << true;
- QTest::newRow( "rep01" ) << QString("$()*+.?[\\]^{|}") << QString("$()*+.?[\\]^{|}") << QString("X") << QString("X") << true;
- QTest::newRow( "rep02" ) << QString("ABCDEF") << QString("") << QString("X") << QString("XAXBXCXDXEXFX") << true;
- QTest::newRow( "rep03" ) << QString("") << QString("") << QString("X") << QString("X") << true;
- QTest::newRow( "rep04" ) << QString("a") << QString("a") << QString("b") << QString("b") << false;
- QTest::newRow( "rep05" ) << QString("A") << QString("A") << QString("b") << QString("b") << false;
- QTest::newRow( "rep06" ) << QString("a") << QString("A") << QString("b") << QString("b") << false;
- QTest::newRow( "rep07" ) << QString("A") << QString("a") << QString("b") << QString("b") << false;
- QTest::newRow( "rep08" ) << QString("a") << QString("a") << QString("a") << QString("a") << false;
- QTest::newRow( "rep09" ) << QString("A") << QString("A") << QString("a") << QString("a") << false;
- QTest::newRow( "rep10" ) << QString("a") << QString("A") << QString("a") << QString("a") << false;
- QTest::newRow( "rep11" ) << QString("A") << QString("a") << QString("a") << QString("a") << false;
- QTest::newRow( "rep12" ) << QString("Alpha beta") << QString("a") << QString("o") << QString("olpho beto") << false;
- QTest::newRow( "rep13" ) << QString() << QString("") << QString("A") << QString("A") << true;
- QTest::newRow( "rep14" ) << QString("") << QString() << QString("A") << QString("A") << true;
- QTest::newRow( "rep15" ) << QString("fooxbarxbazxblub") << QString("x") << QString("yz") << QString("fooyzbaryzbazyzblub") << true;
- QTest::newRow( "rep16" ) << QString("fooxbarxbazxblub") << QString("x") << QString("z") << QString("foozbarzbazzblub") << true;
- QTest::newRow( "rep17" ) << QString("fooxybarxybazxyblub") << QString("xy") << QString("z") << QString("foozbarzbazzblub") << true;
-}
-
-void tst_QString::replace_regexp_data()
-{
- QTest::addColumn<QString>("string" );
- QTest::addColumn<QString>("regexp" );
- QTest::addColumn<QString>("after" );
- QTest::addColumn<QString>("result" );
-
- QTest::newRow( "rem00" ) << QString("alpha") << QString("a+") << QString("") << QString("lph");
- QTest::newRow( "rem01" ) << QString("banana") << QString("^.a") << QString("") << QString("nana");
- QTest::newRow( "rem02" ) << QString("") << QString("^.a") << QString("") << QString("");
- QTest::newRow( "rem03" ) << QString("") << QString("^.a") << QString() << QString("");
- QTest::newRow( "rem04" ) << QString() << QString("^.a") << QString("") << QString();
- QTest::newRow( "rem05" ) << QString() << QString("^.a") << QString() << QString();
-
- QTest::newRow( "rep00" ) << QString("A <i>bon mot</i>.") << QString("<i>([^<]*)</i>") << QString("\\emph{\\1}") << QString("A \\emph{bon mot}.");
- QTest::newRow( "rep01" ) << QString("banana") << QString("^.a()") << QString("\\1") << QString("nana");
- QTest::newRow( "rep02" ) << QString("banana") << QString("(ba)") << QString("\\1X\\1") << QString("baXbanana");
- QTest::newRow( "rep03" ) << QString("banana") << QString("(ba)(na)na") << QString("\\2X\\1") << QString("naXba");
-
- QTest::newRow("backref00") << QString("\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\10\\11") << QString("\\\\[34]")
- << QString("X") << QString("\\1\\2XX\\5\\6\\7\\8\\9\\A\\10\\11");
- QTest::newRow("backref01") << QString("foo") << QString("[fo]") << QString("\\1") << QString("\\1\\1\\1");
- QTest::newRow("backref02") << QString("foo") << QString("([fo])") << QString("(\\1)") << QString("(f)(o)(o)");
- QTest::newRow("backref03") << QString("foo") << QString("([fo])") << QString("\\2") << QString("\\2\\2\\2");
- QTest::newRow("backref04") << QString("foo") << QString("([fo])") << QString("\\10") << QString("f0o0o0");
- QTest::newRow("backref05") << QString("foo") << QString("([fo])") << QString("\\11") << QString("f1o1o1");
- QTest::newRow("backref06") << QString("foo") << QString("([fo])") << QString("\\19") << QString("f9o9o9");
- QTest::newRow("backref07") << QString("foo") << QString("(f)(o+)")
- << QString("\\2\\1\\10\\20\\11\\22\\19\\29\\3")
- << QString("ooff0oo0f1oo2f9oo9\\3");
- QTest::newRow("backref08") << QString("abc") << QString("(((((((((((((([abc]))))))))))))))")
- << QString("{\\14}") << QString("{a}{b}{c}");
- QTest::newRow("backref09") << QString("abcdefghijklmn")
- << QString("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)")
- << QString("\\19\\18\\17\\16\\15\\14\\13\\12\\11\\10"
- "\\9\\90\\8\\80\\7\\70\\6\\60\\5\\50\\4\\40\\3\\30\\2\\20\\1")
- << QString("a9a8a7a6a5nmlkjii0hh0gg0ff0ee0dd0cc0bb0a");
- QTest::newRow("backref10") << QString("abc") << QString("((((((((((((((abc))))))))))))))")
- << QString("\\0\\01\\011") << QString("\\0\\01\\011");
-}
-
-void tst_QString::utf8_data()
-{
- QString str;
- QTest::addColumn<QByteArray>("utf8" );
- QTest::addColumn<QString>("res" );
-
- QTest::newRow( "str0" ) << QByteArray("abcdefgh")
- << QString("abcdefgh");
- QTest::newRow( "str1" ) << QByteArray("\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205")
- << QString("\366\344\374\326\304\334\370\346\345\330\306\305") ;
- str += QChar( 0x05e9 );
- str += QChar( 0x05d3 );
- str += QChar( 0x05d2 );
- QTest::newRow( "str2" ) << QByteArray("\327\251\327\223\327\222")
- << str;
-
- str = QChar( 0x20ac );
- str += " some text";
- QTest::newRow( "str3" ) << QByteArray("\342\202\254 some text")
- << str;
-
- str = "Old Italic: ";
- str += QChar(0xd800);
- str += QChar(0xdf00);
- str += QChar(0xd800);
- str += QChar(0xdf01);
- str += QChar(0xd800);
- str += QChar(0xdf02);
- str += QChar(0xd800);
- str += QChar(0xdf03);
- str += QChar(0xd800);
- str += QChar(0xdf04);
- QTest::newRow("surrogate") << QByteArray("Old Italic: \360\220\214\200\360\220\214\201\360\220\214\202\360\220\214\203\360\220\214\204") << str;
-}
-
-void tst_QString::length()
-{
- QFETCH( QString, s1 );
- QTEST( (int)s1.length(), "res" );
-}
-
-#include <qfile.h>
-
-void tst_QString::acc_01()
-{
- QString a;
- QString b; //b(10);
- QString bb; //bb((int)0);
- QString c("String C");
- QChar tmp[10];
- tmp[0] = 'S';
- tmp[1] = 't';
- tmp[2] = 'r';
- tmp[3] = 'i';
- tmp[4] = 'n';
- tmp[5] = 'g';
- tmp[6] = ' ';
- tmp[7] = 'D';
- tmp[8] = 'X';
- tmp[9] = '\0';
- QString d(tmp,8);
- QString ca(a);
- QString cb(b);
- QString cc(c);
- QString n;
- QString e("String E");
- QString f;
- f = e;
- f[7]='F';
- QCOMPARE(e,(QString)"String E");
- char text[]="String f";
- f = text;
- text[7]='!';
- QCOMPARE(f,(QString)"String f");
- f[7]='F';
- QCOMPARE(text[7],'!');
-
- a="";
- a[0]='A';
- QCOMPARE(a,(QString)"A");
- QCOMPARE(a.length(),1);
- a[1]='B';
- QCOMPARE(a,(QString)"AB");
- QCOMPARE(a.length(),2);
- a[2]='C';
- QCOMPARE(a,(QString)"ABC");
- QCOMPARE(a.length(),3);
- a = QString();
- QVERIFY(a.isNull());
- a[0]='A';
- QCOMPARE(a,(QString)"A");
- QCOMPARE(a.length(),1);
- a[1]='B';
- QCOMPARE(a,(QString)"AB");
- QCOMPARE(a.length(),2);
- a[2]='C';
- QCOMPARE(a,(QString)"ABC");
- QCOMPARE(a.length(),3);
-
- a="123";
- b="456";
- a[0]=a[1];
- QCOMPARE(a,(QString)"223");
- a[1]=b[1];
- QCOMPARE(b,(QString)"456");
- QCOMPARE(a,(QString)"253");
-
- char t[]="TEXT";
- a="A";
- a=t;
- QCOMPARE(a,(QString)"TEXT");
- QCOMPARE(a,(QString)t);
- a[0]='X';
- QCOMPARE(a,(QString)"XEXT");
- QCOMPARE(t[0],'T');
- t[0]='Z';
- QCOMPARE(a,(QString)"XEXT");
-
- a="ABC";
- QCOMPARE(char(a.toLatin1()[1]),'B');
- QCOMPARE(strcmp(a.toLatin1(),((QString)"ABC").toLatin1()),0);
- QCOMPARE(a+="DEF",(QString)"ABCDEF");
- QCOMPARE(a+='G',(QString)"ABCDEFG");
- QCOMPARE(a+=((const char*)(0)),(QString)"ABCDEFG");
-
- // non-member operators
-
- a="ABC";
- b="ABC";
- c="ACB";
- d="ABCD";
- QVERIFY(a==b);
- QVERIFY(!(a==d));
- QVERIFY(!(a!=b));
- QVERIFY(a!=d);
- QVERIFY(!(a<b));
- QVERIFY(a<c);
- QVERIFY(a<d);
- QVERIFY(!(d<a));
- QVERIFY(!(c<a));
- QVERIFY(a<=b);
- QVERIFY(a<=d);
- QVERIFY(a<=c);
- QVERIFY(!(c<=a));
- QVERIFY(!(d<=a));
- QCOMPARE(QString(a+b),(QString)"ABCABC");
- QCOMPARE(QString(a+"XXXX"),(QString)"ABCXXXX");
- QCOMPARE(QString(a+'X'),(QString)"ABCX");
- QCOMPARE(QString("XXXX"+a),(QString)"XXXXABC");
- QCOMPARE(QString('X'+a),(QString)"XABC");
- a = (const char*)0;
- QVERIFY(a.isNull());
- QVERIFY(*a.toLatin1().constData() == '\0');
- {
-#if defined(Q_OS_WINCE)
- int argc = 0;
- QCoreApplication app(argc, 0);
-#endif
- QFile f("COMPARE.txt");
- f.open(QIODevice::ReadOnly);
- QTextStream ts( &f );
- ts.setCodec(QTextCodec::codecForName("UTF-16"));
- ts << "Abc";
- }
-}
-
-void tst_QString::isNull()
-{
- QString a;
- QVERIFY(a.isNull());
-
- const char *zero = 0;
- a.sprintf( zero );
- QVERIFY(!a.isNull());
-}
-
-void tst_QString::isEmpty()
-{
- QString a;
- QVERIFY(a.isEmpty());
- QString c("Not empty");
- QVERIFY(!c.isEmpty());
-}
-
-void tst_QString::constructor()
-{
- QString a;
- QString b; //b(10);
- QString c("String C");
- QChar tmp[10];
- tmp[0] = 'S';
- tmp[1] = 't';
- tmp[2] = 'r';
- tmp[3] = 'i';
- tmp[4] = 'n';
- tmp[5] = 'g';
- tmp[6] = ' ';
- tmp[7] = 'D';
- tmp[8] = 'X';
- tmp[9] = '\0';
- QString d(tmp,8);
- QString ca(a);
- QString cb(b);
- QString cc(c);
-
- QCOMPARE(a,ca);
- QVERIFY(a.isNull());
- QVERIFY(a == (QString)"");
- QCOMPARE(b,cb);
- QCOMPARE(c,cc);
- QCOMPARE(d,(QString)"String D");
-
- QString nullStr;
- QVERIFY( nullStr.isNull() );
- QVERIFY( nullStr.isEmpty() );
- QString empty("");
- QVERIFY( !empty.isNull() );
- QVERIFY( empty.isEmpty() );
-}
-
-
-
-void tst_QString::constructorQByteArray_data()
-{
- QTest::addColumn<QByteArray>("src" );
- QTest::addColumn<QString>("expected" );
-
- QByteArray ba( 4, 0 );
- ba[0] = 'C';
- ba[1] = 'O';
- ba[2] = 'M';
- ba[3] = 'P';
-
- QTest::newRow( "1" ) << ba << QString("COMP");
-
- QByteArray ba1( 7, 0 );
- ba1[0] = 'a';
- ba1[1] = 'b';
- ba1[2] = 'c';
- ba1[3] = '\0';
- ba1[4] = 'd';
- ba1[5] = 'e';
- ba1[6] = 'f';
-
- QTest::newRow( "2" ) << ba1 << QString("abc");
-
- QTest::newRow( "3" ) << QByteArray::fromRawData("abcd", 3) << QString("abc");
-}
-
-void tst_QString::constructorQByteArray()
-{
- QFETCH(QByteArray, src);
- QFETCH(QString, expected);
-
- QString str1(src);
- QCOMPARE(str1.length(), expected.length());
- QCOMPARE( str1, expected );
-
- QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
- QString strBA(src);
- QTextCodec::setCodecForCStrings( 0 );
-
- QCOMPARE( strBA, expected );
-}
-
-void tst_QString::STL()
-{
-#ifdef Q_CC_HPACC
- QSKIP("This test crashes on HP-UX with aCC", SkipSingle);
-#endif
-#ifndef QT_NO_STL
-#ifndef QT_NO_CAST_TO_ASCII
- QString qt( "QString" );
-
- std::string stdstr( "QString" );
-
- QString stlqt;
-
- // constructor
- stlqt = QString( stdstr );
- QCOMPARE( stlqt, qt );
-
- // assignment
- stlqt = stdstr;
- QCOMPARE( stlqt, qt );
-
- std::string stdstr2 = stlqt;
- QCOMPARE( stdstr2, stdstr );
-
- // prepend
- stlqt = QString();
- stlqt.prepend( stdstr );
- QCOMPARE( stlqt, qt );
-
- // append
- stlqt = QString();
- stlqt.append( stdstr );
- QCOMPARE( stlqt, qt );
-
- // pathologics (null-strings not supported by many STLs, so test only empty strings)
- stdstr = std::string();
- stlqt = stdstr;
- QVERIFY( stlqt.isEmpty() );
- std::string stdstr3 = stlqt;
- QVERIFY( !stdstr3.length() );
-#endif
-
-//skip test if glibc is not compiled with wide character support
-#if (defined Q_CC_GNU && !defined _GLIBCPP_USE_WCHAR_T) || defined QT_NO_STL_WCHAR
- QSKIP( "Not tested without wide character support", SkipAll);
-#else
- const wchar_t arr[] = {'h', 'e', 'l', 'l', 'o', 0};
- QStdWString stlStr = arr;
-
- QString s = QString::fromStdWString(stlStr);
-
- QCOMPARE(s, QString::fromLatin1("hello"));
- QCOMPARE(stlStr, s.toStdWString());
-#endif
-#else
- QSKIP( "Not tested without STL support", SkipAll);
-#endif
-}
-
-void tst_QString::truncate()
-{
- QString e("String E");
- e.truncate(4);
- QCOMPARE(e,(QString)"Stri");
-
- e = "String E";
- e.truncate(0);
- QCOMPARE(e,(QString)"");
- QVERIFY(e.isEmpty());
- QVERIFY(!e.isNull());
-
-}
-
-void tst_QString::fill()
-{
- QString e;
- e.fill('e',1);
- QCOMPARE(e,(QString)"e");
- QString f;
- f.fill('f',3);
- QCOMPARE(f,(QString)"fff");
- f.fill('F');
- QCOMPARE(f,(QString)"FFF");
-}
-
-void tst_QString::sprintf()
-{
- QString a;
- a.sprintf("COMPARE");
- QCOMPARE(a,(QString)"COMPARE");
- a.sprintf("%%%d",1);
- QCOMPARE(a,(QString)"%1");
- QCOMPARE(a.sprintf("X%dY",2),(QString)"X2Y");
- QCOMPARE(a.sprintf("X%9iY", 50000 ),(QString)"X 50000Y");
- QCOMPARE(a.sprintf("X%-9sY","hello"),(QString)"Xhello Y");
- QCOMPARE(a.sprintf("X%-9iY", 50000 ),(QString)"X50000 Y");
- QCOMPARE(a.sprintf("%lf", 1.23), QString("1.230000"));
- QCOMPARE(a.sprintf("%lf", 1.23456789), QString("1.234568"));
- QCOMPARE(a.sprintf("%p", (void *)0xbfffd350), QString("0xbfffd350"));
- QCOMPARE(a.sprintf("%p", (void *)0), QString("0x0"));
-
- int i = 6;
- long l = -2;
- float f = 4.023f;
- QString S1;
- S1.sprintf("%d %ld %f",i,l,f);
- QCOMPARE(S1,QString("6 -2 4.023000"));
-
- double d = -514.25683;
- S1.sprintf("%f",d);
- QCOMPARE(S1, QString("-514.256830"));
-
- QCOMPARE(a.sprintf("%.3s", "Hello" ),(QString)"Hel");
- QCOMPARE(a.sprintf("%10.3s", "Hello" ),(QString)" Hel");
- QCOMPARE(a.sprintf("%.10s", "Hello" ),(QString)"Hello");
- QCOMPARE(a.sprintf("%10.10s", "Hello" ),(QString)" Hello");
- QCOMPARE(a.sprintf("%-10.10s", "Hello" ),(QString)"Hello ");
- QCOMPARE(a.sprintf("%-10.3s", "Hello" ),(QString)"Hel ");
- QCOMPARE(a.sprintf("%-5.5s", "Hello" ),(QString)"Hello");
-
- // Check utf8 conversion for %s
- QCOMPARE(a.sprintf("%s", "\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205"), QString("\366\344\374\326\304\334\370\346\345\330\306\305"));
-
- // Check codecForCStrings is used to read non-modifier sequences in the format string
- QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
- QCOMPARE(a.sprintf("\303\251\303\250\303\240 %s", "\303\251\303\250\303\240"), QString("\303\251\303\250\303\240 \303\251\303\250\303\240"));
- QTextCodec::setCodecForCStrings(0);
-
- int n1;
- a.sprintf("%s%n%s", "hello", &n1, "goodbye");
- QCOMPARE(n1, 5);
- QCOMPARE(a, QString("hellogoodbye"));
- qlonglong n2;
- a.sprintf("%s%s%lln%s", "foo", "bar", &n2, "whiz");
- QCOMPARE((int)n2, 6);
- QCOMPARE(a, QString("foobarwhiz"));
-}
-
-/*
- indexOf() and indexOf02() test QString::indexOf(),
- QString::lastIndexOf(), and their QByteArray equivalents.
-
- lastIndexOf() tests QString::lastIndexOf() more in depth, but it
- should probably be rewritten to use a data table.
-*/
-
-void tst_QString::indexOf_data()
-{
- QTest::addColumn<QString>("haystack" );
- QTest::addColumn<QString>("needle" );
- QTest::addColumn<int>("startpos" );
- QTest::addColumn<bool>("bcs" );
- QTest::addColumn<int>("resultpos" );
-
- QTest::newRow( "data0" ) << QString("abc") << QString("a") << 0 << true << 0;
- QTest::newRow( "data1" ) << QString("abc") << QString("a") << 0 << false << 0;
- QTest::newRow( "data2" ) << QString("abc") << QString("A") << 0 << true << -1;
- QTest::newRow( "data3" ) << QString("abc") << QString("A") << 0 << false << 0;
- QTest::newRow( "data4" ) << QString("abc") << QString("a") << 1 << true << -1;
- QTest::newRow( "data5" ) << QString("abc") << QString("a") << 1 << false << -1;
- QTest::newRow( "data6" ) << QString("abc") << QString("A") << 1 << true << -1;
- QTest::newRow( "data7" ) << QString("abc") << QString("A") << 1 << false << -1;
- QTest::newRow( "data8" ) << QString("abc") << QString("b") << 0 << true << 1;
- QTest::newRow( "data9" ) << QString("abc") << QString("b") << 0 << false << 1;
- QTest::newRow( "data10" ) << QString("abc") << QString("B") << 0 << true << -1;
- QTest::newRow( "data11" ) << QString("abc") << QString("B") << 0 << false << 1;
- QTest::newRow( "data12" ) << QString("abc") << QString("b") << 1 << true << 1;
- QTest::newRow( "data13" ) << QString("abc") << QString("b") << 1 << false << 1;
- QTest::newRow( "data14" ) << QString("abc") << QString("B") << 1 << true << -1;
- QTest::newRow( "data15" ) << QString("abc") << QString("B") << 1 << false << 1;
- QTest::newRow( "data16" ) << QString("abc") << QString("b") << 2 << true << -1;
- QTest::newRow( "data17" ) << QString("abc") << QString("b") << 2 << false << -1;
-
- QTest::newRow( "data20" ) << QString("ABC") << QString("A") << 0 << true << 0;
- QTest::newRow( "data21" ) << QString("ABC") << QString("A") << 0 << false << 0;
- QTest::newRow( "data22" ) << QString("ABC") << QString("a") << 0 << true << -1;
- QTest::newRow( "data23" ) << QString("ABC") << QString("a") << 0 << false << 0;
- QTest::newRow( "data24" ) << QString("ABC") << QString("A") << 1 << true << -1;
- QTest::newRow( "data25" ) << QString("ABC") << QString("A") << 1 << false << -1;
- QTest::newRow( "data26" ) << QString("ABC") << QString("a") << 1 << true << -1;
- QTest::newRow( "data27" ) << QString("ABC") << QString("a") << 1 << false << -1;
- QTest::newRow( "data28" ) << QString("ABC") << QString("B") << 0 << true << 1;
- QTest::newRow( "data29" ) << QString("ABC") << QString("B") << 0 << false << 1;
- QTest::newRow( "data30" ) << QString("ABC") << QString("b") << 0 << true << -1;
- QTest::newRow( "data31" ) << QString("ABC") << QString("b") << 0 << false << 1;
- QTest::newRow( "data32" ) << QString("ABC") << QString("B") << 1 << true << 1;
- QTest::newRow( "data33" ) << QString("ABC") << QString("B") << 1 << false << 1;
- QTest::newRow( "data34" ) << QString("ABC") << QString("b") << 1 << true << -1;
- QTest::newRow( "data35" ) << QString("ABC") << QString("b") << 1 << false << 1;
- QTest::newRow( "data36" ) << QString("ABC") << QString("B") << 2 << true << -1;
- QTest::newRow( "data37" ) << QString("ABC") << QString("B") << 2 << false << -1;
-
- QTest::newRow( "data40" ) << QString("aBc") << QString("bc") << 0 << true << -1;
- QTest::newRow( "data41" ) << QString("aBc") << QString("Bc") << 0 << true << 1;
- QTest::newRow( "data42" ) << QString("aBc") << QString("bC") << 0 << true << -1;
- QTest::newRow( "data43" ) << QString("aBc") << QString("BC") << 0 << true << -1;
- QTest::newRow( "data44" ) << QString("aBc") << QString("bc") << 0 << false << 1;
- QTest::newRow( "data45" ) << QString("aBc") << QString("Bc") << 0 << false << 1;
- QTest::newRow( "data46" ) << QString("aBc") << QString("bC") << 0 << false << 1;
- QTest::newRow( "data47" ) << QString("aBc") << QString("BC") << 0 << false << 1;
- QTest::newRow( "data48" ) << QString("AbC") << QString("bc") << 0 << true << -1;
- QTest::newRow( "data49" ) << QString("AbC") << QString("Bc") << 0 << true << -1;
- QTest::newRow( "data50" ) << QString("AbC") << QString("bC") << 0 << true << 1;
- QTest::newRow( "data51" ) << QString("AbC") << QString("BC") << 0 << true << -1;
- QTest::newRow( "data52" ) << QString("AbC") << QString("bc") << 0 << false << 1;
- QTest::newRow( "data53" ) << QString("AbC") << QString("Bc") << 0 << false << 1;
-
- QTest::newRow( "data54" ) << QString("AbC") << QString("bC") << 0 << false << 1;
- QTest::newRow( "data55" ) << QString("AbC") << QString("BC") << 0 << false << 1;
- QTest::newRow( "data56" ) << QString("AbC") << QString("BC") << 1 << false << 1;
- QTest::newRow( "data57" ) << QString("AbC") << QString("BC") << 2 << false << -1;
-#if 0
- QTest::newRow( "null-in-null") << QString() << QString() << 0 << false << 0;
- QTest::newRow( "empty-in-null") << QString() << QString("") << 0 << false << 0;
- QTest::newRow( "null-in-empty") << QString("") << QString() << 0 << false << 0;
- QTest::newRow( "empty-in-empty") << QString("") << QString("") << 0 << false << 0;
-#endif
-
-
- QString s1 = "abc";
- s1 += QChar(0xb5);
- QString s2;
- s2 += QChar(0x3bc);
- QTest::newRow( "data58" ) << s1 << s2 << 0 << false << 3;
- s2.prepend("C");
- QTest::newRow( "data59" ) << s1 << s2 << 0 << false << 2;
-
- QString veryBigHaystack(500, 'a');
- veryBigHaystack += 'B';
- QTest::newRow("BoyerMooreStressTest") << veryBigHaystack << veryBigHaystack << 0 << true << 0;
- QTest::newRow("BoyerMooreStressTest2") << QString(veryBigHaystack + 'c') << veryBigHaystack << 0 << true << 0;
- QTest::newRow("BoyerMooreStressTest3") << QString('c' + veryBigHaystack) << veryBigHaystack << 0 << true << 1;
- QTest::newRow("BoyerMooreStressTest4") << veryBigHaystack << QString(veryBigHaystack + 'c') << 0 << true << -1;
- QTest::newRow("BoyerMooreStressTest5") << veryBigHaystack << QString('c' + veryBigHaystack) << 0 << true << -1;
- QTest::newRow("BoyerMooreStressTest6") << QString('d' + veryBigHaystack) << QString('c' + veryBigHaystack) << 0 << true << -1;
- QTest::newRow("BoyerMooreStressTest6") << QString(veryBigHaystack + 'c') << QString('c' + veryBigHaystack) << 0 << true << -1;
-
- QTest::newRow("BoyerMooreInsensitiveStressTest") << veryBigHaystack << veryBigHaystack << 0 << false << 0;
-
-}
-
-void tst_QString::indexOf()
-{
- QFETCH( QString, haystack );
- QFETCH( QString, needle );
- QFETCH( int, startpos );
- QFETCH( bool, bcs );
- QFETCH( int, resultpos );
- CREATE_REF(needle);
-
- Qt::CaseSensitivity cs = bcs ? Qt::CaseSensitive : Qt::CaseInsensitive;
-
- bool needleIsLatin = (QString::fromLatin1(needle.toLatin1()) == needle);
-
- QCOMPARE( haystack.indexOf(needle, startpos, cs), resultpos );
- QCOMPARE( haystack.indexOf(ref, startpos, cs), resultpos );
- if (needleIsLatin) {
- QCOMPARE( haystack.indexOf(needle.toLatin1(), startpos, cs), resultpos );
- QCOMPARE( haystack.indexOf(needle.toLatin1().data(), startpos, cs), resultpos );
- }
-
- {
- QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
- QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
- QCOMPARE( haystack.indexOf(rx1, startpos), resultpos );
- QCOMPARE( haystack.indexOf(rx2, startpos), resultpos );
- // these QRegExp must have been modified
- QVERIFY( resultpos == -1 || rx1.matchedLength() > 0);
- QVERIFY( resultpos == -1 || rx2.matchedLength() > 0);
- }
-
- {
- const QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
- const QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
- QCOMPARE( haystack.indexOf(rx1, startpos), resultpos );
- QCOMPARE( haystack.indexOf(rx2, startpos), resultpos );
- // our QRegExp mustn't have been modified
- QCOMPARE( rx1.matchedLength(), -1 );
- QCOMPARE( rx2.matchedLength(), -1 );
- }
-
- if (cs == Qt::CaseSensitive) {
- QCOMPARE( haystack.indexOf(needle, startpos), resultpos );
- QCOMPARE( haystack.indexOf(ref, startpos), resultpos );
- if (needleIsLatin) {
- QCOMPARE( haystack.indexOf(needle.toLatin1(), startpos), resultpos );
- QCOMPARE( haystack.indexOf(needle.toLatin1().data(), startpos), resultpos );
- }
- if (startpos == 0) {
- QCOMPARE( haystack.indexOf(needle), resultpos );
- QCOMPARE( haystack.indexOf(ref), resultpos );
- if (needleIsLatin) {
- QCOMPARE( haystack.indexOf(needle.toLatin1()), resultpos );
- QCOMPARE( haystack.indexOf(needle.toLatin1().data()), resultpos );
- }
- }
- }
- if (needle.size() == 1) {
- QCOMPARE(haystack.indexOf(needle.at(0), startpos, cs), resultpos);
- QCOMPARE(haystack.indexOf(ref.at(0), startpos, cs), resultpos);
- }
-
-}
-
-void tst_QString::indexOf2_data()
-{
- QTest::addColumn<QString>("haystack" );
- QTest::addColumn<QString>("needle" );
- QTest::addColumn<int>("resultpos" );
-
- QTest::newRow( "data0" ) << QString() << QString() << 0;
- QTest::newRow( "data1" ) << QString() << QString("") << 0;
- QTest::newRow( "data2" ) << QString("") << QString() << 0;
- QTest::newRow( "data3" ) << QString("") << QString("") << 0;
- QTest::newRow( "data4" ) << QString() << QString("a") << -1;
- QTest::newRow( "data5" ) << QString() << QString("abcdefg") << -1;
- QTest::newRow( "data6" ) << QString("") << QString("a") << -1;
- QTest::newRow( "data7" ) << QString("") << QString("abcdefg") << -1;
-
- QTest::newRow( "data8" ) << QString("a") << QString() << 0;
- QTest::newRow( "data9" ) << QString("a") << QString("") << 0;
- QTest::newRow( "data10" ) << QString("a") << QString("a") << 0;
- QTest::newRow( "data11" ) << QString("a") << QString("b") << -1;
- QTest::newRow( "data12" ) << QString("a") << QString("abcdefg") << -1;
- QTest::newRow( "data13" ) << QString("ab") << QString() << 0;
- QTest::newRow( "data14" ) << QString("ab") << QString("") << 0;
- QTest::newRow( "data15" ) << QString("ab") << QString("a") << 0;
- QTest::newRow( "data16" ) << QString("ab") << QString("b") << 1;
- QTest::newRow( "data17" ) << QString("ab") << QString("ab") << 0;
- QTest::newRow( "data18" ) << QString("ab") << QString("bc") << -1;
- QTest::newRow( "data19" ) << QString("ab") << QString("abcdefg") << -1;
-
- QTest::newRow( "data30" ) << QString("abc") << QString("a") << 0;
- QTest::newRow( "data31" ) << QString("abc") << QString("b") << 1;
- QTest::newRow( "data32" ) << QString("abc") << QString("c") << 2;
- QTest::newRow( "data33" ) << QString("abc") << QString("d") << -1;
- QTest::newRow( "data34" ) << QString("abc") << QString("ab") << 0;
- QTest::newRow( "data35" ) << QString("abc") << QString("bc") << 1;
- QTest::newRow( "data36" ) << QString("abc") << QString("cd") << -1;
- QTest::newRow( "data37" ) << QString("abc") << QString("ac") << -1;
-
- // sizeof(whale) > 32
- QString whale = "a5zby6cx7dw8evf9ug0th1si2rj3qkp4lomn";
- QString minnow = "zby";
- QTest::newRow( "data40" ) << whale << minnow << 2;
- QTest::newRow( "data41" ) << QString(whale + whale) << minnow << 2;
- QTest::newRow( "data42" ) << QString(minnow + whale) << minnow << 0;
- QTest::newRow( "data43" ) << whale << whale << 0;
- QTest::newRow( "data44" ) << QString(whale + whale) << whale << 0;
- QTest::newRow( "data45" ) << whale << QString(whale + whale) << -1;
- QTest::newRow( "data46" ) << QString(whale + whale) << QString(whale + whale) << 0;
- QTest::newRow( "data47" ) << QString(whale + whale) << QString(whale + minnow) << -1;
- QTest::newRow( "data48" ) << QString(minnow + whale) << whale << (int)minnow.length();
-}
-
-void tst_QString::indexOf2()
-{
- QFETCH( QString, haystack );
- QFETCH( QString, needle );
- QFETCH( int, resultpos );
- CREATE_REF(needle);
-
- QByteArray chaystack = haystack.toLatin1();
- QByteArray cneedle = needle.toLatin1();
- int got;
-
- QCOMPARE( haystack.indexOf(needle, 0, Qt::CaseSensitive), resultpos );
- QCOMPARE( haystack.indexOf(ref, 0, Qt::CaseSensitive), resultpos );
- QCOMPARE( QStringMatcher(needle, Qt::CaseSensitive).indexIn(haystack, 0), resultpos );
- QCOMPARE( haystack.indexOf(needle, 0, Qt::CaseInsensitive), resultpos );
- QCOMPARE( haystack.indexOf(ref, 0, Qt::CaseInsensitive), resultpos );
- QCOMPARE( QStringMatcher(needle, Qt::CaseInsensitive).indexIn(haystack, 0), resultpos );
- if ( needle.length() > 0 ) {
- got = haystack.lastIndexOf( needle, -1, Qt::CaseSensitive );
- QVERIFY( got == resultpos || (resultpos >= 0 && got >= resultpos) );
- got = haystack.lastIndexOf( needle, -1, Qt::CaseInsensitive );
- QVERIFY( got == resultpos || (resultpos >= 0 && got >= resultpos) );
- }
-
- QCOMPARE( chaystack.indexOf(cneedle, 0), resultpos );
- QCOMPARE( QByteArrayMatcher(cneedle).indexIn(chaystack, 0), resultpos );
- if ( cneedle.length() > 0 ) {
- got = chaystack.lastIndexOf(cneedle, -1);
- QVERIFY( got == resultpos || (resultpos >= 0 && got >= resultpos) );
- }
-}
-
-void tst_QString::lastIndexOf_data()
-{
- QTest::addColumn<QString>("haystack" );
- QTest::addColumn<QString>("needle" );
- QTest::addColumn<int>("from" );
- QTest::addColumn<int>("expected" );
- QTest::addColumn<bool>("caseSensitive" );
-
- QString a = "ABCDEFGHIEfGEFG";
-
- QTest::newRow("-1") << a << "G" << a.size() - 1 << 14 << true;
- QTest::newRow("1") << a << "G" << - 1 << 14 << true;
- QTest::newRow("2") << a << "G" << -3 << 11 << true;
- QTest::newRow("3") << a << "G" << -5 << 6 << true;
- QTest::newRow("4") << a << "G" << 14 << 14 << true;
- QTest::newRow("5") << a << "G" << 13 << 11 << true;
- QTest::newRow("6") << a << "B" << a.size() - 1 << 1 << true;
- QTest::newRow("6") << a << "B" << - 1 << 1 << true;
- QTest::newRow("7") << a << "B" << 1 << 1 << true;
- QTest::newRow("8") << a << "B" << 0 << -1 << true;
-
- QTest::newRow("9") << a << "G" << -1 << a.size()-1 << true;
- QTest::newRow("10") << a << "G" << a.size()-1 << a.size()-1 << true;
- QTest::newRow("11") << a << "G" << a.size() << -1 << true;
- QTest::newRow("12") << a << "A" << 0 << 0 << true;
- QTest::newRow("13") << a << "A" << -1*a.size() << 0 << true;
-
- QTest::newRow("15") << a << "efg" << 0 << -1 << false;
- QTest::newRow("16") << a << "efg" << a.size() << -1 << false;
- QTest::newRow("17") << a << "efg" << -1 * a.size() << -1 << false;
- QTest::newRow("19") << a << "efg" << a.size() - 1 << 12 << false;
- QTest::newRow("20") << a << "efg" << 12 << 12 << false;
- QTest::newRow("21") << a << "efg" << -12 << -1 << false;
- QTest::newRow("22") << a << "efg" << 11 << 9 << false;
-
- QTest::newRow("24") << "" << "asdf" << -1 << -1 << false;
- QTest::newRow("25") << "asd" << "asdf" << -1 << -1 << false;
- QTest::newRow("26") << "" << QString() << -1 << -1 << false;
-
- QTest::newRow("27") << a << "" << a.size() << a.size() << false;
- QTest::newRow("28") << a << "" << a.size() + 10 << -1 << false;
-}
-
-void tst_QString::lastIndexOf()
-{
- QFETCH(QString, haystack);
- QFETCH(QString, needle);
- QFETCH(int, from);
- QFETCH(int, expected);
- QFETCH(bool, caseSensitive);
- CREATE_REF(needle);
-
- Qt::CaseSensitivity cs = (caseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive);
-
- QCOMPARE(haystack.lastIndexOf(needle, from, cs), expected);
- QCOMPARE(haystack.lastIndexOf(ref, from, cs), expected);
- QCOMPARE(haystack.lastIndexOf(needle.toLatin1(), from, cs), expected);
- QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data(), from, cs), expected);
-
- if (from >= -1 && from < haystack.size()) {
- // unfortunately, QString and QRegExp don't have the same out of bound semantics
- // I think QString is wrong -- See file log for contact information.
- {
- QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
- QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
- QCOMPARE(haystack.lastIndexOf(rx1, from), expected);
- QCOMPARE(haystack.lastIndexOf(rx2, from), expected);
- // our QRegExp mustn't have been modified
- QVERIFY(expected == -1 || rx1.matchedLength() > 0);
- QVERIFY(expected == -1 || rx2.matchedLength() > 0);
- }
-
- {
- const QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
- const QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
- QCOMPARE(haystack.lastIndexOf(rx1, from), expected);
- QCOMPARE(haystack.lastIndexOf(rx2, from), expected);
- // our QRegExp mustn't have been modified
- QCOMPARE(rx1.matchedLength(), -1);
- QCOMPARE(rx2.matchedLength(), -1);
- }
- }
-
- if (cs == Qt::CaseSensitive) {
- QCOMPARE(haystack.lastIndexOf(needle, from), expected);
- QCOMPARE(haystack.lastIndexOf(ref, from), expected);
- QCOMPARE(haystack.lastIndexOf(needle.toLatin1(), from), expected);
- QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data(), from), expected);
- if (from == -1) {
- QCOMPARE(haystack.lastIndexOf(needle), expected);
- QCOMPARE(haystack.lastIndexOf(ref), expected);
- QCOMPARE(haystack.lastIndexOf(needle.toLatin1()), expected);
- QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data()), expected);
- }
- }
- if (needle.size() == 1) {
- QCOMPARE(haystack.lastIndexOf(needle.at(0), from), expected);
- QCOMPARE(haystack.lastIndexOf(ref.at(0), from), expected);
- }
-}
-
-void tst_QString::count()
-{
- QString a;
- a="ABCDEFGHIEfGEFG"; // 15 chars
- QCOMPARE(a.count('A'),1);
- QCOMPARE(a.count('Z'),0);
- QCOMPARE(a.count('E'),3);
- QCOMPARE(a.count('F'),2);
- QCOMPARE(a.count('F',Qt::CaseInsensitive),3);
- QCOMPARE(a.count("FG"),2);
- QCOMPARE(a.count("FG",Qt::CaseInsensitive),3);
- QCOMPARE(a.count( QString(), Qt::CaseInsensitive), 16);
- QCOMPARE(a.count( "", Qt::CaseInsensitive), 16);
- QCOMPARE(a.count(QRegExp("[FG][HI]")),1);
- QCOMPARE(a.count(QRegExp("[G][HE]")),2);
-
- CREATE_REF(QLatin1String("FG"));
- QCOMPARE(a.count(ref),2);
- QCOMPARE(a.count(ref,Qt::CaseInsensitive),3);
- QCOMPARE(a.count( QStringRef(), Qt::CaseInsensitive), 16);
- QStringRef emptyRef(&a, 0, 0);
- QCOMPARE(a.count( emptyRef, Qt::CaseInsensitive), 16);
-
-}
-
-void tst_QString::contains()
-{
- QString a;
- a="ABCDEFGHIEfGEFG"; // 15 chars
- QVERIFY(a.contains('A'));
- QVERIFY(!a.contains('Z'));
- QVERIFY(a.contains('E'));
- QVERIFY(a.contains('F'));
- QVERIFY(a.contains('F',Qt::CaseInsensitive));
- QVERIFY(a.contains("FG"));
- QVERIFY(a.contains("FG",Qt::CaseInsensitive));
- QVERIFY(a.contains( QString(), Qt::CaseInsensitive));
- QVERIFY(a.contains( "", Qt::CaseInsensitive));
- QVERIFY(a.contains(QRegExp("[FG][HI]")));
- QVERIFY(a.contains(QRegExp("[G][HE]")));
-
- CREATE_REF(QLatin1String("FG"));
- QVERIFY(a.contains(ref));
- QVERIFY(a.contains(ref, Qt::CaseInsensitive));
- QVERIFY(a.contains( QStringRef(), Qt::CaseInsensitive));
- QStringRef emptyRef(&a, 0, 0);
- QVERIFY(a.contains(emptyRef, Qt::CaseInsensitive));
-
-}
-
-
-void tst_QString::left()
-{
- QString a;
- a="ABCDEFGHIEfGEFG"; // 15 chars
- QCOMPARE(a.left(3),(QString)"ABC");
- QVERIFY(!a.left(0).isNull());
- QCOMPARE(a.left(0),(QString)"");
-
- QString n;
- QVERIFY(n.left(3).isNull());
- QVERIFY(n.left(0).isNull());
- QVERIFY(n.left(0).isNull());
-
- QString l = "Left";
- QCOMPARE(l.left(-1), l);
- QCOMPARE(l.left(100), l);
-}
-
-void tst_QString::leftRef()
-{
- QString a;
- a="ABCDEFGHIEfGEFG"; // 15 chars
- QCOMPARE(a.leftRef(3).toString(),(QString)"ABC");
-
- QVERIFY(a.leftRef(0).toString().isEmpty());
- QCOMPARE(a.leftRef(0).toString(),(QString)"");
-
- QString n;
- QVERIFY(n.leftRef(3).toString().isEmpty());
- QVERIFY(n.leftRef(0).toString().isEmpty());
- QVERIFY(n.leftRef(0).toString().isEmpty());
-
- QString l = "Left";
- QCOMPARE(l.leftRef(-1).toString(), l);
- QCOMPARE(l.leftRef(100).toString(), l);
-}
-
-void tst_QString::right()
-{
- QString a;
- a="ABCDEFGHIEfGEFG"; // 15 chars
- QCOMPARE(a.right(3),(QString)"EFG");
- QCOMPARE(a.right(0),(QString)"");
-
- QString n;
- QVERIFY(n.right(3).isNull());
- QVERIFY(n.right(0).isNull());
-
- QString r = "Right";
- QCOMPARE(r.right(-1), r);
- QCOMPARE(r.right(100), r);
-}
-
-void tst_QString::rightRef()
-{
- QString a;
- a="ABCDEFGHIEfGEFG"; // 15 chars
- QCOMPARE(a.rightRef(3).toString(),(QString)"EFG");
- QCOMPARE(a.rightRef(0).toString(),(QString)"");
-
- QString n;
- QVERIFY(n.rightRef(3).toString().isEmpty());
- QVERIFY(n.rightRef(0).toString().isEmpty());
-
- QString r = "Right";
- QCOMPARE(r.rightRef(-1).toString(), r);
- QCOMPARE(r.rightRef(100).toString(), r);
-}
-
-void tst_QString::mid()
-{
- QString a;
- a="ABCDEFGHIEfGEFG"; // 15 chars
-
- QCOMPARE(a.mid(3,3),(QString)"DEF");
- QCOMPARE(a.mid(0,0),(QString)"");
- QVERIFY(a.mid(9999).isNull());
- QVERIFY(a.mid(9999,1).isNull());
-
- QString n;
- QVERIFY(n.mid(3,3).isNull());
- QVERIFY(n.mid(0,0).isNull());
- QVERIFY(n.mid(9999,0).isNull());
- QVERIFY(n.mid(9999,1).isNull());
-
- QString x = "Nine pineapples";
- QCOMPARE(x.mid(5, 4), QString("pine"));
- QCOMPARE(x.mid(5), QString("pineapples"));
-
-}
-
-void tst_QString::midRef()
-{
- QString a;
- a="ABCDEFGHIEfGEFG"; // 15 chars
-
- QCOMPARE(a.midRef(3,3).toString(),(QString)"DEF");
- QCOMPARE(a.midRef(0,0).toString(),(QString)"");
- QVERIFY(a.midRef(9999).toString().isEmpty());
- QVERIFY(a.midRef(9999,1).toString().isEmpty());
-
- QString n;
- QVERIFY(n.midRef(3,3).toString().isEmpty());
- QVERIFY(n.midRef(0,0).toString().isEmpty());
- QVERIFY(n.midRef(9999,0).toString().isEmpty());
- QVERIFY(n.midRef(9999,1).toString().isEmpty());
-
- QString x = "Nine pineapples";
- QCOMPARE(x.midRef(5, 4).toString(), QString("pine"));
- QCOMPARE(x.midRef(5).toString(), QString("pineapples"));
-
-}
-
-void tst_QString::stringRef()
-{
- QString a;
- a="ABCDEFGHIEfGEFG"; // 15 chars
-
- QVERIFY(QStringRef(&a, 0, 0) == (QString)"");
-
- QVERIFY(QStringRef(&a, 3, 3) == (QString)"DEF");
- QVERIFY(QStringRef(&a, 3, 3) == QLatin1String("DEF"));
- QVERIFY(QStringRef(&a, 3, 3) == "DEF");
- QVERIFY((QString)"DEF" == QStringRef(&a, 3, 3));
- QVERIFY(QLatin1String("DEF") == QStringRef(&a, 3, 3));
- QVERIFY("DEF" == QStringRef(&a, 3, 3));
-
- QVERIFY(QStringRef(&a, 3, 3) != (QString)"DE");
- QVERIFY(QStringRef(&a, 3, 3) != QLatin1String("DE"));
- QVERIFY(QStringRef(&a, 3, 3) != "DE");
- QVERIFY((QString)"DE" != QStringRef(&a, 3, 3));
- QVERIFY(QLatin1String("DE") != QStringRef(&a, 3, 3));
- QVERIFY("DE" != QStringRef(&a, 3, 3));
-
- QString s_alpha("alpha");
- QString s_beta("beta");
- QStringRef alpha(&s_alpha);
- QStringRef beta(&s_beta);
-
- QVERIFY(alpha < beta);
- QVERIFY(alpha <= beta);
- QVERIFY(alpha <= alpha);
- QVERIFY(beta > alpha);
- QVERIFY(beta >= alpha);
- QVERIFY(beta >= beta);
-
- QString s_alpha2("alpha");
-
- QMap<QStringRef, QString> map;
- map.insert(alpha, "alpha");
- map.insert(beta, "beta");
- QVERIFY(alpha == map.value(QStringRef(&s_alpha2)));
-
- QHash<QStringRef, QString> hash;
- hash.insert(alpha, "alpha");
- hash.insert(beta, "beta");
-
- QVERIFY(alpha == hash.value(QStringRef(&s_alpha2)));
-}
-
-void tst_QString::leftJustified()
-{
- QString a;
- a="ABC";
- QCOMPARE(a.leftJustified(5,'-'),(QString)"ABC--");
- QCOMPARE(a.leftJustified(4,'-'),(QString)"ABC-");
- QCOMPARE(a.leftJustified(4),(QString)"ABC ");
- QCOMPARE(a.leftJustified(3),(QString)"ABC");
- QCOMPARE(a.leftJustified(2),(QString)"ABC");
- QCOMPARE(a.leftJustified(1),(QString)"ABC");
- QCOMPARE(a.leftJustified(0),(QString)"ABC");
-
- QString n;
- QVERIFY(!n.leftJustified(3).isNull());
- QCOMPARE(a.leftJustified(4,' ',true),(QString)"ABC ");
- QCOMPARE(a.leftJustified(3,' ',true),(QString)"ABC");
- QCOMPARE(a.leftJustified(2,' ',true),(QString)"AB");
- QCOMPARE(a.leftJustified(1,' ',true),(QString)"A");
- QCOMPARE(a.leftJustified(0,' ',true),(QString)"");
-}
-
-void tst_QString::rightJustified()
-{
- QString a;
- a="ABC";
- QCOMPARE(a.rightJustified(5,'-'),(QString)"--ABC");
- QCOMPARE(a.rightJustified(4,'-'),(QString)"-ABC");
- QCOMPARE(a.rightJustified(4),(QString)" ABC");
- QCOMPARE(a.rightJustified(3),(QString)"ABC");
- QCOMPARE(a.rightJustified(2),(QString)"ABC");
- QCOMPARE(a.rightJustified(1),(QString)"ABC");
- QCOMPARE(a.rightJustified(0),(QString)"ABC");
-
- QString n;
- QVERIFY(!n.rightJustified(3).isNull());
- QCOMPARE(a.rightJustified(4,'-',true),(QString)"-ABC");
- QCOMPARE(a.rightJustified(4,' ',true),(QString)" ABC");
- QCOMPARE(a.rightJustified(3,' ',true),(QString)"ABC");
- QCOMPARE(a.rightJustified(2,' ',true),(QString)"AB");
- QCOMPARE(a.rightJustified(1,' ',true),(QString)"A");
- QCOMPARE(a.rightJustified(0,' ',true),(QString)"");
- QCOMPARE(a,(QString)"ABC");
-}
-
-void tst_QString::toUpper()
-{
- QCOMPARE( QString().toUpper(), QString() );
- QCOMPARE( QString("").toUpper(), QString("") );
- QCOMPARE( QString("text").toUpper(), QString("TEXT") );
- QCOMPARE( QString("Text").toUpper(), QString("TEXT") );
- QCOMPARE( QString("tExt").toUpper(), QString("TEXT") );
- QCOMPARE( QString("teXt").toUpper(), QString("TEXT") );
- QCOMPARE( QString("texT").toUpper(), QString("TEXT") );
- QCOMPARE( QString("TExt").toUpper(), QString("TEXT") );
- QCOMPARE( QString("teXT").toUpper(), QString("TEXT") );
- QCOMPARE( QString("tEXt").toUpper(), QString("TEXT") );
- QCOMPARE( QString("tExT").toUpper(), QString("TEXT") );
- QCOMPARE( QString("TEXT").toUpper(), QString("TEXT") );
- QCOMPARE( QString("@ABYZ[").toUpper(), QString("@ABYZ["));
- QCOMPARE( QString("@abyz[").toUpper(), QString("@ABYZ["));
- QCOMPARE( QString("`ABYZ{").toUpper(), QString("`ABYZ{"));
- QCOMPARE( QString("`abyz{").toUpper(), QString("`ABYZ{"));
-
- QCOMPARE( QString(1, QChar(0xdf)).toUpper(), QString("SS"));
-
- QString lower;
- lower += QChar(QChar::highSurrogate(0x10428));
- lower += QChar(QChar::lowSurrogate(0x10428));
- QString upper;
- upper += QChar(QChar::highSurrogate(0x10400));
- upper += QChar(QChar::lowSurrogate(0x10400));
- QCOMPARE( lower.toUpper(), upper);
-
-
-#ifdef QT_USE_ICU
- // test doesn't work with ICU support, since QChar is unaware of any locale
- QEXPECT_FAIL("", "test doesn't work with ICU support, since QChar is unaware of any locale", Continue);
- QVERIFY(false);
-#else
- for (int i = 0; i < 65536; ++i) {
- QString str(1, QChar(i));
- QString upper = str.toUpper();
- QVERIFY(upper.length() >= 1);
- if (upper.length() == 1)
- QVERIFY(upper == QString(1, QChar(i).toUpper()));
- }
-#endif
-}
-
-void tst_QString::toLower()
-{
- QCOMPARE( QString().toLower(), QString() );
- QCOMPARE( QString("").toLower(), QString("") );
- QCOMPARE( QString("text").toLower(), QString("text") );
- QCOMPARE( QString("Text").toLower(), QString("text") );
- QCOMPARE( QString("tExt").toLower(), QString("text") );
- QCOMPARE( QString("teXt").toLower(), QString("text") );
- QCOMPARE( QString("texT").toLower(), QString("text") );
- QCOMPARE( QString("TExt").toLower(), QString("text") );
- QCOMPARE( QString("teXT").toLower(), QString("text") );
- QCOMPARE( QString("tEXt").toLower(), QString("text") );
- QCOMPARE( QString("tExT").toLower(), QString("text") );
- QCOMPARE( QString("TEXT").toLower(), QString("text") );
- QCOMPARE( QString("@ABYZ[").toLower(), QString("@abyz["));
- QCOMPARE( QString("@abyz[").toLower(), QString("@abyz["));
- QCOMPARE( QString("`ABYZ{").toLower(), QString("`abyz{"));
- QCOMPARE( QString("`abyz{").toLower(), QString("`abyz{"));
-
- QCOMPARE( QString(1, QChar(0x130)).toLower(), QString(QString(1, QChar(0x69)) + QChar(0x307)));
-
- QString lower;
- lower += QChar(QChar::highSurrogate(0x10428));
- lower += QChar(QChar::lowSurrogate(0x10428));
- QString upper;
- upper += QChar(QChar::highSurrogate(0x10400));
- upper += QChar(QChar::lowSurrogate(0x10400));
- QCOMPARE( upper.toLower(), lower);
-
-#ifdef QT_USE_ICU
- // test doesn't work with ICU support, since QChar is unaware of any locale
- QEXPECT_FAIL("", "test doesn't work with ICU support, since QChar is unaware of any locale", Continue);
- QVERIFY(false);
-#else
- for (int i = 0; i < 65536; ++i) {
- QString str(1, QChar(i));
- QString lower = str.toLower();
- QVERIFY(lower.length() >= 1);
- if (lower.length() == 1)
- QVERIFY(str.toLower() == QString(1, QChar(i).toLower()));
- }
-#endif
-}
-
-void tst_QString::trimmed()
-{
- QString a;
- a="Text";
- QCOMPARE(a,(QString)"Text");
- QCOMPARE(a.trimmed(),(QString)"Text");
- QCOMPARE(a,(QString)"Text");
- a=" ";
- QCOMPARE(a.trimmed(),(QString)"");
- QCOMPARE(a,(QString)" ");
- a=" a ";
- QCOMPARE(a.trimmed(),(QString)"a");
-}
-
-void tst_QString::simplified_data()
-{
- QTest::addColumn<QString>("full" );
- QTest::addColumn<QString>("simple" );
-
- QTest::newRow("null") << QString() << QString();
- QTest::newRow("empty") << "" << "";
- QTest::newRow("one char") << "a" << "a";
- QTest::newRow("one word") << "foo" << "foo";
- QTest::newRow("chars trivial") << "a b" << "a b";
- QTest::newRow("words trivial") << "foo bar" << "foo bar";
- QTest::newRow("allspace") << " \t\v " << "";
- QTest::newRow("char trailing") << "a " << "a";
- QTest::newRow("char trailing tab") << "a\t" << "a";
- QTest::newRow("char multitrailing") << "a " << "a";
- QTest::newRow("char multitrailing tab") << "a \t" << "a";
- QTest::newRow("char leading") << " a" << "a";
- QTest::newRow("char leading tab") << "\ta" << "a";
- QTest::newRow("char multileading") << " a" << "a";
- QTest::newRow("char multileading tab") << "\t a" << "a";
- QTest::newRow("chars apart") << "a b" << "a b";
- QTest::newRow("words apart") << "foo bar" << "foo bar";
- QTest::newRow("enclosed word") << " foo \t " << "foo";
- QTest::newRow("enclosed chars apart") << " a b " << "a b";
- QTest::newRow("enclosed words apart") << " foo bar " << "foo bar";
- QTest::newRow("chars apart posttab") << "a \tb" << "a b";
- QTest::newRow("chars apart pretab") << "a\t b" << "a b";
- QTest::newRow("many words") << " just some random\ttext here" << "just some random text here";
-}
-
-void tst_QString::simplified()
-{
- QFETCH(QString, full);
- QFETCH(QString, simple);
-
- QString result = full.simplified();
- if (simple.isNull()) {
- QVERIFY2(result.isNull(), qPrintable("'" + full + "' did not yield null: " + result));
- } else if (simple.isEmpty()) {
- QVERIFY2(result.isEmpty() && !result.isNull(), qPrintable("'" + full + "' did not yield empty: " + result));
- } else {
- QCOMPARE(result, simple);
- if (full == simple)
- QVERIFY(result.isSharedWith(full));
- }
-}
-
-void tst_QString::insert()
-{
- QString a;
-
- a = "Ys";
- QCOMPARE(a.insert(1,'e'), QString("Yes"));
- QCOMPARE(a.insert(3,'!'), QString("Yes!"));
- QCOMPARE(a.insert(5,'?'), QString("Yes! ?"));
-
- a = "ABC";
- QCOMPARE(a.insert(5,"DEF"), QString("ABC DEF"));
-
- a = "ABC";
- QCOMPARE(a.insert(2, QString()), QString("ABC"));
- QCOMPARE(a.insert(0,"ABC"), QString("ABCABC"));
- QCOMPARE(a, QString("ABCABC"));
- QCOMPARE(a.insert(0,a), QString("ABCABCABCABC"));
-
- QCOMPARE(a, QString("ABCABCABCABC"));
- QCOMPARE(a.insert(0,'<'), QString("<ABCABCABCABC"));
- QCOMPARE(a.insert(1,'>'), QString("<>ABCABCABCABC"));
-
- a = "Meal";
- QCOMPARE(a.insert(1, QLatin1String("ontr")), QString("Montreal"));
- QCOMPARE(a.insert(4, ""), QString("Montreal"));
- QCOMPARE(a.insert(3, QLatin1String("")), QString("Montreal"));
- QCOMPARE(a.insert(3, QLatin1String(0)), QString("Montreal"));
- QCOMPARE(a.insert(3, static_cast<const char *>(0)), QString("Montreal"));
- QCOMPARE(a.insert(0, QLatin1String("a")), QString("aMontreal"));
-}
-
-void tst_QString::append()
-{
- QString a;
- a = "<>ABCABCABCABC";
- QCOMPARE(a.append(">"),(QString)"<>ABCABCABCABC>");
-#if 0
-#if !defined(QT_NO_STL)
- /*
- The std::string support is fairly trivial in itself. The major
- problem is whether it compiles or not, because of the way
- different compilers choose an overload based on the type of the
- argument. If it compiles, we're happy.
- */
- std::string stroustrup;
- a.append( stroustrup );
- a += stroustrup;
-#endif
-#endif
-}
-
-void tst_QString::append_bytearray_data()
-{
- QTest::addColumn<QString>("str" );
- QTest::addColumn<QByteArray>("ba" );
- QTest::addColumn<QString>("res" );
-
- QByteArray ba( 5, 0 );
- ba[0] = 'a';
- ba[1] = 'b';
- ba[2] = 'c';
- ba[3] = 'd';
-#if 0
- ba[4] = 0;
-
- for ( int i=0; i<2; i++ ) {
- // i == 0: the byte array is exactly strlen+1
- // i == 1: the byte array is larger than strlen+1
- QTest::newRow( QString("nullTerminated_%1_0").arg(i) ) << QString() << ba << QString("abcd");
- QTest::newRow( QString("nullTerminated_%1_1").arg(i) ) << QString("") << ba << QString("abcd");
- QTest::newRow( QString("nullTerminated_%1_2").arg(i) ) << QString("foobar ") << ba << QString("foobar abcd");
-
- ba.resize( 8 );
- }
-#endif
- // no 0 termination
- ba.resize( 4 );
- QTest::newRow( "notTerminated_0" ) << QString() << ba << QString("abcd");
- QTest::newRow( "notTerminated_1" ) << QString("") << ba << QString("abcd");
- QTest::newRow( "notTerminated_2" ) << QString("foobar ") << ba << QString("foobar abcd");
-
- // byte array with only a 0
- ba.resize( 1 );
- ba[0] = 0;
- QByteArray ba2("foobar ");
- ba2.append('\0');
- QTest::newRow( "emptyString" ) << QString("foobar ") << ba << QString(ba2);
-
- // empty byte array
- ba.resize( 0 );
- QTest::newRow( "emptyByteArray" ) << QString("foobar ") << ba << QString("foobar ");
-}
-
-void tst_QString::append_bytearray()
-{
- {
- QFETCH( QString, str );
- QFETCH( QByteArray, ba );
-
- str.append( ba );
-
- QTEST( str, "res" );
- }
- {
- QFETCH( QString, str );
- QFETCH( QByteArray, ba );
-
- QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
- str.append( ba );
- QTextCodec::setCodecForCStrings( 0 );
-
- QTEST( str, "res" );
- }
-}
-
-void tst_QString::operator_pluseq_bytearray_data()
-{
- append_bytearray_data();
-}
-
-void tst_QString::operator_pluseq_bytearray()
-{
- {
- QFETCH( QString, str );
- QFETCH( QByteArray, ba );
-
- str += ba;
-
- QTEST( str, "res" );
- }
- {
- QFETCH( QString, str );
- QFETCH( QByteArray, ba );
-
- QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
- str += ba;
- QTextCodec::setCodecForCStrings( 0 );
-
- QTEST( str, "res" );
- }
-}
-
-void tst_QString::swap()
-{
- QString s1, s2;
- s1 = "s1";
- s2 = "s2";
- s1.swap(s2);
- QCOMPARE(s1,QLatin1String("s2"));
- QCOMPARE(s2,QLatin1String("s1"));
-}
-
-void tst_QString::prepend()
-{
- QString a;
- a = "<>ABCABCABCABC>";
- QCOMPARE(a.prepend("-"),(QString)"-<>ABCABCABCABC>");
-#if 0
-#if !defined(QT_NO_STL)
- std::string stroustrup;
- a.prepend( stroustrup );
-#endif
-#endif
-}
-
-void tst_QString::prepend_bytearray_data()
-{
- QTest::addColumn<QString>("str" );
- QTest::addColumn<QByteArray>("ba" );
- QTest::addColumn<QString>("res" );
-
- QByteArray ba( 5, 0 );
- ba[0] = 'a';
- ba[1] = 'b';
- ba[2] = 'c';
- ba[3] = 'd';
-#if 0
- ba[4] = 0;
-
- for ( int i=0; i<2; i++ ) {
- // i == 0: the byte array is exactly strlen+1
- // i == 1: the byte array is larger than strlen+1
- QTest::newRow( QString("nullTerminated_%1_0").arg(i) ) << QString() << ba << QString("abcd");
- QTest::newRow( QString("nullTerminated_%1_1").arg(i) ) << QString("") << ba << QString("abcd");
- QTest::newRow( QString("nullTerminated_%1_2").arg(i) ) << QString(" foobar") << ba << QString("abcd foobar");
-
- ba.resize( 8 );
- }
- // no 0 termination
- ba.resize( 4 );
- QTest::newRow( "notTerminated_0" ) << QString() << ba << QString("abcd");
- QTest::newRow( "notTerminated_1" ) << QString("") << ba << QString("abcd");
- QTest::newRow( "notTerminated_2" ) << QString(" foobar") << ba << QString("abcd foobar");
-#endif
-
- // byte array with only a 0
- ba.resize( 1 );
- ba[0] = 0;
- QTest::newRow( "emptyString" ) << QString("foobar ") << ba << QString("foobar ");
-
- // empty byte array
- ba.resize( 0 );
- QTest::newRow( "emptyByteArray" ) << QString(" foobar") << ba << QString(" foobar");
-}
-
-void tst_QString::prepend_bytearray()
-{
- {
- QFETCH( QString, str );
- QFETCH( QByteArray, ba );
-
- str.prepend( ba );
-
- QFETCH( QString, res );
- QCOMPARE( str, res );
- }
- {
- QFETCH( QString, str );
- QFETCH( QByteArray, ba );
-
- QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
- str.prepend( ba );
- QTextCodec::setCodecForCStrings( 0 );
-
- QTEST( str, "res" );
- }
-}
-
-void tst_QString::replace_uint_uint()
-{
- QFETCH( QString, string );
- QFETCH( int, index );
- QFETCH( int, len );
- QFETCH( QString, after );
-
- QString s1 = string;
- s1.replace( (uint) index, (int) len, after );
- QTEST( s1, "result" );
-
- QString s2 = string;
- s2.replace( (uint) index, (uint) len, after.unicode(), after.length() );
- QTEST( s2, "result" );
-
- if ( after.length() == 1 ) {
- QString s3 = string;
- s3.replace( (uint) index, (uint) len, QChar(after[0]) );
- QTEST( s3, "result" );
-
- QString s4 = string;
- s4.replace( (uint) index, (uint) len, QChar(after[0]).toLatin1() );
- QTEST( s4, "result" );
- }
-}
-
-void tst_QString::replace_uint_uint_extra()
-{
- /*
- This test is designed to be extremely slow if QString::replace() doesn't optimize the case
- len == after.size().
- */
- QString str("dsfkljfdsjklsdjsfjklfsdjkldfjslkjsdfkllkjdsfjklsfdkjsdflkjlsdfjklsdfkjldsflkjsddlkj");
- for (int j = 1; j < 12; ++j)
- str += str;
-
- QString str2("aaaaaaaaaaaaaaaaaaaa");
- for (int i = 0; i < 2000000; ++i) {
- str.replace(10, 20, str2);
- }
-
- /*
- Make sure that replacing with itself works.
- */
- QString copy(str);
- copy.detach();
- str.replace(0, str.length(), str);
- QVERIFY(copy == str);
-
- /*
- Make sure that replacing a part of oneself with itself works.
- */
- QString str3("abcdefghij");
- str3.replace(0, 1, str3);
- QCOMPARE(str3, QString("abcdefghijbcdefghij"));
-
- QString str4("abcdefghij");
- str4.replace(1, 3, str4);
- QCOMPARE(str4, QString("aabcdefghijefghij"));
-
- QString str5("abcdefghij");
- str5.replace(8, 10, str5);
- QCOMPARE(str5, QString("abcdefghabcdefghij"));
-}
-
-void tst_QString::replace_string()
-{
- QFETCH( QString, string );
- QFETCH( QString, before );
- QFETCH( QString, after );
- QFETCH( bool, bcs );
-
- Qt::CaseSensitivity cs = bcs ? Qt::CaseSensitive : Qt::CaseInsensitive;
-
- if ( before.length() == 1 ) {
- QChar ch = before.at( 0 );
-
- QString s1 = string;
- s1.replace( ch, after, cs );
- QTEST( s1, "result" );
-
- if ( QChar(ch.toLatin1()) == ch ) {
- QString s2 = string;
- s2.replace( ch.toLatin1(), after, cs );
- QTEST( s2, "result" );
- }
- }
-
- QString s3 = string;
- s3.replace( before, after, cs );
- QTEST( s3, "result" );
-
- QString s4 = string;
- s4.replace( QRegExp(QRegExp::escape(before), cs), after );
- QTEST( s4, "result" );
-
- QString s5 = string;
- s5.replace(QRegExp(before, cs, QRegExp::FixedString), after);
- QTEST( s5, "result" );
-}
-
-void tst_QString::replace_regexp()
-{
- QFETCH( QString, string );
- QFETCH( QString, regexp );
- QFETCH( QString, after );
-
- QString s2 = string;
- s2.replace( QRegExp(regexp), after );
- QTEST( s2, "result" );
-}
-
-void tst_QString::remove_uint_uint()
-{
- QFETCH( QString, string );
- QFETCH( int, index );
- QFETCH( int, len );
- QFETCH( QString, after );
-
- if ( after.length() == 0 ) {
- QString s1 = string;
- s1.remove( (uint) index, (uint) len );
- QTEST( s1, "result" );
- } else
- QCOMPARE( 0, 0 ); // shut QtTest
-}
-
-void tst_QString::remove_string()
-{
- QFETCH( QString, string );
- QFETCH( QString, before );
- QFETCH( QString, after );
- QFETCH( bool, bcs );
-
- Qt::CaseSensitivity cs = bcs ? Qt::CaseSensitive : Qt::CaseInsensitive;
-
- if ( after.length() == 0 ) {
- if ( before.length() == 1 && cs ) {
- QChar ch = before.at( 0 );
-
- QString s1 = string;
- s1.remove( ch );
- QTEST( s1, "result" );
-
- if ( QChar(ch.toLatin1()) == ch ) {
- QString s2 = string;
- s2.remove( ch );
- QTEST( s2, "result" );
- }
- }
-
- QString s3 = string;
- s3.remove( before, cs );
- QTEST( s3, "result" );
-
- QString s4 = string;
- s4.replace( QRegExp(QRegExp::escape(before), cs), after );
- QTEST( s4, "result" );
-
- QString s5 = string;
- s5.replace( QRegExp(before, cs, QRegExp::FixedString), after );
- QTEST( s5, "result" );
- } else {
- QCOMPARE( 0, 0 ); // shut QtTest
- }
-}
-
-void tst_QString::remove_regexp()
-{
- QFETCH( QString, string );
- QFETCH( QString, regexp );
- QFETCH( QString, after );
-
- if ( after.length() == 0 ) {
- string.remove( QRegExp(regexp) );
- QTEST( string, "result" );
- } else {
- QCOMPARE( 0, 0 ); // shut QtTest
- }
-}
-
-void tst_QString::toNum()
-{
-#if defined (Q_WS_WIN) && defined (Q_CC_MSVC)
-#define TEST_TO_INT(num, func) \
- a = #num; \
- QVERIFY2(a.func(&ok) == num ## i64 && ok, "Failed: num=" #num ", func=" #func);
-#else
-#define TEST_TO_INT(num, func) \
- a = #num; \
- QVERIFY2(a.func(&ok) == num ## LL && ok, "Failed: num=" #num ", func=" #func);
-#endif
-
- QString a;
- bool ok = false;
-
- TEST_TO_INT(0, toInt)
- TEST_TO_INT(-1, toInt)
- TEST_TO_INT(1, toInt)
- TEST_TO_INT(2147483647, toInt)
- TEST_TO_INT(-2147483648, toInt)
-
- TEST_TO_INT(0, toShort)
- TEST_TO_INT(-1, toShort)
- TEST_TO_INT(1, toShort)
- TEST_TO_INT(32767, toShort)
- TEST_TO_INT(-32768, toShort)
-
- TEST_TO_INT(0, toLong)
- TEST_TO_INT(-1, toLong)
- TEST_TO_INT(1, toLong)
- TEST_TO_INT(2147483647, toLong)
- TEST_TO_INT(-2147483648, toLong)
- TEST_TO_INT(0, toLongLong)
- TEST_TO_INT(-1, toLongLong)
- TEST_TO_INT(1, toLongLong)
- TEST_TO_INT(9223372036854775807, toLongLong)
- TEST_TO_INT(-9223372036854775807, toLongLong)
-
-#undef TEST_TO_INT
-
-#if defined (Q_WS_WIN) && defined (Q_CC_MSVC)
-#define TEST_TO_UINT(num, func) \
- a = #num; \
- QVERIFY2(a.func(&ok) == num ## i64 && ok, "Failed: num=" #num ", func=" #func);
-#else
-#define TEST_TO_UINT(num, func) \
- a = #num; \
- QVERIFY2(a.func(&ok) == num ## ULL && ok, "Failed: num=" #num ", func=" #func);
-#endif
-
- TEST_TO_UINT(0, toUInt)
- TEST_TO_UINT(1, toUInt)
- TEST_TO_UINT(4294967295, toUInt)
-
- TEST_TO_UINT(0, toUShort)
- TEST_TO_UINT(1, toUShort)
- TEST_TO_UINT(65535, toUShort)
-
- TEST_TO_UINT(0, toULong)
- TEST_TO_UINT(1, toULong)
- TEST_TO_UINT(4294967295, toULong)
-
- TEST_TO_UINT(0, toULongLong)
- TEST_TO_UINT(1, toULongLong)
- TEST_TO_UINT(18446744073709551615, toULongLong)
-#undef TEST_TO_UINT
-
-
-#define TEST_BASE(str, base, num) \
- a = str; \
- QVERIFY2(a.toInt(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toInt"); \
- QVERIFY2(a.toUInt(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toUInt"); \
- QVERIFY2(a.toShort(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toShort"); \
- QVERIFY2(a.toUShort(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toUShort"); \
- QVERIFY2(a.toLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLong"); \
- QVERIFY2(a.toULong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toULong"); \
- QVERIFY2(a.toLongLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLongLong"); \
- QVERIFY2(a.toULongLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toULongLong");
-
- TEST_BASE("FF", 16, 255)
- TEST_BASE("0xFF", 16, 255)
- TEST_BASE("77", 8, 63)
- TEST_BASE("077", 8, 63)
-
- TEST_BASE("0xFF", 0, 255)
- TEST_BASE("077", 0, 63)
- TEST_BASE("255", 0, 255)
-
- TEST_BASE(" FF", 16, 255)
- TEST_BASE(" 0xFF", 16, 255)
- TEST_BASE(" 77", 8, 63)
- TEST_BASE(" 077", 8, 63)
-
- TEST_BASE(" 0xFF", 0, 255)
- TEST_BASE(" 077", 0, 63)
- TEST_BASE(" 255", 0, 255)
-
- TEST_BASE("\tFF\t", 16, 255)
- TEST_BASE("\t0xFF ", 16, 255)
- TEST_BASE(" 77 ", 8, 63)
- TEST_BASE("77 ", 8, 63)
-
-#undef TEST_BASE
-
-#define TEST_NEG_BASE(str, base, num) \
- a = str; \
- QVERIFY2(a.toInt(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toInt"); \
- QVERIFY2(a.toShort(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toShort"); \
- QVERIFY2(a.toLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLong"); \
- QVERIFY2(a.toLongLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLongLong");
-
- TEST_NEG_BASE("-FE", 16, -254)
- TEST_NEG_BASE("-0xFE", 16, -254)
- TEST_NEG_BASE("-77", 8, -63)
- TEST_NEG_BASE("-077", 8, -63)
-
- TEST_NEG_BASE("-0xFE", 0, -254)
- TEST_NEG_BASE("-077", 0, -63)
- TEST_NEG_BASE("-254", 0, -254)
-
-#undef TEST_NEG_BASE
-
-#define TEST_DOUBLE(num, str) \
- a = str; \
- QCOMPARE(a.toDouble(&ok), num); \
- QVERIFY(ok);
-
- TEST_DOUBLE(1.2345, "1.2345")
- TEST_DOUBLE(12.345, "1.2345e+01")
- TEST_DOUBLE(12.345, "1.2345E+01")
- TEST_DOUBLE(12345.6, "12345.6")
-
-#undef TEST_DOUBLE
-
-
-#define TEST_BAD(str, func) \
- a = str; \
- a.func(&ok); \
- QVERIFY2(!ok, "Failed: str=" #str " func=" #func);
-
- TEST_BAD("32768", toShort)
- TEST_BAD("-32769", toShort)
- TEST_BAD("65536", toUShort)
- TEST_BAD("2147483648", toInt)
- TEST_BAD("-2147483649", toInt)
- TEST_BAD("4294967296", toUInt)
- if (sizeof(long) == 4) {
- TEST_BAD("2147483648", toLong)
- TEST_BAD("-2147483649", toLong)
- TEST_BAD("4294967296", toULong)
- }
- TEST_BAD("9223372036854775808", toLongLong)
- TEST_BAD("-9223372036854775809", toLongLong)
- TEST_BAD("18446744073709551616", toULongLong)
- TEST_BAD("-1", toUShort)
- TEST_BAD("-1", toUInt)
- TEST_BAD("-1", toULong)
- TEST_BAD("-1", toULongLong)
-#undef TEST_BAD
-
-#define TEST_BAD_ALL(str) \
- a = str; \
- a.toShort(&ok); \
- QVERIFY2(!ok, "Failed: str=" #str); \
- a.toUShort(&ok); \
- QVERIFY2(!ok, "Failed: str=" #str); \
- a.toInt(&ok); \
- QVERIFY2(!ok, "Failed: str=" #str); \
- a.toUInt(&ok); \
- QVERIFY2(!ok, "Failed: str=" #str); \
- a.toLong(&ok); \
- QVERIFY2(!ok, "Failed: str=" #str); \
- a.toULong(&ok); \
- QVERIFY2(!ok, "Failed: str=" #str); \
- a.toLongLong(&ok); \
- QVERIFY2(!ok, "Failed: str=" #str); \
- a.toULongLong(&ok); \
- QVERIFY2(!ok, "Failed: str=" #str); \
- a.toFloat(&ok); \
- QVERIFY2(!ok, "Failed: str=" #str); \
- a.toDouble(&ok); \
- QVERIFY2(!ok, "Failed: str=" #str);
-
- TEST_BAD_ALL((const char*)0);
- TEST_BAD_ALL("");
- TEST_BAD_ALL(" ");
- TEST_BAD_ALL(".");
- TEST_BAD_ALL("-");
- TEST_BAD_ALL("hello");
- TEST_BAD_ALL("1.2.3");
- TEST_BAD_ALL("0x0x0x");
- TEST_BAD_ALL("123-^~<");
- TEST_BAD_ALL("123ThisIsNotANumber");
-
-#undef TEST_BAD_ALL
-
- a = "FF";
- a.toULongLong(&ok, 10);
- QVERIFY(!ok);
-
- a = "FF";
- a.toULongLong(&ok, 0);
- QVERIFY(!ok);
-
-#ifdef QT_NO_FPU
- double d = 3.40282346638528e+38; // slightly off FLT_MAX when using hardfloats
-#else
- double d = 3.4028234663852886e+38; // FLT_MAX
-#endif
- QString::number(d, 'e', 17).toFloat(&ok);
- QVERIFY(ok);
- QString::number(d + 1e32, 'e', 17).toFloat(&ok);
- QVERIFY(!ok);
- QString::number(-d, 'e', 17).toFloat(&ok);
- QVERIFY(ok);
- QString::number(-d - 1e32, 'e', 17).toFloat(&ok);
- QVERIFY(!ok);
- QString::number(d + 1e32, 'e', 17).toDouble(&ok);
- QVERIFY(ok);
- QString::number(-d - 1e32, 'e', 17).toDouble(&ok);
- QVERIFY(ok);
-}
-
-void tst_QString::toUShort()
-{
- QString a;
- bool ok;
- QCOMPARE(a.toUShort(),(ushort)0);
- QCOMPARE(a.toUShort(&ok),(ushort)0);
- QVERIFY(!ok);
-
- a="";
- QCOMPARE(a.toUShort(),(ushort)0);
- QCOMPARE(a.toUShort(&ok),(ushort)0);
- QVERIFY(!ok);
-
- a="COMPARE";
- QCOMPARE(a.toUShort(),(ushort)0);
- QCOMPARE(a.toUShort(&ok),(ushort)0);
- QVERIFY(!ok);
-
- a="123";
- QCOMPARE(a.toUShort(),(ushort)123);
- QCOMPARE(a.toUShort(&ok),(ushort)123);
- QVERIFY(ok);
-
- a="123A";
- QCOMPARE(a.toUShort(),(ushort)0);
- QCOMPARE(a.toUShort(&ok),(ushort)0);
- QVERIFY(!ok);
-
- a="1234567";
- QCOMPARE(a.toUShort(),(ushort)0);
- QCOMPARE(a.toUShort(&ok),(ushort)0);
- QVERIFY(!ok);
-
- a = "aaa123aaa";
- QCOMPARE(a.toUShort(),(ushort)0);
- QCOMPARE(a.toUShort(&ok),(ushort)0);
- QVERIFY(!ok);
-
- a = "aaa123";
- QCOMPARE(a.toUShort(),(ushort)0);
- QCOMPARE(a.toUShort(&ok),(ushort)0);
- QVERIFY(!ok);
-
- a = "123aaa";
- QCOMPARE(a.toUShort(),(ushort)0);
- QCOMPARE(a.toUShort(&ok),(ushort)0);
- QVERIFY(!ok);
-
- a = "32767";
- QCOMPARE(a.toUShort(),(ushort)32767);
- QCOMPARE(a.toUShort(&ok),(ushort)32767);
- QVERIFY(ok);
-
- a = "-32767";
- QCOMPARE(a.toUShort(),(ushort)0);
- QCOMPARE(a.toUShort(&ok),(ushort)0);
- QVERIFY(!ok);
-
- a = "65535";
- QCOMPARE(a.toUShort(),(ushort)65535);
- QCOMPARE(a.toUShort(&ok),(ushort)65535);
- QVERIFY(ok);
-
- if (sizeof(short) == 2) {
- a = "65536";
- QCOMPARE(a.toUShort(),(ushort)0);
- QCOMPARE(a.toUShort(&ok),(ushort)0);
- QVERIFY(!ok);
-
- a = "123456";
- QCOMPARE(a.toUShort(),(ushort)0);
- QCOMPARE(a.toUShort(&ok),(ushort)0);
- QVERIFY(!ok);
- }
-}
-
-void tst_QString::toShort()
-{
- QString a;
- bool ok;
- QCOMPARE(a.toShort(),(short)0);
- QCOMPARE(a.toShort(&ok),(short)0);
- QVERIFY(!ok);
-
- a="";
- QCOMPARE(a.toShort(),(short)0);
- QCOMPARE(a.toShort(&ok),(short)0);
- QVERIFY(!ok);
-
- a="COMPARE";
- QCOMPARE(a.toShort(),(short)0);
- QCOMPARE(a.toShort(&ok),(short)0);
- QVERIFY(!ok);
-
- a="123";
- QCOMPARE(a.toShort(),(short)123);
- QCOMPARE(a.toShort(&ok),(short)123);
- QVERIFY(ok);
-
- a="123A";
- QCOMPARE(a.toShort(),(short)0);
- QCOMPARE(a.toShort(&ok),(short)0);
- QVERIFY(!ok);
-
- a="1234567";
- QCOMPARE(a.toShort(),(short)0);
- QCOMPARE(a.toShort(&ok),(short)0);
- QVERIFY(!ok);
-
- a = "aaa123aaa";
- QCOMPARE(a.toShort(),(short)0);
- QCOMPARE(a.toShort(&ok),(short)0);
- QVERIFY(!ok);
-
- a = "aaa123";
- QCOMPARE(a.toShort(),(short)0);
- QCOMPARE(a.toShort(&ok),(short)0);
- QVERIFY(!ok);
-
- a = "123aaa";
- QCOMPARE(a.toShort(),(short)0);
- QCOMPARE(a.toShort(&ok),(short)0);
- QVERIFY(!ok);
-
- a = "32767";
- QCOMPARE(a.toShort(),(short)32767);
- QCOMPARE(a.toShort(&ok),(short)32767);
- QVERIFY(ok);
-
- a = "-32767";
- QCOMPARE(a.toShort(),(short)-32767);
- QCOMPARE(a.toShort(&ok),(short)-32767);
- QVERIFY(ok);
-
- a = "-32768";
- QCOMPARE(a.toShort(),(short)-32768);
- QCOMPARE(a.toShort(&ok),(short)-32768);
- QVERIFY(ok);
-
- if (sizeof(short) == 2) {
- a = "32768";
- QCOMPARE(a.toShort(),(short)0);
- QCOMPARE(a.toShort(&ok),(short)0);
- QVERIFY(!ok);
-
- a = "-32769";
- QCOMPARE(a.toShort(),(short)0);
- QCOMPARE(a.toShort(&ok),(short)0);
- QVERIFY(!ok);
- }
-}
-
-void tst_QString::toInt()
-{
- QString a;
- bool ok;
- QCOMPARE(a.toInt(),0);
- QCOMPARE(a.toInt(&ok),0);
- QVERIFY(!ok);
-
- a = "";
- QCOMPARE(a.toInt(),0);
- QCOMPARE(a.toInt(&ok),0);
- QVERIFY(!ok);
-
- a="COMPARE";
- QCOMPARE(a.toInt(),0);
- QCOMPARE(a.toInt(&ok),0);
- QVERIFY(!ok);
-
- a="123";
- QCOMPARE(a.toInt(),123);
- QCOMPARE(a.toInt(&ok),123);
- QVERIFY(ok);
-
- a="123A";
- QCOMPARE(a.toInt(),0);
- QCOMPARE(a.toInt(&ok),0);
- QVERIFY(!ok);
-
- a="1234567";
- QCOMPARE(a.toInt(),1234567);
- QCOMPARE(a.toInt(&ok),1234567);
- QVERIFY(ok);
-
- a="12345678901234";
- QCOMPARE(a.toInt(),0);
- QCOMPARE(a.toInt(&ok),0);
- QVERIFY(!ok);
-
- a="3234567890";
- QCOMPARE(a.toInt(),0);
- QCOMPARE(a.toInt(&ok),0);
- QVERIFY(!ok);
-
- a = "aaa12345aaa";
- QCOMPARE(a.toInt(),0);
- QCOMPARE(a.toInt(&ok),0);
- QVERIFY(!ok);
-
- a = "aaa12345";
- QCOMPARE(a.toInt(),0);
- QCOMPARE(a.toInt(&ok),0);
- QVERIFY(!ok);
-
- a = "12345aaa";
- QCOMPARE(a.toInt(),0);
- QCOMPARE(a.toInt(&ok),0);
- QVERIFY(!ok);
-
- a = "2147483647"; // 2**31 - 1
- QCOMPARE(a.toInt(),2147483647);
- QCOMPARE(a.toInt(&ok),2147483647);
- QVERIFY(ok);
-
- if (sizeof(int) == 4) {
- a = "-2147483647"; // -(2**31 - 1)
- QCOMPARE(a.toInt(),-2147483647);
- QCOMPARE(a.toInt(&ok),-2147483647);
- QVERIFY(ok);
-
- a = "2147483648"; // 2**31
- QCOMPARE(a.toInt(),0);
- QCOMPARE(a.toInt(&ok),0);
- QVERIFY(!ok);
-
- a = "-2147483648"; // -2**31
- QCOMPARE(a.toInt(),-2147483647 - 1);
- QCOMPARE(a.toInt(&ok),-2147483647 - 1);
- QVERIFY(ok);
-
- a = "2147483649"; // 2**31 + 1
- QCOMPARE(a.toInt(),0);
- QCOMPARE(a.toInt(&ok),0);
- QVERIFY(!ok);
- }
-}
-
-void tst_QString::toUInt()
-{
- bool ok;
- QString a;
- a="3234567890";
- QCOMPARE(a.toUInt(&ok),3234567890u);
- QVERIFY(ok);
-
- a = "-50";
- QCOMPARE(a.toUInt(),0u);
- QCOMPARE(a.toUInt(&ok),0u);
- QVERIFY(!ok);
-
- a = "4294967295"; // 2**32 - 1
- QCOMPARE(a.toUInt(),4294967295u);
- QCOMPARE(a.toUInt(&ok),4294967295u);
- QVERIFY(ok);
-
- if (sizeof(int) == 4) {
- a = "4294967296"; // 2**32
- QCOMPARE(a.toUInt(),0u);
- QCOMPARE(a.toUInt(&ok),0u);
- QVERIFY(!ok);
- }
-}
-
-///////////////////////////// to*Long //////////////////////////////////////
-
-void tst_QString::toULong_data()
-{
- QTest::addColumn<QString>("str" );
- QTest::addColumn<int>("base" );
- QTest::addColumn<ulong>("result" );
- QTest::addColumn<bool>("ok" );
-
- QTest::newRow( "default" ) << QString() << 10 << 0UL << false;
- QTest::newRow( "empty" ) << QString("") << 10 << 0UL << false;
- QTest::newRow( "ulong1" ) << QString("3234567890") << 10 << 3234567890UL << true;
- QTest::newRow( "ulong2" ) << QString("fFFfFfFf") << 16 << 0xFFFFFFFFUL << true;
-}
-
-void tst_QString::toULong()
-{
- QFETCH( QString, str );
- QFETCH( int, base );
- QFETCH( ulong, result );
- QFETCH( bool, ok );
-
- bool b;
- QCOMPARE( str.toULong( 0, base ), result );
- QCOMPARE( str.toULong( &b, base ), result );
- QCOMPARE( b, ok );
-}
-
-void tst_QString::toLong_data()
-{
- QTest::addColumn<QString>("str" );
- QTest::addColumn<int>("base" );
- QTest::addColumn<long>("result" );
- QTest::addColumn<bool>("ok" );
-
- QTest::newRow( "default" ) << QString() << 10 << 0L << false;
- QTest::newRow( "empty" ) << QString("") << 10 << 0L << false;
- QTest::newRow( "normal" ) << QString("7fFFfFFf") << 16 << 0x7fFFfFFfL << true;
- QTest::newRow( "long_max" ) << QString("2147483647") << 10 << 2147483647L << true;
- if (sizeof(long) == 4) {
- QTest::newRow( "long_max+1" ) << QString("2147483648") << 10 << 0L << false;
- QTest::newRow( "long_min-1" ) << QString("-80000001") << 16 << 0L << false;
- }
- QTest::newRow( "negative" ) << QString("-7fffffff") << 16 << -0x7fffffffL << true;
-// QTest::newRow( "long_min" ) << QString("-80000000") << 16 << 0x80000000uL << true;
-}
-
-void tst_QString::toLong()
-{
- QFETCH( QString, str );
- QFETCH( int, base );
- QFETCH( long, result );
- QFETCH( bool, ok );
-
- bool b;
- QCOMPARE( str.toLong( 0, base ), result );
- QCOMPARE( str.toLong( &b, base ), result );
- QCOMPARE( b, ok );
-}
-
-
-////////////////////////// to*LongLong //////////////////////////////////////
-
-void tst_QString::toULongLong()
-{
- QString str;
- bool ok;
- str = "18446744073709551615"; // ULLONG_MAX
- QCOMPARE( str.toULongLong( 0 ), Q_UINT64_C(18446744073709551615) );
- QCOMPARE( str.toULongLong( &ok ), Q_UINT64_C(18446744073709551615) );
- QVERIFY( ok );
-
- str = "18446744073709551616"; // ULLONG_MAX + 1
- QCOMPARE( str.toULongLong( 0 ), Q_UINT64_C(0) );
- QCOMPARE( str.toULongLong( &ok ), Q_UINT64_C(0) );
- QVERIFY( !ok );
-
- str = "-150";
- QCOMPARE( str.toULongLong( 0 ), Q_UINT64_C(0) );
- QCOMPARE( str.toULongLong( &ok ), Q_UINT64_C(0) );
- QVERIFY( !ok );
-}
-
-void tst_QString::toLongLong()
-{
- QString str;
- bool ok;
-
- str = "9223372036854775807"; // LLONG_MAX
- QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(9223372036854775807) );
- QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(9223372036854775807) );
- QVERIFY( ok );
-
- str = "-9223372036854775808"; // LLONG_MIN
- QCOMPARE( str.toLongLong( 0 ),
- -Q_INT64_C(9223372036854775807) - Q_INT64_C(1) );
- QCOMPARE( str.toLongLong( &ok ),
- -Q_INT64_C(9223372036854775807) - Q_INT64_C(1) );
- QVERIFY( ok );
-
- str = "aaaa9223372036854775807aaaa";
- QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(0) );
- QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(0) );
- QVERIFY( !ok );
-
- str = "9223372036854775807aaaa";
- QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(0) );
- QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(0) );
- QVERIFY( !ok );
-
- str = "aaaa9223372036854775807";
- QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(0) );
- QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(0) );
- QVERIFY( !ok );
-
- static char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-
- for (int i = 0; i < 36; ++i) {
- for (int j = 0; j < 36; ++j) {
- for (int k = 0; k < 36; ++k) {
- QString str;
- str += QChar(digits[i]);
- str += QChar(digits[j]);
- str += QChar(digits[k]);
- qlonglong value = (((i * 36) + j) * 36) + k;
- QVERIFY(str.toLongLong(0, 36) == value);
- }
- }
- }
-}
-
-////////////////////////////////////////////////////////////////////////////
-
-void tst_QString::toFloat()
-{
- QString a;
- bool ok;
- a="0.000000000931322574615478515625";
- QCOMPARE(a.toFloat(&ok),(float)(0.000000000931322574615478515625));
- QVERIFY(ok);
-}
-
-void tst_QString::toDouble_data()
-{
- QTest::addColumn<QString>("str" );
- QTest::addColumn<double>("result" );
- QTest::addColumn<bool>("result_ok" );
-
- QTest::newRow( "ok00" ) << QString("0.000000000931322574615478515625") << 0.000000000931322574615478515625 << true;
- QTest::newRow( "ok01" ) << QString(" 123.45") << 123.45 << true;
-
- QTest::newRow( "ok02" ) << QString("0.1e10") << 0.1e10 << true;
- QTest::newRow( "ok03" ) << QString("0.1e-10") << 0.1e-10 << true;
-
- QTest::newRow( "ok04" ) << QString("1e10") << 1.0e10 << true;
- QTest::newRow( "ok05" ) << QString("1e+10") << 1.0e10 << true;
- QTest::newRow( "ok06" ) << QString("1e-10") << 1.0e-10 << true;
-
- QTest::newRow( "ok07" ) << QString(" 1e10") << 1.0e10 << true;
- QTest::newRow( "ok08" ) << QString(" 1e+10") << 1.0e10 << true;
- QTest::newRow( "ok09" ) << QString(" 1e-10") << 1.0e-10 << true;
-
- QTest::newRow( "ok10" ) << QString("1.") << 1.0 << true;
- QTest::newRow( "ok11" ) << QString(".1") << 0.1 << true;
-
- QTest::newRow( "wrong00" ) << QString("123.45 ") << 123.45 << true;
- QTest::newRow( "wrong01" ) << QString(" 123.45 ") << 123.45 << true;
-
- QTest::newRow( "wrong02" ) << QString("aa123.45aa") << 0.0 << false;
- QTest::newRow( "wrong03" ) << QString("123.45aa") << 0.0 << false;
- QTest::newRow( "wrong04" ) << QString("123erf") << 0.0 << false;
-
- QTest::newRow( "wrong05" ) << QString("abc") << 0.0 << false;
- QTest::newRow( "wrong06" ) << QString() << 0.0 << false;
- QTest::newRow( "wrong07" ) << QString("") << 0.0 << false;
-}
-
-void tst_QString::toDouble()
-{
- QFETCH( QString, str );
- QFETCH( bool, result_ok );
- bool ok;
- double d = str.toDouble( &ok );
- if ( result_ok ) {
- QTEST( d, "result" );
- QVERIFY( ok );
- } else {
- QVERIFY( !ok );
- }
-}
-
-void tst_QString::setNum()
-{
- QString a;
- QCOMPARE(a.setNum(123),(QString)"123");
- QCOMPARE(a.setNum(-123),(QString)"-123");
- QCOMPARE(a.setNum(0x123,16),(QString)"123");
- QCOMPARE(a.setNum((short)123),(QString)"123");
- QCOMPARE(a.setNum(123L),(QString)"123");
- QCOMPARE(a.setNum(123UL),(QString)"123");
- QCOMPARE(a.setNum(2147483647L), QString("2147483647")); // 32 bit LONG_MAX
- QCOMPARE(a.setNum(-2147483647L), QString("-2147483647")); // LONG_MIN + 1
- QCOMPARE(a.setNum(-2147483647L-1L), QString("-2147483648")); // LONG_MIN
- QCOMPARE(a.setNum(1.23), QString("1.23"));
- QCOMPARE(a.setNum(1.234567), QString("1.23457"));
-#if defined(LONG_MAX) && defined(LLONG_MAX) && LONG_MAX == LLONG_MAX
- // LONG_MAX and LONG_MIN on 64 bit systems
- QCOMPARE(a.setNum(9223372036854775807L), QString("9223372036854775807"));
- QCOMPARE(a.setNum(-9223372036854775807L-1L), QString("-9223372036854775808"));
- QCOMPARE(a.setNum(18446744073709551615UL), QString("18446744073709551615"));
-#endif
- QCOMPARE(a.setNum(Q_INT64_C(123)), QString("123"));
- // 2^40 == 1099511627776
- QCOMPARE(a.setNum(Q_INT64_C(-1099511627776)), QString("-1099511627776"));
- QCOMPARE(a.setNum(Q_UINT64_C(1099511627776)), QString("1099511627776"));
- QCOMPARE(a.setNum(Q_INT64_C(9223372036854775807)), // LLONG_MAX
- QString("9223372036854775807"));
- QCOMPARE(a.setNum(-Q_INT64_C(9223372036854775807) - Q_INT64_C(1)),
- QString("-9223372036854775808"));
- QCOMPARE(a.setNum(Q_UINT64_C(18446744073709551615)), // ULLONG_MAX
- QString("18446744073709551615"));
- QCOMPARE(a.setNum(0.000000000931322574615478515625),QString("9.31323e-10"));
-
-// QCOMPARE(a.setNum(0.000000000931322574615478515625,'g',30),(QString)"9.31322574615478515625e-010");
-// QCOMPARE(a.setNum(0.000000000931322574615478515625,'f',30),(QString)"0.00000000093132257461547852");
-}
-
-void tst_QString::startsWith()
-{
- QString a;
- a = "AB";
- QVERIFY( a.startsWith("A") );
- QVERIFY( a.startsWith("AB") );
- QVERIFY( !a.startsWith("C") );
- QVERIFY( !a.startsWith("ABCDEF") );
- QVERIFY( a.startsWith("") );
- QVERIFY( a.startsWith(QString::null) );
- QVERIFY( a.startsWith('A') );
- QVERIFY( a.startsWith(QLatin1Char('A')) );
- QVERIFY( a.startsWith(QChar('A')) );
- QVERIFY( !a.startsWith('C') );
- QVERIFY( !a.startsWith(QChar()) );
- QVERIFY( !a.startsWith(QLatin1Char(0)) );
-
- QVERIFY( a.startsWith(QLatin1String("A")) );
- QVERIFY( a.startsWith(QLatin1String("AB")) );
- QVERIFY( !a.startsWith(QLatin1String("C")) );
- QVERIFY( !a.startsWith(QLatin1String("ABCDEF")) );
- QVERIFY( a.startsWith(QLatin1String("")) );
- QVERIFY( a.startsWith(QLatin1String(0)) );
-
- QVERIFY( a.startsWith("A", Qt::CaseSensitive) );
- QVERIFY( a.startsWith("A", Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith("a", Qt::CaseSensitive) );
- QVERIFY( a.startsWith("a", Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith("aB", Qt::CaseSensitive) );
- QVERIFY( a.startsWith("aB", Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith("C", Qt::CaseSensitive) );
- QVERIFY( !a.startsWith("C", Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith("c", Qt::CaseSensitive) );
- QVERIFY( !a.startsWith("c", Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith("abcdef", Qt::CaseInsensitive) );
- QVERIFY( a.startsWith("", Qt::CaseInsensitive) );
- QVERIFY( a.startsWith(QString::null, Qt::CaseInsensitive) );
- QVERIFY( a.startsWith('a', Qt::CaseInsensitive) );
- QVERIFY( a.startsWith('A', Qt::CaseInsensitive) );
- QVERIFY( a.startsWith(QLatin1Char('a'), Qt::CaseInsensitive) );
- QVERIFY( a.startsWith(QChar('a'), Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith('c', Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith(QChar(), Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith(QLatin1Char(0), Qt::CaseInsensitive) );
-
- QVERIFY( a.startsWith(QLatin1String("A"), Qt::CaseSensitive) );
- QVERIFY( a.startsWith(QLatin1String("A"), Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith(QLatin1String("a"), Qt::CaseSensitive) );
- QVERIFY( a.startsWith(QLatin1String("a"), Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith(QLatin1String("aB"), Qt::CaseSensitive) );
- QVERIFY( a.startsWith(QLatin1String("aB"), Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith(QLatin1String("C"), Qt::CaseSensitive) );
- QVERIFY( !a.startsWith(QLatin1String("C"), Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith(QLatin1String("c"), Qt::CaseSensitive) );
- QVERIFY( !a.startsWith(QLatin1String("c"), Qt::CaseInsensitive) );
- QVERIFY( !a.startsWith(QLatin1String("abcdef"), Qt::CaseInsensitive) );
- QVERIFY( a.startsWith(QLatin1String(""), Qt::CaseInsensitive) );
- QVERIFY( a.startsWith(QLatin1String(0), Qt::CaseInsensitive) );
- QVERIFY( a.startsWith('A', Qt::CaseSensitive) );
- QVERIFY( a.startsWith(QLatin1Char('A'), Qt::CaseSensitive) );
- QVERIFY( a.startsWith(QChar('A'), Qt::CaseSensitive) );
- QVERIFY( !a.startsWith('a', Qt::CaseSensitive) );
- QVERIFY( !a.startsWith(QChar(), Qt::CaseSensitive) );
- QVERIFY( !a.startsWith(QLatin1Char(0), Qt::CaseSensitive) );
-
-#define TEST_REF_STARTS_WITH(string, yes) { CREATE_REF(string); QCOMPARE(a.startsWith(ref), yes); }
-
- TEST_REF_STARTS_WITH("A", true);
- TEST_REF_STARTS_WITH("AB", true);
- TEST_REF_STARTS_WITH("C", false);
- TEST_REF_STARTS_WITH("ABCDEF", false);
-#undef TEST_REF_STARTS_WITH
-
- a = "";
- QVERIFY( a.startsWith("") );
- QVERIFY( a.startsWith(QString::null) );
- QVERIFY( !a.startsWith("ABC") );
-
- QVERIFY( a.startsWith(QLatin1String("")) );
- QVERIFY( a.startsWith(QLatin1String(0)) );
- QVERIFY( !a.startsWith(QLatin1String("ABC")) );
-
- QVERIFY( !a.startsWith(QLatin1Char(0)) );
- QVERIFY( !a.startsWith(QLatin1Char('x')) );
- QVERIFY( !a.startsWith(QChar()) );
-
- a = QString::null;
- QVERIFY( !a.startsWith("") );
- QVERIFY( a.startsWith(QString::null) );
- QVERIFY( !a.startsWith("ABC") );
-
- QVERIFY( !a.startsWith(QLatin1String("")) );
- QVERIFY( a.startsWith(QLatin1String(0)) );
- QVERIFY( !a.startsWith(QLatin1String("ABC")) );
-
- QVERIFY( !a.startsWith(QLatin1Char(0)) );
- QVERIFY( !a.startsWith(QLatin1Char('x')) );
- QVERIFY( !a.startsWith(QChar()) );
-
-}
-
-void tst_QString::endsWith()
-{
- QString a;
- a = "AB";
- QVERIFY( a.endsWith("B") );
- QVERIFY( a.endsWith("AB") );
- QVERIFY( !a.endsWith("C") );
- QVERIFY( !a.endsWith("ABCDEF") );
- QVERIFY( a.endsWith("") );
- QVERIFY( a.endsWith(QString::null) );
- QVERIFY( a.endsWith('B') );
- QVERIFY( a.endsWith(QLatin1Char('B')) );
- QVERIFY( a.endsWith(QChar('B')) );
- QVERIFY( !a.endsWith('C') );
- QVERIFY( !a.endsWith(QChar()) );
- QVERIFY( !a.endsWith(QLatin1Char(0)) );
-
- QVERIFY( a.endsWith(QLatin1String("B")) );
- QVERIFY( a.endsWith(QLatin1String("AB")) );
- QVERIFY( !a.endsWith(QLatin1String("C")) );
- QVERIFY( !a.endsWith(QLatin1String("ABCDEF")) );
- QVERIFY( a.endsWith(QLatin1String("")) );
- QVERIFY( a.endsWith(QLatin1String(0)) );
-
- QVERIFY( a.endsWith("B", Qt::CaseSensitive) );
- QVERIFY( a.endsWith("B", Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith("b", Qt::CaseSensitive) );
- QVERIFY( a.endsWith("b", Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith("aB", Qt::CaseSensitive) );
- QVERIFY( a.endsWith("aB", Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith("C", Qt::CaseSensitive) );
- QVERIFY( !a.endsWith("C", Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith("c", Qt::CaseSensitive) );
- QVERIFY( !a.endsWith("c", Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith("abcdef", Qt::CaseInsensitive) );
- QVERIFY( a.endsWith("", Qt::CaseInsensitive) );
- QVERIFY( a.endsWith(QString::null, Qt::CaseInsensitive) );
- QVERIFY( a.endsWith('b', Qt::CaseInsensitive) );
- QVERIFY( a.endsWith('B', Qt::CaseInsensitive) );
- QVERIFY( a.endsWith(QLatin1Char('b'), Qt::CaseInsensitive) );
- QVERIFY( a.endsWith(QChar('b'), Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith('c', Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith(QChar(), Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith(QLatin1Char(0), Qt::CaseInsensitive) );
-
- QVERIFY( a.endsWith(QLatin1String("B"), Qt::CaseSensitive) );
- QVERIFY( a.endsWith(QLatin1String("B"), Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith(QLatin1String("b"), Qt::CaseSensitive) );
- QVERIFY( a.endsWith(QLatin1String("b"), Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith(QLatin1String("aB"), Qt::CaseSensitive) );
- QVERIFY( a.endsWith(QLatin1String("aB"), Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith(QLatin1String("C"), Qt::CaseSensitive) );
- QVERIFY( !a.endsWith(QLatin1String("C"), Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith(QLatin1String("c"), Qt::CaseSensitive) );
- QVERIFY( !a.endsWith(QLatin1String("c"), Qt::CaseInsensitive) );
- QVERIFY( !a.endsWith(QLatin1String("abcdef"), Qt::CaseInsensitive) );
- QVERIFY( a.endsWith(QLatin1String(""), Qt::CaseInsensitive) );
- QVERIFY( a.endsWith(QLatin1String(0), Qt::CaseInsensitive) );
- QVERIFY( a.endsWith('B', Qt::CaseSensitive) );
- QVERIFY( a.endsWith(QLatin1Char('B'), Qt::CaseSensitive) );
- QVERIFY( a.endsWith(QChar('B'), Qt::CaseSensitive) );
- QVERIFY( !a.endsWith('b', Qt::CaseSensitive) );
- QVERIFY( !a.endsWith(QChar(), Qt::CaseSensitive) );
- QVERIFY( !a.endsWith(QLatin1Char(0), Qt::CaseSensitive) );
-
-
-#define TEST_REF_ENDS_WITH(string, yes) { CREATE_REF(string); QCOMPARE(a.endsWith(ref), yes); }
- TEST_REF_ENDS_WITH(QLatin1String("B"), true);
- TEST_REF_ENDS_WITH(QLatin1String("AB"), true);
- TEST_REF_ENDS_WITH(QLatin1String("C"), false);
- TEST_REF_ENDS_WITH(QLatin1String("ABCDEF"), false);
- TEST_REF_ENDS_WITH(QLatin1String(""), true);
- TEST_REF_ENDS_WITH(QLatin1String(0), true);
-
-#undef TEST_REF_STARTS_WITH
-
- a = "";
- QVERIFY( a.endsWith("") );
- QVERIFY( a.endsWith(QString::null) );
- QVERIFY( !a.endsWith("ABC") );
- QVERIFY( !a.endsWith(QLatin1Char(0)) );
- QVERIFY( !a.endsWith(QLatin1Char('x')) );
- QVERIFY( !a.endsWith(QChar()) );
-
- QVERIFY( a.endsWith(QLatin1String("")) );
- QVERIFY( a.endsWith(QLatin1String(0)) );
- QVERIFY( !a.endsWith(QLatin1String("ABC")) );
-
- a = QString::null;
- QVERIFY( !a.endsWith("") );
- QVERIFY( a.endsWith(QString::null) );
- QVERIFY( !a.endsWith("ABC") );
-
- QVERIFY( !a.endsWith(QLatin1String("")) );
- QVERIFY( a.endsWith(QLatin1String(0)) );
- QVERIFY( !a.endsWith(QLatin1String("ABC")) );
-
- QVERIFY( !a.endsWith(QLatin1Char(0)) );
- QVERIFY( !a.endsWith(QLatin1Char('x')) );
- QVERIFY( !a.endsWith(QChar()) );
-}
-
-void tst_QString::check_QDataStream()
-{
- QString a;
- QByteArray ar;
- {
- QDataStream out(&ar,QIODevice::WriteOnly);
- out << QString("COMPARE Text");
- }
- {
- QDataStream in(&ar,QIODevice::ReadOnly);
- in >> a;
- QCOMPARE(a,(QString)"COMPARE Text");
- }
-}
-
-void tst_QString::check_QTextStream()
-{
- QString a;
- QByteArray ar;
- {
- QTextStream out(&ar,QIODevice::WriteOnly);
- out << QString("This is COMPARE Text");
- }
- {
- QTextStream in(&ar,QIODevice::ReadOnly);
- in >> a;
- QCOMPARE(a,(QString)"This");
- }
-}
-
-void tst_QString::check_QTextIOStream()
-{
- QString a;
- {
- a="";
- QTextStream ts(&a);
- ts << "pi \261= " << 3.125;
- QCOMPARE(a,(QString)"pi \261= 3.125");
- }
- {
- a="123 456";
- int x,y;
- QTextStream(&a) >> x >> y;
- QCOMPARE(x,123);
- QCOMPARE(y,456);
- }
-}
-
-void tst_QString::fromRawData()
-{
- const QChar ptr[] = { 0x1234, 0x0000 };
- QString cstr = QString::fromRawData(ptr, 1);
- QVERIFY(cstr.isDetached());
- QVERIFY(cstr.constData() == ptr);
- QVERIFY(cstr == QString(ptr, 1));
- cstr.squeeze();
- QVERIFY(cstr.constData() == ptr);
- cstr.detach();
- QVERIFY(cstr.size() == 1);
- QVERIFY(cstr.capacity() == 1);
- QVERIFY(cstr.constData() != ptr);
- QVERIFY(cstr.constData()[0] == QChar(0x1234));
- QVERIFY(cstr.constData()[1] == QChar(0x0000));
-}
-
-void tst_QString::setRawData()
-{
- const QChar ptr[] = { 0x1234, 0x0000 };
- const QChar ptr2[] = { 0x4321, 0x0000 };
- QString cstr;
-
- // This just tests the fromRawData() fallback
- QVERIFY(!cstr.isDetached());
- cstr.setRawData(ptr, 1);
- QVERIFY(cstr.isDetached());
- QVERIFY(cstr.constData() == ptr);
- QVERIFY(cstr == QString(ptr, 1));
-
- // This actually tests the recycling of the shared data object
- QString::DataPtr csd = cstr.data_ptr();
- cstr.setRawData(ptr2, 1);
- QVERIFY(cstr.isDetached());
- QVERIFY(cstr.constData() == ptr2);
- QVERIFY(cstr == QString(ptr2, 1));
- QVERIFY(cstr.data_ptr() == csd);
-
- // This tests the discarding of the shared data object
- cstr = "foo";
- QVERIFY(cstr.isDetached());
- QVERIFY(cstr.constData() != ptr2);
-
- // Another test of the fallback
- csd = cstr.data_ptr();
- cstr.setRawData(ptr2, 1);
- QVERIFY(cstr.isDetached());
- QVERIFY(cstr.constData() == ptr2);
- QVERIFY(cstr == QString(ptr2, 1));
- QVERIFY(cstr.data_ptr() != csd);
-}
-
-void tst_QString::fromStdString()
-{
-#ifdef Q_CC_HPACC
- QSKIP("This test crashes on HP-UX with aCC", SkipSingle);
-#endif
-#if !defined(QT_NO_STL)
- std::string stroustrup = "foo";
- QString eng = QString::fromStdString( stroustrup );
- QCOMPARE( eng, QString("foo") );
- const char cnull[] = "Embedded\0null\0character!";
- std::string stdnull( cnull, sizeof(cnull)-1 );
- QString qtnull = QString::fromStdString( stdnull );
- QCOMPARE( qtnull.size(), int(stdnull.size()) );
-#endif
-}
-
-void tst_QString::toStdString()
-{
-#ifdef Q_CC_HPACC
- QSKIP("This test crashes on HP-UX with aCC", SkipSingle);
-#endif
-#if !defined(QT_NO_STL)
- QString nord = "foo";
- std::string stroustrup1 = nord.toStdString();
- QVERIFY( qstrcmp(stroustrup1.c_str(), "foo") == 0 );
- // For now, most QString constructors are also broken with respect
- // to embedded null characters, had to find one that works...
- const QChar qcnull[] = {
- 'E', 'm', 'b', 'e', 'd', 'd', 'e', 'd', '\0',
- 'n', 'u', 'l', 'l', '\0',
- 'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r', '!'
- };
- QString qtnull( qcnull, sizeof(qcnull)/sizeof(QChar) );
- std::string stdnull = qtnull.toStdString();
- QCOMPARE( int(stdnull.size()), qtnull.size() );
-#endif
-}
-
-void tst_QString::utf8()
-{
- QFETCH( QByteArray, utf8 );
- QFETCH( QString, res );
-
- QCOMPARE( utf8, QByteArray(res.toUtf8()) );
-}
-
-void tst_QString::stringRef_utf8_data()
-{
- utf8_data();
-}
-
-void tst_QString::stringRef_utf8()
-{
- QFETCH( QByteArray, utf8 );
- QFETCH( QString, res );
-
- QStringRef ref(&res, 0, res.length());
- QCOMPARE( utf8, QByteArray(ref.toUtf8()) );
-}
-
-// copied to tst_QTextCodec::utf8Codec_data()
-void tst_QString::fromUtf8_data()
-{
- QTest::addColumn<QByteArray>("utf8");
- QTest::addColumn<QString>("res");
- QTest::addColumn<int>("len");
- QString str;
-
- QTest::newRow("str0") << QByteArray("abcdefgh") << QString("abcdefgh") << -1;
- QTest::newRow("str0-len") << QByteArray("abcdefgh") << QString("abc") << 3;
- QTest::newRow("str1") << QByteArray("\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205") << QString("\366\344\374\326\304\334\370\346\345\330\306\305") << -1;
- QTest::newRow("str1-len") << QByteArray("\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205") << QString("\366\344\374\326\304") << 10;
-
- str += QChar(0x05e9);
- str += QChar(0x05d3);
- str += QChar(0x05d2);
- QTest::newRow("str2") << QByteArray("\327\251\327\223\327\222") << str << -1;
-
- str = QChar(0x05e9);
- QTest::newRow("str2-len") << QByteArray("\327\251\327\223\327\222") << str << 2;
-
- str = QChar(0x20ac);
- str += " some text";
- QTest::newRow("str3") << QByteArray("\342\202\254 some text") << str << -1;
-
- str = QChar(0x20ac);
- str += " some ";
- QTest::newRow("str3-len") << QByteArray("\342\202\254 some text") << str << 9;
-
- str = "hello";
- str += QChar::ReplacementCharacter;
- str += QChar(0x68);
- str += QChar::ReplacementCharacter;
- str += QChar::ReplacementCharacter;
- str += QChar::ReplacementCharacter;
- str += QChar::ReplacementCharacter;
- str += QChar(0x61);
- str += QChar::ReplacementCharacter;
- QTest::newRow("invalid utf8") << QByteArray("hello\344h\344\344\366\344a\304") << str << -1;
- QTest::newRow("invalid utf8-len") << QByteArray("hello\344h\344\344\366\344a\304") << QString("hello") << 5;
-
- str = "Prohl";
- str += QChar::ReplacementCharacter;
- str += QChar::ReplacementCharacter;
- str += "e";
- str += QChar::ReplacementCharacter;
- str += " plugin";
- str += QChar::ReplacementCharacter;
- str += " Netscape";
-
- QTest::newRow("task28417") << QByteArray("Prohl\355\276e\350 plugin\371 Netscape") << str << -1;
- QTest::newRow("task28417-len") << QByteArray("Prohl\355\276e\350 plugin\371 Netscape") << QString("") << 0;
-
- QTest::newRow("null-1") << QByteArray() << QString() << -1;
- QTest::newRow("null0") << QByteArray() << QString() << 0;
- QTest::newRow("null5") << QByteArray() << QString() << 5;
- QTest::newRow("empty-1") << QByteArray("\0abcd", 5) << QString() << -1;
- QTest::newRow("empty0") << QByteArray() << QString() << 0;
- QTest::newRow("empty5") << QByteArray("\0abcd", 5) << QString::fromAscii("\0abcd", 5) << 5;
- QTest::newRow("other-1") << QByteArray("ab\0cd", 5) << QString::fromAscii("ab") << -1;
- QTest::newRow("other5") << QByteArray("ab\0cd", 5) << QString::fromAscii("ab\0cd", 5) << 5;
-
- str = "Old Italic: ";
- str += QChar(0xd800);
- str += QChar(0xdf00);
- str += QChar(0xd800);
- str += QChar(0xdf01);
- str += QChar(0xd800);
- str += QChar(0xdf02);
- str += QChar(0xd800);
- str += QChar(0xdf03);
- str += QChar(0xd800);
- str += QChar(0xdf04);
- QTest::newRow("surrogate") << QByteArray("Old Italic: \360\220\214\200\360\220\214\201\360\220\214\202\360\220\214\203\360\220\214\204") << str << -1;
-
- QTest::newRow("surrogate-len") << QByteArray("Old Italic: \360\220\214\200\360\220\214\201\360\220\214\202\360\220\214\203\360\220\214\204") << str.left(16) << 20;
-
-}
-
-void tst_QString::fromUtf8()
-{
- QFETCH(QByteArray, utf8);
- QFETCH(QString, res);
- QFETCH(int, len);
-
- QCOMPARE(QString::fromUtf8(utf8.isNull() ? 0 : utf8.data(), len), res);
-}
-
-void tst_QString::nullFromUtf8()
-{
- QString a;
- a = QString::fromUtf8(0);
- QVERIFY(a.isNull());
- QVERIFY(a.isEmpty());
- a = QString::fromUtf8("");
- QVERIFY(!a.isNull());
- QVERIFY(a.isEmpty());
-}
-
-void tst_QString::fromLocal8Bit_data()
-{
- QTest::addColumn<QByteArray>("local8Bit");
- QTest::addColumn<int>("len");
- QTest::addColumn<QString>("result");
-
- //QTest::newRow("nullString") << QByteArray() << -1 << QString();
- //QTest::newRow("emptyString") << QByteArray("") << -1 << QString("");
- //QTest::newRow("string") << QByteArray("test") << -1 << QString("test");
- //QTest::newRow("stringlen0") << QByteArray("test") << 0 << QString("");
- //QTest::newRow("stringlen3") << QByteArray("test") << 3 << QString("tes");
- QTest::newRow("stringlen99") << QByteArray("test\0foo", 8) << 8 << QString::fromLatin1("test\0foo", 8);
-
- QByteArray longQByteArray;
- QString longQString;
-
- for (int l=0;l<111;l++) {
- longQByteArray = longQByteArray + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
- longQString += "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
- }
-
- //QTest::newRow("longString") << longQByteArray << -1 << longQString;
- //QTest::newRow("longStringlen0") << longQByteArray << 0 << QString("");
- //QTest::newRow("longStringlen3") << longQByteArray << 3 << QString("aaa");
- //QTest::newRow("someNonAlphaChars") << QByteArray("d:/this/is/a/test.h") << -1 << QString("d:/this/is/a/test.h");
-
- //QTest::newRow("null-1") << QByteArray() << -1 << QString();
- //QTest::newRow("null0") << QByteArray() << 0 << QString();
- //QTest::newRow("null5") << QByteArray() << 5 << QString();
- //QTest::newRow("empty-1") << QByteArray("\0abcd", 5) << -1 << QString();
- //QTest::newRow("empty0") << QByteArray() << 0 << QString();
- //QTest::newRow("empty5") << QByteArray("\0abcd", 5) << 5 << QString::fromAscii("\0abcd", 5);
- //QTest::newRow("other-1") << QByteArray("ab\0cd", 5) << -1 << QString::fromAscii("ab");
- //QTest::newRow("other5") << QByteArray("ab\0cd", 5) << 5 << QString::fromAscii("ab\0cd", 5);
-}
-
-void tst_QString::fromLocal8Bit()
-{
- QFETCH(QByteArray, local8Bit);
- QFETCH(int, len);
- QFETCH(QString, result);
-
- QCOMPARE(QString::fromLocal8Bit(local8Bit.isNull() ? 0 : local8Bit.data(), len).length(),
- result.length());
- QCOMPARE(QString::fromLocal8Bit(local8Bit.isNull() ? 0 : local8Bit.data(), len), result);
-}
-
-void tst_QString::local8Bit_data()
-{
- QTest::addColumn<QString>("local8Bit");
- QTest::addColumn<QByteArray>("result");
-
-/*
- QString::local8Bit() called on a null QString returns an _empty_
- QByteArray.
-*/
- QTest::newRow("nullString") << QString() << QByteArray("");
- QTest::newRow("emptyString") << QString("") << QByteArray("");
- QTest::newRow("string") << QString("test") << QByteArray("test");
-
- QByteArray longQByteArray;
- QString longQString;
-
- for (int l=0;l<111;l++) {
- longQByteArray = longQByteArray + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
- longQString += "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
- }
-
- QTest::newRow("longString") << longQString << longQByteArray;
- QTest::newRow("someNonAlphaChars") << QString("d:/this/is/a/test.h") << QByteArray("d:/this/is/a/test.h");
-}
-
-void tst_QString::local8Bit()
-{
- QFETCH(QString, local8Bit);
- QFETCH(QByteArray, result);
-
- QCOMPARE(local8Bit.toLocal8Bit(), QByteArray(result));
-}
-
-void tst_QString::stringRef_local8Bit_data()
-{
- local8Bit_data();
-}
-
-void tst_QString::stringRef_local8Bit()
-{
- QFETCH(QString, local8Bit);
- QFETCH(QByteArray, result);
-
- QStringRef ref(&local8Bit, 0, local8Bit.length());
- QCOMPARE(ref.toLocal8Bit(), QByteArray(result));
-}
-
-void tst_QString::fromLatin1Roundtrip_data()
-{
- QTest::addColumn<QByteArray>("latin1");
- QTest::addColumn<QString>("unicode");
-
- QTest::newRow("null") << QByteArray() << QString();
- QTest::newRow("empty") << QByteArray("") << "";
-
- static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
- QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5);
- QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9);
-
- static const ushort unicode3[] = { 'a', 0, 'z' };
- QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3);
-
- static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
- QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3);
-}
-
-void tst_QString::fromLatin1Roundtrip()
-{
- QFETCH(QByteArray, latin1);
- QFETCH(QString, unicode);
-
- // QtTest safety check:
- QCOMPARE(latin1.isNull(), unicode.isNull());
- QCOMPARE(latin1.isEmpty(), unicode.isEmpty());
- QCOMPARE(latin1.length(), unicode.length());
-
- if (!latin1.isEmpty())
- while (latin1.length() < 128) {
- latin1 += latin1;
- unicode += unicode;
- }
-
- // fromLatin1
- QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicode.length());
- QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicode);
-
- // and back:
- QCOMPARE(unicode.toLatin1().length(), latin1.length());
- QCOMPARE(unicode.toLatin1(), latin1);
-}
-
-void tst_QString::toLatin1Roundtrip_data()
-{
- QTest::addColumn<QByteArray>("latin1");
- QTest::addColumn<QString>("unicodesrc");
- QTest::addColumn<QString>("unicodedst");
-
- QTest::newRow("null") << QByteArray() << QString() << QString();
- QTest::newRow("empty") << QByteArray("") << "" << "";
-
- static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
- QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5) << QString::fromUtf16(unicode1, 5);
- QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9) << QString::fromUtf16(unicode1, 9);
-
- static const ushort unicode3[] = { 'a', 0, 'z' };
- QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3) << QString::fromUtf16(unicode3, 3);
-
- static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
- QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3) << QString::fromUtf16(unicode4, 3);
-
- static const ushort unicodeq[] = { '?', '?', '?', '?', '?' };
- const QString questionmarks = QString::fromUtf16(unicodeq, 5);
-
- static const ushort unicode5[] = { 0x100, 0x101, 0x17f, 0x7f00, 0x7f7f };
- QTest::newRow("non-latin1a") << QByteArray("?????") << QString::fromUtf16(unicode5, 5) << questionmarks;
-
- static const ushort unicode6[] = { 0x180, 0x1ff, 0x8001, 0x8080, 0xfffc };
- QTest::newRow("non-latin1b") << QByteArray("?????") << QString::fromUtf16(unicode6, 5) << questionmarks;
-
- static const ushort unicode7[] = { 'H', 'e', 'l', 'l', 'o', 0x100, 0x17f, 0x180, 0x8080, 0xfffc };
- static const ushort unicode7q[] = { 'H', 'e', 'l', 'l', 'o', '?', '?', '?', '?', '?' };
- QTest::newRow("mixed") << QByteArray("Hello?????") << QString::fromUtf16(unicode7, 10) << QString::fromUtf16(unicode7q, 10);
-}
-
-void tst_QString::toLatin1Roundtrip()
-{
- QFETCH(QByteArray, latin1);
- QFETCH(QString, unicodesrc);
- QFETCH(QString, unicodedst);
-
- // QtTest safety check:
- QCOMPARE(latin1.isNull(), unicodesrc.isNull());
- QCOMPARE(latin1.isEmpty(), unicodesrc.isEmpty());
- QCOMPARE(latin1.length(), unicodesrc.length());
- QCOMPARE(latin1.isNull(), unicodedst.isNull());
- QCOMPARE(latin1.isEmpty(), unicodedst.isEmpty());
- QCOMPARE(latin1.length(), unicodedst.length());
-
- if (!latin1.isEmpty())
- while (latin1.length() < 128) {
- latin1 += latin1;
- unicodesrc += unicodesrc;
- unicodedst += unicodedst;
- }
-
- // toLatin1
- QCOMPARE(unicodesrc.toLatin1().length(), latin1.length());
- QCOMPARE(unicodesrc.toLatin1(), latin1);
-
- // and back:
- QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicodedst.length());
- QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicodedst);
-}
-
-void tst_QString::stringRef_toLatin1Roundtrip_data()
-{
- toLatin1Roundtrip_data();
-}
-
-void tst_QString::stringRef_toLatin1Roundtrip()
-{
- QFETCH(QByteArray, latin1);
- QFETCH(QString, unicodesrc);
- QFETCH(QString, unicodedst);
-
- // QtTest safety check:
- QCOMPARE(latin1.isNull(), unicodesrc.isNull());
- QCOMPARE(latin1.isEmpty(), unicodesrc.isEmpty());
- QCOMPARE(latin1.length(), unicodesrc.length());
- QCOMPARE(latin1.isNull(), unicodedst.isNull());
- QCOMPARE(latin1.isEmpty(), unicodedst.isEmpty());
- QCOMPARE(latin1.length(), unicodedst.length());
-
- if (!latin1.isEmpty())
- while (latin1.length() < 128) {
- latin1 += latin1;
- unicodesrc += unicodesrc;
- unicodedst += unicodedst;
- }
-
- // toLatin1
- QStringRef src(&unicodesrc, 0, unicodesrc.length());
- QCOMPARE(src.toLatin1().length(), latin1.length());
- QCOMPARE(src.toLatin1(), latin1);
-}
-
-void tst_QString::fromLatin1()
-{
- QString a;
- a = QString::fromLatin1( 0 );
- QVERIFY( a.isNull() );
- QVERIFY( a.isEmpty() );
- a = QString::fromLatin1( "" );
- QVERIFY( !a.isNull() );
- QVERIFY( a.isEmpty() );
-
- a = QString::fromLatin1(0, 0);
- QVERIFY(a.isNull());
- a = QString::fromLatin1(0, 5);
- QVERIFY(a.isNull());
- a = QString::fromLatin1("\0abcd", 0);
- QVERIFY(!a.isNull());
- QVERIFY(a.isEmpty());
- a = QString::fromLatin1("\0abcd", 5);
- QVERIFY(a.size() == 5);
-}
-
-void tst_QString::fromAscii()
-{
- QString a;
- a = QString::fromAscii( 0 );
- QVERIFY( a.isNull() );
- QVERIFY( a.isEmpty() );
- a = QString::fromAscii( "" );
- QVERIFY( !a.isNull() );
- QVERIFY( a.isEmpty() );
-
- a = QString::fromAscii(0, 0);
- QVERIFY(a.isNull());
- a = QString::fromAscii(0, 5);
- QVERIFY(a.isNull());
- a = QString::fromAscii("\0abcd", 0);
- QVERIFY(!a.isNull());
- QVERIFY(a.isEmpty());
- a = QString::fromAscii("\0abcd", 5);
- QVERIFY(a.size() == 5);
-}
-
-void tst_QString::arg()
-{
-/*
- Warning: If any of these test fails, the warning given by QtTest
- is all messed up, because QtTest itself uses QString::arg().
-*/
-
- QLocale::setDefault(QString("de_DE"));
-
- QString s4( "[%0]" );
- QString s5( "[%1]" );
- QString s6( "[%3]" );
- QString s7( "[%9]" );
- QString s8( "[%0 %1]" );
- QString s9( "[%0 %3]" );
- QString s10( "[%1 %2 %3]" );
- QString s11( "[%9 %3 %0]" );
- QString s12( "[%9 %1 %3 %9 %0 %8]" );
- QString s13( "%1% %x%c%2 %d%2-%" );
- QString s14( "%1%2%3" );
-
- QCOMPARE( s4.arg("foo"), QString("[foo]") );
- QCOMPARE( s5.arg("foo"), QString("[foo]") );
- QCOMPARE( s6.arg("foo"), QString("[foo]") );
- QCOMPARE( s7.arg("foo"), QString("[foo]") );
- QCOMPARE( s8.arg("foo"), QString("[foo %1]") );
- QCOMPARE( s8.arg("foo").arg("bar"), QString("[foo bar]") );
- QCOMPARE( s8.arg("foo", "bar"), QString("[foo bar]") );
- QCOMPARE( s9.arg("foo"), QString("[foo %3]") );
- QCOMPARE( s9.arg("foo").arg("bar"), QString("[foo bar]") );
- QCOMPARE( s9.arg("foo", "bar"), QString("[foo bar]") );
- QCOMPARE( s10.arg("foo"), QString("[foo %2 %3]") );
- QCOMPARE( s10.arg("foo").arg("bar"), QString("[foo bar %3]") );
- QCOMPARE( s10.arg("foo", "bar"), QString("[foo bar %3]") );
- QCOMPARE( s10.arg("foo").arg("bar").arg("baz"), QString("[foo bar baz]") );
- QCOMPARE( s10.arg("foo", "bar", "baz"), QString("[foo bar baz]") );
- QCOMPARE( s11.arg("foo"), QString("[%9 %3 foo]") );
- QCOMPARE( s11.arg("foo").arg("bar"), QString("[%9 bar foo]") );
- QCOMPARE( s11.arg("foo", "bar"), QString("[%9 bar foo]") );
- QCOMPARE( s11.arg("foo").arg("bar").arg("baz"), QString("[baz bar foo]") );
- QCOMPARE( s11.arg("foo", "bar", "baz"), QString("[baz bar foo]") );
- QCOMPARE( s12.arg("a").arg("b").arg("c").arg("d").arg("e"),
- QString("[e b c e a d]") );
- QCOMPARE( s12.arg("a", "b", "c", "d").arg("e"), QString("[e b c e a d]") );
- QCOMPARE( s12.arg("a").arg("b", "c", "d", "e"), QString("[e b c e a d]") );
- QCOMPARE( s13.arg("alpha").arg("beta"),
- QString("alpha% %x%cbeta %dbeta-%") );
- QCOMPARE( s13.arg("alpha", "beta"), QString("alpha% %x%cbeta %dbeta-%") );
- QCOMPARE( s14.arg("a", "b", "c"), QString("abc") );
- QCOMPARE( s8.arg("%1").arg("foo"), QString("[foo foo]") );
- QCOMPARE( s8.arg("%1", "foo"), QString("[%1 foo]") );
- QCOMPARE( s4.arg("foo", 2), QString("[foo]") );
- QCOMPARE( s4.arg("foo", -2), QString("[foo]") );
- QCOMPARE( s4.arg("foo", 10), QString("[ foo]") );
- QCOMPARE( s4.arg("foo", -10), QString("[foo ]") );
-
- QString firstName( "James" );
- QString lastName( "Bond" );
- QString fullName = QString( "My name is %2, %1 %2" )
- .arg( firstName ).arg( lastName );
- QCOMPARE( fullName, QString("My name is Bond, James Bond") );
-
- // number overloads
- QCOMPARE( s4.arg(0), QString("[0]") );
- QCOMPARE( s4.arg(-1), QString("[-1]") );
- QCOMPARE( s4.arg(4294967295UL), QString("[4294967295]") ); // ULONG_MAX 32
- QCOMPARE( s4.arg(Q_INT64_C(9223372036854775807)), // LLONG_MAX
- QString("[9223372036854775807]") );
-
- QCOMPARE( QString().arg(0), QString() );
- QCOMPARE( QString("").arg(0), QString("") );
- QCOMPARE( QString(" ").arg(0), QString(" ") );
- QCOMPARE( QString("%").arg(0), QString("%") );
- QCOMPARE( QString("%%").arg(0), QString("%%") );
- QCOMPARE( QString("%%%").arg(0), QString("%%%") );
- QCOMPARE( QString("%%%1%%%2").arg("foo").arg("bar"), QString("%%foo%%bar") );
-
- QCOMPARE( QString("%1").arg("hello", -10), QString("hello ") );
- QCOMPARE( QString("%1").arg("hello", -5), QString("hello") );
- QCOMPARE( QString("%1").arg("hello", -2), QString("hello") );
- QCOMPARE( QString("%1").arg("hello", 0), QString("hello") );
- QCOMPARE( QString("%1").arg("hello", 2), QString("hello") );
- QCOMPARE( QString("%1").arg("hello", 5), QString("hello") );
- QCOMPARE( QString("%1").arg("hello", 10), QString(" hello") );
- QCOMPARE( QString("%1%1").arg("hello"), QString("hellohello") );
- QCOMPARE( QString("%2%1").arg("hello"), QString("%2hello") );
- QCOMPARE( QString("%1%1").arg(QString::null), QString("") );
- QCOMPARE( QString("%2%1").arg(""), QString("%2") );
-
- QCOMPARE( QString("%2 %L1").arg(12345.6789).arg(12345.6789),
- QString("12345.7 12.345,7") );
- QCOMPARE( QString("%2 %L1").arg(123456789).arg(123456789),
- QString("123456789 123.456.789") );
- QCOMPARE( QString("%L2 %L1 %3").arg(12345.7).arg(123456789).arg('c'),
- QString("123.456.789 12.345,7 c") );
-
- // multi-digit replacement
- QString input("%%%L0 %1 %02 %3 %4 %5 %L6 %7 %8 %%% %090 %10 %11 %L12 %14 %L9888 %9999 %%%%%%%L");
- input = input.arg("A").arg("B").arg("C")
- .arg("D").arg("E").arg("f")
- .arg("g").arg("h").arg("i").arg("j")
- .arg("k").arg("l").arg("m")
- .arg("n").arg("o").arg("p");
-
- QCOMPARE(input, QString("%%A B C D E f g h i %%% j0 k l m n o88 p99 %%%%%%%L"));
-
- QString str("%1 %2 %3 %4 %5 %6 %7 %8 %9 foo %10 %11 bar");
- str = str.arg("one", "2", "3", "4", "5", "6", "7", "8", "9");
- str = str.arg("ahoy", "there");
- QCOMPARE(str, QString("one 2 3 4 5 6 7 8 9 foo ahoy there bar"));
-
- QString str2("%123 %234 %345 %456 %567 %999 %1000 %1230");
- str2 = str2.arg("A", "B", "C", "D", "E", "F");
- QCOMPARE(str2, QString("A B C D E F %1000 %1230"));
-
- // task 201185
- QCOMPARE(QString("%1").arg(-1, 3, 10, QChar('0')), QString("-01"));
- QCOMPARE(QString("%1").arg(-100, 3, 10, QChar('0')), QString("-100"));
- QCOMPARE(QString("%1").arg(-1, 3, 10, QChar(' ')), QString(" -1"));
- QCOMPARE(QString("%1").arg(-100, 3, 10, QChar(' ')), QString("-100"));
- QCOMPARE(QString("%1").arg(1U, 3, 10, QChar(' ')), QString(" 1"));
- QCOMPARE(QString("%1").arg(1000U, 3, 10, QChar(' ')), QString("1000"));
- QCOMPARE(QString("%1").arg(-1, 3, 10, QChar('x')), QString("x-1"));
- QCOMPARE(QString("%1").arg(-100, 3, 10, QChar('x')), QString("-100"));
- QCOMPARE(QString("%1").arg(1U, 3, 10, QChar('x')), QString("xx1"));
- QCOMPARE(QString("%1").arg(1000U, 3, 10, QChar('x')), QString("1000"));
-
- QCOMPARE(QString("%1").arg(-1., 3, 'g', -1, QChar('0')), QString("-01"));
- QCOMPARE(QString("%1").arg(-100., 3, 'g', -1, QChar('0')), QString("-100"));
- QCOMPARE(QString("%1").arg(-1., 3, 'g', -1, QChar(' ')), QString(" -1"));
- QCOMPARE(QString("%1").arg(-100., 3, 'g', -1, QChar(' ')), QString("-100"));
- QCOMPARE(QString("%1").arg(1., 3, 'g', -1, QChar('x')), QString("xx1"));
- QCOMPARE(QString("%1").arg(1000., 3, 'g', -1, QChar('x')), QString("1000"));
- QCOMPARE(QString("%1").arg(-1., 3, 'g', -1, QChar('x')), QString("x-1"));
- QCOMPARE(QString("%1").arg(-100., 3, 'g', -1, QChar('x')), QString("-100"));
-}
-
-void tst_QString::number()
-{
- QCOMPARE( QString::number(int(0)), QString("0") );
- QCOMPARE( QString::number((unsigned int)(11)), QString("11") );
- QCOMPARE( QString::number(-22L), QString("-22") );
- QCOMPARE( QString::number(333UL), QString("333") );
- QCOMPARE( QString::number(4.4), QString("4.4") );
- QCOMPARE( QString::number(Q_INT64_C(-555)), QString("-555") );
- QCOMPARE( QString::number(Q_UINT64_C(6666)), QString("6666") );
-}
-
-void tst_QString::capacity_data()
-{
- length_data();
-}
-
-void tst_QString::capacity()
-{
- QFETCH( QString, s1 );
- QFETCH( int, res );
-
- QString s2( s1 );
- s2.reserve( res );
- QVERIFY( (int)s2.capacity() >= res );
- QCOMPARE( s2, s1 );
-
- s2.reserve( res * 2 );
- QVERIFY( (int)s2.capacity() >= res * 2 );
- QCOMPARE( s2, s1 );
-
- s2.squeeze();
- QVERIFY( (int)s2.capacity() == res );
- QCOMPARE( s2, s1 );
-
-}
-
-void tst_QString::section_data()
-{
- QTest::addColumn<QString>("wholeString" );
- QTest::addColumn<QString>("sep" );
- QTest::addColumn<int>("start" );
- QTest::addColumn<int>("end" );
- QTest::addColumn<int>("flags" );
- QTest::addColumn<QString>("sectionString" );
- QTest::addColumn<bool>("regexp" );
-
- QTest::newRow( "data0" ) << QString("forename,middlename,surname,phone") << QString(",") << 2 << 2 << int(QString::SectionDefault) << QString("surname") << false;
- QTest::newRow( "data1" ) << QString("/usr/local/bin/myapp") << QString("/") << 3 << 4 << int(QString::SectionDefault) << QString("bin/myapp") << false;
- QTest::newRow( "data2" ) << QString("/usr/local/bin/myapp") << QString("/") << 3 << 3 << int(QString::SectionSkipEmpty) << QString("myapp") << false;
- QTest::newRow( "data3" ) << QString("forename**middlename**surname**phone") << QString("**") << 2 << 2 << int(QString::SectionDefault) << QString("surname") << false;
- QTest::newRow( "data4" ) << QString("forename**middlename**surname**phone") << QString("**") << -3 << -2 << int(QString::SectionDefault) << QString("middlename**surname") << false;
- QTest::newRow( "task-21749-1" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 0 << 0 << int(QString::SectionSkipEmpty) << QString("Datt") << false;
- QTest::newRow( "task-21749-2" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 1 << 1 << int(QString::SectionSkipEmpty) << QString("wollen") << false;
- QTest::newRow( "task-21749-3" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 2 << 2 << int(QString::SectionSkipEmpty) << QString("wir") << false;
- QTest::newRow( "task-21749-4" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 3 << 3 << int(QString::SectionSkipEmpty) << QString("mal") << false;
- QTest::newRow( "task-21749-5" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 4 << 4 << int(QString::SectionSkipEmpty) << QString("sehen") << false;
- // not fixed for 3.1
- QTest::newRow( "task-27269" ) << QString("a/b/c/d") << QString("/") << 1 << -1 << int(QString::SectionIncludeLeadingSep | QString::SectionIncludeTrailingSep) << QString("/b/c/d") << false;
- QTest::newRow( "task-43641" ) << QString("aoLoboLocolod") << QString("olo") << -1 << -1 << int(QString::SectionCaseInsensitiveSeps) << QString("d") << false;
- QTest::newRow( "task-27593" ) << QString("F0") << QString("F") << 0 << 0 << int(QString::SectionSkipEmpty) << QString("0") << false;
- QTest::newRow( "foo1" ) << QString("foo;foo;") << QString(";") << 0 << 0
- << int(QString::SectionIncludeLeadingSep) << QString("foo") << false;
- QTest::newRow( "foo2" ) << QString("foo;foo;") << QString(";") << 1 << 1
- << int(QString::SectionIncludeLeadingSep) << QString(";foo") << false;
- QTest::newRow( "foo3" ) << QString("foo;foo;") << QString(";") << 2 << 2
- << int(QString::SectionIncludeLeadingSep) << QString(";") << false;
- QTest::newRow( "foo1rx" ) << QString("foo;foo;") << QString(";") << 0 << 0
- << int(QString::SectionIncludeLeadingSep) << QString("foo") << true;
- QTest::newRow( "foo2rx" ) << QString("foo;foo;") << QString(";") << 1 << 1
- << int(QString::SectionIncludeLeadingSep) << QString(";foo") << true;
- QTest::newRow( "foo3rx" ) << QString("foo;foo;") << QString(";") << 2 << 2
- << int(QString::SectionIncludeLeadingSep) << QString(";") << true;
-
- QTest::newRow( "qmake_path" ) << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode/")
- << QString("/") << 0 << -2 << int(QString::SectionDefault)
- << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode") << false;
- QTest::newRow( "qmake_pathrx" ) << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode/")
- << QString("/") << 0 << -2 << int(QString::SectionDefault)
- << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode") << true;
- QTest::newRow( "task72972" ) << QString("||2|3|||")
- << QString("|") << 0 << 1 << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("||") << false;
- QTest::newRow( "task72972rx" ) << QString("||2|3|||")
- << QString("\\|") << 0 << 1 << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("||") << true;
- QTest::newRow( "task72972-2" ) << QString("|1|2|")
- << QString("|") << 0 << 1 << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("|1|") << false;
- QTest::newRow( "task72972-2rx" ) << QString("|1|2|")
- << QString("\\|") << 0 << 1
- << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("|1|") << true;
- QTest::newRow( "normal1" ) << QString("o1o2o")
- << QString("o") << 0 << 0
- << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("o") << false;
- QTest::newRow( "normal2" ) << QString("o1o2o")
- << QString("o") << 1 << 1
- << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("o1o") << false;
- QTest::newRow( "normal3" ) << QString("o1o2o")
- << QString("o") << 2 << 2
- << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("o2o") << false;
- QTest::newRow( "normal4" ) << QString("o1o2o")
- << QString("o") << 2 << 3
- << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("o2o") << false;
- QTest::newRow( "normal5" ) << QString("o1o2o")
- << QString("o") << 1 << 2
- << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("o1o2o") << false;
- QTest::newRow( "rx1" ) << QString("o1o2o")
- << QString("[a-z]") << 0 << 0
- << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("o") << true;
- QTest::newRow( "rx2" ) << QString("o1o2o")
- << QString("[a-z]") << 1 << 1
- << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("o1o") << true;
- QTest::newRow( "rx3" ) << QString("o1o2o")
- << QString("[a-z]") << 2 << 2
- << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("o2o") << true;
- QTest::newRow( "rx4" ) << QString("o1o2o")
- << QString("[a-z]") << 2 << 3
- << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("o2o") << true;
- QTest::newRow( "rx5" ) << QString("o1o2o")
- << QString("[a-z]") << 1 << 2
- << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
- << QString("o1o2o") << true;
- QTest::newRow( "task45855-rx" ) << QString("This is a story, a small story")
- << QString("\\b") << 3 << 3
- << int(QString::SectionDefault)
- << QString("is") << true;
- QTest::newRow( "task257941-rx" ) << QString("99.0 42.3")
- << QString("\\s*[AaBb]\\s*") << 1 << 1
- << int(QString::SectionIncludeLeadingSep)
- << QString() << true;
-}
-
-void tst_QString::section()
-{
- QFETCH( QString, wholeString );
- QFETCH( QString, sep );
- QFETCH( int, start );
- QFETCH( int, end );
- QFETCH( int, flags );
- QFETCH( QString, sectionString );
- QFETCH( bool, regexp );
- if (regexp) {
- QCOMPARE( wholeString.section( QRegExp(sep), start, end, QString::SectionFlag(flags) ), sectionString );
- } else {
- QCOMPARE( wholeString.section( sep, start, end, QString::SectionFlag(flags) ), sectionString );
- }
-}
-
-
-void tst_QString::operator_eqeq_nullstring()
-{
- /* Some of these might not be all that logical but it's the behaviour we've had since 3.0.0
- so we should probably stick with it. */
-
- QVERIFY( QString() == "" );
- QVERIFY( "" == QString() );
-
- QVERIFY( QString("") == "" );
- QVERIFY( "" == QString("") );
-
- QVERIFY( QString().size() == 0 );
-
- QVERIFY( QString("").size() == 0 );
-
- QVERIFY( QString() == QString("") );
- QVERIFY( QString("") == QString() );
-}
-
-void tst_QString::operator_smaller()
-{
- QString null;
- QString empty("");
- QString foo("foo");
-
- QVERIFY( !(null < QString()) );
- QVERIFY( !(null > QString()) );
-
- QVERIFY( !(empty < QString("")) );
- QVERIFY( !(empty > QString("")) );
-
- QVERIFY( !(null < empty) );
- QVERIFY( !(null > empty) );
-
- QVERIFY( null < foo );
- QVERIFY( !(null > foo) );
- QVERIFY( foo > null );
- QVERIFY( !(foo < null) );
-
- QVERIFY( empty < foo );
- QVERIFY( !(empty > foo) );
- QVERIFY( foo > empty );
- QVERIFY( !(foo < empty) );
-
- QVERIFY( !(null < QLatin1String(0)) );
- QVERIFY( !(null > QLatin1String(0)) );
- QVERIFY( !(null < QLatin1String("")) );
- QVERIFY( !(null > QLatin1String("")) );
-
- QVERIFY( !(null < QLatin1String("")) );
- QVERIFY( !(null > QLatin1String("")) );
- QVERIFY( !(empty < QLatin1String("")) );
- QVERIFY( !(empty > QLatin1String("")) );
-
- QVERIFY( !(QLatin1String(0) < null) );
- QVERIFY( !(QLatin1String(0) > null) );
- QVERIFY( !(QLatin1String("") < null) );
- QVERIFY( !(QLatin1String("") > null) );
-
- QVERIFY( !(QLatin1String(0) < empty) );
- QVERIFY( !(QLatin1String(0) > empty) );
- QVERIFY( !(QLatin1String("") < empty) );
- QVERIFY( !(QLatin1String("") > empty) );
-
- QVERIFY( QLatin1String(0) < foo );
- QVERIFY( !(QLatin1String(0) > foo) );
- QVERIFY( QLatin1String("") < foo );
- QVERIFY( !(QLatin1String("") > foo) );
-
- QVERIFY( foo > QLatin1String(0) );
- QVERIFY( !(foo < QLatin1String(0)) );
- QVERIFY( foo > QLatin1String("") );
- QVERIFY( !(foo < QLatin1String("")) );
-
- QVERIFY( QLatin1String(0) == empty);
- QVERIFY( QLatin1String(0) == null);
- QVERIFY( QLatin1String("") == empty);
- QVERIFY( QLatin1String("") == null);
-
- QVERIFY( !(foo < QLatin1String("foo")));
- QVERIFY( !(foo > QLatin1String("foo")));
- QVERIFY( !(QLatin1String("foo") < foo));
- QVERIFY( !(QLatin1String("foo") > foo));
-
- QVERIFY( !(foo < QLatin1String("a")));
- QVERIFY( (foo > QLatin1String("a")));
- QVERIFY( (QLatin1String("a") < foo));
- QVERIFY( !(QLatin1String("a") > foo));
-
- QVERIFY( (foo < QLatin1String("z")));
- QVERIFY( !(foo > QLatin1String("z")));
- QVERIFY( !(QLatin1String("z") < foo));
- QVERIFY( (QLatin1String("z") > foo));
-}
-
-void tst_QString::integer_conversion_data()
-{
- QTest::addColumn<QString>("locale_name");
- QTest::addColumn<QString>("num_str");
- QTest::addColumn<int>("base");
- QTest::addColumn<bool>("good");
- QTest::addColumn<qlonglong>("num");
-
- QTest::newRow("C empty 0") << QString("C") << QString("") << 0 << false << (qlonglong)0;
- QTest::newRow("C empty 8") << QString("C") << QString("") << 8 << false << (qlonglong)0;
- QTest::newRow("C empty 10") << QString("C") << QString("") << 10 << false << (qlonglong)0;
- QTest::newRow("C empty 16") << QString("C") << QString("") << 16 << false << (qlonglong)0;
-
- QTest::newRow("C null 0") << QString("C") << QString() << 0 << false << (qlonglong)0;
- QTest::newRow("C null 8") << QString("C") << QString() << 8 << false << (qlonglong)0;
- QTest::newRow("C null 10") << QString("C") << QString() << 10 << false << (qlonglong)0;
- QTest::newRow("C null 16") << QString("C") << QString() << 16 << false << (qlonglong)0;
-
- QTest::newRow("C -0xf 0") << QString("C") << QString(" -0xf") << 0 << true << (qlonglong)-15;
- QTest::newRow("C -0xf 0") << QString("C") << QString("-0xf ") << 0 << true << (qlonglong)-15;
- QTest::newRow("C \t0xf\t 0") << QString("C") << QString("\t0xf\t") << 0 << true << (qlonglong)15;
- QTest::newRow("C -010 0") << QString("C") << QString(" -010") << 0 << true << (qlonglong)-8;
- QTest::newRow("C 010 0") << QString("C") << QString("010 ") << 0 << true << (qlonglong)8;
- QTest::newRow("C \t-010\t 0") << QString("C") << QString("\t-010\t") << 0 << true << (qlonglong)-8;
- QTest::newRow("C 123 10") << QString("C") << QString(" 123") << 10 << true << (qlonglong)123;
- QTest::newRow("C 123 10") << QString("C") << QString("123 ") << 10 << true << (qlonglong)123;
- QTest::newRow("C \t123\t 10") << QString("C") << QString("\t123\t") << 10 << true << (qlonglong)123;
- QTest::newRow("C -0xf 16") << QString("C") << QString(" -0xf") << 16 << true << (qlonglong)-15;
- QTest::newRow("C -0xf 16") << QString("C") << QString("-0xf ") << 16 << true << (qlonglong)-15;
- QTest::newRow("C \t0xf\t 16") << QString("C") << QString("\t0xf\t") << 16 << true << (qlonglong)15;
-
- QTest::newRow("C -0 0") << QString("C") << QString("-0") << 0 << true << (qlonglong)0;
- QTest::newRow("C -0 8") << QString("C") << QString("-0") << 8 << true << (qlonglong)0;
- QTest::newRow("C -0 10") << QString("C") << QString("-0") << 10 << true << (qlonglong)0;
- QTest::newRow("C -0 16") << QString("C") << QString("-0") << 16 << true << (qlonglong)0;
-
- QTest::newRow("C 1.234 10") << QString("C") << QString("1.234") << 10 << false << (qlonglong)0;
- QTest::newRow("C 1,234 10") << QString("C") << QString("1,234") << 10 << false << (qlonglong)0;
- QTest::newRow("de_DE 1.234 10") << QString("de_DE") << QString("1.234") << 10 << false << (qlonglong)0;
- QTest::newRow("de_DE 1,234 10") << QString("de_DE") << QString("1,234") << 10 << false << (qlonglong)0;
-
- QTest::newRow("C 0x 0") << QString("C") << QString("0x") << 0 << false << (qlonglong)0;
- QTest::newRow("C 0x 16") << QString("C") << QString("0x") << 16 << false << (qlonglong)0;
-
- QTest::newRow("C 10 0") << QString("C") << QString("10") << 0 << true << (qlonglong)10;
- QTest::newRow("C 010 0") << QString("C") << QString("010") << 0 << true << (qlonglong)8;
- QTest::newRow("C 0x10 0") << QString("C") << QString("0x10") << 0 << true << (qlonglong)16;
- QTest::newRow("C 10 8") << QString("C") << QString("10") << 8 << true << (qlonglong)8;
- QTest::newRow("C 010 8") << QString("C") << QString("010") << 8 << true << (qlonglong)8;
- QTest::newRow("C 0x10 8") << QString("C") << QString("0x10") << 8 << false << (qlonglong)0;
- QTest::newRow("C 10 10") << QString("C") << QString("10") << 10 << true << (qlonglong)10;
- QTest::newRow("C 010 10") << QString("C") << QString("010") << 10 << true << (qlonglong)10;
- QTest::newRow("C 0x10 10") << QString("C") << QString("0x10") << 10 << false << (qlonglong)0;
- QTest::newRow("C 10 16") << QString("C") << QString("10") << 16 << true << (qlonglong)16;
- QTest::newRow("C 010 16") << QString("C") << QString("010") << 16 << true << (qlonglong)16;
- QTest::newRow("C 0x10 16") << QString("C") << QString("0x10") << 16 << true << (qlonglong)16;
-
- QTest::newRow("de_DE 10 0") << QString("de_DE") << QString("10") << 0 << true << (qlonglong)10;
- QTest::newRow("de_DE 010 0") << QString("de_DE") << QString("010") << 0 << true << (qlonglong)8;
- QTest::newRow("de_DE 0x10 0") << QString("de_DE") << QString("0x10") << 0 << true << (qlonglong)16;
- QTest::newRow("de_DE 10 8") << QString("de_DE") << QString("10") << 8 << true << (qlonglong)8;
- QTest::newRow("de_DE 010 8") << QString("de_DE") << QString("010") << 8 << true << (qlonglong)8;
- QTest::newRow("de_DE 0x10 8") << QString("de_DE") << QString("0x10") << 8 << false << (qlonglong)0;
- QTest::newRow("de_DE 10 10") << QString("de_DE") << QString("10") << 10 << true << (qlonglong)10;
- QTest::newRow("de_DE 010 10") << QString("de_DE") << QString("010") << 10 << true << (qlonglong)10;
- QTest::newRow("de_DE 0x10 10") << QString("de_DE") << QString("0x10") << 10 << false << (qlonglong)0;
- QTest::newRow("de_DE 10 16") << QString("de_DE") << QString("10") << 16 << true << (qlonglong)16;
- QTest::newRow("de_DE 010 16") << QString("de_DE") << QString("010") << 16 << true << (qlonglong)16;
- QTest::newRow("de_DE 0x10 16") << QString("de_DE") << QString("0x10") << 16 << true << (qlonglong)16;
-
- QTest::newRow("C -10 0") << QString("C") << QString("-10") << 0 << true << (qlonglong)-10;
- QTest::newRow("C -010 0") << QString("C") << QString("-010") << 0 << true << (qlonglong)-8;
- QTest::newRow("C -0x10 0") << QString("C") << QString("-0x10") << 0 << true << (qlonglong)-16;
- QTest::newRow("C -10 8") << QString("C") << QString("-10") << 8 << true << (qlonglong)-8;
- QTest::newRow("C -010 8") << QString("C") << QString("-010") << 8 << true << (qlonglong)-8;
- QTest::newRow("C -0x10 8") << QString("C") << QString("-0x10") << 8 << false << (qlonglong)0;
- QTest::newRow("C -10 10") << QString("C") << QString("-10") << 10 << true << (qlonglong)-10;
- QTest::newRow("C -010 10") << QString("C") << QString("-010") << 10 << true << (qlonglong)-10;
- QTest::newRow("C -0x10 10") << QString("C") << QString("-0x10") << 10 << false << (qlonglong)0;
- QTest::newRow("C -10 16") << QString("C") << QString("-10") << 16 << true << (qlonglong)-16;
- QTest::newRow("C -010 16") << QString("C") << QString("-010") << 16 << true << (qlonglong)-16;
- QTest::newRow("C -0x10 16") << QString("C") << QString("-0x10") << 16 << true << (qlonglong)-16;
-
- // Let's try some Arabic
- const quint16 arabic_str[] = { 0x0661, 0x0662, 0x0663, 0x0664, 0x0000 }; // "1234"
- QTest::newRow("ar_SA 1234 0") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 0 << true << (qlonglong)1234;
- QTest::newRow("ar_SA 1234 8") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 8 << true << (qlonglong)668;
- QTest::newRow("ar_SA 1234 10") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 10 << true << (qlonglong)1234;
- QTest::newRow("ar_SA 1234 16") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 16 << true << (qlonglong)4660;
-}
-
-void tst_QString::integer_conversion()
-{
- QFETCH(QString, locale_name);
- QFETCH(QString, num_str);
- QFETCH(int, base);
- QFETCH(bool, good);
- QFETCH(qlonglong, num);
-
-
- QLocale::setDefault(locale_name);
- QCOMPARE(QLocale().name(), locale_name);
-
- bool ok;
- qlonglong d = num_str.toLongLong(&ok, base);
- QCOMPARE(ok, good);
-
- if (ok) {
- QCOMPARE(d, num);
- }
-
- QLocale::setDefault(QLocale::C);
-}
-
-void tst_QString::double_conversion_data()
-{
- QTest::addColumn<QString>("locale_name");
- QTest::addColumn<QString>("num_str");
- QTest::addColumn<bool>("good");
- QTest::addColumn<double>("num");
-/*
- // The good...
-
- QTest::newRow("C 1") << QString("C") << QString("1") << true << 1.0;
- QTest::newRow("C 1.0") << QString("C") << QString("1.0") << true << 1.0;
- QTest::newRow("C 1.234") << QString("C") << QString("1.234") << true << 1.234;
- QTest::newRow("C 1.234e-10") << QString("C") << QString("1.234e-10") << true << 1.234e-10;
- QTest::newRow("C 1.234E10") << QString("C") << QString("1.234E10") << true << 1.234e10;
- QTest::newRow("C 1e10") << QString("C") << QString("1e10") << true << 1.0e10;
-
- // The bad...
-
- QTest::newRow("C empty") << QString("C") << QString("") << false << 0.0;
- QTest::newRow("C null") << QString("C") << QString() << false << 0.0;
- QTest::newRow("C .") << QString("C") << QString(".") << false << 0.0;
- QTest::newRow("C 1e") << QString("C") << QString("1e") << false << 0.0;
- QTest::newRow("C 1,") << QString("C") << QString("1,") << false << 0.0;
- QTest::newRow("C 1,0") << QString("C") << QString("1,0") << false << 0.0;
- QTest::newRow("C 1,000") << QString("C") << QString("1,000") << false << 0.0;
- QTest::newRow("C 1e1.0") << QString("C") << QString("1e1.0") << false << 0.0;
- QTest::newRow("C 1e+") << QString("C") << QString("1e+") << false << 0.0;
- QTest::newRow("C 1e-") << QString("C") << QString("1e-") << false << 0.0;
-
- // And the ugly...
-
- QTest::newRow("C .1") << QString("C") << QString(".1") << true << 0.1;
- QTest::newRow("C -.1") << QString("C") << QString("-.1") << true << -0.1;
- QTest::newRow("C 1.") << QString("C") << QString("1.") << true << 1.0;
- QTest::newRow("C 1.E10") << QString("C") << QString("1.E10") << true << 1.0e10;
- QTest::newRow("C 1e+10") << QString("C") << QString("1e+10") << true << 1.0e+10;
-
- QTest::newRow("de_DE 1") << QString("de_DE") << QString("1") << true << 1.0;
- QTest::newRow("de_DE 1.0") << QString("de_DE") << QString("1.0") << true << 1.0;
- QTest::newRow("de_DE 1.234") << QString("de_DE") << QString("1.234") << true << 1.234;
- QTest::newRow("de_DE 1.234e-10") << QString("de_DE") << QString("1.234e-10") << true << 1.234e-10;
- QTest::newRow("de_DE 1.234E10") << QString("de_DE") << QString("1.234E10") << true << 1.234e10;
- QTest::newRow("de_DE 1e10") << QString("de_DE") << QString("1e10") << true << 1.0e10;
- QTest::newRow("de_DE .1") << QString("de_DE") << QString(".1") << true << 0.1;
- QTest::newRow("de_DE -.1") << QString("de_DE") << QString("-.1") << true << -0.1;
- QTest::newRow("de_DE 1.") << QString("de_DE") << QString("1.") << true << 1.0;
- QTest::newRow("de_DE 1.E10") << QString("de_DE") << QString("1.E10") << true << 1.0e10;
- QTest::newRow("de_DE 1e+10") << QString("de_DE") << QString("1e+10") << true << 1.0e+10;
-
- QTest::newRow("de_DE 1,0") << QString("de_DE") << QString("1,0") << true << 1.0;
- QTest::newRow("de_DE 1,234") << QString("de_DE") << QString("1,234") << true << 1.234;
- QTest::newRow("de_DE 1,234e-10") << QString("de_DE") << QString("1,234e-10") << true << 1.234e-10;
- QTest::newRow("de_DE 1,234E10") << QString("de_DE") << QString("1,234E10") << true << 1.234e10;
- QTest::newRow("de_DE ,1") << QString("de_DE") << QString(",1") << true << 0.1;
- QTest::newRow("de_DE -,1") << QString("de_DE") << QString("-,1") << true << -0.1;
- QTest::newRow("de_DE 1,") << QString("de_DE") << QString("1,") << true << 1.0;
- QTest::newRow("de_DE 1,E10") << QString("de_DE") << QString("1,E10") << true << 1.0e10;
-
- QTest::newRow("de_DE empty") << QString("de_DE") << QString("") << false << 0.0;
- QTest::newRow("de_DE null") << QString("de_DE") << QString() << false << 0.0;
- QTest::newRow("de_DE .") << QString("de_DE") << QString(".") << false << 0.0;
- QTest::newRow("de_DE 1e") << QString("de_DE") << QString("1e") << false << 0.0;
- QTest::newRow("de_DE 1e1.0") << QString("de_DE") << QString("1e1.0") << false << 0.0;
- QTest::newRow("de_DE 1e+") << QString("de_DE") << QString("1e+") << false << 0.0;
- QTest::newRow("de_DE 1e-") << QString("de_DE") << QString("1e-") << false << 0.0;
-
- QTest::newRow("C 1") << QString("C") << QString(" 1") << true << 1.0;
- QTest::newRow("C 1 ") << QString("C") << QString("1 ") << true << 1.0;
- QTest::newRow("de_DE 1") << QString("de_DE") << QString(" 1") << true << 1.0;
- QTest::newRow("de_DE 1 ") << QString("de_DE") << QString("1 ") << true << 1.0;
-*/
- // Let's try some Arabic
- const quint16 arabic_str[] = { 0x0660, 0x066B, 0x0661, 0x0662,
- 0x0663, 0x0664, 0x0065, 0x0662,
- 0x0000 }; // "0.1234e2"
- QTest::newRow("ar_SA") << QString("ar_SA") << QString::fromUtf16(arabic_str) << true << 0.1234e2;
-}
-
-void tst_QString::double_conversion()
-{
-#define MY_DOUBLE_EPSILON (2.22045e-16)
-
- QFETCH(QString, locale_name);
- QFETCH(QString, num_str);
- QFETCH(bool, good);
- QFETCH(double, num);
-
- QLocale::setDefault(locale_name);
- QCOMPARE(QLocale().name(), locale_name);
-
- bool ok;
- double d = num_str.toDouble(&ok);
- QCOMPARE(ok, good);
-
- if (ok) {
- double diff = d - num;
- if (diff < 0)
- diff = -diff;
- QVERIFY(diff <= MY_DOUBLE_EPSILON);
- }
-
- QLocale::setDefault(QLocale::C);
-}
-
-#ifndef Q_MOC_RUN
-#include "double_data.h"
-#endif
-
-void tst_QString::tortureSprintfDouble()
-{
- const SprintfDoubleData *data = g_sprintf_double_data;
-
- QString s;
-
- for (; data->fmt != 0; ++data) {
- double d;
- char *buff = (char *)&d;
-# ifndef Q_BYTE_ORDER
-# error "Q_BYTE_ORDER not defined"
-# endif
-
-# ifdef QT_ARMFPA
- buff[0] = data->bytes[4];
- buff[1] = data->bytes[5];
- buff[2] = data->bytes[6];
- buff[3] = data->bytes[7];
- buff[4] = data->bytes[0];
- buff[5] = data->bytes[1];
- buff[6] = data->bytes[2];
- buff[7] = data->bytes[3];
-# elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN
- for (uint i = 0; i < 8; ++i)
- buff[i] = data->bytes[i];
-# else
- for (uint i = 0; i < 8; ++i)
- buff[7 - i] = data->bytes[i];
-# endif
- s.sprintf(data->fmt, d);
-#ifdef QT_NO_FPU // reduced precision when running with hardfloats in qemu
- if (d - 0.1 < 1e12)
- QSKIP("clib sprintf doesn't fill with 0's on this platform",
- SkipSingle);
- QCOMPARE(s.left(16), QString(data->expected).left(16));
-#else
- QCOMPARE(s, QString(data->expected));
-#endif
- }
-}
-
-#include <locale.h>
-
-void tst_QString::localeAwareCompare_data()
-{
-#ifdef Q_OS_WIN
- QTest::addColumn<ulong>("locale");
-#else
- QTest::addColumn<QString>("locale");
-#endif
- QTest::addColumn<QString>("s1");
- QTest::addColumn<QString>("s2");
- QTest::addColumn<int>("result");
-
- /*
- The C locale performs pure byte comparisons for
- Latin-1-specific characters (I think). Compare with Swedish
- below.
- */
-#ifdef Q_OS_WIN // assume c locale to be english
- QTest::newRow("c1") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("\xe5") << QString("\xe4") << 1;
- QTest::newRow("c2") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("\xe4") << QString("\xf6") << -1;
- QTest::newRow("c3") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("\xe5") << QString("\xf6") << -1;
-#else
- QTest::newRow("c1") << QString("C") << QString("\xe5") << QString("\xe4") << 1;
- QTest::newRow("c2") << QString("C") << QString("\xe4") << QString("\xf6") << -1;
- QTest::newRow("c3") << QString("C") << QString("\xe5") << QString("\xf6") << -1;
-#endif
-
- /*
- It's hard to test English, because it's treated differently
- on different platforms. For example, on Linux, it uses the
- iso14651_t1 template file, which happens to provide good
- defaults for Swedish. Mac OS X seems to do a pure bytewise
- comparison of Latin-1 values, although I'm not sure. So I
- just test digits to make sure that it's not totally broken.
- */
-#ifdef Q_OS_WIN
- QTest::newRow("english1") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("5") << QString("4") << 1;
- QTest::newRow("english2") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("4") << QString("6") << -1;
- QTest::newRow("english3") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("5") << QString("6") << -1;
-#else
- QTest::newRow("english1") << QString("en_US") << QString("5") << QString("4") << 1;
- QTest::newRow("english2") << QString("en_US") << QString("4") << QString("6") << -1;
- QTest::newRow("english3") << QString("en_US") << QString("5") << QString("6") << -1;
-#endif
- /*
- In Swedish, a with ring above (E5) comes before a with
- diaresis (E4), which comes before o diaresis (F6), which
- all come after z.
- */
-#ifdef Q_OS_MAC
- QTest::newRow("swedish1") << QString("sv_SE.ISO8859-1") << QString("\xe5") << QString("\xe4") << -1;
- QTest::newRow("swedish2") << QString("sv_SE.ISO8859-1") << QString("\xe4") << QString("\xf6") << -1;
- QTest::newRow("swedish3") << QString("sv_SE.ISO8859-1") << QString("\xe5") << QString("\xf6") << -1;
- QTest::newRow("swedish4") << QString("sv_SE.ISO8859-1") << QString("z") << QString("\xe5") << -1;
-#elif defined(Q_OS_WIN)
- QTest::newRow("swedish1") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("\xe5") << QString("\xe4") << -1;
- QTest::newRow("swedish2") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("\xe4") << QString("\xf6") << -1;
- QTest::newRow("swedish3") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("\xe5") << QString("\xf6") << -1;
- QTest::newRow("swedish4") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("z") << QString("\xe5") << -1;
-#else
- QTest::newRow("swedish1") << QString("sv_SE") << QString("\xe5") << QString("\xe4") << -1;
- QTest::newRow("swedish2") << QString("sv_SE") << QString("\xe4") << QString("\xf6") << -1;
- QTest::newRow("swedish3") << QString("sv_SE") << QString("\xe5") << QString("\xf6") << -1;
- QTest::newRow("swedish4") << QString("sv_SE") << QString("z") << QString("\xe5") << -1;
-#endif
-
-#if 0
- /*
- In Norwegian, ae (E6) comes before o with stroke (D8), which
- comes before a with ring above (E5).
- */
- QTest::newRow("norwegian1") << QString("no_NO") << QString("\xe6") << QString("\xd8") << -1;
- QTest::newRow("norwegian2") << QString("no_NO") << QString("\xd8") << QString("\xe5") << -1;
- QTest::newRow("norwegian3") << QString("no_NO") << QString("\xe6") << QString("\xe5") << -1;
-#endif
-
- /*
- In German, z comes *after* a with diaresis (E4),
- which comes before o diaresis (F6).
- */
-#ifdef Q_OS_MAC
- QTest::newRow("german1") << QString("de_DE.ISO8859-1") << QString("z") << QString("\xe4") << 1;
- QTest::newRow("german2") << QString("de_DE.ISO8859-1") << QString("\xe4") << QString("\xf6") << -1;
- QTest::newRow("german3") << QString("de_DE.ISO8859-1") << QString("z") << QString("\xf6") << 1;
-#elif defined(Q_OS_WIN)
- QTest::newRow("german1") << MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT) << QString("z") << QString("\xe4") << 1;
- QTest::newRow("german2") << MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT) << QString("\xe4") << QString("\xf6") << -1;
- QTest::newRow("german3") << MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT) << QString("z") << QString("\xf6") << 1;
-#else
- QTest::newRow("german1") << QString("de_DE") << QString("z") << QString("\xe4") << 1;
- QTest::newRow("german2") << QString("de_DE") << QString("\xe4") << QString("\xf6") << -1;
- QTest::newRow("german3") << QString("de_DE") << QString("z") << QString("\xf6") << 1;
-#endif
-}
-
-void tst_QString::localeAwareCompare()
-{
-#ifdef Q_OS_SYMBIAN
- QSKIP("QTBUG-16921: There is no way to set up the system locale, so this test is not reliable in Symbian.");
-#else
-#ifdef Q_OS_WIN
-# ifndef Q_OS_WINCE
- QSKIP("On others than Win CE, we cannot set the system or user locale.", SkipAll);
-# endif
- QFETCH(ulong, locale);
-#else
- QFETCH(QString, locale);
-#endif
- QFETCH(QString, s1);
- QFETCH(QString, s2);
- QFETCH(int, result);
-
- QStringRef r1(&s1, 0, s1.length());
- QStringRef r2(&s2, 0, s2.length());
-
-#ifdef Q_OS_WIN
-# if defined(Q_OS_WINCE)
- DWORD oldLcid = GetUserDefaultLCID();
- SetUserDefaultLCID(locale);
-
- QCOMPARE(locale, GetUserDefaultLCID());
-# else
- DWORD oldLcid = GetThreadLocale();
- SetThreadLocale(locale);
-
- QCOMPARE(locale, GetThreadLocale());
-# endif
-
-#elif defined (Q_WS_MAC)
- QSKIP("Setting the locale is not supported on OS X (you can set the C locale, but that won't affect CFStringCompare which is used to compare strings)", SkipAll);
-#elif defined(QT_USE_ICU)
- QLocale::setDefault(QLocale(locale));
-#else
- if (!locale.isEmpty()) {
- const char *newLocale = setlocale(LC_ALL, locale.toLatin1());
- if (!newLocale) {
- setlocale(LC_ALL, "");
- QSKIP("Please install the proper locale on this machine to test properly", SkipSingle);
- return;
- }
- }
-#endif
-
-#ifdef QT_USE_ICU
- // ### for c1, ICU disagrees with libc on how to compare
- QEXPECT_FAIL("c1", "ICU disagrees with test", Abort);
-#endif
-
- int testres = QString::localeAwareCompare(s1, s2);
- if (result < 0) {
- QVERIFY(testres < 0);
- } else if (result > 0) {
- QVERIFY(testres > 0);
- } else {
- QVERIFY(testres == 0);
- }
-
- testres = QString::localeAwareCompare(s2, s1);
- if (result > 0) {
- QVERIFY(testres < 0);
- } else if (result < 0) {
- QVERIFY(testres > 0);
- } else {
- QVERIFY(testres == 0);
- }
-
- testres = QString::localeAwareCompare(s1, r2);
- if (result < 0) {
- QVERIFY(testres < 0);
- } else if (result > 0) {
- QVERIFY(testres > 0);
- } else {
- QVERIFY(testres == 0);
- }
-
- testres = QStringRef::localeAwareCompare(r1, r2);
- if (result < 0) {
- QVERIFY(testres < 0);
- } else if (result > 0) {
- QVERIFY(testres > 0);
- } else {
- QVERIFY(testres == 0);
- }
-
- testres = QStringRef::localeAwareCompare(r2, r1);
- if (result > 0) {
- QVERIFY(testres < 0);
- } else if (result < 0) {
- QVERIFY(testres > 0);
- } else {
- QVERIFY(testres == 0);
- }
-
-#ifdef Q_OS_WIN
-# if defined(Q_OS_WINCE)
- SetUserDefaultLCID(oldLcid);
-# else
- SetThreadLocale(oldLcid);
-# endif
-
-#else
- if (!locale.isEmpty())
- setlocale(LC_ALL, "");
-#endif
-#endif // Q_OS_SYMBIAN
-}
-
-void tst_QString::split_data()
-{
- QTest::addColumn<QString>("str");
- QTest::addColumn<QString>("sep");
- QTest::addColumn<QStringList>("result");
-
- QTest::newRow("1") << "a,b,c" << "," << (QStringList() << "a" << "b" << "c");
- QTest::newRow("2") << QString("-rw-r--r-- 1 0 0 519240 Jul 9 2002 bigfile")
- << " "
- << (QStringList() << "-rw-r--r--" << "" << "1" << "0" << "" << "0" << ""
- << "519240" << "Jul" << "" << "9" << "" << "2002" << "bigfile");
- QTest::newRow("one-empty") << "" << " " << (QStringList() << "");
- QTest::newRow("two-empty") << " " << " " << (QStringList() << "" << "");
- QTest::newRow("three-empty") << " " << " " << (QStringList() << "" << "" << "");
-
- QTest::newRow("all-empty") << "" << "" << (QStringList() << "" << "");
- QTest::newRow("sep-empty") << "abc" << "" << (QStringList() << "" << "a" << "b" << "c" << "");
-}
-
-void tst_QString::split()
-{
- QFETCH(QString, str);
- QFETCH(QString, sep);
- QFETCH(QStringList, result);
-
- QRegExp rx = QRegExp(QRegExp::escape(sep));
-
- QStringList list;
-
- list = str.split(sep);
- QVERIFY(list == result);
- list = str.split(rx);
- QVERIFY(list == result);
- if (sep.size() == 1) {
- list = str.split(sep.at(0));
- QVERIFY(list == result);
- }
-
- list = str.split(sep, QString::KeepEmptyParts);
- QVERIFY(list == result);
- list = str.split(rx, QString::KeepEmptyParts);
- QVERIFY(list == result);
- if (sep.size() == 1) {
- list = str.split(sep.at(0), QString::KeepEmptyParts);
- QVERIFY(list == result);
- }
-
- result.removeAll("");
- list = str.split(sep, QString::SkipEmptyParts);
- QVERIFY(list == result);
- list = str.split(rx, QString::SkipEmptyParts);
- QVERIFY(list == result);
- if (sep.size() == 1) {
- list = str.split(sep.at(0), QString::SkipEmptyParts);
- QVERIFY(list == result);
- }
-}
-
-void tst_QString::split_regexp()
-{
- QString str1 = "Some text\n\twith strange whitespace.";
- QStringList list1 = str1.split(QRegExp("\\s+"));
- QStringList result1;
- result1 << "Some" << "text" << "with" << "strange" << "whitespace.";
- QVERIFY(list1 == result1);
- list1 = str1.split(QRegExp("\\s"), QString::SkipEmptyParts);
- QVERIFY(list1 == result1);
-
- QString str2 = "This time, a normal English sentence.";
- QStringList list2 = str2.split(QRegExp("\\W+"));
- QStringList result2;
- result2 << "This" << "time" << "a" << "normal" << "English" << "sentence" << "";
- QVERIFY(list2 == result2);
- list2 = str2.split(QRegExp("\\W"), QString::SkipEmptyParts);
- result2.removeAll(QString());
- QVERIFY(list2 == result2);
-
- QString str3 = "Now: this sentence fragment.";
- QStringList list3 = str3.split(QRegExp("\\b"));
- QStringList result3;
- result3 << "" << "Now" << ": " << "this" << " " << "sentence" << " " << "fragment" << ".";
- QVERIFY(list3 == result3);
- list3 = str3.split(QRegExp("\\b"), QString::SkipEmptyParts);
- result3.removeAll(QString());
- QVERIFY(list3 == result3);
-}
-
-void tst_QString::fromUtf16_data()
-{
- QTest::addColumn<QString>("ucs2");
- QTest::addColumn<QString>("res");
- QTest::addColumn<int>("len");
-
- QTest::newRow("str0") << QString("abcdefgh") << QString("abcdefgh") << -1;
- QTest::newRow("str0-len") << QString("abcdefgh") << QString("abc") << 3;
-}
-
-void tst_QString::fromUtf16()
-{
- QFETCH(QString, ucs2);
- QFETCH(QString, res);
- QFETCH(int, len);
-
- QCOMPARE(QString::fromUtf16(ucs2.utf16(), len), res);
-}
-
-
-void tst_QString::latin1String()
-{
- QString s("Hello");
-
- QVERIFY(s == QLatin1String("Hello"));
- QVERIFY(s != QLatin1String("Hello World"));
- QVERIFY(s < QLatin1String("Helloa"));
- QVERIFY(!(s > QLatin1String("Helloa")));
- QVERIFY(s > QLatin1String("Helln"));
- QVERIFY(s > QLatin1String("Hell"));
- QVERIFY(!(s < QLatin1String("Helln")));
- QVERIFY(!(s < QLatin1String("Hell")));
-}
-
-void tst_QString::nanAndInf()
-{
- bool ok;
- double d;
-
-#define CHECK_DOUBLE(str, expected_ok, expected_inf) \
- d = QString(str).toDouble(&ok); \
- QVERIFY(ok == expected_ok); \
- QVERIFY((d == INFINITY) == expected_inf);
-
- CHECK_DOUBLE("inf", true, true)
- CHECK_DOUBLE("INF", true, true)
- CHECK_DOUBLE("inf ", true, true)
- CHECK_DOUBLE("+inf", true, true)
- CHECK_DOUBLE("\t +INF", true, true)
- CHECK_DOUBLE("\t INF", true, true)
- CHECK_DOUBLE("inF ", true, true)
- CHECK_DOUBLE("+iNf", true, true)
- CHECK_DOUBLE("INFe-10", false, false)
- CHECK_DOUBLE("0xINF", false, false)
- CHECK_DOUBLE("- INF", false, false)
- CHECK_DOUBLE("+ INF", false, false)
- CHECK_DOUBLE("-- INF", false, false)
- CHECK_DOUBLE("inf0", false, false)
- CHECK_DOUBLE("--INF", false, false)
- CHECK_DOUBLE("++INF", false, false)
- CHECK_DOUBLE("INF++", false, false)
- CHECK_DOUBLE("INF--", false, false)
- CHECK_DOUBLE("INF +", false, false)
- CHECK_DOUBLE("INF -", false, false)
- CHECK_DOUBLE("0INF", false, false)
-#undef CHECK_INF
-
-#define CHECK_NAN(str, expected_ok, expected_nan) \
- d = QString(str).toDouble(&ok); \
- QVERIFY(ok == expected_ok); \
- QVERIFY((bool)isnan(d) == expected_nan); \
-
- CHECK_NAN("nan", true, true)
- CHECK_NAN("NAN", true, true)
- CHECK_NAN("nan ", true, true)
- CHECK_NAN("\t NAN", true, true)
- CHECK_NAN("\t NAN ", true, true)
-#ifndef QT_QLOCALE_USES_FCVT //In case we use glibc this tests will fail
- CHECK_NAN("-nan", false, false)
- CHECK_NAN("+NAN", false, false)
-#endif
- CHECK_NAN("NaN", true, true)
- CHECK_NAN("nAn", true, true)
- CHECK_NAN("NANe-10", false, false)
- CHECK_NAN("0xNAN", false, false)
- CHECK_NAN("0NAN", false, false)
-#undef CHECK_NAN
-
- d = QString("-INF").toDouble(&ok);
- QVERIFY(ok);
- QVERIFY(d == -INFINITY);
-
- long l;
- l = QString("INF").toLong(&ok);
- QVERIFY(!ok);
-
- l = QString("INF").toLong(&ok, 36);
- QVERIFY(ok);
-
- l = QString("INF0").toLong(&ok, 36);
- QVERIFY(ok);
-
- l = QString("0INF0").toLong(&ok, 36);
- QVERIFY(ok);
-}
-
-void tst_QString::arg_fillChar_data()
-{
- QTest::addColumn<QString>("pattern");
- QTest::addColumn<QList<QVariant> >("replaceValues");
- QTest::addColumn<IntList>("widths");
- QTest::addColumn<QString>("fillChars");
- QTest::addColumn<QString>("expected");
-
- QList<QVariant> replaceValues;
- IntList widths;
- QString fillChars;
-
- replaceValues << QVariant((int)5) << QVariant(QString("f")) << QVariant((int)0);
- widths << 3 << 2 << 5;
- QTest::newRow("str0") << QString("%1%2%3") << replaceValues << widths << QString("abc") << QString("aa5bfcccc0");
-
- replaceValues.clear();
- widths.clear();
- replaceValues << QVariant((int)5.5) << QVariant(QString("foo")) << QVariant((qulonglong)INT_MAX);
- widths << 10 << 2 << 5;
- QTest::newRow("str1") << QString("%3.%1.%3.%2") << replaceValues << widths << QString("0 c")
- << QString("2147483647.0000000005.2147483647.foo");
-
- replaceValues.clear();
- widths.clear();
- replaceValues << QVariant(QString("fisk"));
- widths << 100;
- QTest::newRow("str2") << QString("%9 og poteter") << replaceValues << widths << QString("f")
- << QString("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffisk og poteter");
-}
-
-void tst_QString::arg_fillChar()
-{
- static const int base = 10;
- static const char fmt = 'g';
- static const int prec = -1;
-
- QFETCH(QString, pattern);
- QFETCH(QList<QVariant>, replaceValues);
- QFETCH(IntList, widths);
- QFETCH(QString, fillChars);
- QFETCH(QString, expected);
- QCOMPARE(replaceValues.count(), fillChars.count());
- QCOMPARE(replaceValues.count(), widths.count());
-
- QString actual = pattern;
- for (int i=0; i<replaceValues.count(); ++i) {
- const QVariant &var = replaceValues.at(i);
- const int width = widths.at(i);
- const QChar &fillChar = fillChars.at(i);
- switch (var.type()) {
- case QVariant::String: actual = actual.arg(var.toString(), width, fillChar); break;
- case QVariant::Int: actual = actual.arg(var.toInt(), width, base, fillChar); break;
- case QVariant::UInt: actual = actual.arg(var.toUInt(), width, base, fillChar); break;
- case QVariant::Double: actual = actual.arg(var.toDouble(), width, fmt, prec, fillChar); break;
- case QVariant::LongLong: actual = actual.arg(var.toLongLong(), width, base, fillChar); break;
- case QVariant::ULongLong: actual = actual.arg(var.toULongLong(), width, base, fillChar); break;
- default: QVERIFY(0); break;
- }
- }
-
- QCOMPARE(actual, expected);
-}
-
-static inline int sign(int x)
-{
- return x == 0 ? 0 : (x < 0 ? -1 : 1);
-}
-
-void tst_QString::compare_data()
-{
- QTest::addColumn<QString>("s1");
- QTest::addColumn<QString>("s2");
- QTest::addColumn<int>("csr"); // case sensitive result
- QTest::addColumn<int>("cir"); // case insensitive result
-
-
- // null strings
- QTest::newRow("data0") << QString("") << QString("") << 0 << 0;
- QTest::newRow("data1") << QString("a") << QString("") << 1 << 1;
- QTest::newRow("data2") << QString("") << QString("a") << -1 << -1;
-
- // equal length
- QTest::newRow("data3") << QString("abc") << QString("abc") << 0 << 0;
- QTest::newRow("data4") << QString("abC") << QString("abc") << -1 << 0;
- QTest::newRow("data5") << QString("abc") << QString("abC") << 1 << 0;
-
- // different length
- QTest::newRow("data6") << QString("abcdef") << QString("abc") << 1 << 1;
- QTest::newRow("data6") << QString("abCdef") << QString("abc") << -1 << 1;
- QTest::newRow("data7") << QString("abc") << QString("abcdef") << -1 << -1;
-
- QString upper;
- upper += QChar(QChar::highSurrogate(0x10400));
- upper += QChar(QChar::lowSurrogate(0x10400));
- QString lower;
- lower += QChar(QChar::highSurrogate(0x10428));
- lower += QChar(QChar::lowSurrogate(0x10428));
- QTest::newRow("data8") << upper << lower << -1 << 0;
-
- // embedded nulls
- // These dont work as of now. Its OK that these dont work since \0 is not a valid unicode
- /*QTest::newRow("data9") << QString(QByteArray("\0", 1)) << QString(QByteArray("\0", 1)) << 0 << 0;
- QTest::newRow("data10") << QString(QByteArray("\0", 1)) << QString("") << 1 << 1;
- QTest::newRow("data11") << QString("") << QString(QByteArray("\0", 1)) << -1 << -1;
- QTest::newRow("data12") << QString("ab\0c") << QString(QByteArray("ab\0c", 4)) << 0 << 0;
- QTest::newRow("data13") << QString(QByteArray("ab\0c", 4)) << QString("abc") << -1 << -1;
- QTest::newRow("data14") << QString("abc") << QString(QByteArray("ab\0c", 4)) << 1 << 1;*/
-}
-
-static bool isLatin(const QString &s)
-{
- for (int i = 0; i < s.length(); ++i)
- if (s.at(i).unicode() > 0xff)
- return false;
- return true;
-}
-
-void tst_QString::compare()
-{
- QFETCH(QString, s1);
- QFETCH(QString, s2);
- QFETCH(int, csr);
- QFETCH(int, cir);
-
- QStringRef r1(&s1, 0, s1.length());
- QStringRef r2(&s2, 0, s2.length());
-
- QCOMPARE(sign(QString::compare(s1, s2)), csr);
- QCOMPARE(sign(QStringRef::compare(r1, r2)), csr);
- QCOMPARE(sign(s1.compare(s2)), csr);
- QCOMPARE(sign(s1.compare(r2)), csr);
- QCOMPARE(sign(r1.compare(r2)), csr);
-
- QCOMPARE(sign(s1.compare(s2, Qt::CaseSensitive)), csr);
- QCOMPARE(sign(s1.compare(s2, Qt::CaseInsensitive)), cir);
- QCOMPARE(sign(s1.compare(r2, Qt::CaseSensitive)), csr);
- QCOMPARE(sign(s1.compare(r2, Qt::CaseInsensitive)), cir);
- QCOMPARE(sign(r1.compare(r2, Qt::CaseSensitive)), csr);
- QCOMPARE(sign(r1.compare(r2, Qt::CaseInsensitive)), cir);
-
- QCOMPARE(sign(QString::compare(s1, s2, Qt::CaseSensitive)), csr);
- QCOMPARE(sign(QString::compare(s1, s2, Qt::CaseInsensitive)), cir);
- QCOMPARE(sign(QString::compare(s1, r2, Qt::CaseSensitive)), csr);
- QCOMPARE(sign(QString::compare(s1, r2, Qt::CaseInsensitive)), cir);
- QCOMPARE(sign(QStringRef::compare(r1, r2, Qt::CaseSensitive)), csr);
- QCOMPARE(sign(QStringRef::compare(r1, r2, Qt::CaseInsensitive)), cir);
-
- if (!cir) {
- QCOMPARE(s1.toCaseFolded(), s2.toCaseFolded());
- }
-
- if (isLatin(s2)) {
- QCOMPARE(sign(QString::compare(s1, QLatin1String(s2.toLatin1()))), csr);
- QCOMPARE(sign(QString::compare(s1, QLatin1String(s2.toLatin1()), Qt::CaseInsensitive)), cir);
- QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(s2.toLatin1()))), csr);
- QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(s2.toLatin1()), Qt::CaseInsensitive)), cir);
- }
-
- if (isLatin(s1)) {
- QCOMPARE(sign(QString::compare(QLatin1String(s1.toLatin1()), s2)), csr);
- QCOMPARE(sign(QString::compare(QLatin1String(s1.toLatin1()), s2, Qt::CaseInsensitive)), cir);
- }
-}
-
-void tst_QString::resizeAfterFromRawData()
-{
- QString buffer("hello world");
-
- QString array = QString::fromRawData(buffer.constData(), buffer.size());
- QVERIFY(array.constData() == buffer.constData());
- array.resize(5);
- QVERIFY(array.constData() == buffer.constData());
-}
-
-void tst_QString::resizeAfterReserve()
-{
-
- QString s;
- s.reserve(100);
-
- s += "hello world";
-
- // resize should not affect capacity
- s.resize(s.size());
- QVERIFY(s.capacity() == 100);
-
- // but squeeze does
- s.squeeze();
- QVERIFY(s.capacity() == s.size());
-
- // clear does too
- s.clear();
- QVERIFY(s.capacity() == 0);
-
- // test resize(0) border case
- s.reserve(100);
- s += "hello world";
- s.resize(0);
- QVERIFY(s.capacity() == 100);
-}
-
-void tst_QString::resizeWithNegative() const
-{
- {
- QString string(QLatin1String("input"));
- string.resize(-1);
- QCOMPARE(string, QString());
- }
-
- {
- QString string(QLatin1String("input"));
- string.resize(-9099);
- QCOMPARE(string, QString());
- }
-
- {
- /* Example code from customer. */
- QString s(QLatin1String("hola"));
- s.reserve(1);
- s.resize(-1);
- QCOMPARE(s, QString());
- }
-}
-
-void tst_QString::truncateWithNegative() const
-{
- {
- QString string(QLatin1String("input"));
- string.truncate(-1);
- QCOMPARE(string, QString());
- }
-
- {
- QString string(QLatin1String("input"));
- string.truncate(-9099);
- QCOMPARE(string, QString());
- }
-
- {
- /* Example code from customer. */
- QString test(QLatin1String("c"));
-
- test.replace(QRegExp(QLatin1String("c")), QLatin1String("z"));
- test.truncate(-1);
- QCOMPARE(test, QString());
- }
-}
-
-void tst_QString::QCharRefMutableUnicode() const
-{
- QString str;
- str.resize(3);
- str[0].unicode() = 115;
- str[1].unicode() = 116;
- str[2].unicode() = 114;
-
- QCOMPARE(str, QString::fromLatin1("str"));
-}
-
-void tst_QString::QCharRefDetaching() const
-{
- {
- QString str = QString::fromLatin1("str");
- QString copy;
- copy[0] = QLatin1Char('S');
-
- QCOMPARE(str, QString::fromLatin1("str"));
- }
-
- {
- ushort buf[] = { 's', 't', 'r' };
- QString str = QString::fromRawData((const QChar *)buf, 3);
- str[0] = QLatin1Char('S');
-
- QCOMPARE(buf[0], ushort('s'));
- }
-
- {
- static const ushort buf[] = { 's', 't', 'r' };
- QString str = QString::fromRawData((const QChar *)buf, 3);
-
- // this causes a crash in most systems if the detaching doesn't work
- str[0] = QLatin1Char('S');
-
- QCOMPARE(buf[0], ushort('s'));
- }
-}
-
-void tst_QString::sprintfZU() const
-{
- {
- QString string;
- size_t s = 6;
- string.sprintf("%zu", s);
- QCOMPARE(string, QString::fromLatin1("6"));
- }
-
- {
- QString string;
- string.sprintf("%s\n", "foo");
- QCOMPARE(string, QString::fromLatin1("foo\n"));
- }
-
- {
- /* This code crashed. I don't know how to reduce it further. In other words,
- * both %zu and %s needs to be present. */
- size_t s = 6;
- QString string;
- string.sprintf("%zu%s", s, "foo");
- QCOMPARE(string, QString::fromLatin1("6foo"));
- }
-
- {
- size_t s = 6;
- QString string;
- string.sprintf("%zu %s\n", s, "foo");
- QCOMPARE(string, QString::fromLatin1("6 foo\n"));
- }
-}
-
-void tst_QString::repeatedSignature() const
-{
- /* repated() should be a const member. */
- const QString string;
- string.repeated(3);
-}
-
-void tst_QString::repeated() const
-{
- QFETCH(QString, string);
- QFETCH(QString, expected);
- QFETCH(int, count);
-
- QCOMPARE(string.repeated(count), expected);
-}
-
-void tst_QString::repeated_data() const
-{
- QTest::addColumn<QString>("string" );
- QTest::addColumn<QString>("expected" );
- QTest::addColumn<int>("count" );
-
- /* Empty strings. */
- QTest::newRow("")
- << QString()
- << QString()
- << 0;
-
- QTest::newRow("")
- << QString()
- << QString()
- << -1004;
-
- QTest::newRow("")
- << QString()
- << QString()
- << 1;
-
- QTest::newRow("")
- << QString()
- << QString()
- << 5;
-
- /* On simple string. */
- QTest::newRow("")
- << QString(QLatin1String("abc"))
- << QString()
- << -1004;
-
- QTest::newRow("")
- << QString(QLatin1String("abc"))
- << QString()
- << -1;
-
- QTest::newRow("")
- << QString(QLatin1String("abc"))
- << QString()
- << 0;
-
- QTest::newRow("")
- << QString(QLatin1String("abc"))
- << QString(QLatin1String("abc"))
- << 1;
-
- QTest::newRow("")
- << QString(QLatin1String("abc"))
- << QString(QLatin1String("abcabc"))
- << 2;
-
- QTest::newRow("")
- << QString(QLatin1String("abc"))
- << QString(QLatin1String("abcabcabc"))
- << 3;
-
- QTest::newRow("")
- << QString(QLatin1String("abc"))
- << QString(QLatin1String("abcabcabcabc"))
- << 4;
-}
-
-void tst_QString::task262677remove()
-{
- QString driveName = QLatin1String("V:\\blahblah\\more_blahblah\\");
- driveName.remove(2, INT_MAX); // should be "V:" - instead, it's "V::\\blahblah\\more_blahblah\\"
- QVERIFY(driveName == QLatin1String("V:"));
-}
-
-void tst_QString::QTBUG10404_compareRef()
-{
- QString a = "ABCDEFGH";
-
- QCOMPARE(QStringRef(&a, 1, 2).compare(QLatin1String("BC")), 0);
- QVERIFY(QStringRef(&a, 1, 2).compare(QLatin1String("BCD")) < 0);
- QCOMPARE(QStringRef(&a, 1, 2).compare(QLatin1String("Bc"), Qt::CaseInsensitive), 0);
- QVERIFY(QStringRef(&a, 1, 2).compare(QLatin1String("bCD"), Qt::CaseInsensitive) < 0);
-
- QCOMPARE(QStringRef(&a, 1, 2).compare(QString::fromLatin1("BC")), 0);
- QVERIFY(QStringRef(&a, 1, 2).compare(QString::fromLatin1("BCD")) < 0);
- QCOMPARE(QStringRef(&a, 1, 2).compare(QString::fromLatin1("Bc"), Qt::CaseInsensitive), 0);
- QVERIFY(QStringRef(&a, 1, 2).compare(QString::fromLatin1("bCD"), Qt::CaseInsensitive) < 0);
-
- QCOMPARE(QString::fromLatin1("BC").compare(QStringRef(&a, 1, 2)), 0);
- QVERIFY(QString::fromLatin1("BCD").compare(QStringRef(&a, 1, 2)) > 0);
- QCOMPARE(QString::fromLatin1("Bc").compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
- QVERIFY(QString::fromLatin1("bCD").compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive) > 0);
-
- QCOMPARE(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 2)), 0);
- QVERIFY(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 3)) < 0);
- QCOMPARE(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
- QVERIFY(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 3), Qt::CaseInsensitive) < 0);
-
- QString a2 = "ABCDEFGh";
- QCOMPARE(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 2)), 0);
- QVERIFY(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 3)) < 0);
- QCOMPARE(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
- QVERIFY(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 3), Qt::CaseInsensitive) < 0);
-}
-
-void tst_QString::QTBUG9281_arg_locale()
-{
- QLocale l(QLocale::English, QLocale::UnitedKingdom);
- l.setNumberOptions(QLocale::OmitGroupSeparator);
- QLocale::setDefault(l);
- QString str("*%L1*%L2*");
- str = str.arg(123456).arg(1234.56);
- QCOMPARE(str, QString::fromLatin1("*123456*1234.56*"));
- QLocale::setDefault(QLocale::C);
-}
-
-void tst_QString::toUpperLower_icu()
-{
-#ifndef QT_USE_ICU
- QSKIP("Qt was built without ICU support", SkipAll);
-#endif
-
- QString s = QString::fromLatin1("i");
-
- QCOMPARE(s.toUpper(), QString::fromLatin1("I"));
- QCOMPARE(s.toLower(), QString::fromLatin1("i"));
-
- QLocale::setDefault(QLocale(QLocale::Turkish, QLocale::Turkey));
-
- QCOMPARE(s.toUpper(), QString::fromLatin1("I"));
- QCOMPARE(s.toLower(), QString::fromLatin1("i"));
-
- // turkish locale has a capital I with a dot (U+0130, utf8 c4b0)
- QLocale l;
-
- QCOMPARE(l.toUpper(s), QString::fromUtf8("\xc4\xb0"));
- QCOMPARE(l.toLower(QString::fromUtf8("\xc4\xb0")), s);
-
- // nothing should happen here
- QCOMPARE(l.toLower(s), s);
- QCOMPARE(l.toUpper(QString::fromLatin1("I")), QString::fromLatin1("I"));
-
- // U+0131, utf8 c4b1 is the lower-case i without a dot
- QString sup = QString::fromUtf8("\xc4\xb1");
-
- QCOMPARE(l.toUpper(sup), QString::fromLatin1("I"));
- QCOMPARE(l.toLower(QString::fromLatin1("I")), sup);
-
- // nothing should happen here
- QCOMPARE(l.toLower(sup), sup);
- QCOMPARE(l.toLower(QString::fromLatin1("i")), QString::fromLatin1("i"));
-
- // the cleanup function will restore the default locale
-}
-
-void tst_QString::literals()
-{
-#if defined(QT_UNICODE_LITERAL) && (defined(Q_COMPILER_LAMBDA) || defined(Q_CC_GNU))
- QString str(QStringLiteral("abcd"));
-
- QVERIFY(str.length() == 4);
- QVERIFY(str == QLatin1String("abcd"));
- QVERIFY(str.data_ptr()->ref == -1);
- QVERIFY(str.data_ptr()->offset == 0);
-
- const QChar *s = str.constData();
- QString str2 = str;
- QVERIFY(str2.constData() == s);
-
- // detach on non const access
- QVERIFY(str.data() != s);
-
- QVERIFY(str2.constData() == s);
- QVERIFY(str2.data() != s);
-
-#else
- QSKIP("Only tested on c++0x compliant compiler or gcc", SkipAll);
-#endif
-}
-
-
-QTEST_APPLESS_MAIN(tst_QString)
-
-#include "tst_qstring.moc"
diff --git a/tests/auto/qstringlistmodel/qstringlistmodel.pro b/tests/auto/qstringlistmodel/qstringlistmodel.pro
index 9a71d9fc64..fe70ed7345 100644
--- a/tests/auto/qstringlistmodel/qstringlistmodel.pro
+++ b/tests/auto/qstringlistmodel/qstringlistmodel.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
HEADERS += qmodellistener.h
SOURCES += tst_qstringlistmodel.cpp
diff --git a/tests/auto/qstyle/qstyle.pro b/tests/auto/qstyle/qstyle.pro
index eb198e28f5..5c949fa56a 100644
--- a/tests/auto/qstyle/qstyle.pro
+++ b/tests/auto/qstyle/qstyle.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
TARGET.EPOCHEAPSIZE = 0x200000 0x800000
+QT += widgets
SOURCES += tst_qstyle.cpp
wince*|symbian: {
diff --git a/tests/auto/qstyleoption/qstyleoption.pro b/tests/auto/qstyleoption/qstyleoption.pro
index 523d9b3946..ccbb39d55b 100644
--- a/tests/auto/qstyleoption/qstyleoption.pro
+++ b/tests/auto/qstyleoption/qstyleoption.pro
@@ -4,7 +4,7 @@
load(qttest_p4)
TEMPLATE = app
-
+QT += widgets
# Input
SOURCES += tst_qstyleoption.cpp
diff --git a/tests/auto/qstylesheetstyle/qstylesheetstyle.pro b/tests/auto/qstylesheetstyle/qstylesheetstyle.pro
index 1575616b19..9dc296a51c 100644
--- a/tests/auto/qstylesheetstyle/qstylesheetstyle.pro
+++ b/tests/auto/qstylesheetstyle/qstylesheetstyle.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += gui-private
# Input
SOURCES += tst_qstylesheetstyle.cpp
diff --git a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
index 4f742c00eb..e12b57bf72 100644
--- a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
+++ b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
@@ -542,7 +542,6 @@ void tst_QStyleSheetStyle::dynamicProperty()
}
#ifdef Q_OS_MAC
-#include <QtGui/QMacStyle>
void tst_QStyleSheetStyle::layoutSpacing()
{
qApp->setStyleSheet("* { color: red }");
diff --git a/tests/auto/qsystemtrayicon/qsystemtrayicon.pro b/tests/auto/qsystemtrayicon/qsystemtrayicon.pro
index a77b4788a1..8a6ea3d0a9 100644
--- a/tests/auto/qsystemtrayicon/qsystemtrayicon.pro
+++ b/tests/auto/qsystemtrayicon/qsystemtrayicon.pro
@@ -3,7 +3,7 @@
############################################################
load(qttest_p4)
-
+QT += widgets
SOURCES += tst_qsystemtrayicon.cpp
diff --git a/tests/auto/qtabbar/qtabbar.pro b/tests/auto/qtabbar/qtabbar.pro
index 15aa11d9fa..befe5704ba 100644
--- a/tests/auto/qtabbar/qtabbar.pro
+++ b/tests/auto/qtabbar/qtabbar.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qtabbar.cpp
diff --git a/tests/auto/qtabbar/tst_qtabbar.cpp b/tests/auto/qtabbar/tst_qtabbar.cpp
index 2c5458edea..79b0bda0ed 100644
--- a/tests/auto/qtabbar/tst_qtabbar.cpp
+++ b/tests/auto/qtabbar/tst_qtabbar.cpp
@@ -172,14 +172,14 @@ void tst_QTabBar::setIconSize_data()
QTest::addColumn<int>("sizeToSet");
QTest::addColumn<int>("expectedWidth");
- int iconDefault = qApp->style()->pixelMetric(QStyle::PM_TabBarIconSize);
- int small = qApp->style()->pixelMetric(QStyle::PM_SmallIconSize);
- int large = qApp->style()->pixelMetric(QStyle::PM_LargeIconSize);
+ const int iconDefault = qApp->style()->pixelMetric(QStyle::PM_TabBarIconSize);
+ const int smallIconSize = qApp->style()->pixelMetric(QStyle::PM_SmallIconSize);
+ const int largeIconSize = qApp->style()->pixelMetric(QStyle::PM_LargeIconSize);
QTest::newRow("default") << -1 << iconDefault;
QTest::newRow("zero") << 0 << 0;
QTest::newRow("same as default") << iconDefault << iconDefault;
- QTest::newRow("large") << large << large;
- QTest::newRow("small") << small << small;
+ QTest::newRow("large") << largeIconSize << largeIconSize;
+ QTest::newRow("small") << smallIconSize << smallIconSize;
}
void tst_QTabBar::setIconSize()
diff --git a/tests/auto/qtableview/qtableview.pro b/tests/auto/qtableview/qtableview.pro
index 0a2b5171ad..f710fe3773 100644
--- a/tests/auto/qtableview/qtableview.pro
+++ b/tests/auto/qtableview/qtableview.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += core-private gui-private
TARGET.EPOCHEAPSIZE = 0x200000 0x800000
diff --git a/tests/auto/qtablewidget/qtablewidget.pro b/tests/auto/qtablewidget/qtablewidget.pro
index d66d0ac67f..0f09203fd1 100644
--- a/tests/auto/qtablewidget/qtablewidget.pro
+++ b/tests/auto/qtablewidget/qtablewidget.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qtablewidget.cpp
# This prevents the GCCE compile failure: "elf2e32: Error 1063: Fatal Error in
diff --git a/tests/auto/qtabwidget/qtabwidget.pro b/tests/auto/qtabwidget/qtabwidget.pro
index fb0960e3d7..d551c66500 100644
--- a/tests/auto/qtabwidget/qtabwidget.pro
+++ b/tests/auto/qtabwidget/qtabwidget.pro
@@ -1,6 +1,6 @@
load(qttest_p4)
-QT += gui-private
+QT += widgets widgets-private
INCLUDEPATH += ../
diff --git a/tests/auto/qtabwidget/tst_qtabwidget.cpp b/tests/auto/qtabwidget/tst_qtabwidget.cpp
index cf25bfadc8..3db105d3fe 100644
--- a/tests/auto/qtabwidget/tst_qtabwidget.cpp
+++ b/tests/auto/qtabwidget/tst_qtabwidget.cpp
@@ -45,7 +45,7 @@
#include <qdebug.h>
#include <qapplication.h>
#include <qlabel.h>
-#include <QtGui/qboxlayout.h>
+#include <QtWidgets/qboxlayout.h>
//TESTED_CLASS=
//TESTED_FILES=
diff --git a/tests/auto/qtconcurrentfilter/tst_qtconcurrentfilter.cpp b/tests/auto/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
deleted file mode 100644
index 33611d7331..0000000000
--- a/tests/auto/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
+++ /dev/null
@@ -1,1546 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <qtconcurrentfilter.h>
-#include <QCoreApplication>
-#include <QList>
-#include <QLinkedList>
-#include <QtTest/QtTest>
-
-#include "../qtconcurrentmap/functions.h"
-#include "../qfuture/versioncheck.h"
-
-class tst_QtConcurrentFilter : public QObject
-{
- Q_OBJECT
-
-private slots:
- void filter();
- void filtered();
- void filteredReduced();
- void resultAt();
- void incrementalResults();
- void noDetatch();
- void stlContainers();
-};
-
-#if !defined (QT_NO_CONCURRENT_TEST) && !defined(QT_NO_CONCURRENT_FILTER)
-
-void tst_QtConcurrentFilter::filter()
-{
- // functor
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::filter(list, KeepEvenIntegers()).waitForFinished();
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(list, KeepEvenIntegers());
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::filter(linkedList, KeepEvenIntegers()).waitForFinished();
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(linkedList, KeepEvenIntegers());
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
- {
- QVector<int> vector;
- vector << 1 << 2 << 3 << 4;
- QtConcurrent::filter(vector, KeepEvenIntegers()).waitForFinished();
- QCOMPARE(vector, QVector<int>() << 2 << 4);
- }
- {
- QVector<int> vector;
- vector << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(vector, KeepEvenIntegers());
- QCOMPARE(vector, QVector<int>() << 2 << 4);
- }
-
-
- // function
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::filter(list, keepEvenIntegers).waitForFinished();
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(list, keepEvenIntegers);
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::filter(linkedList, keepEvenIntegers).waitForFinished();
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(linkedList, keepEvenIntegers);
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
-
- // bound function
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::filter(list, keepEvenIntegers).waitForFinished();
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(list, keepEvenIntegers);
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::filter(linkedList, keepEvenIntegers).waitForFinished();
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(linkedList, keepEvenIntegers);
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
-
- // member
- {
- QList<Number> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::filter(list, &Number::isEven).waitForFinished();
- QCOMPARE(list, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(list, &Number::isEven);
- QCOMPARE(list, QList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::filter(linkedList, &Number::isEven).waitForFinished();
- QCOMPARE(linkedList, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(linkedList, &Number::isEven);
- QCOMPARE(linkedList, QLinkedList<Number>() << 2 << 4);
- }
-}
-
-void tst_QtConcurrentFilter::filtered()
-{
- QList<int> list;
- list << 1 << 2 << 3 << 4;
-
- // functor
- {
- QFuture<int> f = QtConcurrent::filtered(list, KeepEvenIntegers());
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), KeepEvenIntegers());
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers());
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered(list, KeepEvenIntegers());
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
- list.end(),
- KeepEvenIntegers());
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers());
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
-
- {
- QVector<int> vector;
- vector << 1 << 2 << 3 << 4;
- QVector<int> vector2 = QtConcurrent::blockingFiltered(vector, KeepEvenIntegers());
- QCOMPARE(vector2, QVector<int>() << 2 << 4);
- }
- {
- QVector<int> vector;
- vector << 1 << 2 << 3 << 4;
- QFuture<int> f = QtConcurrent::filtered(vector, KeepEvenIntegers());
- QCOMPARE(f.results(), QList<int>() << 2 << 4);
- }
-
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, KeepEvenIntegers());
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QFuture<int> f = QtConcurrent::filtered(linkedList, KeepEvenIntegers());
- QCOMPARE(f.results(), QList<int>() << 2 << 4);
- }
-
- // function
- {
- QFuture<int> f = QtConcurrent::filtered(list, keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered(list, keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
- list.end(),
- keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
-
- // bound function
- {
- QFuture<int> f = QtConcurrent::filtered(list, keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered(list, keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
- list.end(),
- keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
-
- // const member function
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers, &Number::isEven);
- QList<Number> list2 = f.results();
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers.begin(),
- integers.end(),
- &Number::isEven);
- QList<Number> list2 = f.results();
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers.constBegin(),
- integers.constEnd(),
- &Number::isEven);
- QList<Number> list2 = f.results();
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::blockingFiltered(integers, &Number::isEven);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::blockingFiltered<QList<Number> >(integers.begin(),
- integers.end(),
- &Number::isEven);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QList<Number> list2 =
- QtConcurrent::blockingFiltered<QList<Number> >(integers.constBegin(),
- integers.constEnd(),
- &Number::isEven);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
-
- // same thing on linked lists
-
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
-
- // functor
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList, KeepEvenIntegers());
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers());
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers());
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, KeepEvenIntegers());
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers());
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers());
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
-
- // function
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList, keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
-
- // bound function
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList, keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
-
- // const member function
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers, &Number::isEven);
- QList<Number> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers.begin(),
- integers.end(),
- &Number::isEven);
- QList<Number> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers.constBegin(),
- integers.constEnd(),
- &Number::isEven);
- QList<Number> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::blockingFiltered(integers, &Number::isEven);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<Number> >(integers.begin(),
- integers.end(),
- &Number::isEven);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 =
- QtConcurrent::blockingFiltered<QLinkedList<Number> >(integers.constBegin(),
- integers.constEnd(),
- &Number::isEven);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
-}
-
-void tst_QtConcurrentFilter::filteredReduced()
-{
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QList<Number> numberList;
- numberList << 1 << 2 << 3 << 4;
-
- // functor-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(list, KeepEvenIntegers(), IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(list, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- QVector<int> vector;
- vector << 1 << 2 << 3 << 4;
- int sum = QtConcurrent::filteredReduced<int>(vector, KeepEvenIntegers(), IntSumReduce());
- QCOMPARE(sum, 6);
- }
-
- {
- int sum = QtConcurrent::filteredReduced<int>(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(list.begin(),
- list.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list, KeepEvenIntegers(), IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(list, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
- list.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
-
- // function-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(list, keepEvenIntegers, IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(list.begin(),
- list.end(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list, keepEvenIntegers, IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
- list.end(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
-
- // functor-function
- {
- int sum = QtConcurrent::filteredReduced(list, KeepEvenIntegers(), intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list, KeepEvenIntegers(), intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // function-function
- {
- int sum = QtConcurrent::filteredReduced(list, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(list.begin(),
- list.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list.begin(),
- list.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // functor-member
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list, KeepEvenIntegers(), &QList<int>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list, KeepEvenIntegers(), &QList<int>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
-
- // member-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(numberList, &Number::isEven, NumberSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(QList<Number>(numberList),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(numberList.begin(),
- numberList.end(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(numberList.constBegin(),
- numberList.constEnd(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberList, &Number::isEven, NumberSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(QList<Number>(numberList),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberList.begin(),
- numberList.end(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberList.constBegin(),
- numberList.constEnd(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
-
- // member-member
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::filteredReduced(numbers,
- &Number::isEven,
- &QList<Number>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::filteredReduced(numbers.begin(),
- numbers.end(),
- &Number::isEven,
- &QList<Number>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::filteredReduced(numbers.constBegin(),
- numbers.constEnd(),
- &Number::isEven,
- &QList<Number>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers,
- &Number::isEven,
- &QList<Number>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers.begin(),
- numbers.end(),
- &Number::isEven,
- &QList<Number>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers.constBegin(),
- numbers.constEnd(),
- &Number::isEven,
- &QList<Number>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
-
- // function-member
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list, keepEvenIntegers, &QList<int>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list.begin(),
- list.end(),
- keepEvenIntegers,
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list, keepEvenIntegers, &QList<int>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.begin(),
- list.end(),
- keepEvenIntegers,
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
-
- // member-function
- {
- int sum = QtConcurrent::filteredReduced(numberList, &Number::isEven, numberSumReduce);
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced(QList<Number>(numberList),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(numberList.begin(),
- numberList.end(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberList, &Number::isEven, numberSumReduce);
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced(QList<Number>(numberList),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberList.begin(),
- numberList.end(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // same as above on linked lists
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QLinkedList<Number> numberLinkedList;
- numberLinkedList << 1 << 2 << 3 << 4;
-
- // functor-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList, KeepEvenIntegers(), IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(linkedList, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList, KeepEvenIntegers(), IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
-
- // function-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList, keepEvenIntegers, IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList, keepEvenIntegers, IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
-
- // functor-function
- {
- int sum = QtConcurrent::filteredReduced(linkedList, KeepEvenIntegers(), intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList, KeepEvenIntegers(), intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // function-function
- {
- int sum = QtConcurrent::filteredReduced(linkedList, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // functor-member
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList, KeepEvenIntegers(), &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList, KeepEvenIntegers(), &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
-
- // member-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(numberLinkedList, &Number::isEven, NumberSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(QLinkedList<Number>(numberLinkedList),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(numberLinkedList.begin(),
- numberLinkedList.end(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList, &Number::isEven, NumberSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(QLinkedList<Number>(numberLinkedList),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList.begin(),
- numberLinkedList.end(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
-
- // member-member
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers,
- &Number::isEven,
- &QLinkedList<Number>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers.begin(),
- numbers.end(),
- &Number::isEven,
- &QLinkedList<Number>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers.constBegin(),
- numbers.constEnd(),
- &Number::isEven,
- &QLinkedList<Number>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers,
- &Number::isEven,
- &QLinkedList<Number>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers.begin(),
- numbers.end(),
- &Number::isEven,
- &QLinkedList<Number>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers.constBegin(),
- numbers.constEnd(),
- &Number::isEven,
- &QLinkedList<Number>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
-
- // function-member
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList, keepEvenIntegers, &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList, keepEvenIntegers, &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
-
- // member-function
- {
- int sum = QtConcurrent::filteredReduced(numberLinkedList, &Number::isEven, numberSumReduce);
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced(QLinkedList<Number>(numberLinkedList),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(numberLinkedList.begin(),
- numberLinkedList.end(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList, &Number::isEven, numberSumReduce);
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced(QLinkedList<Number>(numberLinkedList),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList.begin(),
- numberLinkedList.end(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // ### the same as above, with an initial result value
-}
-
-bool filterfn(int i)
-{
- return (i % 2);
-}
-
-void tst_QtConcurrentFilter::resultAt()
-{
-
- QList<int> ints;
- for (int i=0; i < 1000; ++i)
- ints << i;
-
- QFuture<int> future = QtConcurrent::filtered(ints, filterfn);
- future.waitForFinished();
-
-
- for (int i = 0; i < future.resultCount(); ++i) {
- QCOMPARE(future.resultAt(i), ints.at(i * 2 + 1));
- }
-
-}
-
-bool waitFilterfn(const int &i)
-{
- QTest::qWait(1);
- return (i % 2);
-}
-
-void tst_QtConcurrentFilter::incrementalResults()
-{
- const int count = 200;
- QList<int> ints;
- for (int i=0; i < count; ++i)
- ints << i;
-
- QFuture<int> future = QtConcurrent::filtered(ints, waitFilterfn);
-
- QList<int> results;
-
- while (future.isFinished() == false) {
- for (int i = 0; i < future.resultCount(); ++i) {
- results += future.resultAt(i);
- }
- QTest::qWait(1);
- }
-
- QCOMPARE(future.isFinished(), true);
- QCOMPARE(future.resultCount(), count / 2);
- QCOMPARE(future.results().count(), count / 2);
-}
-
-void tst_QtConcurrentFilter::noDetatch()
-{
- {
- QList<int> l = QList<int>() << 1;
- QVERIFY(l.isDetached());
-
- QList<int> ll = l;
- QVERIFY(l.isDetached() == false);
-
- QtConcurrent::filtered(l, waitFilterfn).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::blockingFiltered(l, waitFilterfn);
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::filteredReduced(l, waitFilterfn, intSumReduce).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::filter(l, waitFilterfn).waitForFinished();
- QVERIFY(l.isDetached() == true);
- QVERIFY(ll.isDetached() == true);
- }
- {
- const QList<int> l = QList<int>() << 1;
- QVERIFY(l.isDetached());
-
- const QList<int> ll = l;
- QVERIFY(l.isDetached() == false);
-
- QtConcurrent::filtered(l, waitFilterfn).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::filteredReduced(l, waitFilterfn, intSumReduce).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
- }
-}
-
-void tst_QtConcurrentFilter::stlContainers()
-{
-#ifdef QT_NO_STL
- QSKIP("Qt compiled without STL support", SkipAll);
-#else
- std::vector<int> vector;
- vector.push_back(1);
- vector.push_back(2);
-
- std::vector<int> vector2 = QtConcurrent::blockingFiltered(vector, waitFilterfn);
- QCOMPARE(vector2.size(), (std::vector<int>::size_type)(1));
- QCOMPARE(vector2[0], 1);
-
- std::list<int> list;
- list.push_back(1);
- list.push_back(2);
-
- std::list<int> list2 = QtConcurrent::blockingFiltered(list, waitFilterfn);
- QCOMPARE(list2.size(), (std::list<int>::size_type)(1));
- QCOMPARE(*list2.begin(), 1);
-
- QtConcurrent::filtered(list, waitFilterfn).waitForFinished();
- QtConcurrent::filtered(vector, waitFilterfn).waitForFinished();
- QtConcurrent::filtered(vector.begin(), vector.end(), waitFilterfn).waitForFinished();
-
- QtConcurrent::blockingFilter(list, waitFilterfn);
- QCOMPARE(list2.size(), (std::list<int>::size_type)(1));
- QCOMPARE(*list2.begin(), 1);
-#endif
-}
-
-QTEST_MAIN(tst_QtConcurrentFilter)
-
-#else
-
-void tst_QtConcurrentFilter::filter() {}
-void tst_QtConcurrentFilter::filtered() {}
-void tst_QtConcurrentFilter::filteredReduced() {}
-void tst_QtConcurrentFilter::resultAt() {}
-void tst_QtConcurrentFilter::incrementalResults() {}
-void tst_QtConcurrentFilter::stlContainers() {}
-void tst_QtConcurrentFilter::noDetatch() {}
-
-QTEST_NOOP_MAIN
-#endif
-
-#include "tst_qtconcurrentfilter.moc"
diff --git a/tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp b/tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp
deleted file mode 100644
index 74a254cbf4..0000000000
--- a/tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp
+++ /dev/null
@@ -1,2448 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <qtconcurrentmap.h>
-#include <qtconcurrentexception.h>
-
-#include <qdebug.h>
-#include <QThread>
-
-#include <QtTest/QtTest>
-
-#include "functions.h"
-#include "../qfuture/versioncheck.h"
-
-Q_DECLARE_METATYPE(QVector<int>);
-Q_DECLARE_METATYPE(QVector<double>);
-Q_DECLARE_METATYPE(QVector<QString>);
-Q_DECLARE_METATYPE(QList<int>);
-Q_DECLARE_METATYPE(QList<double>);
-Q_DECLARE_METATYPE(QList<QString>);
-
-class tst_QtConcurrentMap: public QObject
-{
- Q_OBJECT
-private slots:
- void map();
- void blocking_map();
- void mapped();
- void blocking_mapped();
- void mappedReduced();
- void blocking_mappedReduced();
- void assignResult();
- void functionOverloads();
-#ifndef QT_NO_EXCEPTIONS
- void exceptions();
-#endif
- void incrementalResults();
- void noDetatch();
- void stlContainers();
- void qFutureAssignmentLeak();
- void stressTest();
-public slots:
- void throttling();
-};
-
-#if !defined (QT_NO_CONCURRENT_TEST) && !defined(QT_NO_CONCURRENT_MAP)
-
-using namespace QtConcurrent;
-
-void multiplyBy2Immutable(int x)
-{
- x *= 2;
-}
-
-class MultiplyBy2Immutable
-{
-public:
- void operator()(int x)
- {
- x *= 2;
- }
-};
-
-void multiplyBy2InPlace(int &x)
-{
- x *= 2;
-}
-
-class MultiplyBy2InPlace
-{
-public:
- void operator()(int &x)
- {
- x *= 2;
- }
-};
-
-Q_DECLARE_METATYPE(QList<Number>);
-
-void tst_QtConcurrentMap::map()
-{
- // functors take arguments by reference, modifying the sequence in place
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::map(list, MultiplyBy2InPlace()).waitForFinished();
- QCOMPARE(list, QList<int>() << 2 << 4 << 6);
- QtConcurrent::map(list.begin(), list.end(), MultiplyBy2InPlace()).waitForFinished();
- QCOMPARE(list, QList<int>() << 4 << 8 << 12);
-
- // function
- QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QList<int>() << 8 << 16 << 24);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QList<int>() << 16 << 32 << 48);
-
- // bound function
- QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QList<int>() << 32 << 64 << 96);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QList<int>() << 64 << 128 << 192);
-
- // member function
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::map(numberList, &Number::multiplyBy2).waitForFinished();
- QCOMPARE(numberList, QList<Number>() << 2 << 4 << 6);
- QtConcurrent::map(numberList.begin(), numberList.end(), &Number::multiplyBy2).waitForFinished();
- QCOMPARE(numberList, QList<Number>() << 4 << 8 << 12);
-
-#ifdef Q_COMPILER_LAMBDA
- // lambda
- QtConcurrent::map(list, [](int &x){x *= 2;}).waitForFinished();
- QCOMPARE(list, QList<int>() << 128 << 256 << 384);
- QtConcurrent::map(list.begin(), list.end(), [](int &x){x *= 2;}).waitForFinished();
- QCOMPARE(list, QList<int>() << 256 << 512 << 768);
-#endif
-
- }
-
- // functors don't take arguments by reference, making these no-ops
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::map(list, MultiplyBy2Immutable()).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::map(list.begin(), list.end(), MultiplyBy2Immutable()).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- // function
- QtConcurrent::map(list, multiplyBy2Immutable).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2Immutable).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- // bound function
- QtConcurrent::map(list, multiplyBy2Immutable).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2Immutable).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
-#ifdef Q_COMPILER_LAMBDA
- // lambda
- QtConcurrent::map(list, [](int x){x *= 2;}).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::map(list.begin(), list.end(), [](int x){x *= 2;}).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-#endif
- }
-
- // Linked lists and forward iterators
- {
- QLinkedList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::map(list, MultiplyBy2InPlace()).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 2 << 4 << 6);
- QtConcurrent::map(list.begin(), list.end(), MultiplyBy2InPlace()).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 4 << 8 << 12);
-
- // function
- QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 8 << 16 << 24);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 16 << 32 << 48);
-
- // bound function
- QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 32 << 64 << 96);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 64 << 128 << 192);
-
- // member function
- QLinkedList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::map(numberList, &Number::multiplyBy2).waitForFinished();
- QCOMPARE(numberList, QLinkedList<Number>() << 2 << 4 << 6);
- QtConcurrent::map(numberList.begin(), numberList.end(), &Number::multiplyBy2).waitForFinished();
- QCOMPARE(numberList, QLinkedList<Number>() << 4 << 8 << 12);
- }
-
-#if 0
- // not allowed: map() with immutable sequences makes no sense
- {
- const QList<int> list = QList<int>() << 1 << 2 << 3;
-
- QtConcurrent::map(list, MultiplyBy2Immutable());
- QtConcurrent::map(list, multiplyBy2Immutable);
- QtConcurrent::map(list, multiplyBy2Immutable);
- }
-#endif
-
-#if 0
- // not allowed: in place modification of a temp copy (since temp copy goes out of scope)
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- QtConcurrent::map(QList<int>(list), MultiplyBy2InPlace());
- QtConcurrent::map(QList<int>(list), multiplyBy2);
- QtConcurrent::map(QList<int>(list), multiplyBy2InPlace);
-
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::map(QList<Number>(numberList), &Number::multiplyBy2);
- }
-#endif
-
-#if 0
- // not allowed: map() on a const list, where functors try to modify the items in the list
- {
- const QList<int> list = QList<int>() << 1 << 2 << 3;;
-
- QtConcurrent::map(list, MultiplyBy2InPlace());
- QtConcurrent::map(list, multiplyBy2InPlace);
- QtConcurrent::map(list, multiplyBy2InPlace);
-
- const QList<Number> numberList = QList<Number>() << 1 << 2 << 3;
- QtConcurrent::map(numberList, &Number::multiplyBy2);
- }
-#endif
-}
-
-void tst_QtConcurrentMap::blocking_map()
-{
- // functors take arguments by reference, modifying the sequence in place
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
- QCOMPARE(list, QList<int>() << 2 << 4 << 6);
- QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2InPlace());
- QCOMPARE(list, QList<int>() << 4 << 8 << 12);
-
- // function
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
- QCOMPARE(list, QList<int>() << 8 << 16 << 24);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
- QCOMPARE(list, QList<int>() << 16 << 32 << 48);
-
- // bound function
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
- QCOMPARE(list, QList<int>() << 32 << 64 << 96);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
- QCOMPARE(list, QList<int>() << 64 << 128 << 192);
-
- // member function
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
- QCOMPARE(numberList, QList<Number>() << 2 << 4 << 6);
- QtConcurrent::blockingMap(numberList.begin(), numberList.end(), &Number::multiplyBy2);
- QCOMPARE(numberList, QList<Number>() << 4 << 8 << 12);
- }
-
- // functors don't take arguments by reference, making these no-ops
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::blockingMap(list, MultiplyBy2Immutable());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2Immutable());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- // function
- QtConcurrent::blockingMap(list, multiplyBy2Immutable);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2Immutable);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- // bound function
- QtConcurrent::blockingMap(list, multiplyBy2Immutable);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2Immutable);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- }
-
- // Linked lists and forward iterators
- {
- QLinkedList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
- QCOMPARE(list, QLinkedList<int>() << 2 << 4 << 6);
- QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2InPlace());
- QCOMPARE(list, QLinkedList<int>() << 4 << 8 << 12);
-
- // function
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
- QCOMPARE(list, QLinkedList<int>() << 8 << 16 << 24);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
- QCOMPARE(list, QLinkedList<int>() << 16 << 32 << 48);
-
- // bound function
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
- QCOMPARE(list, QLinkedList<int>() << 32 << 64 << 96);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
- QCOMPARE(list, QLinkedList<int>() << 64 << 128 << 192);
-
- // member function
- QLinkedList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
- QCOMPARE(numberList, QLinkedList<Number>() << 2 << 4 << 6);
- QtConcurrent::blockingMap(numberList.begin(), numberList.end(), &Number::multiplyBy2);
- QCOMPARE(numberList, QLinkedList<Number>() << 4 << 8 << 12);
- }
-
-#if 0
- // not allowed: map() with immutable sequences makes no sense
- {
- const QList<int> list = QList<int>() << 1 << 2 << 3;
-
- QtConcurrent::blockingMap(list, MultiplyBy2Immutable());
- QtConcurrent::blockkng::map(list, multiplyBy2Immutable);
- QtConcurrent::blockingMap(list, multiplyBy2Immutable);
- }
-#endif
-
-#if 0
- // not allowed: in place modification of a temp copy (since temp copy goes out of scope)
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- QtConcurrent::blockingMap(QList<int>(list), MultiplyBy2InPlace());
- QtConcurrent::blockingMap(QList<int>(list), multiplyBy2);
- QtConcurrent::blockingMap(QList<int>(list), multiplyBy2InPlace);
-
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::blockingMap(QList<Number>(numberList), &Number::multiplyBy2);
- }
-#endif
-
-#if 0
- // not allowed: map() on a const list, where functors try to modify the items in the list
- {
- const QList<int> list = QList<int>() << 1 << 2 << 3;;
-
- QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
-
- const QList<Number> numberList = QList<Number>() << 1 << 2 << 3;
- QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
- }
-#endif
-}
-
-int multiplyBy2(int x)
-{
- int y = x * 2;
- return y;
-}
-
-class MultiplyBy2
-{
-public:
- typedef int result_type;
-
- int operator()(int x) const
- {
- int y = x * 2;
- return y;
- }
-};
-
-double intToDouble(int x)
-{
- return double(x);
-}
-
-class IntToDouble
-{
-public:
- typedef double result_type;
-
- double operator()(int x) const
- {
- return double(x);
- }
-};
-
-int stringToInt(const QString &string)
-{
- return string.toInt();
-}
-
-class StringToInt
-{
-public:
- typedef int result_type;
-
- int operator()(const QString &string) const
- {
- return string.toInt();
- }
-};
-
-void tst_QtConcurrentMap::mapped()
-{
- QList<int> list;
- list << 1 << 2 << 3;
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3;
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QLinkedList<Number> numberLinkedList;
- numberLinkedList << 1 << 2 << 3;
-
- // functor
- {
- QList<int> list2 = QtConcurrent::mapped(list, MultiplyBy2()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- MultiplyBy2()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::mapped(QList<int>(list), MultiplyBy2()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QList<int> list2 = QtConcurrent::mapped(linkedList, MultiplyBy2()).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- MultiplyBy2()).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 =
- QtConcurrent::mapped(QLinkedList<int>(linkedList), MultiplyBy2()).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
-
- // function
- {
- QList<int> list2 = QtConcurrent::mapped(list, multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::mapped(QList<int>(list), multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QList<int> list2 = QtConcurrent::mapped(linkedList, multiplyBy2).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- multiplyBy2).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 =
- QtConcurrent::mapped(QLinkedList<int>(linkedList), multiplyBy2).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
-
- // bound function
- {
- QList<int> list2 = QtConcurrent::mapped(list, multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::mapped(QList<int>(list), multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QList<int> list2 = QtConcurrent::mapped(linkedList, multiplyBy2).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- multiplyBy2)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList), multiplyBy2)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
-
- // const member function
- {
- QList<Number> numberList2 = QtConcurrent::mapped(numberList, &Number::multipliedBy2)
- .results();
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList3 = QtConcurrent::mapped(numberList.constBegin(),
- numberList.constEnd(),
- &Number::multipliedBy2)
- .results();
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList4 = QtConcurrent::mapped(QList<Number>(numberList),
- &Number::multipliedBy2)
- .results();
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
- }
- {
- QList<Number> numberList2 = QtConcurrent::mapped(numberLinkedList, &Number::multipliedBy2)
- .results();
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList3 = QtConcurrent::mapped(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::multipliedBy2)
- .results();
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList4 = QtConcurrent::mapped(QLinkedList<Number>(numberLinkedList),
- &Number::multipliedBy2)
- .results();
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
- }
-
- // change the value_type, same container
-
- // functor
- {
- QList<double> list2 = QtConcurrent::mapped(list, IntToDouble()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- IntToDouble())
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::mapped(QList<int>(list),
- IntToDouble())
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QList<double> list2 = QtConcurrent::mapped(linkedList, IntToDouble()).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- IntToDouble())
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList),
- IntToDouble())
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // function
- {
- QList<double> list2 = QtConcurrent::mapped(list, intToDouble).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- intToDouble)
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::mapped(QList<int>(list), intToDouble).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QList<double> list2 = QtConcurrent::mapped(linkedList, intToDouble).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- intToDouble)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList), intToDouble)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // bound function
- {
- QList<double> list2 = QtConcurrent::mapped(list, intToDouble).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- intToDouble)
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
-
- QList<double> list4 = QtConcurrent::mapped(QList<int>(list),
- intToDouble)
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QList<double> list2 = QtConcurrent::mapped(linkedList, intToDouble).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- intToDouble)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
-
- QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList),
- intToDouble)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // const member function
- {
- QList<QString> list2 = QtConcurrent::mapped(numberList, &Number::toString).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list3 = QtConcurrent::mapped(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toString)
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list4 = QtConcurrent::mapped(QList<Number>(numberList), &Number::toString)
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
- }
- {
- QList<QString> list2 = QtConcurrent::mapped(numberLinkedList, &Number::toString).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list3 = QtConcurrent::mapped(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toString)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list4 = QtConcurrent::mapped(QLinkedList<Number>(numberLinkedList),
- &Number::toString)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
- }
-
- // change the value_type
- {
- QList<QString> strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::mapped(strings, StringToInt()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
- strings.constEnd(),
- StringToInt())
- .results();
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
- {
- QList<QString> strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::mapped(strings, stringToInt).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
- strings.constEnd(),
- stringToInt).results();
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
-
- {
- QList<int> numberList2 = QtConcurrent::mapped(numberList, &Number::toInt).results();
- QCOMPARE(numberList2, QList<int>() << 1 << 2 << 3);
-
- QList<int> numberList3 = QtConcurrent::mapped(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt)
- .results();
- QCOMPARE(numberList3, QList<int>() << 1 << 2 << 3);
- }
-
- // change the value_type from QStringList
- {
- QStringList strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::mapped(strings, StringToInt()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
- strings.constEnd(),
- StringToInt())
- .results();
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
- {
- QStringList strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::mapped(strings, stringToInt).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
- strings.constEnd(),
- stringToInt)
- .results();
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
-}
-
-void tst_QtConcurrentMap::blocking_mapped()
-{
- QList<int> list;
- list << 1 << 2 << 3;
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3;
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QLinkedList<Number> numberLinkedList;
- numberLinkedList << 1 << 2 << 3;
-
- // functor
- {
- QList<int> list2 = QtConcurrent::blockingMapped(list, MultiplyBy2());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
- list.constEnd(),
- MultiplyBy2());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), MultiplyBy2());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, MultiplyBy2());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- MultiplyBy2());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), MultiplyBy2());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
- }
-
- // function
- {
- QList<int> list2 = QtConcurrent::blockingMapped(list, multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
- list.constEnd(),
- multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
- }
-
- // bound function
- {
- QList<int> list2 = QtConcurrent::blockingMapped(list, multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
- list.constEnd(),
- multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
- }
-
- // const member function
- {
- QList<Number> numberList2 = QtConcurrent::blockingMapped(numberList, &Number::multipliedBy2);
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList3 = QtConcurrent::blockingMapped<QList<Number> >(numberList.constBegin(),
- numberList.constEnd(),
- &Number::multipliedBy2);
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList4 = QtConcurrent::blockingMapped(QList<Number>(numberList),
- &Number::multipliedBy2);
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
- }
- {
- QLinkedList<Number> numberLinkedList2 = QtConcurrent::blockingMapped(numberLinkedList, &Number::multipliedBy2);
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberLinkedList2, QLinkedList<Number>() << 2 << 4 << 6);
-
- QLinkedList<Number> numberLinkedList3 = QtConcurrent::blockingMapped<QLinkedList<Number> >(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::multipliedBy2);
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberLinkedList3, QLinkedList<Number>() << 2 << 4 << 6);
-
- QLinkedList<Number> numberLinkedList4 = QtConcurrent::blockingMapped(QLinkedList<Number>(numberLinkedList),
- &Number::multipliedBy2);
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberLinkedList4, QLinkedList<Number>() << 2 << 4 << 6);
- }
-
- // change the value_type, same container
-
- // functor
- {
- QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
- list.constEnd(),
- IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list),
- IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, IntToDouble());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
- QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
- linkedList.constEnd(),
- IntToDouble());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
- QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList),
- IntToDouble());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // function
- {
- QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
- list.constEnd(),
- intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list), intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
- QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
- linkedList.constEnd(),
- intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
- QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList), intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // bound function
- {
- QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
- list.constEnd(),
- intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
-
- QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list),
- intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
- QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
- linkedList.constEnd(),
- intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
-
- QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList),
- intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // const member function
- {
- QList<QString> list2 =
- QtConcurrent::blockingMapped<QList<QString> >(numberList, &Number::toString);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list3 = QtConcurrent::blockingMapped<QList<QString> >(numberList.constBegin(),
- numberList.constEnd()
- , &Number::toString);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list4 =
- QtConcurrent::blockingMapped<QList<QString> >(QList<Number>(numberList), &Number::toString);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
- }
- {
- QLinkedList<QString> linkedList2 =
- QtConcurrent::blockingMapped<QLinkedList<QString> >(numberLinkedList, &Number::toString);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<QString>() << "1" << "2" << "3");
-
- QLinkedList<QString> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<QString> >(numberLinkedList.constBegin(),
- numberLinkedList.constEnd()
- , &Number::toString);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<QString>() << "1" << "2" << "3");
-
- QLinkedList<QString> linkedList4 =
- QtConcurrent::blockingMapped<QLinkedList<QString> >(QLinkedList<Number>(numberLinkedList), &Number::toString);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<QString>() << "1" << "2" << "3");
- }
-
- // change the value_type
- {
- QList<QString> strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::blockingMapped(strings, StringToInt());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
- strings.constEnd(),
- StringToInt());
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
- {
- QList<QString> strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::blockingMapped(strings, stringToInt);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
- strings.constEnd(),
- stringToInt);
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
-
- {
- QList<int> numberList2 = QtConcurrent::blockingMapped(numberList, &Number::toInt);
- QCOMPARE(numberList2, QList<int>() << 1 << 2 << 3);
-
- QList<int> numberList3 = QtConcurrent::blockingMapped<QList<int> >(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt);
- QCOMPARE(numberList3, QList<int>() << 1 << 2 << 3);
- }
-
- // change the value_type from QStringList
- {
- QStringList strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::blockingMapped(strings, StringToInt());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
- strings.constEnd(),
- StringToInt());
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
- {
- QStringList strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::blockingMapped(strings, stringToInt);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
- strings.constEnd(),
- stringToInt);
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
-
- // functor
- {
- QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(list.constBegin(),
- list.constEnd(),
- IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QVector<double> list4 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list),
- IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QStringList strings = QStringList() << "1" << "2" << "3";
- QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(strings, StringToInt());
- QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list6 = QtConcurrent::blockingMapped<QVector<int> >(strings.constBegin(),
- strings.constEnd(),
- StringToInt());
- QCOMPARE(list6, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list7 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings),
- StringToInt());
- QCOMPARE(list7, QVector<int>() << 1 << 2 << 3);
- }
-
- // function
- {
- QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(list.constBegin(),
- list.constEnd(),
- intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QVector<double> list4 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list),
- intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QStringList strings = QStringList() << "1" << "2" << "3";
- QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(strings, stringToInt);
- QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list6 = QtConcurrent::blockingMapped<QVector<int> >(strings.constBegin(),
- strings.constEnd(),
- stringToInt);
- QCOMPARE(list6, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list7 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings),
- stringToInt);
- QCOMPARE(list7, QVector<int>() << 1 << 2 << 3);
- }
-
- // bound function
- {
- QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list), intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QStringList strings = QStringList() << "1" << "2" << "3";
- QVector<int> list4 = QtConcurrent::blockingMapped<QVector<int> >(strings, stringToInt);
- QCOMPARE(list4, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings), stringToInt);
- QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
- }
-
- // const member function
- {
- QVector<QString> list2 = QtConcurrent::blockingMapped<QVector<QString> >(numberList, &Number::toString);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QVector<QString>() << "1" << "2" << "3");
-
- QVector<QString> list3 =
- QtConcurrent::blockingMapped<QVector<QString> >(QList<Number>(numberList), &Number::toString);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QVector<QString>() << "1" << "2" << "3");
-
- // not allowed: const member function where all arguments have default values
-#if 0
- QStringList strings = QStringList() << "1" << "2" << "3";
- QVector<int> list4 = QtConcurrent::blockingMapped<QVector<int> >(strings, &QString::toInt);
- QCOMPARE(list4, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings), &QString::toInt);
- QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
-#endif
- }
-}
-
-int intSquare(int x)
-{
- return x * x;
-}
-
-class IntSquare
-{
-public:
- typedef int result_type;
-
- int operator()(int x)
- {
- return x * x;
- }
-};
-
-void tst_QtConcurrentMap::mappedReduced()
-{
- QList<int> list;
- list << 1 << 2 << 3;
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3;
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QLinkedList<Number> numberLinkedList;
- numberLinkedList << 1 << 2 << 3;
-
- // test Q_DECLARE_OPERATORS_FOR_FLAGS
- QtConcurrent::ReduceOptions opt = (QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce);
-
- // functor-functor
- {
- int sum = QtConcurrent::mappedReduced<int>(list, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QList<int>(list), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::mappedReduced<int>(list, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::mappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::mappedReduced<int>(QList<int>(list),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
- {
- int sum = QtConcurrent::mappedReduced<int>(linkedList, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::mappedReduced<int>(linkedList, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
-
- // function-functor
- {
- int sum = QtConcurrent::mappedReduced<int>(list, intSquare, IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QList<int>(list), intSquare, IntSumReduce());
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::mappedReduced<int>(linkedList, intSquare, IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList), intSquare, IntSumReduce());
- QCOMPARE(sum3, 14);
- }
-
- // functor-function
- {
- int sum = QtConcurrent::mappedReduced(list, IntSquare(), intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced(QList<int>(list), IntSquare(), intSumReduce);
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::mappedReduced(linkedList, IntSquare(), intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList), IntSquare(), intSumReduce);
- QCOMPARE(sum3, 14);
- }
-
- // function-function
- {
- int sum = QtConcurrent::mappedReduced(list, intSquare, intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced(QList<int>(list), intSquare, intSumReduce);
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::mappedReduced(linkedList, intSquare, intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList), intSquare, intSumReduce);
- QCOMPARE(sum3, 14);
- }
-
- // functor-member
- {
- QList<int> list2 = QtConcurrent::mappedReduced(list,
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
-
- QList<int> list3 = QtConcurrent::mappedReduced(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
-
- QList<int> list4 = QtConcurrent::mappedReduced(QList<int>(list),
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(linkedList,
- IntSquare(),
- &QLinkedList<int>::push_back,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- &QLinkedList<int>::push_back,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList),
- IntSquare(),
- &QLinkedList<int>::push_back,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
- }
-
- // member-functor
- {
- int sum = QtConcurrent::mappedReduced<int>(numberList, &Number::toInt, IntSumReduce());
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::mappedReduced<int>(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QList<Number>(numberList),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum3, 6);
- }
- {
- int sum = QtConcurrent::mappedReduced<int>(numberLinkedList, &Number::toInt, IntSumReduce());
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::mappedReduced<int>(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum3, 6);
- }
-
- // member-member
- {
- QList<int> list2 = QtConcurrent::mappedReduced(numberList,
- &Number::toInt,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
-
- QList<int> list3 = QtConcurrent::mappedReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list3, QList<int>() << 1 << 2 << 3);
-
- QList<int> list4 = QtConcurrent::mappedReduced(QList<Number>(numberList),
- &Number::toInt,
- &QList<int>::push_back, OrderedReduce);
- QCOMPARE(list4, QList<int>() << 1 << 2 << 3);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(numberLinkedList,
- &Number::toInt,
- &QLinkedList<int>::push_back,
- OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 2 << 3);
-
- QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- &QLinkedList<int>::push_back,
- OrderedReduce);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 2 << 3);
-
- QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- &QLinkedList<int>::push_back, OrderedReduce);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 2 << 3);
- }
-
- // function-member
- {
- QList<int> list2 = QtConcurrent::mappedReduced(list,
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
-
- QList<int> list3 = QtConcurrent::mappedReduced(list.constBegin(),
- list.constEnd(),
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
-
- QList<int> list4 = QtConcurrent::mappedReduced(QList<int>(list),
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(linkedList,
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList),
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
- }
-
- // member-function
- {
- int sum = QtConcurrent::mappedReduced(numberList,
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::mappedReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::mappedReduced(QList<Number>(numberList),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum3, 6);
- }
- {
- int sum = QtConcurrent::mappedReduced(numberLinkedList,
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::mappedReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::mappedReduced(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum3, 6);
- }
-
- // linked lists
- {
-
- QLinkedList<int> list;
- list << 1 << 2 << 3;
-
- QLinkedList<Number> numberList;
- numberList << 1 << 2 << 3;
-
- int sum = QtConcurrent::mappedReduced<int>(list, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(list), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::mappedReduced<int>(list, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::mappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(list),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
-
- // ### the same as above, with an initial result value
-}
-
-void tst_QtConcurrentMap::blocking_mappedReduced()
-{
- QList<int> list;
- list << 1 << 2 << 3;
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3;
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QLinkedList<Number> numberLinkedList;
- numberLinkedList << 1 << 2 << 3;
-
- // functor-functor
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(list, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::blockingMappedReduced<int>(list, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(linkedList, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::blockingMappedReduced<int>(linkedList, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
-
- // function-functor
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(list, intSquare, IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list), intSquare, IntSumReduce());
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(linkedList, intSquare, IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList), intSquare, IntSumReduce());
- QCOMPARE(sum3, 14);
- }
-
- // functor-function
- {
- int sum = QtConcurrent::blockingMappedReduced(list, IntSquare(), intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QList<int>(list), IntSquare(), intSumReduce);
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced(linkedList, IntSquare(), intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList), IntSquare(), intSumReduce);
- QCOMPARE(sum3, 14);
- }
-
- // function-function
- {
- int sum = QtConcurrent::blockingMappedReduced(list, intSquare, intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QList<int>(list), intSquare, intSumReduce);
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced(linkedList, intSquare, intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList), intSquare, intSumReduce);
- QCOMPARE(sum3, 14);
- }
-
- // functor-member
- {
- QList<int> list2 = QtConcurrent::blockingMappedReduced(list,
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
-
- QList<int> list3 = QtConcurrent::blockingMappedReduced(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
-
- QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<int>(list),
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(linkedList,
- IntSquare(),
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList),
- IntSquare(),
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
- }
-
- // member-functor
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(numberList, &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<Number>(numberList),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum3, 6);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(numberLinkedList, &Number::toInt, IntSumReduce());
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum3, 6);
- }
-
- // member-member
- {
- QList<int> list2 = QtConcurrent::blockingMappedReduced(numberList,
- &Number::toInt,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
-
- QList<int> list3 = QtConcurrent::blockingMappedReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list3, QList<int>() << 1 << 2 << 3);
-
- QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<Number>(numberList),
- &Number::toInt,
- &QList<int>::push_back, OrderedReduce);
- QCOMPARE(list4, QList<int>() << 1 << 2 << 3);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(numberLinkedList,
- &Number::toInt,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 2 << 3);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 2 << 3);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- &QLinkedList<int>::append, OrderedReduce);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 2 << 3);
- }
-
- // function-member
- {
- QList<int> list2 = QtConcurrent::blockingMappedReduced(list,
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
-
- QList<int> list3 = QtConcurrent::blockingMappedReduced(list.constBegin(),
- list.constEnd(),
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
-
- QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<int>(list),
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(linkedList,
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList),
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
- }
-
- // member-function
- {
- int sum = QtConcurrent::blockingMappedReduced(numberList,
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::blockingMappedReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QList<Number>(numberList),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum3, 6);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced(numberLinkedList,
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::blockingMappedReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum3, 6);
- }
-
- // linked lists
- {
-
- QLinkedList<int> list;
- list << 1 << 2 << 3;
-
- QLinkedList<Number> numberList;
- numberList << 1 << 2 << 3;
-
- int sum = QtConcurrent::blockingMappedReduced<int>(list, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(list), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::blockingMappedReduced<int>(list, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(list),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
-
- // ### the same as above, with an initial result value
-}
-
-int sleeper(int val)
-{
- QTest::qSleep(100);
- return val;
-}
-
-void tst_QtConcurrentMap::assignResult()
-{
- const QList<int> startList = QList<int>() << 0 << 1 << 2;
- QList<int> list = QtConcurrent::blockingMapped(startList, sleeper);
- QCOMPARE(list.at(0), 0);
- QCOMPARE(list.at(1), 1);
-}
-
-int fnConst(const int &i)
-{
- return i;
-}
-
-int fn(int &i)
-{
- return i;
-}
-
-QString changeTypeConst(const int &)
-{
- return QString();
-}
-
-QString changeType(int &)
-{
- return QString();
-}
-
-int changeTypeQStringListConst(const QStringList &)
-{
- return 0;
-}
-
-int changeTypeQStringList(QStringList &)
-{
- return 0;
-}
-
-class MemFnTester
-{
-public:
- MemFnTester() {}
-
- MemFnTester fn()
- {
- return MemFnTester();
- }
-
- MemFnTester fnConst() const
- {
- return MemFnTester();
- }
-
- QString changeType()
- {
- return QString();
- }
-
- QString changeTypeConst() const
- {
- return QString();
- }
-};
-
-Q_DECLARE_METATYPE(QVector<MemFnTester>);
-Q_DECLARE_METATYPE(QList<MemFnTester>);
-
-void tst_QtConcurrentMap::functionOverloads()
-{
- QList<int> intList;
- const QList<int> constIntList;
- QList<MemFnTester> classList;
- const QList<MemFnTester> constMemFnTesterList;
-
- QtConcurrent::mapped(intList, fnConst);
- QtConcurrent::mapped(constIntList, fnConst);
- QtConcurrent::mapped(classList, &MemFnTester::fnConst);
- QtConcurrent::mapped(constMemFnTesterList, &MemFnTester::fnConst);
-
- QtConcurrent::blockingMapped<QVector<int> >(intList, fnConst);
- QtConcurrent::blockingMapped<QVector<int> >(constIntList, fnConst);
- QtConcurrent::blockingMapped<QVector<MemFnTester> >(classList, &MemFnTester::fnConst);
- QtConcurrent::blockingMapped<QVector<MemFnTester> >(constMemFnTesterList, &MemFnTester::fnConst);
-
- QtConcurrent::blockingMapped<QList<QString> >(intList, changeTypeConst);
- QtConcurrent::blockingMapped<QList<QString> >(constIntList, changeTypeConst);
- QtConcurrent::blockingMapped<QList<QString> >(classList, &MemFnTester::changeTypeConst);
- QtConcurrent::blockingMapped<QList<QString> >(constMemFnTesterList, &MemFnTester::changeTypeConst);
-
- QStringList stringList;
- const QStringList constStringList;
- // QtConcurrent::map(stringList, changeTypeQStringListConst);
- // QtConcurrent::map(intList, changeTypeNonConst);
- // QList<QString>(QtConcurrent::map(constStringList, changeTypeQStringList));
- // QtConcurrent::map(classList, &MemFnTester::changeType);
- // QtConcurrent::map(classList, &MemFnTester::changeTypeConst);
- // QtConcurrent::map(constMemFnTesterList, &MemFnTester::changeTypeConst);
-}
-
-QAtomicInt currentInstanceCount;
-QAtomicInt peakInstanceCount;
-class InstanceCounter
-{
-public:
- inline InstanceCounter()
- { currentInstanceCount.fetchAndAddRelaxed(1); updatePeak(); }
- inline ~InstanceCounter()
- { currentInstanceCount.fetchAndAddRelaxed(-1);}
- inline InstanceCounter(const InstanceCounter &)
- { currentInstanceCount.fetchAndAddRelaxed(1); updatePeak(); }
-
- void updatePeak()
- {
- forever {
- const int localPeak = peakInstanceCount;
- const int localCurrent = currentInstanceCount;
- if (localCurrent <= localPeak)
- break;
- if (peakInstanceCount.testAndSetOrdered(localPeak, localCurrent))
- break;
- }
- }
-};
-
-InstanceCounter slowMap(const InstanceCounter &in)
-{
- QTest::qSleep(2);
- return in;
-}
-
-InstanceCounter fastMap(const InstanceCounter &in)
-{
- QTest::qSleep(rand() % 2 + 1);
-// qDebug() << "map " << QThread::currentThread();
- return in;
-}
-
-void slowReduce(int &result, const InstanceCounter&)
-{
- QTest::qSleep(rand() % 4 + 1);
-// qDebug() << "reduce" << QThread::currentThread();
- ++result;
-}
-
-void fastReduce(int &result, const InstanceCounter&)
-{
- ++result;
-}
-
-void tst_QtConcurrentMap::throttling()
-{
- const int itemcount = 100;
- const int allowedTemporaries = QThread::idealThreadCount() * 40;
-
- {
- currentInstanceCount = 0;
- peakInstanceCount = 0;
-
- QList<InstanceCounter> instances;
- for (int i = 0; i < itemcount; ++i)
- instances.append(InstanceCounter());
-
- QCOMPARE((int)currentInstanceCount, itemcount);
-
- int results = QtConcurrent::blockingMappedReduced(instances, slowMap, fastReduce);
- QCOMPARE(results, itemcount);
- qDebug() << (int)currentInstanceCount;
- qDebug() << (int)peakInstanceCount;
- QCOMPARE(int(currentInstanceCount), itemcount);
- QVERIFY(int(peakInstanceCount) < itemcount + allowedTemporaries);
- }
-
- {
- QCOMPARE(int(currentInstanceCount), 0);
- peakInstanceCount = 0;
-
- QList<InstanceCounter> instances;
- for (int i = 0; i < itemcount; ++i)
- instances.append(InstanceCounter());
-
- QCOMPARE(int(currentInstanceCount), itemcount);
- int results = QtConcurrent::blockingMappedReduced(instances, fastMap, slowReduce);
-
- QCOMPARE(results, itemcount);
- qDebug() << (int)currentInstanceCount;
- qDebug() << (int)peakInstanceCount;
- QCOMPARE((int)currentInstanceCount, itemcount);
- QVERIFY(int(peakInstanceCount) < itemcount + allowedTemporaries);
- }
-}
-
-#ifndef QT_NO_EXCEPTIONS
-void throwMapper(int &e)
-{
- Q_UNUSED(e);
- throw QtConcurrent::Exception();
-}
-
-void tst_QtConcurrentMap::exceptions()
-{
- bool caught = false;
- try {
- QList<int> list = QList<int>() << 1 << 2 << 3;
- QtConcurrent::map(list, throwMapper).waitForFinished();
- } catch (Exception &e) {
- caught = true;
- }
- if (!caught)
- QFAIL("did not get exception");
-}
-#endif
-
-int mapper(const int &i)
-{
- QTest::qWait(1);
- return i;
-}
-
-void tst_QtConcurrentMap::incrementalResults()
-{
- const int count = 200;
- QList<int> ints;
- for (int i=0; i < count; ++i)
- ints << i;
-
- QFuture<int> future = QtConcurrent::mapped(ints, mapper);
-
- QList<int> results;
-
- while (future.isFinished() == false) {
- for (int i = 0; i < future.resultCount(); ++i) {
- results += future.resultAt(i);
- }
-
- QTest::qWait(1);
- }
-
- QCOMPARE(future.isFinished(), true);
- QCOMPARE(future.resultCount(), count);
- QCOMPARE(future.results().count(), count);
-}
-
-/*
- Test that mapped does not cause deep copies when holding
- references to Qt containers.
-*/
-void tst_QtConcurrentMap::noDetatch()
-{
- {
- QList<int> l = QList<int>() << 1;
- QVERIFY(l.isDetached());
-
- QList<int> ll = l;
- QVERIFY(l.isDetached() == false);
-
- QtConcurrent::mapped(l, mapper).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::mappedReduced(l, mapper, intSumReduce).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::map(l, multiplyBy2Immutable).waitForFinished();
- QVERIFY(l.isDetached() == true);
- QVERIFY(ll.isDetached() == true);
- }
- {
- const QList<int> l = QList<int>() << 1;
- QVERIFY(l.isDetached());
-
- const QList<int> ll = l;
- QVERIFY(l.isDetached() == false);
-
- QtConcurrent::mapped(l, mapper).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::mappedReduced(l, mapper, intSumReduce).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
- }
-
-}
-
-void tst_QtConcurrentMap::stlContainers()
-{
-#ifdef QT_NO_STL
- QSKIP("Qt compiled without STL support", SkipAll);
-#elif defined(Q_COMPILER_RVALUE_REFS)
- //mapped uses &Container::push_back, but in c++0x, std::vector has two overload of it
- // meaning it is not possible to take the address of that function anymore.
- QSKIP("mapped do not work with c++0x stl vector", SkipAll);
-#else
- std::vector<int> vector;
- vector.push_back(1);
- vector.push_back(2);
-
- std::vector<int> vector2 = QtConcurrent::blockingMapped<std::vector<int> >(vector, mapper);
- QCOMPARE(vector2.size(), (std::vector<int>::size_type)(2));
-
- std::list<int> list;
- list.push_back(1);
- list.push_back(2);
-
- std::list<int> list2 = QtConcurrent::blockingMapped<std::list<int> >(list, mapper);
- QCOMPARE(list2.size(), (std::vector<int>::size_type)(2));
-
- QtConcurrent::mapped(list, mapper).waitForFinished();
-
- QtConcurrent::blockingMap(list, multiplyBy2Immutable);
-#endif
-}
-
-InstanceCounter ic_fn(const InstanceCounter & ic)
-{
- return InstanceCounter(ic);
-};
-
-// Verify that held results are deleted when a future is
-// assigned over with operator ==
-void tst_QtConcurrentMap::qFutureAssignmentLeak()
-{
- currentInstanceCount = 0;
- peakInstanceCount = 0;
- QFuture<InstanceCounter> future;
- {
- QList<InstanceCounter> list;
- for (int i=0;i<1000;++i)
- list += InstanceCounter();
- future = QtConcurrent::mapped(list, ic_fn);
- future.waitForFinished();
-
- future = QtConcurrent::mapped(list, ic_fn);
- future.waitForFinished();
-
- future = QtConcurrent::mapped(list, ic_fn);
- future.waitForFinished();
- }
-
- QCOMPARE(int(currentInstanceCount), 1000);
- future = QFuture<InstanceCounter>();
- QCOMPARE(int(currentInstanceCount), 0);
-}
-
-inline void increment(int &num)
-{
- ++num;
-}
-
-inline int echo(const int &num)
-{
- return num;
-}
-
-void add(int &result, const int &sum)
-{
- result += sum;
-}
-
-void tst_QtConcurrentMap::stressTest()
-{
- const int listSize = 1000;
- const int sum = (listSize - 1) * (listSize / 2);
- QList<int> list;
-
-
- for (int i = 0; i < listSize; ++i) {
- list.append(i);
- }
-
- for (int i =0 ; i < 100; ++i) {
- QList<int> result = QtConcurrent::blockingMapped(list, echo);
- for (int j = 0; j < listSize; ++j)
- QCOMPARE(result.at(j), j);
- }
-
- for (int i = 0 ; i < 100; ++i) {
- int result = QtConcurrent::blockingMappedReduced(list, echo, add);
- QCOMPARE(result, sum);
- }
-
- for (int i = 0 ; i < 100; ++i) {
- QtConcurrent::map(list, increment).waitForFinished();
- for (int j = 0; j < listSize; ++j)
- QCOMPARE(list.at(j), i + j + 1);
- }
-}
-
-QTEST_MAIN(tst_QtConcurrentMap)
-
-#else
-
-void tst_QtConcurrentMap::map() {}
-void tst_QtConcurrentMap::blocking_map() {}
-void tst_QtConcurrentMap::mapped() {}
-void tst_QtConcurrentMap::blocking_mapped() {}
-void tst_QtConcurrentMap::mappedReduced() {}
-void tst_QtConcurrentMap::blocking_mappedReduced() {}
-void tst_QtConcurrentMap::assignResult() {}
-void tst_QtConcurrentMap::functionOverloads() {}
-#ifndef QT_NO_EXCEPTIONS
-void tst_QtConcurrentMap::exceptions() {}
-#endif
-void tst_QtConcurrentMap::incrementalResults() {}
-void tst_QtConcurrentMap::stressTest() {}
-void tst_QtConcurrentMap::throttling() {}
-void tst_QtConcurrentMap::stlContainers() {}
-void tst_QtConcurrentMap::noDetatch() {}
-
-QTEST_NOOP_MAIN
-
-#endif
-
-#include "tst_qtconcurrentmap.moc"
diff --git a/tests/auto/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp b/tests/auto/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
deleted file mode 100644
index 772c749711..0000000000
--- a/tests/auto/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
+++ /dev/null
@@ -1,536 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <qtconcurrentthreadengine.h>
-#include <qtconcurrentexception.h>
-#include <QThread>
-#include <QtTest/QtTest>
-#include "../qfuture/versioncheck.h"
-
-#ifndef QT_NO_CONCURRENT_TEST
-
-using namespace QtConcurrent;
-
-class tst_QtConcurrentThreadEngine: public QObject
-{
- Q_OBJECT
-public:
- void threadCount();
-private slots:
- void runDirectly();
- void result();
- void runThroughStarter();
- void cancel();
- void throttle();
- void multipleResults();
- void stresstest();
- void cancelQueuedSlowUser();
-#ifndef QT_NO_EXCEPTIONS
- void exceptions();
-#endif
-};
-
-
-class PrintUser : public ThreadEngine<void>
-{
-public:
- ThreadFunctionResult threadFunction()
- {
- QTest::qSleep(50);
- QTest::qSleep(100);
- return ThreadFinished;
- }
-};
-
-void tst_QtConcurrentThreadEngine::runDirectly()
-{
- {
- PrintUser engine;
- engine.startSingleThreaded();
- engine.startBlocking();
- }
- {
- PrintUser *engine = new PrintUser();
- QFuture<void> f = engine->startAsynchronously();
- f.waitForFinished();
- }
-}
-
-class StringResultUser : public ThreadEngine<QString>
-{
-public:
- typedef QString ResultType;
- StringResultUser()
- : done(false) { }
-
- bool shouldStartThread()
- {
- return !done;
- }
-
- ThreadFunctionResult threadFunction()
- {
- done = true;
- return ThreadFinished;
- }
-
- QString *result()
- {
- foo = "Foo";
- return &foo;
- }
- QString foo;
- bool done;
-};
-
-void tst_QtConcurrentThreadEngine::result()
-{
- StringResultUser engine;
- QCOMPARE(*engine.startBlocking(), QString("Foo"));
-}
-
-class VoidResultUser : public ThreadEngine<void>
-{
-public:
- bool shouldStartThread()
- {
- return !done;
- }
-
- ThreadFunctionResult threadFunction()
- {
- done = true;
- return ThreadFinished;
- }
-
- void *result()
- {
- return 0;
- }
- bool done;
-};
-
-void tst_QtConcurrentThreadEngine::runThroughStarter()
-{
- {
- ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser());
- QFuture<QString> f = starter.startAsynchronously();
- QCOMPARE(f.result(), QString("Foo"));
- }
-
- {
- ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser());
- QString str = starter.startBlocking();
- QCOMPARE(str, QString("Foo"));
- }
-}
-
-class CancelUser : public ThreadEngine<void>
-{
-public:
- void *result()
- {
- return 0;
- }
-
- ThreadFunctionResult threadFunction()
- {
- while (this->isCanceled() == false)
- {
- QTest::qSleep(10);
- }
- return ThreadFinished;
- }
-};
-
-void tst_QtConcurrentThreadEngine::cancel()
-{
- {
- CancelUser *engine = new CancelUser();
- QFuture<void> f = engine->startAsynchronously();
- f.cancel();
- f.waitForFinished();
- }
- {
- CancelUser *engine = new CancelUser();
- QFuture<void> f = engine->startAsynchronously();
- QTest::qSleep(10);
- f.cancel();
- f.waitForFinished();
- }
-}
-
-QAtomicInt count;
-class ThrottleAlwaysUser : public ThreadEngine<void>
-{
-public:
- ThrottleAlwaysUser()
- {
- count = initialCount = 100;
- finishing = false;
- }
-
- bool shouldStartThread()
- {
- return !finishing;
- }
-
- ThreadFunctionResult threadFunction()
- {
- forever {
- const int local = count;
- if (local == 0) {
- finishing = true;
- return ThreadFinished;
- }
-
- if (count.testAndSetOrdered(local, local - 1))
- break;
- }
- return ThrottleThread;
- }
-
- bool finishing;
- int initialCount;
-};
-
-// Test that a user task with a thread function that always
-// want to be throttled still completes. The thread engine
-// should make keep one thread running at all times.
-void tst_QtConcurrentThreadEngine::throttle()
-{
- const int repeats = 10;
- for (int i = 0; i < repeats; ++i) {
- QFuture<void> f = (new ThrottleAlwaysUser())->startAsynchronously();
- f.waitForFinished();
- QCOMPARE(int(count), 0);
- }
-
- for (int i = 0; i < repeats; ++i) {
- ThrottleAlwaysUser t;
- t.startBlocking();
- QCOMPARE(int(count), 0);
- }
-}
-
-QSet<QThread *> threads;
-QMutex mutex;
-class ThreadCountUser : public ThreadEngine<void>
-{
-public:
- ThreadCountUser(bool finishImmediately = false)
- {
- threads.clear();
- finishing = finishImmediately;
- }
-
- bool shouldStartThread()
- {
- return !finishing;
- }
-
- ThreadFunctionResult threadFunction()
- {
- {
- QMutexLocker lock(&mutex);
- threads.insert(QThread::currentThread());
- }
- QTest::qSleep(10);
- finishing = true;
- return ThreadFinished;
- }
-
- bool finishing;
-};
-
-void tst_QtConcurrentThreadEngine::threadCount()
-{
- const int repeats = 10;
- for (int i = 0; i < repeats; ++i) {
- ThreadCountUser t;
- t.startBlocking();
- QCOMPARE(threads.count(), QThreadPool::globalInstance()->maxThreadCount() + 1); // +1 for the main thread.
-
- (new ThreadCountUser())->startAsynchronously().waitForFinished();
- QCOMPARE(threads.count(), QThreadPool::globalInstance()->maxThreadCount());
- }
-
- // Set the finish flag immediately, this should give us one thread only.
- for (int i = 0; i < repeats; ++i) {
- ThreadCountUser t(true /*finishImmediately*/);
- t.startBlocking();
- QCOMPARE(threads.count(), 1);
-
- (new ThreadCountUser(true /*finishImmediately*/))->startAsynchronously().waitForFinished();
- QCOMPARE(threads.count(), 1);
- }
-}
-
-class MultipleResultsUser : public ThreadEngine<int>
-{
-public:
- bool shouldStartThread()
- {
- return false;
- }
-
- ThreadFunctionResult threadFunction()
- {
- for (int i = 0; i < 10; ++i)
- this->reportResult(&i);
- return ThreadFinished;
- }
-};
-
-
-void tst_QtConcurrentThreadEngine::multipleResults()
-{
- MultipleResultsUser *engine = new MultipleResultsUser();
- QFuture<int> f = engine->startAsynchronously();
- QCOMPARE(f.results().count() , 10);
- QCOMPARE(f.resultAt(0), 0);
- QCOMPARE(f.resultAt(5), 5);
- QCOMPARE(f.resultAt(9), 9);
- f.waitForFinished();
-}
-
-
-class NoThreadsUser : public ThreadEngine<void>
-{
-public:
- bool shouldStartThread()
- {
- return false;
- }
-
- ThreadFunctionResult threadFunction()
- {
- return ThreadFinished;
- }
-
- void *result()
- {
- return 0;
- }
-};
-
-void tst_QtConcurrentThreadEngine::stresstest()
-{
- const int times = 20000;
-
- for (int i = 0; i < times; ++i) {
- VoidResultUser *engine = new VoidResultUser();
- engine->startAsynchronously().waitForFinished();
- }
-
- for (int i = 0; i < times; ++i) {
- VoidResultUser *engine = new VoidResultUser();
- engine->startAsynchronously();
- }
-
- for (int i = 0; i < times; ++i) {
- VoidResultUser *engine = new VoidResultUser();
- engine->startAsynchronously().waitForFinished();
- }
-}
-
-const int sleepTime = 20;
-class SlowUser : public ThreadEngine<void>
-{
-public:
- bool shouldStartThread() { return false; }
- ThreadFunctionResult threadFunction() { QTest::qSleep(sleepTime); return ThreadFinished; }
-};
-
-void tst_QtConcurrentThreadEngine::cancelQueuedSlowUser()
-{
- const int times = 100;
-
- QTime t;
- t.start();
-
- {
- QList<QFuture<void> > futures;
- for (int i = 0; i < times; ++i) {
- SlowUser *engine = new SlowUser();
- futures.append(engine->startAsynchronously());
- }
-
- foreach(QFuture<void> future, futures)
- future.cancel();
- }
-
- QVERIFY(t.elapsed() < (sleepTime * times) / 2);
-}
-
-#ifndef QT_NO_EXCEPTIONS
-
-class QtConcurrentExceptionThrower : public ThreadEngine<void>
-{
-public:
- QtConcurrentExceptionThrower(QThread *blockThread = 0)
- {
- this->blockThread = blockThread;
- }
-
- ThreadFunctionResult threadFunction()
- {
- QTest::qSleep(50);
- throw QtConcurrent::Exception();
- return ThreadFinished;
- }
- QThread *blockThread;
-};
-
-class UnrelatedExceptionThrower : public ThreadEngine<void>
-{
-public:
- UnrelatedExceptionThrower(QThread *blockThread = 0)
- {
- this->blockThread = blockThread;
- }
-
- ThreadFunctionResult threadFunction()
- {
- QTest::qSleep(50);
- throw int();
- return ThreadFinished;
- }
- QThread *blockThread;
-};
-
-void tst_QtConcurrentThreadEngine::exceptions()
-{
- // Asynchronous mode:
- {
- bool caught = false;
- try {
- QtConcurrentExceptionThrower *e = new QtConcurrentExceptionThrower();
- QFuture<void> f = e->startAsynchronously();
- f.waitForFinished();
- } catch (Exception &e) {
- caught = true;
- }
- if (!caught)
- QFAIL("did not get exception");
- }
-
- // Blocking mode:
- // test throwing the exception from a worker thread.
- {
- bool caught = false;
- try {
- QtConcurrentExceptionThrower e(QThread::currentThread());
- e.startBlocking();
- } catch (Exception &e) {
- caught = true;
- }
-
- if (!caught)
- QFAIL("did not get exception");
- }
-
- // test throwing the exception from the main thread (different code path)
- {
- bool caught = false;
- try {
- QtConcurrentExceptionThrower e(0);
- e.startBlocking();
- } catch (Exception &e) {
- caught = true;
- }
-
- if (!caught)
- QFAIL("did not get exception");
- }
-
- // Asynchronous mode:
- {
- bool caught = false;
- try {
- UnrelatedExceptionThrower *e = new UnrelatedExceptionThrower();
- QFuture<void> f = e->startAsynchronously();
- f.waitForFinished();
- } catch (QtConcurrent::UnhandledException &e) {
- caught = true;
- }
- if (!caught)
- QFAIL("did not get exception");
- }
-
- // Blocking mode:
- // test throwing the exception from a worker thread.
- {
- bool caught = false;
- try {
- UnrelatedExceptionThrower e(QThread::currentThread());
- e.startBlocking();
- } catch (QtConcurrent::UnhandledException &e) {
- caught = true;
- }
-
- if (!caught)
- QFAIL("did not get exception");
- }
-
- // test throwing the exception from the main thread (different code path)
- {
- bool caught = false;
- try {
- UnrelatedExceptionThrower e(0);
- e.startBlocking();
- } catch (QtConcurrent::UnhandledException &e) {
- caught = true;
- }
-
- if (!caught)
- QFAIL("did not get exception");
- }
-}
-
-#endif
-
-QTEST_MAIN(tst_QtConcurrentThreadEngine)
-
-#include "tst_qtconcurrentthreadengine.moc"
-
-#else
-QTEST_NOOP_MAIN
-#endif
diff --git a/tests/auto/qtcpserver/test/test.pro b/tests/auto/qtcpserver/test/test.pro
deleted file mode 100644
index 65e1d82613..0000000000
--- a/tests/auto/qtcpserver/test/test.pro
+++ /dev/null
@@ -1,37 +0,0 @@
-load(qttest_p4)
-SOURCES += ../tst_qtcpserver.cpp
-
-win32: {
-wince*: {
- LIBS += -lws2
- crashApp.files = ../crashingServer/crashingServer.exe
- crashApp.path = crashingServer
- DEPLOYMENT += crashApp
-} else {
- LIBS += -lws2_32
-}
-}
-
-symbian {
- crashApp.files = $$QT_BUILD_TREE/examples/widgets/wiggly/$${BUILD_DIR}/crashingServer.exe
- crashApp.path = .
- DEPLOYMENT += crashApp
- TARGET.CAPABILITY += NetworkServices ReadUserData
-}
-
-TARGET = ../tst_qtcpserver
-
-win32 {
- CONFIG(debug, debug|release) {
- TARGET = ../../debug/tst_qtcpserver
-} else {
- TARGET = ../../release/tst_qtcpserver
- }
-}
-
-QT = core network
-
-MOC_DIR=tmp
-
-
-
diff --git a/tests/auto/qtcpserver/tst_qtcpserver.cpp b/tests/auto/qtcpserver/tst_qtcpserver.cpp
deleted file mode 100644
index b72e61f374..0000000000
--- a/tests/auto/qtcpserver/tst_qtcpserver.cpp
+++ /dev/null
@@ -1,817 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-// Just to get Q_OS_SYMBIAN
-#include <qglobal.h>
-#if defined(_WIN32) && !defined(Q_OS_SYMBIAN)
-#include <winsock2.h>
-#else
-#include <sys/types.h>
-#include <sys/socket.h>
-#define SOCKET int
-#define INVALID_SOCKET -1
-#endif
-
-#include <QtTest/QtTest>
-
-#ifndef Q_OS_WIN
-#include <unistd.h>
-#include <sys/ioctl.h>
-#endif
-
-#include <qcoreapplication.h>
-#include <qtcpsocket.h>
-#include <qtcpserver.h>
-#include <qhostaddress.h>
-#include <qprocess.h>
-#include <qstringlist.h>
-#include <qplatformdefs.h>
-#include <qhostinfo.h>
-
-#include <QNetworkProxy>
-Q_DECLARE_METATYPE(QNetworkProxy)
-Q_DECLARE_METATYPE(QList<QNetworkProxy>)
-
-#include <QNetworkSession>
-#include <QNetworkConfiguration>
-#include <QNetworkConfigurationManager>
-#include "../network-settings.h"
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QTcpServer : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QTcpServer();
- virtual ~tst_QTcpServer();
-
-
-public slots:
- void initTestCase_data();
- void initTestCase();
- void init();
- void cleanup();
-private slots:
- void getSetCheck();
- void constructing();
- void clientServerLoop();
- void ipv6Server();
- void dualStack_data();
- void dualStack();
- void ipv6ServerMapped();
- void crashTests();
- void maxPendingConnections();
- void listenError();
- void waitForConnectionTest();
- void setSocketDescriptor();
- void listenWhileListening();
- void addressReusable();
- void setNewSocketDescriptorBlocking();
- void invalidProxy_data();
- void invalidProxy();
- void proxyFactory_data();
- void proxyFactory();
-
- void qtbug14268_peek();
-
-private:
-#ifndef QT_NO_BEARERMANAGEMENT
- QNetworkSession *networkSession;
-#endif
-};
-
-// Testing get/set functions
-void tst_QTcpServer::getSetCheck()
-{
- QTcpServer obj1;
- // int QTcpServer::maxPendingConnections()
- // void QTcpServer::setMaxPendingConnections(int)
- obj1.setMaxPendingConnections(0);
- QCOMPARE(0, obj1.maxPendingConnections());
- obj1.setMaxPendingConnections(INT_MIN);
- QCOMPARE(INT_MIN, obj1.maxPendingConnections());
- obj1.setMaxPendingConnections(INT_MAX);
- QCOMPARE(INT_MAX, obj1.maxPendingConnections());
-}
-
-tst_QTcpServer::tst_QTcpServer()
-{
- Q_SET_DEFAULT_IAP
-}
-
-tst_QTcpServer::~tst_QTcpServer()
-{
-}
-
-void tst_QTcpServer::initTestCase_data()
-{
- QTest::addColumn<bool>("setProxy");
- QTest::addColumn<int>("proxyType");
-
- QTest::newRow("WithoutProxy") << false << 0;
- QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy);
-}
-
-void tst_QTcpServer::initTestCase()
-{
-#ifndef QT_NO_BEARERMANAGEMENT
- QNetworkConfigurationManager man;
- networkSession = new QNetworkSession(man.defaultConfiguration(), this);
- networkSession->open();
- QVERIFY(networkSession->waitForOpened());
-#endif
-}
-
-void tst_QTcpServer::init()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
- }
- }
-}
-
-void tst_QTcpServer::cleanup()
-{
- QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpServer::constructing()
-{
- QTcpServer socket;
-
- // Check the initial state of the QTcpSocket.
- QCOMPARE(socket.isListening(), false);
- QCOMPARE((int)socket.serverPort(), 0);
- QCOMPARE(socket.serverAddress(), QHostAddress());
- QCOMPARE(socket.maxPendingConnections(), 30);
- QCOMPARE(socket.hasPendingConnections(), false);
- QCOMPARE(socket.socketDescriptor(), -1);
- QCOMPARE(socket.serverError(), QAbstractSocket::UnknownSocketError);
-
- // Check the state of the socket layer?
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::clientServerLoop()
-{
- QTcpServer server;
-
- QSignalSpy spy(&server, SIGNAL(newConnection()));
-
- QVERIFY(!server.isListening());
- QVERIFY(!server.hasPendingConnections());
- QVERIFY(server.listen(QHostAddress::Any, 11423));
- QVERIFY(server.isListening());
-
- QTcpSocket client;
-
- QHostAddress serverAddress = QHostAddress::LocalHost;
- if (!(server.serverAddress() == QHostAddress::Any) && !(server.serverAddress() == QHostAddress::AnyIPv6))
- serverAddress = server.serverAddress();
-
- client.connectToHost(serverAddress, server.serverPort());
- QVERIFY(client.waitForConnected(5000));
-
- QVERIFY(server.waitForNewConnection(5000));
- QVERIFY(server.hasPendingConnections());
-
- QCOMPARE(spy.count(), 1);
-
- QTcpSocket *serverSocket = server.nextPendingConnection();
- QVERIFY(serverSocket != 0);
-
- QVERIFY(serverSocket->write("Greetings, client!\n", 19) == 19);
- serverSocket->flush();
-
- QVERIFY(client.waitForReadyRead(5000));
- QByteArray arr = client.readAll();
- QCOMPARE(arr.constData(), "Greetings, client!\n");
-
- QVERIFY(client.write("Well, hello to you!\n", 20) == 20);
- client.flush();
-
- QVERIFY(serverSocket->waitForReadyRead(5000));
- arr = serverSocket->readAll();
- QCOMPARE(arr.constData(), "Well, hello to you!\n");
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::ipv6Server()
-{
- //### need to enter the event loop for the server to get the connection ?? ( windows)
- QTcpServer server;
- if (!server.listen(QHostAddress::LocalHostIPv6, 8944)) {
- QVERIFY(server.serverError() == QAbstractSocket::UnsupportedSocketOperationError);
- return;
- }
-
- QVERIFY(server.serverPort() == 8944);
- QVERIFY(server.serverAddress() == QHostAddress::LocalHostIPv6);
-
- QTcpSocket client;
- client.connectToHost("::1", 8944);
- QVERIFY(client.waitForConnected(5000));
-
- QVERIFY(server.waitForNewConnection());
- QVERIFY(server.hasPendingConnections());
-
- QTcpSocket *serverSocket = 0;
- QVERIFY((serverSocket = server.nextPendingConnection()));
- serverSocket->close();
- delete serverSocket;
-}
-
-Q_DECLARE_METATYPE(QHostAddress);
-
-void tst_QTcpServer::dualStack_data()
-{
- QTest::addColumn<QHostAddress>("bindAddress");
- QTest::addColumn<bool>("v4ok");
- QTest::addColumn<bool>("v6ok");
- QTest::newRow("any") << QHostAddress(QHostAddress::Any) << true << true;
- QTest::newRow("anyIPv4") << QHostAddress(QHostAddress::AnyIPv4) << true << false;
- QTest::newRow("anyIPv6") << QHostAddress(QHostAddress::AnyIPv6) << false << true;
-}
-
-void tst_QTcpServer::dualStack()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- QSKIP("test server proxy doesn't support ipv6", SkipSingle);
- QFETCH(QHostAddress, bindAddress);
- QFETCH(bool, v4ok);
- QFETCH(bool, v6ok);
-
- QTcpServer server;
- QVERIFY(server.listen(bindAddress));
-
- QTcpSocket v4client;
- v4client.connectToHost(QHostAddress::LocalHost, server.serverPort());
-
- QTcpSocket v6client;
- v6client.connectToHost(QHostAddress::LocalHostIPv6, server.serverPort());
-
- QCOMPARE(v4client.waitForConnected(5000), v4ok);
- QCOMPARE(v6client.waitForConnected(5000), v6ok);
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::ipv6ServerMapped()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QTcpServer server;
- QVERIFY(server.listen(QHostAddress::LocalHost));
-
- // let's try the normal case
- QTcpSocket client1;
- client1.connectToHost("127.0.0.1", server.serverPort());
- QVERIFY(server.waitForNewConnection(5000));
- delete server.nextPendingConnection();
-
- // let's try the mapped one in the nice format
- QTcpSocket client2;
- client2.connectToHost("::ffff:127.0.0.1", server.serverPort());
- QVERIFY(server.waitForNewConnection(5000));
- delete server.nextPendingConnection();
-
- // let's try the mapped in hex format
- QTcpSocket client3;
- client3.connectToHost("::ffff:7F00:0001", server.serverPort());
- QVERIFY(server.waitForNewConnection(5000));
- delete server.nextPendingConnection();
-
- // However connecting to the v6 localhost should not work
- QTcpSocket client4;
- client4.connectToHost("::1", server.serverPort());
- QVERIFY(!server.waitForNewConnection(5000));
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::crashTests()
-{
- QTcpServer server;
- server.close();
- QVERIFY(server.listen());
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::maxPendingConnections()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QSKIP("With socks5 only 1 connection is allowed ever", SkipAll);
- }
- }
- //### sees to fail sometimes ... a timing issue with the test on windows
- QTcpServer server;
- server.setMaxPendingConnections(2);
-
- QTcpSocket socket1;
- QTcpSocket socket2;
- QTcpSocket socket3;
-
- QVERIFY(server.listen());
-
- socket1.connectToHost(QHostAddress::LocalHost, server.serverPort());
- socket2.connectToHost(QHostAddress::LocalHost, server.serverPort());
- socket3.connectToHost(QHostAddress::LocalHost, server.serverPort());
-
- QVERIFY(server.waitForNewConnection(5000));
-
- QVERIFY(server.hasPendingConnections());
- QVERIFY(server.nextPendingConnection());
- QVERIFY(server.hasPendingConnections());
- QVERIFY(server.nextPendingConnection());
- QVERIFY(!server.hasPendingConnections());
- QCOMPARE(server.nextPendingConnection(), (QTcpSocket*)0);
-
- QVERIFY(server.waitForNewConnection(5000));
-
- QVERIFY(server.hasPendingConnections());
- QVERIFY(server.nextPendingConnection());
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::listenError()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QSKIP("With socks5 we can not make hard requirements on the address or port", SkipAll);
- }
- }
- QTcpServer server;
- QVERIFY(!server.listen(QHostAddress("1.2.3.4"), 0));
- QCOMPARE(server.serverError(), QAbstractSocket::SocketAddressNotAvailableError);
- QCOMPARE(server.errorString().toLatin1().constData(), "The address is not available");
-}
-
-class ThreadConnector : public QThread
-{
-public:
- ThreadConnector(const QHostAddress &host, quint16 port)
- : host(host), port(port)
- { }
-
- ~ThreadConnector()
- {
- wait();
- }
-
-protected:
- void run()
- {
- sleep(2);
-
- QTcpSocket socket;
- socket.connectToHost(host, port);
-
- QEventLoop loop;
- QTimer::singleShot(5000, &loop, SLOT(quit()));
- loop.exec();
- }
-
-private:
- QHostAddress host;
- quint16 port;
-};
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::waitForConnectionTest()
-{
-
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QSKIP("Localhost servers don't work well with SOCKS5", SkipAll);
- }
- }
-
- QTcpSocket findLocalIpSocket;
- findLocalIpSocket.connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(findLocalIpSocket.waitForConnected(5000));
-
- QTcpServer server;
- bool timeout = false;
- QVERIFY(server.listen(findLocalIpSocket.localAddress()));
- QVERIFY(!server.waitForNewConnection(1000, &timeout));
- QCOMPARE(server.serverError(), QAbstractSocket::SocketTimeoutError);
- QVERIFY(timeout);
-
- ThreadConnector connector(findLocalIpSocket.localAddress(), server.serverPort());
- connector.start();
-
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QVERIFY(server.waitForNewConnection(9000, &timeout));
-#else
- QVERIFY(server.waitForNewConnection(3000, &timeout));
-#endif
- QVERIFY(!timeout);
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::setSocketDescriptor()
-{
- QTcpServer server;
-#ifdef Q_OS_SYMBIAN
- QTest::ignoreMessage(QtWarningMsg, "QSymbianSocketEngine::initialize - socket descriptor not found");
-#endif
- QVERIFY(!server.setSocketDescriptor(42));
- QCOMPARE(server.serverError(), QAbstractSocket::UnsupportedSocketOperationError);
-#ifndef Q_OS_SYMBIAN
- //adopting Open C sockets is not supported, neither is adopting externally created RSocket
-#ifdef Q_OS_WIN
- // ensure winsock is started
- WSADATA wsaData;
- QVERIFY(WSAStartup(MAKEWORD(2,0), &wsaData) == NO_ERROR);
-#endif
-
- SOCKET sock = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-
- QVERIFY(sock != INVALID_SOCKET);
-
- sockaddr_in sin;
- memset(&sin, 0, sizeof(sockaddr_in));
- sin.sin_family = AF_INET;
- sin.sin_port = 0;
- sin.sin_addr.s_addr = 0x00000000;
- QVERIFY(::bind(sock, (sockaddr*)&sin, sizeof(sockaddr_in)) == 0);
- QVERIFY(::listen(sock, 10) == 0);
- QVERIFY(server.setSocketDescriptor(sock));
-
-#ifdef Q_OS_WIN
- WSACleanup();
-#endif
-#endif
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::listenWhileListening()
-{
- QTcpServer server;
- QVERIFY(server.listen());
- QTest::ignoreMessage(QtWarningMsg, "QTcpServer::listen() called when already listening");
- QVERIFY(!server.listen());
-}
-
-//----------------------------------------------------------------------------------
-
-class SeverWithBlockingSockets : public QTcpServer
-{
-public:
- SeverWithBlockingSockets()
- : ok(false) { }
-
- bool ok;
-
-protected:
- void incomingConnection(int socketDescriptor)
- {
- // how a user woulddo it (qabstractsocketengine is not public)
- unsigned long arg = 0;
-#if defined(Q_OS_SYMBIAN)
- arg = fcntl(socketDescriptor, F_GETFL, NULL);
- arg &= (~O_NONBLOCK);
- ok = ::fcntl(socketDescriptor, F_SETFL, arg) != -1;
-#elif defined(Q_OS_WIN)
- ok = ::ioctlsocket(socketDescriptor, FIONBIO, &arg) == 0;
- ::closesocket(socketDescriptor);
-#else
- ok = ::ioctl(socketDescriptor, FIONBIO, &arg) == 0;
- ::close(socketDescriptor);
-#endif
- }
-};
-
-void tst_QTcpServer::addressReusable()
-{
-#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
- QSKIP("Symbian: Emulator does not support process launching", SkipAll );
-#endif
-
-#if defined(QT_NO_PROCESS)
- QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
-#else
-
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QSKIP("With socks5 this test does not make senans at the momment", SkipAll);
- }
- }
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QString signalName = QString::fromLatin1("/test_signal.txt");
- QFile::remove(signalName);
- // The crashingServer process will crash once it gets a connection.
- QProcess process;
- process.start("crashingServer/crashingServer");
- int waitCount = 5;
- while (waitCount-- && !QFile::exists(signalName))
- QTest::qWait(1000);
- QVERIFY(QFile::exists(signalName));
- QFile::remove(signalName);
-#else
- // The crashingServer process will crash once it gets a connection.
- QProcess process;
- process.start("crashingServer/crashingServer");
- QVERIFY(process.waitForReadyRead(5000));
-#endif
-
- QTcpSocket socket;
- socket.connectToHost(QHostAddress::LocalHost, 49199);
- QVERIFY(socket.waitForConnected(5000));
-
- QVERIFY(process.waitForFinished(30000));
-
- // Give the system some time.
- QTest::qSleep(10);
-
- QTcpServer server;
- QVERIFY(server.listen(QHostAddress::LocalHost, 49199));
-#endif
-}
-
-void tst_QTcpServer::setNewSocketDescriptorBlocking()
-{
-#ifdef Q_OS_SYMBIAN
- QSKIP("open C ioctls on Qt sockets not supported", SkipAll);
-#else
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QSKIP("With socks5 we can not make the socket descripter blocking", SkipAll);
- }
- }
- SeverWithBlockingSockets server;
- QVERIFY(server.listen());
-
- QTcpSocket socket;
- socket.connectToHost(QHostAddress::LocalHost, server.serverPort());
- QVERIFY(server.waitForNewConnection(5000));
- QVERIFY(server.ok);
-#endif
-}
-
-void tst_QTcpServer::invalidProxy_data()
-{
- QTest::addColumn<int>("type");
- QTest::addColumn<QString>("host");
- QTest::addColumn<int>("port");
- QTest::addColumn<int>("expectedError");
-
- QString fluke = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString();
- QTest::newRow("ftp-proxy") << int(QNetworkProxy::FtpCachingProxy) << fluke << 143
- << int(QAbstractSocket::UnsupportedSocketOperationError);
- QTest::newRow("http-proxy") << int(QNetworkProxy::HttpProxy) << fluke << 3128
- << int(QAbstractSocket::UnsupportedSocketOperationError);
-
- QTest::newRow("no-such-host") << int(QNetworkProxy::Socks5Proxy)
- << "this-host-will-never-exist.troll.no" << 1080
- << int(QAbstractSocket::ProxyNotFoundError);
- QTest::newRow("socks5-on-http") << int(QNetworkProxy::Socks5Proxy) << fluke << 3128
- << int(QAbstractSocket::SocketTimeoutError);
-}
-
-void tst_QTcpServer::invalidProxy()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QFETCH(int, type);
- QFETCH(QString, host);
- QFETCH(int, port);
- QNetworkProxy::ProxyType proxyType = QNetworkProxy::ProxyType(type);
- QNetworkProxy proxy(proxyType, host, port);
-
- QTcpServer server;
- server.setProxy(proxy);
- bool listenResult = server.listen();
-
- QVERIFY(!listenResult);
- QVERIFY(!server.errorString().isEmpty());
-
- // note: the following test is not a hard failure.
- // Sometimes, error codes change for the better
- QTEST(int(server.serverError()), "expectedError");
-}
-
-// copied from tst_qnetworkreply.cpp
-class MyProxyFactory: public QNetworkProxyFactory
-{
-public:
- int callCount;
- QList<QNetworkProxy> toReturn;
- QNetworkProxyQuery lastQuery;
- inline MyProxyFactory() { clear(); }
-
- inline void clear()
- {
- callCount = 0;
- toReturn = QList<QNetworkProxy>() << QNetworkProxy::DefaultProxy;
- lastQuery = QNetworkProxyQuery();
- }
-
- virtual QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query)
- {
- lastQuery = query;
- ++callCount;
- return toReturn;
- }
-};
-
-void tst_QTcpServer::proxyFactory_data()
-{
- QTest::addColumn<QList<QNetworkProxy> >("proxyList");
- QTest::addColumn<QNetworkProxy>("proxyUsed");
- QTest::addColumn<bool>("fails");
- QTest::addColumn<int>("expectedError");
-
- QList<QNetworkProxy> proxyList;
-
- // tests that do get to listen
-
- proxyList << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
- QTest::newRow("socks5")
- << proxyList << proxyList.at(0)
- << false << int(QAbstractSocket::UnknownSocketError);
-
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3128)
- << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
- QTest::newRow("cachinghttp+socks5")
- << proxyList << proxyList.at(1)
- << false << int(QAbstractSocket::UnknownSocketError);
-
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
- << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3128)
- << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
- QTest::newRow("ftp+cachinghttp+socks5")
- << proxyList << proxyList.at(2)
- << false << int(QAbstractSocket::UnknownSocketError);
-
- // tests that fail to listen
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128);
- QTest::newRow("http")
- << proxyList << proxyList.at(0)
- << true << int(QAbstractSocket::UnsupportedSocketOperationError);
-
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3128);
- QTest::newRow("cachinghttp")
- << proxyList << QNetworkProxy()
- << true << int(QAbstractSocket::UnsupportedSocketOperationError);
-
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
- QTest::newRow("ftp")
- << proxyList << QNetworkProxy()
- << true << int(QAbstractSocket::UnsupportedSocketOperationError);
-
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
- << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3128);
- QTest::newRow("ftp+cachinghttp")
- << proxyList << QNetworkProxy()
- << true << int(QAbstractSocket::UnsupportedSocketOperationError);
-}
-
-void tst_QTcpServer::proxyFactory()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QFETCH(QList<QNetworkProxy>, proxyList);
- QFETCH(QNetworkProxy, proxyUsed);
- QFETCH(bool, fails);
-
- MyProxyFactory *factory = new MyProxyFactory;
- factory->toReturn = proxyList;
- QNetworkProxyFactory::setApplicationProxyFactory(factory);
-
- QTcpServer server;
- bool listenResult = server.listen();
-
- // Verify that the factory was called properly
- QCOMPARE(factory->callCount, 1);
- QCOMPARE(factory->lastQuery, QNetworkProxyQuery(0, QString(), QNetworkProxyQuery::TcpServer));
-
- QCOMPARE(listenResult, !fails);
- QCOMPARE(server.errorString().isEmpty(), !fails);
-
- // note: the following test is not a hard failure.
- // Sometimes, error codes change for the better
- QTEST(int(server.serverError()), "expectedError");
-}
-
-class Qtbug14268Helper : public QObject
-{
- Q_OBJECT
-public:
- QByteArray lastDataPeeked;
-public slots:
- void newConnection() {
- QTcpServer* server=static_cast<QTcpServer*>(sender());
- QTcpSocket* s=server->nextPendingConnection();
- connect(s,SIGNAL(readyRead()),this,SLOT(onServerReadyRead()));
- }
- void onServerReadyRead() {
- QTcpSocket* clientSocket=static_cast<QTcpSocket*>(sender());
- lastDataPeeked = clientSocket->peek(128*1024).toHex();
- QTestEventLoop::instance().exitLoop();
- }
-};
-
-// there is a similar test inside tst_qtcpsocket that uses the waitFor* functions instead
-void tst_QTcpServer::qtbug14268_peek()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QTcpServer server;
- server.listen();
-
- Qtbug14268Helper helper;
- QObject::connect(&server, SIGNAL(newConnection()), &helper, SLOT(newConnection()));
-
- QTcpSocket client;
- client.connectToHost(QHostAddress::LocalHost, server.serverPort());
- QVERIFY(client.waitForConnected(2000));
-
- client.write("abc\n");
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(helper.lastDataPeeked == QByteArray("6162630a"));
-
- client.write("def\n");
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(helper.lastDataPeeked == QByteArray("6162630a6465660a"));
-
- client.write("ghi\n");
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(helper.lastDataPeeked == QByteArray("6162630a6465660a6768690a"));
-}
-
-QTEST_MAIN(tst_QTcpServer)
-#include "tst_qtcpserver.moc"
diff --git a/tests/auto/qtcpsocket/test/test.pro b/tests/auto/qtcpsocket/test/test.pro
deleted file mode 100644
index 6ac2da653c..0000000000
--- a/tests/auto/qtcpsocket/test/test.pro
+++ /dev/null
@@ -1,32 +0,0 @@
-load(qttest_p4)
-
-QT += core-private network-private
-SOURCES += ../tst_qtcpsocket.cpp
-win32: {
-wince*: {
- LIBS += -lws2
-} else {
- LIBS += -lws2_32
-}
-}
-QT += network
-vxworks:QT -= gui
-
-symbian: {
- TARGET.EPOCHEAPSIZE="0x100 0x3000000"
- TARGET.CAPABILITY = NetworkServices ReadUserData
-}
-
-TARGET = tst_qtcpsocket
-
-win32 {
- CONFIG(debug, debug|release) {
- DESTDIR = ../debug
-} else {
- DESTDIR = ../release
- }
-} else {
- DESTDIR = ../
-}
-
-CONFIG+=insignificant_test # unstable, QTBUG-21043
diff --git a/tests/auto/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/qtcpsocket/tst_qtcpsocket.cpp
deleted file mode 100644
index 39a64ab0dc..0000000000
--- a/tests/auto/qtcpsocket/tst_qtcpsocket.cpp
+++ /dev/null
@@ -1,2684 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-// Just to get Q_OS_SYMBIAN
-#include <qglobal.h>
-
-#if defined(_WIN32) && !defined(Q_OS_SYMBIAN)
-#include <winsock2.h>
-#else
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <fcntl.h>
-#include <unistd.h>
-#define SOCKET int
-#define INVALID_SOCKET -1
-#endif
-
-#include <qplatformdefs.h>
-
-#include <QtTest/QtTest>
-
-#include <QAuthenticator>
-#include <QCoreApplication>
-#include <QEventLoop>
-#include <QFile>
-#include <QHostAddress>
-#include <QHostInfo>
-#include <QMap>
-#ifndef Q_OS_VXWORKS
-#include <QMessageBox>
-#include <QPushButton>
-#endif
-#include <QPointer>
-#include <QProcess>
-#include <QStringList>
-#include <QTcpServer>
-#include <QTcpSocket>
-#ifndef QT_NO_OPENSSL
-#include <QSslSocket>
-#endif
-#include <QTextStream>
-#include <QThread>
-#include <QTime>
-#include <QTimer>
-#include <QDebug>
-// RVCT compiles also unused inline methods
-# include <QNetworkProxy>
-
-#ifdef Q_OS_LINUX
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#endif
-
-#include "private/qhostinfo_p.h"
-
-#include "../network-settings.h"
-#include "../../shared/util.h"
-
-Q_DECLARE_METATYPE(QAbstractSocket::SocketError)
-Q_DECLARE_METATYPE(QAbstractSocket::SocketState)
-Q_DECLARE_METATYPE(QNetworkProxy)
-Q_DECLARE_METATYPE(QList<QNetworkProxy>)
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-QT_FORWARD_DECLARE_CLASS(QTcpSocket)
-QT_FORWARD_DECLARE_CLASS(SocketPair)
-
-class tst_QTcpSocket : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QTcpSocket();
- virtual ~tst_QTcpSocket();
-
- static void enterLoop(int secs)
- {
- ++loopLevel;
- QTestEventLoop::instance().enterLoop(secs);
- --loopLevel;
- }
- static void exitLoop()
- {
- // Safe exit - if we aren't in an event loop, don't
- // exit one.
- if (loopLevel > 0)
- QTestEventLoop::instance().exitLoop();
- }
- static bool timeout()
- {
- return QTestEventLoop::instance().timeout();
- }
-
-public slots:
- void initTestCase_data();
- void init();
- void cleanup();
-private slots:
- void socketsConstructedBeforeEventLoop();
- void constructing();
- void setInvalidSocketDescriptor();
- void setSocketDescriptor();
- void socketDescriptor();
- void blockingIMAP();
- void nonBlockingIMAP();
- void hostNotFound();
- void timeoutConnect_data();
- void timeoutConnect();
- void delayedClose();
- void partialRead();
- void unget();
- void readAllAfterClose();
- void openCloseOpenClose();
- void connectDisconnectConnectDisconnect();
- void disconnectWhileConnecting_data();
- void disconnectWhileConnecting();
- void disconnectWhileConnectingNoEventLoop_data();
- void disconnectWhileConnectingNoEventLoop();
- void disconnectWhileLookingUp_data();
- void disconnectWhileLookingUp();
- void downloadBigFile();
- void readLine();
- void readLineString();
- void readChunks();
- void waitForBytesWritten();
- void waitForBytesWrittenMinusOne();
- void waitForReadyRead();
- void waitForReadyReadMinusOne();
- void flush();
- void synchronousApi();
- void dontCloseOnTimeout();
- void recursiveReadyRead();
- void atEnd();
- void socketInAThread();
- void socketsInThreads();
- void waitForReadyReadInASlot();
- void remoteCloseError();
- void openMessageBoxInErrorSlot();
-#ifndef Q_OS_WIN
- void connectToLocalHostNoService();
-#endif
- void waitForConnectedInHostLookupSlot();
- void waitForConnectedInHostLookupSlot2();
- void readyReadSignalsAfterWaitForReadyRead();
-#ifdef Q_OS_LINUX
- void linuxKernelBugLocalSocket();
-#endif
- void abortiveClose();
- void localAddressEmptyOnBSD();
- void zeroAndMinusOneReturns();
- void connectionRefused();
- void suddenRemoteDisconnect_data();
- void suddenRemoteDisconnect();
- void connectToMultiIP();
- void moveToThread0();
- void increaseReadBufferSize();
- void taskQtBug5799ConnectionErrorWaitForConnected();
- void taskQtBug5799ConnectionErrorEventLoop();
- void taskQtBug7054TimeoutErrorResetting();
-
- void invalidProxy_data();
- void invalidProxy();
- void proxyFactory_data();
- void proxyFactory();
-
- void qtbug14268_peek();
-
-
-protected slots:
- void nonBlockingIMAP_hostFound();
- void nonBlockingIMAP_connected();
- void nonBlockingIMAP_closed();
- void nonBlockingIMAP_readyRead();
- void nonBlockingIMAP_bytesWritten(qint64);
- void readRegularFile_readyRead();
- void exitLoopSlot();
- void downloadBigFileSlot();
- void recursiveReadyReadSlot();
- void waitForReadyReadInASlotSlot();
- void messageBoxSlot();
- void hostLookupSlot();
- void abortiveClose_abortSlot();
- void remoteCloseErrorSlot();
- void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth);
- void earlySocketBytesSent(qint64 bytes);
- void earlySocketReadyRead();
-
-private:
- QByteArray expectedReplyIMAP();
- void fetchExpectedReplyIMAP();
- QTcpSocket *newSocket() const;
- QTcpSocket *nonBlockingIMAP_socket;
- QStringList nonBlockingIMAP_data;
- qint64 nonBlockingIMAP_totalWritten;
-
- QTcpSocket *tmpSocket;
- qint64 bytesAvailable;
- qint64 expectedLength;
- bool readingBody;
- QTime timer;
-
- QByteArray expectedReplyIMAP_cached;
-
- mutable int proxyAuthCalled;
-
- bool gotClosedSignal;
- int numConnections;
- static int loopLevel;
-
- SocketPair *earlyConstructedSockets;
- int earlyBytesWrittenCount;
- int earlyReadyReadCount;
-};
-
-enum ProxyTests {
- NoProxy = 0x00,
- Socks5Proxy = 0x01,
- HttpProxy = 0x02,
- TypeMask = 0x0f,
-
- NoAuth = 0x00,
- AuthBasic = 0x10,
- AuthNtlm = 0x20,
- AuthMask = 0xf0
-};
-
-int tst_QTcpSocket::loopLevel = 0;
-
-class SocketPair: public QObject
-{
- Q_OBJECT
-public:
- QTcpSocket *endPoints[2];
-
- SocketPair(QObject *parent = 0)
- : QObject(parent)
- {
- endPoints[0] = endPoints[1] = 0;
- }
-
- bool create()
- {
- QTcpServer server;
- server.listen();
-
- QTcpSocket *active = new QTcpSocket(this);
- active->connectToHost("127.0.0.1", server.serverPort());
-
- if (!active->waitForConnected(1000))
- return false;
-
- if (!server.waitForNewConnection(1000))
- return false;
-
- QTcpSocket *passive = server.nextPendingConnection();
- passive->setParent(this);
-
- endPoints[0] = active;
- endPoints[1] = passive;
- return true;
- }
-};
-
-tst_QTcpSocket::tst_QTcpSocket()
-{
- tmpSocket = 0;
-
- //This code relates to the socketsConstructedBeforeEventLoop test case
- earlyConstructedSockets = new SocketPair;
- QVERIFY(earlyConstructedSockets->create());
- earlyBytesWrittenCount = 0;
- earlyReadyReadCount = 0;
- connect(earlyConstructedSockets->endPoints[0], SIGNAL(readyRead()), this, SLOT(earlySocketReadyRead()));
- connect(earlyConstructedSockets->endPoints[1], SIGNAL(bytesWritten(qint64)), this, SLOT(earlySocketBytesSent(qint64)));
- earlyConstructedSockets->endPoints[1]->write("hello work");
-}
-
-tst_QTcpSocket::~tst_QTcpSocket()
-{
-
-}
-
-void tst_QTcpSocket::initTestCase_data()
-{
- QTest::addColumn<bool>("setProxy");
- QTest::addColumn<int>("proxyType");
- QTest::addColumn<bool>("ssl");
-
- qDebug() << QtNetworkSettings::serverName();
- QTest::newRow("WithoutProxy") << false << 0 << false;
- QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy) << false;
- QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic) << false;
-
- QTest::newRow("WithHttpProxy") << true << int(HttpProxy) << false;
- QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic) << false;
-// QTest::newRow("WithHttpProxyNtlmAuth") << true << int(HttpProxy | AuthNtlm) << false;
-
-#ifndef QT_NO_OPENSSL
- QTest::newRow("WithoutProxy SSL") << false << 0 << true;
- QTest::newRow("WithSocks5Proxy SSL") << true << int(Socks5Proxy) << true;
- QTest::newRow("WithSocks5AuthProxy SSL") << true << int(Socks5Proxy | AuthBasic) << true;
-
- QTest::newRow("WithHttpProxy SSL") << true << int(HttpProxy) << true;
- QTest::newRow("WithHttpProxyBasicAuth SSL") << true << int(HttpProxy | AuthBasic) << true;
-// QTest::newRow("WithHttpProxyNtlmAuth SSL") << true << int(HttpProxy | AuthNtlm) << true;
-#endif
-}
-
-void tst_QTcpSocket::init()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- QList<QHostAddress> addresses = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses();
- QVERIFY2(addresses.count() > 0, "failed to get ip address for test server");
- QString fluke = addresses.first().toString();
- QNetworkProxy proxy;
-
- switch (proxyType) {
- case Socks5Proxy:
- proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, fluke, 1080);
- break;
-
- case Socks5Proxy | AuthBasic:
- proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, fluke, 1081);
- break;
-
- case HttpProxy | NoAuth:
- proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3128);
- break;
-
- case HttpProxy | AuthBasic:
- proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3129);
- break;
-
- case HttpProxy | AuthNtlm:
- proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3130);
- break;
- }
- QNetworkProxy::setApplicationProxy(proxy);
- }
-
- qt_qhostinfo_clear_cache();
-}
-
-QTcpSocket *tst_QTcpSocket::newSocket() const
-{
- QTcpSocket *socket;
-#ifndef QT_NO_OPENSSL
- QFETCH_GLOBAL(bool, ssl);
- socket = ssl ? new QSslSocket : new QTcpSocket;
-#else
- socket = new QTcpSocket;
-#endif
-
- proxyAuthCalled = 0;
- connect(socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- Qt::DirectConnection);
- return socket;
-}
-
-void tst_QTcpSocket::cleanup()
-{
- QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
-}
-
-void tst_QTcpSocket::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
-{
- ++proxyAuthCalled;
- auth->setUser("qsockstest");
- auth->setPassword("password");
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpSocket::socketsConstructedBeforeEventLoop()
-{
- QFETCH_GLOBAL(bool, setProxy);
- QFETCH_GLOBAL(bool, ssl);
- if (setProxy || ssl)
- return;
- //This test checks that sockets constructed before QCoreApplication::exec() still emit signals
- //see construction code in the tst_QTcpSocket constructor
- enterLoop(3);
- QCOMPARE(earlyBytesWrittenCount, 1);
- QCOMPARE(earlyReadyReadCount, 1);
- earlyConstructedSockets->endPoints[0]->close();
- earlyConstructedSockets->endPoints[1]->close();
-}
-
-void tst_QTcpSocket::earlySocketBytesSent(qint64 /* bytes */)
-{
- earlyBytesWrittenCount++;
-}
-
-void tst_QTcpSocket::earlySocketReadyRead()
-{
- earlyReadyReadCount++;
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpSocket::constructing()
-{
- QTcpSocket *socket = newSocket();
-
- // Check the initial state of the QTcpSocket.
- QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
- QVERIFY(socket->isSequential());
- QVERIFY(!socket->isOpen());
- QVERIFY(!socket->isValid());
- QCOMPARE(socket->socketType(), QTcpSocket::TcpSocket);
-
- char c;
- QCOMPARE(socket->getChar(&c), false);
- QCOMPARE((int) socket->bytesAvailable(), 0);
- QCOMPARE(socket->canReadLine(), false);
- QCOMPARE(socket->readLine(), QByteArray());
- QCOMPARE(socket->socketDescriptor(), -1);
- QCOMPARE((int) socket->localPort(), 0);
- QVERIFY(socket->localAddress() == QHostAddress());
- QCOMPARE((int) socket->peerPort(), 0);
- QVERIFY(socket->peerAddress() == QHostAddress());
- QCOMPARE(socket->error(), QTcpSocket::UnknownSocketError);
- QCOMPARE(socket->errorString(), QString("Unknown error"));
-
- // Check the state of the socket layer?
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpSocket::setInvalidSocketDescriptor()
-{
- QTcpSocket *socket = newSocket();
- QCOMPARE(socket->socketDescriptor(), -1);
-#ifdef Q_OS_SYMBIAN
- QTest::ignoreMessage(QtWarningMsg, "QSymbianSocketEngine::initialize - socket descriptor not found");
-#endif
- QVERIFY(!socket->setSocketDescriptor(-5, QTcpSocket::UnconnectedState));
- QCOMPARE(socket->socketDescriptor(), -1);
-
- QCOMPARE(socket->error(), QTcpSocket::UnsupportedSocketOperationError);
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpSocket::setSocketDescriptor()
-{
-#ifdef Q_OS_SYMBIAN
- QSKIP("adopting open c socket handles is not supported", SkipAll);
-#else
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return; // this test doesn't make sense with proxies
-
-#ifdef Q_OS_WIN
- // need the dummy to ensure winsock is started
- QTcpSocket *dummy = newSocket();
- dummy->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(dummy->waitForConnected());
-
- SOCKET sock = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (sock == INVALID_SOCKET) {
- qErrnoWarning(WSAGetLastError(), "INVALID_SOCKET");
- }
-#else
- SOCKET sock = ::socket(AF_INET, SOCK_STREAM, 0);
-
- // artificially increase the value of sock
- SOCKET sock2 = ::fcntl(sock, F_DUPFD, sock + 50);
- ::close(sock);
- sock = sock2;
-#endif
-
- QVERIFY(sock != INVALID_SOCKET);
- QTcpSocket *socket = newSocket();
- QVERIFY(socket->setSocketDescriptor(sock, QTcpSocket::UnconnectedState));
- QCOMPARE(socket->socketDescriptor(), (int)sock);
-
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QCOMPARE(socket->state(), QTcpSocket::HostLookupState);
- QCOMPARE(socket->socketDescriptor(), (int)sock);
- QVERIFY(socket->waitForConnected(10000));
- // skip this, it has been broken for years, see task 260735
- // if somebody complains, consider fixing it, but it might break existing applications.
- QEXPECT_FAIL("", "bug has been around for years, will not fix without need", Continue);
- QCOMPARE(socket->socketDescriptor(), (int)sock);
- delete socket;
-#ifdef Q_OS_WIN
- delete dummy;
-#endif
-#endif
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpSocket::socketDescriptor()
-{
- QTcpSocket *socket = newSocket();
-
- QCOMPARE(socket->socketDescriptor(), -1);
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY((socket->state() == QAbstractSocket::HostLookupState && socket->socketDescriptor() == -1) ||
- (socket->state() == QAbstractSocket::ConnectingState && socket->socketDescriptor() != -1));
- QVERIFY(socket->waitForConnected(10000));
- QVERIFY(socket->state() == QAbstractSocket::ConnectedState);
- QVERIFY(socket->socketDescriptor() != -1);
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpSocket::blockingIMAP()
-{
- QTcpSocket *socket = newSocket();
-
- // Connect
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->waitForConnected(10000));
- QCOMPARE(socket->state(), QTcpSocket::ConnectedState);
- QVERIFY(socket->isValid());
-
- // Read greeting
- QVERIFY(socket->waitForReadyRead(5000));
- QString s = socket->readLine();
- // only test if an OK was returned, to make the test compatible between different
- // IMAP server versions
- QCOMPARE(s.left(4).toLatin1().constData(), "* OK");
-
- // Write NOOP
- QCOMPARE((int) socket->write("1 NOOP\r\n", 8), 8);
- QCOMPARE((int) socket->write("2 NOOP\r\n", 8), 8);
-
- if (!socket->canReadLine())
- QVERIFY(socket->waitForReadyRead(5000));
-
- // Read response
- s = socket->readLine();
- QCOMPARE(s.toLatin1().constData(), "1 OK Completed\r\n");
-
- // Write a third NOOP to verify that write doesn't clear the read buffer
- QCOMPARE((int) socket->write("3 NOOP\r\n", 8), 8);
-
- // Read second response
- if (!socket->canReadLine())
- QVERIFY(socket->waitForReadyRead(5000));
- s = socket->readLine();
- QCOMPARE(s.toLatin1().constData(), "2 OK Completed\r\n");
-
- // Read third response
- if (!socket->canReadLine())
- QVERIFY(socket->waitForReadyRead(5000));
- s = socket->readLine();
- QCOMPARE(s.toLatin1().constData(), "3 OK Completed\r\n");
-
-
- // Write LOGOUT
- QCOMPARE((int) socket->write("4 LOGOUT\r\n", 10), 10);
-
- if (!socket->canReadLine())
- QVERIFY(socket->waitForReadyRead(5000));
-
- // Read two lines of respose
- s = socket->readLine();
- QCOMPARE(s.toLatin1().constData(), "* BYE LOGOUT received\r\n");
-
- if (!socket->canReadLine())
- QVERIFY(socket->waitForReadyRead(5000));
-
- s = socket->readLine();
- QCOMPARE(s.toLatin1().constData(), "4 OK Completed\r\n");
-
- // Close the socket
- socket->close();
-
- // Check that it's closed
- QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpSocket::hostNotFound()
-{
- QTcpSocket *socket = newSocket();
-
- socket->connectToHost("nosuchserver.troll.no", 80);
- QVERIFY(!socket->waitForConnected());
- QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
- QCOMPARE(int(socket->error()), int(QTcpSocket::HostNotFoundError));
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::timeoutConnect_data()
-{
- QTest::addColumn<QString>("address");
- QTest::newRow("host") << QtNetworkSettings::serverName();
- QTest::newRow("ip") << QtNetworkSettings::serverIP().toString();
-}
-
-void tst_QTcpSocket::timeoutConnect()
-{
- QFETCH(QString, address);
- QTcpSocket *socket = newSocket();
-
- QElapsedTimer timer;
- timer.start();
-
- // Port 1357 is configured to drop packets on the test server
- socket->connectToHost(address, 1357);
- QVERIFY(timer.elapsed() < 150);
- QVERIFY(!socket->waitForConnected(1000)); //200ms is too short when using SOCKS proxy authentication
- QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
- QCOMPARE(int(socket->error()), int(QTcpSocket::SocketTimeoutError));
-
- timer.start();
- socket->connectToHost(address, 1357);
- QVERIFY(timer.elapsed() < 150);
- QTimer::singleShot(50, &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(socket->state() == QTcpSocket::ConnectingState
- || socket->state() == QTcpSocket::HostLookupState);
- socket->abort();
- QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
- QCOMPARE(socket->openMode(), QIODevice::NotOpen);
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpSocket::nonBlockingIMAP()
-{
- QTcpSocket *socket = newSocket();
- connect(socket, SIGNAL(hostFound()), SLOT(nonBlockingIMAP_hostFound()));
- connect(socket, SIGNAL(connected()), SLOT(nonBlockingIMAP_connected()));
- connect(socket, SIGNAL(disconnected()), SLOT(nonBlockingIMAP_closed()));
- connect(socket, SIGNAL(bytesWritten(qint64)), SLOT(nonBlockingIMAP_bytesWritten(qint64)));
- connect(socket, SIGNAL(readyRead()), SLOT(nonBlockingIMAP_readyRead()));
- nonBlockingIMAP_socket = socket;
-
- // Connect
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->state() == QTcpSocket::HostLookupState ||
- socket->state() == QTcpSocket::ConnectingState);
-
- enterLoop(30);
- if (timeout()) {
- QFAIL("Timed out");
- }
-
- if (socket->state() == QTcpSocket::ConnectingState) {
- enterLoop(30);
- if (timeout()) {
- QFAIL("Timed out");
- }
- }
-
- QCOMPARE(socket->state(), QTcpSocket::ConnectedState);
-
- enterLoop(30);
- if (timeout()) {
- QFAIL("Timed out");
- }
-
- // Read greeting
- QVERIFY(!nonBlockingIMAP_data.isEmpty());
- QCOMPARE(nonBlockingIMAP_data.at(0).left(4).toLatin1().constData(), "* OK");
- nonBlockingIMAP_data.clear();
-
- nonBlockingIMAP_totalWritten = 0;
-
- // Write NOOP
- QCOMPARE((int) socket->write("1 NOOP\r\n", 8), 8);
-
-
- enterLoop(30);
- if (timeout()) {
- QFAIL("Timed out");
- }
-
- QVERIFY(nonBlockingIMAP_totalWritten == 8);
-
-
- enterLoop(30);
- if (timeout()) {
- QFAIL("Timed out");
- }
-
-
- // Read response
- QVERIFY(!nonBlockingIMAP_data.isEmpty());
- QCOMPARE(nonBlockingIMAP_data.at(0).toLatin1().constData(), "1 OK Completed\r\n");
- nonBlockingIMAP_data.clear();
-
-
- nonBlockingIMAP_totalWritten = 0;
-
- // Write LOGOUT
- QCOMPARE((int) socket->write("2 LOGOUT\r\n", 10), 10);
-
- enterLoop(30);
- if (timeout()) {
- QFAIL("Timed out");
- }
-
- QVERIFY(nonBlockingIMAP_totalWritten == 10);
-
- // Wait for greeting
- enterLoop(30);
- if (timeout()) {
- QFAIL("Timed out");
- }
-
- // Read two lines of respose
- QCOMPARE(nonBlockingIMAP_data.at(0).toLatin1().constData(), "* BYE LOGOUT received\r\n");
- QCOMPARE(nonBlockingIMAP_data.at(1).toLatin1().constData(), "2 OK Completed\r\n");
- nonBlockingIMAP_data.clear();
-
- // Close the socket
- socket->close();
-
- // Check that it's closed
- QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
-
- delete socket;
-}
-
-void tst_QTcpSocket::nonBlockingIMAP_hostFound()
-{
- exitLoop();
-}
-
-void tst_QTcpSocket::nonBlockingIMAP_connected()
-{
- exitLoop();
-}
-
-void tst_QTcpSocket::nonBlockingIMAP_readyRead()
-{
- while (nonBlockingIMAP_socket->canReadLine())
- nonBlockingIMAP_data.append(nonBlockingIMAP_socket->readLine());
-
- exitLoop();
-}
-
-void tst_QTcpSocket::nonBlockingIMAP_bytesWritten(qint64 written)
-{
- nonBlockingIMAP_totalWritten += written;
- exitLoop();
-}
-
-void tst_QTcpSocket::nonBlockingIMAP_closed()
-{
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpSocket::delayedClose()
-{
- QTcpSocket *socket = newSocket();
- connect(socket, SIGNAL(connected()), SLOT(nonBlockingIMAP_connected()));
- connect(socket, SIGNAL(disconnected()), SLOT(exitLoopSlot()));
-
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
-
- enterLoop(30);
- if (timeout())
- QFAIL("Timed out");
-
- QCOMPARE(socket->state(), QTcpSocket::ConnectedState);
-
- QCOMPARE((int) socket->write("1 LOGOUT\r\n", 10), 10);
-
- // Add a huge bulk of data to be written after the logout
- // command. The server will shut down after receiving the LOGOUT,
- // so this data will not be read. But our close call should
- // schedule a delayed close because all the data can not be
- // written in one go.
- QCOMPARE((int) socket->write(QByteArray(100000, '\n'), 100000), 100000);
-
- socket->close();
-
- QCOMPARE((int) socket->state(), (int) QTcpSocket::ClosingState);
-
- enterLoop(10);
- if (timeout())
- QFAIL("Timed out");
-
- QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
-
- delete socket;
-}
-
-
-//----------------------------------------------------------------------------------
-
-QByteArray tst_QTcpSocket::expectedReplyIMAP()
-{
- if (expectedReplyIMAP_cached.isEmpty()) {
- fetchExpectedReplyIMAP();
- }
-
- return expectedReplyIMAP_cached;
-}
-
-// Figure out how the current IMAP server responds
-void tst_QTcpSocket::fetchExpectedReplyIMAP()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY2(socket->waitForConnected(10000), qPrintable(socket->errorString()));
- QVERIFY2(socket->state() == QTcpSocket::ConnectedState, qPrintable(socket->errorString()));
-
- QTRY_VERIFY(socket->canReadLine());
-
- QByteArray greeting = socket->readLine();
- delete socket;
-
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(greeting), greeting.constData());
-
- expectedReplyIMAP_cached = greeting;
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpSocket::partialRead()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->waitForConnected(10000));
- QVERIFY(socket->state() == QTcpSocket::ConnectedState);
- char buf[512];
-
- QByteArray greeting = expectedReplyIMAP();
- QVERIFY(!greeting.isEmpty());
-
- for (int i = 0; i < 10; i += 2) {
- while (socket->bytesAvailable() < 2)
- QVERIFY(socket->waitForReadyRead(5000));
- QVERIFY(socket->read(buf, 2) == 2);
- buf[2] = '\0';
- QCOMPARE((char *)buf, greeting.mid(i, 2).data());
- }
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QTcpSocket::unget()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->waitForConnected(10000));
- QVERIFY(socket->state() == QTcpSocket::ConnectedState);
- char buf[512];
-
- QByteArray greeting = expectedReplyIMAP();
- QVERIFY(!greeting.isEmpty());
-
- for (int i = 0; i < 10; i += 2) {
- while (socket->bytesAvailable() < 2)
- QVERIFY(socket->waitForReadyRead(10000));
- int bA = socket->bytesAvailable();
- QVERIFY(socket->read(buf, 2) == 2);
- buf[2] = '\0';
- QCOMPARE((char *)buf, greeting.mid(i, 2).data());
- QCOMPARE((int)socket->bytesAvailable(), bA - 2);
- socket->ungetChar(buf[1]);
- socket->ungetChar(buf[0]);
- QCOMPARE((int)socket->bytesAvailable(), bA);
- QVERIFY(socket->read(buf, 2) == 2);
- buf[2] = '\0';
- QCOMPARE((char *)buf, greeting.mid(i, 2).data());
- }
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::readRegularFile_readyRead()
-{
- exitLoop();
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::readAllAfterClose()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- connect(socket, SIGNAL(readyRead()), SLOT(readRegularFile_readyRead()));
- enterLoop(10);
- if (timeout())
- QFAIL("Network operation timed out");
-
- socket->close();
- QByteArray array = socket->readAll();
- QCOMPARE(array.size(), 0);
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::openCloseOpenClose()
-{
- QTcpSocket *socket = newSocket();
-
- for (int i = 0; i < 3; ++i) {
- QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
- QCOMPARE(int(socket->openMode()), int(QIODevice::NotOpen));
- QVERIFY(socket->isSequential());
- QVERIFY(!socket->isOpen());
- QVERIFY(socket->socketType() == QTcpSocket::TcpSocket);
-
- char c;
- QCOMPARE(socket->getChar(&c), false);
- QCOMPARE((int) socket->bytesAvailable(), 0);
- QCOMPARE(socket->canReadLine(), false);
- QCOMPARE(socket->readLine(), QByteArray());
- QCOMPARE(socket->socketDescriptor(), -1);
- QCOMPARE((int) socket->localPort(), 0);
- QVERIFY(socket->localAddress() == QHostAddress());
- QCOMPARE((int) socket->peerPort(), 0);
- QVERIFY(socket->peerAddress() == QHostAddress());
- QCOMPARE(socket->error(), QTcpSocket::UnknownSocketError);
- QCOMPARE(socket->errorString(), QString("Unknown error"));
-
- QVERIFY(socket->state() == QTcpSocket::UnconnectedState);
-
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->waitForConnected(10000));
- socket->close();
- }
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::connectDisconnectConnectDisconnect()
-{
- QTcpSocket *socket = newSocket();
-
- for (int i = 0; i < 3; ++i) {
- QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
- QVERIFY(socket->socketType() == QTcpSocket::TcpSocket);
-
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->waitForReadyRead(10000));
- QCOMPARE(QString::fromLatin1(socket->read(4)), QString("* OK"));
-
- socket->disconnectFromHost();
- if (socket->state() != QTcpSocket::UnconnectedState)
- QVERIFY(socket->waitForDisconnected(10000));
- QCOMPARE(int(socket->openMode()), int(QIODevice::ReadWrite));
- }
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::disconnectWhileConnecting_data()
-{
- QTest::addColumn<QByteArray>("data");
- QTest::addColumn<bool>("closeDirectly");
-
- QTest::newRow("without-data") << QByteArray() << false;
- QTest::newRow("without-data+close") << QByteArray() << true;
- QTest::newRow("with-data") << QByteArray("Hello, world!") << false;
- QTest::newRow("with-data+close") << QByteArray("Hello, world!") << true;
-
- QByteArray bigData(1024*1024, '@');
- QTest::newRow("with-big-data") << bigData << false;
- QTest::newRow("with-big-data+close") << bigData << true;
-}
-
-void tst_QTcpSocket::disconnectWhileConnecting()
-{
- QFETCH(QByteArray, data);
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return; //proxy not useful for localhost test case
-
- QTcpServer server;
- QVERIFY(server.listen(QHostAddress::LocalHost));
-
- // proceed to the connect-write-disconnect
- QTcpSocket *socket = newSocket();
- socket->connectToHost("127.0.0.1", server.serverPort());
- if (!data.isEmpty())
- socket->write(data);
- if (socket->state() == QAbstractSocket::ConnectedState)
- QSKIP("localhost connections are immediate, test case is invalid", SkipSingle);
-
- QFETCH(bool, closeDirectly);
- if (closeDirectly) {
- socket->close();
- QCOMPARE(int(socket->openMode()), int(QIODevice::NotOpen));
- } else {
- socket->disconnectFromHost();
- }
-
- connect(socket, SIGNAL(disconnected()), SLOT(exitLoopSlot()));
-#ifndef Q_OS_SYMBIAN
- enterLoop(10);
-#else
- enterLoop(30);
-#endif
- QVERIFY2(!timeout(), "Network timeout");
- QVERIFY(socket->state() == QAbstractSocket::UnconnectedState);
- if (!closeDirectly) {
- QCOMPARE(int(socket->openMode()), int(QIODevice::ReadWrite));
- socket->close();
- }
- QCOMPARE(int(socket->openMode()), int(QIODevice::NotOpen));
-
- // accept the other side and verify that it was sent properly:
- QVERIFY(server.hasPendingConnections() || server.waitForNewConnection(0));
- QTcpSocket *othersocket = server.nextPendingConnection();
- if (othersocket->state() != QAbstractSocket::UnconnectedState)
- QVERIFY2(othersocket->waitForDisconnected(10000), "Network timeout");
- QVERIFY(othersocket->state() == QAbstractSocket::UnconnectedState);
- QCOMPARE(othersocket->readAll(), data);
-
- delete socket;
- delete othersocket;
-}
-
-//----------------------------------------------------------------------------------
-class ReceiverThread: public QThread
-{
- QTcpServer *server;
-public:
- int serverPort;
- bool ok;
- QByteArray receivedData;
- volatile bool quit;
-
- ReceiverThread()
- : server(0), ok(false), quit(false)
- { }
-
- ~ReceiverThread() { }
-
- bool listen()
- {
- server = new QTcpServer;
- if (!server->listen(QHostAddress::LocalHost))
- return false;
- serverPort = server->serverPort();
- server->moveToThread(this);
- return true;
- }
-
- static void cleanup(void *ptr)
- {
- ReceiverThread* self = reinterpret_cast<ReceiverThread*>(ptr);
- self->quit = true;
- self->wait(30000);
- delete self;
- }
-
-protected:
- void run()
- {
- bool timedOut = false;
- while (!quit) {
-#ifndef Q_OS_SYMBIAN
- if (server->waitForNewConnection(500, &timedOut))
-#else
- if (server->waitForNewConnection(5000, &timedOut))
-#endif
- break;
- if (!timedOut)
- return;
- }
-
- QTcpSocket *socket = server->nextPendingConnection();
- while (!quit) {
-#ifndef Q_OS_SYMBIAN
- if (socket->waitForDisconnected(500))
-#else
- if (socket->waitForDisconnected(5000))
-#endif
- break;
- if (socket->error() != QAbstractSocket::SocketTimeoutError)
- return;
- }
-
- if (!quit) {
- receivedData = socket->readAll();
- ok = true;
- }
- delete socket;
- delete server;
- server = 0;
- }
-};
-
-void tst_QTcpSocket::disconnectWhileConnectingNoEventLoop_data()
-{
- disconnectWhileConnecting_data();
-}
-
-void tst_QTcpSocket::disconnectWhileConnectingNoEventLoop()
-{
- QFETCH(QByteArray, data);
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return; //proxy not useful for localhost test case
-
- QScopedPointer<ReceiverThread, ReceiverThread> thread (new ReceiverThread);
- QVERIFY(thread->listen());
- thread->start();
-
- // proceed to the connect-write-disconnect
- QTcpSocket *socket = newSocket();
- socket->connectToHost("127.0.0.1", thread->serverPort);
- if (!data.isEmpty())
- socket->write(data);
- if (socket->state() == QAbstractSocket::ConnectedState) {
- QSKIP("localhost connections are immediate, test case is invalid", SkipSingle);
- }
-
- QFETCH(bool, closeDirectly);
- if (closeDirectly) {
- socket->close();
- QCOMPARE(int(socket->openMode()), int(QIODevice::NotOpen));
- } else {
- socket->disconnectFromHost();
- }
-
-#ifndef Q_OS_SYMBIAN
- QVERIFY2(socket->waitForDisconnected(10000), "Network timeout");
-#else
- QVERIFY2(socket->waitForDisconnected(30000), "Network timeout");
-#endif
- QVERIFY(socket->state() == QAbstractSocket::UnconnectedState);
- if (!closeDirectly) {
- QCOMPARE(int(socket->openMode()), int(QIODevice::ReadWrite));
- socket->close();
- }
- QCOMPARE(int(socket->openMode()), int(QIODevice::NotOpen));
- delete socket;
-
- // check if the other side received everything ok
- QVERIFY(thread->wait(30000));
- QVERIFY(thread->ok);
- QCOMPARE(thread->receivedData, data);
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::disconnectWhileLookingUp_data()
-{
- QTest::addColumn<bool>("doClose");
-
- QTest::newRow("disconnect") << false;
- QTest::newRow("close") << true;
-}
-
-void tst_QTcpSocket::disconnectWhileLookingUp()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return; // we let the proxies do the lookup now
-
- // just connect and disconnect, then make sure nothing weird happened
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 21);
-
- // check that connect is in progress
- QVERIFY(socket->state() != QAbstractSocket::UnconnectedState);
-
- QFETCH(bool, doClose);
- if (doClose) {
- socket->close();
- QVERIFY(socket->openMode() == QIODevice::NotOpen);
- } else {
- socket->disconnectFromHost();
- QVERIFY(socket->openMode() == QIODevice::ReadWrite);
- }
-
- // let anything queued happen
- QEventLoop loop;
-#ifndef Q_OS_SYMBIAN
- QTimer::singleShot(50, &loop, SLOT(quit()));
-#else
- QTimer::singleShot(5000, &loop, SLOT(quit()));
-#endif
- loop.exec();
-
- // recheck
- if (doClose) {
- QVERIFY(socket->openMode() == QIODevice::NotOpen);
- } else {
- QVERIFY(socket->openMode() == QIODevice::ReadWrite);
- }
-
- QVERIFY(socket->state() == QAbstractSocket::UnconnectedState);
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::downloadBigFile()
-{
- if (tmpSocket)
- delete tmpSocket;
- tmpSocket = newSocket();
-
- connect(tmpSocket, SIGNAL(connected()), SLOT(exitLoopSlot()));
- connect(tmpSocket, SIGNAL(readyRead()), SLOT(downloadBigFileSlot()));
- connect(tmpSocket, SIGNAL(disconnected()), SLOT(exitLoopSlot()));
-
- tmpSocket->connectToHost(QtNetworkSettings::serverName(), 80);
-
- enterLoop(30);
- if (timeout()) {
- delete tmpSocket;
- tmpSocket = 0;
- QFAIL("Network operation timed out");
- }
-
- QByteArray hostName = QtNetworkSettings::serverName().toLatin1();
- QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState);
- QVERIFY(tmpSocket->write("GET /qtest/mediumfile HTTP/1.0\r\n") > 0);
- QVERIFY(tmpSocket->write("HOST: ") > 0);
- QVERIFY(tmpSocket->write(hostName.data()) > 0);
- QVERIFY(tmpSocket->write("\r\n") > 0);
- QVERIFY(tmpSocket->write("\r\n") > 0);
-
- bytesAvailable = 0;
- expectedLength = 0;
- readingBody = false;
-
- QTime stopWatch;
- stopWatch.start();
-
- enterLoop(600);
- if (timeout()) {
- delete tmpSocket;
- tmpSocket = 0;
- if (bytesAvailable > 0)
- qDebug("Slow Connection, only downloaded %ld of %d", long(bytesAvailable), 10000281);
- QFAIL("Network operation timed out");
- }
-
- QCOMPARE(bytesAvailable, expectedLength);
-
- qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s",
- bytesAvailable / (1024.0 * 1024.0),
- stopWatch.elapsed() / 1024.0,
- (bytesAvailable / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));
-
- delete tmpSocket;
- tmpSocket = 0;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::exitLoopSlot()
-{
- exitLoop();
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::downloadBigFileSlot()
-{
- if (!readingBody) {
- while (tmpSocket->canReadLine()) {
- QByteArray array = tmpSocket->readLine();
- if (array.startsWith("Content-Length"))
- expectedLength = array.simplified().split(' ').at(1).toInt();
- if (array == "\r\n") {
- readingBody = true;
- break;
- }
- }
- }
- if (readingBody) {
- bytesAvailable += tmpSocket->readAll().size();
- if (bytesAvailable == expectedLength)
- exitLoop();
- }
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::readLine()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->waitForConnected(5000));
-
- while (!socket->canReadLine())
- QVERIFY(socket->waitForReadyRead(10000));
-
- char buffer[1024];
-
- qint64 linelen = socket->readLine(buffer, sizeof(buffer));
- QVERIFY(linelen >= 3);
- QVERIFY(linelen < 1024);
-
- QByteArray reply = QByteArray::fromRawData(buffer, linelen);
- QCOMPARE((int) buffer[linelen-2], (int) '\r');
- QCOMPARE((int) buffer[linelen-1], (int) '\n');
- QCOMPARE((int) buffer[linelen], (int) '\0');
-
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(reply), reply.constData());
-
- QCOMPARE(socket->write("1 NOOP\r\n"), qint64(8));
-
- while (socket->bytesAvailable() < 10)
- QVERIFY(socket->waitForReadyRead(10000));
-
- QCOMPARE(socket->readLine(buffer, 11), qint64(10));
- QCOMPARE((const char *)buffer, "1 OK Compl");
-
- while (socket->bytesAvailable() < 6)
- QVERIFY(socket->waitForReadyRead(10000));
-
- QCOMPARE(socket->readLine(buffer, 11), qint64(6));
- QCOMPARE((const char *)buffer, "eted\r\n");
-
- QVERIFY(!socket->waitForReadyRead(100));
- QCOMPARE(socket->readLine(buffer, sizeof(buffer)), qint64(0));
- QVERIFY(socket->error() == QAbstractSocket::SocketTimeoutError
- || socket->error() == QAbstractSocket::RemoteHostClosedError);
- QCOMPARE(socket->bytesAvailable(), qint64(0));
-
- socket->close();
- QCOMPARE(socket->readLine(buffer, sizeof(buffer)), qint64(-1));
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::readLineString()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->waitForReadyRead(10000));
-
- QByteArray arr = socket->readLine();
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(arr), arr.constData());
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::readChunks()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->waitForConnected(10000));
- QVERIFY(socket->waitForReadyRead(5000));
-
- char buf[4096];
- memset(buf, '@', sizeof(buf));
- qint64 dataLength = socket->read(buf, sizeof(buf));
- QVERIFY(dataLength > 0);
-
- QCOMPARE(buf[dataLength - 2], '\r');
- QCOMPARE(buf[dataLength - 1], '\n');
- QCOMPARE(buf[dataLength], '@');
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::waitForBytesWritten()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 80);
- QVERIFY(socket->waitForConnected(10000));
-
- socket->write("GET / HTTP/1.0\r\n\r\n");
- qint64 toWrite = socket->bytesToWrite();
- QVERIFY(socket->waitForBytesWritten(5000));
- QVERIFY(toWrite > socket->bytesToWrite());
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::waitForBytesWrittenMinusOne()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 80);
- QVERIFY(socket->waitForConnected(10000));
-
- socket->write("GET / HTTP/1.0\r\n\r\n");
- qint64 toWrite = socket->bytesToWrite();
- QVERIFY(socket->waitForBytesWritten(-1));
- QVERIFY(toWrite > socket->bytesToWrite());
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::waitForReadyRead()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 80);
- socket->write("GET / HTTP/1.0\r\n\r\n");
- QVERIFY(socket->waitForReadyRead(5000));
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::waitForReadyReadMinusOne()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 80);
- socket->write("GET / HTTP/1.0\r\n\r\n");
- QVERIFY(socket->waitForReadyRead(-1));
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::flush()
-{
- QTcpSocket *socket = newSocket();
- socket->flush();
-
- connect(socket, SIGNAL(connected()), SLOT(exitLoopSlot()));
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- enterLoop(60);
- QVERIFY(socket->isOpen());
-
- socket->write("1 LOGOUT\r\n");
- QCOMPARE(socket->bytesToWrite(), qint64(10));
- socket->flush();
- QCOMPARE(socket->bytesToWrite(), qint64(0));
- socket->close();
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::synchronousApi()
-{
- QTcpSocket *ftpSocket = newSocket();
- ftpSocket->connectToHost(QtNetworkSettings::serverName(), 21);
- ftpSocket->write("QUIT\r\n");
- QVERIFY(ftpSocket->waitForDisconnected(10000));
- QVERIFY(ftpSocket->bytesAvailable() > 0);
- QByteArray arr = ftpSocket->readAll();
- QVERIFY(arr.size() > 0);
- delete ftpSocket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::dontCloseOnTimeout()
-{
- QTcpServer server;
- server.setProxy(QNetworkProxy(QNetworkProxy::NoProxy));
- QVERIFY(server.listen());
-
- QHostAddress serverAddress = QHostAddress::LocalHost;
- if (!(server.serverAddress() == QHostAddress::AnyIPv4) && !(server.serverAddress() == QHostAddress::AnyIPv6))
- serverAddress = server.serverAddress();
-
- QTcpSocket *socket = newSocket();
- socket->connectToHost(serverAddress, server.serverPort());
-#ifndef Q_OS_SYMBIAN
- QVERIFY(!socket->waitForReadyRead(100));
-#else
- QVERIFY(!socket->waitForReadyRead(5000));
-#endif
- QCOMPARE(socket->error(), QTcpSocket::SocketTimeoutError);
- QVERIFY(socket->isOpen());
-
-#ifndef Q_OS_SYMBIAN
- QVERIFY(!socket->waitForDisconnected(100));
-#else
- QVERIFY(!socket->waitForDisconnected(5000));
-#endif
- QCOMPARE(socket->error(), QTcpSocket::SocketTimeoutError);
- QVERIFY(socket->isOpen());
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::recursiveReadyRead()
-{
- QTcpSocket *smtp = newSocket();
- connect(smtp, SIGNAL(connected()), SLOT(exitLoopSlot()));
- connect(smtp, SIGNAL(readyRead()), SLOT(recursiveReadyReadSlot()));
- tmpSocket = smtp;
-
- QSignalSpy spy(smtp, SIGNAL(readyRead()));
-
- smtp->connectToHost("smtp.trolltech.com", 25);
- enterLoop(30);
- QVERIFY2(!timeout(),
- "Timed out when connecting to smtp.trolltech.com:25");
-
- enterLoop(30);
- QVERIFY2(!timeout(),
- "Timed out when waiting for the readyRead() signal");
-
- QCOMPARE(spy.count(), 1);
-
- delete smtp;
-}
-
-void tst_QTcpSocket::recursiveReadyReadSlot()
-{
- // make sure the server spits out more data
- tmpSocket->write("NOOP\r\n");
- tmpSocket->flush();
-
- // indiscriminately enter the event loop and start processing
- // events again. but oops! future socket notifications will cause
- // undesired recursive behavior. Unless QTcpSocket is smart, which
- // it of course is. :-)
- QEventLoop loop;
- for (int i = 0; i < 100; ++i)
- loop.processEvents();
-
- // all we really wanted to do was process some events, then exit
- // the loop
- exitLoop();
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::atEnd()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 21);
-
- QVERIFY(socket->waitForReadyRead(15000));
- QTextStream stream(socket);
- QVERIFY(!stream.atEnd());
- QString greeting = stream.readLine();
- QVERIFY(stream.atEnd());
-
- // Test server must use some vsFTPd 2.x.x version
- QVERIFY2(greeting.length() == sizeof("220 (vsFTPd 2.x.x)")-1, qPrintable(greeting));
- QVERIFY2(greeting.startsWith("220 (vsFTPd 2."), qPrintable(greeting));
- QVERIFY2(greeting.endsWith(")"), qPrintable(greeting));
-
- delete socket;
-}
-
-class TestThread : public QThread
-{
- Q_OBJECT
-
-public:
- inline QByteArray data() const
- {
- return socketData;
- }
-
-protected:
- inline void run()
- {
-#ifndef QT_NO_OPENSSL
- QFETCH_GLOBAL(bool, ssl);
- if (ssl)
- socket = new QSslSocket;
- else
-#endif
- socket = new QTcpSocket;
- connect(socket, SIGNAL(readyRead()), this, SLOT(getData()), Qt::DirectConnection);
- connect(socket, SIGNAL(disconnected()), this, SLOT(closed()), Qt::DirectConnection);
- connect(socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), Qt::DirectConnection);
-
- socket->connectToHost(QtNetworkSettings::serverName(), 21);
- socket->write("QUIT\r\n");
- exec();
-
- delete socket;
- }
-
-private slots:
- inline void getData()
- {
- socketData += socket->readAll();
- }
-
- inline void closed()
- {
- quit();
- }
- inline void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
- {
- auth->setUser("qsockstest");
- auth->setPassword("password");
- }
-private:
- int exitCode;
- QTcpSocket *socket;
- QByteArray socketData;
-};
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::socketInAThread()
-{
- for (int i = 0; i < 3; ++i) {
- TestThread thread;
- thread.start();
- QVERIFY(thread.wait(15000));
- QByteArray data = thread.data();
- QVERIFY2(QtNetworkSettings::compareReplyFtp(data), data.constData());
- }
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::socketsInThreads()
-{
- for (int i = 0; i < 3; ++i) {
- TestThread thread1;
- TestThread thread2;
- TestThread thread3;
-
- thread1.start();
- thread2.start();
- thread3.start();
-
- QVERIFY(thread2.wait(15000));
- QVERIFY(thread3.wait(15000));
- QVERIFY(thread1.wait(15000));
-
- QByteArray data1 = thread1.data();
- QByteArray data2 = thread2.data();
- QByteArray data3 = thread3.data();
-
- QVERIFY2(QtNetworkSettings::compareReplyFtp(data1), data1.constData());
- QVERIFY2(QtNetworkSettings::compareReplyFtp(data2), data2.constData());
- QVERIFY2(QtNetworkSettings::compareReplyFtp(data3), data3.constData());
- }
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::waitForReadyReadInASlot()
-{
- QTcpSocket *socket = newSocket();
- tmpSocket = socket;
- connect(socket, SIGNAL(connected()), this, SLOT(waitForReadyReadInASlotSlot()));
-
- socket->connectToHost(QtNetworkSettings::serverName(), 80);
- socket->write("GET / HTTP/1.0\r\n\r\n");
-
- enterLoop(30);
- QVERIFY(!timeout());
-
- delete socket;
-}
-
-void tst_QTcpSocket::waitForReadyReadInASlotSlot()
-{
- QVERIFY(tmpSocket->waitForReadyRead(10000));
- exitLoop();
-}
-
-class RemoteCloseErrorServer : public QTcpServer
-{
- Q_OBJECT
-public:
- RemoteCloseErrorServer()
- {
- connect(this, SIGNAL(newConnection()),
- this, SLOT(getConnection()));
- }
-
-private slots:
- void getConnection()
- {
- tst_QTcpSocket::exitLoop();
- }
-};
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::remoteCloseError()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return; //proxy not useful for localhost test case
- RemoteCloseErrorServer server;
- QVERIFY(server.listen(QHostAddress::LocalHost));
-
- QCoreApplication::instance()->processEvents();
-
- QTcpSocket *clientSocket = newSocket();
- connect(clientSocket, SIGNAL(readyRead()), this, SLOT(exitLoopSlot()));
-
- clientSocket->connectToHost(server.serverAddress(), server.serverPort());
-
- enterLoop(30);
- QVERIFY(!timeout());
-
- QVERIFY(server.hasPendingConnections());
- QTcpSocket *serverSocket = server.nextPendingConnection();
- connect(clientSocket, SIGNAL(disconnected()), this, SLOT(exitLoopSlot()));
-
- serverSocket->write("Hello");
-
- enterLoop(30);
- QVERIFY(!timeout());
-
- QCOMPARE(clientSocket->bytesAvailable(), qint64(5));
-
- qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
- QSignalSpy errorSpy(clientSocket, SIGNAL(error(QAbstractSocket::SocketError)));
- QSignalSpy disconnectedSpy(clientSocket, SIGNAL(disconnected()));
-
- clientSocket->write("World");
- serverSocket->disconnectFromHost();
-
- tmpSocket = clientSocket;
- connect(clientSocket, SIGNAL(error(QAbstractSocket::SocketError)),
- this, SLOT(remoteCloseErrorSlot()));
-
- enterLoop(30);
- QVERIFY(!timeout());
-
- QCOMPARE(disconnectedSpy.count(), 1);
- QCOMPARE(errorSpy.count(), 1);
- QCOMPARE(clientSocket->error(), QAbstractSocket::RemoteHostClosedError);
-
- delete serverSocket;
-
- clientSocket->connectToHost(server.serverAddress(), server.serverPort());
-
- enterLoop(30);
- QVERIFY(!timeout());
-
- QVERIFY(server.hasPendingConnections());
- serverSocket = server.nextPendingConnection();
- serverSocket->disconnectFromHost();
-
- enterLoop(30);
- QVERIFY(!timeout());
-
- QCOMPARE(clientSocket->state(), QAbstractSocket::UnconnectedState);
-
- delete clientSocket;
-}
-
-void tst_QTcpSocket::remoteCloseErrorSlot()
-{
- QCOMPARE(tmpSocket->state(), QAbstractSocket::ConnectedState);
- static_cast<QTcpSocket *>(sender())->close();
-}
-
-void tst_QTcpSocket::messageBoxSlot()
-{
-#if !defined(Q_OS_VXWORKS) // no gui
- QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
- socket->deleteLater();
- QMessageBox box;
- QTimer::singleShot(100, &box, SLOT(close()));
-
- // This should not delete the socket
- box.exec();
-
- // Fire a non-0 singleshot to leave time for the delete
- QTimer::singleShot(250, this, SLOT(exitLoopSlot()));
-#endif
-}
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::openMessageBoxInErrorSlot()
-{
-#if defined(Q_OS_VXWORKS) // no gui
- QSKIP("no default gui available on VxWorks", SkipAll);
-#else
- QTcpSocket *socket = newSocket();
- QPointer<QTcpSocket> p(socket);
- connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(messageBoxSlot()));
-
- socket->connectToHost("hostnotfoundhostnotfound.troll.no", 9999); // Host not found, fyi
- enterLoop(30);
- QVERIFY(!p);
-#endif
-}
-
-//----------------------------------------------------------------------------------
-#ifndef Q_OS_WIN
-void tst_QTcpSocket::connectToLocalHostNoService()
-{
- // This test was created after we received a report that claimed
- // QTcpSocket would crash if trying to connect to "localhost" on a random
- // port with no service listening.
- QTcpSocket *socket = newSocket();
- socket->connectToHost("localhost", 31415); // no service running here, one suspects
-
- while(socket->state() == QTcpSocket::HostLookupState || socket->state() == QTcpSocket::ConnectingState) {
- QTest::qWait(100);
- }
- QCOMPARE(socket->state(), QTcpSocket::UnconnectedState);
- delete socket;
-}
-#endif
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::waitForConnectedInHostLookupSlot()
-{
- // This test tries to reproduce the problem where waitForConnected() is
- // called at a point where the host lookup is already done. QTcpSocket
- // will try to abort the "pending lookup", but since it's already done and
- // the queued signal is already underway, we will receive the signal after
- // waitForConnected() has returned, and control goes back to the event
- // loop. When the signal has been received, the connection is torn down,
- // then reopened. Yikes. If we reproduce this by calling
- // waitForConnected() inside hostLookupSlot(), it will even crash.
- tmpSocket = newSocket();
- QEventLoop loop;
- connect(tmpSocket, SIGNAL(connected()), &loop, SLOT(quit()));
- QTimer timer;
- connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
- QSignalSpy timerSpy(&timer, SIGNAL(timeout()));
- timer.start(15000);
-
- connect(tmpSocket, SIGNAL(hostFound()), this, SLOT(hostLookupSlot()));
- tmpSocket->connectToHost(QtNetworkSettings::serverName(), 143);
-
- // only execute the loop if not already connected
- if (tmpSocket->state() != QAbstractSocket::ConnectedState)
- loop.exec();
-
- QCOMPARE(timerSpy.count(), 0);
-
- delete tmpSocket;
-}
-
-void tst_QTcpSocket::hostLookupSlot()
-{
- // This will fail to cancel the pending signal
- QVERIFY(tmpSocket->waitForConnected(10000));
-}
-
-class Foo : public QObject
-{
- Q_OBJECT
- QTcpSocket *sock;
-public:
- bool attemptedToConnect;
- bool networkTimeout;
- int count;
-
- inline Foo(QObject *parent = 0) : QObject(parent)
- {
- attemptedToConnect = false;
- networkTimeout = false;
- count = 0;
-#ifndef QT_NO_OPENSSL
- QFETCH_GLOBAL(bool, ssl);
- if (ssl)
- sock = new QSslSocket;
- else
-#endif
- sock = new QTcpSocket;
- connect(sock, SIGNAL(connected()), this, SLOT(connectedToIt()));
- connect(sock, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
- }
-
- inline ~Foo()
- {
- delete sock;
- }
-
-public slots:
- inline void connectedToIt()
- { count++; }
-
- inline void doIt()
- {
- attemptedToConnect = true;
- sock->connectToHost(QtNetworkSettings::serverName(), 80);
-
-#ifdef Q_OS_MAC
- pthread_yield_np();
-#elif defined Q_OS_LINUX
- pthread_yield();
-#endif
- if (!sock->waitForConnected()) {
- networkTimeout = true;
- }
- tst_QTcpSocket::exitLoop();
- }
-
- inline void exitLoop()
- {
- tst_QTcpSocket::exitLoop();
- }
-
- inline void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
- {
- auth->setUser("qsockstest");
- auth->setPassword("password");
- }
-};
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::waitForConnectedInHostLookupSlot2()
-{
-#if defined(Q_OS_WIN) || defined(Q_OS_VXWORKS)
- QSKIP("waitForConnectedInHostLookupSlot2 is not run on Windows and VxWorks", SkipAll);
-#else
-
- Foo foo;
- QPushButton top("Go", 0);
- top.show();
- connect(&top, SIGNAL(clicked()), &foo, SLOT(doIt()));
-
- QTimer::singleShot(100, &top, SLOT(animateClick()));
- QTimer::singleShot(5000, &foo, SLOT(exitLoop()));
-
- enterLoop(30);
- if (timeout() || foo.networkTimeout)
- QFAIL("Network timeout");
-
- QVERIFY(foo.attemptedToConnect);
- QCOMPARE(foo.count, 1);
-#endif
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::readyReadSignalsAfterWaitForReadyRead()
-{
- QTcpSocket *socket = newSocket();
-
- QSignalSpy readyReadSpy(socket, SIGNAL(readyRead()));
-
- // Connect
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
-
- // Wait for the read
- QVERIFY(socket->waitForReadyRead(10000));
-
- QCOMPARE(readyReadSpy.count(), 1);
-
- QString s = socket->readLine();
- QVERIFY2(QtNetworkSettings::compareReplyIMAP(s.toLatin1()), s.toLatin1().constData());
- QCOMPARE(socket->bytesAvailable(), qint64(0));
-
- QCoreApplication::instance()->processEvents();
- QCOMPARE(socket->bytesAvailable(), qint64(0));
- QCOMPARE(readyReadSpy.count(), 1);
-
- delete socket;
-}
-
-class TestThread2 : public QThread
-{
- Q_OBJECT
-public:
- void run()
- {
- QFile fileWriter("fifo");
- QVERIFY(fileWriter.open(QFile::WriteOnly));
- QCOMPARE(fileWriter.write(QByteArray(32, '@')), qint64(32));
- QCOMPARE(fileWriter.write(QByteArray(32, '@')), qint64(32));
- QCOMPARE(fileWriter.write(QByteArray(32, '@')), qint64(32));
- QCOMPARE(fileWriter.write(QByteArray(32, '@')), qint64(32));
- }
-};
-
-//----------------------------------------------------------------------------------
-#ifdef Q_OS_LINUX
-void tst_QTcpSocket::linuxKernelBugLocalSocket()
-{
- QFile::remove("fifo");
- mkfifo("fifo", 0666);
-
- TestThread2 test;
- test.start();
-
- QFile fileReader("fifo");
- QVERIFY(fileReader.open(QFile::ReadOnly));
-
- test.wait();
-
- QTcpSocket *socket = newSocket();
- socket->setSocketDescriptor(fileReader.handle());
- QVERIFY(socket->waitForReadyRead(5000));
- QCOMPARE(socket->bytesAvailable(), qint64(128));
-
- QFile::remove("fifo");
-
- delete socket;
-}
-#endif
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::abortiveClose()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return; //proxy not useful for localhost test case
- QTcpServer server;
- QVERIFY(server.listen(QHostAddress::LocalHost));
- connect(&server, SIGNAL(newConnection()), this, SLOT(exitLoopSlot()));
-
- QTcpSocket *clientSocket = newSocket();
- clientSocket->connectToHost(server.serverAddress(), server.serverPort());
-
- enterLoop(10);
- QVERIFY(server.hasPendingConnections());
-
- QVERIFY(tmpSocket = server.nextPendingConnection());
-
- qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
- QSignalSpy readyReadSpy(clientSocket, SIGNAL(readyRead()));
- QSignalSpy errorSpy(clientSocket, SIGNAL(error(QAbstractSocket::SocketError)));
-
- connect(clientSocket, SIGNAL(disconnected()), this, SLOT(exitLoopSlot()));
- QTimer::singleShot(0, this, SLOT(abortiveClose_abortSlot()));
-
- enterLoop(5);
-
- QCOMPARE(readyReadSpy.count(), 0);
- QCOMPARE(errorSpy.count(), 1);
-
- QCOMPARE(*static_cast<const int *>(errorSpy.at(0).at(0).constData()),
- int(QAbstractSocket::RemoteHostClosedError));
-
- delete clientSocket;
-}
-
-void tst_QTcpSocket::abortiveClose_abortSlot()
-{
- tmpSocket->abort();
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::localAddressEmptyOnBSD()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return; //proxy not useful for localhost test case
- QTcpServer server;
- QVERIFY(server.listen(QHostAddress::LocalHost));
-
- QTcpSocket *tcpSocket = 0;
- // we try 10 times, but note that this doesn't always provoke the bug
- for (int i = 0; i < 10; ++i) {
- delete tcpSocket;
- tcpSocket = newSocket();
- tcpSocket->connectToHost(QHostAddress::LocalHost, server.serverPort());
- if (!tcpSocket->waitForConnected(0)) {
- // to provoke the bug, we need a local socket that connects immediately
- // --i;
- tcpSocket->abort();
- if (tcpSocket->state() != QTcpSocket::UnconnectedState)
- QVERIFY(tcpSocket->waitForDisconnected(-1));
- continue;
- }
- QCOMPARE(tcpSocket->localAddress(), QHostAddress(QHostAddress::LocalHost));
- }
- delete tcpSocket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::zeroAndMinusOneReturns()
-{
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 80);
- socket->write("GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n");
- QVERIFY(socket->waitForReadyRead(15000));
-
- char c[16];
- QVERIFY(socket->getChar(c));
- QCOMPARE(socket->read(c, 16), qint64(16));
- QVERIFY(socket->readLine(c, 16) > 0);
- QVERIFY(!socket->readAll().isEmpty());
-
- // the last operation emptied the read buffer
- // all read operations from this point on should fail
- // with return 0 because the socket is still open
- QVERIFY(socket->readAll().isEmpty());
- QCOMPARE(socket->read(c, 16), qint64(0));
- QCOMPARE(socket->readLine(c, 16), qint64(0));
- QVERIFY(!socket->getChar(c));
-
- socket->write("GET / HTTP/1.0\r\n\r\n");
- QVERIFY(socket->waitForDisconnected(15000));
- QCOMPARE(socket->error(), QAbstractSocket::RemoteHostClosedError);
-
- QCOMPARE(socket->write("BLUBBER"), qint64(-1));
- QVERIFY(socket->getChar(c));
- QCOMPARE(socket->read(c, 16), qint64(16));
- QVERIFY(socket->readLine(c, 16) > 0);
- QVERIFY(!socket->readAll().isEmpty());
-
- // the last operation emptied the read buffer
- // all read operations from this point on should fail
- // with return -1 because the socket is not connected
- QVERIFY(socket->readAll().isEmpty());
- QCOMPARE(socket->read(c, 16), qint64(-1));
- QCOMPARE(socket->readLine(c, 16), qint64(-1));
- QVERIFY(!socket->getChar(c));
- QVERIFY(!socket->putChar('a'));
-
- socket->close();
-
- // now the QIODevice is closed, which means getChar complains
- QCOMPARE(socket->write("BLUBBER"), qint64(-1));
- QCOMPARE(socket->read(c, 16), qint64(-1));
- QCOMPARE(socket->readLine(c, 16), qint64(-1));
- QVERIFY(!socket->getChar(c));
- QVERIFY(!socket->putChar('a'));
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::connectionRefused()
-{
- qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
- qRegisterMetaType<QAbstractSocket::SocketState>("QAbstractSocket::SocketState");
-
- QTcpSocket *socket = newSocket();
- QSignalSpy stateSpy(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)));
- QSignalSpy errorSpy(socket, SIGNAL(error(QAbstractSocket::SocketError)));
- connect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
- &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- socket->connectToHost(QtNetworkSettings::serverName(), 144);
-
- enterLoop(10);
- disconnect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
- &QTestEventLoop::instance(), SLOT(exitLoop()));
- QVERIFY2(!timeout(), "Network timeout");
-
- QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState);
- QCOMPARE(socket->error(), QAbstractSocket::ConnectionRefusedError);
-
- QCOMPARE(stateSpy.count(), 3);
- QCOMPARE(qVariantValue<QAbstractSocket::SocketState>(stateSpy.at(0).at(0)), QAbstractSocket::HostLookupState);
- QCOMPARE(qVariantValue<QAbstractSocket::SocketState>(stateSpy.at(1).at(0)), QAbstractSocket::ConnectingState);
- QCOMPARE(qVariantValue<QAbstractSocket::SocketState>(stateSpy.at(2).at(0)), QAbstractSocket::UnconnectedState);
- QCOMPARE(errorSpy.count(), 1);
-
- delete socket;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::suddenRemoteDisconnect_data()
-{
- QTest::addColumn<QString>("client");
- QTest::addColumn<QString>("server");
-
- QTest::newRow("Qt4 Client <-> Qt4 Server") << QString::fromLatin1("qt4client") << QString::fromLatin1("qt4server");
-}
-
-void tst_QTcpSocket::suddenRemoteDisconnect()
-{
-#if defined( Q_OS_SYMBIAN )
- QSKIP("Symbian: QProcess IO is not yet supported, fix when supported", SkipAll);
-#else
- QFETCH(QString, client);
- QFETCH(QString, server);
-
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
- QFETCH_GLOBAL(bool, ssl);
- if (ssl)
- return;
-
- // Start server
- QProcess serverProcess;
- serverProcess.setReadChannel(QProcess::StandardError);
- serverProcess.start(QString::fromLatin1("stressTest/stressTest %1").arg(server),
- QIODevice::ReadWrite | QIODevice::Text);
- while (!serverProcess.canReadLine())
- QVERIFY(serverProcess.waitForReadyRead(10000));
- QCOMPARE(serverProcess.readLine().data(), (server.toLatin1() + "\n").data());
-
- // Start client
- QProcess clientProcess;
- clientProcess.setReadChannel(QProcess::StandardError);
- clientProcess.start(QString::fromLatin1("stressTest/stressTest %1").arg(client),
- QIODevice::ReadWrite | QIODevice::Text);
- while (!clientProcess.canReadLine())
- QVERIFY(clientProcess.waitForReadyRead(10000));
- QCOMPARE(clientProcess.readLine().data(), (client.toLatin1() + "\n").data());
-
- // Let them play for a while
- qDebug("Running stress test for 5 seconds");
- QEventLoop loop;
- connect(&serverProcess, SIGNAL(finished(int)), &loop, SLOT(quit()));
- connect(&clientProcess, SIGNAL(finished(int)), &loop, SLOT(quit()));
- QTime stopWatch;
- stopWatch.start();
- QTimer::singleShot(20000, &loop, SLOT(quit()));
-
- while ((serverProcess.state() == QProcess::Running
- || clientProcess.state() == QProcess::Running) && stopWatch.elapsed() < 20000)
- loop.exec();
-
- QVERIFY(stopWatch.elapsed() < 20000);
-
- // Check that both exited normally.
- QCOMPARE(clientProcess.readAll().constData(), "SUCCESS\n");
- QCOMPARE(serverProcess.readAll().constData(), "SUCCESS\n");
-#endif
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::connectToMultiIP()
-{
- QSKIP("TODO: setup DNS in the new network", SkipAll);
-
-#if defined(Q_OS_VXWORKS)
- QSKIP("VxSim in standard config doesn't even run a DNS resolver", SkipAll);
-#else
- QFETCH_GLOBAL(bool, ssl);
- if (ssl)
- return;
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- QSKIP("This test takes too long if we also add the proxies.", SkipSingle);
-
- qDebug("Please wait, this test can take a while...");
-
- QTcpSocket *socket = newSocket();
- // rationale: this domain resolves to 3 A-records, 2 of them are
- // invalid. QTcpSocket should never spend more than 30 seconds per IP, and
- // 30s*2 = 60s.
- QTime stopWatch;
- stopWatch.start();
- socket->connectToHost("multi.dev.troll.no", 80);
- QVERIFY(socket->waitForConnected(60500));
- QVERIFY(stopWatch.elapsed() < 70000);
- socket->abort();
-
- stopWatch.restart();
- socket->connectToHost("multi.dev.troll.no", 81);
- QVERIFY(!socket->waitForConnected(2000));
- QVERIFY(stopWatch.elapsed() < 2000);
- QCOMPARE(socket->error(), QAbstractSocket::SocketTimeoutError);
-
- delete socket;
-#endif
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpSocket::moveToThread0()
-{
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType & AuthMask)
- return;
-
- {
- // Case 1: Moved after connecting, before waiting for connection.
- QTcpSocket *socket = newSocket();;
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- socket->moveToThread(0);
- QVERIFY(socket->waitForConnected(5000));
- socket->write("XXX LOGOUT\r\n");
- QVERIFY(socket->waitForBytesWritten(5000));
- QVERIFY(socket->waitForDisconnected());
- delete socket;
- }
- {
- // Case 2: Moved before connecting
- QTcpSocket *socket = newSocket();
- socket->moveToThread(0);
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->waitForConnected(5000));
- socket->write("XXX LOGOUT\r\n");
- QVERIFY(socket->waitForBytesWritten(5000));
- QVERIFY(socket->waitForDisconnected());
- delete socket;
- }
- {
- // Case 3: Moved after writing, while waiting for bytes to be written.
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->waitForConnected(5000));
- socket->write("XXX LOGOUT\r\n");
- socket->moveToThread(0);
- QVERIFY(socket->waitForBytesWritten(5000));
- QVERIFY(socket->waitForDisconnected());
- delete socket;
- }
- {
- // Case 4: Moved after writing, while waiting for response.
- QTcpSocket *socket = newSocket();
- socket->connectToHost(QtNetworkSettings::serverName(), 143);
- QVERIFY(socket->waitForConnected(5000));
- socket->write("XXX LOGOUT\r\n");
- QVERIFY(socket->waitForBytesWritten(5000));
- socket->moveToThread(0);
- QVERIFY(socket->waitForDisconnected());
- delete socket;
- }
-}
-
-void tst_QTcpSocket::increaseReadBufferSize()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return; //proxy not useful for localhost test case
- QTcpServer server;
- QTcpSocket *active = newSocket();
- connect(active, SIGNAL(readyRead()), SLOT(exitLoopSlot()));
-
- // connect two sockets to each other:
- QVERIFY(server.listen(QHostAddress::LocalHost));
- active->connectToHost("127.0.0.1", server.serverPort());
- QVERIFY(active->waitForConnected(5000));
- QVERIFY(server.waitForNewConnection(5000));
-
- QTcpSocket *passive = server.nextPendingConnection();
- QVERIFY(passive);
-
- // now write 512 bytes of data on one end
- QByteArray data(512, 'a');
- passive->write(data);
- QVERIFY2(passive->waitForBytesWritten(5000), "Network timeout");
-
- // set the read buffer size to less than what was written and iterate:
- active->setReadBufferSize(256);
- enterLoop(10);
- QVERIFY2(!timeout(), "Network timeout");
- QCOMPARE(active->bytesAvailable(), active->readBufferSize());
-
- // increase the buffer size and iterate again:
- active->setReadBufferSize(384);
- enterLoop(10);
- QVERIFY2(!timeout(), "Network timeout");
- QCOMPARE(active->bytesAvailable(), active->readBufferSize());
-
- // once more, but now it should read everything there was to read
- active->setReadBufferSize(1024);
- enterLoop(10);
- QVERIFY2(!timeout(), "Network timeout");
- QCOMPARE(active->bytesAvailable(), qint64(data.size()));
-
- // drain it and compare
- QCOMPARE(active->readAll(), data);
-
- // now one more test by setting the buffer size to unlimited:
- passive->write(data);
- QVERIFY2(passive->waitForBytesWritten(5000), "Network timeout");
- active->setReadBufferSize(256);
- enterLoop(10);
- QVERIFY2(!timeout(), "Network timeout");
- QCOMPARE(active->bytesAvailable(), active->readBufferSize());
- active->setReadBufferSize(0);
- enterLoop(10);
- QVERIFY2(!timeout(), "Network timeout");
- QCOMPARE(active->bytesAvailable(), qint64(data.size()));
- QCOMPARE(active->readAll(), data);
-
- delete active;
-}
-
-void tst_QTcpSocket::taskQtBug5799ConnectionErrorWaitForConnected()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- // check that we get a proper error connecting to port 12346
- // use waitForConnected, e.g. this should use a synchronous select() on the OS level
-
- QTcpSocket socket;
- socket.connectToHost(QtNetworkSettings::serverName(), 12346);
- QTime timer;
- timer.start();
- socket.waitForConnected(10000);
- QVERIFY2(timer.elapsed() < 9900, "Connection to closed port timed out instead of refusing, something is wrong");
- QVERIFY2(socket.state() == QAbstractSocket::UnconnectedState, "Socket connected unexpectedly!");
- QVERIFY2(socket.error() == QAbstractSocket::ConnectionRefusedError,
- QString("Could not reach server: %1").arg(socket.errorString()).toLocal8Bit());
-}
-
-void tst_QTcpSocket::taskQtBug5799ConnectionErrorEventLoop()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- // check that we get a proper error connecting to port 12346
- // This testcase uses an event loop
- QTcpSocket socket;
- connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- socket.connectToHost(QtNetworkSettings::serverName(), 12346);
-
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY2(!QTestEventLoop::instance().timeout(), "Connection to closed port timed out instead of refusing, something is wrong");
- QVERIFY2(socket.state() == QAbstractSocket::UnconnectedState, "Socket connected unexpectedly!");
- QVERIFY2(socket.error() == QAbstractSocket::ConnectionRefusedError,
- QString("Could not reach server: %1").arg(socket.errorString()).toLocal8Bit());
-}
-
-void tst_QTcpSocket::taskQtBug7054TimeoutErrorResetting()
-{
- QTcpSocket *socket = newSocket();
-
- socket->connectToHost(QtNetworkSettings::serverName(), 443);
- QVERIFY(socket->waitForConnected(5*1000));
- QVERIFY(socket->error() == QAbstractSocket::UnknownSocketError);
-
- // We connected to the HTTPS port. Wait two seconds to receive data. We will receive
- // nothing because we would need to start the SSL handshake
- QVERIFY(!socket->waitForReadyRead(2*1000));
- QVERIFY(socket->error() == QAbstractSocket::SocketTimeoutError);
-
- // Now write some crap to make the server disconnect us. 4 lines are enough.
- socket->write("a\r\nb\r\nc\r\nd\r\n");
- socket->waitForBytesWritten(2*1000);
-
- // we try to waitForReadyRead another time, but this time instead of a timeout we
- // should get a better error since the server disconnected us
- QVERIFY(!socket->waitForReadyRead(2*1000));
- // It must NOT be the SocketTimeoutError that had been set before
- QVERIFY(socket->error() == QAbstractSocket::RemoteHostClosedError);
-}
-
-void tst_QTcpSocket::invalidProxy_data()
-{
- QTest::addColumn<int>("type");
- QTest::addColumn<QString>("host");
- QTest::addColumn<int>("port");
- QTest::addColumn<bool>("failsAtConnect");
- QTest::addColumn<int>("expectedError");
-
- QString fluke = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString();
- QTest::newRow("ftp-proxy") << int(QNetworkProxy::FtpCachingProxy) << fluke << 21 << true
- << int(QAbstractSocket::UnsupportedSocketOperationError);
- QTest::newRow("http-caching-proxy") << int(QNetworkProxy::HttpCachingProxy) << fluke << 3128 << true
- << int(QAbstractSocket::UnsupportedSocketOperationError);
- QTest::newRow("no-such-host-socks5") << int(QNetworkProxy::Socks5Proxy)
- << "this-host-will-never-exist.troll.no" << 1080 << false
- << int(QAbstractSocket::ProxyNotFoundError);
- QTest::newRow("no-such-host-http") << int(QNetworkProxy::HttpProxy)
- << "this-host-will-never-exist.troll.no" << 3128 << false
- << int(QAbstractSocket::ProxyNotFoundError);
-#if !defined(Q_OS_SYMBIAN)
- QTest::newRow("http-on-socks5") << int(QNetworkProxy::HttpProxy) << fluke << 1080 << false
- << int(QAbstractSocket::ProxyConnectionClosedError);
- QTest::newRow("socks5-on-http") << int(QNetworkProxy::Socks5Proxy) << fluke << 3128 << false
- << int(QAbstractSocket::SocketTimeoutError);
-#endif
-}
-
-void tst_QTcpSocket::invalidProxy()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QFETCH(int, type);
- QFETCH(QString, host);
- QFETCH(int, port);
- QFETCH(bool, failsAtConnect);
- QNetworkProxy::ProxyType proxyType = QNetworkProxy::ProxyType(type);
- QNetworkProxy proxy(proxyType, host, port);
-
- QTcpSocket *socket = newSocket();
- socket->setProxy(proxy);
- socket->connectToHost(QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString(), 80);
-
- if (failsAtConnect) {
- QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState);
- } else {
- QCOMPARE(socket->state(), QAbstractSocket::ConnectingState);
- QVERIFY(!socket->waitForConnected(5000));
- }
- QVERIFY(!socket->errorString().isEmpty());
-
- // note: the following test is not a hard failure.
- // Sometimes, error codes change for the better
- QTEST(int(socket->error()), "expectedError");
-
- delete socket;
-}
-
-// copied from tst_qnetworkreply.cpp
-class MyProxyFactory: public QNetworkProxyFactory
-{
-public:
- int callCount;
- QList<QNetworkProxy> toReturn;
- QNetworkProxyQuery lastQuery;
- inline MyProxyFactory() { clear(); }
-
- inline void clear()
- {
- callCount = 0;
- toReturn = QList<QNetworkProxy>() << QNetworkProxy::DefaultProxy;
- lastQuery = QNetworkProxyQuery();
- }
-
- virtual QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query)
- {
- lastQuery = query;
- ++callCount;
- return toReturn;
- }
-};
-
-void tst_QTcpSocket::proxyFactory_data()
-{
- QTest::addColumn<QList<QNetworkProxy> >("proxyList");
- QTest::addColumn<QNetworkProxy>("proxyUsed");
- QTest::addColumn<bool>("failsAtConnect");
- QTest::addColumn<int>("expectedError");
-
- QList<QNetworkProxy> proxyList;
-
- // tests that do connect
-
- proxyList << QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3129);
- QTest::newRow("http")
- << proxyList << proxyList.at(0)
- << false << int(QAbstractSocket::UnknownSocketError);
-
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
- QTest::newRow("socks5")
- << proxyList << proxyList.at(0)
- << false << int(QAbstractSocket::UnknownSocketError);
-
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
- << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
- QTest::newRow("cachinghttp+socks5")
- << proxyList << proxyList.at(1)
- << false << int(QAbstractSocket::UnknownSocketError);
-
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
- << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129)
- << QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081);
- QTest::newRow("ftp+cachinghttp+socks5")
- << proxyList << proxyList.at(2)
- << false << int(QAbstractSocket::UnknownSocketError);
-
- // tests that fail to connect
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
- QTest::newRow("cachinghttp")
- << proxyList << QNetworkProxy()
- << true << int(QAbstractSocket::UnsupportedSocketOperationError);
-
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121);
- QTest::newRow("ftp")
- << proxyList << QNetworkProxy()
- << true << int(QAbstractSocket::UnsupportedSocketOperationError);
-
- proxyList.clear();
- proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::serverName(), 2121)
- << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
- QTest::newRow("ftp+cachinghttp")
- << proxyList << QNetworkProxy()
- << true << int(QAbstractSocket::UnsupportedSocketOperationError);
-}
-
-void tst_QTcpSocket::proxyFactory()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QFETCH(QList<QNetworkProxy>, proxyList);
- QFETCH(QNetworkProxy, proxyUsed);
- QFETCH(bool, failsAtConnect);
-
- MyProxyFactory *factory = new MyProxyFactory;
- factory->toReturn = proxyList;
- QNetworkProxyFactory::setApplicationProxyFactory(factory);
-
- QTcpSocket *socket = newSocket();
- QString host = QtNetworkSettings::serverName();
- socket->connectToHost(host, 80);
-
- // Verify that the factory was called properly
- QCOMPARE(factory->callCount, 1);
- QCOMPARE(factory->lastQuery, QNetworkProxyQuery(host, 80));
-
- if (failsAtConnect) {
- QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState);
- } else {
- QCOMPARE(socket->state(), QAbstractSocket::ConnectingState);
- QVERIFY(socket->waitForConnected(5000));
- QCOMPARE(proxyAuthCalled, 1);
- }
- QVERIFY(!socket->errorString().isEmpty());
-
- // note: the following test is not a hard failure.
- // Sometimes, error codes change for the better
- QTEST(int(socket->error()), "expectedError");
-
- delete socket;
-}
-
-// there is a similar test inside tst_qtcpserver that uses the event loop instead
-void tst_QTcpSocket::qtbug14268_peek()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- SocketPair socketPair;
- QVERIFY(socketPair.create());
- QTcpSocket *outgoing = socketPair.endPoints[0];
- QTcpSocket *incoming = socketPair.endPoints[1];
-
- QVERIFY(incoming->state() == QTcpSocket::ConnectedState);
- QVERIFY(outgoing->state() == QTcpSocket::ConnectedState);
-
- outgoing->write("abc\n");
- QVERIFY(outgoing->waitForBytesWritten(2000));
- QVERIFY(incoming->waitForReadyRead(2000));
- QVERIFY(incoming->peek(128*1024) == QByteArray("abc\n"));
-
- outgoing->write("def\n");
- QVERIFY(outgoing->waitForBytesWritten(2000));
- QVERIFY(incoming->waitForReadyRead(2000));
- QVERIFY(incoming->peek(128*1024) == QByteArray("abc\ndef\n"));
-
- outgoing->write("ghi\n");
- QVERIFY(outgoing->waitForBytesWritten(2000));
- QVERIFY(incoming->waitForReadyRead(2000));
- QVERIFY(incoming->peek(128*1024) == QByteArray("abc\ndef\nghi\n"));
-
- QVERIFY(incoming->read(128*1024) == QByteArray("abc\ndef\nghi\n"));
-}
-
-
-
-QTEST_MAIN(tst_QTcpSocket)
-#include "tst_qtcpsocket.moc"
diff --git a/tests/auto/qtessellator/.gitignore b/tests/auto/qtessellator/.gitignore
deleted file mode 100644
index 99f21607d8..0000000000
--- a/tests/auto/qtessellator/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-tst_qtessellator
diff --git a/tests/auto/qtessellator/XrenderFake.h b/tests/auto/qtessellator/XrenderFake.h
deleted file mode 100644
index adc6feb28b..0000000000
--- a/tests/auto/qtessellator/XrenderFake.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-/**
- These are just defines we need to compile this across platforms
-**/
-/*
- *
- * Copyright © 2000 SuSE, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of SuSE not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. SuSE makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Keith Packard, SuSE, Inc.
- */
-
-#ifndef _XRENDER_FAKE_H_
-#define _XRENDER_FAKE_H_
-
-#ifndef _XRENDER_H_
-typedef double XDouble;
-
-typedef struct _XPointDouble {
- XDouble x, y;
-} XPointDouble;
-
-#define XDoubleToFixed(f) ((XFixed) ((f) * 65536))
-#define XFixedToDouble(f) (((XDouble) (f)) / 65536)
-
-typedef int XFixed;
-
-typedef struct _XPointFixed {
- XFixed x, y;
-} XPointFixed;
-
-typedef struct _XLineFixed {
- XPointFixed p1, p2;
-} XLineFixed;
-
-typedef struct _XTriangle {
- XPointFixed p1, p2, p3;
-} XTriangle;
-
-typedef struct _XTrapezoid {
- XFixed top, bottom;
- XLineFixed left, right;
-} XTrapezoid;
-
-typedef struct _XSpanFix {
- XFixed left, right, y;
-} XSpanFix;
-
-typedef struct _XTrap {
- XSpanFix top, bottom;
-} XTrap;
-
-#endif
-
-#endif /* _XRENDER_H_ */
diff --git a/tests/auto/qtessellator/arc.cpp b/tests/auto/qtessellator/arc.cpp
deleted file mode 100644
index 64fe0e5199..0000000000
--- a/tests/auto/qtessellator/arc.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "arc.h"
-
-#include "dataparser.h"
-#include <QString>
-
-FullData arcData()
-{
- return parseFile(":/arc.data");
-}
diff --git a/tests/auto/qtessellator/arc.data b/tests/auto/qtessellator/arc.data
deleted file mode 100644
index f541372f10..0000000000
--- a/tests/auto/qtessellator/arc.data
+++ /dev/null
@@ -1,2 +0,0 @@
-330.399757,524.281800, 478.120912,550.329025, 477.831298,550.531815, 478.810211,541.885349, 478.599541,533.099490, 478.834287,533.328092, 330.341973,524.777589, 330.399757,524.281800, 330.370717,524.278415, 478.863031,532.828919, 479.097777,533.057521, 479.308667,541.907694, 478.323702,550.618639, 478.034088,550.821429, 330.312933,524.774204, 330.370717,524.278415, 330.399757,524.281800, 330.340478,524.278506, 475.092081,515.072484, 474.871052,515.401854, 472.271033,508.556408, 469.166670,501.975570, 465.531259,495.623207, 461.338095,489.463185, 456.560474,483.459373, 451.171691,477.575636, 438.453817,466.023860, 438.731065,466.049958, 330.475509,524.747774, 330.340478,524.278506, 330.399757,524.281800, 330.237181,524.308229, 438.492737,465.610413, 438.769984,465.636512, 451.529578,477.230250, 456.941391,483.142024, 461.742023,489.176805, 465.957079,495.369400, 469.612164,501.754612, 472.732885,508.367246, 475.344846,515.242105, 475.123817,515.571476, 330.372213,524.777498, 330.237181,524.308229, 330.399757,524.281800, 330.198654,524.334009, 419.097609,452.070769, 419.126347,452.478938, 406.609897,445.517586, 393.734425,439.489615, 380.499126,434.394819, 366.903191,430.232997, 352.945816,427.003943, 338.626193,424.707455, 323.943517,423.343328, 308.896980,422.911359, 309.141051,422.609824, 330.600976,524.476466, 330.198654,524.334009, 330.399757,524.281800, 330.111715,524.579537, 308.651790,422.712895, 308.895862,422.411361, 323.970137,422.844875, 338.685103,424.213480, 353.039954,426.516970, 367.033883,429.755143, 380.666084,433.927795, 393.935751,439.034722, 406.842076,445.075720, 419.384253,452.050587, 419.412991,452.458756, 330.514037,524.721995, 330.111715,524.579537, 330.399757,524.281800, 330.129715,524.633543, 283.437924,424.371616, 283.696186,424.514066, 274.149920,425.955307, 264.995958,427.789229, 256.246650,430.007574, 247.914348,432.602085, 240.011405,435.564508, 232.550171,438.886583, 225.542998,442.560055, 219.002238,446.576668, 212.940243,450.928163, 207.369363,455.606286, 202.301952,460.602778, 197.750359,465.909384, 193.726937,471.517846, 190.244038,477.419909, 187.314013,483.607314, 184.949214,490.071807, 184.768427,489.753472, 330.414019,524.284745, 330.129715,524.633543, 330.399757,524.281800, 330.298671,524.771258, 184.653079,490.239985, 184.472293,489.921650, 186.849209,483.425660, 189.795371,477.207106, 193.297958,471.274452, 197.344150,465.636164, 201.921125,460.300704, 207.016064,455.276537, 212.616146,450.572127, 218.708551,446.195939, 225.280457,442.156435, 232.319044,438.462081, 239.811492,435.121341, 247.744980,432.142678, 256.106687,429.534556, 264.883794,427.305441, 274.063479,425.463796, 283.632922,424.018084, 283.891183,424.160534, 330.582975,524.422461, 330.298671,524.771258, 330.399757,524.281800, 330.602547,524.571414, 313.237730,623.052184, 312.948116,623.254974, 297.919322,620.079380, 283.498874,615.993956, 269.752665,611.061508, 256.746589,605.344843, 244.546537,598.906766, 233.218404,591.810084, 222.828081,584.117603, 213.441462,575.892130, 205.124439,567.196470, 197.942906,558.093430, 191.962756,548.645817, 187.249880,538.916436, 183.870173,528.968094, 181.889527,518.863598, 181.373834,508.665752, 182.388989,498.437365, 182.678603,498.234575, 330.399757,524.281800, 330.602547,524.571414, 330.399757,524.281800, 473.399671,549.750400, 470.969436,559.210379, 467.157740,568.141238, 462.045076,576.508539, 455.711937,584.277845, 448.238814,591.414720, 439.706200,597.884727, 430.194588,603.653429, 419.784468,608.686389, 408.556335,612.949170, 396.590680,616.407336, 383.967995,619.026449, 370.768773,620.772073, 357.073506,621.609771, 342.962685,621.505106, 328.516805,620.423642, 313.816356,618.330940, 299.286707,615.269587, 285.342137,611.345049, 272.046506,606.617217, 259.463674,601.145981, 247.657501,594.991231, 236.691847,588.212857, 226.630571,580.870749, 217.537534,573.024797, 209.476596,564.734892, 202.511616,556.060922, 196.706454,547.062779, 192.124971,537.800351, 188.831026,528.333530, 186.888479,518.722205, 186.361190,509.026267, 187.313019,499.305604, 189.743255,489.845625, 193.554950,480.914766, 198.667614,472.547465, 205.000754,464.778159, 212.473876,457.641284, 221.006490,451.171277, 230.518103,445.402575, 240.928222,440.369615, 252.156355,436.106834, 264.122010,432.648668, 276.744695,430.029555, 289.943918,428.283931, 303.639185,427.446233, 317.750005,427.550898, 332.195885,428.632362, 346.896334,430.725063, 361.425983,433.786417, 375.370553,437.710955, 388.666184,442.438787, 401.249016,447.910023, 413.055189,454.064773, 424.020844,460.843147, 434.082119,468.185255, 443.175156,476.031206, 451.236095,484.321112, 458.201075,492.995082, 464.006236,501.993225, 468.587719,511.255653, 471.881665,520.722474, 473.824212,530.333799, 474.351500,540.029737, 473.399671,549.750400, 330.399757,524.281800, 472.907267,549.663576, 473.854306,539.992980, 473.329738,530.347191, 471.396677,520.785684, 468.118232,511.367936, 463.557515,502.153423, 457.777638,493.201621, 450.841711,484.572006, 442.812847,476.324055, 433.754155,468.517243, 423.728748,461.211047, 412.799737,454.464943, 401.030232,448.338407, 388.483346,442.890916, 375.222190,438.181944, 361.309874,434.270969, 346.809510,431.217467, 332.139266,429.127404, 317.728333,428.044226, 303.656359,427.933629, 290.002991,428.761309, 276.847876,430.492962, 264.270661,433.094284, 252.350994,436.530972, 241.168522,440.768720, 230.802891,445.773225, 221.333750,451.510184, 212.840745,457.945292, 205.403525,465.044245, 199.101735,472.772739, 194.015023,481.096470, 190.223037,489.981135, 187.805423,499.392428, 186.858385,509.063024, 187.382952,518.708813, 189.316014,528.270320, 192.594458,537.688068, 197.155175,546.902581, 202.935052,555.854383, 209.870979,564.483998, 217.899844,572.731949, 226.958535,580.538761, 236.983942,587.844957, 247.912954,594.591061, 259.682458,600.717597, 272.229344,606.165088, 285.490501,610.874060, 299.402817,614.785034, 313.903180,617.838537, 328.573424,619.928600, 342.984357,621.011778, 357.056331,621.122375, 370.709699,620.294695, 383.864814,618.563042, 396.442029,615.961720, 408.361696,612.525032, 419.544169,608.287284, 429.909799,603.282779, 439.378940,597.545820, 447.871945,591.110712, 455.309166,584.011759, 461.610956,576.283265, 466.697667,567.959534, 470.489654,559.074869, 472.907267,549.663576, 330.399757,524.281800, 330.454707,524.298165, 454.667822,577.456961, 454.762318,577.845876, 445.497902,587.443966, 440.285366,591.692799, 434.641502,595.603281, 421.926464,602.494557, 407.086134,608.288530, 406.823265,608.220270, 330.172154,524.697039, 330.454707,524.298165, 330.399757,524.281800, 330.540537,524.358965, 407.191648,607.882196, 406.928779,607.813936, 421.715525,602.044127, 434.366600,595.191446, 439.978360,591.303580, 445.160720,587.078457, 454.376603,577.527719, 454.471098,577.916634, 330.257983,524.757839, 330.540537,524.358965, 330.399757,524.281800, 330.568526,524.395792, 385.970533,613.309333, 385.803321,613.687465, 372.603353,615.647129, 359.376368,616.703732, 346.123165,616.857358, 332.844541,616.108092, 319.541292,614.456018, 306.214217,611.901220, 292.864113,608.443782, 279.491776,604.083789, 279.365802,603.713738, 330.145795,524.393211, 330.568526,524.395792, 330.399757,524.281800, 330.566895,524.662793, 279.786902,603.983321, 279.660927,603.613270, 293.007562,607.965618, 306.326866,611.416496, 319.619636,613.965989, 332.886669,615.614181, 346.128763,616.361156, 359.346715,616.206998, 372.541322,615.151791, 385.713383,613.195620, 385.546171,613.573752, 330.144165,524.660212, 330.566895,524.662793, 330.399757,524.281800, 330.312933,524.774204, 182.591778,498.726979, 182.881392,498.524189, 181.870979,508.702932, 182.383959,518.850950, 184.355179,528.905860, 187.719481,538.805277, 192.411711,548.486821, 198.366713,557.888107, 205.519330,566.946753, 213.804409,575.600375, 223.156792,583.786592, 233.511325,591.443019, 244.802851,598.507275, 256.966215,604.916975, 269.936262,610.609738, 283.647836,615.523180, 298.035780,619.594918, 313.034940,622.762570, 312.745326,622.965360, 330.110143,524.484590, 330.312933,524.774204, 330.399757,524.281800,
-
diff --git a/tests/auto/qtessellator/arc.h b/tests/auto/qtessellator/arc.h
deleted file mode 100644
index 43492bbef6..0000000000
--- a/tests/auto/qtessellator/arc.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef ARC_H
-#define ARC_H
-
-#include "sample_data.h"
-
-FullData arcData();
-
-#endif
diff --git a/tests/auto/qtessellator/datafiles.qrc b/tests/auto/qtessellator/datafiles.qrc
deleted file mode 100644
index bb0ed3766d..0000000000
--- a/tests/auto/qtessellator/datafiles.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource prefix="/">
- <file>simple.data</file>
- <file>arc.data</file>
-</qresource>
-</RCC>
diff --git a/tests/auto/qtessellator/dataparser.cpp b/tests/auto/qtessellator/dataparser.cpp
deleted file mode 100644
index 8ad7ae881f..0000000000
--- a/tests/auto/qtessellator/dataparser.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "dataparser.h"
-#include <QString>
-#include <QVector>
-#include <QFile>
-#include <QTextStream>
-
-#include <QtDebug>
-
-static QList<qreal> parseNumbersList(QByteArray::const_iterator &itr)
-{
- QList<qreal> points;
- QByteArray temp;
- while ((*itr) == ' ')
- ++itr;
- while (((*itr) >= '0' && (*itr) <= '9') ||
- (*itr) == '-' || (*itr) == '+') {
- temp = QByteArray();
-
- if ((*itr) == '-')
- temp += *itr++;
- else if ((*itr) == '+')
- temp += *itr++;
- while ((*itr) >= '0' && (*itr) <= '9')
- temp += *itr++;
- if ((*itr) == '.')
- temp += *itr++;
- while ((*itr) >= '0' && (*itr) <= '9')
- temp += *itr++;
- if (( *itr) == 'e') {
- temp += *itr++;
- if ((*itr) == '-' ||
- (*itr) == '+')
- temp += *itr++;
- }
- while ((*itr) >= '0' && (*itr) <= '9')
- temp += *itr++;
- while ((*itr) == ' ')
- ++itr;
- if ((*itr) == ',')
- ++itr;
- points.append(temp.toDouble());
- //eat the rest of space
- while ((*itr) == ' ')
- ++itr;
- }
-
- return points;
-}
-
-static QList<QPointF> parsePoints(const QByteArray &line)
-{
- QList<QPointF> res;
-
- QByteArray::const_iterator it = line.constBegin();
- if (*it == ',')
- ++it;
-
- QList<qreal> nums = parseNumbersList(it);
- QList<qreal>::const_iterator nitr;
- for (nitr = nums.begin(); nitr != nums.end(); ++nitr) {
- qreal x = *nitr;
- ++nitr;
- if (nitr == nums.end()) {
- qWarning() << "parsePoints: Even number of co-ordinates required, odd number found: skipping last point";
- break;
- }
- qreal y = *nitr;
- res.append(QPointF(x, y));
- }
-
- return res;
-}
-
-QList< QVector<QPointF> > parseData(const QByteArray &contents)
-{
- QList<QByteArray> lines = contents.split('\n');
- QList<QByteArray>::const_iterator itr;
-
- QList< QVector<QPointF> > res;
- QVector<QPointF> current;
-
- for (itr = lines.begin(); itr != lines.end(); ++itr) {
- QByteArray line = (*itr).trimmed();
- if (line.isEmpty() || line.startsWith('/')) {
- if (!current.isEmpty()) {
- res.append(current);
- current = QVector<QPointF>();
- }
- continue;
- } else {
- QList<QPointF> lst = parsePoints(line);
- current << lst.toVector();
- }
- }
- return res;
-}
-
-QList< QVector<QPointF> > parseFile(const QString &fileName)
-{
- QList< QVector<QPointF> > res;
- QFile file(fileName);
-
- if (!file.open(QIODevice::ReadOnly)) {
- qDebug()<<"couldn't open "<<fileName;
- return res;
- }
-
- QVector<QPointF> current;
-
- while (!file.atEnd()) {
- QByteArray line = file.readLine().trimmed();
- if (line.isEmpty() || line.startsWith('/')) {
- if (!current.isEmpty()) {
- res.append(current);
- current = QVector<QPointF>();
- }
- continue;
- } else {
- QList<QPointF> lst = parsePoints(line);
- current << lst.toVector();
- }
- }
-
- return res;
-}
diff --git a/tests/auto/qtessellator/dataparser.h b/tests/auto/qtessellator/dataparser.h
deleted file mode 100644
index 33b920ee73..0000000000
--- a/tests/auto/qtessellator/dataparser.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef DATAPARSER_H
-#define DATAPARSER_H
-
-#include <QList>
-#include <QVector>
-#include <QPointF>
-
-QList< QVector<QPointF> > parseData(const QByteArray &contents);
-QList< QVector<QPointF> > parseFile(const QString &fileName);
-
-#endif
diff --git a/tests/auto/qtessellator/oldtessellator.cpp b/tests/auto/qtessellator/oldtessellator.cpp
deleted file mode 100644
index fd39d20d94..0000000000
--- a/tests/auto/qtessellator/oldtessellator.cpp
+++ /dev/null
@@ -1,435 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "oldtessellator.h"
-#include <QPointF>
-#include <QVector>
-#include <QList>
-#include <QVariant>
-#include <QVarLengthArray>
-#include <qdebug.h>
-
-#include "limits.h"
-#include "utils.h"
-
-#include "qnum.h"
-#include "XrenderFake.h"
-
-/*
- * Polygon tesselator - can probably be optimized a bit more
- */
-
-//#define QT_DEBUG_TESSELATOR
-#define FloatToXFixed(i) (int)((i) * 65536)
-#define IntToXFixed(i) ((i) << 16)
-
-//inline int qrealToXFixed(qreal f)
-//{ return f << 8; }
-
-struct QEdge {
- inline QEdge()
- {}
- inline QEdge(const QPointF &pt1,
- const QPointF &pt2)
- {
- p1.x = XDoubleToFixed(pt1.x());
- p1.y = XDoubleToFixed(pt1.y());
- p2.x = XDoubleToFixed(pt2.x());
- p2.y = XDoubleToFixed(pt2.y());
- m = (pt1.x() - pt2.x()) ? (pt1.y() - pt2.y()) / (pt1.x() - pt2.x()) : 0;
- im = m ? 1/m : 0;
- b = pt1.y() - m * pt1.x();
- vertical = p1.x == p2.x;
- horizontal = p1.y == p2.y;
- }
-
- QPointF pf1, pf2;
- XPointFixed p1, p2;
- qreal m;
- qreal im;
- qreal b;
- qreal intersection;
- signed short winding;
- bool vertical;
- bool horizontal;
-};
-
-struct QVrtx {
- typedef QList<QEdge> Edges;
- XPointFixed coords;
- Edges startingEdges;
- Edges endingEdges;
- Edges intersectingEdges;
-};
-
-struct QIntersectionPoint {
- qreal x;
- const QEdge *edge;
-};
-
-QT_BEGIN_NAMESPACE
-Q_DECLARE_TYPEINFO(QEdge, Q_PRIMITIVE_TYPE);
-Q_DECLARE_TYPEINFO(QVrtx, Q_PRIMITIVE_TYPE);
-Q_DECLARE_TYPEINFO(QIntersectionPoint, Q_PRIMITIVE_TYPE);
-QT_END_NAMESPACE
-
-
-// used by the edge point sort algorithm
-static qreal currentY = 0.f;
-
-static inline bool compareEdges(const QEdge *e1, const QEdge *e2)
-{
- return e1->p1.y < e2->p1.y;
-}
-
-static inline bool isEqual(const XPointFixed &p1, const XPointFixed &p2)
-{
- return ((p1.x == p2.x) && (p1.y == p2.y));
-}
-
-static inline bool compareIntersections(const QIntersectionPoint &i1, const QIntersectionPoint &i2)
-{
- if (qAbs(i1.x - i2.x) > 0.01) { // x != other.x in 99% of the cases
- return i1.x < i2.x;
- } else {
- qreal x1 = (i1.edge->p1.x != i1.edge->p2.x) ?
- ((currentY+1 - i1.edge->b)*i1.edge->m) : XFixedToDouble(i1.edge->p1.x);
- qreal x2 = (i2.edge->p1.x != i2.edge->p2.x) ?
- ((currentY+1 - i2.edge->b)*i2.edge->m) : XFixedToDouble(i2.edge->p1.x);
-// qDebug() << ">>>" << currentY << i1.edge << i2.edge << x1 << x2;
- return x1 < x2;
- }
-}
-
-#ifdef QT_USE_FIXED_POINT
-inline int qrealToXFixed(qreal f)
-{ return f.value() << 8; }
-#else
-#define qrealToXFixed FloatToXFixed
-#endif
-
-static XTrapezoid QT_FASTCALL toXTrapezoid(XFixed y1, XFixed y2, const QEdge &left, const QEdge &right)
-{
- XTrapezoid trap;
- trap.top = y1;
- trap.bottom = y2;
- trap.left.p1.y = left.p1.y;
- trap.left.p2.y = left.p2.y;
- trap.right.p1.y = right.p1.y;
- trap.right.p2.y = right.p2.y;
- trap.left.p1.x = left.p1.x;
- trap.left.p2.x = left.p2.x;
- trap.right.p1.x = right.p1.x;
- trap.right.p2.x = right.p2.x;
- return trap;
-}
-
-#ifdef QT_DEBUG_TESSELATOR
-static void dump_edges(const QList<const QEdge *> &et)
-{
- for (int x = 0; x < et.size(); ++x) {
- qDebug() << "edge#" << x << et.at(x) << "("
- << XFixedToDouble(et.at(x)->p1.x)
- << XFixedToDouble(et.at(x)->p1.y)
- << ") ("
- << XFixedToDouble(et.at(x)->p2.x)
- << XFixedToDouble(et.at(x)->p2.y)
- << ") b: " << et.at(x)->b << "m:" << et.at(x)->m;
- }
-}
-
-static void dump_trap(const XTrapezoid &t)
-{
- qDebug() << "trap# t=" << t.top/65536.0 << "b=" << t.bottom/65536.0 << "h="
- << XFixedToDouble(t.bottom - t.top) << "\tleft p1: ("
- << XFixedToDouble(t.left.p1.x) << ","<< XFixedToDouble(t.left.p1.y)
- << ")" << "\tleft p2: (" << XFixedToDouble(t.left.p2.x) << ","
- << XFixedToDouble(t.left.p2.y) << ")" << "\n\t\t\t\tright p1:("
- << XFixedToDouble(t.right.p1.x) << "," << XFixedToDouble(t.right.p1.y) << ")"
- << "\tright p2:(" << XFixedToDouble(t.right.p2.x) << ","
- << XFixedToDouble(t.right.p2.y) << ")";
-}
-#endif
-
-
-typedef int Q27Dot5;
-#define Q27Dot5ToDouble(i) (i/32.)
-#define FloatToQ27Dot5(i) (int)((i) * 32)
-#define IntToQ27Dot5(i) ((i) << 5)
-#define Q27Dot5ToXFixed(i) ((i) << 11)
-#define Q27Dot5Factor 32
-
-void old_tesselate_polygon(QVector<XTrapezoid> *traps, const QPointF *pg, int pgSize,
- bool winding)
-{
- QVector<QEdge> edges;
- edges.reserve(128);
- qreal ymin(INT_MAX/256);
- qreal ymax(INT_MIN/256);
-
- //painter.begin(pg, pgSize);
- if (pg[0] != pg[pgSize-1])
- qWarning() << Q_FUNC_INFO << "Malformed polygon (first and last points must be identical)";
- // generate edge table
-// qDebug() << "POINTS:";
- for (int x = 0; x < pgSize-1; ++x) {
- QEdge edge;
- QPointF p1(Q27Dot5ToDouble(FloatToQ27Dot5(pg[x].x())),
- Q27Dot5ToDouble(FloatToQ27Dot5(pg[x].y())));
- QPointF p2(Q27Dot5ToDouble(FloatToQ27Dot5(pg[x+1].x())),
- Q27Dot5ToDouble(FloatToQ27Dot5(pg[x+1].y())));
-
-// qDebug() << " "
-// << p1;
- edge.winding = p1.y() > p2.y() ? 1 : -1;
- if (edge.winding > 0)
- qSwap(p1, p2);
- edge.p1.x = XDoubleToFixed(p1.x());
- edge.p1.y = XDoubleToFixed(p1.y());
- edge.p2.x = XDoubleToFixed(p2.x());
- edge.p2.y = XDoubleToFixed(p2.y());
-
- edge.m = (p1.y() - p2.y()) / (p1.x() - p2.x()); // line derivative
- edge.b = p1.y() - edge.m * p1.x(); // intersection with y axis
- edge.m = edge.m != 0.0 ? 1.0 / edge.m : 0.0; // inverted derivative
- edges.append(edge);
- ymin = qMin(ymin, qreal(XFixedToDouble(edge.p1.y)));
- ymax = qMax(ymax, qreal(XFixedToDouble(edge.p2.y)));
- }
-
- QList<const QEdge *> et; // edge list
- for (int i = 0; i < edges.size(); ++i)
- et.append(&edges.at(i));
-
- // sort edge table by min y value
- qSort(et.begin(), et.end(), compareEdges);
-
- // eliminate shared edges
- for (int i = 0; i < et.size(); ++i) {
- for (int k = i+1; k < et.size(); ++k) {
- const QEdge *edgeI = et.at(i);
- const QEdge *edgeK = et.at(k);
- if (edgeK->p1.y > edgeI->p1.y)
- break;
- if (edgeI->winding != edgeK->winding &&
- isEqual(edgeI->p1, edgeK->p1) && isEqual(edgeI->p2, edgeK->p2)
- ) {
- et.removeAt(k);
- et.removeAt(i);
- --i;
- break;
- }
- }
- }
-
- if (ymax <= ymin)
- return;
- QList<const QEdge *> aet; // edges that intersects the current scanline
-
-// if (ymin < 0)
-// ymin = 0;
-// if (paintEventClipRegion) // don't scan more lines than we have to
-// ymax = paintEventClipRegion->boundingRect().height();
-
-#ifdef QT_DEBUG_TESSELATOR
- qDebug("==> ymin = %f, ymax = %f", ymin, ymax);
-#endif // QT_DEBUG_TESSELATOR
-
- currentY = ymin; // used by the less than op
- for (qreal y = ymin; y < ymax;) {
- // fill active edge table with edges that intersect the current line
- for (int i = 0; i < et.size(); ++i) {
- const QEdge *edge = et.at(i);
- if (edge->p1.y > XDoubleToFixed(y))
- break;
- aet.append(edge);
- et.removeAt(i);
- --i;
- }
-
- // remove processed edges from active edge table
- for (int i = 0; i < aet.size(); ++i) {
- if (aet.at(i)->p2.y <= XDoubleToFixed(y)) {
- aet.removeAt(i);
- --i;
- }
- }
- if (aet.size()%2 != 0) {
-#ifndef QT_NO_DEBUG
- qWarning("QX11PaintEngine: aet out of sync - this should not happen.");
-#endif
- return;
- }
-
- // done?
- if (!aet.size()) {
- if (!et.size()) {
- break;
- } else {
- y = currentY = XFixedToDouble(et.at(0)->p1.y);
- continue;
- }
- }
-
- // calculate the next y where we have to start a new set of trapezoids
- qreal next_y(INT_MAX/256);
- for (int i = 0; i < aet.size(); ++i) {
- const QEdge *edge = aet.at(i);
- if (XFixedToDouble(edge->p2.y) < next_y)
- next_y = XFixedToDouble(edge->p2.y);
- }
-
- if (et.size() && next_y > XFixedToDouble(et.at(0)->p1.y))
- next_y = XFixedToDouble(et.at(0)->p1.y);
-
- int aetSize = aet.size();
- for (int i = 0; i < aetSize; ++i) {
- for (int k = i+1; k < aetSize; ++k) {
- const QEdge *edgeI = aet.at(i);
- const QEdge *edgeK = aet.at(k);
- qreal m1 = edgeI->m;
- qreal b1 = edgeI->b;
- qreal m2 = edgeK->m;
- qreal b2 = edgeK->b;
-
- if (qAbs(m1 - m2) < 0.001)
- continue;
-
- // ### intersect is not calculated correctly when optimized with -O2 (gcc)
- volatile qreal intersect = 0;
- if (!qIsFinite(b1))
- intersect = (1.f / m2) * XFixedToDouble(edgeI->p1.x) + b2;
- else if (!qIsFinite(b2))
- intersect = (1.f / m1) * XFixedToDouble(edgeK->p1.x) + b1;
- else
- intersect = (b1*m1 - b2*m2) / (m1 - m2);
-
- if (intersect > y && intersect < next_y)
- next_y = intersect;
- }
- }
-
- XFixed yf, next_yf;
- yf = qrealToXFixed(y);
- next_yf = qrealToXFixed(next_y);
-
- if (yf == next_yf) {
- y = currentY = next_y;
- continue;
- }
-
-#ifdef QT_DEBUG_TESSELATOR
- qDebug("###> y = %f, next_y = %f, %d active edges", y, next_y, aet.size());
- qDebug("===> edges");
- dump_edges(et);
- qDebug("===> active edges");
- dump_edges(aet);
-#endif
- // calc intersection points
- QVarLengthArray<QIntersectionPoint> isects(aet.size()+1);
- for (int i = 0; i < isects.size()-1; ++i) {
- const QEdge *edge = aet.at(i);
- isects[i].x = (edge->p1.x != edge->p2.x) ?
- ((y - edge->b)*edge->m) : XFixedToDouble(edge->p1.x);
- isects[i].edge = edge;
- }
-
- if (isects.size()%2 != 1)
- qFatal("%s: number of intersection points must be odd", Q_FUNC_INFO);
-
- // sort intersection points
- qSort(&isects[0], &isects[isects.size()-1], compareIntersections);
-// qDebug() << "INTERSECTION_POINTS:";
-// for (int i = 0; i < isects.size(); ++i)
-// qDebug() << isects[i].edge << isects[i].x;
-
- if (winding) {
- // winding fill rule
- for (int i = 0; i < isects.size()-1;) {
- int winding = 0;
- const QEdge *left = isects[i].edge;
- const QEdge *right = 0;
- winding += isects[i].edge->winding;
- for (++i; i < isects.size()-1 && winding != 0; ++i) {
- winding += isects[i].edge->winding;
- right = isects[i].edge;
- }
- if (!left || !right)
- break;
- //painter.addTrapezoid(&toXTrapezoid(yf, next_yf, *left, *right));
- traps->append(toXTrapezoid(yf, next_yf, *left, *right));
- }
- } else {
- // odd-even fill rule
- for (int i = 0; i < isects.size()-2; i += 2) {
- //painter.addTrapezoid(&toXTrapezoid(yf, next_yf, *isects[i].edge, *isects[i+1].edge));
- traps->append(toXTrapezoid(yf, next_yf, *isects[i].edge, *isects[i+1].edge));
- }
- }
- y = currentY = next_y;
- }
-
-#ifdef QT_DEBUG_TESSELATOR
- qDebug("==> number of trapezoids: %d - edge table size: %d\n", traps->size(), et.size());
-
- for (int i = 0; i < traps->size(); ++i)
- dump_trap(traps->at(i));
-#endif
-
- // optimize by unifying trapezoids that share left/right lines
- // and have a common top/bottom edge
-// for (int i = 0; i < tps.size(); ++i) {
-// for (int k = i+1; k < tps.size(); ++k) {
-// if (i != k && tps.at(i).right == tps.at(k).right
-// && tps.at(i).left == tps.at(k).left
-// && (tps.at(i).top == tps.at(k).bottom
-// || tps.at(i).bottom == tps.at(k).top))
-// {
-// tps[i].bottom = tps.at(k).bottom;
-// tps.removeAt(k);
-// i = 0;
-// break;
-// }
-// }
-// }
- //static int i = 0;
- //QImage img = painter.end();
- //img.save(QString("res%1.png").arg(i++), "PNG");
-}
diff --git a/tests/auto/qtessellator/oldtessellator.h b/tests/auto/qtessellator/oldtessellator.h
deleted file mode 100644
index 2023dee16e..0000000000
--- a/tests/auto/qtessellator/oldtessellator.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef NEWTESSELATOR_H
-#define NEWTESSELATOR_H
-
-#include <QVector>
-#include <QPointF>
-#include "XrenderFake.h"
-
-void old_tesselate_polygon(QVector<XTrapezoid> *traps, const QPointF *pg, int pgSize,
- bool winding);
-
-
-#endif
diff --git a/tests/auto/qtessellator/qnum.h b/tests/auto/qtessellator/qnum.h
deleted file mode 100644
index 4027bc6948..0000000000
--- a/tests/auto/qtessellator/qnum.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#ifndef QNUM_H
-#define QNUM_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "QtCore/qglobal.h"
-
-static const unsigned char qt_be_inf_bytes[] = { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 };
-static const unsigned char qt_le_inf_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f };
-static inline double qtInf()
-{
- return *reinterpret_cast<const double *>(QSysInfo::ByteOrder == QSysInfo::BigEndian ? qt_be_inf_bytes : qt_le_inf_bytes);
-}
-#define Q_INFINITY (::qtInf())
-
-// Signaling NAN
-static const unsigned char qt_be_snan_bytes[] = { 0x7f, 0xf8, 0, 0, 0, 0, 0, 0 };
-static const unsigned char qt_le_snan_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf8, 0x7f };
-static inline double qtSnan()
-{
- return *reinterpret_cast<const double *>(QSysInfo::ByteOrder == QSysInfo::BigEndian ? qt_be_snan_bytes : qt_le_snan_bytes);
-}
-#define Q_SNAN (::qtSnan())
-
-// Quiet NAN
-static const unsigned char qt_be_qnan_bytes[] = { 0xff, 0xf8, 0, 0, 0, 0, 0, 0 };
-static const unsigned char qt_le_qnan_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf8, 0xff };
-static inline double qtQnan()
-{
- return *reinterpret_cast<const double *>(QSysInfo::ByteOrder == QSysInfo::BigEndian ? qt_be_qnan_bytes : qt_le_qnan_bytes);
-}
-#define Q_QNAN (::qtQnan())
-
-static inline bool qIsInf(double d)
-{
- uchar *ch = (uchar *)&d;
- if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
- return (ch[0] & 0x7f) == 0x7f && ch[1] == 0xf0;
- } else {
- return (ch[7] & 0x7f) == 0x7f && ch[6] == 0xf0;
- }
-}
-
-static inline bool qIsNaN(double d)
-{
- uchar *ch = (uchar *)&d;
- if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
- return (ch[0] & 0x7f) == 0x7f && ch[1] > 0xf0;
- } else {
- return (ch[7] & 0x7f) == 0x7f && ch[6] > 0xf0;
- }
-}
-
-static inline bool qIsFinite(double d)
-{
- uchar *ch = (uchar *)&d;
- if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
- return (ch[0] & 0x7f) != 0x7f || (ch[1] & 0xf0) != 0xf0;
- } else {
- return (ch[7] & 0x7f) != 0x7f || (ch[6] & 0xf0) != 0xf0;
- }
-}
-
-static inline bool qIsInf(float d)
-{
- uchar *ch = (uchar *)&d;
- if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
- return (ch[0] & 0x7f) == 0x7f && ch[1] == 0x80;
- } else {
- return (ch[3] & 0x7f) == 0x7f && ch[2] == 0x80;
- }
-}
-
-static inline bool qIsNaN(float d)
-{
- uchar *ch = (uchar *)&d;
- if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
- return (ch[0] & 0x7f) == 0x7f && ch[1] > 0x80;
- } else {
- return (ch[3] & 0x7f) == 0x7f && ch[2] > 0x80;
- }
-}
-
-static inline bool qIsFinite(float d)
-{
- uchar *ch = (uchar *)&d;
- if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
- return (ch[0] & 0x7f) != 0x7f || (ch[1] & 0x80) != 0x80;
- } else {
- return (ch[3] & 0x7f) != 0x7f || (ch[2] & 0x80) != 0x80;
- }
-}
-
-#endif // QNUMERIC_P_H
diff --git a/tests/auto/qtessellator/qtessellator.pro b/tests/auto/qtessellator/qtessellator.pro
deleted file mode 100644
index 6821d0e909..0000000000
--- a/tests/auto/qtessellator/qtessellator.pro
+++ /dev/null
@@ -1,10 +0,0 @@
-load(qttest_p4)
-
-QT += gui-private
-
-SOURCES += tst_tessellator.cpp testtessellator.cpp oldtessellator.cpp utils.cpp simple.cpp dataparser.cpp arc.cpp
-HEADERS += oldtessellator.h testtessellator.h utils.h XRenderFake.h simple.h qnum.h dataparser.h arc.h
-
-RESOURCES += datafiles.qrc
-
-
diff --git a/tests/auto/qtessellator/sample_data.h b/tests/auto/qtessellator/sample_data.h
deleted file mode 100644
index 245911aae7..0000000000
--- a/tests/auto/qtessellator/sample_data.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef SAMPLE_DATA_H
-#define SAMPLE_DATA_H
-
-#include <QVector>
-#include <QPointF>
-#include <QList>
-
-typedef QVector<QPointF> SampleData;
-typedef QList< SampleData > FullData;
-
-#endif
diff --git a/tests/auto/qtessellator/simple.cpp b/tests/auto/qtessellator/simple.cpp
deleted file mode 100644
index 1a1d279f94..0000000000
--- a/tests/auto/qtessellator/simple.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "simple.h"
-
-#include "dataparser.h"
-#include <QString>
-
-FullData simpleData()
-{
- return parseFile(":/simple.data");
-}
diff --git a/tests/auto/qtessellator/simple.data b/tests/auto/qtessellator/simple.data
deleted file mode 100644
index ab46f3969b..0000000000
--- a/tests/auto/qtessellator/simple.data
+++ /dev/null
@@ -1,195 +0,0 @@
-16.000000,6.000000, 16.000000,18.000000, 16.000000,1.000000, 16.000000,14.000000, 10.000000,17.000000, 16.000000,6.000000,
-
-10,10,16,18,18,14,21,18,25,18,25,11,15,7,15,12,13,12,10,10
-
-10,10,20,10,20,20,10,20,10,10
-
-0,0,0,10,12,10,12,0,0,0,4,2,4,6,10,6,10,2,4,2,0,0
-
-0,0,0,10,12,10,12,0,0,0,4,2,4,6,10,6,10,2,4,2,0,0,0,0,0,10,12,10,12,0,0,0,4,2,4,6,10,6,10,2,4,2,0,0
-
-10,11,22,10,12,4,16,14,20,4,10,11
-
-10,11,22,10,12,4,16,14,20,4,10,11,10,11,22,10,12,4,16,14,20,4,10,11
-
-0,0,10,10,10,0,0,10,0,0
-
-0,15,15,15,15,0,5,0,5,20,10,20,10,5,0,5,0,15
-
-0,15,15,15,15,0,5,0,5,20,10,20,10,5,0,5,0,15,0,15,15,15,15,0,5,0,5,20,10,20,10,5,0,5,0,15
-
-0,10,10,10,10,0,0,0,10,10,0,10,10,0,10,5,0,5,5,0,5,10,0,10
-
-10,16,19,8,8,8,4,4,17,14,1,1,10,16
-
-19,1,13,4,15,19,5,4,8,15,15,7,0,7,15,8,9,1,19,1
-
-15,9,18,3,14,11,4,12,10,14,7,16,15,9
-
-16,10,4,14,12,15,17,10,14,19,13,11,16,10
-
-5,19,12,8,12,12,7,19,9,14,3,18,5,19
-
-3,14,11,2,1,15,3,13,10,3,15,11,3,14
-
-8,6,8,1,12,2,0,4,4,15,10,9,8,6
-
-15,16,0,3,16,16,19,5,10,9,15,4,15,16
-
-3,19,17,14,9,8,16,6,16,7,17,6,3,19
-
-0,13,0,4,5,5,7,10,4,10,0,8,0,13
-
-4,18,5,17,19,2,0,4,8,8,10,12,4,18
-
-13,12,15,19,11,5,0,14,19,15,11,11,13,12
-
-7,11,18,8,9,7,17,7,3,7,12,1,7,11
-
-10,10,7,8,13,14,7,9,8,9,6,17,10,10
-
-13,16,7,13,19,5,8,18,1,11,7,6,13,16
-
-9,6,16,11,7,10,14,12,17,2,15,13,9,6
-
-9,11,17,17,2,14,19,15,1 12,16,15,9,11
-
-1,8,7,17,0,19,12,7,5,14,13,6,1,8
-
-11,7,13,6,8,6,7,11,7,16,13,6,11,7
-
-1,1,18,1,1,14,2,14,14,3,18,1,1,1
-
-1495,174,1965,1194,622,795,1892,1044,1618,1608,1464,1758,1495,174
-
-12.437167782336,18.332947529852,6.037403680384,0.577168781310,17.369421254843,3.538437001407,1.208027666435,3.512877216563,6.647234912962,10.036138510332,13.422909136862,2.474576039240,12.437167782336,18.332947529852
-
-5.591339580715,19.434930747375, 10.417904593050,11.852347580716, 18.050480354577,3.041639151052, 5.511732324958,17.206167224795, 4.091005269438,17.285228203982, 14.422692870721,17.285191211849, 5.591339580715,19.434930747375
-
-9.662125930190,13.671313980594, 18.663120605052,13.914435822517, 4.666417893022,0.991358347237, 5.612019170076,9.671168159693, 14.484839309007,1.828807275742, 14.513027202338,18.705772804096, 9.662125930190,13.671313980594
-
-85,54,64,169,73,28,77,104,122,113,7,90,85,54
-
-8,9,13,2,16,8,6,16,15,18,18,1,8,9
-
-1,19,1,19,16,4,12,4,17,10,9,18,1,19
-
-7,5,4,1,17,16,4,1,18,9,19,18,7,5
-
-5,2,10,7,2,15,10,7,19,7,4,18,5,2
-
-193.344000,167.079000,193.927000,223.478000,192.927000,224.489000,191.461000,224.489000,190.462000,223.517000,190.144000,214.550000,189.758000,207.495000,189.303000,202.313000,189.303000,202.314000,188.432000,196.134000,187.401000,191.208000,186.180000,187.421000,185.546000,186.021000,184.895000,184.970000,184.121000,184.112000,183.389000,183.504000,182.740000,183.226000,181.868000,183.160000,181.868000,183.160000,174.478000,183.160000,175.478000,182.160000,175.478000,365.969000,175.506000,372.881000,175.590000,378.848000,175.930000,387.984000,176.507000,393.460000,176.506000,393.454000,177.006000,395.653000,177.567000,397.365000,178.244000,398.733000,178.559000,399.226000,178.834000,399.548000,179.193000,399.834000,179.499000,400.046000,179.699000,400.114000,180.048000,400.119000,180.048000,400.119000,181.868000,400.119000,182.868000,401.119000,182.868000,407.673000,181.868000,408.673000,159.625000,408.673000,158.625000,407.673000,158.625000,401.119000,159.625000,400.119000,161.481000,400.119000,161.858000,400.113000,162.068000,400.029000,162.391000,399.766000,162.784000,399.401000,163.092000,398.979000,163.431000,398.358000,164.137000,396.643000,164.715000,394.484000,165.207000,391.744000,165.207000,391.744000,165.679000,386.379000,165.959000,377.809000,166.051000,365.969000,166.051000,182.160000,167.051000,183.160000,160.744000,183.160000,159.690000,183.204000,158.850000,183.365000,158.032000,183.688000,157.329000,184.077000,156.837000,184.522000,156.371000,185.190000,156.377000,185.181000,155.135000,188.005000,154.052000,192.134000,153.069000,197.733000,152.247000,204.835000,151.685000,213.407000,151.378000,223.505000,150.378000,224.489000,148.912000,224.489000,147.912000,223.478000,148.531000,167.079000,149.531000,166.090000,192.344000,166.090000,193.344000,167.079000,192.344000,168.090000,149.531000,168.090000,150.531000,167.100000,149.912000,223.500000,148.912000,222.489000,150.378000,222.489000,149.378000,223.472000,149.691000,213.305000,150.264000,204.608000,151.091000,197.438000,152.142000,191.648000,153.353000,187.164000,154.663000,184.149000,154.669000,184.139000,155.353000,183.276000,156.247000,182.469000,157.167000,181.884000,158.209000,181.511000,159.466000,181.255000,160.744000,181.160000,160.744000,181.160000,167.051000,181.160000,168.051000,182.160000,168.051000,365.969000,167.953000,377.887000,167.663000,386.600000,167.185000,392.042000,167.185000,392.043000,166.641000,394.941000,165.969000,397.395000,165.212000,399.268000,164.738000,400.056000,164.180000,400.787000,163.652000,401.319000,163.002000,401.697000,162.185000,401.997000,161.481000,402.119000,161.481000,402.119000,159.625000,402.119000,160.625000,401.119000,160.625000,407.673000,159.625000,406.673000,181.868000,406.673000,180.868000,407.673000,180.868000,401.119000,181.868000,402.119000,180.048000,402.119000,179.401000,402.020000,178.647000,401.777000,178.044000,401.471000,177.539000,401.029000,176.994000,400.418000,176.533000,399.769000,175.791000,398.232000,175.109000,396.207000,174.543000,393.839000,174.542000,393.833000,174.221000,391.520000,173.956000,388.260000,173.599000,378.945000,173.478000,365.969000,173.478000,182.160000,174.478000,181.160000,181.868000,181.160000,183.093000,181.365000,184.400000,181.902000,185.484000,182.650000,186.386000,183.691000,187.271000,185.083000,188.032000,186.667000,188.032000,186.667000,189.288000,190.589000,190.384000,195.766000,191.290000,202.082000,191.290000,202.083000,191.748000,207.310000,192.140000,214.448000,192.461000,223.460000,191.461000,222.489000,192.927000,222.489000,191.927000,223.499000,191.344000,167.100000,192.344000,168.090000,193.344000,167.079000
-
-13.000000,7.000000, 8.000000,15.000000, 16.000000,2.000000, 17.000000,13.000000, 5.000000,10.000000, 19.000000,17.000000, 13.000000,7.000000
-
-10.000000,6.000000, 16.000000,4.000000, 0.000000,10.000000, 14.000000,10.000000, 9.000000,5.000000, 5.000000,15.000000, 10.000000,6.000000
-
-2.000000,18.000000, 14.000000,11.000000, 2.000000,14.000000, 5.000000,19.000000, 14.000000,19.000000, 2.000000,1.000000, 2.000000,18.000000
-
-18.000000,14.000000, 18.000000,6.000000, 18.000000,18.000000, 3.000000,9.000000, 19.000000,10.000000, 3.000000,19.000000, 18.000000,14.000000
-
-0.000000,14.000000, 5.000000,11.000000, 19.000000,5.000000, 0.000000,16.000000, 12.000000,13.000000, 0.000000,14.000000, 0.000000,14.000000
-
-6.000000,9.000000, 4.000000,7.000000, 11.000000,14.000000, 4.000000,10.000000, 11.000000,8.000000, 9.000000,15.000000, 6.000000,9.000000
-
-15.000000,4.000000, 15.000000,3.000000, 11.000000,13.000000, 12.000000,4.000000, 19.000000,5.000000, 6.000000,9.000000, 15.000000,4.000000
-
-4.000000,2.000000, 11.000000,8.000000, 19.000000,19.000000, 1.000000,18.000000, 19.000000,0.000000, 15.000000,15.000000, 4.000000,2.000000
-
-7.000000,14.000000, 18.000000,6.000000, 8.000000,2.000000, 14.000000,14.000000, 4.000000,8.000000, 9.000000,11.000000, 7.000000,14.000000
-
-16.000000,8.000000, 15.000000,9.000000, 9.000000,17.000000, 9.000000,16.000000, 4.000000,3.000000, 8.000000,16.000000, 16.000000,8.000000
-
-11.000000,10.000000, 12.000000,10.000000, 11.000000,2.000000, 7.000000,4.000000, 5.000000,13.000000, 11.000000,10.000000, 11.000000,10.000000
-
-17.000000,1.000000, 2.000000,15.000000, 17.000000,17.000000, 7.000000,7.000000, 16.000000,19.000000, 3.000000,18.000000, 7.000000,0.000000, 7.000000,0.000000, 6.000000,4.000000, 2.000000,1.000000, 4.000000,2.000000, 7.000000,16.000000, 11.000000,16.000000, 7.000000,3.000000, 11.000000,16.000000, 5.000000,9.000000, 18.000000,8.000000, 4.000000,15.000000, 5.000000,11.000000, 17.000000,1.000000
-
-10.000000,8.000000, 12.000000,3.000000, 10.000000,8.000000, 10.000000,19.000000, 2.000000,8.000000, 16.000000,11.000000, 10.000000,8.000000
-
-10.000000,10.000000, 13.000000,11.000000, 18.000000,2.000000, 13.000000,11.000000, 11.000000,10.000000, 10.000000,14.000000, 10.000000,10.000000
-
-8.000000,13.000000, 8.000000,7.000000, 12.000000,19.000000, 8.000000,8.000000, 8.000000,7.000000, 8.000000,2.000000, 8.000000,13.000000
-
-//1.000000,7.000000, 12.000000,16.000000, 3.000000,4.000000, 16.000000,18.000000, 11.000000,3.000000, 16.000000,18.000000, 2.000000,4.000000, 11.000000,4.000000, 11.000000,16.000000, 1.000000,7.000000
-
-1.000000,0.000000, 18.000000,13.000000, 0.000000,4.000000, 4.000000,6.000000, 16.000000,15.000000, 4.000000,3.000000, 4.000000,16.000000, 1.000000,0.000000
-
-17.000000,17.000000, 7.000000,12.000000, 1.000000,17.000000, 8.000000,17.000000, 15.000000,15.000000, 17.000000,12.000000, 12.000000,15.000000, 5.000000,11.000000, 9.000000,13.000000, 15.000000,18.000000, 7.000000,8.000000, 17.000000,17.000000
-
-//4.000000,0.000000, 15.000000,2.000000, 1.000000,2.000000, 17.000000,9.000000, 11.000000,4.000000, 3.000000,2.000000, 4.000000,8.000000, 6.000000,12.000000, 18.000000,15.000000, 15.000000,2.000000, 4.000000,0.000000
-
-5.000000,14.000000, 7.000000,15.000000, 9.000000,15.000000, 5.000000,16.000000, 12.000000,2.000000, 7.000000,12.000000, 5.000000,11.000000, 10.000000,9.000000, 5.000000,4.000000, 11.000000,18.000000, 9.000000,8.000000, 5.000000,14.000000
-
-//1.000000,19.000000, 6.000000,5.000000, 12.000000,6.000000, 8.000000,5.000000, 6.000000,1.000000, 8.000000,5.000000, 2.000000,5.000000, 1.000000,19.000000,
-
-3.000000,18.000000, 0.000000,2.000000, 13.000000,0.000000, 1.000000,0.000000, 19.000000,19.000000, 2.000000,1.000000, 17.000000,0.000000, 3.000000,18.000000,
-
-12.000000,10.000000, 4.000000,19.000000, 10.000000,0.000000, 6.000000,19.000000, 4.000000,16.000000, 4.000000,19.000000, 0.000000,15.000000, 4.000000,16.000000, 11.000000,5.000000, 12.000000,10.000000,
-
-0.000000,2.000000, 9.000000,11.000000, 13.000000,8.000000, 8.000000,7.000000, 10.000000,15.000000, 16.000000,1.000000, 9.000000,11.000000, 8.000000,14.000000, 10.000000,11.000000, 0.000000,2.000000
-
-13.000000,11.000000, 5.000000,7.000000, 15.000000,15.000000, 0.000000,3.000000, 16.000000,17.000000, 3.000000,9.000000, 6.000000,6.000000, 5.000000,7.000000, 3.000000,6.000000, 13.000000,11.000000,
-
-6.000000,6.000000, 2.000000,5.000000, 15.000000,6.000000, 14.000000,8.000000, 10.000000,11.000000, 18.000000,3.000000, 10.000000,11.000000, 15.000000,1.000000, 15.000000,19.000000, 6.000000,6.000000,
-
-15.000000,15.000000, 14.000000,14.000000, 1.000000,19.000000, 19.000000,12.000000, 1.000000,19.000000, 16.000000,18.000000, 2.000000,17.000000, 14.000000,19.000000, 2.000000,14.000000, 15.000000,15.000000,
-
-17.000000,1.000000, 2.000000,14.000000, 19.000000,11.000000, 18.000000,11.000000, 4.000000,16.000000, 10.000000,11.000000, 8.000000,16.000000, 12.000000,12.000000, 11.000000,14.000000, 17.000000,1.000000,
-
-17.000000,4.000000, 18.000000,9.000000, 10.000000,1.000000, 18.000000,9.000000, 4.000000,12.000000, 14.000000,17.000000, 4.000000,1.000000, 5.000000,17.000000, 4.000000,3.000000, 17.000000,4.000000,
-
-6.000000,12.000000, 13.000000,1.000000, 10.000000,15.000000, 0.000000,1.000000, 12.000000,12.000000, 1.000000,2.000000, 14.000000,2.000000, 9.000000,10.000000, 10.000000,9.000000, 6.000000,12.000000,
-
-10.000000,2.000000, 1.000000,19.000000, 18.000000,10.000000, 5.000000,11.000000, 13.000000,3.000000, 16.000000,12.000000, 13.000000,2.000000, 19.000000,4.000000, 12.000000,16.000000, 10.000000,2.000000,
-
-15.000000,18.000000, 9.000000,4.000000, 17.000000,19.000000, 8.000000,2.000000, 12.000000,14.000000, 16.000000,4.000000, 17.000000,11.000000, 1.000000,13.000000, 16.000000,8.000000, 15.000000,18.000000,
-
-0.000000,1.000000, 3.000000,5.000000, 6.000000,18.000000, 8.000000,10.000000, 2.000000,9.000000, 12.000000,13.000000, 17.000000,0.000000, 3.000000,10.000000, 16.000000,1.000000, 0.000000,1.000000,
-
-2.000000,5.000000, 5.000000,12.000000, 11.000000,2.000000, 1.000000,19.000000, 6.000000,5.000000, 17.000000,1.000000, 8.000000,0.000000, 14.000000,10.000000, 2.000000,5.000000
-
-12.000000,17.000000, 14.000000,7.000000, 12.000000,17.000000, 15.000000,9.000000, 3.000000,8.000000, 15.000000,2.000000, 13.000000,13.000000, 12.000000,17.000000,
-
-16.000000,9.000000, 12.000000,17.000000, 9.000000,7.000000, 6.000000,14.000000, 10.000000,10.000000, 0.000000,18.000000, 19.000000,9.000000, 2.000000,11.000000, 16.000000,9.000000,
-
-2.000000,11.000000, 8.000000,4.000000, 5.000000,15.000000, 19.000000,7.000000, 1.000000,4.000000, 11.000000,15.000000, 6.000000,0.000000, 10.000000,13.000000, 15.000000,0.000000, 5.000000,7.000000, 2.000000,11.000000,
-
-14.000000,16.000000, 13.000000,3.000000, 13.000000,7.000000, 13.000000,4.000000, 4.000000,19.000000, 18.000000,3.000000, 3.000000,6.000000, 14.000000,16.000000
-
-1.000000,10.000000, 16.000000,11.000000, 5.000000,12.000000, 14.000000,12.000000, 1.000000,10.000000,
-
-3.000000,14.000000, 18.000000,13.000000, 0.000000,13.000000, 17.000000,15.000000, 3.000000,14.000000
-
-113.978891,188.283650, 114.049102,188.354061, 114.028390,188.311950, 140.621311,218.434785, 113.925508,188.451788, 114.028390,188.311950, 114.038094,188.325206, 107.079712,223.213808, 113.978891,188.283650
-
-149.124266,243.836328, 149.130825,243.837775, 140.462458,289.372639, 149.124266,243.836328, 174.003258,285.357827, 149.081172,244.062877, 80.895955,240.414297, 149.081172,244.062877, 149.124266,243.836328,
-
-29.389873,51.154090, 34.288345,59.861919, 29.364091,51.189091, 29.379701,51.200590, 15.480095,51.026265, 27.327001,60.472279, 29.361537,51.172254, 29.379701,51.200590, 29.389873,51.154090,
-
-23.402194,41.096844, 23.406381,41.132628, 34.465476,40.926093, 32.678424,45.608817, 23.389763,41.132654, 23.414672,41.106110, 21.719863,48.560185, 23.402194,41.096844,
-
-30.951431,53.763363, 30.939362,53.811917, 41.512607,48.598876, 25.528987,61.504482, 30.925582,53.773491, 30.940776,53.812269, 28.790798,63.563660, 30.921651,53.782489, 30.951431,53.763363,
-
-40.932299,70.331769, 33.882179,80.568702, 40.952469,70.382541, 33.906555,80.507737, 38.158710,83.200483, 40.932299,70.331769
-
-37.291393,64.307940, 47.917795,74.087993, 37.307928,64.317812, 51.927660,71.285431, 34.739208,76.059738, 37.291393,64.307940
-
-97.604218,162.191009, 81.519079,186.128039, 97.652864,162.308413, 81.609840,186.099213, 67.592573,182.092187, 91.591892,192.217346, 97.604218,162.191009
-
-135.877528,222.962402, 135.792476,222.983126, 195.753543,234.556614, 135.814790,223.162055, 135.936349,222.995801, 135.947907,223.011493, 127.815883,264.424834, 135.877528,222.962402,
-
-140.157057,229.713961, 140.069413,229.735364, 201.872134,241.630761, 140.092507,229.919758, 140.217696,229.748350, 140.229617,229.764516, 131.871019,272.449909, 140.157057,229.713961
-
-193.086469,312.646765, 108.189184,287.648923, 193.023897,312.936441, 237.949462,362.828686, 192.949279,312.891753, 266.364944,345.116804, 192.999843,312.928266, 192.913653,312.765449, 193.086469,312.646765
-
-247.422415,396.899455, 247.217314,397.163923, 247.574394,397.118778, 142.852727,414.776640, 288.712650,464.492402, 247.228121,397.184104, 135.733401,392.254819, 233.734466,471.311838, 247.203092,397.051434, 247.355072,397.270757, 247.422415,396.899455,
-
-330.399757,524.281800, 330.600976,524.476466, 323.970137,422.844875, 330.540537,524.358965, 406.928779,607.813936, 330.568526,524.395792, 359.346715,616.206998, 330.399757,524.281800,
-
-304.198844,484.203463, 173.561956,487.759775, 436.078782,489.984415, 374.610016,561.755629, 304.198844,484.203463, 354.969812,566.668108, 304.118093,484.657714, 304.198844,484.203463,
-
-216.327573,348.779345, 182.153126,401.142486, 216.158855,348.851925, 194.442338,411.748517, 216.134810,348.912273, 216.267739,349.105035, 216.327573,348.779345,
-
-40.510823,69.635522, 40.490212,69.696716, 38.684855,81.300842, 40.530783,69.685790, 47.264190,81.490170, 40.497275,69.699095, 37.801306,82.350057, 37.762746,82.375070, 40.472263,69.660535, 40.510823,69.635522
-
-/
diff --git a/tests/auto/qtessellator/simple.h b/tests/auto/qtessellator/simple.h
deleted file mode 100644
index c77c6c3748..0000000000
--- a/tests/auto/qtessellator/simple.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef SIMPLEDATA_H
-#define SIMPLEDATA_H
-
-#include "sample_data.h"
-
-FullData simpleData();
-
-#endif
diff --git a/tests/auto/qtessellator/testtessellator.cpp b/tests/auto/qtessellator/testtessellator.cpp
deleted file mode 100644
index c2af1ae780..0000000000
--- a/tests/auto/qtessellator/testtessellator.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "testtessellator.h"
-#include <private/qtessellator_p.h>
-
-#include "math.h"
-#include <QtCore/QDebug>
-
-class TestTessellator : public QTessellator
-{
-public:
- QVector<XTrapezoid> *traps;
- void addTrap(const Trapezoid &trap);
-};
-
-void TestTessellator::addTrap(const Trapezoid &trap)
-{
- XTrapezoid xtrap;
- xtrap.top = Q27Dot5ToXFixed(trap.top);
- xtrap.bottom = Q27Dot5ToXFixed(trap.bottom);
- xtrap.left.p1.x = Q27Dot5ToXFixed(trap.topLeft->x);
- xtrap.left.p1.y = Q27Dot5ToXFixed(trap.topLeft->y);
- xtrap.left.p2.x = Q27Dot5ToXFixed(trap.bottomLeft->x);
- xtrap.left.p2.y = Q27Dot5ToXFixed(trap.bottomLeft->y);
- xtrap.right.p1.x = Q27Dot5ToXFixed(trap.topRight->x);
- xtrap.right.p1.y = Q27Dot5ToXFixed(trap.topRight->y);
- xtrap.right.p2.x = Q27Dot5ToXFixed(trap.bottomRight->x);
- xtrap.right.p2.y = Q27Dot5ToXFixed(trap.bottomRight->y);
- traps->append(xtrap);
-}
-
-
-void test_tesselate_polygon(QVector<XTrapezoid> *traps, const QPointF *points, int nPoints,
- bool winding)
-{
- TestTessellator t;
- t.traps = traps;
- t.setWinding(winding);
- t.tessellate(points, nPoints);
-}
-
-
-void test_tessellate_polygon_convex(QVector<XTrapezoid> *traps, const QPointF *points, int nPoints,
- bool winding)
-{
- TestTessellator t;
- t.traps = traps;
- t.setWinding(winding);
- t.tessellateConvex(points, nPoints);
-}
-
-
-void test_tessellate_polygon_rect(QVector<XTrapezoid> *traps, const QPointF *points, int nPoints,
- bool winding)
-{
- // 5 points per rect
- if (nPoints % 5 != 0)
- qWarning() << Q_FUNC_INFO << "multiples of 5 points expected";
-
- TestTessellator t;
- t.traps = traps;
- t.setWinding(winding);
- for (int i = 0; i < nPoints / 5; ++i) {
- QPointF rectA = points[5*i];
- QPointF rectB = points[5*i+1];
- QPointF rectC = points[5*i+2];
- QPointF rectD = points[5*i+3];
-
- QPointF a = (rectA + rectD) * 0.5;
- QPointF b = (rectB + rectC) * 0.5;
-
- QPointF delta = rectA - rectD;
-
- qreal width = sqrt(delta.x() * delta.x() + delta.y() * delta.y());
-
- t.tessellateRect(a, b, width);
- }
-}
diff --git a/tests/auto/qtessellator/testtessellator.h b/tests/auto/qtessellator/testtessellator.h
deleted file mode 100644
index 09d098f6dc..0000000000
--- a/tests/auto/qtessellator/testtessellator.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef TESTTESSELLATOR_H
-#define TESTTESSELLATOR_H
-
-#include <QVector>
-#include <QPointF>
-#include "XrenderFake.h"
-
-typedef void (*tessellate_function)(QVector<XTrapezoid> *traps, const QPointF *points, int nPoints,
- bool winding);
-
-void test_tesselate_polygon(QVector<XTrapezoid> *traps, const QPointF *points, int nPoints,
- bool winding);
-
-void test_tessellate_polygon_convex(QVector<XTrapezoid> *traps, const QPointF *points, int nPoints,
- bool winding);
-
-void test_tessellate_polygon_rect(QVector<XTrapezoid> *traps, const QPointF *points, int nPoints,
- bool winding);
-#endif
diff --git a/tests/auto/qtessellator/tst_tessellator.cpp b/tests/auto/qtessellator/tst_tessellator.cpp
deleted file mode 100644
index e8d4e2d1c6..0000000000
--- a/tests/auto/qtessellator/tst_tessellator.cpp
+++ /dev/null
@@ -1,378 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QtTest/QtTest>
-#include <QCoreApplication>
-#include <QVector>
-#include <qdebug.h>
-#include <qpolygon.h>
-#include <qmatrix.h>
-
-#include "oldtessellator.h"
-#include "testtessellator.h"
-#include "utils.h"
-#include "simple.h"
-#include "arc.h"
-
-#include "math.h"
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QTessellator : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QTessellator() {
- }
-
-private slots:
- void testStandardSet();
- void testRandom();
- void testArc();
- void testRects();
- void testConvexRects();
- void testConvex();
-};
-
-
-QPointF creatPoint()
-{
- qreal x = int(20.0 * (rand() / (RAND_MAX + 1.0)));
- qreal y = int(20.0 * (rand() / (RAND_MAX + 1.0)));
- return QPointF(x, y);
-}
-
-bool test(const QPointF *pg, int pgSize, bool winding, tessellate_function tessellate = test_tesselate_polygon, qreal maxDiff = 0.005)
-{
- QVector<XTrapezoid> traps;
- qreal area1 = 0;
- qreal area2 = 0;
-
- old_tesselate_polygon(&traps, pg, pgSize, winding);
- area1 = compute_area_for_x(traps);
-
- traps.clear();
-
- tessellate(&traps, pg, pgSize, winding);
- area2 = compute_area_for_x(traps);
-
- bool result = (qAbs(area2 - area1) < maxDiff);
- if (!result && area1)
- result = (qAbs(area1 - area2)/area1 < maxDiff);
-
- if (!result)
- qDebug() << area1 << area2;
-
- return result;
-}
-
-
-void simplifyTestFailure(QVector<QPointF> failure, bool winding)
-{
- int i = 1;
- while (i < failure.size() - 1) {
- QVector<QPointF> t = failure;
- t.remove(i);
- if (test(t.data(), t.size(), winding)) {
- ++i;
- continue;
- }
- failure = t;
- i = 1;
- }
-
- for (int x = 0; x < failure.size(); ++x) {
- fprintf(stderr, "%lf,%lf, ", failure[x].x(), failure[x].y());
- }
- fprintf(stderr, "\n\n");
-}
-
-void tst_QTessellator::testStandardSet()
-{
- QVector<FullData> sampleSet;
- sampleSet.append(simpleData());
-
- foreach(FullData data, sampleSet) {
- for (int i = 0; i < data.size(); ++i) {
- if (!test(data[i].data(), data[i].size(), false)) {
- simplifyTestFailure(data[i], false);
- QCOMPARE(true, false);
- }
- if (!test(data[i].data(), data[i].size(), true)) {
- simplifyTestFailure(data[i], true);
- QCOMPARE(true, false);
- }
- }
- }
-}
-
-
-
-void fillRandomVec(QVector<QPointF> &vec)
-{
- int size = vec.size(); --size;
- for (int i = 0; i < size; ++i) {
- vec[i] = creatPoint();
- }
- vec[size] = vec[0];
-}
-
-void tst_QTessellator::testRandom()
-{
- int failures = 0;
- for (int i = 5; i < 12; ++i) {
- QVector<QPointF> vec(i);
-#ifdef QT_ARCH_ARM
- int k = 200;
-#else
- int k = 5000;
-#endif
- while (--k) {
- fillRandomVec(vec);
- if (!test(vec.data(), vec.size(), false)) {
- simplifyTestFailure(vec, false);
- ++failures;
- }
- if (!test(vec.data(), vec.size(), true)) {
- simplifyTestFailure(vec, true);
- ++failures;
- }
- }
- }
- QVERIFY(failures == 0);
-}
-
-
-// we need a higher threshold for failure here than in the above tests, as this basically draws
-// a very thin outline, where the discretization in the new tesselator shows
-bool test_arc(const QPolygonF &poly, bool winding)
-{
- QVector<XTrapezoid> traps;
- qreal area1 = 0;
- qreal area2 = 0;
-
- old_tesselate_polygon(&traps, poly.data(), poly.size(), winding);
- area1 = compute_area_for_x(traps);
-
- traps.clear();
-
- test_tesselate_polygon(&traps, poly.data(), poly.size(), winding);
- area2 = compute_area_for_x(traps);
-
- bool result = (area2 - area1 < .02);
- if (!result && area1)
- result = (qAbs(area1 - area2)/area1 < .02);
-
- return result;
-}
-
-
-
-void tst_QTessellator::testArc()
-{
- FullData arc = arcData();
-
- QMatrix mat;
-#ifdef QT_ARCH_ARM
- const int stop = 5;
-#else
- const int stop = 1000;
-#endif
- for (int i = 0; i < stop; ++i) {
- mat.rotate(qreal(.01));
- mat.scale(qreal(.99), qreal(.99));
- QPolygonF poly = arc.at(0);
- QPolygonF vec = poly * mat;
- QVERIFY(test_arc(vec, true));
- QVERIFY(test_arc(vec, false));
- }
-}
-
-static bool isConvex(const QVector<QPointF> &v)
-{
- int nPoints = v.size() - 1;
-
- qreal lastCross = 0;
- for (int i = 0; i < nPoints; ++i) {
- QPointF a = v[i];
- QPointF b = v[(i + 1) % nPoints];
-
- QPointF d1 = b - a;
-
- for (int j = 0; j < nPoints; ++j) {
- if (j == i || j == i + 1)
- continue;
-
- QPointF p = v[j];
- QPointF d2 = p - a;
-
- qreal cross = d1.x() * d2.y() - d1.y() * d2.x();
-
- if (!qFuzzyCompare(cross + 1, 1)
- && !qFuzzyCompare(cross + 1, 1)
- && (lastCross > 0) != (cross > 0))
- return false;
-
- lastCross = cross;
- }
- }
-
- return true;
-}
-
-static void fillRectVec(QVector<QPointF> &v)
-{
- int numRects = v.size() / 5;
-
- int first = 0;
- v[first++] = QPointF(0, 0);
- v[first++] = QPointF(10, 0);
- v[first++] = QPointF(10, 10);
- v[first++] = QPointF(0, 10);
- v[first++] = QPointF(0, 0);
-
- v[first++] = QPointF(0, 0);
- v[first++] = QPointF(2, 2);
- v[first++] = QPointF(4, 0);
- v[first++] = QPointF(2, -2);
- v[first++] = QPointF(0, 0);
-
- v[first++] = QPointF(0, 0);
- v[first++] = QPointF(4, 4);
- v[first++] = QPointF(6, 2);
- v[first++] = QPointF(2, -2);
- v[first++] = QPointF(0, 0);
-
- for (int i = first / 5; i < numRects; ++i) {
- QPointF a = creatPoint();
- QPointF b = creatPoint();
-
- QPointF delta = a - b;
- QPointF perp(delta.y(), -delta.x());
-
- perp *= ((int)(20.0 * rand() / (RAND_MAX + 1.0))) / 20.0;
-
- int j = 5 * i;
- v[j++] = a + perp;
- v[j++] = a - perp;
- v[j++] = b - perp;
- v[j++] = b + perp;
- v[j++] = a + perp;
- }
-}
-
-#ifdef QT_ARCH_ARM
-const int numRects = 500;
-#else
-const int numRects = 5000;
-#endif
-
-void tst_QTessellator::testConvexRects()
-{
- return;
- int failures = 0;
- QVector<QPointF> vec(numRects * 5);
- fillRectVec(vec);
- for (int rect = 0; rect < numRects; ++rect) {
- QVector<QPointF> v(5);
- for (int i = 0; i < 5; ++i)
- v[i] = vec[5 * rect + i];
- if (!test(v.data(), v.size(), false, test_tessellate_polygon_convex)) {
- simplifyTestFailure(v, false);
- ++failures;
- }
- if (!test(v.data(), v.size(), true, test_tessellate_polygon_convex)) {
- simplifyTestFailure(v, true);
- ++failures;
- }
- }
- QVERIFY(failures == 0);
-}
-
-void tst_QTessellator::testConvex()
-{
- int failures = 0;
- for (int i = 4; i < 10; ++i) {
- QVector<QPointF> vec(i);
- int k = 5000;
- while (k--) {
- fillRandomVec(vec);
- if (!isConvex(vec))
- continue;
- if (!test(vec.data(), vec.size(), false, test_tessellate_polygon_convex)) {
- simplifyTestFailure(vec, false);
- ++failures;
- }
- if (!test(vec.data(), vec.size(), true, test_tessellate_polygon_convex)) {
- simplifyTestFailure(vec, true);
- ++failures;
- }
- }
- }
- QVERIFY(failures == 0);
-}
-
-
-void tst_QTessellator::testRects()
-{
- int failures = 0;
- QVector<QPointF> vec(numRects * 5);
- fillRectVec(vec);
- for (int rect = 0; rect < numRects; ++rect) {
- QVector<QPointF> v(5);
- for (int i = 0; i < 5; ++i)
- v[i] = vec[5 * rect + i];
- if (!test(v.data(), v.size(), false, test_tessellate_polygon_rect, qreal(0.05))) {
- simplifyTestFailure(v, false);
- ++failures;
- }
- if (!test(v.data(), v.size(), true, test_tessellate_polygon_rect, qreal(0.05))) {
- simplifyTestFailure(v, true);
- ++failures;
- }
- }
- QVERIFY(failures == 0);
-}
-
-
-QTEST_MAIN(tst_QTessellator)
-#include "tst_tessellator.moc"
diff --git a/tests/auto/qtessellator/utils.cpp b/tests/auto/qtessellator/utils.cpp
deleted file mode 100644
index 5790983445..0000000000
--- a/tests/auto/qtessellator/utils.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "utils.h"
-
-#include <assert.h>
-#include <qglobal.h>
-
-#include "qnum.h"
-
-#define FloatToXFixed(i) (int)((i) * 65536)
-#define IntToXFixed(i) ((i) << 16)
-
-static double compute_x_at(XFixed y, XPointFixed p1, XPointFixed p2)
-{
- double d = XFixedToDouble(p2.x - p1.x);
- return
- XFixedToDouble(p1.x) + d*XFixedToDouble(y - p1.y)/XFixedToDouble(p2.y - p1.y);
-}
-
-double compute_area(XTrapezoid *trap)
-{
- double x1 = compute_x_at(trap->top, trap->left.p1, trap->left.p2);
- double x2 = compute_x_at(trap->top, trap->right.p1, trap->right.p2);
- double x3 = compute_x_at(trap->bottom, trap->left.p1, trap->left.p2);
- double x4 = compute_x_at(trap->bottom, trap->right.p1, trap->right.p2);
-
- double top = XFixedToDouble(trap->top);
- double bottom = XFixedToDouble(trap->bottom);
- double h = bottom - top;
-
- double top_base = x2 - x1;
- double bottom_base = x4 - x3;
-
- if ((top_base < 0 && bottom_base > 0)
- || (top_base > 0 && bottom_base < 0)) {
- double y0 = top_base*h/(top_base - bottom_base) + top;
- double area = qAbs(top_base * (y0 - top) / 2.);
- area += qAbs(bottom_base * (bottom - y0) /2.);
- return area;
- }
-
-
- return 0.5 * h * qAbs(top_base + bottom_base);
-}
-
-double compute_area_for_x(const QVector<XTrapezoid> &traps)
-{
- double area = 0;
-
- for (int i = 0; i < traps.size(); ++i) {
- XTrapezoid trap = traps[i];
- area += compute_area(&trap);
- }
- return area;
-}
diff --git a/tests/auto/qtessellator/utils.h b/tests/auto/qtessellator/utils.h
deleted file mode 100644
index 6a4ef150b7..0000000000
--- a/tests/auto/qtessellator/utils.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef UTILS_H
-#define UTILS_H
-
-#include <QVector>
-#include <QPointF>
-#include <QDebug>
-#include "XrenderFake.h"
-
-double compute_area(XTrapezoid *trap);
-double compute_area_for_x(const QVector<XTrapezoid> &traps);
-
-QT_BEGIN_NAMESPACE
-Q_DECLARE_TYPEINFO(XTrapezoid, Q_PRIMITIVE_TYPE);
-QT_END_NAMESPACE
-
-#endif
diff --git a/tests/auto/qtextblock/qtextblock.pro b/tests/auto/qtextblock/qtextblock.pro
deleted file mode 100644
index 5558a71506..0000000000
--- a/tests/auto/qtextblock/qtextblock.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-
-QT += core-private gui-private
-
-SOURCES += tst_qtextblock.cpp
-
-
-
diff --git a/tests/auto/qtextblock/tst_qtextblock.cpp b/tests/auto/qtextblock/tst_qtextblock.cpp
deleted file mode 100644
index 6477c50758..0000000000
--- a/tests/auto/qtextblock/tst_qtextblock.cpp
+++ /dev/null
@@ -1,197 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-
-#define private public
-#include <qtextdocument.h>
-#include <qdebug.h>
-#ifndef Q_WS_WIN
-#include <private/qtextdocument_p.h>
-#endif
-
-
-
-#include <qtextobject.h>
-#include <qtextcursor.h>
-
-
-//TESTED_FILES=
-
-QT_FORWARD_DECLARE_CLASS(QTextDocument)
-
-class tst_QTextBlock : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QTextBlock();
-
-
-public slots:
- void init();
- void cleanup();
-private slots:
- void fragmentOverBlockBoundaries();
- void excludeParagraphSeparatorFragment();
- void backwardsBlockIterator();
- void previousBlock_qtbug18026();
- void removedBlock_qtbug18500();
-
-private:
- QTextDocument *doc;
- QTextCursor cursor;
-};
-
-tst_QTextBlock::tst_QTextBlock()
-{}
-
-void tst_QTextBlock::init()
-{
- doc = new QTextDocument;
- cursor = QTextCursor(doc);
-}
-
-void tst_QTextBlock::cleanup()
-{
- cursor = QTextCursor();
- delete doc;
- doc = 0;
-}
-
-void tst_QTextBlock::fragmentOverBlockBoundaries()
-{
- /* this creates two fragments in the piecetable:
- * 1) 'hello<parag separator here>world'
- * 2) '<parag separator>'
- * (they are not united because the former was interested after the latter,
- * hence their position in the pt buffer is the other way around)
- */
- cursor.insertText("Hello");
- cursor.insertBlock();
- cursor.insertText("World");
-
- cursor.movePosition(QTextCursor::Start);
-
- const QTextDocument *doc = cursor.block().document();
- QVERIFY(doc);
- // Block separators are always a fragment of their self. Thus:
- // |Hello|\b|World|\b|
-#if !defined(Q_WS_WIN) && !defined(Q_WS_S60)
- QVERIFY(doc->d_func()->fragmentMap().numNodes() == 4);
-#endif
-
- QCOMPARE(cursor.block().text(), QString("Hello"));
- cursor.movePosition(QTextCursor::NextBlock);
- QCOMPARE(cursor.block().text(), QString("World"));
-}
-
-void tst_QTextBlock::excludeParagraphSeparatorFragment()
-{
- QTextCharFormat fmt;
- fmt.setForeground(Qt::blue);
- cursor.insertText("Hello", fmt);
-
- QTextBlock block = doc->begin();
- QVERIFY(block.isValid());
-
- QTextBlock::Iterator it = block.begin();
-
- QTextFragment fragment = it.fragment();
- QVERIFY(fragment.isValid());
- QCOMPARE(fragment.text(), QString("Hello"));
-
- ++it;
- QVERIFY(it.atEnd());
- QVERIFY(it == block.end());
-}
-
-void tst_QTextBlock::backwardsBlockIterator()
-{
- QTextCharFormat fmt;
-
- fmt.setForeground(Qt::magenta);
- cursor.insertText("A", fmt);
-
- fmt.setForeground(Qt::red);
- cursor.insertText("A", fmt);
-
- fmt.setForeground(Qt::magenta);
- cursor.insertText("A", fmt);
-
- QTextBlock block = doc->begin();
- QVERIFY(block.isValid());
-
- QTextBlock::Iterator it = block.begin();
- QCOMPARE(it.fragment().position(), 0);
- ++it;
- QCOMPARE(it.fragment().position(), 1);
- ++it;
-
- QCOMPARE(it.fragment().position(), 2);
-
- --it;
- QCOMPARE(it.fragment().position(), 1);
- --it;
- QCOMPARE(it.fragment().position(), 0);
-}
-
-void tst_QTextBlock::previousBlock_qtbug18026()
-{
- QTextBlock last = doc->end().previous();
- QVERIFY(last.isValid());
-}
-
-void tst_QTextBlock::removedBlock_qtbug18500()
-{
- cursor.insertText("line 1\nline 2\nline 3 \nline 4\n");
- cursor.setPosition(7);
- QTextBlock block = cursor.block();
- cursor.setPosition(21, QTextCursor::KeepAnchor);
-
- cursor.removeSelectedText();
- QVERIFY(!block.isValid());
-}
-
-QTEST_MAIN(tst_QTextBlock)
-#include "tst_qtextblock.moc"
diff --git a/tests/auto/qtextbrowser/qtextbrowser.pro b/tests/auto/qtextbrowser/qtextbrowser.pro
index 937a13e16d..f4ae8b7b67 100644
--- a/tests/auto/qtextbrowser/qtextbrowser.pro
+++ b/tests/auto/qtextbrowser/qtextbrowser.pro
@@ -2,6 +2,7 @@ load(qttest_p4)
SOURCES += tst_qtextbrowser.cpp
!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
+QT += widgets
wince*|symbian: {
addFiles.files = *.html
diff --git a/tests/auto/qtextdocumentlayout/qtextdocumentlayout.pro b/tests/auto/qtextdocumentlayout/qtextdocumentlayout.pro
deleted file mode 100644
index b2dc6a1f68..0000000000
--- a/tests/auto/qtextdocumentlayout/qtextdocumentlayout.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qtextdocumentlayout.cpp
-
-
diff --git a/tests/auto/qtextedit/qtextedit.pro b/tests/auto/qtextedit/qtextedit.pro
index 594e53fda4..fa10ab72a3 100644
--- a/tests/auto/qtextedit/qtextedit.pro
+++ b/tests/auto/qtextedit/qtextedit.pro
@@ -1,6 +1,6 @@
load(qttest_p4)
-QT += gui-private
+QT += widgets widgets-private gui-private
INCLUDEPATH += ../
HEADERS +=
diff --git a/tests/auto/qtextedit/tst_qtextedit.cpp b/tests/auto/qtextedit/tst_qtextedit.cpp
index 7208861394..f10879d284 100644
--- a/tests/auto/qtextedit/tst_qtextedit.cpp
+++ b/tests/auto/qtextedit/tst_qtextedit.cpp
@@ -49,7 +49,7 @@
#include <qapplication.h>
#include <qclipboard.h>
#include <qtextbrowser.h>
-#include <private/qtextcontrol_p.h>
+#include <private/qwidgettextcontrol_p.h>
#include <qscrollbar.h>
#include <qtextobject.h>
#include <qtexttable.h>
@@ -1484,7 +1484,7 @@ void tst_QTextEdit::mimeDataReimplementations()
QCOMPARE(ed.insertCallCount, 0);
#ifdef QT_BUILD_INTERNAL
- QTextControl *control = qFindChild<QTextControl *>(&ed);
+ QWidgetTextControl *control = qFindChild<QWidgetTextControl *>(&ed);
QVERIFY(control);
control->canInsertFromMimeData(QApplication::clipboard()->mimeData());
@@ -2095,7 +2095,7 @@ void tst_QTextEdit::cursorRect()
void tst_QTextEdit::setDocumentPreservesPalette()
{
#ifdef QT_BUILD_INTERNAL
- QTextControl *control = qFindChild<QTextControl *>(ed);
+ QWidgetTextControl *control = qFindChild<QWidgetTextControl *>(ed);
QVERIFY(control);
QPalette defaultPal = ed->palette();
diff --git a/tests/auto/qtextobject/qtextobject.pro b/tests/auto/qtextobject/qtextobject.pro
deleted file mode 100644
index 1715fa65a3..0000000000
--- a/tests/auto/qtextobject/qtextobject.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-############################################################
-# Project file for autotest for file qtextobject.h
-############################################################
-
-load(qttest_p4)
-
-SOURCES += tst_qtextobject.cpp
-
-
diff --git a/tests/auto/qtextodfwriter/qtextodfwriter.pro b/tests/auto/qtextodfwriter/qtextodfwriter.pro
deleted file mode 100644
index f5e2c09fa0..0000000000
--- a/tests/auto/qtextodfwriter/qtextodfwriter.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qtextodfwriter.cpp
-
-!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
-symbian:INCLUDEPATH+=$$[QT_INSTALL_PREFIX]/include/QtGui/private
diff --git a/tests/auto/qtextpiecetable/qtextpiecetable.pro b/tests/auto/qtextpiecetable/qtextpiecetable.pro
deleted file mode 100644
index edcb0a091c..0000000000
--- a/tests/auto/qtextpiecetable/qtextpiecetable.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-QT += core-private gui-private
-SOURCES += tst_qtextpiecetable.cpp
-HEADERS += ../qtextdocument/common.h
-
-requires(!win32)
-requires(contains(QT_CONFIG,private_tests))
-
diff --git a/tests/auto/qtextpiecetable/tst_qtextpiecetable.cpp b/tests/auto/qtextpiecetable/tst_qtextpiecetable.cpp
deleted file mode 100644
index 1717c6bea6..0000000000
--- a/tests/auto/qtextpiecetable/tst_qtextpiecetable.cpp
+++ /dev/null
@@ -1,1154 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#define private public
-
-#include <qtextdocument.h>
-#include <private/qtextdocument_p.h>
-#include <qabstracttextdocumentlayout.h>
-#include <qtextobject.h>
-#include <qdebug.h>
-#include <stdlib.h>
-#include <qtextcursor.h>
-#include "../qtextdocument/common.h"
-
-//TESTED_FILES=gui/text/qtextdocument_p.cpp gui/text/qtextdocument_p.h
-
-class tst_QTextPieceTable : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QTextPieceTable();
-
-
-public slots:
- void init();
- void cleanup();
-private slots:
- void insertion1();
- void insertion2();
- void insertion3();
- void insertion4();
- void insertion5();
-
- void removal1();
- void removal2();
- void removal3();
- void removal4();
-
- void undoRedo1();
- void undoRedo2();
- void undoRedo3();
- void undoRedo4();
- void undoRedo5();
- void undoRedo6();
- void undoRedo7();
- void undoRedo8();
- void undoRedo9();
- void undoRedo10();
- void undoRedo11();
-
- void checkDocumentChanged();
- void checkDocumentChanged2();
- void setBlockFormat();
-
- void blockInsertion();
- void blockInsertion2();
-
- void blockRemoval1();
- void blockRemoval2();
- void blockRemoval3();
- void blockRemoval4();
- void blockRemoval5();
-
- void checkBlockSeparation();
-
- void checkFrames1();
- void removeFrameDirect();
- void removeWithChildFrame();
- void clearWithFrames();
-
-private:
- QTextDocument *doc;
- QTextDocumentPrivate *table;
- int blockFormatIndex;
- int charFormatIndex;
-};
-
-tst_QTextPieceTable::tst_QTextPieceTable()
-{ doc = 0; table = 0; }
-
-
-void tst_QTextPieceTable::init()
-{
- doc = new QTextDocument(0);
- table = doc->d_func();
- blockFormatIndex = table->formatCollection()->indexForFormat(QTextBlockFormat());
- charFormatIndex = table->formatCollection()->indexForFormat(QTextCharFormat());
-}
-
-void tst_QTextPieceTable::cleanup()
-{
- delete doc;
- doc = 0;
-}
-
-void tst_QTextPieceTable::insertion1()
-{
- table->insert(0, "aacc", charFormatIndex);
- QCOMPARE(table->plainText(), QString("aacc"));
- table->insert(2, "bb", charFormatIndex);
- QCOMPARE(table->plainText(), QString("aabbcc"));
- table->insert(1, "1", charFormatIndex);
- QCOMPARE(table->plainText(), QString("a1abbcc"));
- table->insert(6, "d", charFormatIndex);
- QCOMPARE(table->plainText(), QString("a1abbcdc"));
- table->insert(8, "z", charFormatIndex);
- QCOMPARE(table->plainText(), QString("a1abbcdcz"));
-}
-
-void tst_QTextPieceTable::insertion2()
-{
- table->insert(0, "bb", charFormatIndex);
- QCOMPARE(table->plainText(), QString("bb"));
-}
-
-void tst_QTextPieceTable::insertion3()
-{
- QString compare;
- for (int i = 0; i < 20000; ++i) {
- int pos = rand() % (i+1);
- QChar c((unsigned short)(i & 0xff) + 1);
- QString str;
- str += c;
- table->insert(pos, str, charFormatIndex);
- compare.insert(pos, str);
- }
- QVERIFY(table->plainText() == compare);
-}
-
-void tst_QTextPieceTable::insertion4()
-{
- QString compare;
- for (int i = 0; i < 20000; ++i) {
- int pos = rand() % (i+1);
- QChar c((unsigned short)((i % 26) + (i>25?'A':'a')));
- QString str;
- str += c;
- str += c;
- table->insert(pos, str, charFormatIndex);
- compare.insert(pos, str);
- // if (table->text() != compare) {
- // qDebug("compare failed: i=%d (current char=%c) insert at %d\nexpected '%s'\ngot '%s'", i, (i % 26) + (i>25?'A':'a'), pos, compare.latin1(), table->text().latin1());
- // exit(12);
- // }
- }
- QVERIFY(table->plainText() == compare);
-}
-
-void tst_QTextPieceTable::insertion5()
-{
- QString compare;
- for (int i = 0; i < 20000; ++i) {
- int pos = rand() % (i+1);
- QChar c((unsigned short)((i % 26) + (i>25?'A':'a')));
- QString str;
- str += c;
- str += c;
- if (c == 'a') {
- table->insertBlock(pos, blockFormatIndex, charFormatIndex);
- str = QChar(QChar::ParagraphSeparator);
- } else {
- table->insert(pos, str, charFormatIndex);
- }
- compare.insert(pos, str);
- }
- QVERIFY(table->plainText() == compare);
- for (QTextBlock it = table->blocksBegin(); it != table->blocksEnd(); it = it.next()) {
- QTextDocumentPrivate::FragmentIterator fit = table->find(it.position());
- QVERIFY(fit.position() == it.position());
- }
-}
-
-void tst_QTextPieceTable::removal1()
-{
- table->insert(0, "abbccc", charFormatIndex);
- QCOMPARE(table->plainText(), QString("abbccc"));
- table->remove(1, 2);
- QCOMPARE(table->plainText(), QString("accc"));
- table->insert(1, "1", charFormatIndex);
- QCOMPARE(table->plainText(), QString("a1ccc"));
- table->remove(4, 1);
- QCOMPARE(table->plainText(), QString("a1cc"));
- table->insert(4, "z", charFormatIndex);
- QCOMPARE(table->plainText(), QString("a1ccz"));
-}
-
-void tst_QTextPieceTable::removal2()
-{
- table->insert(0, "bb", charFormatIndex);
- QCOMPARE(table->plainText(), QString("bb"));
- table->remove(0, 2);
- QCOMPARE(table->plainText(), QString(""));
- table->insertBlock(0, blockFormatIndex, charFormatIndex);
- QCOMPARE(table->plainText(), QString(QChar(QChar::ParagraphSeparator)));
- table->remove(0, 1);
- QCOMPARE(table->plainText(), QString(""));
-
- table->insert(0, "bb", charFormatIndex);
- QCOMPARE(table->plainText(), QString("bb"));
- table->insertBlock(1, blockFormatIndex, charFormatIndex);
- QCOMPARE(table->plainText(), QString("b") + QString(QChar(QChar::ParagraphSeparator)) + QString("b"));
- table->remove(1, 1);
- QCOMPARE(table->plainText(), QString("bb"));
-}
-
-void tst_QTextPieceTable::removal3()
-{
- QString compare;
- int l = 0;
- for (int i = 0; i < 20000; ++i) {
- bool remove = l && (rand() % 2);
- int pos = rand() % (remove ? l : (l+1));
- QChar c((unsigned short)((i % 26) + (i>25?'A':'a')));
- QString str;
- str += c;
- str += c;
- if (remove && pos < table->length()) {
- compare.remove(pos, 1);
- table->remove(pos, 1);
- } else {
- compare.insert(pos, str);
- table->insert(pos, str, charFormatIndex);
- }
- l += remove ? -1 : 2;
- // if (table->text() != compare) {
- // qDebug("compare failed: i=%d (current char=%c) insert at %d\nexpected '%s'\ngot '%s'", i, (i % 26) + (i>25?'A':'a'), pos, compare.latin1(), table->text().latin1());
- // exit(12);
- // }
- }
- QVERIFY(table->plainText() == compare);
-}
-
-void tst_QTextPieceTable::removal4()
-{
- QString compare;
- int l = 0;
- for (int i = 0; i < 20000; ++i) {
- bool remove = l && (rand() % 2);
- int pos = (l > 1) ? rand() % (remove ? l-1 : l) : 0;
- QChar c((unsigned short)((i % 26) + (i>25?'A':'a')));
- QString str;
- if (c != 'a') {
- str += c;
- str += c;
- } else {
- str = QChar(QChar::ParagraphSeparator);
- }
- if (remove && pos < table->length() - 1) {
- compare.remove(pos, 1);
- table->remove(pos, 1);
- } else {
- if (str[0] == QChar(QChar::ParagraphSeparator))
- table->insertBlock(pos, blockFormatIndex, charFormatIndex);
- else
- table->insert(pos, str, charFormatIndex);
- compare.insert(pos, str);
- }
- l += remove ? -1 : 2;
-// if (table->plainText() != compare) {
-// qDebug("compare failed: i=%d (current char=%c) insert at %d\nexpected '%s'\ngot '%s'", i, (i % 26) + (i>25?'A':'a'), pos, compare.latin1(), table->plainText().latin1());
-// exit(12);
-// }
- }
- QVERIFY(table->plainText() == compare);
-}
-
-void tst_QTextPieceTable::undoRedo1()
-{
- table->insert(0, "01234567", charFormatIndex);
- table->insert(0, "a", charFormatIndex);
- table->insert(1, "b", charFormatIndex);
- QCOMPARE(table->plainText(), QString("ab01234567"));
- table->undo();
- QCOMPARE(table->plainText(), QString("01234567"));
- table->redo();
- QCOMPARE(table->plainText(), QString("ab01234567"));
- table->undo();
- table->insert(1, "c", charFormatIndex);
- QCOMPARE(table->plainText(), QString("0c1234567"));
- table->undo();
- QCOMPARE(table->plainText(), QString("01234567"));
- table->undo();
- QVERIFY(table->plainText().isEmpty());
-}
-
-void tst_QTextPieceTable::undoRedo2()
-{
- table->insert(0, "01", charFormatIndex);
- table->insert(1, "a", charFormatIndex);
- QCOMPARE(table->plainText(), QString("0a1"));
- table->undo();
- QCOMPARE(table->plainText(), QString("01"));
- table->undo();
- QCOMPARE(table->plainText(), QString(""));
- table->redo();
- QCOMPARE(table->plainText(), QString("01"));
- table->redo();
- QCOMPARE(table->plainText(), QString("0a1"));
-}
-
-void tst_QTextPieceTable::undoRedo3()
-{
- table->insert(0, "01", charFormatIndex);
- table->insert(2, "ab", charFormatIndex);
- table->remove(2, 1);
- QCOMPARE(table->plainText(), QString("01b"));
- table->undo();
- QCOMPARE(table->plainText(), QString("01ab"));
- table->undo();
- QVERIFY(table->plainText().isEmpty());
- table->redo();
- QCOMPARE(table->plainText(), QString("01ab"));
- table->redo();
- QCOMPARE(table->plainText(), QString("01b"));
-}
-
-void tst_QTextPieceTable::undoRedo4()
-{
- table->insert(0, "01", charFormatIndex);
- table->insert(0, "ab", charFormatIndex);
- table->remove(0, 1);
- QCOMPARE(table->plainText(), QString("b01"));
- table->undo();
- QCOMPARE(table->plainText(), QString("ab01"));
- table->undo();
- QCOMPARE(table->plainText(), QString("01"));
- table->undo();
- QCOMPARE(table->plainText(), QString(""));
- table->redo();
- QCOMPARE(table->plainText(), QString("01"));
- table->redo();
- QCOMPARE(table->plainText(), QString("ab01"));
- table->redo();
- QCOMPARE(table->plainText(), QString("b01"));
-}
-
-void tst_QTextPieceTable::undoRedo5()
-{
- table->beginEditBlock();
- table->insert(0, "01", charFormatIndex);
- table->remove(1, 1);
- table->endEditBlock();
- QCOMPARE(table->plainText(), QString("0"));
- table->undo();
- QCOMPARE(table->plainText(), QString(""));
-}
-
-void tst_QTextPieceTable::undoRedo6()
-{
- // this is essentially a test for the undoStack[undoPosition - 1].block = false in PieceTable::endUndoBlock()
- QTextDocument doc;
- QTextCursor cursor(&doc);
- cursor.insertText("Hello World");
-
- cursor.insertBlock();
- cursor.insertText("Hello World2");
-
- cursor.movePosition(QTextCursor::Start);
- QTextBlockFormat bfmt;
- bfmt.setAlignment(Qt::AlignHCenter);
- cursor.setBlockFormat(bfmt);
- QVERIFY(cursor.blockFormat().alignment() == Qt::AlignHCenter);
-
- QTextCursor range = cursor;
- range.clearSelection();
- range.movePosition(QTextCursor::Start);
- range.movePosition(QTextCursor::End, QTextCursor::KeepAnchor);
-
- QTextCharFormat modifier;
- modifier.setFontItalic(true);
- range.mergeCharFormat(modifier);
-
- cursor.movePosition(QTextCursor::Start);
- QVERIFY(cursor.blockFormat().alignment() == Qt::AlignHCenter);
-
- doc.undo();
-
- QVERIFY(cursor.blockFormat().alignment() == Qt::AlignHCenter);
-}
-
-void tst_QTextPieceTable::undoRedo7()
-{
- table->insert(0, "a", charFormatIndex);
- table->insert(1, "b", charFormatIndex);
- QCOMPARE(table->plainText(), QString("ab"));
-
- table->undo();
- QVERIFY(table->plainText().isEmpty());
-}
-
-void tst_QTextPieceTable::undoRedo8()
-{
- table->insert(0, "a", charFormatIndex);
- table->insert(1, "b", charFormatIndex);
- QCOMPARE(table->plainText(), QString("ab"));
-
- table->remove(0, 1);
- table->remove(0, 1);
-
- QVERIFY(table->plainText().isEmpty());
- table->undo();
- QCOMPARE(table->plainText(), QString("ab"));
-}
-
-void tst_QTextPieceTable::undoRedo9()
-{
- table->insert(0, "a", charFormatIndex);
- table->insert(1, "b", charFormatIndex);
- QCOMPARE(table->plainText(), QString("ab"));
-
- table->remove(1, 1);
- table->remove(0, 1);
-
- QVERIFY(table->plainText().isEmpty());
- table->undo();
- QCOMPARE(table->plainText(), QString("ab"));
-}
-
-void tst_QTextPieceTable::undoRedo10()
-{
- // testcase for the beginUndoBlock/endUndoBlock calls being surrounded by an if (undoEnabled)
- QTextCharFormat cf;
- cf.setForeground(Qt::blue);
- int cfIdx = table->formatCollection()->indexForFormat(cf);
-
- QTextBlockFormat f;
- int idx = table->formatCollection()->indexForFormat(f);
-
- table->insert(0, "a", cfIdx);
- table->insertBlock(1, idx, cfIdx);
- table->insert(1, "b", cfIdx);
-
- cf.setForeground(Qt::red);
- int newCfIdx = table->formatCollection()->indexForFormat(cf);
-
- table->setCharFormat(0, 3, cf, QTextDocumentPrivate::MergeFormat);
-
- QCOMPARE(table->find(0).value()->format, newCfIdx);
-
- table->undo();
-
- QCOMPARE(table->find(0).value()->format, cfIdx);
-}
-
-void tst_QTextPieceTable::undoRedo11()
-{
- srand(3);
- const int loops = 20;
- QString compare;
- int l = 0;
- for (int i = 0; i < loops; ++i) {
- bool remove = l && (rand() % 2);
- int pos = (l > 1) ? rand() % (remove ? l-1 : l) : 0;
- QChar c((unsigned short)((i % 26) + (i>25?'A':'a')));
- QString str;
- str += c;
- str += c;
- if (remove) {
- compare.remove(pos, 1);
- table->remove(pos, 1);
- } else {
- compare.insert(pos, str);
- table->insert(pos, str, charFormatIndex);
- }
- l += remove ? -1 : 2;
- }
- QVERIFY(table->plainText() == compare);
- for (int i = 0; i < loops; ++i)
- table->undo();
- QVERIFY(table->plainText() == QString(""));
- for (int i = 0; i < loops; ++i)
- table->redo();
- QVERIFY(table->plainText() == compare);
-}
-
-
-void tst_QTextPieceTable::checkDocumentChanged()
-{
- table->enableUndoRedo(false);
- QTestDocumentLayout *layout = new QTestDocumentLayout(doc);
- doc->setDocumentLayout(layout);
-
- // single insert
- layout->expect(0, 0, 15);
- table->insert(0, "012345678901234", charFormatIndex);
- QVERIFY(!layout->error);
-
- // single remove
- layout->expect(0, 5, 0);
- table->remove(0, 5);
- QVERIFY(!layout->error);
-
- // symmetric insert/remove
- layout->expect(0, 0, 0);
- table->beginEditBlock();
- table->insert(0, "01234", charFormatIndex);
- table->remove(0, 5);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- layout->expect(0, 5, 5);
- table->beginEditBlock();
- table->remove(0, 5);
- table->insert(0, "01234", charFormatIndex);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- // replace
- layout->expect(0, 3, 5);
- table->beginEditBlock();
- table->remove(0, 3);
- table->insert(0, "01234", charFormatIndex);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- layout->expect(0, 0, 2);
- table->beginEditBlock();
- table->insert(0, "01234", charFormatIndex);
- table->remove(0, 3);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- // insert + remove inside insert block
- layout->expect(0, 0, 2);
- table->beginEditBlock();
- table->insert(0, "01234", charFormatIndex);
- table->remove(1, 3);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- layout->expect(0, 0, 2);
- table->beginEditBlock();
- table->insert(0, "01234", charFormatIndex);
- table->remove(2, 3);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- // insert + remove partly outside
- layout->expect(0, 1, 0);
- table->beginEditBlock();
- table->insert(1, "0", charFormatIndex);
- table->remove(0, 2);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- layout->expect(0, 1, 1);
- table->beginEditBlock();
- table->insert(1, "01", charFormatIndex);
- table->remove(0, 2);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- layout->expect(0, 1, 2);
- table->beginEditBlock();
- table->insert(1, "012", charFormatIndex);
- table->remove(0, 2);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- layout->expect(1, 1, 0);
- table->beginEditBlock();
- table->insert(1, "0", charFormatIndex);
- table->remove(1, 2);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- layout->expect(1, 1, 1);
- table->beginEditBlock();
- table->insert(1, "01", charFormatIndex);
- table->remove(2, 2);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- layout->expect(1, 1, 2);
- table->beginEditBlock();
- table->insert(1, "012", charFormatIndex);
- table->remove(3, 2);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- // insert + remove non overlapping
- layout->expect(0, 1, 1);
- table->beginEditBlock();
- table->insert(1, "0", charFormatIndex);
- table->remove(0, 1);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- layout->expect(0, 2, 2);
- table->beginEditBlock();
- table->insert(2, "1", charFormatIndex);
- table->remove(0, 1);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- layout->expect(0, 2, 2);
- table->beginEditBlock();
- table->remove(0, 1);
- table->insert(1, "0", charFormatIndex);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- layout->expect(0, 3, 3);
- table->beginEditBlock();
- table->remove(0, 1);
- table->insert(2, "1", charFormatIndex);
- table->endEditBlock();
-
-
- layout->expect(0, 3, 3);
- QTextCharFormat fmt;
- fmt.setForeground(Qt::blue);
- table->beginEditBlock();
- table->setCharFormat(0, 1, fmt);
- table->setCharFormat(2, 1, fmt);
- table->endEditBlock();
- QVERIFY(!layout->error);
-}
-
-void tst_QTextPieceTable::checkDocumentChanged2()
-{
- QTestDocumentLayout *layout = new QTestDocumentLayout(doc);
- doc->setDocumentLayout(layout);
-
- QTextCharFormat fmt;
- fmt.setForeground(Qt::blue);
- int anotherCharFormatIndex = table->formatCollection()->indexForFormat(fmt);
-
- layout->expect(0, 0, 12);
- table->beginEditBlock();
- table->insert(0, "0123", charFormatIndex);
- table->insert(4, "4567", anotherCharFormatIndex);
- table->insert(8, "8901", charFormatIndex);
- table->endEditBlock();
- QVERIFY(!layout->error);
-
- fmt.setFontItalic(true);
-
- layout->expect(1, 10, 10);
- table->beginEditBlock();
- table->setCharFormat(8, 3, fmt);
- table->setCharFormat(4, 4, fmt);
- table->setCharFormat(1, 3, fmt);
- table->endEditBlock();
- QVERIFY(!layout->error);
-}
-
-void tst_QTextPieceTable::setBlockFormat()
-{
- QTextBlockFormat bfmt;
- int index = table->formatCollection()->indexForFormat(bfmt);
-
- table->insertBlock(0, index, charFormatIndex);
- table->insertBlock(0, index, charFormatIndex);
- table->insertBlock(0, index, charFormatIndex);
-
- QTextBlockFormat newbfmt = bfmt;
- newbfmt.setAlignment(Qt::AlignRight);
- index = table->formatCollection()->indexForFormat(bfmt);
- QTextBlock b = table->blocksFind(1);
- table->setBlockFormat(b, b, newbfmt);
-
- QVERIFY(table->blocksFind(0).blockFormat() == bfmt);
- QVERIFY(table->blocksFind(1).blockFormat() == newbfmt);
- QVERIFY(table->blocksFind(2).blockFormat() == bfmt);
-}
-
-
-void tst_QTextPieceTable::blockInsertion()
-{
- QTextBlockFormat fmt;
- fmt.setTopMargin(100);
- int idx = table->formatCollection()->indexForFormat(fmt);
- int charFormat = table->formatCollection()->indexForFormat(QTextCharFormat());
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
-
- table->insertBlock(0, idx, charFormat);
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(1).blockFormat() == fmt);
-
- table->undo();
- QVERIFY(table->blockMap().length() == 1);
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
-
- table->redo();
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(1).blockFormat() == fmt);
-}
-
-void tst_QTextPieceTable::blockInsertion2()
-{
- // caused evil failing assertion in fragmentmap
- int pos = 0;
- table->insertBlock(pos, blockFormatIndex, charFormatIndex);
- pos += 1;
- table->insert(pos, "a", charFormatIndex);
- pos += 1;
-
- pos -= 1;
- table->insertBlock(pos, blockFormatIndex, charFormatIndex);
- QCOMPARE(table->blocksFind(0).position(), 0);
- QCOMPARE(table->blocksFind(1).position(), 1);
- QCOMPARE(table->blocksFind(2).position(), 2);
-}
-
-/*
- Tests correct removal behaviour when deleting over block boundaries or complete blocks.
-*/
-
-void tst_QTextPieceTable::blockRemoval1()
-{
- QTextBlockFormat fmt1;
- fmt1.setTopMargin(100);
- QTextBlockFormat fmt2;
- fmt2.setAlignment(Qt::AlignRight);
- int idx1 = table->formatCollection()->indexForFormat(fmt1);
- int idx2 = table->formatCollection()->indexForFormat(fmt2);
-
- table->insert(0, "0123", charFormatIndex);
- table->insertBlock(4, idx1, charFormatIndex);
- table->insert(5, "5678", charFormatIndex);
- table->insertBlock(9, idx2, charFormatIndex);
- table->insert(10, "0123", charFormatIndex);
-
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
- QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 5);
- QVERIFY(table->blocksFind(11).position() == 10);
-
- table->beginEditBlock();
- table->remove(5, 5);
- table->endEditBlock();
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(4).position() == 0);
- QVERIFY(table->blocksFind(5).position() == 5);
-
- table->undo();
-
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
- QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 5);
- QVERIFY(table->blocksFind(11).position() == 10);
-
- table->redo();
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(4).position() == 0);
- QVERIFY(table->blocksFind(5).position() == 5);
-}
-
-void tst_QTextPieceTable::blockRemoval2()
-{
- QTextBlockFormat fmt1;
- fmt1.setTopMargin(100);
- QTextBlockFormat fmt2;
- fmt2.setAlignment(Qt::AlignRight);
- int idx1 = table->formatCollection()->indexForFormat(fmt1);
- int idx2 = table->formatCollection()->indexForFormat(fmt2);
-
- table->insert(0, "0123", charFormatIndex);
- table->insertBlock(4, idx1, charFormatIndex);
- table->insert(5, "5678", charFormatIndex);
- table->insertBlock(9, idx2, charFormatIndex);
- table->insert(10, "0123", charFormatIndex);
-
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
- QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 5);
- QVERIFY(table->blocksFind(11).position() == 10);
-
- table->remove(4, 1);
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(6).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 0);
-
- table->undo();
-
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
- QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 5);
- QVERIFY(table->blocksFind(11).position() == 10);
-
- table->redo();
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(6).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 0);
-}
-
-void tst_QTextPieceTable::blockRemoval3()
-{
- QTextBlockFormat fmt1;
- fmt1.setTopMargin(100);
- QTextBlockFormat fmt2;
- fmt2.setAlignment(Qt::AlignRight);
- int idx1 = table->formatCollection()->indexForFormat(fmt1);
- int idx2 = table->formatCollection()->indexForFormat(fmt2);
-
- table->insert(0, "0123", charFormatIndex);
- table->insertBlock(4, idx1, charFormatIndex);
- table->insert(5, "5678", charFormatIndex);
- table->insertBlock(9, idx2, charFormatIndex);
- table->insert(10, "0123", charFormatIndex);
-
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
- QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 5);
- QVERIFY(table->blocksFind(11).position() == 10);
-
- table->beginEditBlock();
- table->remove(3, 4);
- table->endEditBlock();
-
- QVERIFY(table->blocksFind(1).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(5).position() == 0);
-
- table->undo();
-
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
- QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 5);
- QVERIFY(table->blocksFind(11).position() == 10);
-
- table->redo();
- QVERIFY(table->blocksFind(1).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(5).position() == 0);
-}
-
-void tst_QTextPieceTable::blockRemoval4()
-{
-#if 0
- QTextBlockFormat fmt1;
- fmt1.setTopMargin(100);
- QTextBlockFormat fmt2;
- fmt2.setAlignment(Qt::AlignRight);
- int idx1 = table->formatCollection()->indexForFormat(fmt1);
- int idx2 = table->formatCollection()->indexForFormat(fmt2);
-
- table->insert(0, "0123", charFormatIndex);
- table->insertBlock(4, idx1, charFormatIndex);
- table->insert(5, "5678", charFormatIndex);
- table->insertBlock(9, idx2, charFormatIndex);
- table->insert(10, "0123", charFormatIndex);
-
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
- QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 5);
- QVERIFY(table->blocksFind(11).position() == 10);
-
- table->remove(3, 7);
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(5).position() == 0);
- QVERIFY(table->blocksFind(1).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
-
- table->undo();
-
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
- QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 5);
- QVERIFY(table->blocksFind(11).position() == 10);
-
- table->redo();
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(5).position() == 0);
- QVERIFY(table->blocksFind(1).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
-#endif
-}
-
-void tst_QTextPieceTable::blockRemoval5()
-{
- QTextBlockFormat fmt1;
- fmt1.setTopMargin(100);
- QTextBlockFormat fmt2;
- fmt2.setAlignment(Qt::AlignRight);
- int idx1 = table->formatCollection()->indexForFormat(fmt1);
- int idx2 = table->formatCollection()->indexForFormat(fmt2);
-
- table->insert(0, "0123", charFormatIndex);
- table->insertBlock(4, idx1, charFormatIndex);
- table->insert(5, "5678", charFormatIndex);
- table->insertBlock(9, idx2, charFormatIndex);
- table->insert(10, "0123", charFormatIndex);
-
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
- QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 5);
- QVERIFY(table->blocksFind(11).position() == 10);
-
- table->beginEditBlock();
- table->remove(3, 8);
- table->endEditBlock();
-
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(5).position() == 0);
-
- table->undo();
-
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(4).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == fmt1);
- QVERIFY(table->blocksFind(10).blockFormat() == fmt2);
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(6).position() == 5);
- QVERIFY(table->blocksFind(11).position() == 10);
-
- table->redo();
- QVERIFY(table->blocksFind(0).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(5).blockFormat() == QTextBlockFormat());
- QVERIFY(table->blocksFind(1).position() == 0);
- QVERIFY(table->blocksFind(5).position() == 0);
-}
-
-
-void tst_QTextPieceTable::checkBlockSeparation()
-{
- table->insertBlock(0, blockFormatIndex, charFormatIndex);
- table->insertBlock(1, blockFormatIndex, charFormatIndex);
-
- QVERIFY(table->find(0) != table->find(1));
-}
-
-void tst_QTextPieceTable::checkFrames1()
-{
- QTextFrameFormat ffmt;
- table->insert(0, "Hello", charFormatIndex);
- QPointer<QTextFrame> frame = table->insertFrame(1, 3, ffmt);
- QTextFrame *root = table->rootFrame();
-
- QVERIFY(root == frame->parentFrame());
-
- QVERIFY(root);
- QVERIFY(root->parentFrame() == 0);
-
- QVERIFY(root->childFrames().count() == 1);
- QVERIFY(frame->format() == ffmt);
- QVERIFY(frame->firstPosition() == 2);
- QVERIFY(frame->lastPosition() == 4);
-
-
- QPointer<QTextFrame> frame2 = table->insertFrame(2, 3, ffmt);
-
- QVERIFY(root->childFrames().count() == 1);
- QVERIFY(root->childFrames().at(0) == frame);
- QVERIFY(frame->childFrames().count() == 1);
- QVERIFY(frame2->childFrames().count() == 0);
- QVERIFY(frame2->parentFrame() == frame);
- QVERIFY(frame2->firstPosition() == 3);
- QVERIFY(frame2->lastPosition() == 4);
-
- QVERIFY(frame->format() == ffmt);
- QVERIFY(frame->firstPosition() == 2);
- QVERIFY(frame->lastPosition() == 6);
-
- table->removeFrame(frame);
-
- QVERIFY(root->childFrames().count() == 1);
- QVERIFY(root->childFrames().at(0) == frame2);
- QVERIFY(!frame);
- QVERIFY(frame2->childFrames().count() == 0);
- QVERIFY(frame2->parentFrame() == root);
- QVERIFY(frame2->firstPosition() == 2);
- QVERIFY(frame2->lastPosition() == 3);
-
- table->undo();
-
- frame = table->frameAt(2);
-
- QVERIFY(root->childFrames().count() == 1);
- QVERIFY(root->childFrames().at(0) == frame);
- QVERIFY(frame->childFrames().count() == 1);
- QVERIFY(frame->childFrames().at(0) == frame2);
- QVERIFY(frame2->childFrames().count() == 0);
- QVERIFY(frame2->parentFrame() == frame);
- QVERIFY(frame2->firstPosition() == 3);
- QVERIFY(frame2->lastPosition() == 4);
-
- QVERIFY(frame->firstPosition() == 2);
- QVERIFY(frame->lastPosition() == 6);
-
- table->undo();
-
- QVERIFY(root->childFrames().count() == 1);
- QVERIFY(root->childFrames().at(0) == frame);
- QVERIFY(frame->childFrames().count() == 0);
- QVERIFY(!frame2);
-
- QVERIFY(frame->firstPosition() == 2);
- QVERIFY(frame->lastPosition() == 4);
-}
-
-void tst_QTextPieceTable::removeFrameDirect()
-{
- QTextFrameFormat ffmt;
- table->insert(0, "Hello", charFormatIndex);
-
- QTextFrame *frame = table->insertFrame(1, 5, ffmt);
-
- QVERIFY(frame->parentFrame() == table->rootFrame());
-
- const int start = frame->firstPosition() - 1;
- const int end = frame->lastPosition();
- const int length = end - start + 1;
-
- table->remove(start, length);
-}
-
-void tst_QTextPieceTable::removeWithChildFrame()
-{
- /*
- The piecetable layout is:
-
- ...
- 1 BeginningOfFrame(first frame)
- 2 text
- 3 BeginningOfFrame(second frame)
- 4 text
- 5 text
- 6 EndOfFrame(second frame)
- 7 text
- 8 text
- 9 EndOfFrame(first frame)
- ...
-
- The idea is to remove from [2] until [6], basically some trailing text and the second frame.
- In this case frameAt(2) != frameAt(6), so the assertion in remove() needed an adjustement.
- */
- QTextFrameFormat ffmt;
- table->insert(0, "Hello World", charFormatIndex);
-
- QTextFrame *frame = table->insertFrame(1, 6, ffmt);
- QTextFrame *childFrame = table->insertFrame(3, 5, ffmt);
- Q_UNUSED(frame);
- Q_UNUSED(childFrame);
-
- // used to give a failing assertion
- table->remove(2, 5);
- QVERIFY(true);
-}
-
-void tst_QTextPieceTable::clearWithFrames()
-{
- /*
- The piecetable layout is:
-
- ...
- 1 BeginningOfFrame(first frame)
- 2 text
- 3 EndOfFrame(first frame)
- 4 BeginningOfFrame(second frame)
- 5 text
- 6 text
- 7 EndOfFrame(second frame)
- ...
-
- The idea is to remove from [1] until [7].
- */
- QTextFrameFormat ffmt;
- table->insert(0, "Hello World", charFormatIndex);
-
- QTextFrame *firstFrame = table->insertFrame(1, 2, ffmt);
- QTextFrame *secondFrame = table->insertFrame(4, 6, ffmt);
-
- const int start = firstFrame->firstPosition() - 1;
- const int end = secondFrame->lastPosition();
- const int length = end - start + 1;
- // used to give a failing assertion
- table->remove(start, length);
- QVERIFY(true);
-}
-
-QTEST_MAIN(tst_QTextPieceTable)
-
-
-#include "tst_qtextpiecetable.moc"
-
diff --git a/tests/auto/qtextstream/tst_qtextstream.cpp b/tests/auto/qtextstream/tst_qtextstream.cpp
deleted file mode 100644
index ae7fa0b5dd..0000000000
--- a/tests/auto/qtextstream/tst_qtextstream.cpp
+++ /dev/null
@@ -1,2919 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-/*-*-encoding:latin1-*-*/
-//#include <iostream>
-//using namespace std;
-
-#include <QtTest/QtTest>
-
-#ifdef Q_OS_UNIX
-#include <locale.h>
-#endif
-
-#include <QBuffer>
-#include <QByteArray>
-#include <QCoreApplication>
-#include <QDebug>
-#include <QFile>
-#include <QTcpSocket>
-#include <QTextStream>
-#include <QTextCodec>
-#include <QProcess>
-
-#include "../network-settings.h"
-
-static const char *TestFileName = "testfile";
-
-Q_DECLARE_METATYPE(qlonglong)
-Q_DECLARE_METATYPE(qulonglong)
-Q_DECLARE_METATYPE(QList<int>)
-
-QT_BEGIN_NAMESPACE
-template<> struct QMetaTypeId<QIODevice::OpenModeFlag>
-{ enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Int; } };
-QT_END_NAMESPACE
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-#ifdef Q_OS_SYMBIAN
-#define SRCDIR ""
-#endif
-
-class tst_QTextStream : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QTextStream();
- virtual ~tst_QTextStream();
-
-public slots:
- void init();
- void cleanup();
-
-private slots:
- void getSetCheck();
- void construction();
-
- // lines
- void readLineFromDevice_data();
- void readLineFromDevice();
- void readLineFromString_data();
- void readLineFromString();
- void readLineFromTextDevice_data();
- void readLineFromTextDevice();
- void readLineUntilNull();
- void readLineMaxlen_data();
- void readLineMaxlen();
- void readLinesFromBufferCRCR();
-
- // all
- void readAllFromDevice_data();
- void readAllFromDevice();
- void readAllFromString_data();
- void readAllFromString();
- void readLineFromStringThenChangeString();
-
- // device tests
- void setDevice();
-
- // char operators
- void QChar_operators_FromDevice_data();
- void QChar_operators_FromDevice();
- void char_operators_FromDevice_data();
- void char_operators_FromDevice();
-
- // natural number read operator
- void signedShort_read_operator_FromDevice_data();
- void signedShort_read_operator_FromDevice();
- void unsignedShort_read_operator_FromDevice_data();
- void unsignedShort_read_operator_FromDevice();
- void signedInt_read_operator_FromDevice_data();
- void signedInt_read_operator_FromDevice();
- void unsignedInt_read_operator_FromDevice_data();
- void unsignedInt_read_operator_FromDevice();
- void qlonglong_read_operator_FromDevice_data();
- void qlonglong_read_operator_FromDevice();
- void qulonglong_read_operator_FromDevice_data();
- void qulonglong_read_operator_FromDevice();
-
- // natural number write operator
- void signedShort_write_operator_ToDevice_data();
- void signedShort_write_operator_ToDevice();
- void unsignedShort_write_operator_ToDevice_data();
- void unsignedShort_write_operator_ToDevice();
- void signedInt_write_operator_ToDevice_data();
- void signedInt_write_operator_ToDevice();
- void unsignedInt_write_operator_ToDevice_data();
- void unsignedInt_write_operator_ToDevice();
- void qlonglong_write_operator_ToDevice_data();
- void qlonglong_write_operator_ToDevice();
- void qulonglong_write_operator_ToDevice_data();
- void qulonglong_write_operator_ToDevice();
-
- void int_read_with_locale_data();
- void int_read_with_locale();
-
- void int_write_with_locale_data();
- void int_write_with_locale();
-
- // real number read operator
- void float_read_operator_FromDevice_data();
- void float_read_operator_FromDevice();
- void double_read_operator_FromDevice_data();
- void double_read_operator_FromDevice();
-
- // real number write operator
- void float_write_operator_ToDevice_data();
- void float_write_operator_ToDevice();
- void double_write_operator_ToDevice_data();
- void double_write_operator_ToDevice();
-
- void double_write_with_flags_data();
- void double_write_with_flags();
-
- void double_write_with_precision_data();
- void double_write_with_precision();
-
- // text read operators
- void charPtr_read_operator_FromDevice_data();
- void charPtr_read_operator_FromDevice();
- void stringRef_read_operator_FromDevice_data();
- void stringRef_read_operator_FromDevice();
- void byteArray_read_operator_FromDevice_data();
- void byteArray_read_operator_FromDevice();
-
- // text write operators
- void string_write_operator_ToDevice_data();
- void string_write_operator_ToDevice();
-
- // other
- void skipWhiteSpace_data();
- void skipWhiteSpace();
- void lineCount_data();
- void lineCount();
- void performance();
- void hexTest_data();
- void hexTest();
- void binTest_data();
- void binTest();
- void octTest_data();
- void octTest();
- void zeroTermination();
- void ws_manipulator();
- void stillOpenWhenAtEnd();
- void readNewlines_data();
- void readNewlines();
- void seek();
- void pos();
- void pos2();
- void pos3LargeFile();
- void readStdin();
- void readAllFromStdin();
- void readLineFromStdin();
- void read();
- void qbool();
- void forcePoint();
- void forceSign();
- void read0d0d0a();
- void numeralCase_data();
- void numeralCase();
- void nanInf();
- void utf8IncompleteAtBufferBoundary_data();
- void utf8IncompleteAtBufferBoundary();
- void writeSeekWriteNoBOM();
-
- // status
- void status_real_read_data();
- void status_real_read();
- void status_integer_read();
- void status_word_read();
- void status_write_error();
-
- // use case tests
- void useCase1();
- void useCase2();
-
- // manipulators
- void manipulators_data();
- void manipulators();
-
- // UTF-16 BOM (Byte Order Mark)
- void generateBOM();
- void readBomSeekBackReadBomAgain();
-
- // task-specific tests
- void task180679_alignAccountingStyle();
- void task178772_setCodec();
-
-private:
- void generateLineData(bool for_QString);
- void generateAllData(bool for_QString);
- void generateOperatorCharData(bool for_QString);
- void generateNaturalNumbersData(bool for_QString);
- void generateRealNumbersData(bool for_QString);
- void generateStringData(bool for_QString);
- void generateRealNumbersDataWrite();
-};
-
-// Testing get/set functions
-void tst_QTextStream::getSetCheck()
-{
- // Initialize codecs
- int argc = 0;
- char **argv = 0;
- QCoreApplication app(argc, argv);
-
- QTextStream obj1;
- // QTextCodec * QTextStream::codec()
- // void QTextStream::setCodec(QTextCodec *)
- QTextCodec *var1 = QTextCodec::codecForName("en");
- obj1.setCodec(var1);
- QCOMPARE(var1, obj1.codec());
- obj1.setCodec((QTextCodec *)0);
- QCOMPARE((QTextCodec *)0, obj1.codec());
-
- // bool QTextStream::autoDetectUnicode()
- // void QTextStream::setAutoDetectUnicode(bool)
- obj1.setAutoDetectUnicode(false);
- QCOMPARE(false, obj1.autoDetectUnicode());
- obj1.setAutoDetectUnicode(true);
- QCOMPARE(true, obj1.autoDetectUnicode());
-
- // bool QTextStream::generateByteOrderMark()
- // void QTextStream::setGenerateByteOrderMark(bool)
- obj1.setGenerateByteOrderMark(false);
- QCOMPARE(false, obj1.generateByteOrderMark());
- obj1.setGenerateByteOrderMark(true);
- QCOMPARE(true, obj1.generateByteOrderMark());
-
- // QIODevice * QTextStream::device()
- // void QTextStream::setDevice(QIODevice *)
- QFile *var4 = new QFile;
- obj1.setDevice(var4);
- QCOMPARE(static_cast<QIODevice *>(var4), obj1.device());
- obj1.setDevice((QIODevice *)0);
- QCOMPARE((QIODevice *)0, obj1.device());
- delete var4;
-
- // Status QTextStream::status()
- // void QTextStream::setStatus(Status)
- obj1.setStatus(QTextStream::Status(QTextStream::Ok));
- QCOMPARE(QTextStream::Status(QTextStream::Ok), obj1.status());
- obj1.setStatus(QTextStream::Status(QTextStream::ReadPastEnd));
- QCOMPARE(QTextStream::Status(QTextStream::ReadPastEnd), obj1.status());
- obj1.resetStatus();
- obj1.setStatus(QTextStream::Status(QTextStream::ReadCorruptData));
- QCOMPARE(QTextStream::Status(QTextStream::ReadCorruptData), obj1.status());
-
- // FieldAlignment QTextStream::fieldAlignment()
- // void QTextStream::setFieldAlignment(FieldAlignment)
- obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignLeft));
- QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignLeft), obj1.fieldAlignment());
- obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignRight));
- QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignRight), obj1.fieldAlignment());
- obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignCenter));
- QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignCenter), obj1.fieldAlignment());
- obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignAccountingStyle));
- QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignAccountingStyle), obj1.fieldAlignment());
-
- // QChar QTextStream::padChar()
- // void QTextStream::setPadChar(QChar)
- QChar var7 = 'Q';
- obj1.setPadChar(var7);
- QCOMPARE(var7, obj1.padChar());
- obj1.setPadChar(QChar());
- QCOMPARE(QChar(), obj1.padChar());
-
- // int QTextStream::fieldWidth()
- // void QTextStream::setFieldWidth(int)
- obj1.setFieldWidth(0);
- QCOMPARE(0, obj1.fieldWidth());
- obj1.setFieldWidth(INT_MIN);
- QCOMPARE(INT_MIN, obj1.fieldWidth());
- obj1.setFieldWidth(INT_MAX);
- QCOMPARE(INT_MAX, obj1.fieldWidth());
-
- // NumberFlags QTextStream::numberFlags()
- // void QTextStream::setNumberFlags(NumberFlags)
- obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ShowBase));
- QCOMPARE(QTextStream::NumberFlags(QTextStream::ShowBase), obj1.numberFlags());
- obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ForcePoint));
- QCOMPARE(QTextStream::NumberFlags(QTextStream::ForcePoint), obj1.numberFlags());
- obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ForceSign));
- QCOMPARE(QTextStream::NumberFlags(QTextStream::ForceSign), obj1.numberFlags());
- obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::UppercaseBase));
- QCOMPARE(QTextStream::NumberFlags(QTextStream::UppercaseBase), obj1.numberFlags());
- obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::UppercaseDigits));
- QCOMPARE(QTextStream::NumberFlags(QTextStream::UppercaseDigits), obj1.numberFlags());
-
- // int QTextStream::integerBase()
- // void QTextStream::setIntegerBase(int)
- obj1.setIntegerBase(0);
- QCOMPARE(0, obj1.integerBase());
- obj1.setIntegerBase(INT_MIN);
- QCOMPARE(INT_MIN, obj1.integerBase());
- obj1.setIntegerBase(INT_MAX);
- QCOMPARE(INT_MAX, obj1.integerBase());
-
- // RealNumberNotation QTextStream::realNumberNotation()
- // void QTextStream::setRealNumberNotation(RealNumberNotation)
- obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::SmartNotation));
- QCOMPARE(QTextStream::RealNumberNotation(QTextStream::SmartNotation), obj1.realNumberNotation());
- obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::FixedNotation));
- QCOMPARE(QTextStream::RealNumberNotation(QTextStream::FixedNotation), obj1.realNumberNotation());
- obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::ScientificNotation));
- QCOMPARE(QTextStream::RealNumberNotation(QTextStream::ScientificNotation), obj1.realNumberNotation());
-
- // int QTextStream::realNumberPrecision()
- // void QTextStream::setRealNumberPrecision(int)
- obj1.setRealNumberPrecision(0);
- QCOMPARE(0, obj1.realNumberPrecision());
- obj1.setRealNumberPrecision(INT_MIN);
- QCOMPARE(6, obj1.realNumberPrecision()); // Setting a negative precision reverts it to the default value (6).
- obj1.setRealNumberPrecision(INT_MAX);
- QCOMPARE(INT_MAX, obj1.realNumberPrecision());
-}
-
-tst_QTextStream::tst_QTextStream()
-{
- Q_SET_DEFAULT_IAP
-}
-
-tst_QTextStream::~tst_QTextStream()
-{
-}
-
-void tst_QTextStream::init()
-{
-}
-
-void tst_QTextStream::cleanup()
-{
- QCoreApplication::instance()->processEvents();
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::construction()
-{
- QTextStream stream;
- QCOMPARE(stream.codec(), QTextCodec::codecForLocale());
- QCOMPARE(stream.device(), static_cast<QIODevice *>(0));
- QCOMPARE(stream.string(), static_cast<QString *>(0));
-
- QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
- QVERIFY(stream.atEnd());
-
- QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
- QCOMPARE(stream.readAll(), QString());
-
-}
-
-void tst_QTextStream::generateLineData(bool for_QString)
-{
- QTest::addColumn<QByteArray>("data");
- QTest::addColumn<QStringList>("lines");
-
- // latin-1
- QTest::newRow("emptyer") << QByteArray() << QStringList();
- QTest::newRow("lf") << QByteArray("\n") << (QStringList() << "");
- QTest::newRow("crlf") << QByteArray("\r\n") << (QStringList() << "");
- QTest::newRow("oneline/nothing") << QByteArray("ole") << (QStringList() << "ole");
- QTest::newRow("oneline/lf") << QByteArray("ole\n") << (QStringList() << "ole");
- QTest::newRow("oneline/crlf") << QByteArray("ole\r\n") << (QStringList() << "ole");
- QTest::newRow("twolines/lf/lf") << QByteArray("ole\ndole\n") << (QStringList() << "ole" << "dole");
- QTest::newRow("twolines/crlf/crlf") << QByteArray("ole\r\ndole\r\n") << (QStringList() << "ole" << "dole");
- QTest::newRow("twolines/lf/crlf") << QByteArray("ole\ndole\r\n") << (QStringList() << "ole" << "dole");
- QTest::newRow("twolines/lf/nothing") << QByteArray("ole\ndole") << (QStringList() << "ole" << "dole");
- QTest::newRow("twolines/crlf/nothing") << QByteArray("ole\r\ndole") << (QStringList() << "ole" << "dole");
- QTest::newRow("threelines/lf/lf/lf") << QByteArray("ole\ndole\ndoffen\n") << (QStringList() << "ole" << "dole" << "doffen");
- QTest::newRow("threelines/crlf/crlf/crlf") << QByteArray("ole\r\ndole\r\ndoffen\r\n") << (QStringList() << "ole" << "dole" << "doffen");
- QTest::newRow("threelines/crlf/crlf/nothing") << QByteArray("ole\r\ndole\r\ndoffen") << (QStringList() << "ole" << "dole" << "doffen");
-
- if (!for_QString) {
- // utf-8
- QTest::newRow("utf8/twolines")
- << QByteArray("\xef\xbb\xbf"
- "\x66\x67\x65\x0a"
- "\x66\x67\x65\x0a", 11)
- << (QStringList() << "fge" << "fge");
-
- // utf-16
- // one line
- QTest::newRow("utf16-BE/nothing")
- << QByteArray("\xfe\xff"
- "\x00\xe5\x00\x67\x00\x65", 8) << (QStringList() << "\345ge");
- QTest::newRow("utf16-LE/nothing")
- << QByteArray("\xff\xfe"
- "\xe5\x00\x67\x00\x65\x00", 8) << (QStringList() << "\345ge");
- QTest::newRow("utf16-BE/lf")
- << QByteArray("\xfe\xff"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a", 10) << (QStringList() << "\345ge");
- QTest::newRow("utf16-LE/lf")
- << QByteArray("\xff\xfe"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00", 10) << (QStringList() << "\345ge");
-
- // two lines
- QTest::newRow("utf16-BE/twolines")
- << QByteArray("\xfe\xff"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a", 18)
- << (QStringList() << "\345ge" << "\345ge");
- QTest::newRow("utf16-LE/twolines")
- << QByteArray("\xff\xfe"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00", 18)
- << (QStringList() << "\345ge" << "\345ge");
-
- // three lines
- QTest::newRow("utf16-BE/threelines")
- << QByteArray("\xfe\xff"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a", 26)
- << (QStringList() << "\345ge" << "\345ge" << "\345ge");
- QTest::newRow("utf16-LE/threelines")
- << QByteArray("\xff\xfe"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00", 26)
- << (QStringList() << "\345ge" << "\345ge" << "\345ge");
-
- // utf-32
- QTest::newRow("utf32-BE/twolines")
- << QByteArray("\x00\x00\xfe\xff"
- "\x00\x00\x00\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a"
- "\x00\x00\x00\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a", 36)
- << (QStringList() << "\345ge" << "\345ge");
- QTest::newRow("utf32-LE/twolines")
- << QByteArray("\xff\xfe\x00\x00"
- "\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a\x00\x00\x00"
- "\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a\x00\x00\x00", 36)
- << (QStringList() << "\345ge" << "\345ge");
- }
-
- // partials
- QTest::newRow("cr") << QByteArray("\r") << (QStringList() << "");
- QTest::newRow("oneline/cr") << QByteArray("ole\r") << (QStringList() << "ole");
- if (!for_QString)
- QTest::newRow("utf16-BE/cr") << QByteArray("\xfe\xff\x00\xe5\x00\x67\x00\x65\x00\x0d", 10) << (QStringList() << "\345ge");
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLineFromDevice_data()
-{
- generateLineData(false);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLineFromDevice()
-{
- QFETCH(QByteArray, data);
- QFETCH(QStringList, lines);
-
- QFile::remove(TestFileName);
- QFile file(TestFileName);
- QVERIFY(file.open(QFile::ReadWrite));
- QCOMPARE(file.write(data), qlonglong(data.size()));
- QVERIFY(file.flush());
- file.seek(0);
-
- QTextStream stream(&file);
- QStringList list;
- while (!stream.atEnd())
- list << stream.readLine();
-
- QCOMPARE(list, lines);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLineMaxlen_data()
-{
- QTest::addColumn<QString>("input");
- QTest::addColumn<QStringList>("lines");
-
- QTest::newRow("Hey")
- << QString("Hey")
- << (QStringList() << QString("Hey") << QString(""));
- QTest::newRow("Hey\\n")
- << QString("Hey\n")
- << (QStringList() << QString("Hey") << QString(""));
- QTest::newRow("HelloWorld")
- << QString("HelloWorld")
- << (QStringList() << QString("Hello") << QString("World"));
- QTest::newRow("Helo\\nWorlds")
- << QString("Helo\nWorlds")
- << (QStringList() << QString("Helo") << QString("World"));
- QTest::newRow("AAAAA etc.")
- << QString(16385, QLatin1Char('A'))
- << (QStringList() << QString("AAAAA") << QString("AAAAA"));
- QTest::newRow("multibyte string")
- << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242\341\233\232\341\232\240\n")
- << (QStringList() << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242")
- << QString::fromUtf8("\341\233\232\341\232\240"));
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLineMaxlen()
-{
- QFETCH(QString, input);
- QFETCH(QStringList, lines);
- for (int i = 0; i < 2; ++i) {
- bool useDevice = (i == 1);
- QTextStream stream;
- QFile::remove("testfile");
- QFile file("testfile");
- if (useDevice) {
- file.open(QIODevice::ReadWrite);
- file.write(input.toUtf8());
- file.seek(0);
- stream.setDevice(&file);
- stream.setCodec("utf-8");
- } else {
- stream.setString(&input);
- }
-
- QStringList list;
- list << stream.readLine(5);
- list << stream.readLine(5);
-
- QCOMPARE(list, lines);
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLinesFromBufferCRCR()
-{
- QBuffer buffer;
- buffer.open(QIODevice::WriteOnly);
- QByteArray data("0123456789\r\r\n");
-
- for (int i = 0; i < 10000; ++i)
- buffer.write(data);
-
- buffer.close();
- if (buffer.open(QIODevice::ReadOnly|QIODevice::Text)) {
- QTextStream stream(&buffer);
- while (!stream.atEnd())
- QCOMPARE(stream.readLine(), QString("0123456789"));
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLineFromString_data()
-{
- generateLineData(true);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLineFromString()
-{
- QFETCH(QByteArray, data);
- QFETCH(QStringList, lines);
-
- QString dataString = data;
-
- QTextStream stream(&dataString, QIODevice::ReadOnly);
- QStringList list;
- while (!stream.atEnd())
- list << stream.readLine();
-
- QCOMPARE(list, lines);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLineFromStringThenChangeString()
-{
- QString first = "First string";
- QString second = "Second string";
-
- QTextStream stream(&first, QIODevice::ReadOnly);
- QString result = stream.readLine();
- QCOMPARE(first, result);
-
- stream.setString(&second, QIODevice::ReadOnly);
- result = stream.readLine();
- QCOMPARE(second, result);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::setDevice()
-{
- // Check that the read buffer is reset after setting a new device
- QByteArray data1("Hello World");
- QByteArray data2("How are you");
-
- QBuffer bufferOld(&data1);
- bufferOld.open(QIODevice::ReadOnly);
-
- QBuffer bufferNew(&data2);
- bufferNew.open(QIODevice::ReadOnly);
-
- QString text;
- QTextStream stream(&bufferOld);
- stream >> text;
- QCOMPARE(text, QString("Hello"));
-
- stream.setDevice(&bufferNew);
- stream >> text;
- QCOMPARE(text, QString("How"));
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLineFromTextDevice_data()
-{
- generateLineData(false);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLineFromTextDevice()
-{
- QFETCH(QByteArray, data);
- QFETCH(QStringList, lines);
-
- for (int i = 0; i < 8; ++i) {
- QBuffer buffer(&data);
- if (i < 4)
- QVERIFY(buffer.open(QIODevice::ReadOnly | QIODevice::Text));
- else
- QVERIFY(buffer.open(QIODevice::ReadOnly));
-
- QTextStream stream(&buffer);
- QStringList list;
- while (!stream.atEnd()) {
- stream.pos(); // <- triggers side effects
- QString line;
-
- if (i & 1) {
- QChar c;
- while (!stream.atEnd()) {
- stream >> c;
- if (stream.status() == QTextStream::Ok) {
- if (c != QLatin1Char('\n') && c != QLatin1Char('\r'))
- line += c;
- if (c == QLatin1Char('\n'))
- break;
- }
- }
- } else {
- line = stream.readLine();
- }
-
- if ((i & 3) == 3 && !QString(QTest::currentDataTag()).contains("utf16"))
- stream.seek(stream.pos());
- list << line;
- }
- QCOMPARE(list, lines);
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::generateAllData(bool for_QString)
-{
- QTest::addColumn<QByteArray>("input");
- QTest::addColumn<QString>("output");
-
- // latin-1
- QTest::newRow("empty") << QByteArray() << QString();
- QTest::newRow("latin1-a") << QByteArray("a") << QString("a");
- QTest::newRow("latin1-a\\r") << QByteArray("a\r") << QString("a\r");
- QTest::newRow("latin1-a\\r\\n") << QByteArray("a\r\n") << QString("a\r\n");
- QTest::newRow("latin1-a\\n") << QByteArray("a\n") << QString("a\n");
-
- // utf-16
- if (!for_QString) {
- // one line
- QTest::newRow("utf16-BE/nothing")
- << QByteArray("\xfe\xff"
- "\x00\xe5\x00\x67\x00\x65", 8) << QString("\345ge");
- QTest::newRow("utf16-LE/nothing")
- << QByteArray("\xff\xfe"
- "\xe5\x00\x67\x00\x65\x00", 8) << QString("\345ge");
- QTest::newRow("utf16-BE/lf")
- << QByteArray("\xfe\xff"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a", 10) << QString("\345ge\n");
- QTest::newRow("utf16-LE/lf")
- << QByteArray("\xff\xfe"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00", 10) << QString("\345ge\n");
- QTest::newRow("utf16-BE/crlf")
- << QByteArray("\xfe\xff"
- "\x00\xe5\x00\x67\x00\x65\x00\x0d\x00\x0a", 12) << QString("\345ge\r\n");
- QTest::newRow("utf16-LE/crlf")
- << QByteArray("\xff\xfe"
- "\xe5\x00\x67\x00\x65\x00\x0d\x00\x0a\x00", 12) << QString("\345ge\r\n");
-
- // two lines
- QTest::newRow("utf16-BE/twolines")
- << QByteArray("\xfe\xff"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a", 18)
- << QString("\345ge\n\345ge\n");
- QTest::newRow("utf16-LE/twolines")
- << QByteArray("\xff\xfe"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00", 18)
- << QString("\345ge\n\345ge\n");
-
- // three lines
- QTest::newRow("utf16-BE/threelines")
- << QByteArray("\xfe\xff"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a"
- "\x00\xe5\x00\x67\x00\x65\x00\x0a", 26)
- << QString("\345ge\n\345ge\n\345ge\n");
- QTest::newRow("utf16-LE/threelines")
- << QByteArray("\xff\xfe"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00"
- "\xe5\x00\x67\x00\x65\x00\x0a\x00", 26)
- << QString("\345ge\n\345ge\n\345ge\n");
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLineUntilNull()
-{
- QFile file(SRCDIR "rfc3261.txt");
- QVERIFY(file.open(QFile::ReadOnly));
-
- QTextStream stream(&file);
- for (int i = 0; i < 15066; ++i) {
- QString line = stream.readLine();
- QVERIFY(!line.isNull());
- QVERIFY(!line.isNull());
- }
- QVERIFY(!stream.readLine().isNull());
- QVERIFY(stream.readLine().isNull());
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readAllFromDevice_data()
-{
- generateAllData(false);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readAllFromDevice()
-{
- QFETCH(QByteArray, input);
- QFETCH(QString, output);
-
- QBuffer buffer(&input);
- buffer.open(QBuffer::ReadOnly);
-
- QTextStream stream(&buffer);
- QCOMPARE(stream.readAll(), output);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readAllFromString_data()
-{
- generateAllData(true);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readAllFromString()
-{
- QFETCH(QByteArray, input);
- QFETCH(QString, output);
-
- QString str = input;
-
- QTextStream stream(&str);
- QCOMPARE(stream.readAll(), output);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::skipWhiteSpace_data()
-{
- QTest::addColumn<QByteArray>("input");
- QTest::addColumn<QChar>("output");
-
- // latin1
- QTest::newRow("empty") << QByteArray() << QChar('\0');
- QTest::newRow(" one") << QByteArray(" one") << QChar('o');
- QTest::newRow("\\none") << QByteArray("\none") << QChar('o');
- QTest::newRow("\\n one") << QByteArray("\n one") << QChar('o');
- QTest::newRow(" \\r\\n one") << QByteArray(" \r\n one") << QChar('o');
-
- // utf-16
- QTest::newRow("utf16-BE (empty)") << QByteArray("\xfe\xff", 2) << QChar('\0');
- QTest::newRow("utf16-BE ( one)") << QByteArray("\xfe\xff\x00 \x00o\x00n\x00e", 10) << QChar('o');
- QTest::newRow("utf16-BE (\\none)") << QByteArray("\xfe\xff\x00\n\x00o\x00n\x00e", 10) << QChar('o');
- QTest::newRow("utf16-BE (\\n one)") << QByteArray("\xfe\xff\x00\n\x00 \x00o\x00n\x00e", 12) << QChar('o');
- QTest::newRow("utf16-BE ( \\r\\n one)") << QByteArray("\xfe\xff\x00 \x00\r\x00\n\x00 \x00o\x00n\x00e", 20) << QChar('o');
-
- QTest::newRow("utf16-LE (empty)") << QByteArray("\xff\xfe", 2) << QChar('\0');
- QTest::newRow("utf16-LE ( one)") << QByteArray("\xff\xfe \x00o\x00n\x00e\x00", 10) << QChar('o');
- QTest::newRow("utf16-LE (\\none)") << QByteArray("\xff\xfe\n\x00o\x00n\x00e\x00", 10) << QChar('o');
- QTest::newRow("utf16-LE (\\n one)") << QByteArray("\xff\xfe\n\x00 \x00o\x00n\x00e\x00", 12) << QChar('o');
- QTest::newRow("utf16-LE ( \\r\\n one)") << QByteArray("\xff\xfe \x00\r\x00\n\x00 \x00o\x00n\x00e\x00", 20) << QChar('o');
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::skipWhiteSpace()
-{
- QFETCH(QByteArray, input);
- QFETCH(QChar, output);
-
- QBuffer buffer(&input);
- buffer.open(QBuffer::ReadOnly);
-
- QTextStream stream(&buffer);
- stream.skipWhiteSpace();
-
- QChar tmp;
- stream >> tmp;
-
- QCOMPARE(tmp, output);
-
- QString str = input;
- QTextStream stream2(&input);
- stream2.skipWhiteSpace();
-
- stream2 >> tmp;
-
- QCOMPARE(tmp, output);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::lineCount_data()
-{
- QTest::addColumn<QByteArray>("data");
- QTest::addColumn<int>("lineCount");
-
- QTest::newRow("empty") << QByteArray() << 0;
- QTest::newRow("oneline") << QByteArray("a\n") << 1;
- QTest::newRow("twolines") << QByteArray("a\nb\n") << 2;
- QTest::newRow("oneemptyline") << QByteArray("\n") << 1;
- QTest::newRow("twoemptylines") << QByteArray("\n\n") << 2;
- QTest::newRow("buffersize-1 line") << QByteArray(16382, '\n') << 16382;
- QTest::newRow("buffersize line") << QByteArray(16383, '\n') << 16383;
- QTest::newRow("buffersize+1 line") << QByteArray(16384, '\n') << 16384;
- QTest::newRow("buffersize+2 line") << QByteArray(16385, '\n') << 16385;
-
- QFile file(SRCDIR "rfc3261.txt"); file.open(QFile::ReadOnly);
- QTest::newRow("rfc3261") << file.readAll() << 15067;
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::lineCount()
-{
- QFETCH(QByteArray, data);
- QFETCH(int, lineCount);
-
- QFile out("out.txt");
- out.open(QFile::WriteOnly);
-
- QTextStream lineReader(data);
- int lines = 0;
- while (!lineReader.atEnd()) {
- QString line = lineReader.readLine();
- out.write(line.toLatin1() + "\n");
- ++lines;
- }
-
- out.close();
- QCOMPARE(lines, lineCount);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::performance()
-{
- // Phase #1 - test speed of reading a huge text file with QFile.
- QTime stopWatch;
-
- int elapsed1 = 0;
- int elapsed2 = 0;
-
- stopWatch.restart();
- int nlines1 = 0;
- QFile file(SRCDIR "rfc3261.txt");
- QVERIFY(file.open(QFile::ReadOnly));
-
- while (!file.atEnd()) {
- ++nlines1;
- file.readLine();
- }
-
- elapsed1 += stopWatch.elapsed();
- stopWatch.restart();
-
- int nlines2 = 0;
- QFile file2(SRCDIR "rfc3261.txt");
- QVERIFY(file2.open(QFile::ReadOnly));
-
- QTextStream stream(&file2);
- while (!stream.atEnd()) {
- ++nlines2;
- stream.readLine();
- }
-
- elapsed2 += stopWatch.elapsed();
- QCOMPARE(nlines1, nlines2);
-
- qDebug("QFile used %.2f seconds to read the file",
- elapsed1 / 1000.0);
-
- qDebug("QTextStream used %.2f seconds to read the file",
- elapsed2 / 1000.0);
- if (elapsed2 > elapsed1) {
- qDebug("QFile is %.2fx faster than QTextStream",
- double(elapsed2) / double(elapsed1));
- } else {
- qDebug("QTextStream is %.2fx faster than QFile",
- double(elapsed1) / double(elapsed2));
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::hexTest_data()
-{
- QTest::addColumn<qlonglong>("number");
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("0") << Q_INT64_C(0) << QByteArray("0x0");
- QTest::newRow("1") << Q_INT64_C(1) << QByteArray("0x1");
- QTest::newRow("2") << Q_INT64_C(2) << QByteArray("0x2");
- QTest::newRow("3") << Q_INT64_C(3) << QByteArray("0x3");
- QTest::newRow("4") << Q_INT64_C(4) << QByteArray("0x4");
- QTest::newRow("5") << Q_INT64_C(5) << QByteArray("0x5");
- QTest::newRow("6") << Q_INT64_C(6) << QByteArray("0x6");
- QTest::newRow("7") << Q_INT64_C(7) << QByteArray("0x7");
- QTest::newRow("8") << Q_INT64_C(8) << QByteArray("0x8");
- QTest::newRow("9") << Q_INT64_C(9) << QByteArray("0x9");
- QTest::newRow("a") << Q_INT64_C(0xa) << QByteArray("0xa");
- QTest::newRow("b") << Q_INT64_C(0xb) << QByteArray("0xb");
- QTest::newRow("c") << Q_INT64_C(0xc) << QByteArray("0xc");
- QTest::newRow("d") << Q_INT64_C(0xd) << QByteArray("0xd");
- QTest::newRow("e") << Q_INT64_C(0xe) << QByteArray("0xe");
- QTest::newRow("f") << Q_INT64_C(0xf) << QByteArray("0xf");
- QTest::newRow("-1") << Q_INT64_C(-1) << QByteArray("-0x1");
- QTest::newRow("0xffffffff") << Q_INT64_C(0xffffffff) << QByteArray("0xffffffff");
- QTest::newRow("0xfffffffffffffffe") << Q_INT64_C(0xfffffffffffffffe) << QByteArray("-0x2");
- QTest::newRow("0xffffffffffffffff") << Q_INT64_C(0xffffffffffffffff) << QByteArray("-0x1");
- QTest::newRow("0x7fffffffffffffff") << Q_INT64_C(0x7fffffffffffffff) << QByteArray("0x7fffffffffffffff");
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::hexTest()
-{
- QFETCH(qlonglong, number);
- QFETCH(QByteArray, data);
-
- QByteArray array;
- QTextStream stream(&array);
-
- stream << showbase << hex << number;
- stream.flush();
- QCOMPARE(array, data);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::binTest_data()
-{
- QTest::addColumn<int>("number");
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("0") << 0 << QByteArray("0b0");
- QTest::newRow("1") << 1 << QByteArray("0b1");
- QTest::newRow("2") << 2 << QByteArray("0b10");
- QTest::newRow("5") << 5 << QByteArray("0b101");
- QTest::newRow("-1") << -1 << QByteArray("-0b1");
- QTest::newRow("11111111") << 0xff << QByteArray("0b11111111");
- QTest::newRow("1111111111111111") << 0xffff << QByteArray("0b1111111111111111");
- QTest::newRow("1111111011111110") << 0xfefe << QByteArray("0b1111111011111110");
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::binTest()
-{
- QFETCH(int, number);
- QFETCH(QByteArray, data);
-
- QByteArray array;
- QTextStream stream(&array);
-
- stream << showbase << bin << number;
- stream.flush();
- QCOMPARE(array.constData(), data.constData());
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::octTest_data()
-{
- QTest::addColumn<int>("number");
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("0") << 0 << QByteArray("00");
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::octTest()
-{
- QFETCH(int, number);
- QFETCH(QByteArray, data);
-
- QByteArray array;
- QTextStream stream(&array);
-
- stream << showbase << oct << number;
- stream.flush();
- QCOMPARE(array, data);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::zeroTermination()
-{
- QTextStream stream;
- char c = '@';
-
- QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
- stream >> c;
- QCOMPARE(c, '\0');
-
- c = '@';
-
- QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
- stream >> &c;
- QCOMPARE(c, '\0');
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::ws_manipulator()
-{
- {
- QString string = "a b c d";
- QTextStream stream(&string);
-
- char a, b, c, d;
- stream >> a >> b >> c >> d;
- QCOMPARE(a, 'a');
- QCOMPARE(b, ' ');
- QCOMPARE(c, 'b');
- QCOMPARE(d, ' ');
- }
- {
- QString string = "a b c d";
- QTextStream stream(&string);
-
- char a, b, c, d;
- stream >> a >> ws >> b >> ws >> c >> ws >> d;
- QCOMPARE(a, 'a');
- QCOMPARE(b, 'b');
- QCOMPARE(c, 'c');
- QCOMPARE(d, 'd');
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::stillOpenWhenAtEnd()
-{
- int argc = 0;
- char **argv = 0;
- QCoreApplication app(argc, argv);
-
- QFile file(SRCDIR "tst_qtextstream.cpp");
- QVERIFY(file.open(QFile::ReadOnly));
-
- QTextStream stream(&file);
- while (!stream.readLine().isNull()) {}
- QVERIFY(file.isOpen());
-
-#ifdef Q_OS_WINCE
- QSKIP("Qt/CE: Cannot test network on emulator", SkipAll);
-#endif
- QTcpSocket socket;
- socket.connectToHost(QtNetworkSettings::serverName(), 143);
-#if defined(Q_OS_SYMBIAN)
- // This number is determined in an arbitrary way; whatever it takes
- // to make the test pass.
- QVERIFY(socket.waitForReadyRead(30000));
-#else
- QVERIFY(socket.waitForReadyRead(5000));
-#endif
-
- QTextStream stream2(&socket);
- while (!stream2.readLine().isNull()) {}
- QVERIFY(socket.isOpen());
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readNewlines_data()
-{
- QTest::addColumn<QByteArray>("input");
- QTest::addColumn<QString>("output");
-
- QTest::newRow("empty") << QByteArray() << QString();
- QTest::newRow("\\r\\n") << QByteArray("\r\n") << QString("\n");
- QTest::newRow("\\r\\r\\n") << QByteArray("\r\r\n") << QString("\n");
- QTest::newRow("\\r\\n\\r\\n") << QByteArray("\r\n\r\n") << QString("\n\n");
- QTest::newRow("\\n") << QByteArray("\n") << QString("\n");
- QTest::newRow("\\n\\n") << QByteArray("\n\n") << QString("\n\n");
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readNewlines()
-{
- QFETCH(QByteArray, input);
- QFETCH(QString, output);
-
- QBuffer buffer(&input);
- buffer.open(QBuffer::ReadOnly | QBuffer::Text);
- QTextStream stream(&buffer);
- QCOMPARE(stream.readAll(), output);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::seek()
-{
- QFile file(SRCDIR "rfc3261.txt");
- QVERIFY(file.open(QFile::ReadOnly));
-
- QTextStream stream(&file);
- QString tmp;
- stream >> tmp;
- QCOMPARE(tmp, QString::fromLatin1("Network"));
-
- // QTextStream::seek(0) should both clear its internal read/write buffers
- // and seek the device.
- for (int i = 0; i < 4; ++i) {
- stream.seek(12 + i);
- stream >> tmp;
- QCOMPARE(tmp, QString("Network").mid(i));
- }
- for (int i = 0; i < 4; ++i) {
- stream.seek(16 - i);
- stream >> tmp;
- QCOMPARE(tmp, QString("Network").mid(4 - i));
- }
- stream.seek(139181);
- stream >> tmp;
- QCOMPARE(tmp, QString("information"));
- stream.seek(388683);
- stream >> tmp;
- QCOMPARE(tmp, QString("telephone"));
-
- // Also test this with a string
- QString words = QLatin1String("thisisa");
- QTextStream stream2(&words, QIODevice::ReadOnly);
- stream2 >> tmp;
- QCOMPARE(tmp, QString::fromLatin1("thisisa"));
-
- for (int i = 0; i < 4; ++i) {
- stream2.seek(i);
- stream2 >> tmp;
- QCOMPARE(tmp, QString("thisisa").mid(i));
- }
- for (int i = 0; i < 4; ++i) {
- stream2.seek(4 - i);
- stream2 >> tmp;
- QCOMPARE(tmp, QString("thisisa").mid(4 - i));
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::pos()
-{
- int argc = 1;
- QCoreApplication app(argc, 0);
- {
- // Strings
- QString str("this is a test");
- QTextStream stream(&str, QIODevice::ReadWrite);
-
- QCOMPARE(stream.pos(), qint64(0));
- for (int i = 0; i <= str.size(); ++i) {
- QVERIFY(stream.seek(i));
- QCOMPARE(stream.pos(), qint64(i));
- }
- for (int j = str.size(); j >= 0; --j) {
- QVERIFY(stream.seek(j));
- QCOMPARE(stream.pos(), qint64(j));
- }
-
- QVERIFY(stream.seek(0));
-
- QChar ch;
- stream >> ch;
- QCOMPARE(ch, QChar('t'));
-
- QCOMPARE(stream.pos(), qint64(1));
- QVERIFY(stream.seek(1));
- QCOMPARE(stream.pos(), qint64(1));
- QVERIFY(stream.seek(0));
-
- QString strtmp;
- stream >> strtmp;
- QCOMPARE(strtmp, QString("this"));
-
- QCOMPARE(stream.pos(), qint64(4));
- stream.seek(0);
- stream.seek(4);
-
- stream >> ch;
- QCOMPARE(ch, QChar(' '));
- QCOMPARE(stream.pos(), qint64(5));
-
- stream.seek(10);
- stream >> strtmp;
- QCOMPARE(strtmp, QString("test"));
- QCOMPARE(stream.pos(), qint64(14));
- }
- {
- // Latin1 device
- QFile file(SRCDIR "rfc3261.txt");
- QVERIFY(file.open(QIODevice::ReadOnly));
-
- QTextStream stream(&file);
-
- QCOMPARE(stream.pos(), qint64(0));
-
- for (int i = 0; i <= file.size(); i += 7) {
- QVERIFY(stream.seek(i));
- QCOMPARE(stream.pos(), qint64(i));
- }
- for (int j = file.size(); j >= 0; j -= 7) {
- QVERIFY(stream.seek(j));
- QCOMPARE(stream.pos(), qint64(j));
- }
-
- stream.seek(0);
-
- QString strtmp;
- stream >> strtmp;
- QCOMPARE(strtmp, QString("Network"));
- QCOMPARE(stream.pos(), qint64(19));
-
- stream.seek(2598);
- QCOMPARE(stream.pos(), qint64(2598));
- stream >> strtmp;
- QCOMPARE(stream.pos(), qint64(2607));
- QCOMPARE(strtmp, QString("locations"));
- }
- {
- // Shift-JIS device
- for (int i = 0; i < 2; ++i) {
- QFile file(SRCDIR "shift-jis.txt");
- if (i == 0)
- QVERIFY(file.open(QIODevice::ReadOnly));
- else
- QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
-
- QTextStream stream(&file);
- stream.setCodec("Shift-JIS");
- QVERIFY(stream.codec());
-
- QCOMPARE(stream.pos(), qint64(0));
- for (int i = 0; i <= file.size(); i += 7) {
- QVERIFY(stream.seek(i));
- QCOMPARE(stream.pos(), qint64(i));
- }
- for (int j = file.size(); j >= 0; j -= 7) {
- QVERIFY(stream.seek(j));
- QCOMPARE(stream.pos(), qint64(j));
- }
-
- stream.seek(2089);
- QString strtmp;
- stream >> strtmp;
- QCOMPARE(strtmp, QString("AUnicode"));
- QCOMPARE(stream.pos(), qint64(2097));
-
- stream.seek(43325);
- stream >> strtmp;
- QCOMPARE(strtmp, QString("Shift-JIS"));
- stream >> strtmp;
- QCOMPARE(strtmp, QString::fromUtf8("\343\201\247\346\233\270\343\201\213\343\202\214\343\201\237"));
- QCOMPARE(stream.pos(), qint64(43345));
- stream >> strtmp;
- QCOMPARE(strtmp, QString("POD"));
- QCOMPARE(stream.pos(), qint64(43349));
- }
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::pos2()
-{
- QByteArray data("abcdef\r\nghijkl\r\n");
- QBuffer buffer(&data);
- QVERIFY(buffer.open(QIODevice::ReadOnly | QIODevice::Text));
-
- QTextStream stream(&buffer);
-
- QChar ch;
-
- QCOMPARE(stream.pos(), qint64(0));
- stream >> ch;
- QCOMPARE(ch, QChar('a'));
- QCOMPARE(stream.pos(), qint64(1));
-
- QString str;
- stream >> str;
- QCOMPARE(str, QString("bcdef"));
- QCOMPARE(stream.pos(), qint64(6));
-
- stream >> str;
- QCOMPARE(str, QString("ghijkl"));
- QCOMPARE(stream.pos(), qint64(14));
-
- // Seek back and try again
- stream.seek(1);
- QCOMPARE(stream.pos(), qint64(1));
- stream >> str;
- QCOMPARE(str, QString("bcdef"));
- QCOMPARE(stream.pos(), qint64(6));
-
- stream.seek(6);
- stream >> str;
- QCOMPARE(str, QString("ghijkl"));
- QCOMPARE(stream.pos(), qint64(14));
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::pos3LargeFile()
-{
- {
- QFile file(TestFileName);
- file.open(QIODevice::WriteOnly | QIODevice::Text);
- QTextStream out( &file );
- // NOTE: The unusual spacing is to ensure non-1-character whitespace.
- QString lineString = " 0 1 2\t3 4\t \t5 6 7 8 9 \n";
- // Approximate 50kb text file
- const int NbLines = (50*1024) / lineString.length() + 1;
- for (int line = 0; line < NbLines; ++line)
- out << lineString;
- // File is automatically flushed and closed on destruction.
- }
- QFile file(TestFileName);
- file.open(QIODevice::ReadOnly | QIODevice::Text);
- QTextStream in( &file );
- const int testValues[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- int value;
- while (true) {
- in.pos();
- for ( int i = 0; i < 10; ++i ) {
- in >> value;
- if (in.status() != QTextStream::Ok) {
- // End case, i == 0 && eof reached.
- QCOMPARE(i, 0);
- QCOMPARE(in.status(), QTextStream::ReadPastEnd);
- return;
- }
- QCOMPARE(value, testValues[i]);
- }
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readStdin()
-{
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QSKIP("Qt/CE and Symbian have no stdin/out support for processes", SkipAll);
-#endif
- QProcess stdinProcess;
- stdinProcess.start("stdinProcess/stdinProcess");
- stdinProcess.setReadChannel(QProcess::StandardError);
-
- QTextStream stream(&stdinProcess);
- stream << "1" << endl;
- stream << "2" << endl;
- stream << "3" << endl;
-
- stdinProcess.closeWriteChannel();
-
- QVERIFY(stdinProcess.waitForFinished(5000));
-
- int a, b, c;
- stream >> a >> b >> c;
- QCOMPARE(a, 1);
- QCOMPARE(b, 2);
- QCOMPARE(c, 3);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readAllFromStdin()
-{
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QSKIP("Qt/CE and Symbian have no stdin/out support for processes", SkipAll);
-#endif
- QProcess stdinProcess;
- stdinProcess.start("readAllStdinProcess/readAllStdinProcess", QIODevice::ReadWrite | QIODevice::Text);
- stdinProcess.setReadChannel(QProcess::StandardError);
-
- QTextStream stream(&stdinProcess);
- stream.setCodec("ISO-8859-1");
- stream << "hello world" << flush;
-
- stdinProcess.closeWriteChannel();
-
- QVERIFY(stdinProcess.waitForFinished(5000));
- QChar quoteChar('"');
- QCOMPARE(stream.readAll(), QString::fromLatin1("%1hello world%2 \n").arg(quoteChar).arg(quoteChar));
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::readLineFromStdin()
-{
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- QSKIP("Qt/CE and Symbian have no stdin/out support for processes", SkipAll);
-#endif
- QProcess stdinProcess;
- stdinProcess.start("readLineStdinProcess/readLineStdinProcess", QIODevice::ReadWrite | QIODevice::Text);
- stdinProcess.setReadChannel(QProcess::StandardError);
-
- stdinProcess.write("abc\n");
- QVERIFY(stdinProcess.waitForReadyRead(5000));
- QCOMPARE(stdinProcess.readAll().data(), QByteArray("abc").data());
-
- stdinProcess.write("def\n");
- QVERIFY(stdinProcess.waitForReadyRead(5000));
- QCOMPARE(stdinProcess.readAll(), QByteArray("def"));
-
- stdinProcess.closeWriteChannel();
-
- QVERIFY(stdinProcess.waitForFinished(5000));
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::read()
-{
- {
- QFile::remove("testfile");
- QFile file("testfile");
- file.open(QFile::WriteOnly);
- file.write("4.15 abc ole");
- file.close();
-
- QVERIFY(file.open(QFile::ReadOnly));
- QTextStream stream(&file);
- QCOMPARE(stream.read(0), QString(""));
- QCOMPARE(stream.read(4), QString("4.15"));
- QCOMPARE(stream.read(4), QString(" abc"));
- stream.seek(1);
- QCOMPARE(stream.read(4), QString(".15 "));
- stream.seek(1);
- QCOMPARE(stream.read(4), QString(".15 "));
- stream.seek(2);
- QCOMPARE(stream.read(4), QString("15 a"));
- // ### add tests for reading \r\n etc..
- }
-
- {
- // File larger than QTEXTSTREAM_BUFFERSIZE
- QFile::remove("testfile");
- QFile file("testfile");
- file.open(QFile::WriteOnly);
- for (int i = 0; i < 16384 / 8; ++i)
- file.write("01234567");
- file.write("0");
- file.close();
-
- QVERIFY(file.open(QFile::ReadOnly));
- QTextStream stream(&file);
- QCOMPARE(stream.read(10), QString("0123456701"));
- QCOMPARE(stream.read(10), QString("2345670123"));
- QCOMPARE(stream.readAll().size(), 16385-20);
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::qbool()
-{
- QString s;
- QTextStream stream(&s);
- stream << s.contains(QString("hei"));
- QCOMPARE(s, QString("0"));
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::forcePoint()
-{
- QString str;
- QTextStream stream(&str);
- stream << fixed << forcepoint << 1.0 << " " << 1 << " " << 0 << " " << -1.0 << " " << -1;
- QCOMPARE(str, QString("1.000000 1 0 -1.000000 -1"));
-
- str.clear();
- stream.seek(0);
- stream << scientific << forcepoint << 1.0 << " " << 1 << " " << 0 << " " << -1.0 << " " << -1;
- QCOMPARE(str, QString("1.000000e+00 1 0 -1.000000e+00 -1"));
-
- str.clear();
- stream.seek(0);
- stream.setRealNumberNotation(QTextStream::SmartNotation);
- stream << forcepoint << 1.0 << " " << 1 << " " << 0 << " " << -1.0 << " " << -1;
- QCOMPARE(str, QString("1.00000 1 0 -1.00000 -1"));
-
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::forceSign()
-{
- QString str;
- QTextStream stream(&str);
- stream << forcesign << 1.2 << " " << -1.2 << " " << 0;
- QCOMPARE(str, QString("+1.2 -1.2 +0"));
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::read0d0d0a()
-{
- QFile file("task113817.txt");
- file.open(QIODevice::ReadOnly | QIODevice::Text);
-
- QTextStream stream(&file);
- while (!stream.atEnd())
- stream.readLine();
-}
-
-// ------------------------------------------------------------------------------
-
-Q_DECLARE_METATYPE(QTextStreamFunction);
-
-QTextStream &noop(QTextStream &s) { return s; }
-
-void tst_QTextStream::numeralCase_data()
-{
- QTextStreamFunction noop_ = noop;
- QTextStreamFunction bin_ = bin;
- QTextStreamFunction oct_ = oct;
- QTextStreamFunction hex_ = hex;
- QTextStreamFunction base = showbase;
- QTextStreamFunction ucb = uppercasebase;
- QTextStreamFunction lcb = lowercasebase;
- QTextStreamFunction ucd = uppercasedigits;
- QTextStreamFunction lcd = lowercasedigits;
-
- QTest::addColumn<QTextStreamFunction>("func1");
- QTest::addColumn<QTextStreamFunction>("func2");
- QTest::addColumn<QTextStreamFunction>("func3");
- QTest::addColumn<QTextStreamFunction>("func4");
- QTest::addColumn<int>("value");
- QTest::addColumn<QString>("expected");
- QTest::newRow("dec 1") << noop_ << noop_ << noop_ << noop_ << 31 << "31";
- QTest::newRow("dec 2") << noop_ << base << noop_ << noop_ << 31 << "31";
-
- QTest::newRow("hex 1") << hex_ << noop_ << noop_ << noop_ << 31 << "1f";
- QTest::newRow("hex 2") << hex_ << noop_ << noop_ << lcd << 31 << "1f";
- QTest::newRow("hex 3") << hex_ << noop_ << ucb << noop_ << 31 << "1f";
- QTest::newRow("hex 4") << hex_ << noop_ << noop_ << ucd << 31 << "1F";
- QTest::newRow("hex 5") << hex_ << noop_ << lcb << ucd << 31 << "1F";
- QTest::newRow("hex 6") << hex_ << noop_ << ucb << ucd << 31 << "1F";
- QTest::newRow("hex 7") << hex_ << base << noop_ << noop_ << 31 << "0x1f";
- QTest::newRow("hex 8") << hex_ << base << lcb << lcd << 31 << "0x1f";
- QTest::newRow("hex 9") << hex_ << base << ucb << noop_ << 31 << "0X1f";
- QTest::newRow("hex 10") << hex_ << base << ucb << lcd << 31 << "0X1f";
- QTest::newRow("hex 11") << hex_ << base << noop_ << ucd << 31 << "0x1F";
- QTest::newRow("hex 12") << hex_ << base << lcb << ucd << 31 << "0x1F";
- QTest::newRow("hex 13") << hex_ << base << ucb << ucd << 31 << "0X1F";
-
- QTest::newRow("bin 1") << bin_ << noop_ << noop_ << noop_ << 31 << "11111";
- QTest::newRow("bin 2") << bin_ << base << noop_ << noop_ << 31 << "0b11111";
- QTest::newRow("bin 3") << bin_ << base << lcb << noop_ << 31 << "0b11111";
- QTest::newRow("bin 4") << bin_ << base << ucb << noop_ << 31 << "0B11111";
- QTest::newRow("bin 5") << bin_ << base << noop_ << ucd << 31 << "0b11111";
- QTest::newRow("bin 6") << bin_ << base << lcb << ucd << 31 << "0b11111";
- QTest::newRow("bin 7") << bin_ << base << ucb << ucd << 31 << "0B11111";
-
- QTest::newRow("oct 1") << oct_ << noop_ << noop_ << noop_ << 31 << "37";
- QTest::newRow("oct 2") << oct_ << base << noop_ << noop_ << 31 << "037";
-}
-
-// From Task 125496
-void tst_QTextStream::numeralCase()
-{
- QFETCH(QTextStreamFunction, func1);
- QFETCH(QTextStreamFunction, func2);
- QFETCH(QTextStreamFunction, func3);
- QFETCH(QTextStreamFunction, func4);
- QFETCH(int, value);
- QFETCH(QString, expected);
-
- QString str;
- QTextStream stream(&str);
- stream << func1 << func2 << func3 << func4 << value;
- QCOMPARE(str, expected);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::nanInf()
-{
- // Cannot use test data in this function, as comparing nans and infs isn't
- // well defined.
- QString str("nan NAN nAn +nan +NAN +nAn -nan -NAN -nAn"
- " inf INF iNf +inf +INF +iNf -inf -INF -iNf");
-
- QTextStream stream(&str);
-
- double tmpD = 0;
- stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0;
- stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0;
-
- stream.seek(0);
-
- float tmpF = 0;
- stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0); tmpD = 0;
- stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0);
-
- QString s;
- QTextStream out(&s);
- out << qInf() << " " << -qInf() << " " << qQNaN()
- << uppercasedigits << " "
- << qInf() << " " << -qInf() << " " << qQNaN()
- << flush;
-
- QCOMPARE(s, QString("inf -inf nan INF -INF NAN"));
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::utf8IncompleteAtBufferBoundary_data()
-{
- QTest::addColumn<bool>("useLocale");
-
- QTest::newRow("utf8") << false;
-
- // is this locale UTF-8?
- if (QString(QChar::ReplacementCharacter).toLocal8Bit() == "\xef\xbf\xbd")
- QTest::newRow("locale") << true;
-}
-
-void tst_QTextStream::utf8IncompleteAtBufferBoundary()
-{
- QFile::remove(TestFileName);
- QFile data(TestFileName);
-
- QTextCodec *utf8Codec = QTextCodec::codecForMib(106);
- QString lineContents = QString::fromUtf8("\342\200\223" // U+2013 EN DASH
- "\342\200\223"
- "\342\200\223"
- "\342\200\223"
- "\342\200\223"
- "\342\200\223");
-
- data.open(QFile::WriteOnly | QFile::Truncate);
- {
- QTextStream out(&data);
- out.setCodec(utf8Codec);
- out.setFieldWidth(3);
-
- for (int i = 0; i < 1000; ++i) {
- out << i << lineContents << endl;
- }
- }
- data.close();
-
- data.open(QFile::ReadOnly);
- QTextStream in(&data);
-
- QFETCH(bool, useLocale);
- if (!useLocale)
- in.setCodec(utf8Codec); // QUtf8Codec
- else
- in.setCodec(QTextCodec::codecForLocale());
-
- int i = 0;
- do {
- QString line = in.readLine().trimmed();
- ++i;
- QVERIFY2(line.endsWith(lineContents), QString("Line %1: %2").arg(i).arg(line).toLocal8Bit());
- } while (!in.atEnd());
-}
-
-// ------------------------------------------------------------------------------
-
-// Make sure we don't write a BOM after seek()ing
-
-void tst_QTextStream::writeSeekWriteNoBOM()
-{
-
- //First with the default codec (normally either latin-1 or UTF-8)
-
- QBuffer out;
- out.open(QIODevice::WriteOnly);
- QTextStream stream(&out);
-
- int number = 0;
- QString sizeStr = QLatin1String("Size=")
- + QString::number(number).rightJustified(10, QLatin1Char('0'));
- stream << sizeStr << endl;
- stream << "Version=" << QString::number(14) << endl;
- stream << "blah blah blah" << endl;
- stream.flush();
-
- QCOMPARE(out.buffer().constData(), "Size=0000000000\nVersion=14\nblah blah blah\n");
-
- // Now overwrite the size header item
- number = 42;
- stream.seek(0);
- sizeStr = QLatin1String("Size=")
- + QString::number(number).rightJustified(10, QLatin1Char('0'));
- stream << sizeStr << endl;
- stream.flush();
-
- // Check buffer is still OK
- QCOMPARE(out.buffer().constData(), "Size=0000000042\nVersion=14\nblah blah blah\n");
-
-
- //Then UTF-16
-
- QBuffer out16;
- out16.open(QIODevice::WriteOnly);
- QTextStream stream16(&out16);
- stream16.setCodec("UTF-16");
-
- stream16 << "one" << "two" << QLatin1String("three");
- stream16.flush();
-
- // save that output
- QByteArray first = out16.buffer();
-
- stream16.seek(0);
- stream16 << "one";
- stream16.flush();
-
- QCOMPARE(out16.buffer(), first);
-}
-
-
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::generateOperatorCharData(bool for_QString)
-{
- QTest::addColumn<QByteArray>("input");
- QTest::addColumn<QChar>("qchar_output");
- QTest::addColumn<char>("char_output");
- QTest::addColumn<QByteArray>("write_output");
-
- QTest::newRow("empty") << QByteArray() << QChar('\0') << '\0' << QByteArray("\0", 1);
- QTest::newRow("a") << QByteArray("a") << QChar('a') << 'a' << QByteArray("a");
- QTest::newRow("\\na") << QByteArray("\na") << QChar('\n') << '\n' << QByteArray("\n");
- QTest::newRow("\\0") << QByteArray("\0") << QChar('\0') << '\0' << QByteArray("\0", 1);
- QTest::newRow("\\xff") << QByteArray("\xff") << QChar('\xff') << '\xff' << QByteArray("\xff");
- QTest::newRow("\\xfe") << QByteArray("\xfe") << QChar('\xfe') << '\xfe' << QByteArray("\xfe");
-
- if (!for_QString) {
- QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << QChar('\0') << '\0' << QByteArray("\0", 1);
- QTest::newRow("utf16-BE (a)") << QByteArray("\xff\xfe\x61\x00", 4) << QChar('a') << 'a' << QByteArray("a");
- QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << QChar('\0') << '\0' << QByteArray("\0", 1);
- QTest::newRow("utf16-LE (a)") << QByteArray("\xfe\xff\x00\x61", 4) << QChar('a') << 'a' << QByteArray("a");
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::QChar_operators_FromDevice_data()
-{
- generateOperatorCharData(false);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::QChar_operators_FromDevice()
-{
- QFETCH(QByteArray, input);
- QFETCH(QChar, qchar_output);
- QFETCH(QByteArray, write_output);
-
- QBuffer buf(&input);
- buf.open(QBuffer::ReadOnly);
- QTextStream stream(&buf);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- QChar tmp;
- stream >> tmp;
- QCOMPARE(tmp, qchar_output);
-
- QBuffer writeBuf;
- writeBuf.open(QBuffer::WriteOnly);
-
- QTextStream writeStream(&writeBuf);
- writeStream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- writeStream << qchar_output;
- writeStream.flush();
-
- QCOMPARE(writeBuf.buffer().size(), write_output.size());
- QCOMPARE(writeBuf.buffer().constData(), write_output.constData());
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::char_operators_FromDevice_data()
-{
- generateOperatorCharData(false);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::char_operators_FromDevice()
-{
- QFETCH(QByteArray, input);
- QFETCH(char, char_output);
- QFETCH(QByteArray, write_output);
-
- QBuffer buf(&input);
- buf.open(QBuffer::ReadOnly);
- QTextStream stream(&buf);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- char tmp;
- stream >> tmp;
- QCOMPARE(tmp, char_output);
-
- QBuffer writeBuf;
- writeBuf.open(QBuffer::WriteOnly);
-
- QTextStream writeStream(&writeBuf);
- writeStream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- writeStream << char_output;
- writeStream.flush();
-
- QCOMPARE(writeBuf.buffer().size(), write_output.size());
- QCOMPARE(writeBuf.buffer().constData(), write_output.constData());
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::generateNaturalNumbersData(bool for_QString)
-{
- QTest::addColumn<QByteArray>("input");
- QTest::addColumn<qulonglong>("output");
-
- QTest::newRow("empty") << QByteArray() << qulonglong(0);
- QTest::newRow("a") << QByteArray("a") << qulonglong(0);
- QTest::newRow(" ") << QByteArray(" ") << qulonglong(0);
- QTest::newRow("0") << QByteArray("0") << qulonglong(0);
- QTest::newRow("1") << QByteArray("1") << qulonglong(1);
- QTest::newRow("12") << QByteArray("12") << qulonglong(12);
- QTest::newRow("-12") << QByteArray("-12") << qulonglong(-12);
- QTest::newRow("-0") << QByteArray("-0") << qulonglong(0);
- QTest::newRow(" 1") << QByteArray(" 1") << qulonglong(1);
- QTest::newRow(" \\r\\n\\r\\n123") << QByteArray(" \r\n\r\n123") << qulonglong(123);
-
- // bit boundary tests
- QTest::newRow("127") << QByteArray("127") << qulonglong(127);
- QTest::newRow("128") << QByteArray("128") << qulonglong(128);
- QTest::newRow("129") << QByteArray("129") << qulonglong(129);
- QTest::newRow("-127") << QByteArray("-127") << qulonglong(-127);
- QTest::newRow("-128") << QByteArray("-128") << qulonglong(-128);
- QTest::newRow("-129") << QByteArray("-129") << qulonglong(-129);
- QTest::newRow("32767") << QByteArray("32767") << qulonglong(32767);
- QTest::newRow("32768") << QByteArray("32768") << qulonglong(32768);
- QTest::newRow("32769") << QByteArray("32769") << qulonglong(32769);
- QTest::newRow("-32767") << QByteArray("-32767") << qulonglong(-32767);
- QTest::newRow("-32768") << QByteArray("-32768") << qulonglong(-32768);
- QTest::newRow("-32769") << QByteArray("-32769") << qulonglong(-32769);
- QTest::newRow("65537") << QByteArray("65537") << qulonglong(65537);
- QTest::newRow("65536") << QByteArray("65536") << qulonglong(65536);
- QTest::newRow("65535") << QByteArray("65535") << qulonglong(65535);
- QTest::newRow("-65537") << QByteArray("-65537") << qulonglong(-65537);
- QTest::newRow("-65536") << QByteArray("-65536") << qulonglong(-65536);
- QTest::newRow("-65535") << QByteArray("-65535") << qulonglong(-65535);
- QTest::newRow("2147483646") << QByteArray("2147483646") << qulonglong(2147483646);
- QTest::newRow("2147483647") << QByteArray("2147483647") << qulonglong(2147483647);
- QTest::newRow("2147483648") << QByteArray("2147483648") << Q_UINT64_C(2147483648);
- QTest::newRow("-2147483646") << QByteArray("-2147483646") << qulonglong(-2147483646);
- QTest::newRow("-2147483647") << QByteArray("-2147483647") << qulonglong(-2147483647);
- QTest::newRow("-2147483648") << QByteArray("-2147483648") << Q_UINT64_C(-2147483648);
- QTest::newRow("4294967296") << QByteArray("4294967296") << Q_UINT64_C(4294967296);
- QTest::newRow("4294967297") << QByteArray("4294967297") << Q_UINT64_C(4294967297);
- QTest::newRow("4294967298") << QByteArray("4294967298") << Q_UINT64_C(4294967298);
- QTest::newRow("-4294967296") << QByteArray("-4294967296") << Q_UINT64_C(-4294967296);
- QTest::newRow("-4294967297") << QByteArray("-4294967297") << Q_UINT64_C(-4294967297);
- QTest::newRow("-4294967298") << QByteArray("-4294967298") << Q_UINT64_C(-4294967298);
- QTest::newRow("9223372036854775807") << QByteArray("9223372036854775807") << Q_UINT64_C(9223372036854775807);
- QTest::newRow("9223372036854775808") << QByteArray("9223372036854775808") << Q_UINT64_C(9223372036854775808);
- QTest::newRow("9223372036854775809") << QByteArray("9223372036854775809") << Q_UINT64_C(9223372036854775809);
- QTest::newRow("18446744073709551615") << QByteArray("18446744073709551615") << Q_UINT64_C(18446744073709551615);
- QTest::newRow("18446744073709551616") << QByteArray("18446744073709551616") << Q_UINT64_C(0);
- QTest::newRow("18446744073709551617") << QByteArray("18446744073709551617") << Q_UINT64_C(1);
- // 18446744073709551617 bytes should be enough for anyone.... ;-)
-
- // hex tests
- QTest::newRow("0x0") << QByteArray("0x0") << qulonglong(0);
- QTest::newRow("0x") << QByteArray("0x") << qulonglong(0);
- QTest::newRow("0x1") << QByteArray("0x1") << qulonglong(1);
- QTest::newRow("0xf") << QByteArray("0xf") << qulonglong(15);
- QTest::newRow("0xdeadbeef") << QByteArray("0xdeadbeef") << Q_UINT64_C(3735928559);
- QTest::newRow("0XDEADBEEF") << QByteArray("0XDEADBEEF") << Q_UINT64_C(3735928559);
- QTest::newRow("0xdeadbeefZzzzz") << QByteArray("0xdeadbeefZzzzz") << Q_UINT64_C(3735928559);
- QTest::newRow(" 0xdeadbeefZzzzz") << QByteArray(" 0xdeadbeefZzzzz") << Q_UINT64_C(3735928559);
-
- // oct tests
- QTest::newRow("00") << QByteArray("00") << qulonglong(0);
- QTest::newRow("0141") << QByteArray("0141") << qulonglong(97);
- QTest::newRow("01419999") << QByteArray("01419999") << qulonglong(97);
- QTest::newRow(" 01419999") << QByteArray(" 01419999") << qulonglong(97);
-
- // bin tests
- QTest::newRow("0b0") << QByteArray("0b0") << qulonglong(0);
- QTest::newRow("0b1") << QByteArray("0b1") << qulonglong(1);
- QTest::newRow("0b10") << QByteArray("0b10") << qulonglong(2);
- QTest::newRow("0B10") << QByteArray("0B10") << qulonglong(2);
- QTest::newRow("0b101010") << QByteArray("0b101010") << qulonglong(42);
- QTest::newRow("0b1010102345") << QByteArray("0b1010102345") << qulonglong(42);
- QTest::newRow(" 0b1010102345") << QByteArray(" 0b1010102345") << qulonglong(42);
-
- // utf-16 tests
- if (!for_QString) {
- QTest::newRow("utf16-BE (empty)") << QByteArray("\xfe\xff", 2) << qulonglong(0);
- QTest::newRow("utf16-BE (0xdeadbeef)")
- << QByteArray("\xfe\xff"
- "\x00\x30\x00\x78\x00\x64\x00\x65\x00\x61\x00\x64\x00\x62\x00\x65\x00\x65\x00\x66", 22)
- << Q_UINT64_C(3735928559);
- QTest::newRow("utf16-LE (empty)") << QByteArray("\xff\xfe", 2) << Q_UINT64_C(0);
- QTest::newRow("utf16-LE (0xdeadbeef)")
- << QByteArray("\xff\xfe"
- "\x30\x00\x78\x00\x64\x00\x65\x00\x61\x00\x64\x00\x62\x00\x65\x00\x65\x00\x66\x00", 22)
- << Q_UINT64_C(3735928559);
- }
-}
-
-// ------------------------------------------------------------------------------
-#define IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(texttype, type) \
- void tst_QTextStream:: texttype##_read_operator_FromDevice_data() \
- { generateNaturalNumbersData(false); } \
- void tst_QTextStream:: texttype##_read_operator_FromDevice() \
- { \
- QFETCH(QByteArray, input); \
- QFETCH(qulonglong, output); \
- type sh; \
- QTextStream stream(&input); \
- stream >> sh; \
- QCOMPARE(sh, (type)output); \
- }
-IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(signedShort, signed short)
-IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(unsignedShort, unsigned short)
-IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(signedInt, signed int)
-IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(unsignedInt, unsigned int)
-IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(qlonglong, qlonglong)
-IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(qulonglong, qulonglong)
- ;
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::generateRealNumbersData(bool for_QString)
-{
- QTest::addColumn<QByteArray>("input");
- QTest::addColumn<double>("output");
-
- QTest::newRow("empty") << QByteArray() << 0.0;
- QTest::newRow("a") << QByteArray("a") << 0.0;
- QTest::newRow("1.0") << QByteArray("1.0") << 1.0;
- QTest::newRow(" 1") << QByteArray(" 1") << 1.0;
- QTest::newRow(" \\r\\n1.2") << QByteArray(" \r\n1.2") << 1.2;
- QTest::newRow("3.14") << QByteArray("3.14") << 3.14;
- QTest::newRow("-3.14") << QByteArray("-3.14") << -3.14;
- QTest::newRow(" -3.14") << QByteArray(" -3.14") << -3.14;
- QTest::newRow("314e-02") << QByteArray("314e-02") << 3.14;
- QTest::newRow("314E-02") << QByteArray("314E-02") << 3.14;
- QTest::newRow("314e+02") << QByteArray("314e+02") << 31400.;
- QTest::newRow("314E+02") << QByteArray("314E+02") << 31400.;
-
- // ### add numbers with exponents
-
- if (!for_QString) {
- QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << 0.0;
- QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << 0.0;
- }
-}
-
-// ------------------------------------------------------------------------------
-#define IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(texttype, type) \
- void tst_QTextStream:: texttype##_read_operator_FromDevice_data() \
- { generateRealNumbersData(false); } \
- void tst_QTextStream:: texttype##_read_operator_FromDevice() \
- { \
- QFETCH(QByteArray, input); \
- QFETCH(double, output); \
- type sh; \
- QTextStream stream(&input); \
- stream >> sh; \
- QCOMPARE(sh, (type)output); \
- }
-IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(float, float)
-IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(double, double)
- ;
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::generateStringData(bool for_QString)
-{
- QTest::addColumn<QByteArray>("input");
- QTest::addColumn<QByteArray>("array_output");
- QTest::addColumn<QString>("string_output");
-
- QTest::newRow("empty") << QByteArray() << QByteArray() << QString();
- QTest::newRow("a") << QByteArray("a") << QByteArray("a") << QString("a");
- QTest::newRow("a b") << QByteArray("a b") << QByteArray("a") << QString("a");
- QTest::newRow(" a b") << QByteArray(" a b") << QByteArray("a") << QString("a");
- QTest::newRow("a1") << QByteArray("a1") << QByteArray("a1") << QString("a1");
- QTest::newRow("a1 b1") << QByteArray("a1 b1") << QByteArray("a1") << QString("a1");
- QTest::newRow(" a1 b1") << QByteArray(" a1 b1") << QByteArray("a1") << QString("a1");
- QTest::newRow("\\n\\n\\nole i dole\\n") << QByteArray("\n\n\nole i dole\n") << QByteArray("ole") << QString("ole");
-
- if (!for_QString) {
- QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << QByteArray() << QString();
- QTest::newRow("utf16-BE (corrupt)") << QByteArray("\xff", 1) << QByteArray("\xff") << QString("\xff");
- QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << QByteArray() << QString();
- QTest::newRow("utf16-LE (corrupt)") << QByteArray("\xfe", 1) << QByteArray("\xfe") << QString("\xfe");
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::charPtr_read_operator_FromDevice_data()
-{
- generateStringData(false);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::charPtr_read_operator_FromDevice()
-{
- QFETCH(QByteArray, input);
- QFETCH(QByteArray, array_output);
-
- QBuffer buffer(&input);
- buffer.open(QBuffer::ReadOnly);
- QTextStream stream(&buffer);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- stream.setAutoDetectUnicode(true);
-
- char buf[1024];
- stream >> buf;
-
- QCOMPARE((const char *)buf, array_output.constData());
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::stringRef_read_operator_FromDevice_data()
-{
- generateStringData(false);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::stringRef_read_operator_FromDevice()
-{
- QFETCH(QByteArray, input);
- QFETCH(QString, string_output);
-
- QBuffer buffer(&input);
- buffer.open(QBuffer::ReadOnly);
- QTextStream stream(&buffer);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- stream.setAutoDetectUnicode(true);
-
- QString tmp;
- stream >> tmp;
-
- QCOMPARE(tmp, string_output);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::byteArray_read_operator_FromDevice_data()
-{
- generateStringData(false);
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::byteArray_read_operator_FromDevice()
-{
- QFETCH(QByteArray, input);
- QFETCH(QByteArray, array_output);
-
- QBuffer buffer(&input);
- buffer.open(QBuffer::ReadOnly);
- QTextStream stream(&buffer);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- stream.setAutoDetectUnicode(true);
-
- QByteArray array;
- stream >> array;
-
- QCOMPARE(array, array_output);
-}
-
-// ------------------------------------------------------------------------------
-#define IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(texttype, type) \
- void tst_QTextStream:: texttype##_write_operator_ToDevice() \
- { \
- QFETCH(qulonglong, number); \
- QFETCH(QByteArray, data); \
- \
- QBuffer buffer; \
- buffer.open(QBuffer::WriteOnly); \
- QTextStream stream(&buffer); \
- stream << (type)number; \
- stream.flush(); \
- \
- QCOMPARE(buffer.data().constData(), data.constData()); \
- }
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::signedShort_write_operator_ToDevice_data()
-{
- QTest::addColumn<qulonglong>("number");
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
- QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
- QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("-1");
- QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
- QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("-32768");
- QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("-32767");
- QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("-1");
- QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("0");
- QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("1");
-}
-IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedShort, signed short)
- ;
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::unsignedShort_write_operator_ToDevice_data()
-{
- QTest::addColumn<qulonglong>("number");
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
- QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
- QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("65535");
- QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
- QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
- QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
- QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
- QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("0");
- QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("1");
-}
-IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(unsignedShort, unsigned short)
- ;
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::signedInt_write_operator_ToDevice_data()
-{
- QTest::addColumn<qulonglong>("number");
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
- QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
- QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("-1");
- QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
- QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
- QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
- QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
- QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
- QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
- QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
- QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("-2147483648");
- QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("-2147483647");
- QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("-1");
- QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("0");
- QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("1");
-}
-IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedInt, signed int)
- ;
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::unsignedInt_write_operator_ToDevice_data()
-{
- QTest::addColumn<qulonglong>("number");
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
- QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
- QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("4294967295");
- QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
- QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
- QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
- QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
- QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
- QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
- QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
- QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648");
- QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649");
- QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295");
- QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("0");
- QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("1");
-}
-IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(unsignedInt, unsigned int)
- ;
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::qlonglong_write_operator_ToDevice_data()
-{
- QTest::addColumn<qulonglong>("number");
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
- QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
- QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("-1");
- QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
- QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
- QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
- QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
- QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
- QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
- QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
- QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648");
- QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649");
- QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295");
- QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("4294967296");
- QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("4294967297");
- QTest::newRow("9223372036854775807") << Q_UINT64_C(9223372036854775807) << QByteArray("9223372036854775807");
- QTest::newRow("9223372036854775808") << Q_UINT64_C(9223372036854775808) << QByteArray("-9223372036854775808");
- QTest::newRow("9223372036854775809") << Q_UINT64_C(9223372036854775809) << QByteArray("-9223372036854775807");
- QTest::newRow("18446744073709551615") << Q_UINT64_C(18446744073709551615) << QByteArray("-1");
-}
-IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(qlonglong, qlonglong)
- ;
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::qulonglong_write_operator_ToDevice_data()
-{
- QTest::addColumn<qulonglong>("number");
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
- QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
- QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("18446744073709551615");
- QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
- QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
- QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
- QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
- QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
- QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
- QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
- QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648");
- QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649");
- QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295");
- QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("4294967296");
- QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("4294967297");
- QTest::newRow("9223372036854775807") << Q_UINT64_C(9223372036854775807) << QByteArray("9223372036854775807");
- QTest::newRow("9223372036854775808") << Q_UINT64_C(9223372036854775808) << QByteArray("9223372036854775808");
- QTest::newRow("9223372036854775809") << Q_UINT64_C(9223372036854775809) << QByteArray("9223372036854775809");
- QTest::newRow("18446744073709551615") << Q_UINT64_C(18446744073709551615) << QByteArray("18446744073709551615");
-}
-IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(qulonglong, qulonglong)
- ;
-
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::generateRealNumbersDataWrite()
-{
- QTest::addColumn<double>("number");
- QTest::addColumn<QByteArray>("data");
-
- QTest::newRow("0") << 0.0 << QByteArray("0");
- QTest::newRow("3.14") << 3.14 << QByteArray("3.14");
- QTest::newRow("-3.14") << -3.14 << QByteArray("-3.14");
- QTest::newRow("1.2e+10") << 1.2e+10 << QByteArray("1.2e+10");
- QTest::newRow("-1.2e+10") << -1.2e+10 << QByteArray("-1.2e+10");
-}
-
-// ------------------------------------------------------------------------------
-#define IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(texttype, type) \
- void tst_QTextStream:: texttype##_write_operator_ToDevice_data() \
- { generateRealNumbersDataWrite(); } \
- void tst_QTextStream:: texttype##_write_operator_ToDevice() \
- { \
- QFETCH(double, number); \
- QFETCH(QByteArray, data); \
- \
- QBuffer buffer; \
- buffer.open(QBuffer::WriteOnly); \
- QTextStream stream(&buffer); \
- float f = (float)number; \
- stream << f; \
- stream.flush(); \
- QCOMPARE(buffer.data().constData(), data.constData()); \
- }
-IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(float, float)
-IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(double, float)
- ;
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::string_write_operator_ToDevice_data()
-{
- QTest::addColumn<QByteArray>("bytedata");
- QTest::addColumn<QString>("stringdata");
- QTest::addColumn<QByteArray>("result");
-
- QTest::newRow("empty") << QByteArray("", 1) << QString(1, '\0') << QByteArray("", 1);
- QTest::newRow("a") << QByteArray("a") << QString("a") << QByteArray("a");
- QTest::newRow("a cow jumped over the moon")
- << QByteArray("a cow jumped over the moon")
- << QString("a cow jumped over the moon")
- << QByteArray("a cow jumped over the moon");
-
- // ### get the utf16-be test on its legs.
- /*
- QTest::newRow("utf16-BE (a cow jumped over the moon)")
- << QByteArray("\xff\xfe\x00\x61\x00\x20\x00\x63\x00\x6f\x00\x77\x00\x20\x00\x6a\x00\x75\x00\x6d\x00\x70\x00\x65\x00\x64\x00\x20\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x20\x00\x74\x00\x68\x00\x65\x00\x20\x00\x6d\x00\x6f\x00\x6f\x00\x6e\x00\x0a", 56)
- << QString("a cow jumped over the moon")
- << QByteArray("a cow jumped over the moon");
- */
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::string_write_operator_ToDevice()
-{
- QFETCH(QByteArray, bytedata);
- QFETCH(QString, stringdata);
- QFETCH(QByteArray, result);
-
- {
- // char*
- QBuffer buf;
- buf.open(QBuffer::WriteOnly);
- QTextStream stream(&buf);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- stream.setAutoDetectUnicode(true);
-
- stream << bytedata.constData();
- stream.flush();
- QCOMPARE(buf.buffer().constData(), result.constData());
- }
- {
- // QByteArray
- QBuffer buf;
- buf.open(QBuffer::WriteOnly);
- QTextStream stream(&buf);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- stream.setAutoDetectUnicode(true);
-
- stream << bytedata;
- stream.flush();
- QCOMPARE(buf.buffer().constData(), result.constData());
- }
- {
- // QString
- QBuffer buf;
- buf.open(QBuffer::WriteOnly);
- QTextStream stream(&buf);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- stream.setAutoDetectUnicode(true);
-
- stream << stringdata;
- stream.flush();
- QCOMPARE(buf.buffer().constData(), result.constData());
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::useCase1()
-{
- QFile::remove("testfile");
- QFile file("testfile");
- QVERIFY(file.open(QFile::ReadWrite));
-
- {
- QTextStream stream(&file);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- stream.setAutoDetectUnicode(true);
-
- stream << 4.15 << " " << QByteArray("abc") << " " << QString("ole");
- }
-
- file.seek(0);
- QCOMPARE(file.readAll(), QByteArray("4.15 abc ole"));
- file.seek(0);
-
- {
- double d;
- QByteArray a;
- QString s;
- QTextStream stream(&file);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- stream.setAutoDetectUnicode(true);
-
- stream >> d;
- stream >> a;
- stream >> s;
-
- QCOMPARE(d, 4.15);
- QCOMPARE(a, QByteArray("abc"));
- QCOMPARE(s, QString("ole"));
- }
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::useCase2()
-{
- QFile::remove("testfile");
- QFile file("testfile");
- QVERIFY(file.open(QFile::ReadWrite));
-
- QTextStream stream(&file);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- stream.setAutoDetectUnicode(true);
-
- stream << 4.15 << " " << QByteArray("abc") << " " << QString("ole");
-
- file.close();
- QVERIFY(file.open(QFile::ReadWrite));
-
- QCOMPARE(file.readAll(), QByteArray("4.15 abc ole"));
-
- file.close();
- QVERIFY(file.open(QFile::ReadWrite));
-
- double d;
- QByteArray a;
- QString s;
- QTextStream stream2(&file);
- stream2.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- stream2.setAutoDetectUnicode(true);
-
- stream2 >> d;
- stream2 >> a;
- stream2 >> s;
-
- QCOMPARE(d, 4.15);
- QCOMPARE(a, QByteArray("abc"));
- QCOMPARE(s, QString("ole"));
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::manipulators_data()
-{
- QTest::addColumn<int>("flags");
- QTest::addColumn<int>("width");
- QTest::addColumn<double>("realNumber");
- QTest::addColumn<int>("intNumber");
- QTest::addColumn<QString>("textData");
- QTest::addColumn<QByteArray>("result");
-
- QTest::newRow("no flags") << 0 << 0 << 5.0 << 5 << QString("five") << QByteArray("55five");
- QTest::newRow("rightadjust") << 0 << 10 << 5.0 << 5 << QString("five") << QByteArray(" 5 5 five");
-
- // ### FIX
-// QTest::newRow("leftadjust") << int(QTextStream::left) << 10 << 5.0 << 5 << QString("five") << QByteArray("5 5 five ");
-// QTest::newRow("showpos") << int(QTextStream::showpos) << 10 << 5.0 << 5 << QString("five") << QByteArray(" +5 +5 five");
-// QTest::newRow("showpos2") << int(QTextStream::showpos) << 5 << 3.14 << -5 << QString("five") << QByteArray("+3.14 -5 five");
-// QTest::newRow("hex") << int(QTextStream::hex | QTextStream::showbase) << 5 << 3.14 << -5 << QString("five") << QByteArray(" 3.14 -0x5 five");
-// QTest::newRow("hex uppercase") << int(QTextStream::hex | QTextStream::uppercase | QTextStream::showbase) << 5 << 3.14 << -5 << QString("five") << QByteArray(" 3.14 -0X5 five");
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::manipulators()
-{
-// QFETCH(int, flags);
- QFETCH(int, width);
- QFETCH(double, realNumber);
- QFETCH(int, intNumber);
- QFETCH(QString, textData);
- QFETCH(QByteArray, result);
-
- QBuffer buffer;
- buffer.open(QBuffer::WriteOnly);
-
- QTextStream stream(&buffer);
- stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
- stream.setAutoDetectUnicode(true);
-
-// stream.setFlags(flags);
- stream.setFieldWidth(width);
- stream << realNumber;
- stream << intNumber;
- stream << textData;
- stream.flush();
-
- QCOMPARE(buffer.data().constData(), result.constData());
-}
-
-void tst_QTextStream::generateBOM()
-{
- QFile::remove("bom.txt");
- {
- QFile file("bom.txt");
- QVERIFY(file.open(QFile::ReadWrite | QFile::Truncate));
-
- QTextStream stream(&file);
- stream.setCodec(QTextCodec::codecForName("UTF-16LE"));
- stream << "Hello" << endl;
-
- file.close();
- QVERIFY(file.open(QFile::ReadOnly));
- QCOMPARE(file.readAll(), QByteArray("\x48\x00\x65\00\x6c\00\x6c\00\x6f\x00\x0a\x00", 12));
- }
-
- QFile::remove("bom.txt");
- {
- QFile file("bom.txt");
- QVERIFY(file.open(QFile::ReadWrite | QFile::Truncate));
-
- QTextStream stream(&file);
- stream.setCodec(QTextCodec::codecForName("UTF-16LE"));
- stream << bom << "Hello" << endl;
-
- file.close();
- QVERIFY(file.open(QFile::ReadOnly));
- QCOMPARE(file.readAll(), QByteArray("\xff\xfe\x48\x00\x65\00\x6c\00\x6c\00\x6f\x00\x0a\x00", 14));
- }
-}
-
-void tst_QTextStream::readBomSeekBackReadBomAgain()
-{
- QFile::remove("utf8bom");
- QFile file("utf8bom");
- QVERIFY(file.open(QFile::ReadWrite));
- file.write("\xef\xbb\xbf" "Andreas");
- file.seek(0);
- QCOMPARE(file.pos(), qint64(0));
-
- QTextStream stream(&file);
- stream.setCodec("UTF-8");
- QString Andreas;
- stream >> Andreas;
- QCOMPARE(Andreas, QString("Andreas"));
- stream.seek(0);
- stream >> Andreas;
- QCOMPARE(Andreas, QString("Andreas"));
-}
-
-// ------------------------------------------------------------------------------
-void tst_QTextStream::status_real_read_data()
-{
- QTest::addColumn<QString>("input");
- QTest::addColumn<double>("expected_f");
- QTest::addColumn<QString>("expected_w");
- QTest::addColumn<QList<int> >("results");
-
- QTest::newRow("1.23 abc ") << QString("1.23 abc ") << 1.23 << QString("abc")
- << (QList<int>()
- << (int)QTextStream::Ok
- << (int)QTextStream::ReadCorruptData
- << (int)QTextStream::Ok
- << (int)QTextStream::Ok
- << (int)QTextStream::ReadPastEnd);
-}
-
-void tst_QTextStream::status_real_read()
-{
- QFETCH(QString, input);
- QFETCH(double, expected_f);
- QFETCH(QString, expected_w);
- QFETCH(QList<int>, results);
-
- QTextStream s(&input);
- double f = 0.0;
- QString w;
- s >> f;
- QCOMPARE((int)s.status(), results.at(0));
- QCOMPARE(f, expected_f);
- s >> f;
- QCOMPARE((int)s.status(), results.at(1));
- s.resetStatus();
- QCOMPARE((int)s.status(), results.at(2));
- s >> w;
- QCOMPARE((int)s.status(), results.at(3));
- QCOMPARE(w, expected_w);
- s >> f;
- QCOMPARE((int)s.status(), results.at(4));
-}
-
-void tst_QTextStream::status_integer_read()
-{
-#ifdef Q_OS_WINCE
- QString text = QLatin1String("123 abc ");
- QTextStream s(&text);
-#else
- QTextStream s("123 abc ");
-#endif
- int i;
- QString w;
- s >> i;
- QCOMPARE(s.status(), QTextStream::Ok);
- s >> i;
- QCOMPARE(s.status(), QTextStream::ReadCorruptData);
- s.resetStatus();
- QCOMPARE(s.status(), QTextStream::Ok);
- s >> w;
- QCOMPARE(s.status(), QTextStream::Ok);
- QCOMPARE(w, QString("abc"));
- s >> i;
- QCOMPARE(s.status(), QTextStream::ReadPastEnd);
-}
-
-void tst_QTextStream::status_word_read()
-{
-#ifdef Q_OS_WINCE
- QString text = QLatin1String("abc ");
- QTextStream s(&text);
-#else
- QTextStream s("abc ");
-#endif
- QString w;
- s >> w;
- QCOMPARE(s.status(), QTextStream::Ok);
- s >> w;
- QCOMPARE(s.status(), QTextStream::ReadPastEnd);
-}
-
-class FakeBuffer : public QBuffer
-{
-protected:
- qint64 writeData(const char *c, qint64 i) { return m_lock ? 0 : QBuffer::writeData(c, i); }
-public:
- FakeBuffer(bool locked = false) : m_lock(locked) {}
- void setLocked(bool locked) { m_lock = locked; }
-private:
- bool m_lock;
-};
-
-void tst_QTextStream::status_write_error()
-{
- FakeBuffer fb(false);
- QVERIFY(fb.open(QBuffer::ReadWrite));
- QTextStream fs(&fb);
- fs.setCodec(QTextCodec::codecForName("latin1"));
- /* first write some initial content */
- fs << "hello";
- fs.flush();
- QCOMPARE(fs.status(), QTextStream::Ok);
- QCOMPARE(fb.data(), QByteArray("hello"));
- /* then test that writing can cause an error */
- fb.setLocked(true);
- fs << "error";
- fs.flush();
- QCOMPARE(fs.status(), QTextStream::WriteFailed);
- QCOMPARE(fb.data(), QByteArray("hello"));
- /* finally test that writing after an error doesn't change the stream any more */
- fb.setLocked(false);
- fs << "can't do that";
- fs.flush();
- QCOMPARE(fs.status(), QTextStream::WriteFailed);
- QCOMPARE(fb.data(), QByteArray("hello"));
-}
-
-void tst_QTextStream::task180679_alignAccountingStyle()
-{
- {
- QString result;
- QTextStream out(&result);
- out.setFieldAlignment(QTextStream::AlignAccountingStyle);
- out.setFieldWidth(4);
- out.setPadChar('0');
- out << -1;
- QCOMPARE(result, QLatin1String("-001"));
- }
-
- {
- QString result;
- QTextStream out(&result);
- out.setFieldAlignment(QTextStream::AlignAccountingStyle);
- out.setFieldWidth(4);
- out.setPadChar('0');
- out << "-1";
- QCOMPARE(result, QLatin1String("00-1"));
- }
-
- {
- QString result;
- QTextStream out(&result);
- out.setFieldAlignment(QTextStream::AlignAccountingStyle);
- out.setFieldWidth(6);
- out.setPadChar('0');
- out << -1.2;
- QCOMPARE(result, QLatin1String("-001.2"));
- }
-
- {
- QString result;
- QTextStream out(&result);
- out.setFieldAlignment(QTextStream::AlignAccountingStyle);
- out.setFieldWidth(6);
- out.setPadChar('0');
- out << "-1.2";
- QCOMPARE(result, QLatin1String("00-1.2"));
- }
-}
-
-void tst_QTextStream::task178772_setCodec()
-{
- QByteArray ba("\xe5 v\xe6r\n\xc3\xa5 v\xc3\xa6r\n");
- QString res = QLatin1String("\xe5 v\xe6r");
-
- QTextStream stream(ba);
- stream.setCodec("ISO 8859-1");
- QCOMPARE(stream.readLine(),res);
- stream.setCodec("UTF-8");
- QCOMPARE(stream.readLine(),res);
-}
-
-void tst_QTextStream::double_write_with_flags_data()
-{
- QTest::addColumn<double>("number");
- QTest::addColumn<QString>("output");
- QTest::addColumn<int>("numberFlags");
- QTest::addColumn<int>("realNumberNotation");
-
- QTest::newRow("-ForceSign") << -1.23 << QString("-1.23") << (int)QTextStream::ForceSign << 0;
- QTest::newRow("+ForceSign") << 1.23 << QString("+1.23") << (int)QTextStream::ForceSign << 0;
- QTest::newRow("inf") << qInf() << QString("inf") << 0 << 0;
- QTest::newRow("-inf") << -qInf() << QString("-inf") << 0 << 0;
- QTest::newRow("inf uppercase") << qInf() << QString("INF") << (int)QTextStream::UppercaseDigits << 0;
- QTest::newRow("-inf uppercase") << -qInf() << QString("-INF") << (int)QTextStream::UppercaseDigits << 0;
- QTest::newRow("nan") << qQNaN() << QString("nan") << 0 << 0;
- QTest::newRow("nan") << qQNaN() << QString("NAN") << (int)QTextStream::UppercaseDigits << 0;
- QTest::newRow("scientific") << 1.234567e+02 << QString("1.234567e+02") << 0 << (int)QTextStream::ScientificNotation;
- QTest::newRow("scientific2") << 1.234567e+02 << QString("1.234567e+02") << (int)QTextStream::UppercaseBase << (int)QTextStream::ScientificNotation;
- QTest::newRow("scientific uppercase") << 1.234567e+02 << QString("1.234567E+02") << (int)QTextStream::UppercaseDigits << (int)QTextStream::ScientificNotation;
-}
-
-void tst_QTextStream::double_write_with_flags()
-{
- QFETCH(double, number);
- QFETCH(QString, output);
- QFETCH(int, numberFlags);
- QFETCH(int, realNumberNotation);
-
- QString buf;
- QTextStream stream(&buf);
- if (numberFlags)
- stream.setNumberFlags(QTextStream::NumberFlag(numberFlags));
- if (realNumberNotation)
- stream.setRealNumberNotation(QTextStream::RealNumberNotation(realNumberNotation));
- stream << number;
- QCOMPARE(buf, output);
-}
-
-void tst_QTextStream::double_write_with_precision_data()
-{
- QTest::addColumn<int>("precision");
- QTest::addColumn<double>("value");
- QTest::addColumn<QString>("result");
-
- QTest::ignoreMessage(QtWarningMsg, "QTextStream::setRealNumberPrecision: Invalid precision (-1)");
- QTest::newRow("-1") << -1 << 3.14159 << QString("3.14159");
- QTest::newRow("0") << 0 << 3.14159 << QString("3");
- QTest::newRow("1") << 1 << 3.14159 << QString("3");
- QTest::newRow("2") << 2 << 3.14159 << QString("3.1");
- QTest::newRow("3") << 3 << 3.14159 << QString("3.14");
- QTest::newRow("5") << 5 << 3.14159 << QString("3.1416");
- QTest::newRow("6") << 6 << 3.14159 << QString("3.14159");
- QTest::newRow("7") << 7 << 3.14159 << QString("3.14159");
- QTest::newRow("10") << 10 << 3.14159 << QString("3.14159");
-}
-
-void tst_QTextStream::double_write_with_precision()
-{
- QFETCH(int, precision);
- QFETCH(double, value);
- QFETCH(QString, result);
-
- QString buf;
- QTextStream stream(&buf);
- stream.setRealNumberPrecision(precision);
- stream << value;
- QCOMPARE(buf, result);
-}
-
-void tst_QTextStream::int_read_with_locale_data()
-{
- QTest::addColumn<QString>("locale");
- QTest::addColumn<QString>("input");
- QTest::addColumn<int>("output");
-
- QTest::newRow("C -123") << QString("C") << QString("-123") << -123;
- QTest::newRow("C +123") << QString("C") << QString("+123") << 123;
- QTest::newRow("C 12345") << QString("C") << QString("12345") << 12345;
- QTest::newRow("C 12,345") << QString("C") << QString("12,345") << 12;
- QTest::newRow("C 12.345") << QString("C") << QString("12.345") << 12;
-
- QTest::newRow("de_DE -123") << QString("de_DE") << QString("-123") << -123;
- QTest::newRow("de_DE +123") << QString("de_DE") << QString("+123") << 123;
- QTest::newRow("de_DE 12345") << QString("de_DE") << QString("12345") << 12345;
- QTest::newRow("de_DE 12.345") << QString("de_DE") << QString("12.345") << 12345;
- QTest::newRow("de_DE .12345") << QString("de_DE") << QString(".12345") << 0;
-}
-
-void tst_QTextStream::int_read_with_locale()
-{
- QFETCH(QString, locale);
- QFETCH(QString, input);
- QFETCH(int, output);
-
- QTextStream stream(&input);
- stream.setLocale(locale);
- int result;
- stream >> result;
- QCOMPARE(result, output);
-}
-
-void tst_QTextStream::int_write_with_locale_data()
-{
- QTest::addColumn<QString>("locale");
- QTest::addColumn<int>("numberFlags");
- QTest::addColumn<int>("input");
- QTest::addColumn<QString>("output");
-
- QTest::newRow("C -123") << QString("C") << 0 << -123 << QString("-123");
- QTest::newRow("C +123") << QString("C") << (int)QTextStream::ForceSign << 123 << QString("+123");
- QTest::newRow("C 12345") << QString("C") << 0 << 12345 << QString("12345");
-
- QTest::newRow("de_DE -123") << QString("de_DE") << 0 << -123 << QString("-123");
- QTest::newRow("de_DE +123") << QString("de_DE") << (int)QTextStream::ForceSign << 123 << QString("+123");
- QTest::newRow("de_DE 12345") << QString("de_DE") << 0 << 12345 << QString("12.345");
-}
-
-void tst_QTextStream::int_write_with_locale()
-{
- QFETCH(QString, locale);
- QFETCH(int, numberFlags);
- QFETCH(int, input);
- QFETCH(QString, output);
-
- QString result;
- QTextStream stream(&result);
- stream.setLocale(locale);
- if (numberFlags)
- stream.setNumberFlags(QTextStream::NumberFlags(numberFlags));
- stream << input;
- QCOMPARE(result, output);
-}
-
-// ------------------------------------------------------------------------------
-
-// like QTEST_APPLESS_MAIN, but initialising the locale on Unix
-#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
-QT_BEGIN_NAMESPACE
-extern bool qt_locale_initialized;
-QT_END_NAMESPACE
-#endif
-
-int main(int argc, char *argv[])
-{
-#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
- ::setlocale(LC_ALL, "");
- qt_locale_initialized = true;
-#endif
- tst_QTextStream tc;
- return QTest::qExec(&tc, argc, argv);
-}
-
-#include "tst_qtextstream.moc"
-
diff --git a/tests/auto/qtexttable/qtexttable.pro b/tests/auto/qtexttable/qtexttable.pro
deleted file mode 100644
index 6ab64bfa94..0000000000
--- a/tests/auto/qtexttable/qtexttable.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qtexttable.cpp
-
-
-
diff --git a/tests/auto/qtimer/tst_qtimer.cpp b/tests/auto/qtimer/tst_qtimer.cpp
deleted file mode 100644
index e08c903e7c..0000000000
--- a/tests/auto/qtimer/tst_qtimer.cpp
+++ /dev/null
@@ -1,794 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-
-#include <qtimer.h>
-#include <qthread.h>
-
-#if defined Q_OS_UNIX
-#include <unistd.h>
-#endif
-
-#include "../../shared/util.h"
-
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QTimer : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QTimer();
- virtual ~tst_QTimer();
-
-
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-private slots:
- void zeroTimer();
- void singleShotTimeout();
- void timeout();
- void livelock_data();
- void livelock();
- void timerInfiniteRecursion_data();
- void timerInfiniteRecursion();
- void recurringTimer_data();
- void recurringTimer();
- void deleteLaterOnQTimer(); // long name, don't want to shadow QObject::deleteLater()
- void moveToThread();
- void restartedTimerFiresTooSoon();
- void timerFiresOnlyOncePerProcessEvents_data();
- void timerFiresOnlyOncePerProcessEvents();
- void timerIdPersistsAfterThreadExit();
- void cancelLongTimer();
- void singleShotStaticFunctionZeroTimeout();
- void recurseOnTimeoutAndStopTimer();
-
- void QTBUG13633_dontBlockEvents();
- void postedEventsShouldNotStarveTimers();
-#ifdef Q_OS_SYMBIAN
- void handleLeaks();
-#endif
-};
-
-class TimerHelper : public QObject
-{
- Q_OBJECT
-public:
- TimerHelper() : QObject(), count(0)
- {
- }
-
- int count;
-
-public slots:
- void timeout();
-};
-
-void TimerHelper::timeout()
-{
- ++count;
-}
-
-tst_QTimer::tst_QTimer()
-{
-}
-
-tst_QTimer::~tst_QTimer()
-{
-}
-
-void tst_QTimer::initTestCase()
-{
-}
-
-void tst_QTimer::cleanupTestCase()
-{
-}
-
-void tst_QTimer::init()
-{
-}
-
-void tst_QTimer::cleanup()
-{
-}
-
-void tst_QTimer::zeroTimer()
-{
- TimerHelper helper;
- QTimer timer;
- timer.setInterval(0);
- timer.start();
-
- connect(&timer, SIGNAL(timeout()), &helper, SLOT(timeout()));
-
- QCoreApplication::processEvents();
-
- QCOMPARE(helper.count, 1);
-}
-
-void tst_QTimer::singleShotTimeout()
-{
- TimerHelper helper;
- QTimer timer;
- timer.setSingleShot(true);
-
- connect(&timer, SIGNAL(timeout()), &helper, SLOT(timeout()));
- timer.start(100);
-
- QTest::qWait(500);
- QCOMPARE(helper.count, 1);
- QTest::qWait(500);
- QCOMPARE(helper.count, 1);
-}
-
-#if defined(Q_OS_SYMBIAN)
-// Increase wait as emulator startup can cause unexpected delays, and
-// on hardware there are sometimes spikes right after process startup.
-#define TIMEOUT_TIMEOUT 2000
-#else
-#define TIMEOUT_TIMEOUT 200
-#endif
-
-void tst_QTimer::timeout()
-{
- TimerHelper helper;
- QTimer timer;
-
- connect(&timer, SIGNAL(timeout()), &helper, SLOT(timeout()));
- timer.start(100);
-
- QCOMPARE(helper.count, 0);
-
- QTest::qWait(TIMEOUT_TIMEOUT);
- QVERIFY(helper.count > 0);
- int oldCount = helper.count;
-
- QTest::qWait(TIMEOUT_TIMEOUT);
- QVERIFY(helper.count > oldCount);
-}
-
-
-void tst_QTimer::livelock_data()
-{
- QTest::addColumn<int>("interval");
- QTest::newRow("zero timer") << 0;
- QTest::newRow("non-zero timer") << 1;
- QTest::newRow("longer than sleep") << 20;
-}
-
-/*!
- *
- * DO NOT "FIX" THIS TEST! it is written like this for a reason, do
- * not *change it without first dicussing it with its maintainers.
- *
-*/
-class LiveLockTester : public QObject
-{
-public:
- LiveLockTester(int i)
- : interval(i),
- timeoutsForFirst(0), timeoutsForExtra(0), timeoutsForSecond(0),
- postEventAtRightTime(false)
- {
- firstTimerId = startTimer(interval);
- extraTimerId = startTimer(interval + 80);
- secondTimerId = -1; // started later
- }
-
- bool event(QEvent *e) {
- if (e->type() == 4002) {
- // got the posted event
- if (timeoutsForFirst == 1 && timeoutsForSecond == 0)
- postEventAtRightTime = true;
- return true;
- }
- return QObject::event(e);
- }
-
- void timerEvent(QTimerEvent *te) {
- if (te->timerId() == firstTimerId) {
- if (++timeoutsForFirst == 1) {
- killTimer(extraTimerId);
- extraTimerId = -1;
- QCoreApplication::postEvent(this, new QEvent(static_cast<QEvent::Type>(4002)));
- secondTimerId = startTimer(interval);
- }
- } else if (te->timerId() == secondTimerId) {
- ++timeoutsForSecond;
- } else if (te->timerId() == extraTimerId) {
- ++timeoutsForExtra;
- }
-
- // sleep for 2ms
- QTest::qSleep(2);
- killTimer(te->timerId());
- }
-
- const int interval;
- int firstTimerId;
- int secondTimerId;
- int extraTimerId;
- int timeoutsForFirst;
- int timeoutsForExtra;
- int timeoutsForSecond;
- bool postEventAtRightTime;
-};
-
-void tst_QTimer::livelock()
-{
- /*
- New timers created in timer event handlers should not be sent
- until the next iteration of the eventloop. Note: this test
- depends on the fact that we send posted events before timer
- events (since new posted events are not sent until the next
- iteration of the eventloop either).
- */
- QFETCH(int, interval);
- LiveLockTester tester(interval);
- QTest::qWait(180); // we have to use wait here, since we're testing timers with a non-zero timeout
- QTRY_COMPARE(tester.timeoutsForFirst, 1);
- QCOMPARE(tester.timeoutsForExtra, 0);
- QTRY_COMPARE(tester.timeoutsForSecond, 1);
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- if (QSysInfo::WindowsVersion < QSysInfo::WV_XP)
- QEXPECT_FAIL("non-zero timer", "Multimedia timers are not available on Windows 2000", Continue);
-#elif defined(Q_OS_WINCE)
- QEXPECT_FAIL("non-zero timer", "Windows CE devices often too slow", Continue);
-#endif
- QVERIFY(tester.postEventAtRightTime);
-}
-
-class TimerInfiniteRecursionObject : public QObject
-{
-public:
- bool inTimerEvent;
- bool timerEventRecursed;
- int interval;
-
- TimerInfiniteRecursionObject(int interval)
- : inTimerEvent(false), timerEventRecursed(false), interval(interval)
- { }
-
- void timerEvent(QTimerEvent *timerEvent)
- {
- timerEventRecursed = inTimerEvent;
- if (timerEventRecursed) {
- // bug detected!
- return;
- }
-
- inTimerEvent = true;
-
- QEventLoop eventLoop;
- QTimer::singleShot(qMax(100, interval * 2), &eventLoop, SLOT(quit()));
- eventLoop.exec();
-
- inTimerEvent = false;
-
- killTimer(timerEvent->timerId());
- }
-};
-
-void tst_QTimer::timerInfiniteRecursion_data()
-{
- QTest::addColumn<int>("interval");
- QTest::newRow("zero timer") << 0;
- QTest::newRow("non-zero timer") << 1;
- QTest::newRow("10ms timer") << 10;
- QTest::newRow("11ms timer") << 11;
- QTest::newRow("100ms timer") << 100;
- QTest::newRow("1s timer") << 1000;
-}
-
-
-void tst_QTimer::timerInfiniteRecursion()
-{
- QFETCH(int, interval);
- TimerInfiniteRecursionObject object(interval);
- (void) object.startTimer(interval);
-
- QEventLoop eventLoop;
- QTimer::singleShot(qMax(100, interval * 2), &eventLoop, SLOT(quit()));
- eventLoop.exec();
-
- QVERIFY(!object.timerEventRecursed);
-}
-
-class RecurringTimerObject : public QObject
-{
-Q_OBJECT
-public:
- int times;
- int target;
- bool recurse;
-
- RecurringTimerObject(int target)
- : times(0), target(target), recurse(false)
- { }
-
- void timerEvent(QTimerEvent *timerEvent)
- {
- if (++times == target) {
- killTimer(timerEvent->timerId());
- emit done();
- } if (recurse) {
- QEventLoop eventLoop;
- QTimer::singleShot(100, &eventLoop, SLOT(quit()));
- eventLoop.exec();
- }
- }
-
-signals:
- void done();
-};
-
-void tst_QTimer::recurringTimer_data()
-{
- QTest::addColumn<int>("interval");
- QTest::newRow("zero timer") << 0;
- QTest::newRow("non-zero timer") << 1;
-}
-
-void tst_QTimer::recurringTimer()
-{
- const int target = 5;
- QFETCH(int, interval);
-
- {
- RecurringTimerObject object(target);
- QObject::connect(&object, SIGNAL(done()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- (void) object.startTimer(interval);
- QTestEventLoop::instance().enterLoop(5);
-
- QCOMPARE(object.times, target);
- }
-
- {
- // make sure that eventloop recursion doesn't effect timer recurrance
- RecurringTimerObject object(target);
- object.recurse = true;
-
- QObject::connect(&object, SIGNAL(done()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- (void) object.startTimer(interval);
- QTestEventLoop::instance().enterLoop(5);
-
- QCOMPARE(object.times, target);
- }
-}
-
-void tst_QTimer::deleteLaterOnQTimer()
-{
- QTimer *timer = new QTimer;
- connect(timer, SIGNAL(timeout()), timer, SLOT(deleteLater()));
- connect(timer, SIGNAL(destroyed()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- timer->setInterval(1);
- timer->setSingleShot(true);
- timer->start();
- QPointer<QTimer> pointer = timer;
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(pointer.isNull());
-}
-
-#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
-// Increase wait as emulator startup can cause unexpected delays
-#define MOVETOTHREAD_TIMEOUT 200
-#define MOVETOTHREAD_WAIT 5000
-#else
-#define MOVETOTHREAD_TIMEOUT 200
-#define MOVETOTHREAD_WAIT 300
-#endif
-
-void tst_QTimer::moveToThread()
-{
- QTimer ti1;
- QTimer ti2;
- ti1.start(MOVETOTHREAD_TIMEOUT);
- ti2.start(MOVETOTHREAD_TIMEOUT);
- QVERIFY((ti1.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
- QThread tr;
- ti1.moveToThread(&tr);
- connect(&ti1,SIGNAL(timeout()), &tr, SLOT(quit()));
- tr.start();
- QTimer ti3;
- ti3.start(MOVETOTHREAD_TIMEOUT);
- QVERIFY((ti3.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
- QVERIFY((ti3.timerId() & 0xffffff) != (ti1.timerId() & 0xffffff));
- QTest::qWait(MOVETOTHREAD_WAIT);
- QVERIFY(tr.wait());
- ti2.stop();
- QTimer ti4;
- ti4.start(MOVETOTHREAD_TIMEOUT);
- ti3.stop();
- ti2.start(MOVETOTHREAD_TIMEOUT);
- ti3.start(MOVETOTHREAD_TIMEOUT);
- QVERIFY((ti4.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
- QVERIFY((ti3.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
- QVERIFY((ti3.timerId() & 0xffffff) != (ti1.timerId() & 0xffffff));
-}
-
-class RestartedTimerFiresTooSoonObject : public QObject
-{
- Q_OBJECT
-
-public:
- QBasicTimer m_timer;
-
- int m_interval;
- QTime m_startedTime;
- QEventLoop eventLoop;
-
- inline RestartedTimerFiresTooSoonObject()
- : QObject(), m_interval(0)
- { }
-
- void timerFired()
- {
- static int interval = 1000;
-
- m_interval = interval;
- m_startedTime.start();
- m_timer.start(interval, this);
-
- // alternate between single-shot and 1 sec
- interval = interval ? 0 : 1000;
- }
-
- void timerEvent(QTimerEvent* ev)
- {
- if (ev->timerId() != m_timer.timerId())
- return;
-
- m_timer.stop();
-
- QTime now = QTime::currentTime();
- int elapsed = m_startedTime.elapsed();
-
- if (elapsed < m_interval / 2) {
- // severely too early!
- m_timer.stop();
- eventLoop.exit(-1);
- return;
- }
-
- timerFired();
-
- // don't do this forever
- static int count = 0;
- if (count++ > 20) {
- m_timer.stop();
- eventLoop.quit();
- return;
- }
- }
-};
-
-void tst_QTimer::restartedTimerFiresTooSoon()
-{
- RestartedTimerFiresTooSoonObject object;
- object.timerFired();
- QVERIFY(object.eventLoop.exec() == 0);
-}
-
-class LongLastingSlotClass : public QObject
-{
- Q_OBJECT
-
-public:
- LongLastingSlotClass(QTimer *timer) : count(0), timer(timer) {}
-
-public slots:
- void longLastingSlot()
- {
- // Don't use timers for this, because we are testing them.
- QTime time;
- time.start();
- while (time.elapsed() < 200) {
- for (int c = 0; c < 100000; c++) {} // Mindless looping.
- }
- if (++count >= 2) {
- timer->stop();
- }
- }
-
-public:
- int count;
- QTimer *timer;
-};
-
-void tst_QTimer::timerFiresOnlyOncePerProcessEvents_data()
-{
- QTest::addColumn<int>("interval");
- QTest::newRow("zero timer") << 0;
- QTest::newRow("non-zero timer") << 10;
-}
-
-void tst_QTimer::timerFiresOnlyOncePerProcessEvents()
-{
- QFETCH(int, interval);
-
- QTimer t;
- LongLastingSlotClass longSlot(&t);
- t.start(interval);
- connect(&t, SIGNAL(timeout()), &longSlot, SLOT(longLastingSlot()));
- // Loop because there may be other events pending.
- while (longSlot.count == 0) {
- QCoreApplication::processEvents(QEventLoop::WaitForMoreEvents);
- }
-
- QCOMPARE(longSlot.count, 1);
-}
-
-class TimerIdPersistsAfterThreadExitThread : public QThread
-{
-public:
- QTimer *timer;
- int timerId, returnValue;
-
- TimerIdPersistsAfterThreadExitThread()
- : QThread(), timer(0), timerId(-1), returnValue(-1)
- { }
- ~TimerIdPersistsAfterThreadExitThread()
- {
- delete timer;
- }
-
- void run()
- {
- QEventLoop eventLoop;
- timer = new QTimer;
- connect(timer, SIGNAL(timeout()), &eventLoop, SLOT(quit()));
- timer->start(100);
- timerId = timer->timerId();
- returnValue = eventLoop.exec();
- }
-};
-
-void tst_QTimer::timerIdPersistsAfterThreadExit()
-{
- TimerIdPersistsAfterThreadExitThread thread;
- thread.start();
- QVERIFY(thread.wait(30000));
- QCOMPARE(thread.returnValue, 0);
-
- // even though the thread has exited, and the event dispatcher destroyed, the timer is still
- // "active", meaning the timer id should NOT be reused (i.e. the event dispatcher should not
- // have unregistered it)
- int timerId = thread.startTimer(100);
- QVERIFY((timerId & 0xffffff) != (thread.timerId & 0xffffff));
-}
-
-void tst_QTimer::cancelLongTimer()
-{
- QTimer timer;
- timer.setSingleShot(true);
- timer.start(1000 * 60 * 60); //set timer for 1 hour (which would overflow Symbian RTimer)
- QCoreApplication::processEvents();
- QVERIFY(timer.isActive()); //if the timer completes immediately with an error, then this will fail
- timer.stop();
- QVERIFY(!timer.isActive());
-}
-
-void tst_QTimer::singleShotStaticFunctionZeroTimeout()
-{
- TimerHelper helper;
-
- QTimer::singleShot(0, &helper, SLOT(timeout()));
- QTest::qWait(500);
- QCOMPARE(helper.count, 1);
- QTest::qWait(500);
- QCOMPARE(helper.count, 1);
-}
-
-class RecursOnTimeoutAndStopTimerTimer : public QObject
-{
- Q_OBJECT
-
-public:
- QTimer *one;
- QTimer *two;
-
-public slots:
- void onetrigger()
- {
- QCoreApplication::processEvents();
- }
-
- void twotrigger()
- {
- one->stop();
- }
-};
-
-void tst_QTimer::recurseOnTimeoutAndStopTimer()
-{
- QEventLoop eventLoop;
- QTimer::singleShot(1000, &eventLoop, SLOT(quit()));
-
- RecursOnTimeoutAndStopTimerTimer t;
- t.one = new QTimer(&t);
- t.two = new QTimer(&t);
-
- QObject::connect(t.one, SIGNAL(timeout()), &t, SLOT(onetrigger()));
- QObject::connect(t.two, SIGNAL(timeout()), &t, SLOT(twotrigger()));
-
- t.two->setSingleShot(true);
-
- t.one->start();
- t.two->start();
-
- (void) eventLoop.exec();
-
- QVERIFY(!t.one->isActive());
- QVERIFY(!t.two->isActive());
-}
-
-
-
-class DontBlockEvents : public QObject
-{
- Q_OBJECT
-public:
- DontBlockEvents();
- void timerEvent(QTimerEvent*);
-
- int count;
- int total;
- QBasicTimer m_timer;
-
-public slots:
- void paintEvent();
-
-};
-
-DontBlockEvents::DontBlockEvents()
-{
- count = 0;
- total = 0;
-
- //QTBUG-13633 need few unrelated timer running to reproduce the bug.
- (new QTimer(this))->start(2000);
- (new QTimer(this))->start(2500);
- (new QTimer(this))->start(3000);
- (new QTimer(this))->start(5000);
- (new QTimer(this))->start(1000);
- (new QTimer(this))->start(2000);
-
- m_timer.start(1, this);
-}
-
-void DontBlockEvents::timerEvent(QTimerEvent* event)
-{
- if (event->timerId() == m_timer.timerId()) {
- QMetaObject::invokeMethod(this, "paintEvent", Qt::QueuedConnection);
- m_timer.start(0, this);
- count++;
- QCOMPARE(count, 1);
- total++;
- }
-}
-
-void DontBlockEvents::paintEvent()
-{
- count--;
- QCOMPARE(count, 0);
-}
-
-
-void tst_QTimer::QTBUG13633_dontBlockEvents()
-{
- DontBlockEvents t;
- QTest::qWait(60);
- QTRY_VERIFY(t.total > 2);
-}
-
-class SlotRepeater : public QObject {
- Q_OBJECT
-public:
- SlotRepeater() {}
-
-public slots:
- void repeatThisSlot()
- {
- QMetaObject::invokeMethod(this, "repeatThisSlot", Qt::QueuedConnection);
- }
-};
-
-void tst_QTimer::postedEventsShouldNotStarveTimers()
-{
- TimerHelper timerHelper;
- QTimer timer;
- connect(&timer, SIGNAL(timeout()), &timerHelper, SLOT(timeout()));
- timer.setInterval(0);
- timer.setSingleShot(false);
- timer.start();
- SlotRepeater slotRepeater;
- slotRepeater.repeatThisSlot();
- QTest::qWait(100);
- QVERIFY(timerHelper.count > 5);
-}
-
-#ifdef Q_OS_SYMBIAN
-void tst_QTimer::handleLeaks()
-{
- const int timercount = 5;
- int processhandles_start;
- int threadhandles_start;
- RThread().HandleCount(processhandles_start, threadhandles_start);
- {
- TimerHelper timerHelper;
- QList<QTimer*> timers;
- for (int i=0;i<timercount;i++) {
- QTimer* timer = new QTimer;
- timers.append(timer);
- connect(timer, SIGNAL(timeout()), &timerHelper, SLOT(timeout()));
- timer->setSingleShot(true);
- timer->start(i); //test both zero and normal timeouts
- }
- int processhandles_mid;
- int threadhandles_mid;
- RThread().HandleCount(processhandles_mid, threadhandles_mid);
- qDebug() << threadhandles_mid - threadhandles_start << "new thread owned handles";
- QTest::qWait(100);
- QCOMPARE(timerHelper.count, timercount);
- qDeleteAll(timers);
- }
- int processhandles_end;
- int threadhandles_end;
- RThread().HandleCount(processhandles_end, threadhandles_end);
- QCOMPARE(threadhandles_end, threadhandles_start); //RTimer::CreateLocal creates a thread owned handle
- //Can not verify process handles because QObject::connect may create up to 2 mutexes
- //from a QMutexPool (4 process owned handles with open C imp.)
- //QCOMPARE(processhandles_end, processhandles_start);
-}
-#endif
-
-QTEST_MAIN(tst_QTimer)
-#include "tst_qtimer.moc"
diff --git a/tests/auto/qtmd5/qtmd5.pro b/tests/auto/qtmd5/qtmd5.pro
deleted file mode 100644
index 0afc6b1b14..0000000000
--- a/tests/auto/qtmd5/qtmd5.pro
+++ /dev/null
@@ -1,15 +0,0 @@
-include(../solutions.pri)
-
-!contains(DEFINES, QT_NO_SOLUTIONS) {
- include($${SOLUTIONBASEDIR}/utils/qtmd5/src/qtmd5.pri)
-}
-
-load(qttest_p4)
-
-SOURCES += tst_qtmd5.cpp
-
-
-QT = core
-
-
-CONFIG += parallel_test
diff --git a/tests/auto/qtoolbar/qtoolbar.pro b/tests/auto/qtoolbar/qtoolbar.pro
index 2c1176fe00..b340097d81 100644
--- a/tests/auto/qtoolbar/qtoolbar.pro
+++ b/tests/auto/qtoolbar/qtoolbar.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += gui-private
SOURCES += tst_qtoolbar.cpp
diff --git a/tests/auto/qtoolbox/qtoolbox.pro b/tests/auto/qtoolbox/qtoolbox.pro
index 00c4549ee2..24f3ea6cb9 100644
--- a/tests/auto/qtoolbox/qtoolbox.pro
+++ b/tests/auto/qtoolbox/qtoolbox.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qtoolbox.cpp
diff --git a/tests/auto/qtoolbutton/qtoolbutton.pro b/tests/auto/qtoolbutton/qtoolbutton.pro
index a40f31e6b4..a14f2e4713 100644
--- a/tests/auto/qtoolbutton/qtoolbutton.pro
+++ b/tests/auto/qtoolbutton/qtoolbutton.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qtoolbutton.cpp
CONFIG+=insignificant_test
diff --git a/tests/auto/qtooltip/qtooltip.pro b/tests/auto/qtooltip/qtooltip.pro
index 0bd0e42c48..4da8917921 100644
--- a/tests/auto/qtooltip/qtooltip.pro
+++ b/tests/auto/qtooltip/qtooltip.pro
@@ -1,2 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qtooltip.cpp
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qtouchevent/qtouchevent.pro b/tests/auto/qtouchevent/qtouchevent.pro
deleted file mode 100644
index 8f6aa8703f..0000000000
--- a/tests/auto/qtouchevent/qtouchevent.pro
+++ /dev/null
@@ -1,3 +0,0 @@
-SOURCES=tst_qtouchevent.cpp
-TARGET=tst_qtouchevent
-QT+=testlib
diff --git a/tests/auto/qtouchevent/tst_qtouchevent.cpp b/tests/auto/qtouchevent/tst_qtouchevent.cpp
deleted file mode 100644
index f0347e39ff..0000000000
--- a/tests/auto/qtouchevent/tst_qtouchevent.cpp
+++ /dev/null
@@ -1,1398 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the $MODULE$ of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui>
-#include <QtTest>
-
-class tst_QTouchEventWidget : public QWidget
-{
-public:
- QList<QTouchEvent::TouchPoint> touchBeginPoints, touchUpdatePoints, touchEndPoints;
- bool seenTouchBegin, seenTouchUpdate, seenTouchEnd;
- bool acceptTouchBegin, acceptTouchUpdate, acceptTouchEnd;
- bool deleteInTouchBegin, deleteInTouchUpdate, deleteInTouchEnd;
-
- tst_QTouchEventWidget()
- : QWidget()
- {
- reset();
- }
-
- void reset()
- {
- touchBeginPoints.clear();
- touchUpdatePoints.clear();
- touchEndPoints.clear();
- seenTouchBegin = seenTouchUpdate = seenTouchEnd = false;
- acceptTouchBegin = acceptTouchUpdate = acceptTouchEnd = true;
- deleteInTouchBegin = deleteInTouchUpdate = deleteInTouchEnd = false;
- }
-
- bool event(QEvent *event)
- {
- switch (event->type()) {
- case QEvent::TouchBegin:
- if (seenTouchBegin) qWarning("TouchBegin: already seen a TouchBegin");
- if (seenTouchUpdate) qWarning("TouchBegin: TouchUpdate cannot happen before TouchBegin");
- if (seenTouchEnd) qWarning("TouchBegin: TouchEnd cannot happen before TouchBegin");
- seenTouchBegin = !seenTouchBegin && !seenTouchUpdate && !seenTouchEnd;
- touchBeginPoints = static_cast<QTouchEvent *>(event)->touchPoints();
- event->setAccepted(acceptTouchBegin);
- if (deleteInTouchBegin)
- delete this;
- break;
- case QEvent::TouchUpdate:
- if (!seenTouchBegin) qWarning("TouchUpdate: have not seen TouchBegin");
- if (seenTouchEnd) qWarning("TouchUpdate: TouchEnd cannot happen before TouchUpdate");
- seenTouchUpdate = seenTouchBegin && !seenTouchEnd;
- touchUpdatePoints = static_cast<QTouchEvent *>(event)->touchPoints();
- event->setAccepted(acceptTouchUpdate);
- if (deleteInTouchUpdate)
- delete this;
- break;
- case QEvent::TouchEnd:
- if (!seenTouchBegin) qWarning("TouchEnd: have not seen TouchBegin");
- if (seenTouchEnd) qWarning("TouchEnd: already seen a TouchEnd");
- seenTouchEnd = seenTouchBegin && !seenTouchEnd;
- touchEndPoints = static_cast<QTouchEvent *>(event)->touchPoints();
- event->setAccepted(acceptTouchEnd);
- if (deleteInTouchEnd)
- delete this;
- break;
- default:
- return QWidget::event(event);
- }
- return true;
- }
-};
-
-class tst_QTouchEventGraphicsItem : public QGraphicsItem
-{
-public:
- QList<QTouchEvent::TouchPoint> touchBeginPoints, touchUpdatePoints, touchEndPoints;
- bool seenTouchBegin, seenTouchUpdate, seenTouchEnd;
- int touchBeginCounter, touchUpdateCounter, touchEndCounter;
- bool acceptTouchBegin, acceptTouchUpdate, acceptTouchEnd;
- bool deleteInTouchBegin, deleteInTouchUpdate, deleteInTouchEnd;
- tst_QTouchEventGraphicsItem **weakpointer;
-
- tst_QTouchEventGraphicsItem()
- : QGraphicsItem(), weakpointer(0)
- {
- reset();
- }
-
- ~tst_QTouchEventGraphicsItem()
- {
- if (weakpointer)
- *weakpointer = 0;
- }
-
- void reset()
- {
- touchBeginPoints.clear();
- touchUpdatePoints.clear();
- touchEndPoints.clear();
- seenTouchBegin = seenTouchUpdate = seenTouchEnd = false;
- touchBeginCounter = touchUpdateCounter = touchEndCounter = 0;
- acceptTouchBegin = acceptTouchUpdate = acceptTouchEnd = true;
- deleteInTouchBegin = deleteInTouchUpdate = deleteInTouchEnd = false;
- }
-
- QRectF boundingRect() const { return QRectF(0, 0, 10, 10); }
- void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) { }
-
- bool sceneEvent(QEvent *event)
- {
- switch (event->type()) {
- case QEvent::TouchBegin:
- if (seenTouchBegin) qWarning("TouchBegin: already seen a TouchBegin");
- if (seenTouchUpdate) qWarning("TouchBegin: TouchUpdate cannot happen before TouchBegin");
- if (seenTouchEnd) qWarning("TouchBegin: TouchEnd cannot happen before TouchBegin");
- seenTouchBegin = !seenTouchBegin && !seenTouchUpdate && !seenTouchEnd;
- ++touchBeginCounter;
- touchBeginPoints = static_cast<QTouchEvent *>(event)->touchPoints();
- event->setAccepted(acceptTouchBegin);
- if (deleteInTouchBegin)
- delete this;
- break;
- case QEvent::TouchUpdate:
- if (!seenTouchBegin) qWarning("TouchUpdate: have not seen TouchBegin");
- if (seenTouchEnd) qWarning("TouchUpdate: TouchEnd cannot happen before TouchUpdate");
- seenTouchUpdate = seenTouchBegin && !seenTouchEnd;
- ++touchUpdateCounter;
- touchUpdatePoints = static_cast<QTouchEvent *>(event)->touchPoints();
- event->setAccepted(acceptTouchUpdate);
- if (deleteInTouchUpdate)
- delete this;
- break;
- case QEvent::TouchEnd:
- if (!seenTouchBegin) qWarning("TouchEnd: have not seen TouchBegin");
- if (seenTouchEnd) qWarning("TouchEnd: already seen a TouchEnd");
- seenTouchEnd = seenTouchBegin && !seenTouchEnd;
- ++touchEndCounter;
- touchEndPoints = static_cast<QTouchEvent *>(event)->touchPoints();
- event->setAccepted(acceptTouchEnd);
- if (deleteInTouchEnd)
- delete this;
- break;
- default:
- return QGraphicsItem::sceneEvent(event);
- }
- return true;
- }
-};
-
-class tst_QTouchEvent : public QObject
-{
- Q_OBJECT
-public:
- tst_QTouchEvent() { }
- ~tst_QTouchEvent() { }
-
-private slots:
- void touchDisabledByDefault();
- void touchEventAcceptedByDefault();
- void touchBeginPropagatesWhenIgnored();
- void touchUpdateAndEndNeverPropagate();
- void basicRawEventTranslation();
- void multiPointRawEventTranslationOnTouchScreen();
- void multiPointRawEventTranslationOnTouchPad();
- void deleteInEventHandler();
- void deleteInRawEventTranslation();
- void crashInQGraphicsSceneAfterNotHandlingTouchBegin();
- void touchBeginWithGraphicsWidget();
-};
-
-void tst_QTouchEvent::touchDisabledByDefault()
-{
- // QWidget
- {
- // the widget attribute is not enabled by default
- QWidget widget;
- QVERIFY(!widget.testAttribute(Qt::WA_AcceptTouchEvents));
-
- // events should not be accepted since they are not enabled
- QList<QTouchEvent::TouchPoint> touchPoints;
- touchPoints.append(QTouchEvent::TouchPoint(0));
- QTouchEvent touchEvent(QEvent::TouchBegin,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointPressed,
- touchPoints);
- bool res = QApplication::sendEvent(&widget, &touchEvent);
- QVERIFY(!res);
- QVERIFY(!touchEvent.isAccepted());
- }
-
- // QGraphicsView
- {
- QGraphicsScene scene;
- tst_QTouchEventGraphicsItem item;
- QGraphicsView view(&scene);
- scene.addItem(&item);
- item.setPos(100, 100);
- view.resize(200, 200);
- view.fitInView(scene.sceneRect());
-
- // touch events are not accepted by default
- QVERIFY(!item.acceptTouchEvents());
-
- // compose an event to the scene that is over the item
- QTouchEvent::TouchPoint touchPoint(0);
- touchPoint.setState(Qt::TouchPointPressed);
- touchPoint.setPos(view.mapFromScene(item.mapToScene(item.boundingRect().center())));
- touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
- touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
- QTouchEvent touchEvent(QEvent::TouchBegin,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointPressed,
- (QList<QTouchEvent::TouchPoint>() << touchPoint));
- bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
- QVERIFY(!res);
- QVERIFY(!touchEvent.isAccepted());
- QVERIFY(!item.seenTouchBegin);
- }
-}
-
-void tst_QTouchEvent::touchEventAcceptedByDefault()
-{
- // QWidget
- {
- // enabling touch events should automatically accept touch events
- QWidget widget;
- widget.setAttribute(Qt::WA_AcceptTouchEvents);
-
- // QWidget handles touch event by converting them into a mouse event, so the event is both
- // accepted and handled (res == true)
- QList<QTouchEvent::TouchPoint> touchPoints;
- touchPoints.append(QTouchEvent::TouchPoint(0));
- QTouchEvent touchEvent(QEvent::TouchBegin,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointPressed,
- touchPoints);
- bool res = QApplication::sendEvent(&widget, &touchEvent);
- QVERIFY(res);
- QVERIFY(touchEvent.isAccepted());
-
- // tst_QTouchEventWidget does handle, sending succeeds
- tst_QTouchEventWidget touchWidget;
- touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
- touchEvent.ignore();
- res = QApplication::sendEvent(&touchWidget, &touchEvent);
- QVERIFY(res);
- QVERIFY(touchEvent.isAccepted());
- }
-
- // QGraphicsView
- {
- QGraphicsScene scene;
- tst_QTouchEventGraphicsItem item;
- QGraphicsView view(&scene);
- scene.addItem(&item);
- item.setPos(100, 100);
- view.resize(200, 200);
- view.fitInView(scene.sceneRect());
-
- // enabling touch events on the item also enables events on the viewport
- item.setAcceptTouchEvents(true);
- QVERIFY(view.viewport()->testAttribute(Qt::WA_AcceptTouchEvents));
-
- // compose an event to the scene that is over the item
- QTouchEvent::TouchPoint touchPoint(0);
- touchPoint.setState(Qt::TouchPointPressed);
- touchPoint.setPos(view.mapFromScene(item.mapToScene(item.boundingRect().center())));
- touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
- touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
- QTouchEvent touchEvent(QEvent::TouchBegin,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointPressed,
- (QList<QTouchEvent::TouchPoint>() << touchPoint));
- bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
- QVERIFY(res);
- QVERIFY(touchEvent.isAccepted());
- QVERIFY(item.seenTouchBegin);
- }
-}
-
-void tst_QTouchEvent::touchBeginPropagatesWhenIgnored()
-{
- // QWidget
- {
- tst_QTouchEventWidget window, child, grandchild;
- child.setParent(&window);
- grandchild.setParent(&child);
-
- // all widgets accept touch events, grandchild ignores, so child sees the event, but not window
- window.setAttribute(Qt::WA_AcceptTouchEvents);
- child.setAttribute(Qt::WA_AcceptTouchEvents);
- grandchild.setAttribute(Qt::WA_AcceptTouchEvents);
- grandchild.acceptTouchBegin = false;
-
- QList<QTouchEvent::TouchPoint> touchPoints;
- touchPoints.append(QTouchEvent::TouchPoint(0));
- QTouchEvent touchEvent(QEvent::TouchBegin,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointPressed,
- touchPoints);
- bool res = QApplication::sendEvent(&grandchild, &touchEvent);
- QVERIFY(res);
- QVERIFY(touchEvent.isAccepted());
- QVERIFY(grandchild.seenTouchBegin);
- QVERIFY(child.seenTouchBegin);
- QVERIFY(!window.seenTouchBegin);
-
- // disable touch on grandchild. even though it doesn't accept it, child should still get the
- // TouchBegin
- grandchild.reset();
- child.reset();
- window.reset();
- grandchild.setAttribute(Qt::WA_AcceptTouchEvents, false);
-
- touchEvent.ignore();
- res = QApplication::sendEvent(&grandchild, &touchEvent);
- QVERIFY(res);
- QVERIFY(touchEvent.isAccepted());
- QVERIFY(!grandchild.seenTouchBegin);
- QVERIFY(child.seenTouchBegin);
- QVERIFY(!window.seenTouchBegin);
- }
-
- // QGraphicsView
- {
- QGraphicsScene scene;
- tst_QTouchEventGraphicsItem root, child, grandchild;
- QGraphicsView view(&scene);
- scene.addItem(&root);
- root.setPos(100, 100);
- child.setParentItem(&root);
- grandchild.setParentItem(&child);
- view.resize(200, 200);
- view.fitInView(scene.sceneRect());
-
- // all items accept touch events, grandchild ignores, so child sees the event, but not root
- root.setAcceptTouchEvents(true);
- child.setAcceptTouchEvents(true);
- grandchild.setAcceptTouchEvents(true);
- grandchild.acceptTouchBegin = false;
-
- // compose an event to the scene that is over the grandchild
- QTouchEvent::TouchPoint touchPoint(0);
- touchPoint.setState(Qt::TouchPointPressed);
- touchPoint.setPos(view.mapFromScene(grandchild.mapToScene(grandchild.boundingRect().center())));
- touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
- touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
- QTouchEvent touchEvent(QEvent::TouchBegin,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointPressed,
- (QList<QTouchEvent::TouchPoint>() << touchPoint));
- bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
- QVERIFY(res);
- QVERIFY(touchEvent.isAccepted());
- QVERIFY(grandchild.seenTouchBegin);
- QVERIFY(child.seenTouchBegin);
- QVERIFY(!root.seenTouchBegin);
- }
-
- // QGraphicsView
- {
- QGraphicsScene scene;
- tst_QTouchEventGraphicsItem root, child, grandchild;
- QGraphicsView view(&scene);
- scene.addItem(&root);
- root.setPos(100, 100);
- child.setParentItem(&root);
- grandchild.setParentItem(&child);
- view.resize(200, 200);
- view.fitInView(scene.sceneRect());
-
- // leave touch disabled on grandchild. even though it doesn't accept it, child should
- // still get the TouchBegin
- root.setAcceptTouchEvents(true);
- child.setAcceptTouchEvents(true);
-
- // compose an event to the scene that is over the grandchild
- QTouchEvent::TouchPoint touchPoint(0);
- touchPoint.setState(Qt::TouchPointPressed);
- touchPoint.setPos(view.mapFromScene(grandchild.mapToScene(grandchild.boundingRect().center())));
- touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
- touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
- QTouchEvent touchEvent(QEvent::TouchBegin,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointPressed,
- (QList<QTouchEvent::TouchPoint>() << touchPoint));
- bool res = QApplication::sendEvent(view.viewport(), &touchEvent);
- QVERIFY(res);
- QVERIFY(touchEvent.isAccepted());
- QVERIFY(!grandchild.seenTouchBegin);
- QVERIFY(child.seenTouchBegin);
- QVERIFY(!root.seenTouchBegin);
- }
-}
-
-void tst_QTouchEvent::touchUpdateAndEndNeverPropagate()
-{
- // QWidget
- {
- tst_QTouchEventWidget window, child;
- child.setParent(&window);
-
- window.setAttribute(Qt::WA_AcceptTouchEvents);
- child.setAttribute(Qt::WA_AcceptTouchEvents);
- child.acceptTouchUpdate = false;
- child.acceptTouchEnd = false;
-
- QList<QTouchEvent::TouchPoint> touchPoints;
- touchPoints.append(QTouchEvent::TouchPoint(0));
- QTouchEvent touchBeginEvent(QEvent::TouchBegin,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointPressed,
- touchPoints);
- bool res = QApplication::sendEvent(&child, &touchBeginEvent);
- QVERIFY(res);
- QVERIFY(touchBeginEvent.isAccepted());
- QVERIFY(child.seenTouchBegin);
- QVERIFY(!window.seenTouchBegin);
-
- // send the touch update to the child, but ignore it, it doesn't propagate
- QTouchEvent touchUpdateEvent(QEvent::TouchUpdate,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointMoved,
- touchPoints);
- res = QApplication::sendEvent(&child, &touchUpdateEvent);
- QVERIFY(res);
- QVERIFY(!touchUpdateEvent.isAccepted());
- QVERIFY(child.seenTouchUpdate);
- QVERIFY(!window.seenTouchUpdate);
-
- // send the touch end, same thing should happen as with touch update
- QTouchEvent touchEndEvent(QEvent::TouchEnd,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointReleased,
- touchPoints);
- res = QApplication::sendEvent(&child, &touchEndEvent);
- QVERIFY(res);
- QVERIFY(!touchEndEvent.isAccepted());
- QVERIFY(child.seenTouchEnd);
- QVERIFY(!window.seenTouchEnd);
- }
-
- // QGraphicsView
- {
- QGraphicsScene scene;
- tst_QTouchEventGraphicsItem root, child, grandchild;
- QGraphicsView view(&scene);
- scene.addItem(&root);
- root.setPos(100, 100);
- child.setParentItem(&root);
- grandchild.setParentItem(&child);
- view.resize(200, 200);
- view.fitInView(scene.sceneRect());
-
- root.setAcceptTouchEvents(true);
- child.setAcceptTouchEvents(true);
- child.acceptTouchUpdate = false;
- child.acceptTouchEnd = false;
-
- // compose an event to the scene that is over the child
- QTouchEvent::TouchPoint touchPoint(0);
- touchPoint.setState(Qt::TouchPointPressed);
- touchPoint.setPos(view.mapFromScene(grandchild.mapToScene(grandchild.boundingRect().center())));
- touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
- touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
- QTouchEvent touchBeginEvent(QEvent::TouchBegin,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointPressed,
- (QList<QTouchEvent::TouchPoint>() << touchPoint));
- bool res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
- QVERIFY(res);
- QVERIFY(touchBeginEvent.isAccepted());
- QVERIFY(child.seenTouchBegin);
- QVERIFY(!root.seenTouchBegin);
-
- // send the touch update to the child, but ignore it, it doesn't propagate
- touchPoint.setState(Qt::TouchPointMoved);
- QTouchEvent touchUpdateEvent(QEvent::TouchUpdate,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointMoved,
- (QList<QTouchEvent::TouchPoint>() << touchPoint));
- res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
- QVERIFY(res);
- // the scene accepts the event, since it found an item to send the event to
- QVERIFY(!touchUpdateEvent.isAccepted());
- QVERIFY(child.seenTouchUpdate);
- QVERIFY(!root.seenTouchUpdate);
-
- // send the touch end, same thing should happen as with touch update
- touchPoint.setState(Qt::TouchPointReleased);
- QTouchEvent touchEndEvent(QEvent::TouchEnd,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointReleased,
- (QList<QTouchEvent::TouchPoint>() << touchPoint));
- res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
- QVERIFY(res);
- // the scene accepts the event, since it found an item to send the event to
- QVERIFY(!touchEndEvent.isAccepted());
- QVERIFY(child.seenTouchEnd);
- QVERIFY(!root.seenTouchEnd);
- }
-}
-
-QPointF normalized(const QPointF &pos, const QRectF &rect)
-{
- return QPointF(pos.x() / rect.width(), pos.y() / rect.height());
-}
-
-void tst_QTouchEvent::basicRawEventTranslation()
-{
- tst_QTouchEventWidget touchWidget;
- touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
- touchWidget.setGeometry(100, 100, 400, 300);
-
- QPointF pos = touchWidget.rect().center();
- QPointF screenPos = touchWidget.mapToGlobal(pos.toPoint());
- QPointF delta(10, 10);
- QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
-
- QTouchEvent::TouchPoint rawTouchPoint;
- rawTouchPoint.setId(0);
-
- // this should be translated to a TouchBegin
- rawTouchPoint.setState(Qt::TouchPointPressed);
- rawTouchPoint.setScreenPos(screenPos);
- rawTouchPoint.setNormalizedPos(normalized(rawTouchPoint.pos(), screenGeometry));
- qt_translateRawTouchEvent(&touchWidget,
- QTouchEvent::TouchScreen,
- QList<QTouchEvent::TouchPoint>() << rawTouchPoint);
- QVERIFY(touchWidget.seenTouchBegin);
- QVERIFY(!touchWidget.seenTouchUpdate);
- QVERIFY(!touchWidget.seenTouchEnd);
- QCOMPARE(touchWidget.touchBeginPoints.count(), 1);
- QTouchEvent::TouchPoint touchBeginPoint = touchWidget.touchBeginPoints.first();
- QCOMPARE(touchBeginPoint.id(), rawTouchPoint.id());
- QCOMPARE(touchBeginPoint.state(), rawTouchPoint.state());
- QCOMPARE(touchBeginPoint.pos(), pos);
- QCOMPARE(touchBeginPoint.startPos(), pos);
- QCOMPARE(touchBeginPoint.lastPos(), pos);
- QCOMPARE(touchBeginPoint.scenePos(), rawTouchPoint.screenPos());
- QCOMPARE(touchBeginPoint.startScenePos(), rawTouchPoint.screenPos());
- QCOMPARE(touchBeginPoint.lastScenePos(), rawTouchPoint.screenPos());
- QCOMPARE(touchBeginPoint.screenPos(), rawTouchPoint.screenPos());
- QCOMPARE(touchBeginPoint.startScreenPos(), rawTouchPoint.screenPos());
- QCOMPARE(touchBeginPoint.lastScreenPos(), rawTouchPoint.screenPos());
- QCOMPARE(touchBeginPoint.normalizedPos(), rawTouchPoint.normalizedPos());
- QCOMPARE(touchBeginPoint.startNormalizedPos(), touchBeginPoint.normalizedPos());
- QCOMPARE(touchBeginPoint.lastNormalizedPos(), touchBeginPoint.normalizedPos());
- QCOMPARE(touchBeginPoint.rect(), QRectF(pos, QSizeF(0, 0)));
- QCOMPARE(touchBeginPoint.screenRect(), QRectF(rawTouchPoint.screenPos(), QSizeF(0, 0)));
- QCOMPARE(touchBeginPoint.sceneRect(), touchBeginPoint.screenRect());
- QCOMPARE(touchBeginPoint.pressure(), qreal(1.));
-
- // moving the point should translate to TouchUpdate
- rawTouchPoint.setState(Qt::TouchPointMoved);
- rawTouchPoint.setScreenPos(screenPos + delta);
- rawTouchPoint.setNormalizedPos(normalized(rawTouchPoint.pos(), screenGeometry));
- qt_translateRawTouchEvent(&touchWidget,
- QTouchEvent::TouchScreen,
- QList<QTouchEvent::TouchPoint>() << rawTouchPoint);
- QVERIFY(touchWidget.seenTouchBegin);
- QVERIFY(touchWidget.seenTouchUpdate);
- QVERIFY(!touchWidget.seenTouchEnd);
- QCOMPARE(touchWidget.touchUpdatePoints.count(), 1);
- QTouchEvent::TouchPoint touchUpdatePoint = touchWidget.touchUpdatePoints.first();
- QCOMPARE(touchUpdatePoint.id(), rawTouchPoint.id());
- QCOMPARE(touchUpdatePoint.state(), rawTouchPoint.state());
- QCOMPARE(touchUpdatePoint.pos(), pos + delta);
- QCOMPARE(touchUpdatePoint.startPos(), pos);
- QCOMPARE(touchUpdatePoint.lastPos(), pos);
- QCOMPARE(touchUpdatePoint.scenePos(), rawTouchPoint.screenPos());
- QCOMPARE(touchUpdatePoint.startScenePos(), screenPos);
- QCOMPARE(touchUpdatePoint.lastScenePos(), screenPos);
- QCOMPARE(touchUpdatePoint.screenPos(), rawTouchPoint.screenPos());
- QCOMPARE(touchUpdatePoint.startScreenPos(), screenPos);
- QCOMPARE(touchUpdatePoint.lastScreenPos(), screenPos);
- QCOMPARE(touchUpdatePoint.normalizedPos(), rawTouchPoint.normalizedPos());
- QCOMPARE(touchUpdatePoint.startNormalizedPos(), touchBeginPoint.normalizedPos());
- QCOMPARE(touchUpdatePoint.lastNormalizedPos(), touchBeginPoint.normalizedPos());
- QCOMPARE(touchUpdatePoint.rect(), QRectF(pos + delta, QSizeF(0, 0)));
- QCOMPARE(touchUpdatePoint.screenRect(), QRectF(rawTouchPoint.screenPos(), QSizeF(0, 0)));
- QCOMPARE(touchUpdatePoint.sceneRect(), touchUpdatePoint.screenRect());
- QCOMPARE(touchUpdatePoint.pressure(), qreal(1.));
-
- // releasing the point translates to TouchEnd
- rawTouchPoint.setState(Qt::TouchPointReleased);
- rawTouchPoint.setScreenPos(screenPos + delta + delta);
- rawTouchPoint.setNormalizedPos(normalized(rawTouchPoint.pos(), screenGeometry));
- qt_translateRawTouchEvent(&touchWidget,
- QTouchEvent::TouchScreen,
- QList<QTouchEvent::TouchPoint>() << rawTouchPoint);
- QVERIFY(touchWidget.seenTouchBegin);
- QVERIFY(touchWidget.seenTouchUpdate);
- QVERIFY(touchWidget.seenTouchEnd);
- QCOMPARE(touchWidget.touchEndPoints.count(), 1);
- QTouchEvent::TouchPoint touchEndPoint = touchWidget.touchEndPoints.first();
- QCOMPARE(touchEndPoint.id(), rawTouchPoint.id());
- QCOMPARE(touchEndPoint.state(), rawTouchPoint.state());
- QCOMPARE(touchEndPoint.pos(), pos + delta + delta);
- QCOMPARE(touchEndPoint.startPos(), pos);
- QCOMPARE(touchEndPoint.lastPos(), pos + delta);
- QCOMPARE(touchEndPoint.scenePos(), rawTouchPoint.screenPos());
- QCOMPARE(touchEndPoint.startScenePos(), screenPos);
- QCOMPARE(touchEndPoint.lastScenePos(), screenPos + delta);
- QCOMPARE(touchEndPoint.screenPos(), rawTouchPoint.screenPos());
- QCOMPARE(touchEndPoint.startScreenPos(), screenPos);
- QCOMPARE(touchEndPoint.lastScreenPos(), screenPos + delta);
- QCOMPARE(touchEndPoint.normalizedPos(), rawTouchPoint.normalizedPos());
- QCOMPARE(touchEndPoint.startNormalizedPos(), touchBeginPoint.normalizedPos());
- QCOMPARE(touchEndPoint.lastNormalizedPos(), touchUpdatePoint.normalizedPos());
- QCOMPARE(touchEndPoint.rect(), QRectF(pos + delta + delta, QSizeF(0, 0)));
- QCOMPARE(touchEndPoint.screenRect(), QRectF(rawTouchPoint.screenPos(), QSizeF(0, 0)));
- QCOMPARE(touchEndPoint.sceneRect(), touchEndPoint.screenRect());
- QCOMPARE(touchEndPoint.pressure(), qreal(0.));
-}
-
-void tst_QTouchEvent::multiPointRawEventTranslationOnTouchScreen()
-{
- tst_QTouchEventWidget touchWidget;
- touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
- touchWidget.setGeometry(100, 100, 400, 300);
-
- tst_QTouchEventWidget leftWidget;
- leftWidget.setParent(&touchWidget);
- leftWidget.setAttribute(Qt::WA_AcceptTouchEvents);
- leftWidget.setGeometry(0, 100, 100, 100);
- leftWidget.show();
-
- tst_QTouchEventWidget rightWidget;
- rightWidget.setParent(&touchWidget);
- rightWidget.setAttribute(Qt::WA_AcceptTouchEvents);
- rightWidget.setGeometry(300, 100, 100, 100);
- rightWidget.show();
-
- QPointF leftPos = leftWidget.rect().center();
- QPointF rightPos = rightWidget.rect().center();
- QPointF centerPos = touchWidget.rect().center();
- QPointF leftScreenPos = leftWidget.mapToGlobal(leftPos.toPoint());
- QPointF rightScreenPos = rightWidget.mapToGlobal(rightPos.toPoint());
- QPointF centerScreenPos = touchWidget.mapToGlobal(centerPos.toPoint());
- QPointF delta(10, 10);
- QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
-
- QList<QTouchEvent::TouchPoint> rawTouchPoints;
- rawTouchPoints.append(QTouchEvent::TouchPoint(0));
- rawTouchPoints.append(QTouchEvent::TouchPoint(1));
-
- // generate TouchBegins on both leftWidget and rightWidget
- rawTouchPoints[0].setState(Qt::TouchPointPressed);
- rawTouchPoints[0].setScreenPos(leftScreenPos);
- rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
- rawTouchPoints[1].setState(Qt::TouchPointPressed);
- rawTouchPoints[1].setScreenPos(rightScreenPos);
- rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
- qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
- QVERIFY(!touchWidget.seenTouchBegin);
- QVERIFY(!touchWidget.seenTouchUpdate);
- QVERIFY(!touchWidget.seenTouchEnd);
- QVERIFY(leftWidget.seenTouchBegin);
- QVERIFY(!leftWidget.seenTouchUpdate);
- QVERIFY(!leftWidget.seenTouchEnd);
- QVERIFY(rightWidget.seenTouchBegin);
- QVERIFY(!rightWidget.seenTouchUpdate);
- QVERIFY(!rightWidget.seenTouchEnd);
- QCOMPARE(leftWidget.touchBeginPoints.count(), 1);
- QCOMPARE(rightWidget.touchBeginPoints.count(), 1);
- {
- QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchBeginPoints.first();
- QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
- QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
- QCOMPARE(leftTouchPoint.pos(), leftPos);
- QCOMPARE(leftTouchPoint.startPos(), leftPos);
- QCOMPARE(leftTouchPoint.lastPos(), leftPos);
- QCOMPARE(leftTouchPoint.scenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.screenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScreenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.rect(), QRectF(leftPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.sceneRect(), QRectF(leftScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.screenRect(), QRectF(leftScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.pressure(), qreal(1.));
-
- QTouchEvent::TouchPoint rightTouchPoint = rightWidget.touchBeginPoints.first();
- QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
- QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
- QCOMPARE(rightTouchPoint.pos(), rightPos);
- QCOMPARE(rightTouchPoint.startPos(), rightPos);
- QCOMPARE(rightTouchPoint.lastPos(), rightPos);
- QCOMPARE(rightTouchPoint.scenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.screenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScreenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.rect(), QRectF(rightPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.sceneRect(), QRectF(rightScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.screenRect(), QRectF(rightScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.pressure(), qreal(1.));
- }
-
- // generate TouchUpdates on both leftWidget and rightWidget
- rawTouchPoints[0].setState(Qt::TouchPointMoved);
- rawTouchPoints[0].setScreenPos(centerScreenPos);
- rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
- rawTouchPoints[1].setState(Qt::TouchPointMoved);
- rawTouchPoints[1].setScreenPos(centerScreenPos);
- rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
- qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
- QVERIFY(!touchWidget.seenTouchBegin);
- QVERIFY(!touchWidget.seenTouchUpdate);
- QVERIFY(!touchWidget.seenTouchEnd);
- QVERIFY(leftWidget.seenTouchBegin);
- QVERIFY(leftWidget.seenTouchUpdate);
- QVERIFY(!leftWidget.seenTouchEnd);
- QVERIFY(rightWidget.seenTouchBegin);
- QVERIFY(rightWidget.seenTouchUpdate);
- QVERIFY(!rightWidget.seenTouchEnd);
- QCOMPARE(leftWidget.touchUpdatePoints.count(), 1);
- QCOMPARE(rightWidget.touchUpdatePoints.count(), 1);
- {
- QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchUpdatePoints.first();
- QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
- QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
- QCOMPARE(leftTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
- QCOMPARE(leftTouchPoint.startPos(), leftPos);
- QCOMPARE(leftTouchPoint.lastPos(), leftPos);
- QCOMPARE(leftTouchPoint.scenePos(), centerScreenPos);
- QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.screenPos(), centerScreenPos);
- QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScreenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.pressure(), qreal(1.));
-
- QTouchEvent::TouchPoint rightTouchPoint = rightWidget.touchUpdatePoints.first();
- QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
- QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
- QCOMPARE(rightTouchPoint.pos(), QPointF(rightWidget.mapFromParent(centerPos.toPoint())));
- QCOMPARE(rightTouchPoint.startPos(), rightPos);
- QCOMPARE(rightTouchPoint.lastPos(), rightPos);
- QCOMPARE(rightTouchPoint.scenePos(), centerScreenPos);
- QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.screenPos(), centerScreenPos);
- QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScreenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.rect(), QRectF(rightWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.pressure(), qreal(1.));
- }
-
- // generate TouchEnds on both leftWidget and rightWidget
- rawTouchPoints[0].setState(Qt::TouchPointReleased);
- rawTouchPoints[0].setScreenPos(centerScreenPos);
- rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
- rawTouchPoints[1].setState(Qt::TouchPointReleased);
- rawTouchPoints[1].setScreenPos(centerScreenPos);
- rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
- qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
- QVERIFY(!touchWidget.seenTouchBegin);
- QVERIFY(!touchWidget.seenTouchUpdate);
- QVERIFY(!touchWidget.seenTouchEnd);
- QVERIFY(leftWidget.seenTouchBegin);
- QVERIFY(leftWidget.seenTouchUpdate);
- QVERIFY(leftWidget.seenTouchEnd);
- QVERIFY(rightWidget.seenTouchBegin);
- QVERIFY(rightWidget.seenTouchUpdate);
- QVERIFY(rightWidget.seenTouchEnd);
- QCOMPARE(leftWidget.touchEndPoints.count(), 1);
- QCOMPARE(rightWidget.touchEndPoints.count(), 1);
- {
- QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchEndPoints.first();
- QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
- QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
- QCOMPARE(leftTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
- QCOMPARE(leftTouchPoint.startPos(), leftPos);
- QCOMPARE(leftTouchPoint.lastPos(), leftTouchPoint.pos());
- QCOMPARE(leftTouchPoint.scenePos(), centerScreenPos);
- QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScenePos(), leftTouchPoint.scenePos());
- QCOMPARE(leftTouchPoint.screenPos(), centerScreenPos);
- QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScreenPos(), leftTouchPoint.screenPos());
- QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.pressure(), qreal(0.));
-
- QTouchEvent::TouchPoint rightTouchPoint = rightWidget.touchEndPoints.first();
- QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
- QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
- QCOMPARE(rightTouchPoint.pos(), QPointF(rightWidget.mapFromParent(centerPos.toPoint())));
- QCOMPARE(rightTouchPoint.startPos(), rightPos);
- QCOMPARE(rightTouchPoint.lastPos(), rightTouchPoint.pos());
- QCOMPARE(rightTouchPoint.scenePos(), centerScreenPos);
- QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScenePos(), rightTouchPoint.scenePos());
- QCOMPARE(rightTouchPoint.screenPos(), centerScreenPos);
- QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScreenPos(), rightTouchPoint.screenPos());
- QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.rect(), QRectF(rightWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.pressure(), qreal(0.));
- }
-}
-
-void tst_QTouchEvent::multiPointRawEventTranslationOnTouchPad()
-{
- tst_QTouchEventWidget touchWidget;
- touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
- touchWidget.setGeometry(100, 100, 400, 300);
-
- tst_QTouchEventWidget leftWidget;
- leftWidget.setParent(&touchWidget);
- leftWidget.setAttribute(Qt::WA_AcceptTouchEvents);
- leftWidget.setGeometry(0, 100, 100, 100);
- leftWidget.show();
-
- tst_QTouchEventWidget rightWidget;
- rightWidget.setParent(&touchWidget);
- rightWidget.setAttribute(Qt::WA_AcceptTouchEvents);
- rightWidget.setGeometry(300, 100, 100, 100);
- rightWidget.show();
-
- QPointF leftPos = leftWidget.rect().center();
- QPointF rightPos = rightWidget.rect().center();
- QPointF centerPos = touchWidget.rect().center();
- QPointF leftScreenPos = leftWidget.mapToGlobal(leftPos.toPoint());
- QPointF rightScreenPos = rightWidget.mapToGlobal(rightPos.toPoint());
- QPointF centerScreenPos = touchWidget.mapToGlobal(centerPos.toPoint());
- QPointF delta(10, 10);
- QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
-
- QList<QTouchEvent::TouchPoint> rawTouchPoints;
- rawTouchPoints.append(QTouchEvent::TouchPoint(0));
- rawTouchPoints.append(QTouchEvent::TouchPoint(1));
-
- // generate TouchBegin on leftWidget only
- rawTouchPoints[0].setState(Qt::TouchPointPressed);
- rawTouchPoints[0].setScreenPos(leftScreenPos);
- rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
- rawTouchPoints[1].setState(Qt::TouchPointPressed);
- rawTouchPoints[1].setScreenPos(rightScreenPos);
- rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
- qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchPad, rawTouchPoints);
- QVERIFY(!touchWidget.seenTouchBegin);
- QVERIFY(!touchWidget.seenTouchUpdate);
- QVERIFY(!touchWidget.seenTouchEnd);
- QVERIFY(leftWidget.seenTouchBegin);
- QVERIFY(!leftWidget.seenTouchUpdate);
- QVERIFY(!leftWidget.seenTouchEnd);
- QVERIFY(!rightWidget.seenTouchBegin);
- QVERIFY(!rightWidget.seenTouchUpdate);
- QVERIFY(!rightWidget.seenTouchEnd);
- QCOMPARE(leftWidget.touchBeginPoints.count(), 2);
- QCOMPARE(rightWidget.touchBeginPoints.count(), 0);
- {
- QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchBeginPoints.at(0);
- QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
- QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
- QCOMPARE(leftTouchPoint.pos(), leftPos);
- QCOMPARE(leftTouchPoint.startPos(), leftPos);
- QCOMPARE(leftTouchPoint.lastPos(), leftPos);
- QCOMPARE(leftTouchPoint.scenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.screenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScreenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.rect(), QRectF(leftPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.sceneRect(), QRectF(leftScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.screenRect(), QRectF(leftScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.pressure(), qreal(1.));
-
- QTouchEvent::TouchPoint rightTouchPoint = leftWidget.touchBeginPoints.at(1);
- QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
- QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
- QCOMPARE(rightTouchPoint.pos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
- QCOMPARE(rightTouchPoint.startPos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
- QCOMPARE(rightTouchPoint.lastPos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
- QCOMPARE(rightTouchPoint.scenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.screenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScreenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.rect(), QRectF(leftWidget.mapFromGlobal(rightScreenPos.toPoint()), QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.sceneRect(), QRectF(rightScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.screenRect(), QRectF(rightScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.pressure(), qreal(1.));
- }
-
- // generate TouchUpdate on leftWidget
- rawTouchPoints[0].setState(Qt::TouchPointMoved);
- rawTouchPoints[0].setScreenPos(centerScreenPos);
- rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
- rawTouchPoints[1].setState(Qt::TouchPointMoved);
- rawTouchPoints[1].setScreenPos(centerScreenPos);
- rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
- qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchPad, rawTouchPoints);
- QVERIFY(!touchWidget.seenTouchBegin);
- QVERIFY(!touchWidget.seenTouchUpdate);
- QVERIFY(!touchWidget.seenTouchEnd);
- QVERIFY(leftWidget.seenTouchBegin);
- QVERIFY(leftWidget.seenTouchUpdate);
- QVERIFY(!leftWidget.seenTouchEnd);
- QVERIFY(!rightWidget.seenTouchBegin);
- QVERIFY(!rightWidget.seenTouchUpdate);
- QVERIFY(!rightWidget.seenTouchEnd);
- QCOMPARE(leftWidget.touchUpdatePoints.count(), 2);
- QCOMPARE(rightWidget.touchUpdatePoints.count(), 0);
- {
- QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchUpdatePoints.at(0);
- QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
- QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
- QCOMPARE(leftTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
- QCOMPARE(leftTouchPoint.startPos(), leftPos);
- QCOMPARE(leftTouchPoint.lastPos(), leftPos);
- QCOMPARE(leftTouchPoint.scenePos(), centerScreenPos);
- QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.screenPos(), centerScreenPos);
- QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScreenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.pressure(), qreal(1.));
-
- QTouchEvent::TouchPoint rightTouchPoint = leftWidget.touchUpdatePoints.at(1);
- QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
- QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
- QCOMPARE(rightTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
- QCOMPARE(rightTouchPoint.startPos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
- QCOMPARE(rightTouchPoint.lastPos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
- QCOMPARE(rightTouchPoint.scenePos(), centerScreenPos);
- QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.screenPos(), centerScreenPos);
- QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScreenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.pressure(), qreal(1.));
- }
-
- // generate TouchEnd on leftWidget
- rawTouchPoints[0].setState(Qt::TouchPointReleased);
- rawTouchPoints[0].setScreenPos(centerScreenPos);
- rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
- rawTouchPoints[1].setState(Qt::TouchPointReleased);
- rawTouchPoints[1].setScreenPos(centerScreenPos);
- rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
- qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchPad, rawTouchPoints);
- QVERIFY(!touchWidget.seenTouchBegin);
- QVERIFY(!touchWidget.seenTouchUpdate);
- QVERIFY(!touchWidget.seenTouchEnd);
- QVERIFY(leftWidget.seenTouchBegin);
- QVERIFY(leftWidget.seenTouchUpdate);
- QVERIFY(leftWidget.seenTouchEnd);
- QVERIFY(!rightWidget.seenTouchBegin);
- QVERIFY(!rightWidget.seenTouchUpdate);
- QVERIFY(!rightWidget.seenTouchEnd);
- QCOMPARE(leftWidget.touchEndPoints.count(), 2);
- QCOMPARE(rightWidget.touchEndPoints.count(), 0);
- {
- QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchEndPoints.at(0);
- QCOMPARE(leftTouchPoint.id(), rawTouchPoints[0].id());
- QCOMPARE(leftTouchPoint.state(), rawTouchPoints[0].state());
- QCOMPARE(leftTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
- QCOMPARE(leftTouchPoint.startPos(), leftPos);
- QCOMPARE(leftTouchPoint.lastPos(), leftTouchPoint.pos());
- QCOMPARE(leftTouchPoint.scenePos(), centerScreenPos);
- QCOMPARE(leftTouchPoint.startScenePos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScenePos(), leftTouchPoint.scenePos());
- QCOMPARE(leftTouchPoint.screenPos(), centerScreenPos);
- QCOMPARE(leftTouchPoint.startScreenPos(), leftScreenPos);
- QCOMPARE(leftTouchPoint.lastScreenPos(), leftTouchPoint.screenPos());
- QCOMPARE(leftTouchPoint.normalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.startNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.lastNormalizedPos(), rawTouchPoints[0].normalizedPos());
- QCOMPARE(leftTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(leftTouchPoint.pressure(), qreal(0.));
-
- QTouchEvent::TouchPoint rightTouchPoint = leftWidget.touchEndPoints.at(1);
- QCOMPARE(rightTouchPoint.id(), rawTouchPoints[1].id());
- QCOMPARE(rightTouchPoint.state(), rawTouchPoints[1].state());
- QCOMPARE(rightTouchPoint.pos(), QPointF(leftWidget.mapFromParent(centerPos.toPoint())));
- QCOMPARE(rightTouchPoint.startPos(), QPointF(leftWidget.mapFromGlobal(rightScreenPos.toPoint())));
- QCOMPARE(rightTouchPoint.lastPos(), rightTouchPoint.pos());
- QCOMPARE(rightTouchPoint.scenePos(), centerScreenPos);
- QCOMPARE(rightTouchPoint.startScenePos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScenePos(), rightTouchPoint.scenePos());
- QCOMPARE(rightTouchPoint.screenPos(), centerScreenPos);
- QCOMPARE(rightTouchPoint.startScreenPos(), rightScreenPos);
- QCOMPARE(rightTouchPoint.lastScreenPos(), rightTouchPoint.screenPos());
- QCOMPARE(rightTouchPoint.normalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.startNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.lastNormalizedPos(), rawTouchPoints[1].normalizedPos());
- QCOMPARE(rightTouchPoint.rect(), QRectF(leftWidget.mapFromParent(centerPos.toPoint()), QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.sceneRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.screenRect(), QRectF(centerScreenPos, QSizeF(0, 0)));
- QCOMPARE(rightTouchPoint.pressure(), qreal(0.));
- }
-}
-
-void tst_QTouchEvent::deleteInEventHandler()
-{
- // QWidget
- {
- QWidget window;
- tst_QTouchEventWidget *child1, *child2, *child3;
- child1 = new tst_QTouchEventWidget;
- child2 = new tst_QTouchEventWidget;
- child3 = new tst_QTouchEventWidget;
- child1->setParent(&window);
- child2->setParent(&window);
- child3->setParent(&window);
- child1->setAttribute(Qt::WA_AcceptTouchEvents);
- child2->setAttribute(Qt::WA_AcceptTouchEvents);
- child3->setAttribute(Qt::WA_AcceptTouchEvents);
- child1->deleteInTouchBegin = true;
- child2->deleteInTouchUpdate = true;
- child3->deleteInTouchEnd = true;
-
- QList<QTouchEvent::TouchPoint> touchPoints;
- touchPoints.append(QTouchEvent::TouchPoint(0));
- QTouchEvent touchBeginEvent(QEvent::TouchBegin,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointPressed,
- touchPoints);
- QTouchEvent touchUpdateEvent(QEvent::TouchUpdate,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointStationary,
- touchPoints);
- QTouchEvent touchEndEvent(QEvent::TouchEnd,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointReleased,
- touchPoints);
- QWeakPointer<QWidget> p;
- bool res;
-
- touchBeginEvent.ignore();
- p = child1;
- res = QApplication::sendEvent(child1, &touchBeginEvent);
- // event is handled, but widget should be deleted
- QVERIFY(res && touchBeginEvent.isAccepted() && p.isNull());
-
- touchBeginEvent.ignore();
- p = child2;
- res = QApplication::sendEvent(child2, &touchBeginEvent);
- QVERIFY(res && touchBeginEvent.isAccepted() && !p.isNull());
- touchUpdateEvent.ignore();
- res = QApplication::sendEvent(child2, &touchUpdateEvent);
- QVERIFY(res && touchUpdateEvent.isAccepted() && p.isNull());
-
- touchBeginEvent.ignore();
- p = child3;
- res = QApplication::sendEvent(child3, &touchBeginEvent);
- QVERIFY(res && touchBeginEvent.isAccepted() && !p.isNull());
- touchUpdateEvent.ignore();
- res = QApplication::sendEvent(child3, &touchUpdateEvent);
- QVERIFY(res && touchUpdateEvent.isAccepted() && !p.isNull());
- touchEndEvent.ignore();
- res = QApplication::sendEvent(child3, &touchEndEvent);
- QVERIFY(res && touchEndEvent.isAccepted() && p.isNull());
- }
-
- // QGraphicsView
- {
- QGraphicsScene scene;
- QGraphicsView view(&scene);
- tst_QTouchEventGraphicsItem *root, *child1, *child2, *child3;
- root = new tst_QTouchEventGraphicsItem;
- child1 = new tst_QTouchEventGraphicsItem;
- child2 = new tst_QTouchEventGraphicsItem;
- child3 = new tst_QTouchEventGraphicsItem;
- child1->setParentItem(root);
- child2->setParentItem(root);
- child3->setParentItem(root);
- child1->setZValue(1.);
- child2->setZValue(0.);
- child3->setZValue(-1.);
- child1->setAcceptTouchEvents(true);
- child2->setAcceptTouchEvents(true);
- child3->setAcceptTouchEvents(true);
- child1->deleteInTouchBegin = true;
- child2->deleteInTouchUpdate = true;
- child3->deleteInTouchEnd = true;
-
- scene.addItem(root);
- view.resize(200, 200);
- view.fitInView(scene.sceneRect());
-
- QTouchEvent::TouchPoint touchPoint(0);
- touchPoint.setState(Qt::TouchPointPressed);
- touchPoint.setPos(view.mapFromScene(child1->mapToScene(child1->boundingRect().center())));
- touchPoint.setScreenPos(view.mapToGlobal(touchPoint.pos().toPoint()));
- touchPoint.setScenePos(view.mapToScene(touchPoint.pos().toPoint()));
- QList<QTouchEvent::TouchPoint> touchPoints;
- touchPoints.append(touchPoint);
- QTouchEvent touchBeginEvent(QEvent::TouchBegin,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointPressed,
- touchPoints);
- touchPoints[0].setState(Qt::TouchPointMoved);
- QTouchEvent touchUpdateEvent(QEvent::TouchUpdate,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointMoved,
- touchPoints);
- touchPoints[0].setState(Qt::TouchPointReleased);
- QTouchEvent touchEndEvent(QEvent::TouchEnd,
- QTouchEvent::TouchScreen,
- Qt::NoModifier,
- Qt::TouchPointReleased,
- touchPoints);
- bool res;
-
- child1->weakpointer = &child1;
- touchBeginEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
- QVERIFY(res && touchBeginEvent.isAccepted() && !child1);
- touchUpdateEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
- QVERIFY(res && touchUpdateEvent.isAccepted() && !child1);
- touchEndEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
- QVERIFY(res && touchUpdateEvent.isAccepted() && !child1);
-
- child2->weakpointer = &child2;
- touchBeginEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
- QVERIFY(res && touchBeginEvent.isAccepted() && child2);
- touchUpdateEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
- QVERIFY(res && !touchUpdateEvent.isAccepted() && !child2);
- touchEndEvent.ignore();
- res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
- QVERIFY(res && !touchUpdateEvent.isAccepted() && !child2);
-
- child3->weakpointer = &child3;
- res = QApplication::sendEvent(view.viewport(), &touchBeginEvent);
- QVERIFY(res && touchBeginEvent.isAccepted() && child3);
- res = QApplication::sendEvent(view.viewport(), &touchUpdateEvent);
- QVERIFY(res && !touchUpdateEvent.isAccepted() && child3);
- res = QApplication::sendEvent(view.viewport(), &touchEndEvent);
- QVERIFY(res && !touchEndEvent.isAccepted() && !child3);
-
- delete root;
- }
-}
-
-void tst_QTouchEvent::deleteInRawEventTranslation()
-{
- tst_QTouchEventWidget touchWidget;
- touchWidget.setAttribute(Qt::WA_AcceptTouchEvents);
- touchWidget.setGeometry(100, 100, 300, 300);
-
- tst_QTouchEventWidget *leftWidget = new tst_QTouchEventWidget;
- leftWidget->setParent(&touchWidget);
- leftWidget->setAttribute(Qt::WA_AcceptTouchEvents);
- leftWidget->setGeometry(0, 100, 100, 100);
- leftWidget->deleteInTouchBegin = true;
- leftWidget->show();
-
- tst_QTouchEventWidget *centerWidget = new tst_QTouchEventWidget;
- centerWidget->setParent(&touchWidget);
- centerWidget->setAttribute(Qt::WA_AcceptTouchEvents);
- centerWidget->setGeometry(100, 100, 100, 100);
- centerWidget->deleteInTouchUpdate = true;
- centerWidget->show();
-
- tst_QTouchEventWidget *rightWidget = new tst_QTouchEventWidget;
- rightWidget->setParent(&touchWidget);
- rightWidget->setAttribute(Qt::WA_AcceptTouchEvents);
- rightWidget->setGeometry(200, 100, 100, 100);
- rightWidget->deleteInTouchEnd = true;
- rightWidget->show();
-
- QPointF leftPos = leftWidget->rect().center();
- QPointF centerPos = centerWidget->rect().center();
- QPointF rightPos = rightWidget->rect().center();
- QPointF leftScreenPos = leftWidget->mapToGlobal(leftPos.toPoint());
- QPointF centerScreenPos = centerWidget->mapToGlobal(centerPos.toPoint());
- QPointF rightScreenPos = rightWidget->mapToGlobal(rightPos.toPoint());
- QRectF screenGeometry = qApp->desktop()->screenGeometry(&touchWidget);
-
- QWeakPointer<QWidget> pl = leftWidget, pc = centerWidget, pr = rightWidget;
-
- QList<QTouchEvent::TouchPoint> rawTouchPoints;
- rawTouchPoints.append(QTouchEvent::TouchPoint(0));
- rawTouchPoints.append(QTouchEvent::TouchPoint(1));
- rawTouchPoints.append(QTouchEvent::TouchPoint(2));
- rawTouchPoints[0].setState(Qt::TouchPointPressed);
- rawTouchPoints[0].setScreenPos(leftScreenPos);
- rawTouchPoints[0].setNormalizedPos(normalized(rawTouchPoints[0].pos(), screenGeometry));
- rawTouchPoints[1].setState(Qt::TouchPointPressed);
- rawTouchPoints[1].setScreenPos(centerScreenPos);
- rawTouchPoints[1].setNormalizedPos(normalized(rawTouchPoints[1].pos(), screenGeometry));
- rawTouchPoints[2].setState(Qt::TouchPointPressed);
- rawTouchPoints[2].setScreenPos(rightScreenPos);
- rawTouchPoints[2].setNormalizedPos(normalized(rawTouchPoints[2].pos(), screenGeometry));
-
- // generate begin events on all widgets, the left widget should die
- qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
- QVERIFY(pl.isNull() && !pc.isNull() && !pr.isNull());
-
- // generate update events on all widget, the center widget should die
- rawTouchPoints[0].setState(Qt::TouchPointMoved);
- rawTouchPoints[1].setState(Qt::TouchPointMoved);
- rawTouchPoints[2].setState(Qt::TouchPointMoved);
- qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
-
- // generate end events on all widget, the right widget should die
- rawTouchPoints[0].setState(Qt::TouchPointReleased);
- rawTouchPoints[1].setState(Qt::TouchPointReleased);
- rawTouchPoints[2].setState(Qt::TouchPointReleased);
- qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
-}
-
-void tst_QTouchEvent::crashInQGraphicsSceneAfterNotHandlingTouchBegin()
-{
- QGraphicsRectItem *rect = new QGraphicsRectItem(0, 0, 100, 100);
- rect->setAcceptTouchEvents(true);
-
- QGraphicsRectItem *mainRect = new QGraphicsRectItem(0, 0, 100, 100, rect);
- mainRect->setBrush(Qt::lightGray);
-
- QGraphicsRectItem *button = new QGraphicsRectItem(-20, -20, 40, 40, mainRect);
- button->setPos(50, 50);
- button->setBrush(Qt::darkGreen);
-
- QGraphicsView view;
- QGraphicsScene scene;
- scene.addItem(rect);
- scene.setSceneRect(0,0,100,100);
- view.setScene(&scene);
-
- view.show();
- QTest::qWaitForWindowShown(&view);
-
- QPoint centerPos = view.mapFromScene(rect->boundingRect().center());
- // Touch the button
- QTest::touchEvent(view.viewport()).press(0, centerPos);
- QTest::touchEvent(view.viewport()).release(0, centerPos);
- // Touch outside of the button
- QTest::touchEvent(view.viewport()).press(0, view.mapFromScene(QPoint(10, 10)));
- QTest::touchEvent(view.viewport()).release(0, view.mapFromScene(QPoint(10, 10)));
-}
-
-void tst_QTouchEvent::touchBeginWithGraphicsWidget()
-{
- QGraphicsScene scene;
- QGraphicsView view(&scene);
- tst_QTouchEventGraphicsItem *root;
- root = new tst_QTouchEventGraphicsItem;
- root->setAcceptTouchEvents(true);
- scene.addItem(root);
-
- QGraphicsWidget *glassWidget = new QGraphicsWidget;
- glassWidget->setMinimumSize(100, 100);
- scene.addItem(glassWidget);
-
- view.resize(200, 200);
- view.show();
- QTest::qWaitForWindowShown(&view);
- view.fitInView(scene.sceneRect());
-
- QTest::touchEvent()
- .press(0, view.mapFromScene(root->mapToScene(3,3)), view.viewport());
- QTest::touchEvent()
- .stationary(0)
- .press(1, view.mapFromScene(root->mapToScene(6,6)), view.viewport());
- QTest::touchEvent()
- .release(0, view.mapFromScene(root->mapToScene(3,3)), view.viewport())
- .release(1, view.mapFromScene(root->mapToScene(6,6)), view.viewport());
-
- QCOMPARE(root->touchBeginCounter, 1);
- QCOMPARE(root->touchUpdateCounter, 1);
- QCOMPARE(root->touchEndCounter, 1);
- QCOMPARE(root->touchUpdatePoints.size(), 2);
-
- root->reset();
- glassWidget->setWindowFlags(Qt::Window); // make the glassWidget a panel
-
- QTest::touchEvent()
- .press(0, view.mapFromScene(root->mapToScene(3,3)), view.viewport());
- QTest::touchEvent()
- .stationary(0)
- .press(1, view.mapFromScene(root->mapToScene(6,6)), view.viewport());
- QTest::touchEvent()
- .release(0, view.mapFromScene(root->mapToScene(3,3)), view.viewport())
- .release(1, view.mapFromScene(root->mapToScene(6,6)), view.viewport());
-
- QCOMPARE(root->touchBeginCounter, 0);
- QCOMPARE(root->touchUpdateCounter, 0);
- QCOMPARE(root->touchEndCounter, 0);
-
-
- delete root;
- delete glassWidget;
-}
-
-QTEST_MAIN(tst_QTouchEvent)
-
-#include "tst_qtouchevent.moc"
diff --git a/tests/auto/qtransform/tst_qtransform.cpp b/tests/auto/qtransform/tst_qtransform.cpp
deleted file mode 100644
index 7a0945da96..0000000000
--- a/tests/auto/qtransform/tst_qtransform.cpp
+++ /dev/null
@@ -1,807 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-#include "qtransform.h"
-#include <math.h>
-#include <qpolygon.h>
-#include <qdebug.h>
-
-Q_DECLARE_METATYPE(QRect)
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QTransform : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QTransform();
- virtual ~tst_QTransform();
-
-
-public slots:
- void init();
- void cleanup();
-private slots:
- void mapRect_data();
- void operator_star_qrect_data();
- void mapToPolygon_data();
- void mapRect();
- void operator_star_qrect();
- void assignments();
- void mapToPolygon();
- void translate();
- void scale();
- void matrix();
- void testOffset();
- void types();
- void scalarOps();
- void transform();
- void mapEmptyPath();
- void boundingRect();
- void controlPointRect();
- void inverted_data();
- void inverted();
- void projectivePathMapping();
- void mapInt();
- void mapPathWithPoint();
-
-private:
- void mapping_data();
-};
-
-Q_DECLARE_METATYPE(QTransform)
-Q_DECLARE_METATYPE(QPolygon)
-
-tst_QTransform::tst_QTransform()
-{
-}
-
-tst_QTransform::~tst_QTransform()
-{
-}
-
-void tst_QTransform::init()
-{
- // No initialisation is required
-}
-
-void tst_QTransform::cleanup()
-{
- // No cleanup is required.
-}
-
-#ifdef Q_OS_WIN32
-#define M_PI 3.14159265897932384626433832795f
-#endif
-
-void tst_QTransform::mapRect_data()
-{
- mapping_data();
-
- // rotations that are not multiples of 90 degrees. mapRect returns the bounding rect here.
- qreal deg = -45;
- QTest::newRow( "rot 45 a" )
- << QTransform().rotate(deg)
- << QRect( 0, 0, 10, 10 )
- << QPolygon( QRect( 0, -7, 14, 14 ) );
- QTest::newRow( "rot 45 b" )
- << QTransform().rotate(deg)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( 21, -14, 50, 49 ) );
- QTest::newRow( "rot 45 c" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 0, 0, 10, 10 )
- << QPolygon( QRect( 0, -71, 141, 142 ) );
- QTest::newRow( "rot 45 d" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( 212, -141, 495, 495 ) );
-
- deg = 45;
- QTest::newRow( "rot -45 a" )
- << QTransform().rotate(deg)
- << QRect( 0, 0, 10, 10 )
- << QPolygon( QRect( -7, 0, 14, 14 ) );
- QTest::newRow( "rot -45 b" )
- << QTransform().rotate(deg)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( -35, 21, 49, 50 ) );
- QTest::newRow( "rot -45 c" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 0, 0, 10, 10 )
- << QPolygon( QRect( -71, 0, 142, 141 ) );
- QTest::newRow( "rot -45 d" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( -354, 212, 495, 495 ) );
-}
-
-void tst_QTransform::operator_star_qrect_data()
-{
- mapping_data();
-}
-
-void tst_QTransform::mapToPolygon_data()
-{
- mapping_data();
-}
-
-void tst_QTransform::mapping_data()
-{
- //create the testtable instance and define the elements
- QTest::addColumn<QTransform>("matrix");
- QTest::addColumn<QRect>("src");
- QTest::addColumn<QPolygon>("res");
-
- //next we fill it with data
-
- // identity
- QTest::newRow( "identity" )
- << QTransform()
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( 10, 20, 30, 40 ) );
- // scaling
- QTest::newRow( "scale 0" )
- << QTransform().scale(2, 2)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( 20, 40, 60, 80 ) );
- QTest::newRow( "scale 1" )
- << QTransform().scale(10, 10)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( 100, 200, 300, 400 ) );
- // mirroring
- QTest::newRow( "mirror 0" )
- << QTransform().scale(-1, 1)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( -40, 20, 30, 40 ) );
- QTest::newRow( "mirror 1" )
- << QTransform().scale(1, -1)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( 10, -60, 30, 40 ) );
- QTest::newRow( "mirror 2" )
- << QTransform().scale(-1, -1)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( -40, -60, 30, 40 ) );
- QTest::newRow( "mirror 3" )
- << QTransform().scale(-2, -2)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( -80, -120, 60, 80 ) );
- QTest::newRow( "mirror 4" )
- << QTransform().scale(-10, -10)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( -400, -600, 300, 400 ) );
- QTest::newRow( "mirror 5" )
- << QTransform().scale(-1, 1)
- << QRect( 0, 0, 30, 40 )
- << QPolygon( QRect( -30, 0, 30, 40 ) );
- QTest::newRow( "mirror 6" )
- << QTransform().scale(1, -1)
- << QRect( 0, 0, 30, 40 )
- << QPolygon( QRect( 0, -40, 30, 40 ) );
- QTest::newRow( "mirror 7" )
- << QTransform().scale(-1, -1)
- << QRect( 0, 0, 30, 40 )
- << QPolygon( QRect( -30, -40, 30, 40 ) );
- QTest::newRow( "mirror 8" )
- << QTransform().scale(-2, -2)
- << QRect( 0, 0, 30, 40 )
- << QPolygon( QRect( -60, -80, 60, 80 ) );
- QTest::newRow( "mirror 9" )
- << QTransform().scale(-10, -10) << QRect( 0, 0, 30, 40 )
- << QPolygon( QRect( -300, -400, 300, 400 ) );
-
- // rotations
- float deg = 0.;
- QTest::newRow( "rot 0 a" )
- << QTransform().rotate(deg)
- << QRect( 0, 0, 30, 40 )
- << QPolygon ( QRect( 0, 0, 30, 40 ) );
- deg = 0.00001f;
- QTest::newRow( "rot 0 b" )
- << QTransform().rotate(deg)
- << QRect( 0, 0, 30, 40 )
- << QPolygon ( QRect( 0, 0, 30, 40 ) );
- deg = 0.;
- QTest::newRow( "rot 0 c" )
- << QTransform().rotate(deg)
- << QRect( 10, 20, 30, 40 )
- << QPolygon ( QRect( 10, 20, 30, 40 ) );
- deg = 0.00001f;
- QTest::newRow( "rot 0 d" )
- << QTransform().rotate(deg)
- << QRect( 10, 20, 30, 40 )
- << QPolygon ( QRect( 10, 20, 30, 40 ) );
-
- // rotations
- deg = -90.f;
- QTest::newRow( "rotscale 90 a" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 0, 0, 30, 40 )
- << QPolygon( QRect( 0, -300, 400, 300 ) );
- deg = -90.00001f;
- QTest::newRow( "rotscale 90 b" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 0, 0, 30, 40 )
- << QPolygon( QRect( 0, -300, 400, 300 ) );
- deg = -90.f;
- QTest::newRow( "rotscale 90 c" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( 200, -400, 400, 300 ) );
- deg = -90.00001f;
- QTest::newRow( "rotscale 90 d" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( 200, -400, 400, 300 ) );
-
- deg = 180.f;
- QTest::newRow( "rotscale 180 a" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 0, 0, 30, 40 )
- << QPolygon( QRect( -300, -400, 300, 400 ) );
- deg = 180.000001f;
- QTest::newRow( "rotscale 180 b" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 0, 0, 30, 40 )
- << QPolygon( QRect( -300, -400, 300, 400 ) );
- deg = 180.f;
- QTest::newRow( "rotscale 180 c" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( -400, -600, 300, 400 ) );
- deg = 180.000001f;
- QTest::newRow( "rotscale 180 d" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( -400, -600, 300, 400 ) );
-
- deg = -270.f;
- QTest::newRow( "rotscale 270 a" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 0, 0, 30, 40 )
- << QPolygon( QRect( -400, 0, 400, 300 ) );
- deg = -270.0000001f;
- QTest::newRow( "rotscale 270 b" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 0, 0, 30, 40 )
- << QPolygon( QRect( -400, 0, 400, 300 ) );
- deg = -270.f;
- QTest::newRow( "rotscale 270 c" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( -600, 100, 400, 300 ) );
- deg = -270.000001f;
- QTest::newRow( "rotscale 270 d" )
- << QTransform().rotate(deg).scale(10, 10)
- << QRect( 10, 20, 30, 40 )
- << QPolygon( QRect( -600, 100, 400, 300 ) );
-}
-
-void tst_QTransform::mapRect()
-{
- QFETCH( QTransform, matrix );
- QFETCH( QRect, src );
- QFETCH( QPolygon, res );
- QRect mapped = matrix.mapRect(src);
- QCOMPARE( mapped, res.boundingRect().adjusted(0, 0, -1, -1) );
-
- QRectF r = matrix.mapRect(QRectF(src));
- QRect ir(r.topLeft().toPoint(), r.bottomRight().toPoint() - QPoint(1, 1));
- QCOMPARE( mapped, ir );
-}
-
-void tst_QTransform::operator_star_qrect()
-{
-#if 0
- QFETCH( QTransform, matrix );
- QFETCH( QRect, src );
- QFETCH( QPolygon, res );
-
- QCOMPARE( (matrix * src), QRegion(res) );
-#endif
-}
-
-void tst_QTransform::assignments()
-{
- QTransform m;
- m.scale(2, 3);
- m.rotate(45);
- m.shear(4, 5);
-
- QTransform c1(m);
-
- QCOMPARE(m.m11(), c1.m11());
- QCOMPARE(m.m12(), c1.m12());
- QCOMPARE(m.m21(), c1.m21());
- QCOMPARE(m.m22(), c1.m22());
- QCOMPARE(m.dx(), c1.dx());
- QCOMPARE(m.dy(), c1.dy());
-
- QTransform c2 = m;
- QCOMPARE(m.m11(), c2.m11());
- QCOMPARE(m.m12(), c2.m12());
- QCOMPARE(m.m21(), c2.m21());
- QCOMPARE(m.m22(), c2.m22());
- QCOMPARE(m.dx(), c2.dx());
- QCOMPARE(m.dy(), c2.dy());
-}
-
-
-void tst_QTransform::mapToPolygon()
-{
- QFETCH( QTransform, matrix );
- QFETCH( QRect, src );
- QFETCH( QPolygon, res );
-
- QPolygon poly = matrix.mapToPolygon(src);
-
- // don't care about starting point
- bool equal = false;
- for (int i = 0; i < poly.size(); ++i) {
- QPolygon rot;
- for (int j = i; j < poly.size(); ++j)
- rot << poly[j];
- for (int j = 0; j < i; ++j)
- rot << poly[j];
- if (rot == res)
- equal = true;
- }
-
- QVERIFY(equal);
-}
-
-
-void tst_QTransform::translate()
-{
- QTransform m( 1, 2, 3, 4, 5, 6 );
- QTransform res2( m );
- QTransform res( 1, 2, 3, 4, 75, 106 );
- m.translate( 10, 20 );
- QVERIFY( m == res );
- m.translate( -10, -20 );
- QVERIFY( m == res2 );
- QVERIFY( QTransform::fromTranslate( 0, 0 ).type() == QTransform::TxNone );
- QVERIFY( QTransform::fromTranslate( 10, 0 ).type() == QTransform::TxTranslate );
- QVERIFY( QTransform::fromTranslate( -1, 5 ) == QTransform().translate( -1, 5 ));
- QVERIFY( QTransform::fromTranslate( 0, 0 ) == QTransform());
-}
-
-void tst_QTransform::scale()
-{
- QTransform m( 1, 2, 3, 4, 5, 6 );
- QTransform res2( m );
- QTransform res( 10, 20, 60, 80, 5, 6 );
- m.scale( 10, 20 );
- QVERIFY( m == res );
- m.scale( 1./10., 1./20. );
- QVERIFY( m == res2 );
- QVERIFY( QTransform::fromScale( 1, 1 ).type() == QTransform::TxNone );
- QVERIFY( QTransform::fromScale( 2, 4 ).type() == QTransform::TxScale );
- QVERIFY( QTransform::fromScale( 2, 4 ) == QTransform().scale( 2, 4 ));
- QVERIFY( QTransform::fromScale( 1, 1 ) == QTransform());
-}
-
-void tst_QTransform::matrix()
-{
- QMatrix mat1;
- mat1.scale(0.3, 0.7);
- mat1.translate(53.3, 94.4);
- mat1.rotate(45);
-
- QMatrix mat2;
- mat2.rotate(33);
- mat2.scale(0.6, 0.6);
- mat2.translate(13.333, 7.777);
-
- QTransform tran1(mat1);
- QTransform tran2(mat2);
- QTransform dummy;
- dummy.setMatrix(mat1.m11(), mat1.m12(), 0,
- mat1.m21(), mat1.m22(), 0,
- mat1.dx(), mat1.dy(), 1);
-
- QVERIFY(tran1 == dummy);
- QVERIFY(tran1.inverted() == dummy.inverted());
- QVERIFY(tran1.inverted() == QTransform(mat1.inverted()));
- QVERIFY(tran2.inverted() == QTransform(mat2.inverted()));
-
- QMatrix mat3 = mat1 * mat2;
- QTransform tran3 = tran1 * tran2;
- QVERIFY(QTransform(mat3) == tran3);
-
- /* QMatrix::operator==() doesn't use qFuzzyCompare(), which
- * on win32-g++ results in a failure. So we work around it by
- * calling QTranform::operator==(), which performs a fuzzy compare. */
- QCOMPARE(QTransform(mat3), QTransform(tran3.toAffine()));
-
- QTransform tranInv = tran1.inverted();
- QMatrix matInv = mat1.inverted();
-
- QRect rect(43, 70, 200, 200);
- QPoint pt(43, 66);
- QVERIFY(tranInv.map(pt) == matInv.map(pt));
- QVERIFY(tranInv.map(pt) == matInv.map(pt));
-
- QPainterPath path;
- path.moveTo(55, 60);
- path.lineTo(110, 110);
- path.quadTo(220, 50, 10, 20);
- path.closeSubpath();
- QVERIFY(tranInv.map(path) == matInv.map(path));
-}
-
-void tst_QTransform::testOffset()
-{
- QTransform trans;
- const QMatrix &aff = trans.toAffine();
- QCOMPARE((void*)(&aff), (void*)(&trans));
-}
-
-void tst_QTransform::types()
-{
- QTransform m1;
- QCOMPARE(m1.type(), QTransform::TxNone);
-
- m1.translate(1.0f, 0.0f);
- QCOMPARE(m1.type(), QTransform::TxTranslate);
- QCOMPARE(m1.inverted().type(), QTransform::TxTranslate);
-
- m1.scale(1.0f, 2.0f);
- QCOMPARE(m1.type(), QTransform::TxScale);
- QCOMPARE(m1.inverted().type(), QTransform::TxScale);
-
- m1.rotate(45.0f);
- QCOMPARE(m1.type(), QTransform::TxRotate);
- QCOMPARE(m1.inverted().type(), QTransform::TxRotate);
-
- m1.shear(0.5f, 0.25f);
- QCOMPARE(m1.type(), QTransform::TxShear);
- QCOMPARE(m1.inverted().type(), QTransform::TxShear);
-
- m1.rotate(45.0f, Qt::XAxis);
- QCOMPARE(m1.type(), QTransform::TxProject);
- m1.shear(0.5f, 0.25f);
- QCOMPARE(m1.type(), QTransform::TxProject);
- m1.rotate(45.0f);
- QCOMPARE(m1.type(), QTransform::TxProject);
- m1.scale(1.0f, 2.0f);
- QCOMPARE(m1.type(), QTransform::TxProject);
- m1.translate(1.0f, 0.0f);
- QCOMPARE(m1.type(), QTransform::TxProject);
-
- QTransform m2(1.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 0.0f,
- -1.0f, -1.0f, 1.0f);
-
- QCOMPARE(m2.type(), QTransform::TxTranslate);
- QCOMPARE((m1 * m2).type(), QTransform::TxProject);
-
- m1 *= QTransform();
- QCOMPARE(m1.type(), QTransform::TxProject);
-
- m1 *= QTransform(1.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 0.0f,
- 1.0f, 0.0f, 1.0f);
- QCOMPARE(m1.type(), QTransform::TxProject);
-
- m2.reset();
- QCOMPARE(m2.type(), QTransform::TxNone);
-
- m2.setMatrix(1.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 0.0f,
- 0.0f, 0.0f, 1.0f);
- QCOMPARE(m2.type(), QTransform::TxNone);
-
- m2 *= QTransform();
- QCOMPARE(m2.type(), QTransform::TxNone);
-
- m2.setMatrix(2.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 0.0f,
- 0.0f, 0.0f, 1.0f);
- QCOMPARE(m2.type(), QTransform::TxScale);
- m2 *= QTransform();
- QCOMPARE(m2.type(), QTransform::TxScale);
-
- m2.setMatrix(0.0f, 1.0f, 0.0f,
- 1.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 1.0f);
- QCOMPARE(m2.type(), QTransform::TxRotate);
- m2 *= QTransform();
- QCOMPARE(m2.type(), QTransform::TxRotate);
-
- m2.setMatrix(1.0f, 0.0f, 0.5f,
- 0.0f, 1.0f, 0.0f,
- 0.0f, 0.0f, 1.0f);
- QCOMPARE(m2.type(), QTransform::TxProject);
- m2 *= QTransform();
- QCOMPARE(m2.type(), QTransform::TxProject);
-
- m2.setMatrix(1.0f, 1.0f, 0.0f,
- 1.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 1.0f);
- QCOMPARE(m2.type(), QTransform::TxShear);
-
- m2 *= m2.inverted();
- QCOMPARE(m2.type(), QTransform::TxNone);
-
- m2.translate(5.0f, 5.0f);
- m2.rotate(45.0f);
- m2.rotate(-45.0f);
- QCOMPARE(m2.type(), QTransform::TxTranslate);
-
- m2.scale(2.0f, 3.0f);
- m2.shear(1.0f, 0.0f);
- m2.shear(-1.0f, 0.0f);
- QCOMPARE(m2.type(), QTransform::TxScale);
-
- m2 *= QTransform(1.0f, 1.0f, 0.0f,
- 0.0f, 1.0f, 0.0f,
- 0.0f, 0.0f, 1.0f);
- QCOMPARE(m2.type(), QTransform::TxShear);
-
- m2 *= QTransform(1.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 0.0f,
- 1.0f, 0.0f, 1.0f);
- QCOMPARE(m2.type(), QTransform::TxShear);
-
- QTransform m3(1.8f, 0.0f, 0.0f,
- 0.0f, 1.8f, 0.0f,
- 0.0f, 0.0f, 1.0f);
-
- QCOMPARE(m3.type(), QTransform::TxScale);
- m3.translate(5.0f, 5.0f);
- QCOMPARE(m3.type(), QTransform::TxScale);
- QCOMPARE(m3.inverted().type(), QTransform::TxScale);
-
- m3.setMatrix(1.0f, 0.0f, 0.0f,
- 0.0f, 1.0f, 0.0f,
- 0.0f, 0.0f, 2.0f);
- QCOMPARE(m3.type(), QTransform::TxProject);
-
- m3.setMatrix(0.0f, 2.0f, 0.0f,
- 1.0f, 0.0f, 0.0f,
- 0.0f, 0.0f, 2.0f);
- QCOMPARE(m3.type(), QTransform::TxProject);
-
- QTransform m4;
- m4.scale(5, 5);
- m4.translate(4, 2);
- m4.rotate(45);
-
- QCOMPARE(m4.type(), QTransform::TxRotate);
-
- QTransform m5;
- m5.scale(5, 5);
- m5 = m5.adjoint() / m5.determinant();
- QCOMPARE(m5.type(), QTransform::TxScale);
-}
-
-
-void tst_QTransform::scalarOps()
-{
- QTransform t;
- QCOMPARE(t.m11(), 1.);
- QCOMPARE(t.m33(), 1.);
- QCOMPARE(t.m21(), 0.);
-
- t = QTransform() + 3;
- QCOMPARE(t.m11(), 4.);
- QCOMPARE(t.m33(), 4.);
- QCOMPARE(t.m21(), 3.);
-
- t = t - 3;
- QCOMPARE(t.m11(), 1.);
- QCOMPARE(t.m33(), 1.);
- QCOMPARE(t.m21(), 0.);
- QCOMPARE(t.isIdentity(), true);
-
- t += 3;
- t = t * 2;
- QCOMPARE(t.m11(), 8.);
- QCOMPARE(t.m33(), 8.);
- QCOMPARE(t.m21(), 6.);
-}
-
-void tst_QTransform::transform()
-{
- QTransform t;
- t.rotate(30, Qt::YAxis);
- t.translate(15, 10);
- t.scale(2, 2);
- t.rotate(30);
- t.shear(0.5, 0.5);
-
- QTransform a, b, c, d, e;
- a.rotate(30, Qt::YAxis);
- b.translate(15, 10);
- c.scale(2, 2);
- d.rotate(30);
- e.shear(0.5, 0.5);
-
- QVERIFY(qFuzzyCompare(t, e * d * c * b * a));
-}
-
-void tst_QTransform::mapEmptyPath()
-{
- QPainterPath path;
- path.moveTo(10, 10);
- path.lineTo(10, 10);
- QCOMPARE(QTransform().map(path), path);
-}
-
-void tst_QTransform::boundingRect()
-{
- QPainterPath path;
- path.moveTo(10, 10);
- path.lineTo(10, 10);
- QCOMPARE(path.boundingRect(), QRectF(10, 10, 0, 0));
-}
-
-void tst_QTransform::controlPointRect()
-{
- QPainterPath path;
- path.moveTo(10, 10);
- path.lineTo(10, 10);
- QCOMPARE(path.controlPointRect(), QRectF(10, 10, 0, 0));
-}
-
-void tst_QTransform::inverted_data()
-{
- QTest::addColumn<QTransform>("matrix");
-
- QTest::newRow("identity")
- << QTransform();
-
- QTest::newRow("TxTranslate")
- << QTransform().translate(200, 10);
-
- QTest::newRow("TxScale")
- << QTransform().scale(5, 2);
-
- QTest::newRow("TxTranslate TxScale")
- << QTransform().translate(100, -10).scale(40, 2);
-
- QTest::newRow("TxScale TxTranslate")
- << QTransform().scale(40, 2).translate(100, -10);
-
- QTest::newRow("TxRotate")
- << QTransform().rotate(40, Qt::ZAxis);
-
- QTest::newRow("TxRotate TxScale")
- << QTransform().rotate(60, Qt::ZAxis).scale(2, 0.25);
-
- QTest::newRow("TxScale TxRotate")
- << QTransform().scale(2, 0.25).rotate(30, Qt::ZAxis);
-
- QTest::newRow("TxRotate TxScale TxTranslate")
- << QTransform().rotate(60, Qt::ZAxis).scale(2, 0.25).translate(200, -3000);
-
- QTest::newRow("TxRotate TxTranslate TxScale")
- << QTransform().rotate(60, Qt::ZAxis).translate(200, -3000).scale(19, 77);
-
- QTest::newRow("TxShear")
- << QTransform().shear(10, 10);
-
- QTest::newRow("TxShear TxRotate")
- << QTransform().shear(10, 10).rotate(45, Qt::ZAxis);
-
- QTest::newRow("TxShear TxRotate TxScale")
- << QTransform().shear(10, 10).rotate(45, Qt::ZAxis).scale(19, 81);
-
- QTest::newRow("TxTranslate TxShear TxRotate TxScale")
- << QTransform().translate(150, -1).shear(10, 10).rotate(45, Qt::ZAxis).scale(19, 81);
-
- const qreal s = 500000;
-
- QTransform big;
- big.scale(s, s);
-
- QTest::newRow("big") << big;
-
- QTransform small;
- small.scale(1/s, 1/s);
-
- QTest::newRow("small") << small;
-}
-
-void tst_QTransform::inverted()
-{
- if (sizeof(qreal) != sizeof(double))
- QSKIP("precision error if qreal is not double", SkipAll);
-
- QFETCH(QTransform, matrix);
-
- const QTransform inverted = matrix.inverted();
-
- QVERIFY(matrix.isIdentity() == inverted.isIdentity());
- QVERIFY(matrix.type() == inverted.type());
-
- QVERIFY((matrix * inverted).isIdentity());
- QVERIFY((inverted * matrix).isIdentity());
-}
-
-void tst_QTransform::projectivePathMapping()
-{
- QPainterPath path;
- path.addRect(-50, -50, 100, 100);
-
- const QRectF view(0, 0, 1024, 1024);
-
- QVERIFY(view.intersects(path.boundingRect()));
-
- for (int i = 0; i < 85; i += 5) {
- QTransform transform;
- transform.translate(512, 512);
- transform.rotate(i, Qt::YAxis);
-
- const QPainterPath mapped = transform.map(path);
-
- QVERIFY(view.intersects(mapped.boundingRect()));
- QVERIFY(transform.inverted().mapRect(view).intersects(path.boundingRect()));
- }
-}
-
-void tst_QTransform::mapInt()
-{
- int x = 0;
- int y = 0;
-
- QTransform::fromTranslate(10, 10).map(x, y, &x, &y);
-
- QCOMPARE(x, 10);
- QCOMPARE(y, 10);
-}
-
-void tst_QTransform::mapPathWithPoint()
-{
- QPainterPath p(QPointF(10, 10));
- p = QTransform::fromTranslate(10, 10).map(p);
- QCOMPARE(p.currentPosition(), QPointF(20, 20));
-}
-
-QTEST_APPLESS_MAIN(tst_QTransform)
-
-
-#include "tst_qtransform.moc"
diff --git a/tests/auto/qtranslator/qtranslator.pro b/tests/auto/qtranslator/qtranslator.pro
deleted file mode 100644
index 0001d1c329..0000000000
--- a/tests/auto/qtranslator/qtranslator.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qtranslator.cpp
-RESOURCES += qtranslator.qrc
-
-wince*|symbian: {
- addFiles.files = hellotr_la.qm msgfmt_from_po.qm
- addFiles.path = .
- DEPLOYMENT += addFiles
-}
-
-
diff --git a/tests/auto/qtreeview/qtreeview.pro b/tests/auto/qtreeview/qtreeview.pro
index 75c89094d6..1c310bda76 100644
--- a/tests/auto/qtreeview/qtreeview.pro
+++ b/tests/auto/qtreeview/qtreeview.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qtreeview.cpp
contains(QT_CONFIG,xcb):qpa:CONFIG+=insignificant_test # QTBUG-20756 crashes on qpa, xcb
diff --git a/tests/auto/qtreewidget/qtreewidget.pro b/tests/auto/qtreewidget/qtreewidget.pro
index bc38239c6f..a9c7ce6b5a 100644
--- a/tests/auto/qtreewidget/qtreewidget.pro
+++ b/tests/auto/qtreewidget/qtreewidget.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qtreewidget.cpp
-
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qtreewidgetitemiterator/qtreewidgetitemiterator.pro b/tests/auto/qtreewidgetitemiterator/qtreewidgetitemiterator.pro
index 0af47a3bcc..de7762e773 100644
--- a/tests/auto/qtreewidgetitemiterator/qtreewidgetitemiterator.pro
+++ b/tests/auto/qtreewidgetitemiterator/qtreewidgetitemiterator.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qtreewidgetitemiterator.cpp
diff --git a/tests/auto/qudpsocket/tst_qudpsocket.cpp b/tests/auto/qudpsocket/tst_qudpsocket.cpp
deleted file mode 100644
index ad7bfbb116..0000000000
--- a/tests/auto/qudpsocket/tst_qudpsocket.cpp
+++ /dev/null
@@ -1,1356 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <qcoreapplication.h>
-#include <qfileinfo.h>
-#include <qdatastream.h>
-#include <qudpsocket.h>
-#include <qhostaddress.h>
-#include <qhostinfo.h>
-#include <qmap.h>
-#include <QNetworkProxy>
-#include <QNetworkInterface>
-
-#include <qstringlist.h>
-#include "../network-settings.h"
-
-#ifndef QT_NO_BEARERMANAGEMENT
-#include <QtNetwork/qnetworkconfigmanager.h>
-#include <QtNetwork/qnetworkconfiguration.h>
-#include <QtNetwork/qnetworksession.h>
-#endif
-
-Q_DECLARE_METATYPE(QHostAddress)
-Q_DECLARE_METATYPE(QNetworkInterface)
-Q_DECLARE_METATYPE(QSharedPointer<QNetworkSession>)
-//TESTED_CLASS=
-//TESTED_FILES=
-
-QT_FORWARD_DECLARE_CLASS(QUdpSocket)
-
-class tst_QUdpSocket : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QUdpSocket();
- virtual ~tst_QUdpSocket();
-
-
-public slots:
- void initTestCase_data();
- void init();
- void cleanup();
-private slots:
- void constructing();
- void unconnectedServerAndClientTest();
- void broadcasting();
- void loop_data();
- void loop();
- void ipv6Loop_data();
- void ipv6Loop();
- void dualStack();
- void readLine();
- void pendingDatagramSize();
- void writeDatagram();
- void performance();
- void bindMode();
- void writeDatagramToNonExistingPeer_data();
- void writeDatagramToNonExistingPeer();
- void writeToNonExistingPeer_data();
- void writeToNonExistingPeer();
- void outOfProcessConnectedClientServerTest();
- void outOfProcessUnconnectedClientServerTest();
- void zeroLengthDatagram();
- void multicastTtlOption_data();
- void multicastTtlOption();
- void multicastLoopbackOption_data();
- void multicastLoopbackOption();
- void multicastJoinBeforeBind_data();
- void multicastJoinBeforeBind();
- void multicastLeaveAfterClose_data();
- void multicastLeaveAfterClose();
- void setMulticastInterface_data();
- void setMulticastInterface();
- void multicast_data();
- void multicast();
- void echo_data();
- void echo();
-
-protected slots:
- void empty_readyReadSlot();
- void empty_connectedSlot();
-
-private:
-#ifndef QT_NO_BEARERMANAGEMENT
- QNetworkConfigurationManager *netConfMan;
- QNetworkConfiguration networkConfiguration;
- QSharedPointer<QNetworkSession> networkSession;
-#endif
-};
-
-tst_QUdpSocket::tst_QUdpSocket()
-{
- Q_SET_DEFAULT_IAP
-}
-
-tst_QUdpSocket::~tst_QUdpSocket()
-{
-}
-
-void tst_QUdpSocket::initTestCase_data()
-{
- QTest::addColumn<bool>("setProxy");
- QTest::addColumn<int>("proxyType");
-
- QTest::newRow("WithoutProxy") << false << 0;
- QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy);
-
-#ifndef QT_NO_BEARERMANAGEMENT
- netConfMan = new QNetworkConfigurationManager(this);
- networkConfiguration = netConfMan->defaultConfiguration();
- networkSession = QSharedPointer<QNetworkSession>(new QNetworkSession(networkConfiguration));
- if (!networkSession->isOpen()) {
- networkSession->open();
- QVERIFY(networkSession->waitForOpened(30000));
- }
-#endif
-}
-
-void tst_QUdpSocket::init()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
- }
- }
-}
-
-void tst_QUdpSocket::cleanup()
-{
- QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
-}
-
-
-//----------------------------------------------------------------------------------
-
-void tst_QUdpSocket::constructing()
-{
- QUdpSocket socket;
-#ifdef FORCE_SESSION
- socket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
-
- QVERIFY(socket.isSequential());
- QVERIFY(!socket.isOpen());
- QVERIFY(socket.socketType() == QUdpSocket::UdpSocket);
- QCOMPARE((int) socket.bytesAvailable(), 0);
- QCOMPARE(socket.canReadLine(), false);
- QCOMPARE(socket.readLine(), QByteArray());
- QCOMPARE(socket.socketDescriptor(), -1);
- QCOMPARE(socket.error(), QUdpSocket::UnknownSocketError);
- QCOMPARE(socket.errorString(), QString("Unknown error"));
-
- // Check the state of the socket api
-}
-
-void tst_QUdpSocket::unconnectedServerAndClientTest()
-{
- QUdpSocket serverSocket;
-#ifdef FORCE_SESSION
- serverSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
-
- qRegisterMetaType<QAbstractSocket::SocketState>("QAbstractSocket::SocketState");
-
- QSignalSpy stateChangedSpy(&serverSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)));
- QVERIFY2(serverSocket.bind(), serverSocket.errorString().toLatin1().constData());
- QCOMPARE(stateChangedSpy.count(), 1);
-
- const char *message[] = {"Yo mista", "Yo", "Wassap"};
-
- QHostAddress serverAddress = QHostAddress::LocalHost;
- if (!(serverSocket.localAddress() == QHostAddress::AnyIPv4 || serverSocket.localAddress() == QHostAddress::AnyIPv6))
- serverAddress = serverSocket.localAddress();
-
- for (int i = 0; i < 3; ++i) {
- QUdpSocket clientSocket;
-#ifdef FORCE_SESSION
- clientSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QCOMPARE(int(clientSocket.writeDatagram(message[i], strlen(message[i]),
- serverAddress, serverSocket.localPort())),
- int(strlen(message[i])));
- char buf[1024];
- QHostAddress host;
- quint16 port;
- QVERIFY(serverSocket.waitForReadyRead(5000));
- QCOMPARE(int(serverSocket.readDatagram(buf, sizeof(buf), &host, &port)),
- int(strlen(message[i])));
- buf[strlen(message[i])] = '\0';
- QCOMPARE(QByteArray(buf), QByteArray(message[i]));
- }
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QUdpSocket::broadcasting()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QSKIP("With socks5 Broadcast is not supported.", SkipSingle);
- }
- }
-#ifdef Q_OS_AIX
- QSKIP("Broadcast does not work on darko", SkipAll);
-#endif
- const char *message[] = {"Yo mista", "", "Yo", "Wassap"};
-
- QList<QHostAddress> broadcastAddresses;
- foreach (QNetworkInterface iface, QNetworkInterface::allInterfaces()) {
- if ((iface.flags() & QNetworkInterface::CanBroadcast)
- && iface.flags() & QNetworkInterface::IsUp) {
- for (int i=0;i<iface.addressEntries().count();i++)
- broadcastAddresses.append(iface.addressEntries().at(i).broadcast());
- }
- }
- if (broadcastAddresses.isEmpty())
- QSKIP("No interface can broadcast", SkipAll);
- for (int i = 0; i < 4; ++i) {
- QUdpSocket serverSocket;
-#ifdef FORCE_SESSION
- serverSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QVERIFY2(serverSocket.bind(QHostAddress::Any, 5000), serverSocket.errorString().toLatin1().constData());
-
- QCOMPARE(serverSocket.state(), QUdpSocket::BoundState);
-
- connect(&serverSocket, SIGNAL(readyRead()), SLOT(empty_readyReadSlot()));
-
- QUdpSocket broadcastSocket;
-#ifdef FORCE_SESSION
- broadcastSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- broadcastSocket.bind();
-
- for (int j = 0; j < 100; ++j) {
- for (int k = 0; k < 4; k++) {
- broadcastSocket.writeDatagram(message[i], strlen(message[i]),
- QHostAddress::Broadcast, 5000);
- foreach (QHostAddress addr, broadcastAddresses)
- broadcastSocket.writeDatagram(message[i], strlen(message[i]), addr, 5000);
- }
- QTestEventLoop::instance().enterLoop(15);
- if (QTestEventLoop::instance().timeout()) {
-#if defined(Q_OS_FREEBSD)
- QEXPECT_FAIL("",
- "Broadcasting to 255.255.255.255 does not work on FreeBSD",
- Abort);
- QVERIFY(false); // seems that QFAIL() doesn't respect the QEXPECT_FAIL() :/
-#endif
- QFAIL("Network operation timed out");
- }
- QVERIFY(serverSocket.hasPendingDatagrams());
-
- do {
- QByteArray arr; arr.resize(serverSocket.pendingDatagramSize() + 1);
- QHostAddress host;
- quint16 port;
- QCOMPARE((int) serverSocket.readDatagram(arr.data(), arr.size() - 1, &host, &port),
- (int) strlen(message[i]));
- arr.resize(strlen(message[i]));
- QCOMPARE(arr, QByteArray(message[i]));
- } while (serverSocket.hasPendingDatagrams());
- }
- }
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QUdpSocket::loop_data()
-{
- QTest::addColumn<QByteArray>("peterMessage");
- QTest::addColumn<QByteArray>("paulMessage");
- QTest::addColumn<bool>("success");
-
- QTest::newRow("\"Almond!\" | \"Joy!\"") << QByteArray("Almond!") << QByteArray("Joy!") << true;
- QTest::newRow("\"A\" | \"B\"") << QByteArray("A") << QByteArray("B") << true;
- QTest::newRow("\"AB\" | \"B\"") << QByteArray("AB") << QByteArray("B") << true;
- QTest::newRow("\"AB\" | \"BB\"") << QByteArray("AB") << QByteArray("BB") << true;
- QTest::newRow("\"A\\0B\" | \"B\\0B\"") << QByteArray::fromRawData("A\0B", 3) << QByteArray::fromRawData("B\0B", 3) << true;
- QTest::newRow("\"(nil)\" | \"(nil)\"") << QByteArray() << QByteArray() << true;
- QTest::newRow("Bigmessage") << QByteArray(600, '@') << QByteArray(600, '@') << true;
-}
-
-void tst_QUdpSocket::loop()
-{
- QFETCH(QByteArray, peterMessage);
- QFETCH(QByteArray, paulMessage);
- QFETCH(bool, success);
-
- QUdpSocket peter;
- QUdpSocket paul;
-#ifdef FORCE_SESSION
- peter.setProperty("_q_networksession", QVariant::fromValue(networkSession));
- paul.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
-
- QVERIFY2(peter.bind(), peter.errorString().toLatin1().constData());
- QVERIFY2(paul.bind(), paul.errorString().toLatin1().constData());
-
- QHostAddress peterAddress = QHostAddress::LocalHost;
- if (!(peter.localAddress() == QHostAddress::AnyIPv4 || peter.localAddress() == QHostAddress::AnyIPv6))
- peterAddress = peter.localAddress();
- QHostAddress pualAddress = QHostAddress::LocalHost;
- if (!(paul.localAddress() == QHostAddress::AnyIPv4 || paul.localAddress() == QHostAddress::AnyIPv6))
- pualAddress = paul.localAddress();
-
- QCOMPARE(peter.writeDatagram(peterMessage.data(), peterMessage.length(),
- pualAddress, paul.localPort()), qint64(peterMessage.length()));
- QCOMPARE(paul.writeDatagram(paulMessage.data(), paulMessage.length(),
- peterAddress, peter.localPort()), qint64(paulMessage.length()));
-
- QVERIFY(peter.waitForReadyRead(9000));
- QVERIFY(paul.waitForReadyRead(9000));
- char peterBuffer[16*1024];
- char paulBuffer[16*1024];
- if (success) {
- QCOMPARE(peter.readDatagram(peterBuffer, sizeof(peterBuffer)), qint64(paulMessage.length()));
- QCOMPARE(paul.readDatagram(paulBuffer, sizeof(peterBuffer)), qint64(peterMessage.length()));
- } else {
- QVERIFY(peter.readDatagram(peterBuffer, sizeof(peterBuffer)) != paulMessage.length());
- QVERIFY(paul.readDatagram(paulBuffer, sizeof(peterBuffer)) != peterMessage.length());
- }
-
- QCOMPARE(QByteArray(peterBuffer, paulMessage.length()), paulMessage);
- QCOMPARE(QByteArray(paulBuffer, peterMessage.length()), peterMessage);
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QUdpSocket::ipv6Loop_data()
-{
- loop_data();
-}
-
-void tst_QUdpSocket::ipv6Loop()
-{
- QFETCH(QByteArray, peterMessage);
- QFETCH(QByteArray, paulMessage);
- QFETCH(bool, success);
-
- QUdpSocket peter;
- QUdpSocket paul;
-#ifdef FORCE_SESSION
- peter.setProperty("_q_networksession", QVariant::fromValue(networkSession));
- paul.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
-
- quint16 peterPort = 28124;
- quint16 paulPort = 28123;
-
- if (!peter.bind(QHostAddress::LocalHostIPv6, peterPort)) {
- QCOMPARE(peter.error(), QUdpSocket::UnsupportedSocketOperationError);
- } else {
- QVERIFY(paul.bind(QHostAddress::LocalHostIPv6, paulPort));
-
- QCOMPARE(peter.writeDatagram(peterMessage.data(), peterMessage.length(), QHostAddress("::1"),
- paulPort), qint64(peterMessage.length()));
- QCOMPARE(paul.writeDatagram(paulMessage.data(), paulMessage.length(),
- QHostAddress("::1"), peterPort), qint64(paulMessage.length()));
-
- char peterBuffer[16*1024];
- char paulBuffer[16*1024];
-#if !defined(Q_OS_WINCE)
- QVERIFY(peter.waitForReadyRead(5000));
- QVERIFY(paul.waitForReadyRead(5000));
-#else
- QVERIFY(peter.waitForReadyRead(15000));
- QVERIFY(paul.waitForReadyRead(15000));
-#endif
- if (success) {
- QCOMPARE(peter.readDatagram(peterBuffer, sizeof(peterBuffer)), qint64(paulMessage.length()));
- QCOMPARE(paul.readDatagram(paulBuffer, sizeof(peterBuffer)), qint64(peterMessage.length()));
- } else {
- QVERIFY(peter.readDatagram(peterBuffer, sizeof(peterBuffer)) != paulMessage.length());
- QVERIFY(paul.readDatagram(paulBuffer, sizeof(peterBuffer)) != peterMessage.length());
- }
-
- QCOMPARE(QByteArray(peterBuffer, paulMessage.length()), paulMessage);
- QCOMPARE(QByteArray(paulBuffer, peterMessage.length()), peterMessage);
- }
-}
-
-void tst_QUdpSocket::dualStack()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- QSKIP("test server SOCKS proxy doesn't support IPv6", SkipSingle);
- QUdpSocket dualSock;
- QByteArray dualData("dual");
- QVERIFY(dualSock.bind(QHostAddress(QHostAddress::Any), 0));
-
- QUdpSocket v4Sock;
- QByteArray v4Data("v4");
- QVERIFY(v4Sock.bind(QHostAddress(QHostAddress::AnyIPv4), 0));
-
- QUdpSocket v6Sock;
- QByteArray v6Data("v6");
- QVERIFY(v6Sock.bind(QHostAddress(QHostAddress::AnyIPv6), 0));
-
- QHostAddress from;
- quint16 port;
- QByteArray buffer;
- //test v4 -> dual
- QCOMPARE((int)v4Sock.writeDatagram(v4Data.constData(), v4Data.length(), QHostAddress(QHostAddress::LocalHost), dualSock.localPort()), v4Data.length());
- QVERIFY(dualSock.waitForReadyRead(5000));
- buffer.reserve(100);
- qint64 size = dualSock.readDatagram(buffer.data(), 100, &from, &port);
- QCOMPARE((int)size, v4Data.length());
- buffer.resize(size);
- QCOMPARE(buffer, v4Data);
-
- //test v6 -> dual
- QCOMPARE((int)v6Sock.writeDatagram(v6Data.constData(), v6Data.length(), QHostAddress(QHostAddress::LocalHostIPv6), dualSock.localPort()), v6Data.length());
- QVERIFY(dualSock.waitForReadyRead(5000));
- buffer.reserve(100);
- size = dualSock.readDatagram(buffer.data(), 100, &from, &port);
- QCOMPARE((int)size, v6Data.length());
- buffer.resize(size);
- QCOMPARE(buffer, v6Data);
-
- //test dual -> v4
- QCOMPARE((int)dualSock.writeDatagram(dualData.constData(), dualData.length(), QHostAddress(QHostAddress::LocalHost), v4Sock.localPort()), dualData.length());
- QVERIFY(v4Sock.waitForReadyRead(5000));
- buffer.reserve(100);
- size = v4Sock.readDatagram(buffer.data(), 100, &from, &port);
- QCOMPARE((int)size, dualData.length());
- buffer.resize(size);
- QCOMPARE(buffer, dualData);
-
- //test dual -> v6
- QCOMPARE((int)dualSock.writeDatagram(dualData.constData(), dualData.length(), QHostAddress(QHostAddress::LocalHostIPv6), v6Sock.localPort()), dualData.length());
- QVERIFY(v6Sock.waitForReadyRead(5000));
- buffer.reserve(100);
- size = v6Sock.readDatagram(buffer.data(), 100, &from, &port);
- QCOMPARE((int)size, dualData.length());
- buffer.resize(size);
- QCOMPARE(buffer, dualData);
-
-}
-
-void tst_QUdpSocket::empty_readyReadSlot()
-{
- QTestEventLoop::instance().exitLoop();
-}
-
-void tst_QUdpSocket::empty_connectedSlot()
-{
- QTestEventLoop::instance().exitLoop();
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QUdpSocket::readLine()
-{
- QUdpSocket socket1;
- QUdpSocket socket2;
-#ifdef FORCE_SESSION
- socket1.setProperty("_q_networksession", QVariant::fromValue(networkSession));
- socket2.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QVERIFY2(socket1.bind(), socket1.errorString().toLatin1().constData());
-
- socket2.connectToHost("127.0.0.1", socket1.localPort());
- QVERIFY(socket2.waitForConnected(5000));
-}
-
-//----------------------------------------------------------------------------------
-
-void tst_QUdpSocket::pendingDatagramSize()
-{
- QUdpSocket server;
-#ifdef FORCE_SESSION
- server.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QVERIFY2(server.bind(), server.errorString().toLatin1().constData());
-
- QHostAddress serverAddress = QHostAddress::LocalHost;
- if (!(server.localAddress() == QHostAddress::AnyIPv4 || server.localAddress() == QHostAddress::AnyIPv6))
- serverAddress = server.localAddress();
-
- QUdpSocket client;
-#ifdef FORCE_SESSION
- client.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QVERIFY(client.writeDatagram("this is", 7, serverAddress, server.localPort()) == 7);
- QVERIFY(client.writeDatagram(0, 0, serverAddress, server.localPort()) == 0);
- QVERIFY(client.writeDatagram("3 messages", 10, serverAddress, server.localPort()) == 10);
-
- char c = 0;
- QVERIFY(server.waitForReadyRead());
- if (server.hasPendingDatagrams()) {
-#if defined Q_OS_HPUX && defined __ia64
- QEXPECT_FAIL("", "HP-UX 11i v2 can't determine the datagram size correctly.", Abort);
-#endif
- QCOMPARE(server.pendingDatagramSize(), qint64(7));
- c = '\0';
- QCOMPARE(server.readDatagram(&c, 1), qint64(1));
- QCOMPARE(c, 't');
- c = '\0';
- } else {
- QSKIP("does not have the 1st datagram", SkipSingle);
- }
-
- if (server.hasPendingDatagrams()) {
- QCOMPARE(server.pendingDatagramSize(), qint64(0));
- QCOMPARE(server.readDatagram(&c, 1), qint64(0));
- QCOMPARE(c, '\0'); // untouched
- c = '\0';
- } else {
- QSKIP("does not have the 2nd datagram", SkipSingle);
- }
-
- if (server.hasPendingDatagrams()) {
- QCOMPARE(server.pendingDatagramSize(), qint64(10));
- QCOMPARE(server.readDatagram(&c, 1), qint64(1));
- QCOMPARE(c, '3');
- } else {
- QSKIP("does not have the 3rd datagram", SkipSingle);
- }
-}
-
-
-void tst_QUdpSocket::writeDatagram()
-{
- QUdpSocket server;
-#ifdef FORCE_SESSION
- server.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QVERIFY2(server.bind(), server.errorString().toLatin1().constData());
-
- QHostAddress serverAddress = QHostAddress::LocalHost;
- if (!(server.localAddress() == QHostAddress::AnyIPv4 || server.localAddress() == QHostAddress::AnyIPv6))
- serverAddress = server.localAddress();
-
- QUdpSocket client;
-#ifdef FORCE_SESSION
- client.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
-
- qRegisterMetaType<qint64>("qint64");
- qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
-
- for(int i=0;;i++) {
- QSignalSpy errorspy(&client, SIGNAL(error(QAbstractSocket::SocketError)));
- QSignalSpy bytesspy(&client, SIGNAL(bytesWritten(qint64)));
-
- qint64 written = client.writeDatagram(QByteArray(i * 1024, 'w'), serverAddress,
- server.localPort());
-
- if (written != i * 1024) {
-#if defined (Q_OS_HPUX)
- QSKIP("HP-UX 11.11 on hai (PA-RISC 64) truncates too long datagrams.", SkipSingle);
-#endif
- QCOMPARE(bytesspy.count(), 0);
- QCOMPARE(errorspy.count(), 1);
- QCOMPARE(*static_cast<const int *>(errorspy.at(0).at(0).constData()),
- int(QUdpSocket::DatagramTooLargeError));
- QCOMPARE(client.error(), QUdpSocket::DatagramTooLargeError);
- break;
- }
- QVERIFY(bytesspy.count() == 1);
- QCOMPARE(*static_cast<const qint64 *>(bytesspy.at(0).at(0).constData()),
- qint64(i * 1024));
- QCOMPARE(errorspy.count(), 0);
- if (!server.waitForReadyRead(5000)) {
-#ifdef Q_OS_SYMBIAN
- //symbian receive buffer for datagrams is ~30k, but it can send datagrams up to the maximum 64k...
- if (i > 28) {
- i = 64;
- continue;
- }
-#endif
- QSKIP(QString("UDP packet lost at size %1, unable to complete the test.").arg(i * 1024).toLatin1().data(), SkipSingle);
- }
- QCOMPARE(server.pendingDatagramSize(), qint64(i * 1024));
- QCOMPARE(server.readDatagram(0, 0), qint64(0));
- }
-}
-
-void tst_QUdpSocket::performance()
-{
-#if defined(Q_OS_SYMBIAN)
- // Large packets seems not to go through on Symbian
- // Reason might be also fragmentation due to VPN connection etc
-
- QFETCH_GLOBAL(bool, setProxy);
- QFETCH_GLOBAL(int, proxyType);
-
- int arrSize = 8192;
- if (setProxy && proxyType == QNetworkProxy::Socks5Proxy)
- arrSize = 1024;
-
- QByteArray arr(arrSize, '@');
-#else
- QByteArray arr(8192, '@');
-#endif // Q_OS_SYMBIAN
-
- QUdpSocket server;
-#ifdef FORCE_SESSION
- server.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QVERIFY2(server.bind(), server.errorString().toLatin1().constData());
-
- QHostAddress serverAddress = QHostAddress::LocalHost;
- if (!(server.localAddress() == QHostAddress::AnyIPv4 || server.localAddress() == QHostAddress::AnyIPv6))
- serverAddress = server.localAddress();
-
- QUdpSocket client;
-#ifdef FORCE_SESSION
- client.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- client.connectToHost(serverAddress, server.localPort());
- QVERIFY(client.waitForConnected(10000));
-
- QTime stopWatch;
- stopWatch.start();
-
- qint64 nbytes = 0;
- while (stopWatch.elapsed() < 5000) {
- for (int i = 0; i < 100; ++i) {
- if (client.write(arr.data(), arr.size()) > 0) {
- do {
- nbytes += server.readDatagram(arr.data(), arr.size());
- } while (server.hasPendingDatagrams());
- }
- }
- }
-
- float secs = stopWatch.elapsed() / 1000.0;
- qDebug("\t%.2fMB/%.2fs: %.2fMB/s", float(nbytes / (1024.0*1024.0)),
- secs, float(nbytes / (1024.0*1024.0)) / secs);
-
-#if defined(Q_OS_SYMBIAN)
- if(nbytes == 0) {
- qDebug("No bytes passed through local UDP socket, since UDP socket write returns EWOULDBLOCK");
- qDebug("Should try with blocking sockets, but it is not currently possible due to Open C defect");
- }
-#endif
-
-}
-
-void tst_QUdpSocket::bindMode()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy) {
- QFETCH_GLOBAL(int, proxyType);
- if (proxyType == QNetworkProxy::Socks5Proxy) {
- QSKIP("With socks5 explicit port binding is not supported.", SkipAll);
- }
- }
-
- QUdpSocket socket;
-#ifdef FORCE_SESSION
- socket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QVERIFY2(socket.bind(), socket.errorString().toLatin1().constData());
- QUdpSocket socket2;
-#ifdef FORCE_SESSION
- socket2.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QVERIFY(!socket2.bind(socket.localPort()));
-#if defined(Q_OS_SYMBIAN)
- if(RProcess().HasCapability(ECapabilityNetworkControl)) {
- qDebug("Test executed *with* NetworkControl capability");
- // In Symbian OS ReuseAddressHint together with NetworkControl capability
- // gives application *always* right to bind to port. I.e. it does not matter
- // if first socket was bound with any bind flag. Since autotests in Symbian
- // are currently executed with ALL -TCB rights, this path is the one executed.
- QVERIFY(socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
- socket.close();
- socket2.close();
-
- QVERIFY2(socket.bind(0, QUdpSocket::ShareAddress), socket.errorString().toLatin1().constData());
- QVERIFY(!socket2.bind(socket.localPort()));
- QVERIFY2(socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint), socket2.errorString().toLatin1().constData());
- socket.close();
- socket2.close();
-
- QVERIFY2(socket.bind(0, QUdpSocket::DontShareAddress), socket.errorString().toLatin1().constData());
- QVERIFY(!socket2.bind(socket.localPort()));
- QVERIFY(socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
- socket.close();
- socket2.close();
- } else {
- qDebug("Test executed *without* NetworkControl capability");
- // If we don't have NetworkControl capability, attempt to bind already bound
- // address will *always* fail. I.e. it does not matter if first socket was
- // bound with any bind flag.
- QVERIFY(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
- socket.close();
-
- QVERIFY2(socket.bind(0, QUdpSocket::ShareAddress), socket.errorString().toLatin1().constData());
- QVERIFY(!socket2.bind(socket.localPort()));
- QVERIFY2(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint), socket2.errorString().toLatin1().constData());
- socket.close();
-
- QVERIFY2(socket.bind(0, QUdpSocket::DontShareAddress), socket.errorString().toLatin1().constData());
- QVERIFY(!socket2.bind(socket.localPort()));
- QVERIFY(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
- socket.close();
- }
-#elif defined(Q_OS_UNIX)
- QVERIFY(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
- socket.close();
- QVERIFY2(socket.bind(0, QUdpSocket::ShareAddress), socket.errorString().toLatin1().constData());
- QVERIFY2(socket2.bind(socket.localPort()), socket2.errorString().toLatin1().constData());
- socket2.close();
- QVERIFY2(socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint), socket2.errorString().toLatin1().constData());
-#else
-
- // Depending on the user's privileges, this or will succeed or
- // fail. Admins are allowed to reuse the address, but nobody else.
- if (!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint), socket2.errorString().toLatin1().constData())
- qWarning("Failed to bind with QUdpSocket::ReuseAddressHint, user isn't an administrator?");
- socket.close();
- QVERIFY2(socket.bind(0, QUdpSocket::ShareAddress), socket.errorString().toLatin1().constData());
- QVERIFY(!socket2.bind(socket.localPort()));
- socket.close();
- QVERIFY2(socket.bind(0, QUdpSocket::DontShareAddress), socket.errorString().toLatin1().constData());
- QVERIFY(!socket2.bind(socket.localPort()));
- QVERIFY(!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint));
-#endif
-}
-
-void tst_QUdpSocket::writeDatagramToNonExistingPeer_data()
-{
- QTest::addColumn<bool>("bind");
- QTest::addColumn<QHostAddress>("peerAddress");
- QHostAddress localhost(QHostAddress::LocalHost);
- QHostAddress remote = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first();
-
- QTest::newRow("localhost-unbound") << false << localhost;
- QTest::newRow("localhost-bound") << true << localhost;
- QTest::newRow("remote-unbound") << false << remote;
- QTest::newRow("remote-bound") << true << remote;
-}
-
-void tst_QUdpSocket::writeDatagramToNonExistingPeer()
-{
- QFETCH(bool, bind);
- QFETCH(QHostAddress, peerAddress);
-
- quint16 peerPort = 33533 + int(bind);
-
- QUdpSocket sUdp;
-#ifdef FORCE_SESSION
- sUdp.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QSignalSpy sReadyReadSpy(&sUdp, SIGNAL(readyRead()));
- if (bind)
- QVERIFY(sUdp.bind());
- QCOMPARE(sUdp.writeDatagram("", 1, peerAddress, peerPort), qint64(1));
- QTestEventLoop::instance().enterLoop(1);
- QCOMPARE(sReadyReadSpy.count(), 0);
-}
-
-void tst_QUdpSocket::writeToNonExistingPeer_data()
-{
- QTest::addColumn<QHostAddress>("peerAddress");
- QHostAddress localhost(QHostAddress::LocalHost);
- QHostAddress remote = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first();
- // write (required to be connected)
- QTest::newRow("localhost") << localhost;
- QTest::newRow("remote") << remote;
-}
-
-void tst_QUdpSocket::writeToNonExistingPeer()
-{
- QSKIP("Connected-mode UDP sockets and their behaviour are erratic", SkipAll);
- QFETCH(QHostAddress, peerAddress);
- quint16 peerPort = 34534;
- qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
-
- QUdpSocket sConnected;
-#ifdef FORCE_SESSION
- sConnected.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QSignalSpy sConnectedReadyReadSpy(&sConnected, SIGNAL(readyRead()));
- QSignalSpy sConnectedErrorSpy(&sConnected, SIGNAL(error(QAbstractSocket::SocketError)));
- sConnected.connectToHost(peerAddress, peerPort, QIODevice::ReadWrite);
- QVERIFY(sConnected.waitForConnected(10000));
-
- // the first write succeeds...
- QCOMPARE(sConnected.write("", 1), qint64(1));
-
- // the second one should fail!
- QTest::qSleep(1000); // do not process events
- QCOMPARE(sConnected.write("", 1), qint64(-1));
- QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError));
-
- // the third one will succeed...
- QCOMPARE(sConnected.write("", 1), qint64(1));
- QTestEventLoop::instance().enterLoop(1);
- QCOMPARE(sConnectedReadyReadSpy.count(), 0);
- QCOMPARE(sConnectedErrorSpy.count(), 1);
- QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError));
-
- // we should now get a read error
- QCOMPARE(sConnected.write("", 1), qint64(1));
- QTest::qSleep(1000); // do not process events
- char buf[2];
- QVERIFY(!sConnected.hasPendingDatagrams());
- QCOMPARE(sConnected.bytesAvailable(), Q_INT64_C(0));
- QCOMPARE(sConnected.pendingDatagramSize(), Q_INT64_C(-1));
- QCOMPARE(sConnected.readDatagram(buf, 2), Q_INT64_C(-1));
- QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError));
-
- QCOMPARE(sConnected.write("", 1), qint64(1));
- QTest::qSleep(1000); // do not process events
- QCOMPARE(sConnected.read(buf, 2), Q_INT64_C(0));
- QCOMPARE(int(sConnected.error()), int(QUdpSocket::ConnectionRefusedError));
-
- // we should still be connected
- QCOMPARE(int(sConnected.state()), int(QUdpSocket::ConnectedState));
-}
-
-void tst_QUdpSocket::outOfProcessConnectedClientServerTest()
-{
-#if defined(Q_OS_WINCE) || defined (Q_OS_SYMBIAN)
- QSKIP("This test depends on reading data from QProcess (not supported on Qt/WinCE and Symbian).", SkipAll);
-#endif
-#if defined(QT_NO_PROCESS)
- QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
-#else
-
- QProcess serverProcess;
- serverProcess.start(QLatin1String("clientserver/clientserver server 1 1"),
- QIODevice::ReadWrite | QIODevice::Text);
- QVERIFY2(serverProcess.waitForStarted(3000),
- qPrintable("Failed to start subprocess: " + serverProcess.errorString()));
-
- // Wait until the server has started and reports success.
- while (!serverProcess.canReadLine())
- QVERIFY(serverProcess.waitForReadyRead(3000));
- QByteArray serverGreeting = serverProcess.readLine();
- QVERIFY(serverGreeting != QByteArray("XXX\n"));
- int serverPort = serverGreeting.trimmed().toInt();
- QVERIFY(serverPort > 0 && serverPort < 65536);
-
- QProcess clientProcess;
- clientProcess.start(QString::fromLatin1("clientserver/clientserver connectedclient %1 %2")
- .arg(QLatin1String("127.0.0.1")).arg(serverPort),
- QIODevice::ReadWrite | QIODevice::Text);
- QVERIFY2(clientProcess.waitForStarted(3000),
- qPrintable("Failed to start subprocess: " + clientProcess.errorString()));
-
- // Wait until the server has started and reports success.
- while (!clientProcess.canReadLine())
- QVERIFY(clientProcess.waitForReadyRead(3000));
- QByteArray clientGreeting = clientProcess.readLine();
- QCOMPARE(clientGreeting, QByteArray("ok\n"));
-
- // Let the client and server talk for 3 seconds
- QTest::qWait(3000);
-
- QStringList serverData = QString::fromLocal8Bit(serverProcess.readAll()).split("\n");
- QStringList clientData = QString::fromLocal8Bit(clientProcess.readAll()).split("\n");
- QVERIFY(serverData.size() > 5);
- QVERIFY(clientData.size() > 5);
-
- for (int i = 0; i < clientData.size() / 2; ++i) {
- QCOMPARE(clientData.at(i * 2), QString("readData()"));
- QCOMPARE(serverData.at(i * 3), QString("readData()"));
-
- QString cdata = clientData.at(i * 2 + 1);
- QString sdata = serverData.at(i * 3 + 1);
- QVERIFY(cdata.startsWith(QLatin1String("got ")));
-
- QCOMPARE(cdata.mid(4).trimmed().toInt(), sdata.mid(4).trimmed().toInt() * 2);
- QVERIFY(serverData.at(i * 3 + 2).startsWith(QLatin1String("sending ")));
- QCOMPARE(serverData.at(i * 3 + 2).trimmed().mid(8).toInt(),
- sdata.mid(4).trimmed().toInt() * 2);
- }
-
- clientProcess.kill();
- QVERIFY(clientProcess.waitForFinished());
- serverProcess.kill();
- QVERIFY(serverProcess.waitForFinished());
-#endif
-}
-
-void tst_QUdpSocket::outOfProcessUnconnectedClientServerTest()
-{
-#if defined(Q_OS_WINCE) || defined (Q_OS_SYMBIAN)
- QSKIP("This test depends on reading data from QProcess (not supported on Qt/WinCE and Symbian).", SkipAll);
-#endif
-#if defined(QT_NO_PROCESS)
- QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
-#else
-
- QProcess serverProcess;
- serverProcess.start(QLatin1String("clientserver/clientserver server 1 1"),
- QIODevice::ReadWrite | QIODevice::Text);
- QVERIFY2(serverProcess.waitForStarted(3000),
- qPrintable("Failed to start subprocess: " + serverProcess.errorString()));
-
- // Wait until the server has started and reports success.
- while (!serverProcess.canReadLine())
- QVERIFY(serverProcess.waitForReadyRead(3000));
- QByteArray serverGreeting = serverProcess.readLine();
- QVERIFY(serverGreeting != QByteArray("XXX\n"));
- int serverPort = serverGreeting.trimmed().toInt();
- QVERIFY(serverPort > 0 && serverPort < 65536);
-
- QProcess clientProcess;
- clientProcess.start(QString::fromLatin1("clientserver/clientserver unconnectedclient %1 %2")
- .arg(QLatin1String("127.0.0.1")).arg(serverPort),
- QIODevice::ReadWrite | QIODevice::Text);
- QVERIFY2(clientProcess.waitForStarted(3000),
- qPrintable("Failed to start subprocess: " + clientProcess.errorString()));
-
- // Wait until the server has started and reports success.
- while (!clientProcess.canReadLine())
- QVERIFY(clientProcess.waitForReadyRead(3000));
- QByteArray clientGreeting = clientProcess.readLine();
- QCOMPARE(clientGreeting, QByteArray("ok\n"));
-
- // Let the client and server talk for 3 seconds
- QTest::qWait(3000);
-
- QStringList serverData = QString::fromLocal8Bit(serverProcess.readAll()).split("\n");
- QStringList clientData = QString::fromLocal8Bit(clientProcess.readAll()).split("\n");
-
- QVERIFY(serverData.size() > 5);
- QVERIFY(clientData.size() > 5);
-
- for (int i = 0; i < clientData.size() / 2; ++i) {
- QCOMPARE(clientData.at(i * 2), QString("readData()"));
- QCOMPARE(serverData.at(i * 3), QString("readData()"));
-
- QString cdata = clientData.at(i * 2 + 1);
- QString sdata = serverData.at(i * 3 + 1);
- QVERIFY(cdata.startsWith(QLatin1String("got ")));
-
- QCOMPARE(cdata.mid(4).trimmed().toInt(), sdata.mid(4).trimmed().toInt() * 2);
- QVERIFY(serverData.at(i * 3 + 2).startsWith(QLatin1String("sending ")));
- QCOMPARE(serverData.at(i * 3 + 2).trimmed().mid(8).toInt(),
- sdata.mid(4).trimmed().toInt() * 2);
- }
-
- clientProcess.kill();
- QVERIFY(clientProcess.waitForFinished());
- serverProcess.kill();
- QVERIFY(serverProcess.waitForFinished());
-#endif
-}
-
-void tst_QUdpSocket::zeroLengthDatagram()
-{
- QFETCH_GLOBAL(bool, setProxy);
- if (setProxy)
- return;
-
- QUdpSocket receiver;
-#ifdef FORCE_SESSION
- receiver.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QVERIFY(receiver.bind());
-
- QVERIFY(!receiver.waitForReadyRead(100));
- QVERIFY(!receiver.hasPendingDatagrams());
-
- QUdpSocket sender;
-#ifdef FORCE_SESSION
- sender.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- QCOMPARE(sender.writeDatagram(QByteArray(), QHostAddress::LocalHost, receiver.localPort()), qint64(0));
-
- QVERIFY(receiver.waitForReadyRead(1000));
- QVERIFY(receiver.hasPendingDatagrams());
-
- char buf;
- QCOMPARE(receiver.readDatagram(&buf, 1), qint64(0));
-}
-
-void tst_QUdpSocket::multicastTtlOption_data()
-{
- QTest::addColumn<QHostAddress>("bindAddress");
- QTest::addColumn<int>("ttl");
- QTest::addColumn<int>("expected");
-
- QList<QHostAddress> addresses;
- addresses += QHostAddress(QHostAddress::Any);
- addresses += QHostAddress(QHostAddress::AnyIPv6);
-
- foreach (const QHostAddress &address, addresses) {
- QTest::newRow(QString("%1 0").arg(address.toString()).toAscii()) << address << 0 << 0;
- QTest::newRow(QString("%1 1").arg(address.toString()).toAscii()) << address << 1 << 1;
- QTest::newRow(QString("%1 2").arg(address.toString()).toAscii()) << address << 2 << 2;
- QTest::newRow(QString("%1 128").arg(address.toString()).toAscii()) << address << 128 << 128;
- QTest::newRow(QString("%1 255").arg(address.toString()).toAscii()) << address << 255 << 255;
- QTest::newRow(QString("%1 1024").arg(address.toString()).toAscii()) << address << 1024 << 1;
- }
-}
-
-void tst_QUdpSocket::multicastTtlOption()
-{
- QFETCH_GLOBAL(bool, setProxy);
- QFETCH(QHostAddress, bindAddress);
- QFETCH(int, ttl);
- QFETCH(int, expected);
- if (setProxy) {
- // UDP multicast does not work with proxies
- expected = 0;
- }
-
- QUdpSocket udpSocket;
-#ifdef FORCE_SESSION
- udpSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- // bind, but ignore the result, we are only interested in initializing the socket
- (void) udpSocket.bind(bindAddress, 0);
- udpSocket.setSocketOption(QUdpSocket::MulticastTtlOption, ttl);
- QCOMPARE(udpSocket.socketOption(QUdpSocket::MulticastTtlOption).toInt(), expected);
-}
-
-void tst_QUdpSocket::multicastLoopbackOption_data()
-{
- QTest::addColumn<QHostAddress>("bindAddress");
- QTest::addColumn<int>("loopback");
- QTest::addColumn<int>("expected");
-
- QList<QHostAddress> addresses;
- addresses += QHostAddress(QHostAddress::Any);
- addresses += QHostAddress(QHostAddress::AnyIPv6);
-
- foreach (const QHostAddress &address, addresses) {
- QTest::newRow(QString("%1 0").arg(address.toString()).toAscii()) << address << 0 << 0;
- QTest::newRow(QString("%1 1").arg(address.toString()).toAscii()) << address << 1 << 1;
- QTest::newRow(QString("%1 2").arg(address.toString()).toAscii()) << address << 2 << 1;
- QTest::newRow(QString("%1 0 again").arg(address.toString()).toAscii()) << address << 0 << 0;
- QTest::newRow(QString("%1 2 again").arg(address.toString()).toAscii()) << address << 2 << 1;
- QTest::newRow(QString("%1 0 last time").arg(address.toString()).toAscii()) << address << 0 << 0;
- QTest::newRow(QString("%1 1 again").arg(address.toString()).toAscii()) << address << 1 << 1;
- }
-}
-
-void tst_QUdpSocket::multicastLoopbackOption()
-{
- QFETCH_GLOBAL(bool, setProxy);
- QFETCH(QHostAddress, bindAddress);
- QFETCH(int, loopback);
- QFETCH(int, expected);
- if (setProxy) {
- // UDP multicast does not work with proxies
- expected = 0;
- }
-
- QUdpSocket udpSocket;
-#ifdef FORCE_SESSION
- udpSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- // bind, but ignore the result, we are only interested in initializing the socket
- (void) udpSocket.bind(bindAddress, 0);
- udpSocket.setSocketOption(QUdpSocket::MulticastLoopbackOption, loopback);
- QCOMPARE(udpSocket.socketOption(QUdpSocket::MulticastLoopbackOption).toInt(), expected);
-}
-
-void tst_QUdpSocket::multicastJoinBeforeBind_data()
-{
- QTest::addColumn<QHostAddress>("groupAddress");
- QTest::newRow("valid ipv4 group address") << QHostAddress("239.255.118.62");
- QTest::newRow("invalid ipv4 group address") << QHostAddress(QHostAddress::Broadcast);
- QTest::newRow("valid ipv6 group address") << QHostAddress("FF01::114");
- QTest::newRow("invalid ipv6 group address") << QHostAddress(QHostAddress::AnyIPv6);
-}
-
-void tst_QUdpSocket::multicastJoinBeforeBind()
-{
- QFETCH(QHostAddress, groupAddress);
-
- QUdpSocket udpSocket;
-#ifdef FORCE_SESSION
- udpSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- // cannot join group before binding
- QTest::ignoreMessage(QtWarningMsg, "QUdpSocket::joinMulticastGroup() called on a QUdpSocket when not in QUdpSocket::BoundState");
- QVERIFY(!udpSocket.joinMulticastGroup(groupAddress));
-}
-
-void tst_QUdpSocket::multicastLeaveAfterClose_data()
-{
- QTest::addColumn<QHostAddress>("groupAddress");
- QTest::newRow("valid ipv4 group address") << QHostAddress("239.255.118.62");
- QTest::newRow("valid ipv6 group address") << QHostAddress("FF01::114");
-}
-
-void tst_QUdpSocket::multicastLeaveAfterClose()
-{
- QFETCH_GLOBAL(bool, setProxy);
- QFETCH(QHostAddress, groupAddress);
- if (setProxy) {
- QSKIP("UDP Multicast does not work with proxies", SkipAll);
- }
-
- QUdpSocket udpSocket;
-#ifdef FORCE_SESSION
- udpSocket.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
-#ifdef Q_OS_SYMBIAN
- QVERIFY2(udpSocket.bind(),
- qPrintable(udpSocket.errorString()));
-#else
- QVERIFY2(udpSocket.bind(groupAddress, 0),
- qPrintable(udpSocket.errorString()));
-#endif
- QVERIFY2(udpSocket.joinMulticastGroup(groupAddress),
- qPrintable(udpSocket.errorString()));
- udpSocket.close();
- QTest::ignoreMessage(QtWarningMsg, "QUdpSocket::leaveMulticastGroup() called on a QUdpSocket when not in QUdpSocket::BoundState");
- QVERIFY(!udpSocket.leaveMulticastGroup(groupAddress));
-}
-
-void tst_QUdpSocket::setMulticastInterface_data()
-{
- QTest::addColumn<QNetworkInterface>("iface");
- QTest::addColumn<QHostAddress>("address");
- QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces();
- foreach (const QNetworkInterface &iface, interfaces) {
- foreach (const QNetworkAddressEntry &entry, iface.addressEntries()) {
- QTest::newRow(QString("%1:%2").arg(iface.name()).arg(entry.ip().toString()).toAscii())
- << iface
- << entry.ip();
- }
- }
-}
-
-void tst_QUdpSocket::setMulticastInterface()
-{
-#ifdef Q_OS_SYMBIAN
- QSKIP("Symbian has no IPV6_MULTICAST_IF equivalent", SkipAll);
-#else
- QFETCH_GLOBAL(bool, setProxy);
- QFETCH(QNetworkInterface, iface);
- QFETCH(QHostAddress, address);
-
- QUdpSocket udpSocket;
- // bind initializes the socket
- bool bound = udpSocket.bind((address.protocol() == QAbstractSocket::IPv6Protocol
- ? QHostAddress(QHostAddress::AnyIPv6)
- : QHostAddress(QHostAddress::Any)),
- 0);
- if (!bound)
- QTest::ignoreMessage(QtWarningMsg, "QUdpSocket::setMulticastInterface() called on a QUdpSocket when not in QUdpSocket::BoundState");
- udpSocket.setMulticastInterface(iface);
- if (!bound)
- QTest::ignoreMessage(QtWarningMsg, "QUdpSocket::multicastInterface() called on a QUdpSocket when not in QUdpSocket::BoundState");
- QNetworkInterface iface2 = udpSocket.multicastInterface();
- if (!setProxy) {
- QVERIFY(iface2.isValid());
- QCOMPARE(iface.name(), iface2.name());
- } else {
- QVERIFY(!iface2.isValid());
- }
-#endif
-}
-
-void tst_QUdpSocket::multicast_data()
-{
- QHostAddress anyAddress = QHostAddress(QHostAddress::AnyIPv4);
- QHostAddress groupAddress = QHostAddress("239.255.118.62");
- QHostAddress any6Address = QHostAddress(QHostAddress::AnyIPv6);
- QHostAddress group6Address = QHostAddress("FF01::114");
-
- QTest::addColumn<QHostAddress>("bindAddress");
- QTest::addColumn<bool>("bindResult");
- QTest::addColumn<QHostAddress>("groupAddress");
- QTest::addColumn<bool>("joinResult");
- QTest::newRow("valid bind, group ipv4 address") << anyAddress << true << groupAddress << true;
- QTest::newRow("valid bind, invalid group ipv4 address") << anyAddress << true << anyAddress << false;
- QTest::newRow("same bind, group ipv4 address") << groupAddress << true << groupAddress << true;
- QTest::newRow("valid bind, group ipv6 address") << any6Address << true << group6Address << true;
- QTest::newRow("valid bind, invalid group ipv6 address") << any6Address << true << any6Address << false;
- QTest::newRow("same bind, group ipv6 address") << group6Address << true << group6Address << true;
-}
-
-void tst_QUdpSocket::multicast()
-{
- QFETCH_GLOBAL(bool, setProxy);
- QFETCH(QHostAddress, bindAddress);
- QFETCH(bool, bindResult);
- QFETCH(QHostAddress, groupAddress);
- QFETCH(bool, joinResult);
- if (setProxy) {
- // UDP multicast does not work with proxies
- if (
-#ifndef Q_OS_WIN
- //windows native socket engine binds 0.0.0.0 instead of the requested multicast address
- (bindAddress.protocol() == QAbstractSocket::IPv4Protocol && (bindAddress.toIPv4Address() & 0xffff0000) == 0xefff0000) ||
-#endif
- bindAddress.protocol() == QAbstractSocket::IPv6Protocol) {
- // proxy cannot bind to IPv6 or multicast addresses
- bindResult = false;
- }
- joinResult = false;
- }
-
- QUdpSocket receiver;
-#ifdef FORCE_SESSION
- receiver.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
-
- // bind first, then verify that we can join the multicast group
-#ifdef Q_OS_SYMBIAN
- if (!setProxy) {
- QEXPECT_FAIL("same bind, group ipv4 address", "bind to group address not supported on symbian", Abort);
- QEXPECT_FAIL("same bind, group ipv6 address", "bind to group address not supported on symbian", Abort);
- }
-#endif
- QVERIFY2(receiver.bind(bindAddress, 0) == bindResult,
- qPrintable(receiver.errorString()));
- if (!bindResult)
- return;
-
- QVERIFY2(receiver.joinMulticastGroup(groupAddress) == joinResult,
- qPrintable(receiver.errorString()));
- if (!joinResult)
- return;
-
- QList<QByteArray> datagrams = QList<QByteArray>()
- << QByteArray("0123")
- << QByteArray("4567")
- << QByteArray("89ab")
- << QByteArray("cdef");
-
- QUdpSocket sender;
-#ifdef FORCE_SESSION
- sender.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- sender.bind();
- foreach (const QByteArray &datagram, datagrams) {
- QCOMPARE(int(sender.writeDatagram(datagram, groupAddress, receiver.localPort())),
- int(datagram.size()));
- }
-
- QVERIFY2(receiver.waitForReadyRead(),
- qPrintable(receiver.errorString()));
- QVERIFY(receiver.hasPendingDatagrams());
- QList<QByteArray> receivedDatagrams;
- while (receiver.hasPendingDatagrams()) {
- QByteArray datagram;
- datagram.resize(receiver.pendingDatagramSize());
- receiver.readDatagram(datagram.data(), datagram.size(), 0, 0);
- receivedDatagrams << datagram;
- }
-#ifdef Q_OS_SYMBIAN
- QEXPECT_FAIL("valid bind, group ipv4 address", "IPv4 multicast not supported on symbian", Abort);
-#endif
- QCOMPARE(receivedDatagrams, datagrams);
-
- QVERIFY2(receiver.leaveMulticastGroup(groupAddress), qPrintable(receiver.errorString()));
-}
-
-void tst_QUdpSocket::echo_data()
-{
- QTest::addColumn<bool>("connect");
- QTest::newRow("writeDatagram") << false;
- QTest::newRow("write") << true;
-}
-
-void tst_QUdpSocket::echo()
-{
- QFETCH(bool, connect);
- QHostInfo info = QHostInfo::fromName(QtNetworkSettings::serverName());
- QVERIFY(info.addresses().count());
- QHostAddress remote = info.addresses().first();
-
- QUdpSocket sock;
-#ifdef FORCE_SESSION
- sock.setProperty("_q_networksession", QVariant::fromValue(networkSession));
-#endif
- if (connect) {
- sock.connectToHost(remote, 7);
- QVERIFY(sock.waitForConnected(10000));
- } else {
- sock.bind();
- }
- QByteArray out(30, 'x');
- QByteArray in;
- int successes = 0;
- for (int i=0;i<10;i++) {
- if (connect) {
- sock.write(out);
- } else {
- sock.writeDatagram(out, remote, 7);
- }
- if (sock.waitForReadyRead(1000)) {
- while (sock.hasPendingDatagrams()) {
- QHostAddress from;
- quint16 port;
- if (connect) {
- in = sock.read(sock.pendingDatagramSize());
- } else {
- in.resize(sock.pendingDatagramSize());
- sock.readDatagram(in.data(), in.length(), &from, &port);
- }
- if (in==out)
- successes++;
- }
- }
- if (!sock.isValid())
- QFAIL(sock.errorString().toLatin1().constData());
- qDebug() << "packets in" << successes << "out" << i;
- QTest::qWait(50); //choke to avoid triggering flood/DDoS protections on echo service
- }
- QVERIFY(successes >= 9);
-}
-
-QTEST_MAIN(tst_QUdpSocket)
-#include "tst_qudpsocket.moc"
diff --git a/tests/auto/qundogroup/qundogroup.pro b/tests/auto/qundogroup/qundogroup.pro
index 587143d045..c2b6ceb038 100644
--- a/tests/auto/qundogroup/qundogroup.pro
+++ b/tests/auto/qundogroup/qundogroup.pro
@@ -1,3 +1,4 @@
CONFIG += qttest_p4
+QT += widgets
SOURCES += tst_qundogroup.cpp
TARGET = tst_qundogroup
diff --git a/tests/auto/qundostack/qundostack.pro b/tests/auto/qundostack/qundostack.pro
index beb0b103b2..c8cfb70059 100644
--- a/tests/auto/qundostack/qundostack.pro
+++ b/tests/auto/qundostack/qundostack.pro
@@ -1,3 +1,4 @@
CONFIG += qttest_p4
+QT += widgets
SOURCES += tst_qundostack.cpp
TARGET = tst_qundostack
diff --git a/tests/auto/qvariant/qvariant.pro b/tests/auto/qvariant/qvariant.pro
deleted file mode 100644
index 468b7724c2..0000000000
--- a/tests/auto/qvariant/qvariant.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qvariant.cpp
-QT += network
-
-CONFIG+=insignificant_test
diff --git a/tests/auto/qvolatileimage/qvolatileimage.pro b/tests/auto/qvolatileimage/qvolatileimage.pro
deleted file mode 100644
index 4be93896c4..0000000000
--- a/tests/auto/qvolatileimage/qvolatileimage.pro
+++ /dev/null
@@ -1,10 +0,0 @@
-load(qttest_p4)
-
-QT += gui-private
-
-SOURCES += tst_qvolatileimage.cpp
-
-symbian {
- TARGET.EPOCHEAPSIZE = 0x200000 0x800000
- LIBS += -lfbscli
-}
diff --git a/tests/auto/qwidget/qwidget.pro b/tests/auto/qwidget/qwidget.pro
index 0cd4a70e99..df0fdec006 100644
--- a/tests/auto/qwidget/qwidget.pro
+++ b/tests/auto/qwidget/qwidget.pro
@@ -1,6 +1,6 @@
load(qttest_p4)
-QT += core-private gui-private
+QT += widgets core-private gui-private widgets-private
SOURCES += tst_qwidget.cpp
RESOURCES = qwidget.qrc
diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index eb110a246e..99b069487f 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -65,12 +65,13 @@
#include <qdockwidget.h>
#include <qtoolbar.h>
#include <QtGui/qpaintengine.h>
-#include <private/qbackingstore_p.h>
+#include <QtGui/qbackingstore.h>
+#include <QtGui/qguiapplication.h>
#include <qmenubar.h>
#include <qtableview.h>
-#include <QtGui/QGraphicsView>
-#include <QtGui/QGraphicsProxyWidget>
+#include <QtWidgets/QGraphicsView>
+#include <QtWidgets/QGraphicsProxyWidget>
#include "../../shared/util.h"
@@ -102,6 +103,23 @@
#include <QtTest/QtTest>
+#if defined(Q_OS_WIN)
+# include <QtCore/qt_windows.h>
+# include <QtGui/private/qguiapplication_p.h>
+# include <QtGui/QPlatformNativeInterface>
+# include <QtGui/QPlatformIntegration>
+
+static HWND winHandleOf(const QWidget *w)
+{
+ static QPlatformNativeInterface *nativeInterface
+ = QGuiApplicationPrivate::instance()->platformIntegration()->nativeInterface();
+ if (void *handle = nativeInterface->nativeResourceForWindow("handle", w->window()->windowHandle()))
+ return reinterpret_cast<HWND>(handle);
+ qWarning() << "Cannot obtain native handle for " << w;
+ return 0;
+}
+#endif
+
#if defined(Q_WS_WIN)
# include <qt_windows.h>
# if !defined(Q_OS_WINCE)
@@ -211,10 +229,6 @@ private slots:
void restoreVersion1Geometry_data();
void restoreVersion1Geometry();
- void windowTitle();
- void windowModified();
- void windowIconText();
-
void widgetAt();
#ifdef Q_WS_MAC
void retainHIView();
@@ -322,7 +336,6 @@ private slots:
void updateGeometry();
void updateGeometry_data();
void sendUpdateRequestImmediately();
- void painterRedirection();
void doubleRepaint();
#ifndef Q_WS_MAC
void resizeInPaintEvent();
@@ -1245,7 +1258,7 @@ void tst_QWidget::visible_setWindowOpacity()
QVERIFY( !testWidget->isVisible() );
testWidget->setWindowOpacity(0.5);
#ifdef Q_OS_WIN
- QVERIFY(::IsWindowVisible(testWidget->winId()) == FALSE);
+ QVERIFY(::IsWindowVisible(winHandleOf(testWidget)) == FALSE);
#endif
testWidget->setWindowOpacity(1.0);
}
@@ -3234,28 +3247,22 @@ void tst_QWidget::widgetAt()
w2->lower();
qApp->processEvents();
- QTRY_VERIFY((wr = QApplication::widgetAt(100, 100)));
- const bool match = (wr->objectName() == QString("w1"));
+ QTRY_VERIFY((wr = QApplication::widgetAt(100, 100)) && wr->objectName() == QString("w1"));
w2->raise();
- QVERIFY(match);
qApp->processEvents();
- QTRY_VERIFY((wr = QApplication::widgetAt(100, 100)));
- QCOMPARE(wr->objectName(), QString("w2"));
-
+ QTRY_VERIFY((wr = QApplication::widgetAt(100, 100)) && wr->objectName() == QString("w2"));
QWidget *w3 = new QWidget(w2);
w3->setGeometry(10,10,50,50);
w3->setObjectName("w3");
w3->show();
qApp->processEvents();
- QTRY_VERIFY((wr = QApplication::widgetAt(100,100)));
- QCOMPARE(wr->objectName(), QString("w3"));
+ QTRY_VERIFY((wr = QApplication::widgetAt(100,100)) && wr->objectName() == QString("w3"));
w3->setAttribute(Qt::WA_TransparentForMouseEvents);
qApp->processEvents();
- QTRY_VERIFY((wr = QApplication::widgetAt(100, 100)));
- QCOMPARE(wr->objectName(), QString("w2"));
+ QTRY_VERIFY((wr = QApplication::widgetAt(100, 100)) && wr->objectName() == QString("w2"));
QRegion rgn = QRect(QPoint(0,0), w2->size());
QPoint point = w2->mapFromGlobal(QPoint(100,100));
@@ -3381,249 +3388,6 @@ static CAknContextPane* ContextPane()
}
#endif
-static QString visibleWindowTitle(QWidget *window, Qt::WindowState state = Qt::WindowNoState)
-{
- QString vTitle;
-
-#ifdef Q_WS_WIN
- Q_UNUSED(state);
- const size_t maxTitleLength = 256;
- wchar_t title[maxTitleLength];
- GetWindowText(window->winId(), title, maxTitleLength);
- vTitle = QString::fromWCharArray(title);
-#elif defined(Q_WS_X11)
- /*
- We can't check what the window manager displays, but we can
- check what we tell the window manager to display. This will
- have to do.
- */
- Atom UTF8_STRING = XInternAtom(window->x11Info().display(), "UTF8_STRING", false);
- Atom _NET_WM_NAME = XInternAtom(window->x11Info().display(), "_NET_WM_NAME", false);
- Atom _NET_WM_ICON_NAME = XInternAtom(window->x11Info().display(), "_NET_WM_ICON_NAME", false);
- uchar *data = 0;
- ulong length = 0;
- if (state == Qt::WindowMinimized) {
- if (getProperty(window->x11Info().display(), window->winId(),
- UTF8_STRING, _NET_WM_ICON_NAME, &data, &length)) {
- vTitle = QString::fromUtf8((char *) data, length);
- XFree(data);
- } else {
- XTextProperty text_prop;
- if (XGetWMIconName(window->x11Info().display(), window->winId(), &text_prop)) {
- vTitle = textPropertyToString(window->x11Info().display(), text_prop);
- XFree((char *) text_prop.value);
- }
- }
- } else {
- if (getProperty(window->x11Info().display(), window->winId(),
- UTF8_STRING, _NET_WM_NAME, &data, &length)) {
- vTitle = QString::fromUtf8((char *) data, length);
- XFree(data);
- } else {
- XTextProperty text_prop;
- if (XGetWMName(window->x11Info().display(), window->winId(), &text_prop)) {
- vTitle = textPropertyToString(window->x11Info().display(), text_prop);
- XFree((char *) text_prop.value);
- }
- }
- }
-#elif defined(Q_WS_MAC)
- vTitle = nativeWindowTitle(window, state);
-#elif defined(Q_WS_QWS)
- if (qwsServer) {
- const QWSWindow *win = 0;
- const QList<QWSWindow*> windows = qwsServer->clientWindows();
- for (int i = 0; i < windows.count(); ++i) {
- const QWSWindow* w = windows.at(i);
- if (w->winId() == window->winId()) {
- win = w;
- break;
- }
- }
- if (win)
- vTitle = win->caption();
- }
-#elif defined (Q_WS_S60)
- CAknTitlePane* titlePane = TitlePane();
- if(titlePane)
- {
- const TDesC* nTitle = titlePane->Text();
- vTitle = QString::fromUtf16(nTitle->Ptr(), nTitle->Length());
- }
-#endif
-
- return vTitle;
-}
-
-void tst_QWidget::windowTitle()
-{
- QWidget widget(0);
- widget.setWindowTitle("Application Name");
- widget.winId(); // Make sure the window is created...
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name"));
-
- widget.setWindowTitle("Application Name *");
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name *"));
-
- widget.setWindowTitle("Application Name[*]");
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name"));
-
- widget.setWindowTitle("Application Name[*][*]");
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name[*]"));
-
- widget.setWindowTitle("Application Name[*][*][*]");
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name[*]"));
-
- widget.setWindowTitle("Application Name[*][*][*][*]");
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name[*][*]"));
-}
-
-void tst_QWidget::windowIconText()
-{
-#ifdef Q_OS_SYMBIAN
- QSKIP("Symbian/S60 windows don't have window icon text", SkipAll);
-#endif
- QWidget widget(0);
-
- widget.setWindowTitle("Application Name");
- widget.setWindowIconText("Application Minimized");
- widget.showNormal();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name"));
- widget.showMinimized();
-#if defined(Q_WS_QWS) || defined(Q_OS_WINCE)
- QEXPECT_FAIL(0, "Qt/Embedded/WinCE does not implement showMinimized()", Continue);
- //See task 147193 for WinCE
-#endif
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget, Qt::WindowMinimized),
- QString("Application Minimized"));
-
- widget.setWindowTitle("Application Name[*]");
- widget.setWindowIconText("Application Minimized[*]");
- widget.showNormal();
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name"));
- widget.showMinimized();
-#if defined (Q_WS_QWS) || defined(Q_OS_WINCE)
- QEXPECT_FAIL(0, "Qt/Embedded/WinCE does not implement showMinimized()", Continue);
- //See task 147193 for WinCE
-#endif
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget, Qt::WindowMinimized),
- QString("Application Minimized"));
-
- widget.setWindowModified(true);
- widget.showNormal();
- QApplication::instance()->processEvents();
- if (widget.style()->styleHint(QStyle::SH_TitleBar_ModifyNotification, 0, &widget))
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name*"));
- else
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name"));
- widget.showMinimized();
-#if defined (Q_WS_QWS) || defined(Q_OS_WINCE)
- QEXPECT_FAIL(0, "Qt/Embedded/WinCE does not implement showMinimized()", Continue);
- //See task 147193 for WinCE
-#endif
- QApplication::instance()->processEvents();
-#ifdef Q_WS_MAC
- QCOMPARE(visibleWindowTitle(&widget, Qt::WindowMinimized),
- QString("Application Minimized"));
- QVERIFY(nativeWindowModified(&widget));
-#else
- QCOMPARE(visibleWindowTitle(&widget, Qt::WindowMinimized),
- QString("Application Minimized*"));
-#endif
-}
-
-void tst_QWidget::windowModified()
-{
- QWidget widget(0);
- widget.show();
- QTest::qWaitForWindowShown(&widget);
-#ifndef Q_WS_MAC
- QTest::ignoreMessage(QtWarningMsg, "QWidget::setWindowModified: The window title does not contain a '[*]' placeholder");
-#endif
- widget.setWindowTitle("Application Name");
- QTest::qWait(10);
- QTRY_COMPARE(visibleWindowTitle(&widget), QString("Application Name"));
-
-#ifdef Q_WS_MAC
- widget.setWindowModified(true);
- QVERIFY(nativeWindowModified(&widget));
-#else
- widget.setWindowModified(true);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name"));
-
- widget.setWindowModified(false);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name"));
-
- widget.setWindowTitle("Application Name[*]");
-
- widget.setWindowModified(true);
- QApplication::instance()->processEvents();
- if (widget.style()->styleHint(QStyle::SH_TitleBar_ModifyNotification, 0, &widget))
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name*"));
- else
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name"));
-
- widget.setWindowModified(false);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name"));
-
- widget.setWindowTitle("Application[*] Name[*]");
-
- widget.setWindowModified(true);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application* Name*"));
-
- widget.setWindowModified(false);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name"));
-
- widget.setWindowTitle("Application Name[*][*]");
-
- widget.setWindowModified(true);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name[*]"));
-
- widget.setWindowModified(false);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name[*]"));
-
- widget.setWindowTitle("Application[*][*] Name[*][*]");
-
- widget.setWindowModified(true);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application[*] Name[*]"));
-
- widget.setWindowModified(false);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application[*] Name[*]"));
-
- widget.setWindowTitle("Application[*] Name[*][*][*]");
-
- widget.setWindowModified(true);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application* Name[*]*"));
-
- widget.setWindowModified(false);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application Name[*]"));
-
- widget.setWindowTitle("Application[*][*][*] Name[*][*][*]");
-
- widget.setWindowModified(true);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application[*]* Name[*]*"));
-
- widget.setWindowModified(false);
- QApplication::instance()->processEvents();
- QCOMPARE(visibleWindowTitle(&widget), QString("Application[*] Name[*]"));
-#endif
-}
-
void tst_QWidget::task110173()
{
QWidget w;
@@ -5424,6 +5188,7 @@ void tst_QWidget::showAndMoveChild()
QDesktopWidget desktop;
QRect desktopDimensions = desktop.availableGeometry(&parent);
+ desktopDimensions = desktopDimensions.adjusted(64, 64, -64, -64);
parent.setGeometry(desktopDimensions);
parent.setPalette(Qt::red);
@@ -8046,64 +7811,6 @@ void tst_QWidget::sendUpdateRequestImmediately()
QCOMPARE(updateWidget.numUpdateRequestEvents, 1);
}
-class RedirectedWidget : public QWidget
-{
-protected:
- void paintEvent(QPaintEvent *)
- {
- // Verify that the widget has a redirection set. The widget is redirected to
- // the backing store on all platforms using it; otherwise to itself if the wrect
- // does not start in (0, 0) or it has a mask set.
- QPaintDevice *oldRedirection = QPainter::redirected(this);
-#ifndef Q_WS_MAC
- QVERIFY(oldRedirection);
-#endif
-
- QImage image(size(), QImage::Format_RGB32);
- image.fill(Qt::blue);
-
- {
- QPainter painter(this);
- QCOMPARE(painter.device(), static_cast<QPaintDevice *>(this));
- }
-
- QPainter::setRedirected(this, &image);
- QCOMPARE(QPainter::redirected(this), static_cast<QPaintDevice *>(&image));
-
- QPainter painter(this);
- painter.fillRect(rect(), Qt::red);
-
- QPainter::restoreRedirected(this);
- QCOMPARE(QPainter::redirected(this), oldRedirection);
-
- for (int i = 0; i < image.height(); ++i)
- for (int j = 0; j < image.width(); ++j)
- QCOMPARE(image.pixel(j, i), QColor(Qt::red).rgb());
- }
-
-};
-
-// Test to make sure we're compatible in the particular case where QPainter::setRedirected
-// actually works. It has been broken for all other cases since Qt 4.1.4 (backing store).
-// QWidget::render is the modern and more powerful way of doing the same.
-void tst_QWidget::painterRedirection()
-{
- RedirectedWidget widget;
- // Set FramelessWindowHint and mask to trigger internal painter redirection on the Mac.
- widget.setWindowFlags(widget.windowFlags() | Qt::FramelessWindowHint);
- widget.setMask(QRect(10, 10, 50, 50));
- widget.setFixedSize(100, 200);
- widget.show();
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&widget);
-#endif
- QPixmap pixmap(widget.size());
- QPainter::setRedirected(&widget, &pixmap, QPoint());
- widget.repaint();
- QCOMPARE(QPainter::redirected(&widget), static_cast<QPaintDevice *>(&pixmap));
-}
-
-
void tst_QWidget::doubleRepaint()
{
#ifdef Q_OS_IRIX
@@ -9392,7 +9099,7 @@ void tst_QWidget::destroyBackingStore()
QTRY_VERIFY(w.numPaintEvents > 0);
w.reset();
w.update();
- qt_widget_private(&w)->topData()->backingStore.create(&w);
+ qt_widget_private(&w)->topData()->backingStoreTracker.create(&w);
w.update();
QApplication::processEvents();
@@ -9416,7 +9123,7 @@ QWidgetBackingStore* backingStore(QWidget &widget)
QWidgetBackingStore *backingStore = 0;
#ifdef QT_BUILD_INTERNAL
if (QTLWExtra *topExtra = qt_widget_private(&widget)->maybeTopData())
- backingStore = topExtra->backingStore.data();
+ backingStore = topExtra->backingStoreTracker.data();
#endif
return backingStore;
}
@@ -10251,12 +9958,12 @@ class scrollWidgetWBS : public QWidget
public:
void deleteBackingStore()
{
- static_cast<QWidgetPrivate*>(d_ptr.data())->topData()->backingStore.destroy();
+ static_cast<QWidgetPrivate*>(d_ptr.data())->topData()->backingStoreTracker.destroy();
}
void enableBackingStore()
{
if (!static_cast<QWidgetPrivate*>(d_ptr.data())->maybeBackingStore()) {
- static_cast<QWidgetPrivate*>(d_ptr.data())->topData()->backingStore.create(this);
+ static_cast<QWidgetPrivate*>(d_ptr.data())->topData()->backingStoreTracker.create(this);
static_cast<QWidgetPrivate*>(d_ptr.data())->invalidateBuffer(this->rect());
repaint();
}
@@ -10487,18 +10194,26 @@ void tst_QWidget::nativeChildFocus()
QLineEdit *p2 = new QLineEdit;
layout->addWidget(p1);
layout->addWidget(p2);
+#if 1
p1->setObjectName("p1");
p2->setObjectName("p2");
+#endif
w.show();
+#if 1
w.activateWindow();
p1->setFocus();
p1->setAttribute(Qt::WA_NativeWindow);
p2->setAttribute(Qt::WA_NativeWindow);
QApplication::processEvents();
QTest::qWaitForWindowShown(&w);
+ QTest::qWait(10);
+ qDebug() << "checking active window:" << QApplication::activeWindow();
QCOMPARE(QApplication::activeWindow(), &w);
QCOMPARE(QApplication::focusWidget(), static_cast<QWidget*>(p1));
+#endif
+
+ QTest::qWait(1000);
}
QTEST_MAIN(tst_QWidget)
diff --git a/tests/auto/qwidget_window/qwidget_window.pro b/tests/auto/qwidget_window/qwidget_window.pro
index df7d68739b..dd5837012c 100644
--- a/tests/auto/qwidget_window/qwidget_window.pro
+++ b/tests/auto/qwidget_window/qwidget_window.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qwidget_window.cpp
x11 {
diff --git a/tests/auto/qwidgetaction/qwidgetaction.pro b/tests/auto/qwidgetaction/qwidgetaction.pro
index cc80e58fe3..3e037c2efb 100644
--- a/tests/auto/qwidgetaction/qwidgetaction.pro
+++ b/tests/auto/qwidgetaction/qwidgetaction.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qwidgetaction.cpp
diff --git a/tests/auto/qwindow/qwindow.pro b/tests/auto/qwindow/qwindow.pro
new file mode 100644
index 0000000000..560945322c
--- /dev/null
+++ b/tests/auto/qwindow/qwindow.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+
+QT += core-private gui-private
+
+SOURCES += tst_qwindow.cpp
+
diff --git a/tests/auto/qwindow/tst_qwindow.cpp b/tests/auto/qwindow/tst_qwindow.cpp
new file mode 100644
index 0000000000..77e3d5f88c
--- /dev/null
+++ b/tests/auto/qwindow/tst_qwindow.cpp
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qwindow.h>
+#include <qtest.h>
+
+class tst_QWindow: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void mapGlobal();
+};
+
+
+void tst_QWindow::mapGlobal()
+{
+ QWindow a;
+ QWindow b(&a);
+ QWindow c(&b);
+
+ a.setGeometry(10, 10, 300, 300);
+ b.setGeometry(20, 20, 200, 200);
+ c.setGeometry(40, 40, 100, 100);
+
+ QCOMPARE(a.mapToGlobal(QPoint(100, 100)), QPoint(110, 110));
+ QCOMPARE(b.mapToGlobal(QPoint(100, 100)), QPoint(130, 130));
+ QCOMPARE(c.mapToGlobal(QPoint(100, 100)), QPoint(170, 170));
+
+ QCOMPARE(a.mapFromGlobal(QPoint(100, 100)), QPoint(90, 90));
+ QCOMPARE(b.mapFromGlobal(QPoint(100, 100)), QPoint(70, 70));
+ QCOMPARE(c.mapFromGlobal(QPoint(100, 100)), QPoint(30, 30));
+}
+
+#include <tst_qwindow.moc>
+QTEST_MAIN(tst_QWindow);
diff --git a/tests/auto/qwindowsurface/qwindowsurface.pro b/tests/auto/qwindowsurface/qwindowsurface.pro
index f236793b91..f1e8bf6070 100644
--- a/tests/auto/qwindowsurface/qwindowsurface.pro
+++ b/tests/auto/qwindowsurface/qwindowsurface.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets widgets-private
QT += gui-private
SOURCES += tst_qwindowsurface.cpp
diff --git a/tests/auto/qwindowsurface/tst_qwindowsurface.cpp b/tests/auto/qwindowsurface/tst_qwindowsurface.cpp
index 5810ec3580..11348e9162 100644
--- a/tests/auto/qwindowsurface/tst_qwindowsurface.cpp
+++ b/tests/auto/qwindowsurface/tst_qwindowsurface.cpp
@@ -45,7 +45,7 @@
#include <QPalette>
#include <QWindowsStyle>
-#ifndef Q_WS_MAC
+#if !defined(Q_WS_MAC) && QT_VERSION < 0x050000 // Fixme Qt 5
#include <private/qwindowsurface_p.h>
#include <QDesktopWidget>
diff --git a/tests/auto/qwineventnotifier/qwineventnotifier.pro b/tests/auto/qwineventnotifier/qwineventnotifier.pro
deleted file mode 100644
index 62da3a33ea..0000000000
--- a/tests/auto/qwineventnotifier/qwineventnotifier.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qwineventnotifier.cpp
-QT = core
-CONFIG += parallel_test
diff --git a/tests/auto/qwizard/qwizard.pro b/tests/auto/qwizard/qwizard.pro
index a22e45cf19..6d508470c7 100644
--- a/tests/auto/qwizard/qwizard.pro
+++ b/tests/auto/qwizard/qwizard.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qwizard.cpp
#SOURCES += /home/jasmin/dev/solutions/widgets/qtwizard/src/qtwizard.cpp
#HEADERS += /home/jasmin/dev/solutions/widgets/qtwizard/src/qtwizard.h
diff --git a/tests/auto/qworkspace/qworkspace.pro b/tests/auto/qworkspace/qworkspace.pro
index de4d29a229..0b8a604fe8 100644
--- a/tests/auto/qworkspace/qworkspace.pro
+++ b/tests/auto/qworkspace/qworkspace.pro
@@ -1,2 +1,3 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qworkspace.cpp
diff --git a/tests/auto/qwsembedwidget/qwsembedwidget.pro b/tests/auto/qwsembedwidget/qwsembedwidget.pro
index c34212b06a..640b52d384 100644
--- a/tests/auto/qwsembedwidget/qwsembedwidget.pro
+++ b/tests/auto/qwsembedwidget/qwsembedwidget.pro
@@ -1,2 +1,3 @@
load(qttest_p4)
+QT += widgets
SOURCES += tst_qwsembedwidget.cpp
diff --git a/tests/auto/qzip/qzip.pro b/tests/auto/qzip/qzip.pro
deleted file mode 100644
index 683da62e37..0000000000
--- a/tests/auto/qzip/qzip.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qzip.cpp
-
-wince*|symbian: {
- addFiles.files = testdata
- addFiles.path = .
- DEPLOYMENT += addFiles
- !symbian:DEFINES += SRCDIR=\\\".\\\"
-} else {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
-}
diff --git a/tests/auto/selftests/test/test.pro b/tests/auto/selftests/test/test.pro
deleted file mode 100644
index f0e0f7593c..0000000000
--- a/tests/auto/selftests/test/test.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-load(qttest_p4)
-SOURCES += ../tst_selftests.cpp
-QT += core xml testlib-private
-
-TARGET = ../tst_selftests
-
-win32 {
- CONFIG(debug, debug|release) {
- TARGET = ../../debug/tst_selftests
-} else {
- TARGET = ../../release/tst_selftests
- }
-}
-
-RESOURCES += ../selftests.qrc
-
-
diff --git a/tests/auto/sql.pro b/tests/auto/sql.pro
deleted file mode 100644
index 7cfd137ae7..0000000000
--- a/tests/auto/sql.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-TEMPLATE=subdirs
-SUBDIRS=\
- qsql \
- qsqldatabase \
- qsqldriver \
- qsqlerror \
- qsqlfield \
- qsqlquery \
- qsqlquerymodel \
- qsqlrecord \
- qsqlrelationaltablemodel \
- qsqltablemodel \
- qsqlthread \
-
diff --git a/tests/auto/sql/kernel/kernel.pro b/tests/auto/sql/kernel/kernel.pro
new file mode 100644
index 0000000000..579c31a01f
--- /dev/null
+++ b/tests/auto/sql/kernel/kernel.pro
@@ -0,0 +1,11 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qsqlfield \
+ qsqldatabase \
+ qsqlerror \
+ qsqldriver \
+ qsqlquery \
+ qsqlrecord \
+ qsqlthread \
+ qsql \
+
diff --git a/tests/auto/qsql/.gitignore b/tests/auto/sql/kernel/qsql/.gitignore
index b1e335be74..b1e335be74 100644
--- a/tests/auto/qsql/.gitignore
+++ b/tests/auto/sql/kernel/qsql/.gitignore
diff --git a/tests/auto/sql/kernel/qsql/qsql.pro b/tests/auto/sql/kernel/qsql/qsql.pro
new file mode 100644
index 0000000000..3357e762dc
--- /dev/null
+++ b/tests/auto/sql/kernel/qsql/qsql.pro
@@ -0,0 +1,18 @@
+load(qttest_p4)
+SOURCES += tst_qsql.cpp
+
+QT += sql sql-private gui widgets
+
+wince*: {
+ DEPLOYMENT_PLUGIN += qsqlite
+}
+
+symbian {
+ qt_not_deployed {
+ contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
+ sqlite.path = /sys/bin
+ sqlite.files = sqlite3.dll
+ DEPLOYMENT += sqlite
+ }
+ }
+}
diff --git a/tests/auto/sql/kernel/qsql/tst_qsql.cpp b/tests/auto/sql/kernel/qsql/tst_qsql.cpp
new file mode 100644
index 0000000000..453eb44daa
--- /dev/null
+++ b/tests/auto/sql/kernel/qsql/tst_qsql.cpp
@@ -0,0 +1,277 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qguiapplication.h>
+#include <qsqldatabase.h>
+#include <qsqlerror.h>
+#include <qsqlquery.h>
+#include <qsqlrecord.h>
+#include <qsql.h>
+#include <qsqlresult.h>
+#include <qsqldriver.h>
+#include <qdebug.h>
+#include <private/qsqlnulldriver_p.h>
+
+#include "../qsqldatabase/tst_databases.h"
+
+//TESTED_FILES=
+
+class tst_QSql : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QSql();
+ virtual ~tst_QSql();
+
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void open();
+ void openInvalid();
+ void registerSqlDriver();
+
+ // problem specific tests
+ void openErrorRecovery();
+ void concurrentAccess();
+ void basicDriverTest();
+};
+
+/****************** General Qt SQL Module tests *****************/
+
+tst_QSql::tst_QSql()
+{
+}
+
+tst_QSql::~tst_QSql()
+{
+}
+
+void tst_QSql::initTestCase()
+{
+}
+
+void tst_QSql::cleanupTestCase()
+{
+}
+
+void tst_QSql::init()
+{
+}
+
+void tst_QSql::cleanup()
+{
+}
+
+
+// this is a very basic test for drivers that cannot create/delete tables
+// it can be used while developing new drivers,
+// it's original purpose is to test ODBC Text datasources that are basically
+// to stupid to do anything more advanced than SELECT/INSERT/UPDATE/DELETE
+// the datasource has to have a table called "qtest_basictest" consisting
+// of a field "id"(integer) and "name"(char/varchar).
+void tst_QSql::basicDriverTest()
+{
+ int argc = 0;
+ QGuiApplication app( argc, 0, false );
+ tst_Databases dbs;
+ dbs.open();
+
+ foreach( const QString& dbName, dbs.dbNames )
+ {
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ QVERIFY_SQL( db, isValid() );
+
+ QStringList tables = db.tables();
+ QString tableName;
+
+ if ( tables.contains( "qtest_basictest.txt" ) )
+ tableName = "qtest_basictest.txt";
+ else if ( tables.contains( "qtest_basictest" ) )
+ tableName = "qtest_basictest";
+ else if ( tables.contains( "QTEST_BASICTEST" ) )
+ tableName = "QTEST_BASICTEST";
+ else {
+ QVERIFY( 1 );
+ continue;
+ }
+
+ qDebug("Testing: %s", qPrintable(tst_Databases::dbToString( db )));
+
+ QSqlRecord rInf = db.record( tableName );
+ QCOMPARE( rInf.count(), 2 );
+ QCOMPARE( rInf.fieldName( 0 ).toLower(), QString( "id" ) );
+ QCOMPARE( rInf.fieldName( 1 ).toLower(), QString( "name" ) );
+ }
+
+ dbs.close();
+ QVERIFY( 1 ); // make sure the test doesn't fail if no database drivers are there
+}
+
+// make sure that the static stuff will be deleted
+// when using multiple QApplication objects
+void tst_QSql::open()
+{
+ int i;
+ int argc = 0;
+ int count = -1;
+ for ( i = 0; i < 10; ++i ) {
+
+ QApplication app( argc, 0, false );
+ tst_Databases dbs;
+
+ dbs.open();
+ if ( count == -1 )
+ // first iteration: see how many dbs are open
+ count = (int) dbs.dbNames.count();
+ else
+ // next iterations: make sure all are opened again
+ QCOMPARE( count, (int)dbs.dbNames.count() );
+ dbs.close();
+ }
+}
+
+void tst_QSql::openInvalid()
+{
+ QSqlDatabase db;
+ QVERIFY(!db.open());
+
+ QSqlDatabase db2 = QSqlDatabase::addDatabase("doesnt_exist_will_never_exist", "blah");
+ QFAIL_SQL(db2, open());
+}
+
+void tst_QSql::concurrentAccess()
+{
+ int argc = 0;
+ QGuiApplication app( argc, 0, false );
+ tst_Databases dbs;
+
+ dbs.open();
+ foreach ( const QString& dbName, dbs.dbNames ) {
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ QVERIFY( db.isValid() );
+ if (tst_Databases::isMSAccess(db))
+ continue;
+
+ QSqlDatabase ndb = QSqlDatabase::addDatabase( db.driverName(), "tst_QSql::concurrentAccess" );
+ ndb.setDatabaseName( db.databaseName() );
+ ndb.setHostName( db.hostName() );
+ ndb.setPort( db.port() );
+ ndb.setUserName( db.userName() );
+ ndb.setPassword( db.password() );
+ QVERIFY_SQL( ndb, open() );
+
+ QCOMPARE( db.tables(), ndb.tables() );
+ }
+ // no database servers installed - don't fail
+ QVERIFY(1);
+ dbs.close();
+}
+
+void tst_QSql::openErrorRecovery()
+{
+ int argc = 0;
+ QGuiApplication app( argc, 0, false );
+ tst_Databases dbs;
+
+ dbs.addDbs();
+ if (dbs.dbNames.isEmpty())
+ QSKIP("No database drivers installed", SkipAll);
+ foreach ( const QString& dbName, dbs.dbNames ) {
+ QSqlDatabase db = QSqlDatabase::database( dbName, false );
+ CHECK_DATABASE( db );
+
+ QString userName = db.userName();
+ QString password = db.password();
+
+ // force an open error
+ if ( db.open( "dummy130977", "doesnt_exist" ) ) {
+ qDebug("Promiscuous database server without access control - test skipped for %s",
+ qPrintable(tst_Databases::dbToString( db )) );
+ QVERIFY(1);
+ continue;
+ }
+
+ QFAIL_SQL( db, isOpen() );
+ QVERIFY_SQL( db, isOpenError() );
+
+ // now open it
+ if ( !db.open( userName, password ) ) {
+ qDebug() << "Could not open Database " << tst_Databases::dbToString( db ) <<
+ ". Assuming DB is down, skipping... (Error: " <<
+ tst_Databases::printError( db.lastError() ) << ")";
+ continue;
+ }
+ QVERIFY_SQL( db, open( userName, password ) );
+ QVERIFY_SQL( db, isOpen() );
+ QFAIL_SQL( db, isOpenError() );
+ db.close();
+ QFAIL_SQL( db, isOpen() );
+
+ // force another open error
+ QFAIL_SQL( db, open( "dummy130977", "doesnt_exist" ) );
+ QFAIL_SQL( db, isOpen() );
+ QVERIFY_SQL( db, isOpenError() );
+ }
+}
+
+void tst_QSql::registerSqlDriver()
+{
+ int argc = 0;
+ QGuiApplication app( argc, 0, false );
+
+ QSqlDatabase::registerSqlDriver( "QSQLTESTDRIVER", new QSqlDriverCreator<QSqlNullDriver> );
+ QVERIFY( QSqlDatabase::drivers().contains( "QSQLTESTDRIVER" ) );
+
+ QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLTESTDRIVER" );
+ QVERIFY( db.isValid() );
+
+ QCOMPARE( db.tables(), QStringList() );
+}
+
+QTEST_APPLESS_MAIN(tst_QSql)
+#include "tst_qsql.moc"
diff --git a/tests/auto/qsqldatabase/.gitignore b/tests/auto/sql/kernel/qsqldatabase/.gitignore
index 1dfa12b8d4..1dfa12b8d4 100644
--- a/tests/auto/qsqldatabase/.gitignore
+++ b/tests/auto/sql/kernel/qsqldatabase/.gitignore
diff --git a/tests/auto/qsqldatabase/qsqldatabase.pro b/tests/auto/sql/kernel/qsqldatabase/qsqldatabase.pro
index ee78b79c36..ee78b79c36 100644
--- a/tests/auto/qsqldatabase/qsqldatabase.pro
+++ b/tests/auto/sql/kernel/qsqldatabase/qsqldatabase.pro
diff --git a/tests/auto/qsqldatabase/testdata/qtest.mdb b/tests/auto/sql/kernel/qsqldatabase/testdata/qtest.mdb
index f388f192ac..f388f192ac 100755
--- a/tests/auto/qsqldatabase/testdata/qtest.mdb
+++ b/tests/auto/sql/kernel/qsqldatabase/testdata/qtest.mdb
Binary files differ
diff --git a/tests/auto/qsqldatabase/tst_databases.h b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
index 497f5a49df..497f5a49df 100644
--- a/tests/auto/qsqldatabase/tst_databases.h
+++ b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
diff --git a/tests/auto/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
index 85ec28a671..85ec28a671 100644
--- a/tests/auto/qsqldatabase/tst_qsqldatabase.cpp
+++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
diff --git a/tests/auto/qsqldriver/qsqldriver.pro b/tests/auto/sql/kernel/qsqldriver/qsqldriver.pro
index c02d74a527..c02d74a527 100644
--- a/tests/auto/qsqldriver/qsqldriver.pro
+++ b/tests/auto/sql/kernel/qsqldriver/qsqldriver.pro
diff --git a/tests/auto/qsqldriver/tst_qsqldriver.cpp b/tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp
index 6e47c24078..6e47c24078 100644
--- a/tests/auto/qsqldriver/tst_qsqldriver.cpp
+++ b/tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp
diff --git a/tests/auto/qsqlerror/.gitignore b/tests/auto/sql/kernel/qsqlerror/.gitignore
index 08997ebd99..08997ebd99 100644
--- a/tests/auto/qsqlerror/.gitignore
+++ b/tests/auto/sql/kernel/qsqlerror/.gitignore
diff --git a/tests/auto/qsqlerror/qsqlerror.pro b/tests/auto/sql/kernel/qsqlerror/qsqlerror.pro
index ebf6d24381..ebf6d24381 100644
--- a/tests/auto/qsqlerror/qsqlerror.pro
+++ b/tests/auto/sql/kernel/qsqlerror/qsqlerror.pro
diff --git a/tests/auto/qsqlerror/tst_qsqlerror.cpp b/tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp
index d02b373c73..d02b373c73 100644
--- a/tests/auto/qsqlerror/tst_qsqlerror.cpp
+++ b/tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp
diff --git a/tests/auto/qsqlfield/.gitignore b/tests/auto/sql/kernel/qsqlfield/.gitignore
index 441ff77ec0..441ff77ec0 100644
--- a/tests/auto/qsqlfield/.gitignore
+++ b/tests/auto/sql/kernel/qsqlfield/.gitignore
diff --git a/tests/auto/qsqlfield/qsqlfield.pro b/tests/auto/sql/kernel/qsqlfield/qsqlfield.pro
index 2359151f13..2359151f13 100644
--- a/tests/auto/qsqlfield/qsqlfield.pro
+++ b/tests/auto/sql/kernel/qsqlfield/qsqlfield.pro
diff --git a/tests/auto/qsqlfield/tst_qsqlfield.cpp b/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp
index 63f320151f..63f320151f 100644
--- a/tests/auto/qsqlfield/tst_qsqlfield.cpp
+++ b/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp
diff --git a/tests/auto/qsqlquery/.gitignore b/tests/auto/sql/kernel/qsqlquery/.gitignore
index e8aefc3e00..e8aefc3e00 100644
--- a/tests/auto/qsqlquery/.gitignore
+++ b/tests/auto/sql/kernel/qsqlquery/.gitignore
diff --git a/tests/auto/qsqlquery/qsqlquery.pro b/tests/auto/sql/kernel/qsqlquery/qsqlquery.pro
index fbcc998900..fbcc998900 100644
--- a/tests/auto/qsqlquery/qsqlquery.pro
+++ b/tests/auto/sql/kernel/qsqlquery/qsqlquery.pro
diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
index dc0c86d6f4..dc0c86d6f4 100644
--- a/tests/auto/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
diff --git a/tests/auto/qsqlrecord/.gitignore b/tests/auto/sql/kernel/qsqlrecord/.gitignore
index 0235188129..0235188129 100644
--- a/tests/auto/qsqlrecord/.gitignore
+++ b/tests/auto/sql/kernel/qsqlrecord/.gitignore
diff --git a/tests/auto/qsqlrecord/qsqlrecord.pro b/tests/auto/sql/kernel/qsqlrecord/qsqlrecord.pro
index 16e3ae4f80..16e3ae4f80 100644
--- a/tests/auto/qsqlrecord/qsqlrecord.pro
+++ b/tests/auto/sql/kernel/qsqlrecord/qsqlrecord.pro
diff --git a/tests/auto/qsqlrecord/tst_qsqlrecord.cpp b/tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp
index c84e39fb2a..c84e39fb2a 100644
--- a/tests/auto/qsqlrecord/tst_qsqlrecord.cpp
+++ b/tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp
diff --git a/tests/auto/qsqlthread/.gitignore b/tests/auto/sql/kernel/qsqlthread/.gitignore
index 4108739f86..4108739f86 100644
--- a/tests/auto/qsqlthread/.gitignore
+++ b/tests/auto/sql/kernel/qsqlthread/.gitignore
diff --git a/tests/auto/qsqlthread/qsqlthread.pro b/tests/auto/sql/kernel/qsqlthread/qsqlthread.pro
index 2e4c72ac92..2e4c72ac92 100644
--- a/tests/auto/qsqlthread/qsqlthread.pro
+++ b/tests/auto/sql/kernel/qsqlthread/qsqlthread.pro
diff --git a/tests/auto/qsqlthread/tst_qsqlthread.cpp b/tests/auto/sql/kernel/qsqlthread/tst_qsqlthread.cpp
index d39b69151c..d39b69151c 100644
--- a/tests/auto/qsqlthread/tst_qsqlthread.cpp
+++ b/tests/auto/sql/kernel/qsqlthread/tst_qsqlthread.cpp
diff --git a/tests/auto/sql/models/models.pro b/tests/auto/sql/models/models.pro
new file mode 100644
index 0000000000..d04ba01710
--- /dev/null
+++ b/tests/auto/sql/models/models.pro
@@ -0,0 +1,6 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qsqlquerymodel \
+ qsqlrelationaltablemodel \
+ qsqltablemodel \
+
diff --git a/tests/auto/qsqlquerymodel/.gitignore b/tests/auto/sql/models/qsqlquerymodel/.gitignore
index e5ff8accf6..e5ff8accf6 100644
--- a/tests/auto/qsqlquerymodel/.gitignore
+++ b/tests/auto/sql/models/qsqlquerymodel/.gitignore
diff --git a/tests/auto/sql/models/qsqlquerymodel/qsqlquerymodel.pro b/tests/auto/sql/models/qsqlquerymodel/qsqlquerymodel.pro
new file mode 100644
index 0000000000..0664bae6e9
--- /dev/null
+++ b/tests/auto/sql/models/qsqlquerymodel/qsqlquerymodel.pro
@@ -0,0 +1,20 @@
+load(qttest_p4)
+SOURCES += tst_qsqlquerymodel.cpp
+
+QT += widgets sql
+
+wince*: {
+ DEPLOYMENT_PLUGIN += qsqlite
+ LIBS += -lws2
+}else:symbian {
+ qt_not_deployed {
+ contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
+ sqlite.path = /sys/bin
+ sqlite.files = sqlite3.dll
+ DEPLOYMENT += sqlite
+ }
+ }
+} else {
+ win32:LIBS += -lws2_32
+}
+
diff --git a/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp b/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp
new file mode 100644
index 0000000000..fabba48d7c
--- /dev/null
+++ b/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp
@@ -0,0 +1,641 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtGui>
+
+#include <qsqldriver.h>
+#include <qsqldatabase.h>
+#include <qsqlerror.h>
+#include <qsqlfield.h>
+#include <qsqlquery.h>
+#include <qsqlrecord.h>
+
+#include <qsqlquerymodel.h>
+#include <qsortfilterproxymodel.h>
+
+#include "../../kernel/qsqldatabase/tst_databases.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+Q_DECLARE_METATYPE(Qt::Orientation)
+
+class tst_QSqlQueryModel : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QSqlQueryModel();
+ virtual ~tst_QSqlQueryModel();
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void insertColumn_data() { generic_data(); }
+ void insertColumn();
+ void removeColumn_data() { generic_data(); }
+ void removeColumn();
+ void record_data() { generic_data(); }
+ void record();
+ void setHeaderData_data() { generic_data(); }
+ void setHeaderData();
+ void fetchMore_data() { generic_data(); }
+ void fetchMore();
+
+ //problem specific tests
+ void withSortFilterProxyModel_data() { generic_data(); }
+ void withSortFilterProxyModel();
+ void setQuerySignalEmission_data() { generic_data(); }
+ void setQuerySignalEmission();
+ void setQueryWithNoRowsInResultSet_data() { generic_data(); }
+ void setQueryWithNoRowsInResultSet();
+
+ void task_180617();
+ void task_180617_data() { generic_data(); }
+ void task_QTBUG_4963_setHeaderDataWithProxyModel();
+
+private:
+ void generic_data(const QString &engine=QString());
+ void dropTestTables(QSqlDatabase db);
+ void createTestTables(QSqlDatabase db);
+ void populateTestTables(QSqlDatabase db);
+ tst_Databases dbs;
+};
+
+/* Stupid class that makes protected members public for testing */
+class DBTestModel: public QSqlQueryModel
+{
+public:
+ DBTestModel(QObject *parent = 0): QSqlQueryModel(parent) {}
+ QModelIndex indexInQuery(const QModelIndex &item) const { return QSqlQueryModel::indexInQuery(item); }
+};
+
+tst_QSqlQueryModel::tst_QSqlQueryModel()
+{
+}
+
+tst_QSqlQueryModel::~tst_QSqlQueryModel()
+{
+}
+
+void tst_QSqlQueryModel::initTestCase()
+{
+ qRegisterMetaType<QModelIndex>("QModelIndex");
+ dbs.open();
+ for (QStringList::ConstIterator it = dbs.dbNames.begin(); it != dbs.dbNames.end(); ++it) {
+ QSqlDatabase db = QSqlDatabase::database((*it));
+ CHECK_DATABASE(db);
+ dropTestTables(db); //in case of leftovers
+ createTestTables(db);
+ populateTestTables(db);
+ }
+}
+
+void tst_QSqlQueryModel::cleanupTestCase()
+{
+ for (QStringList::ConstIterator it = dbs.dbNames.begin(); it != dbs.dbNames.end(); ++it) {
+ QSqlDatabase db = QSqlDatabase::database((*it));
+ CHECK_DATABASE(db);
+ dropTestTables(db);
+ }
+ dbs.close();
+}
+
+void tst_QSqlQueryModel::dropTestTables(QSqlDatabase db)
+{
+ QStringList tableNames;
+ tableNames << qTableName("test", __FILE__)
+ << qTableName("test2", __FILE__)
+ << qTableName("test3", __FILE__)
+ << qTableName("many", __FILE__);
+ tst_Databases::safeDropTables(db, tableNames);
+}
+
+void tst_QSqlQueryModel::createTestTables(QSqlDatabase db)
+{
+ dropTestTables(db);
+ QSqlQuery q(db);
+ if(tst_Databases::isPostgreSQL(db))
+ QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
+ QVERIFY_SQL( q, exec("create table " + qTableName("test", __FILE__) + "(id integer not null, name varchar(20), title integer, primary key (id))"));
+ QVERIFY_SQL( q, exec("create table " + qTableName("test2", __FILE__) + "(id integer not null, title varchar(20), primary key (id))"));
+ QVERIFY_SQL( q, exec("create table " + qTableName("test3", __FILE__) + "(id integer not null, primary key (id))"));
+ QVERIFY_SQL( q, exec("create table " + qTableName("many", __FILE__) + "(id integer not null, name varchar(20), primary key (id))"));
+}
+
+void tst_QSqlQueryModel::populateTestTables(QSqlDatabase db)
+{
+ qWarning() << "Populating test tables, this can take quite a while... ZZZzzz...";
+ bool hasTransactions = db.driver()->hasFeature(QSqlDriver::Transactions);
+
+ QSqlQuery q(db), q2(db);
+
+ tst_Databases::safeDropTables(db, QStringList() << qTableName("manytmp", __FILE__) << qTableName("test3tmp", __FILE__));
+ QVERIFY_SQL(q, exec("create table " + qTableName("manytmp", __FILE__) + "(id integer not null, name varchar(20), primary key (id))"));
+ QVERIFY_SQL(q, exec("create table " + qTableName("test3tmp", __FILE__) + "(id integer not null, primary key (id))"));
+
+ if (hasTransactions) QVERIFY_SQL(db, transaction());
+
+ QVERIFY_SQL(q, exec("insert into " + qTableName("test", __FILE__) + " values(1, 'harry', 1)"));
+ QVERIFY_SQL(q, exec("insert into " + qTableName("test", __FILE__) + " values(2, 'trond', 2)"));
+ QVERIFY_SQL(q, exec("insert into " + qTableName("test2", __FILE__) + " values(1, 'herr')"));
+ QVERIFY_SQL(q, exec("insert into " + qTableName("test2", __FILE__) + " values(2, 'mister')"));
+
+ QVERIFY_SQL(q, exec(QString("insert into " + qTableName("test3", __FILE__) + " values(0)")));
+ QVERIFY_SQL(q, prepare("insert into "+qTableName("test3", __FILE__)+"(id) select id + ? from "+qTableName("test3tmp", __FILE__)));
+ for (int i=1; i<260; i*=2) {
+ q2.exec("delete from "+qTableName("test3tmp", __FILE__));
+ QVERIFY_SQL(q2, exec("insert into "+qTableName("test3tmp", __FILE__)+"(id) select id from "+qTableName("test3", __FILE__)));
+ q.bindValue(0, i);
+ QVERIFY_SQL(q, exec());
+ }
+
+ QVERIFY_SQL(q, exec(QString("insert into " + qTableName("many", __FILE__) + "(id, name) values (0, \'harry\')")));
+ QVERIFY_SQL(q, prepare("insert into "+qTableName("many", __FILE__)+"(id, name) select id + ?, name from "+qTableName("manytmp", __FILE__)));
+ for (int i=1; i < 2048; i*=2) {
+ q2.exec("delete from "+qTableName("manytmp", __FILE__));
+ QVERIFY_SQL(q2, exec("insert into "+qTableName("manytmp", __FILE__)+"(id, name) select id, name from "+qTableName("many", __FILE__)));
+ q.bindValue(0, i);
+ QVERIFY_SQL(q, exec());
+ }
+
+ if (hasTransactions) QVERIFY_SQL(db, commit());
+
+ tst_Databases::safeDropTables(db, QStringList() << qTableName("manytmp", __FILE__) << qTableName("test3tmp", __FILE__));
+}
+
+void tst_QSqlQueryModel::generic_data(const QString& engine)
+{
+ if ( dbs.fillTestTable(engine) == 0 ) {
+ if(engine.isEmpty())
+ QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ else
+ QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
+ }
+}
+
+void tst_QSqlQueryModel::init()
+{
+}
+
+void tst_QSqlQueryModel::cleanup()
+{
+}
+
+void tst_QSqlQueryModel::removeColumn()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ DBTestModel model;
+ model.setQuery(QSqlQuery("select * from " + qTableName("test", __FILE__), db));
+ model.fetchMore();
+ QSignalSpy spy(&model, SIGNAL(columnsAboutToBeRemoved(QModelIndex, int, int)));
+
+ QCOMPARE(model.columnCount(), 3);
+ QVERIFY(model.removeColumn(0));
+ QCOMPARE(spy.count(), 1);
+ QVERIFY(*(QModelIndex *)spy.at(0).at(0).constData() == QModelIndex());
+ QCOMPARE(spy.at(0).at(1).toInt(), 0);
+ QCOMPARE(spy.at(0).at(2).toInt(), 0);
+
+ QCOMPARE(model.columnCount(), 2);
+ QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), 1);
+ QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), 2);
+ QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), -1);
+
+ QVERIFY(model.insertColumn(1));
+ QCOMPARE(model.columnCount(), 3);
+ QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), 1);
+ QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), 2);
+ QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), -1);
+
+ QCOMPARE(model.data(model.index(0, 0)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 1)), QVariant());
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 3)), QVariant());
+
+ QVERIFY(!model.removeColumn(42));
+ QVERIFY(!model.removeColumn(3));
+ QVERIFY(!model.removeColumn(1, model.index(1, 2)));
+ QCOMPARE(model.columnCount(), 3);
+
+ QVERIFY(model.removeColumn(2));
+
+ QCOMPARE(spy.count(), 2);
+ QVERIFY(*(QModelIndex *)spy.at(1).at(0).constData() == QModelIndex());
+ QCOMPARE(spy.at(1).at(1).toInt(), 2);
+ QCOMPARE(spy.at(1).at(2).toInt(), 2);
+
+ QCOMPARE(model.columnCount(), 2);
+ QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), 1);
+ QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), -1);
+
+ QVERIFY(model.removeColumn(1));
+
+ QCOMPARE(spy.count(), 3);
+ QVERIFY(*(QModelIndex *)spy.at(2).at(0).constData() == QModelIndex());
+ QCOMPARE(spy.at(2).at(1).toInt(), 1);
+ QCOMPARE(spy.at(2).at(2).toInt(), 1);
+
+ QCOMPARE(model.columnCount(), 1);
+ QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), 1);
+ QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), -1);
+ QCOMPARE(model.data(model.index(0, 0)).toString(), QString("harry"));
+
+ QVERIFY(model.removeColumn(0));
+
+ QCOMPARE(spy.count(), 4);
+ QVERIFY(*(QModelIndex *)spy.at(3).at(0).constData() == QModelIndex());
+ QCOMPARE(spy.at(3).at(1).toInt(), 0);
+ QCOMPARE(spy.at(3).at(2).toInt(), 0);
+
+ QCOMPARE(model.columnCount(), 0);
+ QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), -1);
+}
+
+void tst_QSqlQueryModel::insertColumn()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ DBTestModel model;
+ model.setQuery(QSqlQuery("select * from " + qTableName("test", __FILE__), db));
+ model.fetchMore(); // necessary???
+
+ bool isToUpper = db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2");
+ const QString idColumn(isToUpper ? "ID" : "id");
+ const QString nameColumn(isToUpper ? "NAME" : "name");
+ const QString titleColumn(isToUpper ? "TITLE" : "title");
+
+ QSignalSpy spy(&model, SIGNAL(columnsInserted(QModelIndex, int, int)));
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 3)), QVariant());
+
+ QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), idColumn);
+ QCOMPARE(model.headerData(1, Qt::Horizontal).toString(), nameColumn);
+ QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), titleColumn);
+ QCOMPARE(model.headerData(3, Qt::Horizontal).toString(), QString("4"));
+
+ QVERIFY(model.insertColumn(1));
+
+ QCOMPARE(spy.count(), 1);
+ QVERIFY(*(QModelIndex *)spy.at(0).at(0).constData() == QModelIndex());
+ QCOMPARE(spy.at(0).at(1).toInt(), 1);
+ QCOMPARE(spy.at(0).at(2).toInt(), 1);
+
+ QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), 0);
+ QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), 1);
+ QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), 2);
+ QCOMPARE(model.indexInQuery(model.index(0, 4)).column(), -1);
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)), QVariant());
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 4)), QVariant());
+
+ QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), idColumn);
+ QCOMPARE(model.headerData(1, Qt::Horizontal).toString(), QString("2"));
+ QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), nameColumn);
+ QCOMPARE(model.headerData(3, Qt::Horizontal).toString(), titleColumn);
+ QCOMPARE(model.headerData(4, Qt::Horizontal).toString(), QString("5"));
+
+ QVERIFY(!model.insertColumn(-1));
+ QVERIFY(!model.insertColumn(100));
+ QVERIFY(!model.insertColumn(1, model.index(1, 1)));
+
+ QVERIFY(model.insertColumn(0));
+
+ QCOMPARE(spy.count(), 2);
+ QVERIFY(*(QModelIndex *)spy.at(1).at(0).constData() == QModelIndex());
+ QCOMPARE(spy.at(1).at(1).toInt(), 0);
+ QCOMPARE(spy.at(1).at(2).toInt(), 0);
+
+ QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), 0);
+ QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), 1);
+ QCOMPARE(model.indexInQuery(model.index(0, 4)).column(), 2);
+ QCOMPARE(model.indexInQuery(model.index(0, 5)).column(), -1);
+
+ QVERIFY(!model.insertColumn(6));
+ QVERIFY(model.insertColumn(5));
+
+ QCOMPARE(spy.count(), 3);
+ QVERIFY(*(QModelIndex *)spy.at(2).at(0).constData() == QModelIndex());
+ QCOMPARE(spy.at(2).at(1).toInt(), 5);
+ QCOMPARE(spy.at(2).at(2).toInt(), 5);
+
+ QCOMPARE(model.indexInQuery(model.index(0, 0)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 1)).column(), 0);
+ QCOMPARE(model.indexInQuery(model.index(0, 2)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 3)).column(), 1);
+ QCOMPARE(model.indexInQuery(model.index(0, 4)).column(), 2);
+ QCOMPARE(model.indexInQuery(model.index(0, 5)).column(), -1);
+ QCOMPARE(model.indexInQuery(model.index(0, 6)).column(), -1);
+
+ QCOMPARE(model.record().field(0).name(), QString());
+ QCOMPARE(model.record().field(1).name(), idColumn);
+ QCOMPARE(model.record().field(2).name(), QString());
+ QCOMPARE(model.record().field(3).name(), nameColumn);
+ QCOMPARE(model.record().field(4).name(), titleColumn);
+ QCOMPARE(model.record().field(5).name(), QString());
+ QCOMPARE(model.record().field(6).name(), QString());
+
+ QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), QString("1"));
+ QCOMPARE(model.headerData(1, Qt::Horizontal).toString(), idColumn);
+ QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), QString("3"));
+ QCOMPARE(model.headerData(3, Qt::Horizontal).toString(), nameColumn);
+ QCOMPARE(model.headerData(4, Qt::Horizontal).toString(), titleColumn);
+ QCOMPARE(model.headerData(5, Qt::Horizontal).toString(), QString("6"));
+ QCOMPARE(model.headerData(6, Qt::Horizontal).toString(), QString("7"));
+}
+
+void tst_QSqlQueryModel::record()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlQueryModel model;
+ model.setQuery(QSqlQuery("select * from " + qTableName("test", __FILE__), db));
+
+ QSqlRecord rec = model.record();
+
+ bool isToUpper = db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2");
+
+ QCOMPARE(rec.count(), 3);
+ QCOMPARE(rec.fieldName(0), isToUpper ? QString("ID") : QString("id"));
+ QCOMPARE(rec.fieldName(1), isToUpper ? QString("NAME") : QString("name"));
+ QCOMPARE(rec.fieldName(2), isToUpper ? QString("TITLE") : QString("title"));
+ QCOMPARE(rec.value(0), QVariant(rec.field(0).type()));
+ QCOMPARE(rec.value(1), QVariant(rec.field(1).type()));
+ QCOMPARE(rec.value(2), QVariant(rec.field(2).type()));
+
+ rec = model.record(0);
+ QCOMPARE(rec.fieldName(0), isToUpper ? QString("ID") : QString("id"));
+ QCOMPARE(rec.fieldName(1), isToUpper ? QString("NAME") : QString("name"));
+ QCOMPARE(rec.fieldName(2), isToUpper ? QString("TITLE") : QString("title"));
+ QCOMPARE(rec.value(0).toString(), QString("1"));
+ QCOMPARE(rec.value(1), QVariant("harry"));
+ QCOMPARE(rec.value(2), QVariant(1));
+}
+
+void tst_QSqlQueryModel::setHeaderData()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlQueryModel model;
+
+ QVERIFY(!model.setHeaderData(5, Qt::Vertical, "foo"));
+ QVERIFY(model.headerData(5, Qt::Vertical).isValid());
+
+ model.setQuery(QSqlQuery("select * from " + qTableName("test", __FILE__), db));
+
+ qRegisterMetaType<Qt::Orientation>("Qt::Orientation");
+ QSignalSpy spy(&model, SIGNAL(headerDataChanged(Qt::Orientation, int, int)));
+ QVERIFY(model.setHeaderData(2, Qt::Horizontal, "bar"));
+ QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), QString("bar"));
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(qvariant_cast<Qt::Orientation>(spy.value(0).value(0)), Qt::Horizontal);
+ QCOMPARE(spy.value(0).value(1).toInt(), 2);
+ QCOMPARE(spy.value(0).value(2).toInt(), 2);
+
+ QVERIFY(!model.setHeaderData(7, Qt::Horizontal, "foo", Qt::ToolTipRole));
+ QVERIFY(!model.headerData(7, Qt::Horizontal, Qt::ToolTipRole).isValid());
+
+ bool isToUpper = db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2");
+ QCOMPARE(model.headerData(0, Qt::Horizontal).toString(), isToUpper ? QString("ID") : QString("id"));
+ QCOMPARE(model.headerData(1, Qt::Horizontal).toString(), isToUpper ? QString("NAME") : QString("name"));
+ QCOMPARE(model.headerData(2, Qt::Horizontal).toString(), QString("bar"));
+ QVERIFY(model.headerData(3, Qt::Horizontal).isValid());
+}
+
+void tst_QSqlQueryModel::fetchMore()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlQueryModel model;
+ QSignalSpy spy(&model, SIGNAL(rowsInserted(QModelIndex, int, int)));
+
+ model.setQuery(QSqlQuery("select * from " + qTableName("many", __FILE__), db));
+ int rowCount = model.rowCount();
+
+ QCOMPARE(spy.value(0).value(1).toInt(), 0);
+ QCOMPARE(spy.value(0).value(2).toInt(), rowCount - 1);
+
+ // If the driver doesn't return the query size fetchMore() causes the
+ // model to grow and new signals are emitted
+ if (!db.driver()->hasFeature(QSqlDriver::QuerySize)) {
+ spy.clear();
+ model.fetchMore();
+ int newRowCount = model.rowCount();
+ QCOMPARE(spy.value(0).value(1).toInt(), rowCount);
+ QCOMPARE(spy.value(0).value(2).toInt(), newRowCount - 1);
+ }
+}
+
+// For task 149491: When used with QSortFilterProxyModel, a view and a
+// database that doesn't support the QuerySize feature, blank rows was
+// appended if the query returned more than 256 rows and setQuery()
+// was called more than once. This because an insertion of rows was
+// triggered at the same time as the model was being cleared.
+void tst_QSqlQueryModel::withSortFilterProxyModel()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ if (db.driver()->hasFeature(QSqlDriver::QuerySize))
+ QSKIP("Test applies only for drivers not reporting the query size.", SkipSingle);
+
+ QSqlQueryModel model;
+ model.setQuery(QSqlQuery("SELECT * FROM " + qTableName("test3", __FILE__), db));
+ QSortFilterProxyModel proxy;
+ proxy.setSourceModel(&model);
+
+ QTableView view;
+ view.setModel(&proxy);
+
+ QSignalSpy modelRowsRemovedSpy(&model, SIGNAL(rowsRemoved(const QModelIndex &, int, int)));
+ QSignalSpy modelRowsInsertedSpy(&model, SIGNAL(rowsInserted(const QModelIndex &, int, int)));
+ model.setQuery(QSqlQuery("SELECT * FROM " + qTableName("test3", __FILE__), db));
+ view.scrollToBottom();
+
+ QTestEventLoop::instance().enterLoop(1);
+
+ QCOMPARE(proxy.rowCount(), 511);
+
+ // The second call to setQuery() clears the model by removing it's rows.
+ // Only 256 rows because that is what was cached.
+ QCOMPARE(modelRowsRemovedSpy.count(), 1);
+ QCOMPARE(modelRowsRemovedSpy.value(0).value(1).toInt(), 0);
+ QCOMPARE(modelRowsRemovedSpy.value(0).value(2).toInt(), 255);
+
+ // The call to scrollToBottom() forces the model to fetch all rows,
+ // which will be done in two steps.
+ QCOMPARE(modelRowsInsertedSpy.count(), 2);
+ QCOMPARE(modelRowsInsertedSpy.value(0).value(1).toInt(), 0);
+ QCOMPARE(modelRowsInsertedSpy.value(0).value(2).toInt(), 255);
+ QCOMPARE(modelRowsInsertedSpy.value(1).value(1).toInt(), 256);
+ QCOMPARE(modelRowsInsertedSpy.value(1).value(2).toInt(), 510);
+}
+
+// For task 155402: When the model is already empty when setQuery() is called
+// no rows have to be removed and rowsAboutToBeRemoved and rowsRemoved should
+// not be emitted.
+void tst_QSqlQueryModel::setQuerySignalEmission()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlQueryModel model;
+ QSignalSpy modelRowsAboutToBeRemovedSpy(&model, SIGNAL(rowsAboutToBeRemoved(const QModelIndex &, int, int)));
+ QSignalSpy modelRowsRemovedSpy(&model, SIGNAL(rowsRemoved(const QModelIndex &, int, int)));
+
+ // First select, the model was empty and no rows had to be removed!
+ model.setQuery(QSqlQuery("SELECT * FROM " + qTableName("test", __FILE__), db));
+ QCOMPARE(modelRowsAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(modelRowsRemovedSpy.count(), 0);
+
+ // Second select, the model wasn't empty and two rows had to be removed!
+ model.setQuery(QSqlQuery("SELECT * FROM " + qTableName("test", __FILE__), db));
+ QCOMPARE(modelRowsAboutToBeRemovedSpy.count(), 1);
+ QCOMPARE(modelRowsAboutToBeRemovedSpy.value(0).value(1).toInt(), 0);
+ QCOMPARE(modelRowsAboutToBeRemovedSpy.value(0).value(2).toInt(), 1);
+ QCOMPARE(modelRowsRemovedSpy.count(), 1);
+ QCOMPARE(modelRowsRemovedSpy.value(0).value(1).toInt(), 0);
+ QCOMPARE(modelRowsRemovedSpy.value(0).value(2).toInt(), 1);
+}
+
+// For task 170783: When the query's result set is empty no rows should be inserted,
+// i.e. no rowsAboutToBeInserted or rowsInserted signals should be emitted.
+void tst_QSqlQueryModel::setQueryWithNoRowsInResultSet()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlQueryModel model;
+ QSignalSpy modelRowsAboutToBeInsertedSpy(&model, SIGNAL(rowsAboutToBeInserted(const QModelIndex &, int, int)));
+ QSignalSpy modelRowsInsertedSpy(&model, SIGNAL(rowsInserted(const QModelIndex &, int, int)));
+
+ // The query's result set will be empty so no signals should be emitted!
+ QSqlQuery query(db);
+ QVERIFY_SQL(query, exec("SELECT * FROM " + qTableName("test", __FILE__) + " where 0 = 1"));
+ model.setQuery(query);
+ QCOMPARE(modelRowsAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(modelRowsInsertedSpy.count(), 0);
+}
+
+// For task 180617
+// According to the task, several specific duplicate SQL queries would cause
+// multiple empty grid lines to be visible in the view
+void tst_QSqlQueryModel::task_180617()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ const QString test3(qTableName("test3", __FILE__));
+
+ QTableView view;
+ QCOMPARE(view.columnAt(0), -1);
+ QCOMPARE(view.rowAt(0), -1);
+
+ QSqlQueryModel model;
+ model.setQuery( "SELECT TOP 0 * FROM " + test3, db );
+ view.setModel(&model);
+
+ bool error = false;
+ // Usually a syntax error
+ if (model.lastError().isValid()) // usually a syntax error
+ error = true;
+
+ QCOMPARE(view.columnAt(0), (error)?-1:0 );
+ QCOMPARE(view.rowAt(0), -1);
+
+ model.setQuery( "SELECT TOP 0 * FROM " + test3, db );
+ model.setQuery( "SELECT TOP 0 * FROM " + test3, db );
+ model.setQuery( "SELECT TOP 0 * FROM " + test3, db );
+ model.setQuery( "SELECT TOP 0 * FROM " + test3, db );
+
+ QCOMPARE(view.columnAt(0), (error)?-1:0 );
+ QCOMPARE(view.rowAt(0), -1);
+}
+
+void tst_QSqlQueryModel::task_QTBUG_4963_setHeaderDataWithProxyModel()
+{
+ QSqlQueryModel plainModel;
+ QSortFilterProxyModel proxyModel;
+ proxyModel.setSourceModel(&plainModel);
+ QVERIFY(!plainModel.setHeaderData(0, Qt::Horizontal, QObject::tr("ID")));
+ // And it should not crash.
+}
+
+QTEST_MAIN(tst_QSqlQueryModel)
+#include "tst_qsqlquerymodel.moc"
diff --git a/tests/auto/qsqlrelationaltablemodel/.gitignore b/tests/auto/sql/models/qsqlrelationaltablemodel/.gitignore
index b6f469c4dc..b6f469c4dc 100644
--- a/tests/auto/qsqlrelationaltablemodel/.gitignore
+++ b/tests/auto/sql/models/qsqlrelationaltablemodel/.gitignore
diff --git a/tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro b/tests/auto/sql/models/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro
index dad42d512c..dad42d512c 100644
--- a/tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro
+++ b/tests/auto/sql/models/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro
diff --git a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
new file mode 100644
index 0000000000..2c5af13c0c
--- /dev/null
+++ b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
@@ -0,0 +1,1494 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtSql/QtSql>
+
+#include "../../kernel/qsqldatabase/tst_databases.h"
+
+const QString reltest1(qTableName("reltest1", __FILE__)),
+ reltest2(qTableName("reltest2", __FILE__)),
+ reltest3(qTableName("reltest3", __FILE__)),
+ reltest4(qTableName("reltest4", __FILE__)),
+ reltest5(qTableName("reltest5", __FILE__));
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QSqlRelationalTableModel : public QObject
+{
+ Q_OBJECT
+
+public:
+ void recreateTestTables(QSqlDatabase);
+
+ tst_Databases dbs;
+
+public slots:
+ void initTestCase_data();
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void data();
+ void setData();
+ void multipleRelation();
+ void insertRecord();
+ void setRecord();
+ void insertWithStrategies();
+ void removeColumn();
+ void filter();
+ void sort();
+ void revert();
+
+ void clearDisplayValuesCache();
+ void insertRecordDuplicateFieldNames();
+ void invalidData();
+ void relationModel();
+ void casing();
+ void escapedRelations();
+ void escapedTableName();
+ void whiteSpaceInIdentifiers();
+ void psqlSchemaTest();
+ void selectAfterUpdate();
+
+private:
+ void dropTestTables( QSqlDatabase db );
+};
+
+
+void tst_QSqlRelationalTableModel::initTestCase_data()
+{
+ dbs.open();
+ if (dbs.fillTestTable() == 0) {
+ qWarning("NO DATABASES");
+ QSKIP("No database drivers are available in this Qt configuration", SkipAll);
+ }
+}
+
+void tst_QSqlRelationalTableModel::recreateTestTables(QSqlDatabase db)
+{
+ dropTestTables(db);
+
+ QSqlQuery q(db);
+ QVERIFY_SQL( q, exec("create table " + reltest1 +
+ " (id int not null primary key, name varchar(20), title_key int, another_title_key int)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(1, 'harry', 1, 2)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(2, 'trond', 2, 1)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(3, 'vohi', 1, 2)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(4, 'boris', 2, 2)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(5, 'nat', NULL, NULL)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest1 + " values(6, 'ale', NULL, 2)"));
+
+ QVERIFY_SQL( q, exec("create table " + reltest2 + " (tid int not null primary key, title varchar(20))"));
+ QVERIFY_SQL( q, exec("insert into " + reltest2 + " values(1, 'herr')"));
+ QVERIFY_SQL( q, exec("insert into " + reltest2 + " values(2, 'mister')"));
+
+ QVERIFY_SQL( q, exec("create table " + reltest3 + " (id int not null primary key, name varchar(20), city_key int)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest3 + " values(1, 'Gustav', 1)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest3 + " values(2, 'Heidi', 2)"));
+
+ QVERIFY_SQL( q, exec("create table " + reltest4 + " (id int not null primary key, name varchar(20))"));
+ QVERIFY_SQL( q, exec("insert into " + reltest4 + " values(1, 'Oslo')"));
+ QVERIFY_SQL( q, exec("insert into " + reltest4 + " values(2, 'Trondheim')"));
+
+ QVERIFY_SQL( q, exec("create table " + reltest5 + " (title varchar(20) not null primary key, abbrev varchar(20))"));
+ QVERIFY_SQL( q, exec("insert into " + reltest5 + " values('herr', 'Hr')"));
+ QVERIFY_SQL( q, exec("insert into " + reltest5 + " values('mister', 'Mr')"));
+
+ if (testWhiteSpaceNames(db.driverName())) {
+ QString reltest6 = db.driver()->escapeIdentifier(qTableName("rel", __FILE__)+" test6", QSqlDriver::TableName);
+ QVERIFY_SQL( q, exec("create table " + reltest6 + " (id int not null primary key, " + db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName) +
+ " int, " + db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName) + " int)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(1, 1,9)"));
+ QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(2, 2,8)"));
+
+ QString reltest7 = db.driver()->escapeIdentifier(qTableName("rel", __FILE__)+" test7", QSqlDriver::TableName);
+ QVERIFY_SQL( q, exec("create table " + reltest7 + " (" + db.driver()->escapeIdentifier("city id", QSqlDriver::TableName) + " int not null primary key, " + db.driver()->escapeIdentifier("city name", QSqlDriver::FieldName) + " varchar(20))"));
+ QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(1, 'New York')"));
+ QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(2, 'Washington')"));
+ }
+}
+
+void tst_QSqlRelationalTableModel::initTestCase()
+{
+ foreach (const QString &dbname, dbs.dbNames) {
+ QSqlDatabase db=QSqlDatabase::database(dbname);
+ if (db.driverName().startsWith("QIBASE"))
+ db.exec("SET DIALECT 3");
+ else if (tst_Databases::isSqlServer(db)) {
+ db.exec("SET ANSI_DEFAULTS ON");
+ db.exec("SET IMPLICIT_TRANSACTIONS OFF");
+ }
+ else if(tst_Databases::isPostgreSQL(db))
+ db.exec("set client_min_messages='warning'");
+ recreateTestTables(db);
+ }
+}
+
+void tst_QSqlRelationalTableModel::cleanupTestCase()
+{
+ foreach (const QString &dbName, dbs.dbNames) {
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE( db );
+ dropTestTables( QSqlDatabase::database(dbName) );
+ }
+ dbs.close();
+}
+
+void tst_QSqlRelationalTableModel::dropTestTables( QSqlDatabase db )
+{
+ QStringList tableNames;
+ tableNames << reltest1
+ << reltest2
+ << reltest3
+ << reltest4
+ << reltest5
+ << (qTableName( "rel", __FILE__)+" test6")
+ << (qTableName( "rel", __FILE__)+" test7")
+ << qTableName("CASETEST1", db.driver() )
+ << qTableName("casetest1", db.driver() );
+ tst_Databases::safeDropTables( db, tableNames );
+
+ db.exec("DROP SCHEMA "+qTableName("QTBUG_5373", __FILE__)+" CASCADE");
+ db.exec("DROP SCHEMA "+qTableName("QTBUG_5373_s2", __FILE__)+" CASCADE");
+}
+
+void tst_QSqlRelationalTableModel::init()
+{
+}
+
+void tst_QSqlRelationalTableModel::cleanup()
+{
+}
+
+void tst_QSqlRelationalTableModel::data()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.columnCount(), 4);
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ //try a non-existent index
+ QVERIFY2(model.data(model.index(0,4)).isValid() == false,"Invalid index returned valid QVariant");
+
+ // check row with null relation: they are reported only in LeftJoin mode
+ QCOMPARE(model.rowCount(), 4);
+
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(4, 0)).toInt(), 5);
+ QCOMPARE(model.data(model.index(4, 1)).toString(), QString("nat"));
+ QVERIFY2(model.data(model.index(4, 2)).isValid() == true, "NULL relation reported with invalid QVariant");
+
+ //check data retrieval when relational key is a non-integer type
+ //in this case a string
+ QSqlRelationalTableModel model2(0,db);
+ model2.setTable(reltest2);
+ model2.setRelation(1, QSqlRelation(reltest5,"title","abbrev"));
+ QVERIFY_SQL(model2, select());
+
+ QCOMPARE(model2.data(model2.index(0, 1)).toString(), QString("Hr"));
+ QCOMPARE(model2.data(model2.index(1, 1)).toString(), QString("Mr"));
+}
+
+void tst_QSqlRelationalTableModel::setData()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ // set the values using OnRowChange Strategy
+ {
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setSort(0, Qt::AscendingOrder);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+
+ QVERIFY(model.setData(model.index(0, 1), QString("harry2")));
+ QVERIFY(model.setData(model.index(0, 2), 2));
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+
+ model.submit();
+
+ QVERIFY(model.setData(model.index(3,1), QString("boris2")));
+ QVERIFY(model.setData(model.index(3, 2), 1));
+
+ QCOMPARE(model.data(model.index(3,1)).toString(), QString("boris2"));
+ QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
+
+ model.submit();
+ }
+ { //verify values
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest1);
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 2);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
+ QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
+
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
+
+ }
+
+ //set the values using OnFieldChange strategy
+ {
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest1);
+ model.setEditStrategy(QSqlTableModel::OnFieldChange);
+ model.setSort(0, Qt::AscendingOrder);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+
+ QVERIFY(model.setData(model.index(1,1), QString("trond2")));
+ QVERIFY(model.setData(model.index(2,2), 2));
+
+ QCOMPARE(model.data(model.index(1,1)).toString(), QString("trond2"));
+ QCOMPARE(model.data(model.index(2,2)).toString(), QString("mister"));
+ }
+ { //verify values
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest1);
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond2"));
+ QCOMPARE(model.data(model.index(2, 2)).toInt(), 2);
+
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.data(model.index(2, 2)).toString(), QString("mister"));
+ }
+
+ //set values using OnManualSubmit strategy
+ {
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+
+ //sybase doesn't allow tables with the same alias used twice as col names
+ //so don't set up an identical relation when using the tds driver
+ if (!db.driverName().startsWith("QTDS"))
+ model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
+
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QVERIFY(model.setData(model.index(2, 1), QString("vohi2")));
+ QVERIFY(model.setData(model.index(3, 2), 1));
+ QVERIFY(model.setData(model.index(0, 3), 1));
+
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi2"));
+ QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
+
+ QVERIFY_SQL(model, submitAll());
+ }
+ { //verify values
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest1);
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi2"));
+ QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
+
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ if (!db.driverName().startsWith("QTDS"))
+ model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
+
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
+ }
+
+ //check setting of data when the relational key is a non-integer type
+ //in this case a string.
+ {
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest2);
+ model.setRelation(1, QSqlRelation(reltest5, "title", "abbrev"));
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("Hr"));
+ QVERIFY(model.setData(model.index(0,1), QString("mister")));
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("Mr"));
+ QVERIFY_SQL(model, submitAll());
+
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("Mr"));
+ }
+
+ // Redo same tests, with a LeftJoin
+ {
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest2);
+ model.setRelation(1, QSqlRelation(reltest5, "title", "abbrev"));
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("Mr"));
+ QVERIFY(model.setData(model.index(0,1), QString("herr")));
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("Hr"));
+ QVERIFY_SQL(model, submitAll());
+
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("Hr"));
+ }
+
+}
+
+void tst_QSqlRelationalTableModel::multipleRelation()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ recreateTestTables(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("Trondheim"));
+
+ // Redo same test in the LeftJoin mode
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
+ model.setSort(0, Qt::AscendingOrder);
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("Trondheim"));
+}
+
+void tst_QSqlRelationalTableModel::insertRecord()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QSqlRecord rec;
+ QSqlField f1("id", QVariant::Int);
+ QSqlField f2("name", QVariant::String);
+ QSqlField f3("title_key", QVariant::Int);
+ QSqlField f4("another_title_key", QVariant::Int);
+
+ f1.setValue(7);
+ f2.setValue("test");
+ f3.setValue(1);
+ f4.setValue(2);
+
+ f1.setGenerated(true);
+ f2.setGenerated(true);
+ f3.setGenerated(true);
+ f4.setGenerated(true);
+
+ rec.append(f1);
+ rec.append(f2);
+ rec.append(f3);
+ rec.append(f4);
+
+ QVERIFY_SQL(model, insertRecord(-1, rec));
+
+ QCOMPARE(model.data(model.index(4, 0)).toInt(), 7);
+ QCOMPARE(model.data(model.index(4, 1)).toString(), QString("test"));
+ QCOMPARE(model.data(model.index(4, 2)).toString(), QString("herr"));
+
+ // In LeftJoin mode, two additional rows are fetched
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(6, 0)).toInt(), 7);
+ QCOMPARE(model.data(model.index(6, 1)).toString(), QString("test"));
+ QCOMPARE(model.data(model.index(6, 2)).toString(), QString("herr"));
+}
+
+void tst_QSqlRelationalTableModel::setRecord()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ recreateTestTables(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QSqlRecord rec;
+ QSqlField f1("id", QVariant::Int);
+ QSqlField f2("name", QVariant::String);
+ QSqlField f3("title_key", QVariant::Int);
+ QSqlField f4("another_title_key", QVariant::Int);
+
+ f1.setValue(7);
+ f2.setValue("tester");
+ f3.setValue(1);
+ f4.setValue(2);
+
+ f1.setGenerated(true);
+ f2.setGenerated(true);
+ f3.setGenerated(true);
+ f4.setGenerated(true);
+
+ rec.append(f1);
+ rec.append(f2);
+ rec.append(f3);
+ rec.append(f4);
+
+ QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(1, 2)).toString(), QString("mister"));
+
+ QVERIFY_SQL(model, setRecord(1, rec));
+
+ QCOMPARE(model.data(model.index(1, 0)).toInt(), 7);
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("tester"));
+ QCOMPARE(model.data(model.index(1, 2)).toString(), QString("herr"));
+
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, submit());
+
+ QCOMPARE(model.data(model.index(3, 0)).toInt(), 7);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("tester"));
+ QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
+
+}
+
+void tst_QSqlRelationalTableModel::insertWithStrategies()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ model.setSort(0, Qt::AscendingOrder);
+
+ if (!db.driverName().startsWith("QTDS"))
+ model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0,0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0,2)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
+ else
+ QCOMPARE(model.data(model.index(0,3)).toInt(), 2);
+
+ model.insertRows(0, 1);
+ model.setData(model.index(0, 0), 1011);
+ model.setData(model.index(0, 1), "test");
+ model.setData(model.index(0, 2), 2);
+ model.setData(model.index(0, 3), 1);
+
+ QCOMPARE(model.data(model.index(0,0)).toInt(), 1011);
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("test"));
+ QCOMPARE(model.data(model.index(0,2)).toString(), QString("mister"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0,3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(0,3)).toInt(), 1);
+
+ QCOMPARE(model.data(model.index(1,0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(1,1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1,2)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(1,3)).toString(), QString("mister"));
+ else
+ QCOMPARE(model.data(model.index(1,3)).toInt(), 2);
+
+
+
+ QVERIFY_SQL(model, submitAll());
+
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+
+ QCOMPARE(model.data(model.index(0,0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0,2)).toString(), QString("herr"));
+
+ if (!db.driverName().startsWith("QTDS")) {
+ QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
+ model.setData(model.index(0,3),1);
+ QCOMPARE(model.data(model.index(0,3)).toString(), QString("herr"));
+ } else {
+ QCOMPARE(model.data(model.index(0,3)).toInt(), 2);
+ model.setData(model.index(0,3),1);
+ QCOMPARE(model.data(model.index(0,3)).toInt(), 1);
+ }
+
+ model.insertRows(0, 2);
+ model.setData(model.index(0, 0), 1012);
+ model.setData(model.index(0, 1), "george");
+ model.setData(model.index(0, 2), 2);
+ model.setData(model.index(0, 3), 2);
+
+ model.setData(model.index(1, 0), 1013);
+ model.setData(model.index(1, 1), "kramer");
+ model.setData(model.index(1, 2), 2);
+ model.setData(model.index(1, 3), 1);
+
+ QCOMPARE(model.data(model.index(0,0)).toInt(),1012);
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("george"));
+ QCOMPARE(model.data(model.index(0,2)).toString(), QString("mister"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0,3)).toString(), QString("mister"));
+ else
+ QCOMPARE(model.data(model.index(0,3)).toInt(), 2);
+
+
+ QCOMPARE(model.data(model.index(1,0)).toInt(),1013);
+ QCOMPARE(model.data(model.index(1,1)).toString(), QString("kramer"));
+ QCOMPARE(model.data(model.index(1,2)).toString(), QString("mister"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(1,3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(1,3)).toInt(), 1);
+
+ QCOMPARE(model.data(model.index(2,0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(2,1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(2,2)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(2,3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(2,3)).toInt(), 1);
+
+ QVERIFY_SQL(model, submitAll());
+}
+
+void tst_QSqlRelationalTableModel::removeColumn()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ recreateTestTables(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+
+ QVERIFY_SQL(model, removeColumn(3));
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.columnCount(), 3);
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(0, 3)), QVariant());
+
+ // try removing more than one column
+ QVERIFY_SQL(model, removeColumns(1, 2));
+ QCOMPARE(model.columnCount(), 1);
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)), QVariant());
+
+ // try in LeftJoin mode the same tests
+ CHECK_DATABASE(db);
+ recreateTestTables(db);
+
+ QSqlRelationalTableModel lmodel(0, db);
+
+ lmodel.setTable(reltest1);
+ lmodel.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ lmodel.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(lmodel, select());
+
+ QVERIFY_SQL(lmodel, removeColumn(3));
+ QVERIFY_SQL(lmodel, select());
+
+ QCOMPARE(lmodel.columnCount(), 3);
+
+ QCOMPARE(lmodel.data(lmodel.index(0, 0)).toInt(), 1);
+ QCOMPARE(lmodel.data(lmodel.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(lmodel.data(lmodel.index(0, 2)).toString(), QString("herr"));
+ QCOMPARE(lmodel.data(lmodel.index(0, 3)), QVariant());
+
+ // try removing more than one column
+ QVERIFY_SQL(lmodel, removeColumns(1, 2));
+ QCOMPARE(lmodel.columnCount(), 1);
+ QCOMPARE(lmodel.data(lmodel.index(0, 0)).toInt(), 1);
+ QCOMPARE(lmodel.data(lmodel.index(0, 1)), QVariant());
+}
+
+void tst_QSqlRelationalTableModel::filter()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ recreateTestTables(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ model.setFilter("title = 'herr'");
+
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 2);
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(1, 2)).toString(), QString("herr"));
+
+ // Redo same filter test in LeftJoin mode
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model,select());
+
+ QCOMPARE(model.rowCount(), 2);
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(1, 2)).toString(), QString("herr"));
+}
+
+void tst_QSqlRelationalTableModel::sort()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ if (!db.driverName().startsWith("QTDS"))
+ model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
+
+ model.setSort(2, Qt::DescendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.rowCount(), 4);
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(1, 2)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(2, 2)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
+
+
+ model.setSort(3, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ if (!db.driverName().startsWith("QTDS")) {
+ QCOMPARE(model.rowCount(), 4);
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(1, 3)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(2, 3)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(3, 3)).toString(), QString("mister"));
+ } else {
+ QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
+ QCOMPARE(model.data(model.index(1, 3)).toInt(), 2);
+ QCOMPARE(model.data(model.index(2, 3)).toInt(), 2);
+ QCOMPARE(model.data(model.index(3, 3)).toInt(), 2);
+ }
+
+ // redo same test in LeftJoin mode
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ model.setSort(2, Qt::DescendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.rowCount(), 6);
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(1, 2)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(2, 2)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(4, 2)).toString(), QString(""));
+ QCOMPARE(model.data(model.index(5, 2)).toString(), QString(""));
+
+ model.setSort(3, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ if (!db.driverName().startsWith("QTDS")) {
+ QCOMPARE(model.rowCount(), 6);
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString(""));
+ QCOMPARE(model.data(model.index(1, 3)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(2, 3)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(3, 3)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(4, 3)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(5, 3)).toString(), QString("mister"));
+ } else {
+ QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
+ QCOMPARE(model.data(model.index(1, 3)).toInt(), 2);
+ QCOMPARE(model.data(model.index(2, 3)).toInt(), 2);
+ QCOMPARE(model.data(model.index(3, 3)).toInt(), 2);
+ }
+}
+
+static void testRevert(QSqlRelationalTableModel &model)
+{
+ /* revert single row */
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+ QVERIFY(model.setData(model.index(0, 2), 2, Qt::EditRole));
+
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+ model.revertRow(0);
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ /* revert all */
+ QVERIFY(model.setData(model.index(0, 2), 2, Qt::EditRole));
+
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+ model.revertAll();
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ // the following only works for OnManualSubmit
+ if (model.editStrategy() != QSqlTableModel::OnManualSubmit)
+ return;
+
+ /* revert inserted rows */
+ int initialRowCount = model.rowCount();
+ QVERIFY(model.insertRows(4, 4));
+ QVERIFY(model.rowCount() == (initialRowCount + 4));
+
+ /* make sure the new rows are initialized to nothing */
+ QVERIFY(model.data(model.index(4, 2)).toString().isEmpty());
+ QVERIFY(model.data(model.index(5, 2)).toString().isEmpty());
+ QVERIFY(model.data(model.index(6, 2)).toString().isEmpty());
+ QVERIFY(model.data(model.index(7, 2)).toString().isEmpty());
+
+ /* Set some values */
+ QVERIFY(model.setData(model.index(4, 0), 42, Qt::EditRole));
+ QVERIFY(model.setData(model.index(5, 0), 43, Qt::EditRole));
+ QVERIFY(model.setData(model.index(6, 0), 44, Qt::EditRole));
+ QVERIFY(model.setData(model.index(7, 0), 45, Qt::EditRole));
+
+ QVERIFY(model.setData(model.index(4, 2), 2, Qt::EditRole));
+ QVERIFY(model.setData(model.index(5, 2), 2, Qt::EditRole));
+ QVERIFY(model.setData(model.index(6, 2), 1, Qt::EditRole));
+ QVERIFY(model.setData(model.index(7, 2), 2, Qt::EditRole));
+
+ /* Now revert the newly inserted rows */
+ model.revertAll();
+ QVERIFY(model.rowCount() == initialRowCount);
+
+ /* Insert rows again */
+ QVERIFY(model.insertRows(4, 4));
+
+ /* make sure the new rows are initialized to nothing */
+ QVERIFY(model.data(model.index(4, 2)).toString().isEmpty());
+ QVERIFY(model.data(model.index(5, 2)).toString().isEmpty());
+ QVERIFY(model.data(model.index(6, 2)).toString().isEmpty());
+ QVERIFY(model.data(model.index(7, 2)).toString().isEmpty());
+}
+
+void tst_QSqlRelationalTableModel::revert()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
+
+ model.setSort(0, Qt::AscendingOrder);
+
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.data(model.index(0, 0)).toString(), QString("1"));
+
+ testRevert(model);
+ if (QTest::currentTestFailed())
+ return;
+
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+ testRevert(model);
+
+ /* and again with OnManualSubmit */
+ model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
+ QVERIFY_SQL(model, select());
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ testRevert(model);
+
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ testRevert(model);
+}
+
+void tst_QSqlRelationalTableModel::clearDisplayValuesCache()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+
+ if (!db.driverName().startsWith("QTDS"))
+ model.setRelation(3, QSqlRelation(reltest2, "tid", "title"));
+ model.setSort(1, Qt::AscendingOrder);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(3, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(3, 3)).toString(), QString("mister"));
+ else
+ QCOMPARE(model.data(model.index(3, 3)).toInt(), 2 );
+
+ model.insertRow(model.rowCount());
+ QVERIFY(model.setData(model.index(4, 0), 7, Qt::EditRole));
+ QVERIFY(model.setData(model.index(4, 1), "anders", Qt::EditRole));
+ QVERIFY(model.setData(model.index(4, 2), 1, Qt::EditRole));
+ QVERIFY(model.setData(model.index(4, 3), 1, Qt::EditRole));
+ model.submitAll();
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 7);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("anders"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("herr"));
+ else
+ QCOMPARE(model.data(model.index(0, 3)).toInt(), 1);
+
+ QCOMPARE(model.data(model.index(4, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(4, 2)).toString(), QString("herr"));
+ if (!db.driverName().startsWith("QTDS"))
+ QCOMPARE(model.data(model.index(4, 3)).toString(), QString("mister"));
+ else
+ QCOMPARE(model.data(model.index(4, 3)).toInt(), 2);
+}
+
+// For task 140782 and 176374: If the main table and the the related tables uses the same
+// name for a column or display column then insertRecord() would return true though it
+// actually failed.
+void tst_QSqlRelationalTableModel::insertRecordDuplicateFieldNames()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest3);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ model.setSort(0, Qt::AscendingOrder);
+
+ // Duplication of "name", used in both reltest3 and reltest4.
+ model.setRelation(2, QSqlRelation(reltest4, "id", "name"));
+ QVERIFY_SQL(model, select());
+
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ QCOMPARE(model.record(1).value((reltest4+QLatin1String("_name_2")).toUpper()).toString(),
+ QString("Trondheim"));
+ } else {
+ QCOMPARE(model.record(1).value((reltest4+QLatin1String("_name_2"))).toString(),
+ QString("Trondheim"));
+ }
+
+ QSqlRecord rec = model.record();
+ rec.setValue(0, 3);
+ rec.setValue(1, "Berge");
+ rec.setValue(2, 1); // Must insert the key value
+
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ QCOMPARE(rec.fieldName(0), QLatin1String("ID"));
+ QCOMPARE(rec.fieldName(1), QLatin1String("NAME")); // This comes from main table
+ } else {
+ QCOMPARE(rec.fieldName(0), QLatin1String("id"));
+ QCOMPARE(rec.fieldName(1), QLatin1String("name"));
+ }
+
+ // The duplicate field names is aliased because it's comes from the relation's display column.
+ if(db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2"))
+ QCOMPARE(rec.fieldName(2), (reltest4+QLatin1String("_name_2")).toUpper());
+ else
+ QCOMPARE(rec.fieldName(2), reltest4+QLatin1String("_name_2"));
+
+ QVERIFY(model.insertRecord(-1, rec));
+ QCOMPARE(model.data(model.index(2, 2)).toString(), QString("Oslo"));
+ QVERIFY(model.submitAll());
+ QCOMPARE(model.data(model.index(2, 2)).toString(), QString("Oslo"));
+}
+
+void tst_QSqlRelationalTableModel::invalidData()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+
+ //try set a non-existent relational key
+ QVERIFY(model.setData(model.index(0, 2), 3) == false);
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ //try to set data in non valid index
+ QVERIFY(model.setData(model.index(0,10),5) == false);
+
+ //same test with LeftJoin mode
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ //try set a non-existent relational key
+ QVERIFY(model.setData(model.index(0, 2), 3) == false);
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ //try to set data in non valid index
+ QVERIFY(model.setData(model.index(0,10),5) == false);
+}
+
+void tst_QSqlRelationalTableModel::relationModel()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+
+ QVERIFY(model.relationModel(0) == NULL);
+ QVERIFY(model.relationModel(1) == NULL);
+ QVERIFY(model.relationModel(2) != NULL);
+ QVERIFY(model.relationModel(3) == NULL);
+ QVERIFY(model.relationModel(4) == NULL);
+
+ model.setRelation(3, QSqlRelation(reltest4, "id", "name"));
+ QVERIFY_SQL(model, select());
+
+ QVERIFY(model.relationModel(0) == NULL);
+ QVERIFY(model.relationModel(1) == NULL);
+ QVERIFY(model.relationModel(2) != NULL);
+ QVERIFY(model.relationModel(3) != NULL);
+ QVERIFY(model.relationModel(4) == NULL);
+
+ QSqlTableModel *rel_model = model.relationModel(2);
+ QCOMPARE(rel_model->data(rel_model->index(0,1)).toString(), QString("herr"));
+
+ //same test in JoinMode
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QVERIFY(model.relationModel(0) == NULL);
+ QVERIFY(model.relationModel(1) == NULL);
+ QVERIFY(model.relationModel(2) != NULL);
+ QVERIFY(model.relationModel(3) != NULL);
+ QVERIFY(model.relationModel(4) == NULL);
+
+ QSqlTableModel *rel_model2 = model.relationModel(2);
+ QCOMPARE(rel_model2->data(rel_model->index(0,1)).toString(), QString("herr"));
+}
+
+void tst_QSqlRelationalTableModel::casing()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ if (db.driverName().startsWith("QSQLITE") || db.driverName().startsWith("QIBASE") || tst_Databases::isSqlServer(db))
+ QSKIP("The casing test for this database is irrelevant since this database does not treat different cases as separate entities", SkipAll);
+
+ QSqlQuery q(db);
+ QVERIFY_SQL( q, exec("create table " + qTableName("CASETEST1", db.driver()).toUpper() +
+ " (id int not null primary key, name varchar(20), title_key int, another_title_key int)"));
+
+ if( !q.exec("create table " + qTableName("casetest1", db.driver()) +
+ " (ident int not null primary key, name varchar(20), title_key int)"))
+ QSKIP("The casing test for this database is irrelevant since this database does not treat different cases as separate entities", SkipAll);
+
+ QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(1, 'harry', 1, 2)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(2, 'trond', 2, 1)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(3, 'vohi', 1, 2)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("CASETEST1", db.driver()).toUpper() + " values(4, 'boris', 2, 2)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("casetest1", db.driver()) + " values(1, 'jerry', 1)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("casetest1", db.driver()) + " values(2, 'george', 2)"));
+ QVERIFY_SQL( q, exec("insert into " + qTableName("casetest1", db.driver()) + " values(4, 'kramer', 2)"));
+
+ if (db.driverName().startsWith("QOCI")) {
+ //try an owner that doesn't exist
+ QSqlRecord rec = db.driver()->record("doug." + qTableName("CASETEST1", db.driver()).toUpper());
+ QCOMPARE( rec.count(), 0);
+
+ //try an owner that does exist
+ rec = db.driver()->record(db.userName() + "." + qTableName("CASETEST1", db.driver()).toUpper());
+ QCOMPARE( rec.count(), 4);
+ }
+ QSqlRecord rec = db.driver()->record(qTableName("CASETEST1", db.driver()).toUpper());
+ QCOMPARE( rec.count(), 4);
+
+ rec = db.driver()->record(qTableName("casetest1", db.driver()));
+ QCOMPARE( rec.count(), 3);
+
+ QSqlTableModel upperCaseModel(0, db);
+ upperCaseModel.setTable(qTableName("CASETEST1", db.driver()).toUpper());
+
+ QCOMPARE(upperCaseModel.tableName(),qTableName("CASETEST1",db.driver()).toUpper());
+
+ QVERIFY_SQL(upperCaseModel, select());
+
+ QCOMPARE(upperCaseModel.rowCount(), 4);
+
+ QSqlTableModel lowerCaseModel(0, db);
+ lowerCaseModel.setTable(qTableName("casetest1", db.driver()));
+ QCOMPARE(lowerCaseModel.tableName(), qTableName("casetest1",db.driver()));
+ QVERIFY_SQL(lowerCaseModel, select());
+
+ QCOMPARE(lowerCaseModel.rowCount(), 3);
+
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(qTableName("CASETEST1", db.driver()).toUpper());
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+}
+
+void tst_QSqlRelationalTableModel::escapedRelations()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ recreateTestTables(db);
+
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest1);
+
+ //try with relation table name quoted
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ model.setRelation(2, QSqlRelation(db.driver()->escapeIdentifier(reltest2.toUpper(),QSqlDriver::TableName),
+ "tid",
+ "title"));
+ } else {
+ model.setRelation(2, QSqlRelation(db.driver()->escapeIdentifier(reltest2,QSqlDriver::TableName),
+ "tid",
+ "title"));
+
+ }
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ //try with index column quoted
+ model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ model.setRelation(2, QSqlRelation(reltest2,
+ db.driver()->escapeIdentifier("tid", QSqlDriver::FieldName).toUpper(),
+ "title"));
+ } else {
+ model.setRelation(2, QSqlRelation(reltest2,
+ db.driver()->escapeIdentifier("tid", QSqlDriver::FieldName),
+ "title"));
+ }
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ //try with display column quoted
+ model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+
+ model.setRelation(2, QSqlRelation(reltest2,
+ "tid",
+ db.driver()->escapeIdentifier("title", QSqlDriver::FieldName).toUpper()));
+ } else {
+ model.setRelation(2, QSqlRelation(reltest2,
+ "tid",
+ db.driver()->escapeIdentifier("title", QSqlDriver::FieldName)));
+ }
+
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ //try with tablename and index and display columns quoted in the relation
+ model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ model.setRelation(2, QSqlRelation(reltest2,
+ "tid",
+ db.driver()->escapeIdentifier("title", QSqlDriver::FieldName).toUpper()));
+ } else {
+ model.setRelation(2, QSqlRelation(reltest2,
+ "tid",
+ db.driver()->escapeIdentifier("title", QSqlDriver::FieldName)));
+ }
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
+}
+
+void tst_QSqlRelationalTableModel::escapedTableName()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ // set the values using OnRowChange Strategy with an escaped tablename
+ {
+ QSqlRelationalTableModel model(0, db);
+
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ model.setTable(db.driver()->escapeIdentifier(reltest1.toUpper(), QSqlDriver::TableName));
+ } else {
+ model.setTable(db.driver()->escapeIdentifier(reltest1, QSqlDriver::TableName));
+ }
+ model.setSort(0, Qt::AscendingOrder);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+
+ QVERIFY(model.setData(model.index(0, 1), QString("harry2")));
+ QVERIFY(model.setData(model.index(0, 2), 2));
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+
+ model.submit();
+
+ QVERIFY(model.setData(model.index(3,1), QString("boris2")));
+ QVERIFY(model.setData(model.index(3, 2), 1));
+
+ QCOMPARE(model.data(model.index(3,1)).toString(), QString("boris2"));
+ QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
+
+ model.submit();
+ }
+ { //verify values
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest1);
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 2);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
+ QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
+
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
+
+ }
+
+ //ok, now do same test with LeftJoin
+ {
+ QSqlRelationalTableModel model(0, db);
+
+ if (db.driverName().startsWith("QIBASE") || db.driverName().startsWith("QOCI") || db.driverName().startsWith("QDB2")) {
+ model.setTable(db.driver()->escapeIdentifier(reltest1.toUpper(), QSqlDriver::TableName));
+ } else {
+ model.setTable(db.driver()->escapeIdentifier(reltest1, QSqlDriver::TableName));
+ }
+ model.setSort(0, Qt::AscendingOrder);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QVERIFY(model.setData(model.index(0, 1), QString("harry2")));
+ QVERIFY(model.setData(model.index(0, 2), 2));
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+
+ model.submit();
+
+ QVERIFY(model.setData(model.index(3,1), QString("boris2")));
+ QVERIFY(model.setData(model.index(3, 2), 1));
+
+ QCOMPARE(model.data(model.index(3,1)).toString(), QString("boris2"));
+ QCOMPARE(model.data(model.index(3, 2)).toString(), QString("herr"));
+
+ model.submit();
+ }
+ { //verify values
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest1);
+ model.setSort(0, Qt::AscendingOrder);
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 2);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("boris2"));
+ QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
+
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("mister"));
+ QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
+
+ }
+}
+
+void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ if (!testWhiteSpaceNames(db.driverName()))
+ QSKIP("White space test irrelevant for driver", SkipAll);
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(db.driver()->escapeIdentifier(qTableName("rel", __FILE__)+" test6", QSqlDriver::TableName));
+ model.setSort(0, Qt::DescendingOrder);
+ model.setRelation(1, QSqlRelation(db.driver()->escapeIdentifier(qTableName("rel", __FILE__)+" test7", QSqlDriver::TableName),
+ db.driver()->escapeIdentifier("city id", QSqlDriver::FieldName),
+ db.driver()->escapeIdentifier("city name", QSqlDriver::FieldName)));
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("Washington"));
+ QCOMPARE(model.data(model.index(1,1)).toString(), QString("New York"));
+
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0,1)).toString(), QString("Washington"));
+ QCOMPARE(model.data(model.index(1,1)).toString(), QString("New York"));
+
+ model.setJoinMode(QSqlRelationalTableModel::InnerJoin);
+ QVERIFY_SQL(model, select());
+
+ QSqlRecord rec;
+ QSqlField f1("id", QVariant::Int);
+ QSqlField f2(db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName), QVariant::Int);
+ QSqlField f3(db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName), QVariant::Int);
+
+ f1.setValue(3);
+ f2.setValue(2);
+ f3.setValue(7);
+
+ f1.setGenerated(true);
+ f2.setGenerated(true);
+ f3.setGenerated(true);
+
+ rec.append(f1);
+ rec.append(f2);
+ rec.append(f3);
+
+ QVERIFY_SQL(model, insertRecord(-1, rec));
+ model.submitAll();
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("Washington"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 7);
+
+ //TODO: For some reson setting a record using manual submit fails
+ //model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+
+ QSqlRecord recNew;
+ QSqlField f1New("id", QVariant::Int);
+ QSqlField f2New(db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName), QVariant::Int);
+ QSqlField f3New(db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName), QVariant::Int);
+
+ f1New.setValue(4);
+ f2New.setValue(1);
+ f3New.setValue(6);
+
+ f1New.setGenerated(true);
+ f2New.setGenerated(true);
+ f3New.setGenerated(true);
+
+ recNew.append(f1New);
+ recNew.append(f2New);
+ recNew.append(f3New);
+
+ QVERIFY_SQL(model, setRecord(0, recNew));
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 4);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("New York"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 6);
+
+ QVERIFY_SQL(model, submitAll());
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 4);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("New York"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 6);
+}
+
+void tst_QSqlRelationalTableModel::psqlSchemaTest()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ if(!tst_Databases::isPostgreSQL(db)) {
+ QSKIP("Postgresql specific test", SkipSingle);
+ return;
+ }
+ QSqlRelationalTableModel model(0, db);
+ QSqlQuery q(db);
+ QVERIFY_SQL(q, exec("create schema "+qTableName("QTBUG_5373", __FILE__)));
+ QVERIFY_SQL(q, exec("create schema "+qTableName("QTBUG_5373_s2", __FILE__)));
+ QVERIFY_SQL(q, exec("create table "+qTableName("QTBUG_5373", __FILE__)+"."+qTableName("document", __FILE__)+"(document_id int primary key, relatingid int, userid int)"));
+ QVERIFY_SQL(q, exec("create table "+qTableName("QTBUG_5373_s2", __FILE__)+"."+qTableName("user", __FILE__)+"(userid int primary key, username char(40))"));
+ model.setTable(qTableName("QTBUG_5373", __FILE__)+"."+qTableName("document", __FILE__));
+ model.setRelation(1, QSqlRelation(qTableName("QTBUG_5373_s2", __FILE__)+"."+qTableName("user", __FILE__), "userid", "username"));
+ model.setRelation(2, QSqlRelation(qTableName("QTBUG_5373_s2", __FILE__)+"."+qTableName("user", __FILE__), "userid", "username"));
+ QVERIFY_SQL(model, select());
+
+ model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
+ QVERIFY_SQL(model, select());
+}
+
+void tst_QSqlRelationalTableModel::selectAfterUpdate()
+{
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest1);
+ model.setRelation(2, QSqlRelation(reltest2, "tid", "title"));
+ QVERIFY_SQL(model, select());
+ QVERIFY(model.relationModel(2)->rowCount() == 2);
+ {
+ QSqlQuery q(db);
+ QVERIFY_SQL(q, exec("insert into " + reltest2 + " values(3, 'mrs')"));
+ model.relationModel(2)->select();
+ }
+ QVERIFY(model.relationModel(2)->rowCount() == 3);
+ QVERIFY(model.setData(model.index(0,2), 3));
+ QVERIFY(model.submitAll());
+ QCOMPARE(model.data(model.index(0,2)), QVariant("mrs"));
+}
+
+QTEST_MAIN(tst_QSqlRelationalTableModel)
+#include "tst_qsqlrelationaltablemodel.moc"
diff --git a/tests/auto/qsqltablemodel/.gitignore b/tests/auto/sql/models/qsqltablemodel/.gitignore
index 460982f59c..460982f59c 100644
--- a/tests/auto/qsqltablemodel/.gitignore
+++ b/tests/auto/sql/models/qsqltablemodel/.gitignore
diff --git a/tests/auto/qsqltablemodel/qsqltablemodel.pro b/tests/auto/sql/models/qsqltablemodel/qsqltablemodel.pro
index e49020f0a6..e49020f0a6 100644
--- a/tests/auto/qsqltablemodel/qsqltablemodel.pro
+++ b/tests/auto/sql/models/qsqltablemodel/qsqltablemodel.pro
diff --git a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
new file mode 100644
index 0000000000..07efd4a3a1
--- /dev/null
+++ b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
@@ -0,0 +1,1377 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include "../../kernel/qsqldatabase/tst_databases.h"
+#include <QtSql>
+
+const QString test(qTableName("test", __FILE__)),
+ test2(qTableName("test2", __FILE__)),
+ test3(qTableName("test3", __FILE__));
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+Q_DECLARE_METATYPE(QModelIndex)
+
+class tst_QSqlTableModel : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QSqlTableModel();
+ virtual ~tst_QSqlTableModel();
+
+
+ void dropTestTables();
+ void createTestTables();
+ void recreateTestTables();
+ void repopulateTestTables();
+
+ tst_Databases dbs;
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+
+ void select_data() { generic_data(); }
+ void select();
+ void insertColumns_data() { generic_data_with_strategies(); }
+ void insertColumns();
+ void submitAll_data() { generic_data(); }
+ void submitAll();
+ void setRecord_data() { generic_data(); }
+ void setRecord();
+ void insertRow_data() { generic_data_with_strategies(); }
+ void insertRow();
+ void insertRecord_data() { generic_data(); }
+ void insertRecord();
+ void insertMultiRecords_data() { generic_data(); }
+ void insertMultiRecords();
+ void removeRow_data() { generic_data(); }
+ void removeRow();
+ void removeRows_data() { generic_data(); }
+ void removeRows();
+ void removeInsertedRow_data() { generic_data_with_strategies(); }
+ void removeInsertedRow();
+ void removeInsertedRows_data() { generic_data(); }
+ void removeInsertedRows();
+ void setFilter_data() { generic_data(); }
+ void setFilter();
+ void setInvalidFilter_data() { generic_data(); }
+ void setInvalidFilter();
+
+ void emptyTable_data() { generic_data(); }
+ void emptyTable();
+ void tablesAndSchemas_data() { generic_data("QPSQL"); }
+ void tablesAndSchemas();
+ void whitespaceInIdentifiers_data() { generic_data(); }
+ void whitespaceInIdentifiers();
+ void primaryKeyOrder_data() { generic_data("QSQLITE"); }
+ void primaryKeyOrder();
+
+ void sqlite_bigTable_data() { generic_data("QSQLITE"); }
+ void sqlite_bigTable();
+
+ // bug specific tests
+ void insertRecordBeforeSelect_data() { generic_data(); }
+ void insertRecordBeforeSelect();
+ void submitAllOnInvalidTable_data() { generic_data(); }
+ void submitAllOnInvalidTable();
+ void insertRecordsInLoop_data() { generic_data(); }
+ void insertRecordsInLoop();
+ void sqlite_attachedDatabase_data() { generic_data("QSQLITE"); }
+ void sqlite_attachedDatabase(); // For task 130799
+ void tableModifyWithBlank_data() { generic_data(); }
+ void tableModifyWithBlank(); // For mail task
+
+ void removeColumnAndRow_data() { generic_data(); }
+ void removeColumnAndRow(); // task 256032
+
+ void insertBeforeDelete_data() { generic_data(); }
+ void insertBeforeDelete();
+private:
+ void generic_data(const QString& engine=QString());
+ void generic_data_with_strategies(const QString& engine=QString());
+};
+
+tst_QSqlTableModel::tst_QSqlTableModel()
+{
+ qRegisterMetaType<QModelIndex>("QModelIndex");
+ dbs.open();
+}
+
+tst_QSqlTableModel::~tst_QSqlTableModel()
+{
+}
+
+void tst_QSqlTableModel::dropTestTables()
+{
+ for (int i = 0; i < dbs.dbNames.count(); ++i) {
+ QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i));
+ QSqlQuery q(db);
+ if(tst_Databases::isPostgreSQL(db))
+ QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
+
+ QStringList tableNames;
+ tableNames << test
+ << test2
+ << test3
+ << qTableName("test4", __FILE__)
+ << qTableName("emptytable", __FILE__)
+ << qTableName("bigtable", __FILE__)
+ << qTableName("foo", __FILE__);
+ if (testWhiteSpaceNames(db.driverName()))
+ tableNames << qTableName("qtestw hitespace", db.driver());
+
+ tst_Databases::safeDropTables(db, tableNames);
+
+ if (db.driverName().startsWith("QPSQL")) {
+ q.exec("DROP SCHEMA " + qTableName("testschema", __FILE__) + " CASCADE");
+ }
+ }
+}
+
+void tst_QSqlTableModel::createTestTables()
+{
+ for (int i = 0; i < dbs.dbNames.count(); ++i) {
+ QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i));
+ QSqlQuery q(db);
+
+ QVERIFY_SQL( q, exec("create table " + test + "(id int, name varchar(20), title int)"));
+
+ QVERIFY_SQL( q, exec("create table " + test2 + "(id int, title varchar(20))"));
+
+ QVERIFY_SQL( q, exec("create table " + test3 + "(id int, random varchar(20), randomtwo varchar(20))"));
+
+ if(!tst_Databases::isSqlServer(db))
+ QVERIFY_SQL( q, exec("create table " + qTableName("test4", __FILE__) + "(column1 varchar(50), column2 varchar(50), column3 varchar(50))"));
+ else
+ QVERIFY_SQL( q, exec("create table " + qTableName("test4", __FILE__) + "(column1 varchar(50), column2 varchar(50) NULL, column3 varchar(50))"));
+
+
+ QVERIFY_SQL( q, exec("create table " + qTableName("emptytable", __FILE__) + "(id int)"));
+
+ if (testWhiteSpaceNames(db.driverName())) {
+ QString qry = "create table " + qTableName("qtestw hitespace", db.driver()) + " ("+ db.driver()->escapeIdentifier("a field", QSqlDriver::FieldName) + " int)";
+ QVERIFY_SQL( q, exec(qry));
+ }
+ }
+}
+
+void tst_QSqlTableModel::repopulateTestTables()
+{
+ for (int i = 0; i < dbs.dbNames.count(); ++i) {
+ QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i));
+ QSqlQuery q(db);
+
+ q.exec("delete from " + test);
+ QVERIFY_SQL( q, exec("insert into " + test + " values(1, 'harry', 1)"));
+ QVERIFY_SQL( q, exec("insert into " + test + " values(2, 'trond', 2)"));
+ QVERIFY_SQL( q, exec("insert into " + test + " values(3, 'vohi', 3)"));
+
+ q.exec("delete from " + test2);
+ QVERIFY_SQL( q, exec("insert into " + test2 + " values(1, 'herr')"));
+ QVERIFY_SQL( q, exec("insert into " + test2 + " values(2, 'mister')"));
+
+ q.exec("delete from " + test3);
+ QVERIFY_SQL( q, exec("insert into " + test3 + " values(1, 'foo', 'bar')"));
+ QVERIFY_SQL( q, exec("insert into " + test3 + " values(2, 'baz', 'joe')"));
+ }
+}
+
+void tst_QSqlTableModel::recreateTestTables()
+{
+ dropTestTables();
+ createTestTables();
+ repopulateTestTables();
+}
+
+void tst_QSqlTableModel::generic_data(const QString &engine)
+{
+ if ( dbs.fillTestTable(engine) == 0 ) {
+ if (engine.isEmpty())
+ QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ else
+ QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
+ }
+}
+
+void tst_QSqlTableModel::generic_data_with_strategies(const QString &engine)
+{
+ if ( dbs.fillTestTableWithStrategies(engine) == 0 ) {
+ if (engine.isEmpty())
+ QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ else
+ QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
+ }
+}
+
+void tst_QSqlTableModel::initTestCase()
+{
+ recreateTestTables();
+}
+
+void tst_QSqlTableModel::cleanupTestCase()
+{
+ dropTestTables();
+ dbs.close();
+}
+
+void tst_QSqlTableModel::init()
+{
+}
+
+void tst_QSqlTableModel::cleanup()
+{
+ repopulateTestTables();
+}
+
+void tst_QSqlTableModel::select()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.rowCount(), 3);
+ QCOMPARE(model.columnCount(), 3);
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 3)), QVariant());
+
+ QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
+ QCOMPARE(model.data(model.index(1, 3)), QVariant());
+
+ QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(2, 2)).toInt(), 3);
+ QCOMPARE(model.data(model.index(2, 3)), QVariant());
+
+ QCOMPARE(model.data(model.index(3, 0)), QVariant());
+ QCOMPARE(model.data(model.index(3, 1)), QVariant());
+ QCOMPARE(model.data(model.index(3, 2)), QVariant());
+ QCOMPARE(model.data(model.index(3, 3)), QVariant());
+}
+
+void tst_QSqlTableModel::insertColumns()
+{
+ // Just like the select test, with extra stuff
+ QFETCH(QString, dbName);
+ QFETCH(int, submitpolicy_i);
+ QSqlTableModel::EditStrategy submitpolicy = (QSqlTableModel::EditStrategy) submitpolicy_i;
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ model.setEditStrategy(submitpolicy);
+
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.rowCount(), 3);
+ QCOMPARE(model.columnCount(), 3);
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 3)), QVariant());
+
+ QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
+ QCOMPARE(model.data(model.index(1, 3)), QVariant());
+
+ QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(2, 2)).toInt(), 3);
+ QCOMPARE(model.data(model.index(2, 3)), QVariant());
+
+ QCOMPARE(model.data(model.index(3, 0)), QVariant());
+ QCOMPARE(model.data(model.index(3, 1)), QVariant());
+ QCOMPARE(model.data(model.index(3, 2)), QVariant());
+ QCOMPARE(model.data(model.index(3, 3)), QVariant());
+
+ // Now add a column at 0 and 2
+ model.insertColumn(0);
+ model.insertColumn(2);
+
+ QCOMPARE(model.rowCount(), 3);
+ QCOMPARE(model.columnCount(), 5);
+
+ QCOMPARE(model.data(model.index(0, 0)), QVariant());
+ QCOMPARE(model.data(model.index(0, 1)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 2)), QVariant());
+ QCOMPARE(model.data(model.index(0, 3)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 4)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 5)), QVariant());
+
+ QCOMPARE(model.data(model.index(1, 0)), QVariant());
+ QCOMPARE(model.data(model.index(1, 1)).toInt(), 2);
+ QCOMPARE(model.data(model.index(1, 2)), QVariant());
+ QCOMPARE(model.data(model.index(1, 3)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(1, 4)).toInt(), 2);
+ QCOMPARE(model.data(model.index(1, 5)), QVariant());
+
+ QCOMPARE(model.data(model.index(2, 0)), QVariant());
+ QCOMPARE(model.data(model.index(2, 1)).toInt(), 3);
+ QCOMPARE(model.data(model.index(2, 2)), QVariant());
+ QCOMPARE(model.data(model.index(2, 3)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(2, 4)).toInt(), 3);
+ QCOMPARE(model.data(model.index(2, 5)), QVariant());
+
+ QCOMPARE(model.data(model.index(3, 0)), QVariant());
+ QCOMPARE(model.data(model.index(3, 1)), QVariant());
+ QCOMPARE(model.data(model.index(3, 2)), QVariant());
+ QCOMPARE(model.data(model.index(3, 3)), QVariant());
+ QCOMPARE(model.data(model.index(3, 4)), QVariant());
+ QCOMPARE(model.data(model.index(3, 5)), QVariant());
+}
+
+void tst_QSqlTableModel::setRecord()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QList<QSqlTableModel::EditStrategy> policies = QList<QSqlTableModel::EditStrategy>() << QSqlTableModel::OnFieldChange << QSqlTableModel::OnRowChange << QSqlTableModel::OnManualSubmit;
+
+ QString Xsuffix;
+ foreach( QSqlTableModel::EditStrategy submitpolicy, policies) {
+
+ QSqlTableModel model(0, db);
+ model.setEditStrategy((QSqlTableModel::EditStrategy)submitpolicy);
+ model.setTable(test3);
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ for (int i = 0; i < model.rowCount(); ++i) {
+ QSignalSpy spy(&model, SIGNAL(dataChanged(QModelIndex,QModelIndex)));
+
+ QSqlRecord rec = model.record(i);
+ rec.setValue(1, rec.value(1).toString() + 'X');
+ rec.setValue(2, rec.value(2).toString() + 'X');
+ QVERIFY(model.setRecord(i, rec));
+
+ if ((QSqlTableModel::EditStrategy)submitpolicy == QSqlTableModel::OnManualSubmit) {
+ // setRecord should emit dataChanged() itself for manualSubmit
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.at(0).count(), 2);
+ QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(0)), model.index(i, 0));
+ QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(1)), model.index(i, rec.count() - 1));
+ QVERIFY(model.submitAll());
+ } else if ((QSqlTableModel::EditStrategy)submitpolicy == QSqlTableModel::OnRowChange && i == model.rowCount() -1)
+ model.submit();
+ else {
+ // dataChanged() is not emitted when submitAll() is called
+ QCOMPARE(spy.count(), 2);
+ QCOMPARE(spy.at(0).count(), 2);
+ QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(0)), model.index(i, 1));
+ QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(1)), model.index(i, 1));
+ }
+ }
+
+ Xsuffix.append('X');
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("foo").append(Xsuffix));
+ QCOMPARE(model.data(model.index(0, 2)).toString(), QString("bar").append(Xsuffix));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("baz").append(Xsuffix));
+ QCOMPARE(model.data(model.index(1, 2)).toString(), QString("joe").append(Xsuffix));
+ }
+}
+
+void tst_QSqlTableModel::insertRow()
+{
+ QFETCH(QString, dbName);
+ QFETCH(int, submitpolicy_i);
+ QSqlTableModel::EditStrategy submitpolicy = (QSqlTableModel::EditStrategy) submitpolicy_i;
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setEditStrategy(submitpolicy);
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
+ QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
+ QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(2, 2)).toInt(), 3);
+
+ QVERIFY(model.insertRow(2));
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
+ QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
+ QCOMPARE(model.data(model.index(2, 0)).toInt(), 0);
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(2, 2)).toInt(), 0);
+ QCOMPARE(model.data(model.index(3, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(3, 2)).toInt(), 3);
+
+ QSqlRecord rec = model.record(1);
+ rec.setValue(0, 42);
+ rec.setValue(1, QString("francis"));
+
+ // FieldChange updates immediately and resorts
+ // Row/Manual submit does not resort
+ QVERIFY(model.setRecord(2, rec));
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
+ QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
+
+ // See comment above setRecord
+ if (submitpolicy == QSqlTableModel::OnFieldChange) {
+ QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(2, 2)).toInt(), 3);
+ QCOMPARE(model.data(model.index(3, 0)).toInt(), 42);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("francis"));
+ QCOMPARE(model.data(model.index(3, 2)).toInt(), 2);
+ } else {
+ QCOMPARE(model.data(model.index(2, 0)).toInt(), 42);
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("francis"));
+ QCOMPARE(model.data(model.index(2, 2)).toInt(), 2);
+ QCOMPARE(model.data(model.index(3, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(3, 2)).toInt(), 3);
+ }
+
+ QVERIFY(model.submitAll());
+
+ // After the submit we should have the resorted view
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(0, 2)).toInt(), 1);
+ QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(1, 2)).toInt(), 2);
+ QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(2, 2)).toInt(), 3);
+ QCOMPARE(model.data(model.index(3, 0)).toInt(), 42);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("francis"));
+ QCOMPARE(model.data(model.index(3, 2)).toInt(), 2);
+
+}
+
+void tst_QSqlTableModel::insertRecord()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QSqlRecord rec = model.record();
+ rec.setValue(0, 42);
+ rec.setValue(1, QString("vohi"));
+ rec.setValue(2, 1);
+ QVERIFY(model.insertRecord(1, rec));
+ QCOMPARE(model.rowCount(), 4);
+
+ QCOMPARE(model.data(model.index(1, 0)).toInt(), 42);
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(1, 2)).toInt(), 1);
+
+ model.revertAll();
+ model.setEditStrategy(QSqlTableModel::OnRowChange);
+
+ QVERIFY(model.insertRecord(-1, rec));
+
+ QCOMPARE(model.data(model.index(3, 0)).toInt(), 42);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(3, 2)).toInt(), 1);
+}
+
+void tst_QSqlTableModel::insertMultiRecords()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.rowCount(), 3);
+
+ QVERIFY(model.insertRow(2));
+
+ QCOMPARE(model.data(model.index(2, 0)), QVariant(model.record().field(0).type()));
+ QCOMPARE(model.data(model.index(2, 1)), QVariant(model.record().field(1).type()));
+ QCOMPARE(model.data(model.index(2, 2)), QVariant(model.record().field(2).type()));
+
+ QVERIFY(model.insertRow(3));
+ QVERIFY(model.insertRow(0));
+
+ QCOMPARE(model.data(model.index(5, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(5, 1)).toString(), QString("vohi"));
+ QCOMPARE(model.data(model.index(5, 2)).toInt(), 3);
+
+ QVERIFY(model.setData(model.index(0, 0), QVariant(42)));
+ QVERIFY(model.setData(model.index(3, 0), QVariant(43)));
+ QVERIFY(model.setData(model.index(4, 0), QVariant(44)));
+ QVERIFY(model.setData(model.index(4, 1), QVariant(QLatin1String("gunnar"))));
+ QVERIFY(model.setData(model.index(4, 2), QVariant(1)));
+
+ QVERIFY(model.submitAll());
+ model.clear();
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(1, 0)).toInt(), 2);
+ QCOMPARE(model.data(model.index(2, 0)).toInt(), 3);
+ QCOMPARE(model.data(model.index(3, 0)).toInt(), 42);
+ QCOMPARE(model.data(model.index(4, 0)).toInt(), 43);
+ QCOMPARE(model.data(model.index(5, 0)).toInt(), 44);
+ QCOMPARE(model.data(model.index(5, 1)).toString(), QString("gunnar"));
+ QCOMPARE(model.data(model.index(5, 2)).toInt(), 1);
+}
+
+void tst_QSqlTableModel::submitAll()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ QVERIFY_SQL(model, select());
+
+ QVERIFY(model.setData(model.index(0, 1), "harry2", Qt::EditRole));
+ QVERIFY(model.setData(model.index(1, 1), "trond2", Qt::EditRole));
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond2"));
+
+ QVERIFY_SQL(model, submitAll());
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry2"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond2"));
+
+ QVERIFY(model.setData(model.index(0, 1), "harry", Qt::EditRole));
+ QVERIFY(model.setData(model.index(1, 1), "trond", Qt::EditRole));
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+
+ QVERIFY_SQL(model, submitAll());
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+}
+
+void tst_QSqlTableModel::removeRow()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 3);
+
+ // headerDataChanged must be emitted by the model when the edit strategy is OnManualSubmit,
+ // when OnFieldChange or OnRowChange it's not needed because the model will re-select.
+ qRegisterMetaType<Qt::Orientation>("Qt::Orientation");
+ QSignalSpy headerDataChangedSpy(&model, SIGNAL(headerDataChanged(Qt::Orientation, int, int)));
+
+ QVERIFY(model.removeRow(1));
+ QCOMPARE(headerDataChangedSpy.count(), 1);
+ QCOMPARE(*static_cast<const Qt::Orientation *>(headerDataChangedSpy.at(0).value(0).constData()), Qt::Vertical);
+ QCOMPARE(headerDataChangedSpy.at(0).at(1).toInt(), 1);
+ QCOMPARE(headerDataChangedSpy.at(0).at(2).toInt(), 1);
+ QVERIFY(model.submitAll());
+ QCOMPARE(model.rowCount(), 2);
+
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+ QCOMPARE(model.data(model.index(1, 0)).toInt(), 3);
+ model.clear();
+
+ recreateTestTables();
+
+ model.setTable(test);
+ model.setEditStrategy(QSqlTableModel::OnRowChange);
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 3);
+
+ headerDataChangedSpy.clear();
+ QVERIFY(model.removeRow(1));
+ QCOMPARE(headerDataChangedSpy.count(), 0);
+ QCOMPARE(model.rowCount(), 2);
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("vohi"));
+}
+
+void tst_QSqlTableModel::removeRows()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ model.setEditStrategy(QSqlTableModel::OnFieldChange);
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 3);
+
+ QSignalSpy beforeDeleteSpy(&model, SIGNAL(beforeDelete(int)));
+
+ // Make sure wrong stuff is ok
+ QVERIFY(!model.removeRows(-1,1)); // negative start
+ QVERIFY(!model.removeRows(-1, 0)); // negative start, and zero count
+ QVERIFY(!model.removeRows(1, 0)); // zero count
+ QVERIFY(!model.removeRows(5, 1)); // past end (causes a beforeDelete to be emitted)
+ QVERIFY(!model.removeRows(1, 0, model.index(2, 0))); // can't pass a valid modelindex
+
+ QVERIFY_SQL(model, removeRows(0, 2));
+ QCOMPARE(beforeDeleteSpy.count(), 3);
+ QVERIFY(beforeDeleteSpy.at(0).at(0).toInt() == 5);
+ QVERIFY(beforeDeleteSpy.at(1).at(0).toInt() == 0);
+ QVERIFY(beforeDeleteSpy.at(2).at(0).toInt() == 1);
+ QCOMPARE(model.rowCount(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("vohi"));
+ model.clear();
+
+ recreateTestTables();
+ model.setTable(test);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 3);
+ beforeDeleteSpy.clear();
+
+ // When the edit strategy is OnManualSubmit the beforeDelete() signal
+ // isn't emitted until submitAll() is called.
+
+ QVERIFY(!model.removeRows(-1,1)); // negative start
+ QVERIFY(!model.removeRows(-1, 0)); // negative start, and zero count
+ QVERIFY(!model.removeRows(1, 0)); // zero count
+ QVERIFY(!model.removeRows(5, 1)); // past end (DOESN'T cause a beforeDelete to be emitted)
+ QVERIFY(!model.removeRows(1, 0, model.index(2, 0))); // can't pass a valid modelindex
+
+ qRegisterMetaType<Qt::Orientation>("Qt::Orientation");
+ QSignalSpy headerDataChangedSpy(&model, SIGNAL(headerDataChanged(Qt::Orientation, int, int)));
+ QVERIFY(model.removeRows(0, 2, QModelIndex()));
+ QCOMPARE(headerDataChangedSpy.count(), 2);
+ QCOMPARE(headerDataChangedSpy.at(0).at(1).toInt(), 0);
+ QCOMPARE(headerDataChangedSpy.at(0).at(2).toInt(), 0);
+ QCOMPARE(headerDataChangedSpy.at(1).at(1).toInt(), 1);
+ QCOMPARE(headerDataChangedSpy.at(1).at(2).toInt(), 1);
+ QCOMPARE(model.rowCount(), 3);
+ QVERIFY(beforeDeleteSpy.count() == 0);
+ QVERIFY(model.submitAll());
+ QVERIFY(beforeDeleteSpy.count() == 2);
+ QVERIFY(beforeDeleteSpy.at(0).at(0).toInt() == 0);
+ QVERIFY(beforeDeleteSpy.at(1).at(0).toInt() == 1);
+ QCOMPARE(model.rowCount(), 1);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("vohi"));
+}
+
+void tst_QSqlTableModel::removeInsertedRow()
+{
+ QFETCH(QString, dbName);
+ QFETCH(int, submitpolicy_i);
+ QSqlTableModel::EditStrategy submitpolicy = (QSqlTableModel::EditStrategy) submitpolicy_i;
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+
+ model.setEditStrategy(submitpolicy);
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 3);
+
+ QVERIFY(model.insertRow(1));
+ QCOMPARE(model.rowCount(), 4);
+
+ QVERIFY(model.removeRow(1));
+ QCOMPARE(model.rowCount(), 3);
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
+
+ // Now insert a row with a null, and check that removing it also works (QTBUG-15979 etc)
+ model.insertRow(1);
+ model.setData(model.index(1,0), 55);
+ model.setData(model.index(1,1), QString("null columns"));
+ model.setData(model.index(1,2), QVariant());
+
+ model.submitAll();
+
+ QCOMPARE(model.rowCount(), 4);
+ QCOMPARE(model.data(model.index(3, 0)).toInt(), 55);
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("null columns"));
+ QCOMPARE(model.data(model.index(3, 2)).isNull(), true);
+
+ QVERIFY(model.removeRow(3));
+ model.submitAll();
+ QCOMPARE(model.rowCount(), 3);
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
+}
+
+void tst_QSqlTableModel::removeInsertedRows()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit); // you can't insert more than one row otherwise
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 3);
+
+ // First put two empty rows, and remove them one by one
+ QVERIFY(model.insertRows(1, 2));
+ QCOMPARE(model.rowCount(), 5);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
+
+ QVERIFY(model.removeRow(1));
+ QCOMPARE(model.rowCount(), 4);
+
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("vohi"));
+
+ QVERIFY(model.removeRow(1));
+ QCOMPARE(model.rowCount(), 3);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
+
+ // Now put two empty rows, and remove them all at once
+ QVERIFY(model.insertRows(1, 2));
+ QCOMPARE(model.rowCount(), 5);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
+
+ QVERIFY(model.removeRows(1, 2));
+ QCOMPARE(model.rowCount(), 3);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi"));
+
+
+ // Now put two empty rows, and remove one good and two empty
+ QVERIFY(model.insertRows(1, 2));
+ QCOMPARE(model.rowCount(), 5);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
+
+ QVERIFY(model.removeRows(0, 3));
+ QVERIFY(model.submitAll()); // otherwise the remove of the real row doesn't work
+
+ QCOMPARE(model.rowCount(), 2);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("vohi"));
+
+ // Reset back again
+ model.clear();
+ recreateTestTables();
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit); // you can't insert more than one row otherwise
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 3);
+
+ // Now two empty and one good
+ QVERIFY(model.insertRows(1, 2));
+ QCOMPARE(model.rowCount(), 5);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
+
+ QVERIFY(model.removeRows(1, 3));
+ QVERIFY(model.submitAll());
+ QCOMPARE(model.rowCount(), 2);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("vohi"));
+
+ // Reset back again
+ model.clear();
+ recreateTestTables();
+ model.setTable(test);
+ model.setSort(0, Qt::AscendingOrder);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit); // you can't insert more than one row otherwise
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 3);
+
+ // one empty, one good, one empty
+ QVERIFY(model.insertRows(1, 1));
+ QVERIFY(model.insertRows(3, 1));
+ QCOMPARE(model.rowCount(), 5);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(2, 1)).toString(), QString("trond"));
+ QCOMPARE(model.data(model.index(3, 1)).toString(), QString());
+ QCOMPARE(model.data(model.index(4, 1)).toString(), QString("vohi"));
+
+ QVERIFY(model.removeRows(1, 3));
+ QVERIFY(model.submitAll());
+ QCOMPARE(model.rowCount(), 2);
+ QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
+ QCOMPARE(model.data(model.index(1, 1)).toString(), QString("vohi"));
+}
+
+void tst_QSqlTableModel::emptyTable()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ QCOMPARE(model.rowCount(), 0);
+ QCOMPARE(model.columnCount(), 0);
+
+ model.setTable(qTableName("emptytable", __FILE__));
+ QCOMPARE(model.rowCount(), 0);
+ QCOMPARE(model.columnCount(), 1);
+
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 0);
+ QCOMPARE(model.columnCount(), 1);
+}
+
+void tst_QSqlTableModel::tablesAndSchemas()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlQuery q(db);
+ q.exec("DROP SCHEMA " + qTableName("testschema", __FILE__) + " CASCADE");
+ QVERIFY_SQL( q, exec("create schema " + qTableName("testschema", __FILE__)));
+ QString tableName = qTableName("testschema", __FILE__) + '.' + qTableName("testtable", __FILE__);
+ QVERIFY_SQL( q, exec("create table " + tableName + "(id int)"));
+ QVERIFY_SQL( q, exec("insert into " + tableName + " values(1)"));
+ QVERIFY_SQL( q, exec("insert into " + tableName + " values(2)"));
+
+ QSqlTableModel model(0, db);
+ model.setTable(tableName);
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 2);
+ QCOMPARE(model.columnCount(), 1);
+}
+
+void tst_QSqlTableModel::whitespaceInIdentifiers()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ if (!testWhiteSpaceNames(db.driverName()))
+ QSKIP("DBMS doesn't support whitespaces in identifiers", SkipSingle);
+
+ QString tableName = qTableName("qtestw hitespace", db.driver());
+
+ QSqlTableModel model(0, db);
+ model.setTable(tableName);
+ QVERIFY_SQL(model, select());
+}
+
+void tst_QSqlTableModel::primaryKeyOrder()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlQuery q(db);
+
+ if(tst_Databases::isPostgreSQL(db))
+ QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
+
+ QVERIFY_SQL( q, exec("create table "+qTableName("foo", __FILE__)+"(a varchar(20), id int not null primary key, b varchar(20))"));
+
+ QSqlTableModel model(0, db);
+ model.setTable(qTableName("foo", __FILE__));
+
+ QSqlIndex pk = model.primaryKey();
+ QCOMPARE(pk.count(), 1);
+ QCOMPARE(pk.fieldName(0), QLatin1String("id"));
+
+ QVERIFY(model.insertRow(0));
+ QVERIFY(model.setData(model.index(0, 0), "hello"));
+ QVERIFY(model.setData(model.index(0, 1), 42));
+ QVERIFY(model.setData(model.index(0, 2), "blah"));
+ QVERIFY_SQL(model, submitAll());
+
+ QVERIFY(model.setData(model.index(0, 1), 43));
+ QVERIFY_SQL(model, submitAll());
+
+ QCOMPARE(model.data(model.index(0, 1)).toInt(), 43);
+}
+
+void tst_QSqlTableModel::setInvalidFilter()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ // set an invalid filter, make sure it fails
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setFilter("blahfahsel");
+
+ QCOMPARE(model.filter(), QString("blahfahsel"));
+ QVERIFY(!model.select());
+
+ // set a valid filter later, make sure if passes
+ model.setFilter("id = 1");
+ QVERIFY_SQL(model, select());
+}
+
+void tst_QSqlTableModel::setFilter()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setFilter("id = 1");
+ QCOMPARE(model.filter(), QString("id = 1"));
+ QVERIFY_SQL(model, select());
+
+ QCOMPARE(model.rowCount(), 1);
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 1);
+
+ QSignalSpy rowsRemovedSpy(&model, SIGNAL(rowsRemoved(QModelIndex,int,int)));
+ QSignalSpy rowsAboutToBeRemovedSpy(&model,
+ SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)));
+ QSignalSpy rowsInsertedSpy(&model, SIGNAL(rowsInserted(QModelIndex,int,int)));
+ QSignalSpy rowsAboutToBeInsertedSpy(&model,
+ SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)));
+ model.setFilter("id = 2");
+
+ // check the signals
+ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1);
+ QCOMPARE(rowsRemovedSpy.count(), 1);
+ QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
+ QCOMPARE(rowsInsertedSpy.count(), 1);
+ QList<QVariant> args = rowsAboutToBeRemovedSpy.takeFirst();
+ QCOMPARE(args.count(), 3);
+ QCOMPARE(qvariant_cast<QModelIndex>(args.at(0)), QModelIndex());
+ QCOMPARE(args.at(1).toInt(), 0);
+ QCOMPARE(args.at(2).toInt(), 0);
+ args = rowsRemovedSpy.takeFirst();
+ QCOMPARE(args.count(), 3);
+ QCOMPARE(qvariant_cast<QModelIndex>(args.at(0)), QModelIndex());
+ QCOMPARE(args.at(1).toInt(), 0);
+ QCOMPARE(args.at(2).toInt(), 0);
+ args = rowsInsertedSpy.takeFirst();
+ QCOMPARE(args.count(), 3);
+ QCOMPARE(qvariant_cast<QModelIndex>(args.at(0)), QModelIndex());
+ QCOMPARE(args.at(1).toInt(), 0);
+ QCOMPARE(args.at(2).toInt(), 0);
+ args = rowsAboutToBeInsertedSpy.takeFirst();
+ QCOMPARE(args.count(), 3);
+ QCOMPARE(qvariant_cast<QModelIndex>(args.at(0)), QModelIndex());
+ QCOMPARE(args.at(1).toInt(), 0);
+ QCOMPARE(args.at(2).toInt(), 0);
+
+ QCOMPARE(model.rowCount(), 1);
+ QCOMPARE(model.data(model.index(0, 0)).toInt(), 2);
+}
+
+void tst_QSqlTableModel::sqlite_bigTable()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ const QString bigtable(qTableName("bigtable", __FILE__));
+
+ bool hasTransactions = db.driver()->hasFeature(QSqlDriver::Transactions);
+ if (hasTransactions) QVERIFY(db.transaction());
+ QSqlQuery q(db);
+ QVERIFY_SQL( q, exec("create table "+bigtable+"(id int primary key, name varchar)"));
+ QVERIFY_SQL( q, prepare("insert into "+bigtable+"(id, name) values (?, ?)"));
+ QTime startTime;
+ startTime.start();
+ for (int i = 0; i < 10000; ++i) {
+ q.addBindValue(i);
+ q.addBindValue(QString::number(i));
+ if(i%1000 == 0 && startTime.elapsed() > 5000)
+ qDebug() << i << "records written";
+ QVERIFY_SQL( q, exec());
+ }
+ q.clear();
+ if (hasTransactions) QVERIFY(db.commit());
+
+ QSqlTableModel model(0, db);
+ model.setTable(bigtable);
+ QVERIFY_SQL(model, select());
+
+ QSqlRecord rec = model.record();
+ rec.setValue("id", 424242);
+ rec.setValue("name", "Guillaume");
+ QVERIFY_SQL(model, insertRecord(-1, rec));
+
+ model.clear();
+}
+
+// For task 118547: couldn't insert records unless select()
+// had first been called.
+void tst_QSqlTableModel::insertRecordBeforeSelect()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ QCOMPARE(model.lastError().type(), QSqlError::NoError);
+
+ QSqlRecord buffer = model.record();
+ buffer.setValue("id", 13);
+ buffer.setValue("name", QString("The Lion King"));
+ buffer.setValue("title", 0);
+ QVERIFY_SQL(model, insertRecord(-1, buffer));
+
+ buffer.setValue("id", 26);
+ buffer.setValue("name", QString("T. Leary"));
+ buffer.setValue("title", 0);
+ QVERIFY_SQL(model, insertRecord(1, buffer));
+
+ int rowCount = model.rowCount();
+ model.clear();
+ QCOMPARE(model.rowCount(), 0);
+
+ QSqlTableModel model2(0, db);
+ model2.setTable(test);
+ QVERIFY_SQL(model2, select());
+ QCOMPARE(model2.rowCount(), rowCount);
+}
+
+// For task 118547: set errors if table doesn't exist and if records
+// are inserted and submitted on a non-existing table.
+void tst_QSqlTableModel::submitAllOnInvalidTable()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+
+ // setTable returns a void, so the error can only be caught by
+ // manually checking lastError(). ### Qt5: This should be changed!
+ model.setTable(qTableName("invalidTable", __FILE__));
+ QCOMPARE(model.lastError().type(), QSqlError::StatementError);
+
+ // This will give us an empty record which is expected behavior
+ QSqlRecord buffer = model.record();
+ buffer.setValue("bogus", 1000);
+ buffer.setValue("bogus2", QString("I will go nowhere!"));
+
+ // Inserting the record into the *model* will work (OnManualSubmit)
+ QVERIFY_SQL(model, insertRecord(-1, buffer));
+
+ // The submit and select shall fail because the table doesn't exist
+ QEXPECT_FAIL("", "The table doesn't exist: submitAll() shall fail",
+ Continue);
+ QVERIFY_SQL(model, submitAll());
+ QEXPECT_FAIL("", "The table doesn't exist: select() shall fail",
+ Continue);
+ QVERIFY_SQL(model, select());
+}
+
+// For task 147575: the rowsRemoved signal emitted from the model was lying
+void tst_QSqlTableModel::insertRecordsInLoop()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ model.select();
+
+ QSqlRecord record = model.record();
+ record.setValue(0, 10);
+ record.setValue(1, "Testman");
+ record.setValue(2, 1);
+
+ QSignalSpy spyRowsRemoved(&model, SIGNAL(rowsRemoved(const QModelIndex &, int, int)));
+ QSignalSpy spyRowsInserted(&model, SIGNAL(rowsInserted(const QModelIndex &, int, int)));
+ for (int i = 0; i < 10; i++) {
+ QVERIFY(model.insertRecord(model.rowCount(), record));
+ QCOMPARE(spyRowsInserted.at(i).at(1).toInt(), i+3); // The table already contains three rows
+ QCOMPARE(spyRowsInserted.at(i).at(2).toInt(), i+3);
+ }
+ model.submitAll(); // submitAll() calls select() which clears and repopulates the table
+
+ int firstRowIndex = 0, lastRowIndex = 12;
+ QCOMPARE(spyRowsRemoved.count(), 1);
+ QCOMPARE(spyRowsRemoved.at(0).at(1).toInt(), firstRowIndex);
+ QCOMPARE(spyRowsRemoved.at(0).at(2).toInt(), lastRowIndex);
+
+ QCOMPARE(spyRowsInserted.at(10).at(1).toInt(), firstRowIndex);
+ QCOMPARE(spyRowsInserted.at(10).at(2).toInt(), lastRowIndex);
+ QCOMPARE(spyRowsInserted.count(), 11);
+
+ QCOMPARE(model.rowCount(), 13);
+ QCOMPARE(model.columnCount(), 3);
+}
+
+void tst_QSqlTableModel::sqlite_attachedDatabase()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ if(db.databaseName() == ":memory:")
+ QSKIP(":memory: database, skipping test", SkipSingle);
+
+ QSqlDatabase attachedDb = QSqlDatabase::cloneDatabase(db, db.driverName() + QLatin1String("attached"));
+ attachedDb.setDatabaseName(db.databaseName()+QLatin1String("attached.dat"));
+ QVERIFY_SQL(attachedDb, open());
+ QSqlQuery q(attachedDb);
+ tst_Databases::safeDropTables(attachedDb, QStringList() << "atest" << "atest2");
+ QVERIFY_SQL( q, exec("CREATE TABLE atest(id int, text varchar(20))"));
+ QVERIFY_SQL( q, exec("CREATE TABLE atest2(id int, text varchar(20))"));
+ QVERIFY_SQL( q, exec("INSERT INTO atest VALUES(1, 'attached-atest')"));
+ QVERIFY_SQL( q, exec("INSERT INTO atest2 VALUES(2, 'attached-atest2')"));
+
+ QSqlQuery q2(db);
+ tst_Databases::safeDropTable(db, "atest");
+ QVERIFY_SQL(q2, exec("CREATE TABLE atest(id int, text varchar(20))"));
+ QVERIFY_SQL(q2, exec("INSERT INTO atest VALUES(3, 'main')"));
+ QVERIFY_SQL(q2, exec("ATTACH DATABASE \""+attachedDb.databaseName()+"\" as adb"));
+
+ // This should query the table in the attached database (schema supplied)
+ QSqlTableModel model(0, db);
+ model.setTable("adb.atest");
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 1);
+ QCOMPARE(model.data(model.index(0, 0), Qt::DisplayRole).toInt(), 1);
+ QCOMPARE(model.data(model.index(0, 1), Qt::DisplayRole).toString(), QLatin1String("attached-atest"));
+
+ // This should query the table in the attached database (unique tablename)
+ model.setTable("atest2");
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 1);
+ QCOMPARE(model.data(model.index(0, 0), Qt::DisplayRole).toInt(), 2);
+ QCOMPARE(model.data(model.index(0, 1), Qt::DisplayRole).toString(), QLatin1String("attached-atest2"));
+
+ // This should query the table in the main database (tables in main db has 1st priority)
+ model.setTable("atest");
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 1);
+ QCOMPARE(model.data(model.index(0, 0), Qt::DisplayRole).toInt(), 3);
+ QCOMPARE(model.data(model.index(0, 1), Qt::DisplayRole).toString(), QLatin1String("main"));
+}
+
+
+void tst_QSqlTableModel::tableModifyWithBlank()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(qTableName("test4", __FILE__));
+ model.select();
+
+ //generate a time stamp for the test. Add one second to the current time to make sure
+ //it is different than the QSqlQuery test.
+ QString timeString=QDateTime::currentDateTime().addSecs(1).toString(Qt::ISODate);
+
+ //insert a new row, with column0 being the timestamp.
+ //Should be equivalent to QSqlQuery INSERT INTO... command)
+ QVERIFY_SQL(model, insertRow(0));
+ QVERIFY_SQL(model, setData(model.index(0,0),timeString));
+ QVERIFY_SQL(model, submitAll());
+
+ //set a filter on the table so the only record we get is the one we just made
+ //I could just do another setData command, but I want to make sure the TableModel
+ //matches exactly what is stored in the database
+ model.setFilter("column1='"+timeString+"'"); //filter to get just the newly entered row
+ QVERIFY_SQL(model, select());
+
+ //Make sure we only get one record, and that it is the one we just made
+ QCOMPARE(model.rowCount(), 1); //verify only one entry
+ QCOMPARE(model.record(0).value(0).toString(), timeString); //verify correct record
+
+ //At this point we know that the initial value (timestamp) was succsefully stored in the database
+ //Attempt to modify the data in the new record
+ //equivalent to query.exec("update test set column3="... command in direct test
+ //set the data in the first column to "col1ModelData"
+ QVERIFY_SQL(model, setData(model.index(0,1), "col1ModelData"));
+
+ //do a quick check to make sure that the setData command properly set the value in the model
+ QCOMPARE(model.record(0).value(1).toString(), QLatin1String("col1ModelData"));
+
+ //submit the changed data to the database
+ //This is where I have been getting errors.
+ QVERIFY_SQL(model, submitAll());
+
+ //make sure the model has the most current data for our record
+ QVERIFY_SQL(model, select());
+
+ //verify that our new record was the only record returned
+ QCOMPARE(model.rowCount(), 1);
+
+ //And that the record returned is, in fact, our test record.
+ QCOMPARE(model.record(0).value(0).toString(), timeString);
+
+ //Make sure the value of the first column matches what we set it to previously.
+ QCOMPARE(model.record(0).value(1).toString(), QLatin1String("col1ModelData"));
+}
+
+void tst_QSqlTableModel::removeColumnAndRow()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ QVERIFY_SQL(model, select());
+ QCOMPARE(model.rowCount(), 3);
+ QCOMPARE(model.columnCount(), 3);
+
+ QVERIFY(model.removeColumn(0));
+ QVERIFY(model.removeRow(0));
+ QVERIFY(model.submitAll());
+ QCOMPARE(model.rowCount(), 2);
+ QCOMPARE(model.columnCount(), 2);
+
+ // check with another table because the model has been modified
+ // but not the sql table
+ QSqlTableModel model2(0, db);
+ model2.setTable(test);
+ QVERIFY_SQL(model2, select());
+ QCOMPARE(model2.rowCount(), 2);
+ QCOMPARE(model2.columnCount(), 3);
+}
+
+void tst_QSqlTableModel::insertBeforeDelete()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+ QSqlQuery q(db);
+ QVERIFY_SQL( q, exec("insert into " + test + " values(9, 'andrew', 9)"));
+ QVERIFY_SQL( q, exec("insert into " + test + " values(10, 'justin', 10)"));
+
+ QSqlTableModel model(0, db);
+ model.setTable(test);
+ model.setEditStrategy(QSqlTableModel::OnManualSubmit);
+ QVERIFY_SQL(model, select());
+
+ QSqlRecord rec = model.record();
+ rec.setValue(0, 4);
+ rec.setValue(1, QString("bill"));
+ rec.setValue(2, 4);
+ QVERIFY_SQL(model, insertRecord(4, rec));
+
+ QVERIFY_SQL(model, removeRow(5));
+ QVERIFY_SQL(model, submitAll());
+ QCOMPARE(model.rowCount(), 5);
+}
+
+QTEST_MAIN(tst_QSqlTableModel)
+#include "tst_qsqltablemodel.moc"
diff --git a/tests/auto/sql/sql.pro b/tests/auto/sql/sql.pro
new file mode 100644
index 0000000000..99f6e38cf8
--- /dev/null
+++ b/tests/auto/sql/sql.pro
@@ -0,0 +1,5 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ kernel \
+ models \
+
diff --git a/tests/auto/qsignalspy/.gitignore b/tests/auto/testlib/qsignalspy/.gitignore
index 4d5c31727e..4d5c31727e 100644
--- a/tests/auto/qsignalspy/.gitignore
+++ b/tests/auto/testlib/qsignalspy/.gitignore
diff --git a/tests/auto/qsignalspy/qsignalspy.pro b/tests/auto/testlib/qsignalspy/qsignalspy.pro
index d3ae63b5bc..d3ae63b5bc 100644
--- a/tests/auto/qsignalspy/qsignalspy.pro
+++ b/tests/auto/testlib/qsignalspy/qsignalspy.pro
diff --git a/tests/auto/qsignalspy/tst_qsignalspy.cpp b/tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp
index f8e8553e7c..f8e8553e7c 100644
--- a/tests/auto/qsignalspy/tst_qsignalspy.cpp
+++ b/tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp
diff --git a/tests/auto/selftests/.gitignore b/tests/auto/testlib/selftests/.gitignore
index 56ba17abd7..56ba17abd7 100644
--- a/tests/auto/selftests/.gitignore
+++ b/tests/auto/testlib/selftests/.gitignore
diff --git a/tests/auto/selftests/alive/.gitignore b/tests/auto/testlib/selftests/alive/.gitignore
index 561285c5d0..561285c5d0 100644
--- a/tests/auto/selftests/alive/.gitignore
+++ b/tests/auto/testlib/selftests/alive/.gitignore
diff --git a/tests/auto/selftests/alive/alive.pro b/tests/auto/testlib/selftests/alive/alive.pro
index 7660933a58..7660933a58 100644
--- a/tests/auto/selftests/alive/alive.pro
+++ b/tests/auto/testlib/selftests/alive/alive.pro
diff --git a/tests/auto/selftests/alive/qtestalive.cpp b/tests/auto/testlib/selftests/alive/qtestalive.cpp
index dd3d411ce5..dd3d411ce5 100644
--- a/tests/auto/selftests/alive/qtestalive.cpp
+++ b/tests/auto/testlib/selftests/alive/qtestalive.cpp
diff --git a/tests/auto/selftests/alive/tst_alive.cpp b/tests/auto/testlib/selftests/alive/tst_alive.cpp
index f29aebb176..f29aebb176 100644
--- a/tests/auto/selftests/alive/tst_alive.cpp
+++ b/tests/auto/testlib/selftests/alive/tst_alive.cpp
diff --git a/tests/auto/selftests/assert/assert.pro b/tests/auto/testlib/selftests/assert/assert.pro
index a1ed578a31..a1ed578a31 100644
--- a/tests/auto/selftests/assert/assert.pro
+++ b/tests/auto/testlib/selftests/assert/assert.pro
diff --git a/tests/auto/selftests/assert/tst_assert.cpp b/tests/auto/testlib/selftests/assert/tst_assert.cpp
index bd44162971..bd44162971 100644
--- a/tests/auto/selftests/assert/tst_assert.cpp
+++ b/tests/auto/testlib/selftests/assert/tst_assert.cpp
diff --git a/tests/auto/selftests/badxml/badxml.pro b/tests/auto/testlib/selftests/badxml/badxml.pro
index 126ac379d7..126ac379d7 100644
--- a/tests/auto/selftests/badxml/badxml.pro
+++ b/tests/auto/testlib/selftests/badxml/badxml.pro
diff --git a/tests/auto/selftests/badxml/tst_badxml.cpp b/tests/auto/testlib/selftests/badxml/tst_badxml.cpp
index 2d0b007df9..2d0b007df9 100644
--- a/tests/auto/selftests/badxml/tst_badxml.cpp
+++ b/tests/auto/testlib/selftests/badxml/tst_badxml.cpp
diff --git a/tests/auto/selftests/benchlibcallgrind/benchlibcallgrind.pro b/tests/auto/testlib/selftests/benchlibcallgrind/benchlibcallgrind.pro
index 50d056eae4..50d056eae4 100644
--- a/tests/auto/selftests/benchlibcallgrind/benchlibcallgrind.pro
+++ b/tests/auto/testlib/selftests/benchlibcallgrind/benchlibcallgrind.pro
diff --git a/tests/auto/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp b/tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp
index 3505496829..3505496829 100644
--- a/tests/auto/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp
+++ b/tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp
diff --git a/tests/auto/selftests/benchlibeventcounter/benchlibeventcounter.pro b/tests/auto/testlib/selftests/benchlibeventcounter/benchlibeventcounter.pro
index de978672f1..de978672f1 100644
--- a/tests/auto/selftests/benchlibeventcounter/benchlibeventcounter.pro
+++ b/tests/auto/testlib/selftests/benchlibeventcounter/benchlibeventcounter.pro
diff --git a/tests/auto/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp b/tests/auto/testlib/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp
index ccb69ddb6a..ccb69ddb6a 100644
--- a/tests/auto/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp
+++ b/tests/auto/testlib/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp
diff --git a/tests/auto/selftests/benchliboptions/benchliboptions.pro b/tests/auto/testlib/selftests/benchliboptions/benchliboptions.pro
index 118563003f..118563003f 100644
--- a/tests/auto/selftests/benchliboptions/benchliboptions.pro
+++ b/tests/auto/testlib/selftests/benchliboptions/benchliboptions.pro
diff --git a/tests/auto/selftests/benchliboptions/tst_benchliboptions.cpp b/tests/auto/testlib/selftests/benchliboptions/tst_benchliboptions.cpp
index cbe5af5ce8..cbe5af5ce8 100644
--- a/tests/auto/selftests/benchliboptions/tst_benchliboptions.cpp
+++ b/tests/auto/testlib/selftests/benchliboptions/tst_benchliboptions.cpp
diff --git a/tests/auto/selftests/benchlibtickcounter/benchlibtickcounter.pro b/tests/auto/testlib/selftests/benchlibtickcounter/benchlibtickcounter.pro
index b83ef441e1..b83ef441e1 100644
--- a/tests/auto/selftests/benchlibtickcounter/benchlibtickcounter.pro
+++ b/tests/auto/testlib/selftests/benchlibtickcounter/benchlibtickcounter.pro
diff --git a/tests/auto/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp b/tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp
index cc8b3a454f..cc8b3a454f 100644
--- a/tests/auto/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp
+++ b/tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp
diff --git a/tests/auto/selftests/benchlibwalltime/benchlibwalltime.pro b/tests/auto/testlib/selftests/benchlibwalltime/benchlibwalltime.pro
index 83b383da87..83b383da87 100644
--- a/tests/auto/selftests/benchlibwalltime/benchlibwalltime.pro
+++ b/tests/auto/testlib/selftests/benchlibwalltime/benchlibwalltime.pro
diff --git a/tests/auto/selftests/benchlibwalltime/tst_benchlibwalltime.cpp b/tests/auto/testlib/selftests/benchlibwalltime/tst_benchlibwalltime.cpp
index 9042c27936..9042c27936 100644
--- a/tests/auto/selftests/benchlibwalltime/tst_benchlibwalltime.cpp
+++ b/tests/auto/testlib/selftests/benchlibwalltime/tst_benchlibwalltime.cpp
diff --git a/tests/auto/selftests/cmptest/cmptest.pro b/tests/auto/testlib/selftests/cmptest/cmptest.pro
index 9c14987205..9c14987205 100644
--- a/tests/auto/selftests/cmptest/cmptest.pro
+++ b/tests/auto/testlib/selftests/cmptest/cmptest.pro
diff --git a/tests/auto/selftests/cmptest/tst_cmptest.cpp b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
index 4d38aa1646..4d38aa1646 100644
--- a/tests/auto/selftests/cmptest/tst_cmptest.cpp
+++ b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
diff --git a/tests/auto/selftests/commandlinedata/commandlinedata.pro b/tests/auto/testlib/selftests/commandlinedata/commandlinedata.pro
index e10ec404b3..e10ec404b3 100644
--- a/tests/auto/selftests/commandlinedata/commandlinedata.pro
+++ b/tests/auto/testlib/selftests/commandlinedata/commandlinedata.pro
diff --git a/tests/auto/selftests/commandlinedata/tst_commandlinedata.cpp b/tests/auto/testlib/selftests/commandlinedata/tst_commandlinedata.cpp
index 5f2dd3fffc..5f2dd3fffc 100644
--- a/tests/auto/selftests/commandlinedata/tst_commandlinedata.cpp
+++ b/tests/auto/testlib/selftests/commandlinedata/tst_commandlinedata.cpp
diff --git a/tests/auto/selftests/crashes/crashes.pro b/tests/auto/testlib/selftests/crashes/crashes.pro
index 8162e5ca0a..8162e5ca0a 100644
--- a/tests/auto/selftests/crashes/crashes.pro
+++ b/tests/auto/testlib/selftests/crashes/crashes.pro
diff --git a/tests/auto/selftests/crashes/tst_crashes.cpp b/tests/auto/testlib/selftests/crashes/tst_crashes.cpp
index d707414f5b..d707414f5b 100644
--- a/tests/auto/selftests/crashes/tst_crashes.cpp
+++ b/tests/auto/testlib/selftests/crashes/tst_crashes.cpp
diff --git a/tests/auto/selftests/datatable/datatable.pro b/tests/auto/testlib/selftests/datatable/datatable.pro
index 865e00e7f1..865e00e7f1 100644
--- a/tests/auto/selftests/datatable/datatable.pro
+++ b/tests/auto/testlib/selftests/datatable/datatable.pro
diff --git a/tests/auto/selftests/datatable/tst_datatable.cpp b/tests/auto/testlib/selftests/datatable/tst_datatable.cpp
index a55e9cbae2..a55e9cbae2 100644
--- a/tests/auto/selftests/datatable/tst_datatable.cpp
+++ b/tests/auto/testlib/selftests/datatable/tst_datatable.cpp
diff --git a/tests/auto/selftests/datetime/datetime.pro b/tests/auto/testlib/selftests/datetime/datetime.pro
index 34d6169538..34d6169538 100644
--- a/tests/auto/selftests/datetime/datetime.pro
+++ b/tests/auto/testlib/selftests/datetime/datetime.pro
diff --git a/tests/auto/selftests/datetime/tst_datetime.cpp b/tests/auto/testlib/selftests/datetime/tst_datetime.cpp
index 64126644db..64126644db 100644
--- a/tests/auto/selftests/datetime/tst_datetime.cpp
+++ b/tests/auto/testlib/selftests/datetime/tst_datetime.cpp
diff --git a/tests/auto/selftests/differentexec/differentexec.pro b/tests/auto/testlib/selftests/differentexec/differentexec.pro
index 84e20eec03..84e20eec03 100644
--- a/tests/auto/selftests/differentexec/differentexec.pro
+++ b/tests/auto/testlib/selftests/differentexec/differentexec.pro
diff --git a/tests/auto/selftests/differentexec/tst_differentexec.cpp b/tests/auto/testlib/selftests/differentexec/tst_differentexec.cpp
index 5061369776..5061369776 100644
--- a/tests/auto/selftests/differentexec/tst_differentexec.cpp
+++ b/tests/auto/testlib/selftests/differentexec/tst_differentexec.cpp
diff --git a/tests/auto/selftests/exceptionthrow/exceptionthrow.pro b/tests/auto/testlib/selftests/exceptionthrow/exceptionthrow.pro
index 62c782f6be..62c782f6be 100644
--- a/tests/auto/selftests/exceptionthrow/exceptionthrow.pro
+++ b/tests/auto/testlib/selftests/exceptionthrow/exceptionthrow.pro
diff --git a/tests/auto/selftests/exceptionthrow/tst_exceptionthrow.cpp b/tests/auto/testlib/selftests/exceptionthrow/tst_exceptionthrow.cpp
index 23cc89ca61..23cc89ca61 100644
--- a/tests/auto/selftests/exceptionthrow/tst_exceptionthrow.cpp
+++ b/tests/auto/testlib/selftests/exceptionthrow/tst_exceptionthrow.cpp
diff --git a/tests/auto/selftests/expected_alive.txt b/tests/auto/testlib/selftests/expected_alive.txt
index e1768ec881..e1768ec881 100644
--- a/tests/auto/selftests/expected_alive.txt
+++ b/tests/auto/testlib/selftests/expected_alive.txt
diff --git a/tests/auto/selftests/expected_assert.lightxml b/tests/auto/testlib/selftests/expected_assert.lightxml
index c9a1978e9e..c9a1978e9e 100644
--- a/tests/auto/selftests/expected_assert.lightxml
+++ b/tests/auto/testlib/selftests/expected_assert.lightxml
diff --git a/tests/auto/selftests/expected_assert.txt b/tests/auto/testlib/selftests/expected_assert.txt
index f57eb55604..f57eb55604 100644
--- a/tests/auto/selftests/expected_assert.txt
+++ b/tests/auto/testlib/selftests/expected_assert.txt
diff --git a/tests/auto/selftests/expected_assert.xml b/tests/auto/testlib/selftests/expected_assert.xml
index 60085aa2b9..60085aa2b9 100644
--- a/tests/auto/selftests/expected_assert.xml
+++ b/tests/auto/testlib/selftests/expected_assert.xml
diff --git a/tests/auto/selftests/expected_assert.xunitxml b/tests/auto/testlib/selftests/expected_assert.xunitxml
index 87617003c5..87617003c5 100644
--- a/tests/auto/selftests/expected_assert.xunitxml
+++ b/tests/auto/testlib/selftests/expected_assert.xunitxml
diff --git a/tests/auto/selftests/expected_badxml.lightxml b/tests/auto/testlib/selftests/expected_badxml.lightxml
index 19bec33e1e..19bec33e1e 100644
--- a/tests/auto/selftests/expected_badxml.lightxml
+++ b/tests/auto/testlib/selftests/expected_badxml.lightxml
diff --git a/tests/auto/selftests/expected_badxml.txt b/tests/auto/testlib/selftests/expected_badxml.txt
index bc9d203678..bc9d203678 100644
--- a/tests/auto/selftests/expected_badxml.txt
+++ b/tests/auto/testlib/selftests/expected_badxml.txt
diff --git a/tests/auto/selftests/expected_badxml.xml b/tests/auto/testlib/selftests/expected_badxml.xml
index a33c8d251e..a33c8d251e 100644
--- a/tests/auto/selftests/expected_badxml.xml
+++ b/tests/auto/testlib/selftests/expected_badxml.xml
diff --git a/tests/auto/selftests/expected_badxml.xunitxml b/tests/auto/testlib/selftests/expected_badxml.xunitxml
index 724aed59e7..724aed59e7 100644
--- a/tests/auto/selftests/expected_badxml.xunitxml
+++ b/tests/auto/testlib/selftests/expected_badxml.xunitxml
diff --git a/tests/auto/selftests/expected_benchlibcallgrind.lightxml b/tests/auto/testlib/selftests/expected_benchlibcallgrind.lightxml
index c2394e545e..c2394e545e 100644
--- a/tests/auto/selftests/expected_benchlibcallgrind.lightxml
+++ b/tests/auto/testlib/selftests/expected_benchlibcallgrind.lightxml
diff --git a/tests/auto/selftests/expected_benchlibcallgrind.txt b/tests/auto/testlib/selftests/expected_benchlibcallgrind.txt
index f1727114b5..f1727114b5 100644
--- a/tests/auto/selftests/expected_benchlibcallgrind.txt
+++ b/tests/auto/testlib/selftests/expected_benchlibcallgrind.txt
diff --git a/tests/auto/selftests/expected_benchlibcallgrind.xml b/tests/auto/testlib/selftests/expected_benchlibcallgrind.xml
index b29b9c569e..b29b9c569e 100644
--- a/tests/auto/selftests/expected_benchlibcallgrind.xml
+++ b/tests/auto/testlib/selftests/expected_benchlibcallgrind.xml
diff --git a/tests/auto/selftests/expected_benchlibcallgrind.xunitxml b/tests/auto/testlib/selftests/expected_benchlibcallgrind.xunitxml
index cc58f7fdd4..cc58f7fdd4 100644
--- a/tests/auto/selftests/expected_benchlibcallgrind.xunitxml
+++ b/tests/auto/testlib/selftests/expected_benchlibcallgrind.xunitxml
diff --git a/tests/auto/selftests/expected_benchlibeventcounter.lightxml b/tests/auto/testlib/selftests/expected_benchlibeventcounter.lightxml
index 3bede6de83..3bede6de83 100644
--- a/tests/auto/selftests/expected_benchlibeventcounter.lightxml
+++ b/tests/auto/testlib/selftests/expected_benchlibeventcounter.lightxml
diff --git a/tests/auto/selftests/expected_benchlibeventcounter.txt b/tests/auto/testlib/selftests/expected_benchlibeventcounter.txt
index 906a4dea80..906a4dea80 100644
--- a/tests/auto/selftests/expected_benchlibeventcounter.txt
+++ b/tests/auto/testlib/selftests/expected_benchlibeventcounter.txt
diff --git a/tests/auto/selftests/expected_benchlibeventcounter.xml b/tests/auto/testlib/selftests/expected_benchlibeventcounter.xml
index 646cf22b80..646cf22b80 100644
--- a/tests/auto/selftests/expected_benchlibeventcounter.xml
+++ b/tests/auto/testlib/selftests/expected_benchlibeventcounter.xml
diff --git a/tests/auto/selftests/expected_benchlibeventcounter.xunitxml b/tests/auto/testlib/selftests/expected_benchlibeventcounter.xunitxml
index 60dca28d4f..60dca28d4f 100644
--- a/tests/auto/selftests/expected_benchlibeventcounter.xunitxml
+++ b/tests/auto/testlib/selftests/expected_benchlibeventcounter.xunitxml
diff --git a/tests/auto/selftests/expected_benchliboptions.lightxml b/tests/auto/testlib/selftests/expected_benchliboptions.lightxml
index 63d0218b2c..63d0218b2c 100644
--- a/tests/auto/selftests/expected_benchliboptions.lightxml
+++ b/tests/auto/testlib/selftests/expected_benchliboptions.lightxml
diff --git a/tests/auto/selftests/expected_benchliboptions.txt b/tests/auto/testlib/selftests/expected_benchliboptions.txt
index 7afc922630..7afc922630 100644
--- a/tests/auto/selftests/expected_benchliboptions.txt
+++ b/tests/auto/testlib/selftests/expected_benchliboptions.txt
diff --git a/tests/auto/selftests/expected_benchliboptions.xml b/tests/auto/testlib/selftests/expected_benchliboptions.xml
index 40bff95f79..40bff95f79 100644
--- a/tests/auto/selftests/expected_benchliboptions.xml
+++ b/tests/auto/testlib/selftests/expected_benchliboptions.xml
diff --git a/tests/auto/selftests/expected_benchliboptions.xunitxml b/tests/auto/testlib/selftests/expected_benchliboptions.xunitxml
index 7317e90470..7317e90470 100644
--- a/tests/auto/selftests/expected_benchliboptions.xunitxml
+++ b/tests/auto/testlib/selftests/expected_benchliboptions.xunitxml
diff --git a/tests/auto/selftests/expected_benchlibtickcounter.lightxml b/tests/auto/testlib/selftests/expected_benchlibtickcounter.lightxml
index 845fd9c161..845fd9c161 100644
--- a/tests/auto/selftests/expected_benchlibtickcounter.lightxml
+++ b/tests/auto/testlib/selftests/expected_benchlibtickcounter.lightxml
diff --git a/tests/auto/selftests/expected_benchlibtickcounter.txt b/tests/auto/testlib/selftests/expected_benchlibtickcounter.txt
index 4cdeeee906..4cdeeee906 100644
--- a/tests/auto/selftests/expected_benchlibtickcounter.txt
+++ b/tests/auto/testlib/selftests/expected_benchlibtickcounter.txt
diff --git a/tests/auto/selftests/expected_benchlibtickcounter.xml b/tests/auto/testlib/selftests/expected_benchlibtickcounter.xml
index 3cd82a2b1a..3cd82a2b1a 100644
--- a/tests/auto/selftests/expected_benchlibtickcounter.xml
+++ b/tests/auto/testlib/selftests/expected_benchlibtickcounter.xml
diff --git a/tests/auto/selftests/expected_benchlibtickcounter.xunitxml b/tests/auto/testlib/selftests/expected_benchlibtickcounter.xunitxml
index 28c8f11143..28c8f11143 100644
--- a/tests/auto/selftests/expected_benchlibtickcounter.xunitxml
+++ b/tests/auto/testlib/selftests/expected_benchlibtickcounter.xunitxml
diff --git a/tests/auto/selftests/expected_benchlibwalltime.lightxml b/tests/auto/testlib/selftests/expected_benchlibwalltime.lightxml
index f1d89328ef..f1d89328ef 100644
--- a/tests/auto/selftests/expected_benchlibwalltime.lightxml
+++ b/tests/auto/testlib/selftests/expected_benchlibwalltime.lightxml
diff --git a/tests/auto/selftests/expected_benchlibwalltime.txt b/tests/auto/testlib/selftests/expected_benchlibwalltime.txt
index ec2d020406..ec2d020406 100644
--- a/tests/auto/selftests/expected_benchlibwalltime.txt
+++ b/tests/auto/testlib/selftests/expected_benchlibwalltime.txt
diff --git a/tests/auto/selftests/expected_benchlibwalltime.xml b/tests/auto/testlib/selftests/expected_benchlibwalltime.xml
index 1379d4bcc9..1379d4bcc9 100644
--- a/tests/auto/selftests/expected_benchlibwalltime.xml
+++ b/tests/auto/testlib/selftests/expected_benchlibwalltime.xml
diff --git a/tests/auto/selftests/expected_benchlibwalltime.xunitxml b/tests/auto/testlib/selftests/expected_benchlibwalltime.xunitxml
index e4ffca4d09..e4ffca4d09 100644
--- a/tests/auto/selftests/expected_benchlibwalltime.xunitxml
+++ b/tests/auto/testlib/selftests/expected_benchlibwalltime.xunitxml
diff --git a/tests/auto/selftests/expected_cmptest.lightxml b/tests/auto/testlib/selftests/expected_cmptest.lightxml
index 72d1caf5f8..72d1caf5f8 100644
--- a/tests/auto/selftests/expected_cmptest.lightxml
+++ b/tests/auto/testlib/selftests/expected_cmptest.lightxml
diff --git a/tests/auto/selftests/expected_cmptest.txt b/tests/auto/testlib/selftests/expected_cmptest.txt
index df46703afa..df46703afa 100644
--- a/tests/auto/selftests/expected_cmptest.txt
+++ b/tests/auto/testlib/selftests/expected_cmptest.txt
diff --git a/tests/auto/selftests/expected_cmptest.xml b/tests/auto/testlib/selftests/expected_cmptest.xml
index 7064fcb1d0..7064fcb1d0 100644
--- a/tests/auto/selftests/expected_cmptest.xml
+++ b/tests/auto/testlib/selftests/expected_cmptest.xml
diff --git a/tests/auto/selftests/expected_cmptest.xunitxml b/tests/auto/testlib/selftests/expected_cmptest.xunitxml
index 01bfda8d01..01bfda8d01 100644
--- a/tests/auto/selftests/expected_cmptest.xunitxml
+++ b/tests/auto/testlib/selftests/expected_cmptest.xunitxml
diff --git a/tests/auto/selftests/expected_commandlinedata.lightxml b/tests/auto/testlib/selftests/expected_commandlinedata.lightxml
index 6907b7211f..6907b7211f 100644
--- a/tests/auto/selftests/expected_commandlinedata.lightxml
+++ b/tests/auto/testlib/selftests/expected_commandlinedata.lightxml
diff --git a/tests/auto/selftests/expected_commandlinedata.txt b/tests/auto/testlib/selftests/expected_commandlinedata.txt
index b79f491fe7..b79f491fe7 100644
--- a/tests/auto/selftests/expected_commandlinedata.txt
+++ b/tests/auto/testlib/selftests/expected_commandlinedata.txt
diff --git a/tests/auto/selftests/expected_commandlinedata.xml b/tests/auto/testlib/selftests/expected_commandlinedata.xml
index bcc8cbdbb7..bcc8cbdbb7 100644
--- a/tests/auto/selftests/expected_commandlinedata.xml
+++ b/tests/auto/testlib/selftests/expected_commandlinedata.xml
diff --git a/tests/auto/selftests/expected_commandlinedata.xunitxml b/tests/auto/testlib/selftests/expected_commandlinedata.xunitxml
index 45b833cf19..45b833cf19 100644
--- a/tests/auto/selftests/expected_commandlinedata.xunitxml
+++ b/tests/auto/testlib/selftests/expected_commandlinedata.xunitxml
diff --git a/tests/auto/selftests/expected_crashes.lightxml b/tests/auto/testlib/selftests/expected_crashes.lightxml
index 76890deb75..76890deb75 100644
--- a/tests/auto/selftests/expected_crashes.lightxml
+++ b/tests/auto/testlib/selftests/expected_crashes.lightxml
diff --git a/tests/auto/selftests/expected_crashes.xml b/tests/auto/testlib/selftests/expected_crashes.xml
index be01e633e9..be01e633e9 100644
--- a/tests/auto/selftests/expected_crashes.xml
+++ b/tests/auto/testlib/selftests/expected_crashes.xml
diff --git a/tests/auto/selftests/expected_crashes.xunitxml b/tests/auto/testlib/selftests/expected_crashes.xunitxml
index 558491c598..558491c598 100644
--- a/tests/auto/selftests/expected_crashes.xunitxml
+++ b/tests/auto/testlib/selftests/expected_crashes.xunitxml
diff --git a/tests/auto/selftests/expected_crashes_1.txt b/tests/auto/testlib/selftests/expected_crashes_1.txt
index 887a11713e..887a11713e 100644
--- a/tests/auto/selftests/expected_crashes_1.txt
+++ b/tests/auto/testlib/selftests/expected_crashes_1.txt
diff --git a/tests/auto/selftests/expected_crashes_2.txt b/tests/auto/testlib/selftests/expected_crashes_2.txt
index e5eb5aac6a..e5eb5aac6a 100644
--- a/tests/auto/selftests/expected_crashes_2.txt
+++ b/tests/auto/testlib/selftests/expected_crashes_2.txt
diff --git a/tests/auto/selftests/expected_crashes_3.txt b/tests/auto/testlib/selftests/expected_crashes_3.txt
index 1735aeba23..1735aeba23 100644
--- a/tests/auto/selftests/expected_crashes_3.txt
+++ b/tests/auto/testlib/selftests/expected_crashes_3.txt
diff --git a/tests/auto/selftests/expected_datatable.lightxml b/tests/auto/testlib/selftests/expected_datatable.lightxml
index e14d1e2abb..e14d1e2abb 100644
--- a/tests/auto/selftests/expected_datatable.lightxml
+++ b/tests/auto/testlib/selftests/expected_datatable.lightxml
diff --git a/tests/auto/selftests/expected_datatable.txt b/tests/auto/testlib/selftests/expected_datatable.txt
index 6fac9daff7..6fac9daff7 100644
--- a/tests/auto/selftests/expected_datatable.txt
+++ b/tests/auto/testlib/selftests/expected_datatable.txt
diff --git a/tests/auto/selftests/expected_datatable.xml b/tests/auto/testlib/selftests/expected_datatable.xml
index 0d12594a09..0d12594a09 100644
--- a/tests/auto/selftests/expected_datatable.xml
+++ b/tests/auto/testlib/selftests/expected_datatable.xml
diff --git a/tests/auto/selftests/expected_datatable.xunitxml b/tests/auto/testlib/selftests/expected_datatable.xunitxml
index 6bac80e0a2..6bac80e0a2 100644
--- a/tests/auto/selftests/expected_datatable.xunitxml
+++ b/tests/auto/testlib/selftests/expected_datatable.xunitxml
diff --git a/tests/auto/selftests/expected_datetime.lightxml b/tests/auto/testlib/selftests/expected_datetime.lightxml
index 49f8546e6a..49f8546e6a 100644
--- a/tests/auto/selftests/expected_datetime.lightxml
+++ b/tests/auto/testlib/selftests/expected_datetime.lightxml
diff --git a/tests/auto/selftests/expected_datetime.txt b/tests/auto/testlib/selftests/expected_datetime.txt
index d745aa04f5..d745aa04f5 100644
--- a/tests/auto/selftests/expected_datetime.txt
+++ b/tests/auto/testlib/selftests/expected_datetime.txt
diff --git a/tests/auto/selftests/expected_datetime.xml b/tests/auto/testlib/selftests/expected_datetime.xml
index b7b870e678..b7b870e678 100644
--- a/tests/auto/selftests/expected_datetime.xml
+++ b/tests/auto/testlib/selftests/expected_datetime.xml
diff --git a/tests/auto/selftests/expected_datetime.xunitxml b/tests/auto/testlib/selftests/expected_datetime.xunitxml
index b30d1c441f..b30d1c441f 100644
--- a/tests/auto/selftests/expected_datetime.xunitxml
+++ b/tests/auto/testlib/selftests/expected_datetime.xunitxml
diff --git a/tests/auto/selftests/expected_differentexec.txt b/tests/auto/testlib/selftests/expected_differentexec.txt
index 9536b69c87..9536b69c87 100644
--- a/tests/auto/selftests/expected_differentexec.txt
+++ b/tests/auto/testlib/selftests/expected_differentexec.txt
diff --git a/tests/auto/selftests/expected_exceptionthrow.lightxml b/tests/auto/testlib/selftests/expected_exceptionthrow.lightxml
index 0b8de0a6ba..0b8de0a6ba 100644
--- a/tests/auto/selftests/expected_exceptionthrow.lightxml
+++ b/tests/auto/testlib/selftests/expected_exceptionthrow.lightxml
diff --git a/tests/auto/selftests/expected_exceptionthrow.txt b/tests/auto/testlib/selftests/expected_exceptionthrow.txt
index 141ea8be77..141ea8be77 100644
--- a/tests/auto/selftests/expected_exceptionthrow.txt
+++ b/tests/auto/testlib/selftests/expected_exceptionthrow.txt
diff --git a/tests/auto/selftests/expected_exceptionthrow.xml b/tests/auto/testlib/selftests/expected_exceptionthrow.xml
index bddbb7d7b6..bddbb7d7b6 100644
--- a/tests/auto/selftests/expected_exceptionthrow.xml
+++ b/tests/auto/testlib/selftests/expected_exceptionthrow.xml
diff --git a/tests/auto/selftests/expected_exceptionthrow.xunitxml b/tests/auto/testlib/selftests/expected_exceptionthrow.xunitxml
index ab0d379255..ab0d379255 100644
--- a/tests/auto/selftests/expected_exceptionthrow.xunitxml
+++ b/tests/auto/testlib/selftests/expected_exceptionthrow.xunitxml
diff --git a/tests/auto/selftests/expected_expectfail.lightxml b/tests/auto/testlib/selftests/expected_expectfail.lightxml
index 003b8e866d..003b8e866d 100644
--- a/tests/auto/selftests/expected_expectfail.lightxml
+++ b/tests/auto/testlib/selftests/expected_expectfail.lightxml
diff --git a/tests/auto/selftests/expected_expectfail.txt b/tests/auto/testlib/selftests/expected_expectfail.txt
index 2eee7ffd75..2eee7ffd75 100644
--- a/tests/auto/selftests/expected_expectfail.txt
+++ b/tests/auto/testlib/selftests/expected_expectfail.txt
diff --git a/tests/auto/selftests/expected_expectfail.xml b/tests/auto/testlib/selftests/expected_expectfail.xml
index 670467eb07..670467eb07 100644
--- a/tests/auto/selftests/expected_expectfail.xml
+++ b/tests/auto/testlib/selftests/expected_expectfail.xml
diff --git a/tests/auto/selftests/expected_expectfail.xunitxml b/tests/auto/testlib/selftests/expected_expectfail.xunitxml
index 32a5cfca81..32a5cfca81 100644
--- a/tests/auto/selftests/expected_expectfail.xunitxml
+++ b/tests/auto/testlib/selftests/expected_expectfail.xunitxml
diff --git a/tests/auto/selftests/expected_failinit.lightxml b/tests/auto/testlib/selftests/expected_failinit.lightxml
index 0edf225bf1..0edf225bf1 100644
--- a/tests/auto/selftests/expected_failinit.lightxml
+++ b/tests/auto/testlib/selftests/expected_failinit.lightxml
diff --git a/tests/auto/selftests/expected_failinit.txt b/tests/auto/testlib/selftests/expected_failinit.txt
index 6f848988de..6f848988de 100644
--- a/tests/auto/selftests/expected_failinit.txt
+++ b/tests/auto/testlib/selftests/expected_failinit.txt
diff --git a/tests/auto/selftests/expected_failinit.xml b/tests/auto/testlib/selftests/expected_failinit.xml
index e1f9e8d069..e1f9e8d069 100644
--- a/tests/auto/selftests/expected_failinit.xml
+++ b/tests/auto/testlib/selftests/expected_failinit.xml
diff --git a/tests/auto/selftests/expected_failinit.xunitxml b/tests/auto/testlib/selftests/expected_failinit.xunitxml
index 3c2e31be29..3c2e31be29 100644
--- a/tests/auto/selftests/expected_failinit.xunitxml
+++ b/tests/auto/testlib/selftests/expected_failinit.xunitxml
diff --git a/tests/auto/selftests/expected_failinitdata.lightxml b/tests/auto/testlib/selftests/expected_failinitdata.lightxml
index 56d8c71ba6..56d8c71ba6 100644
--- a/tests/auto/selftests/expected_failinitdata.lightxml
+++ b/tests/auto/testlib/selftests/expected_failinitdata.lightxml
diff --git a/tests/auto/selftests/expected_failinitdata.txt b/tests/auto/testlib/selftests/expected_failinitdata.txt
index c74308f7af..c74308f7af 100644
--- a/tests/auto/selftests/expected_failinitdata.txt
+++ b/tests/auto/testlib/selftests/expected_failinitdata.txt
diff --git a/tests/auto/selftests/expected_failinitdata.xml b/tests/auto/testlib/selftests/expected_failinitdata.xml
index 47be1b6726..47be1b6726 100644
--- a/tests/auto/selftests/expected_failinitdata.xml
+++ b/tests/auto/testlib/selftests/expected_failinitdata.xml
diff --git a/tests/auto/selftests/expected_failinitdata.xunitxml b/tests/auto/testlib/selftests/expected_failinitdata.xunitxml
index f32ccd5e81..f32ccd5e81 100644
--- a/tests/auto/selftests/expected_failinitdata.xunitxml
+++ b/tests/auto/testlib/selftests/expected_failinitdata.xunitxml
diff --git a/tests/auto/selftests/expected_fatal.txt b/tests/auto/testlib/selftests/expected_fatal.txt
index c8ab3d6ee3..c8ab3d6ee3 100644
--- a/tests/auto/selftests/expected_fatal.txt
+++ b/tests/auto/testlib/selftests/expected_fatal.txt
diff --git a/tests/auto/selftests/expected_fetchbogus.lightxml b/tests/auto/testlib/selftests/expected_fetchbogus.lightxml
index 1812c0e6b5..1812c0e6b5 100644
--- a/tests/auto/selftests/expected_fetchbogus.lightxml
+++ b/tests/auto/testlib/selftests/expected_fetchbogus.lightxml
diff --git a/tests/auto/selftests/expected_fetchbogus.txt b/tests/auto/testlib/selftests/expected_fetchbogus.txt
index 22f8d1beca..22f8d1beca 100644
--- a/tests/auto/selftests/expected_fetchbogus.txt
+++ b/tests/auto/testlib/selftests/expected_fetchbogus.txt
diff --git a/tests/auto/selftests/expected_fetchbogus.xml b/tests/auto/testlib/selftests/expected_fetchbogus.xml
index 7daa065e3d..7daa065e3d 100644
--- a/tests/auto/selftests/expected_fetchbogus.xml
+++ b/tests/auto/testlib/selftests/expected_fetchbogus.xml
diff --git a/tests/auto/selftests/expected_fetchbogus.xunitxml b/tests/auto/testlib/selftests/expected_fetchbogus.xunitxml
index fe31b4b600..fe31b4b600 100644
--- a/tests/auto/selftests/expected_fetchbogus.xunitxml
+++ b/tests/auto/testlib/selftests/expected_fetchbogus.xunitxml
diff --git a/tests/auto/selftests/expected_globaldata.lightxml b/tests/auto/testlib/selftests/expected_globaldata.lightxml
index c4db4bc90c..c4db4bc90c 100644
--- a/tests/auto/selftests/expected_globaldata.lightxml
+++ b/tests/auto/testlib/selftests/expected_globaldata.lightxml
diff --git a/tests/auto/selftests/expected_globaldata.txt b/tests/auto/testlib/selftests/expected_globaldata.txt
index 983376b261..983376b261 100644
--- a/tests/auto/selftests/expected_globaldata.txt
+++ b/tests/auto/testlib/selftests/expected_globaldata.txt
diff --git a/tests/auto/selftests/expected_globaldata.xml b/tests/auto/testlib/selftests/expected_globaldata.xml
index ea4beb1886..ea4beb1886 100644
--- a/tests/auto/selftests/expected_globaldata.xml
+++ b/tests/auto/testlib/selftests/expected_globaldata.xml
diff --git a/tests/auto/selftests/expected_globaldata.xunitxml b/tests/auto/testlib/selftests/expected_globaldata.xunitxml
index d88fdbffa6..d88fdbffa6 100644
--- a/tests/auto/selftests/expected_globaldata.xunitxml
+++ b/tests/auto/testlib/selftests/expected_globaldata.xunitxml
diff --git a/tests/auto/selftests/expected_longstring.lightxml b/tests/auto/testlib/selftests/expected_longstring.lightxml
index 945a9f3d94..945a9f3d94 100644
--- a/tests/auto/selftests/expected_longstring.lightxml
+++ b/tests/auto/testlib/selftests/expected_longstring.lightxml
diff --git a/tests/auto/selftests/expected_longstring.txt b/tests/auto/testlib/selftests/expected_longstring.txt
index 443c6572b0..443c6572b0 100644
--- a/tests/auto/selftests/expected_longstring.txt
+++ b/tests/auto/testlib/selftests/expected_longstring.txt
diff --git a/tests/auto/selftests/expected_longstring.xml b/tests/auto/testlib/selftests/expected_longstring.xml
index 45ad2862fd..45ad2862fd 100644
--- a/tests/auto/selftests/expected_longstring.xml
+++ b/tests/auto/testlib/selftests/expected_longstring.xml
diff --git a/tests/auto/selftests/expected_longstring.xunitxml b/tests/auto/testlib/selftests/expected_longstring.xunitxml
index 6486817dbb..6486817dbb 100644
--- a/tests/auto/selftests/expected_longstring.xunitxml
+++ b/tests/auto/testlib/selftests/expected_longstring.xunitxml
diff --git a/tests/auto/selftests/expected_maxwarnings.lightxml b/tests/auto/testlib/selftests/expected_maxwarnings.lightxml
index 054108fe6d..054108fe6d 100644
--- a/tests/auto/selftests/expected_maxwarnings.lightxml
+++ b/tests/auto/testlib/selftests/expected_maxwarnings.lightxml
diff --git a/tests/auto/selftests/expected_maxwarnings.txt b/tests/auto/testlib/selftests/expected_maxwarnings.txt
index 901350b741..901350b741 100644
--- a/tests/auto/selftests/expected_maxwarnings.txt
+++ b/tests/auto/testlib/selftests/expected_maxwarnings.txt
diff --git a/tests/auto/selftests/expected_maxwarnings.xml b/tests/auto/testlib/selftests/expected_maxwarnings.xml
index 2c3736e263..2c3736e263 100644
--- a/tests/auto/selftests/expected_maxwarnings.xml
+++ b/tests/auto/testlib/selftests/expected_maxwarnings.xml
diff --git a/tests/auto/selftests/expected_maxwarnings.xunitxml b/tests/auto/testlib/selftests/expected_maxwarnings.xunitxml
index b1b0215cef..b1b0215cef 100644
--- a/tests/auto/selftests/expected_maxwarnings.xunitxml
+++ b/tests/auto/testlib/selftests/expected_maxwarnings.xunitxml
diff --git a/tests/auto/selftests/expected_multiexec.lightxml b/tests/auto/testlib/selftests/expected_multiexec.lightxml
index 1a66e92f8f..1a66e92f8f 100644
--- a/tests/auto/selftests/expected_multiexec.lightxml
+++ b/tests/auto/testlib/selftests/expected_multiexec.lightxml
diff --git a/tests/auto/selftests/expected_multiexec.txt b/tests/auto/testlib/selftests/expected_multiexec.txt
index 11d7a909a2..11d7a909a2 100644
--- a/tests/auto/selftests/expected_multiexec.txt
+++ b/tests/auto/testlib/selftests/expected_multiexec.txt
diff --git a/tests/auto/selftests/expected_multiexec.xml b/tests/auto/testlib/selftests/expected_multiexec.xml
index 7f71f6edac..7f71f6edac 100644
--- a/tests/auto/selftests/expected_multiexec.xml
+++ b/tests/auto/testlib/selftests/expected_multiexec.xml
diff --git a/tests/auto/selftests/expected_multiexec.xunitxml b/tests/auto/testlib/selftests/expected_multiexec.xunitxml
index 6bc04c3ddd..6bc04c3ddd 100644
--- a/tests/auto/selftests/expected_multiexec.xunitxml
+++ b/tests/auto/testlib/selftests/expected_multiexec.xunitxml
diff --git a/tests/auto/selftests/expected_qexecstringlist.txt b/tests/auto/testlib/selftests/expected_qexecstringlist.txt
index e6c8f00ae3..e6c8f00ae3 100644
--- a/tests/auto/selftests/expected_qexecstringlist.txt
+++ b/tests/auto/testlib/selftests/expected_qexecstringlist.txt
diff --git a/tests/auto/selftests/expected_singleskip.lightxml b/tests/auto/testlib/selftests/expected_singleskip.lightxml
index bcddcae004..bcddcae004 100644
--- a/tests/auto/selftests/expected_singleskip.lightxml
+++ b/tests/auto/testlib/selftests/expected_singleskip.lightxml
diff --git a/tests/auto/selftests/expected_singleskip.txt b/tests/auto/testlib/selftests/expected_singleskip.txt
index 19cb797dba..19cb797dba 100644
--- a/tests/auto/selftests/expected_singleskip.txt
+++ b/tests/auto/testlib/selftests/expected_singleskip.txt
diff --git a/tests/auto/selftests/expected_singleskip.xml b/tests/auto/testlib/selftests/expected_singleskip.xml
index 483863ec91..483863ec91 100644
--- a/tests/auto/selftests/expected_singleskip.xml
+++ b/tests/auto/testlib/selftests/expected_singleskip.xml
diff --git a/tests/auto/selftests/expected_singleskip.xunitxml b/tests/auto/testlib/selftests/expected_singleskip.xunitxml
index 70968fa1c4..70968fa1c4 100644
--- a/tests/auto/selftests/expected_singleskip.xunitxml
+++ b/tests/auto/testlib/selftests/expected_singleskip.xunitxml
diff --git a/tests/auto/selftests/expected_skip.lightxml b/tests/auto/testlib/selftests/expected_skip.lightxml
index 61cfe7db72..61cfe7db72 100644
--- a/tests/auto/selftests/expected_skip.lightxml
+++ b/tests/auto/testlib/selftests/expected_skip.lightxml
diff --git a/tests/auto/selftests/expected_skip.txt b/tests/auto/testlib/selftests/expected_skip.txt
index 42f89a7cda..42f89a7cda 100644
--- a/tests/auto/selftests/expected_skip.txt
+++ b/tests/auto/testlib/selftests/expected_skip.txt
diff --git a/tests/auto/selftests/expected_skip.xml b/tests/auto/testlib/selftests/expected_skip.xml
index 3c7b1073c8..3c7b1073c8 100644
--- a/tests/auto/selftests/expected_skip.xml
+++ b/tests/auto/testlib/selftests/expected_skip.xml
diff --git a/tests/auto/selftests/expected_skip.xunitxml b/tests/auto/testlib/selftests/expected_skip.xunitxml
index 956d51f531..956d51f531 100644
--- a/tests/auto/selftests/expected_skip.xunitxml
+++ b/tests/auto/testlib/selftests/expected_skip.xunitxml
diff --git a/tests/auto/selftests/expected_skipglobal.lightxml b/tests/auto/testlib/selftests/expected_skipglobal.lightxml
index 66084fc1e8..66084fc1e8 100644
--- a/tests/auto/selftests/expected_skipglobal.lightxml
+++ b/tests/auto/testlib/selftests/expected_skipglobal.lightxml
diff --git a/tests/auto/selftests/expected_skipglobal.txt b/tests/auto/testlib/selftests/expected_skipglobal.txt
index dcd6c442dc..dcd6c442dc 100644
--- a/tests/auto/selftests/expected_skipglobal.txt
+++ b/tests/auto/testlib/selftests/expected_skipglobal.txt
diff --git a/tests/auto/selftests/expected_skipglobal.xml b/tests/auto/testlib/selftests/expected_skipglobal.xml
index 4d25bc9460..4d25bc9460 100644
--- a/tests/auto/selftests/expected_skipglobal.xml
+++ b/tests/auto/testlib/selftests/expected_skipglobal.xml
diff --git a/tests/auto/selftests/expected_skipglobal.xunitxml b/tests/auto/testlib/selftests/expected_skipglobal.xunitxml
index cc43ec8614..cc43ec8614 100644
--- a/tests/auto/selftests/expected_skipglobal.xunitxml
+++ b/tests/auto/testlib/selftests/expected_skipglobal.xunitxml
diff --git a/tests/auto/selftests/expected_skipinit.lightxml b/tests/auto/testlib/selftests/expected_skipinit.lightxml
index 005169e7e6..005169e7e6 100644
--- a/tests/auto/selftests/expected_skipinit.lightxml
+++ b/tests/auto/testlib/selftests/expected_skipinit.lightxml
diff --git a/tests/auto/selftests/expected_skipinit.txt b/tests/auto/testlib/selftests/expected_skipinit.txt
index a1567859bb..a1567859bb 100644
--- a/tests/auto/selftests/expected_skipinit.txt
+++ b/tests/auto/testlib/selftests/expected_skipinit.txt
diff --git a/tests/auto/selftests/expected_skipinit.xml b/tests/auto/testlib/selftests/expected_skipinit.xml
index 5118fd1cb0..5118fd1cb0 100644
--- a/tests/auto/selftests/expected_skipinit.xml
+++ b/tests/auto/testlib/selftests/expected_skipinit.xml
diff --git a/tests/auto/selftests/expected_skipinit.xunitxml b/tests/auto/testlib/selftests/expected_skipinit.xunitxml
index f62df71d96..f62df71d96 100644
--- a/tests/auto/selftests/expected_skipinit.xunitxml
+++ b/tests/auto/testlib/selftests/expected_skipinit.xunitxml
diff --git a/tests/auto/selftests/expected_skipinitdata.lightxml b/tests/auto/testlib/selftests/expected_skipinitdata.lightxml
index bac851ec25..bac851ec25 100644
--- a/tests/auto/selftests/expected_skipinitdata.lightxml
+++ b/tests/auto/testlib/selftests/expected_skipinitdata.lightxml
diff --git a/tests/auto/selftests/expected_skipinitdata.txt b/tests/auto/testlib/selftests/expected_skipinitdata.txt
index 11ca438f3a..11ca438f3a 100644
--- a/tests/auto/selftests/expected_skipinitdata.txt
+++ b/tests/auto/testlib/selftests/expected_skipinitdata.txt
diff --git a/tests/auto/selftests/expected_skipinitdata.xml b/tests/auto/testlib/selftests/expected_skipinitdata.xml
index 05e57b1ab3..05e57b1ab3 100644
--- a/tests/auto/selftests/expected_skipinitdata.xml
+++ b/tests/auto/testlib/selftests/expected_skipinitdata.xml
diff --git a/tests/auto/selftests/expected_skipinitdata.xunitxml b/tests/auto/testlib/selftests/expected_skipinitdata.xunitxml
index 93967eb055..93967eb055 100644
--- a/tests/auto/selftests/expected_skipinitdata.xunitxml
+++ b/tests/auto/testlib/selftests/expected_skipinitdata.xunitxml
diff --git a/tests/auto/selftests/expected_sleep.lightxml b/tests/auto/testlib/selftests/expected_sleep.lightxml
index 1a056c8562..1a056c8562 100644
--- a/tests/auto/selftests/expected_sleep.lightxml
+++ b/tests/auto/testlib/selftests/expected_sleep.lightxml
diff --git a/tests/auto/selftests/expected_sleep.txt b/tests/auto/testlib/selftests/expected_sleep.txt
index 67f1f2f659..67f1f2f659 100644
--- a/tests/auto/selftests/expected_sleep.txt
+++ b/tests/auto/testlib/selftests/expected_sleep.txt
diff --git a/tests/auto/selftests/expected_sleep.xml b/tests/auto/testlib/selftests/expected_sleep.xml
index cbc4d14004..cbc4d14004 100644
--- a/tests/auto/selftests/expected_sleep.xml
+++ b/tests/auto/testlib/selftests/expected_sleep.xml
diff --git a/tests/auto/selftests/expected_sleep.xunitxml b/tests/auto/testlib/selftests/expected_sleep.xunitxml
index 409621e6bc..409621e6bc 100644
--- a/tests/auto/selftests/expected_sleep.xunitxml
+++ b/tests/auto/testlib/selftests/expected_sleep.xunitxml
diff --git a/tests/auto/selftests/expected_strcmp.lightxml b/tests/auto/testlib/selftests/expected_strcmp.lightxml
index 28dc9335ec..28dc9335ec 100644
--- a/tests/auto/selftests/expected_strcmp.lightxml
+++ b/tests/auto/testlib/selftests/expected_strcmp.lightxml
diff --git a/tests/auto/selftests/expected_strcmp.txt b/tests/auto/testlib/selftests/expected_strcmp.txt
index c739d94943..c739d94943 100644
--- a/tests/auto/selftests/expected_strcmp.txt
+++ b/tests/auto/testlib/selftests/expected_strcmp.txt
diff --git a/tests/auto/selftests/expected_strcmp.xml b/tests/auto/testlib/selftests/expected_strcmp.xml
index 13fe772431..13fe772431 100644
--- a/tests/auto/selftests/expected_strcmp.xml
+++ b/tests/auto/testlib/selftests/expected_strcmp.xml
diff --git a/tests/auto/selftests/expected_strcmp.xunitxml b/tests/auto/testlib/selftests/expected_strcmp.xunitxml
index c2b694b8bb..c2b694b8bb 100644
--- a/tests/auto/selftests/expected_strcmp.xunitxml
+++ b/tests/auto/testlib/selftests/expected_strcmp.xunitxml
diff --git a/tests/auto/selftests/expected_subtest.lightxml b/tests/auto/testlib/selftests/expected_subtest.lightxml
index 00c1a992bd..00c1a992bd 100644
--- a/tests/auto/selftests/expected_subtest.lightxml
+++ b/tests/auto/testlib/selftests/expected_subtest.lightxml
diff --git a/tests/auto/selftests/expected_subtest.txt b/tests/auto/testlib/selftests/expected_subtest.txt
index ec459c5b59..ec459c5b59 100644
--- a/tests/auto/selftests/expected_subtest.txt
+++ b/tests/auto/testlib/selftests/expected_subtest.txt
diff --git a/tests/auto/selftests/expected_subtest.xml b/tests/auto/testlib/selftests/expected_subtest.xml
index 5ecb0a2e9f..5ecb0a2e9f 100644
--- a/tests/auto/selftests/expected_subtest.xml
+++ b/tests/auto/testlib/selftests/expected_subtest.xml
diff --git a/tests/auto/selftests/expected_subtest.xunitxml b/tests/auto/testlib/selftests/expected_subtest.xunitxml
index a5f75fe73e..a5f75fe73e 100644
--- a/tests/auto/selftests/expected_subtest.xunitxml
+++ b/tests/auto/testlib/selftests/expected_subtest.xunitxml
diff --git a/tests/auto/selftests/expected_waitwithoutgui.lightxml b/tests/auto/testlib/selftests/expected_waitwithoutgui.lightxml
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/selftests/expected_waitwithoutgui.lightxml
+++ b/tests/auto/testlib/selftests/expected_waitwithoutgui.lightxml
diff --git a/tests/auto/selftests/expected_waitwithoutgui.txt b/tests/auto/testlib/selftests/expected_waitwithoutgui.txt
index a1691071a0..a1691071a0 100644
--- a/tests/auto/selftests/expected_waitwithoutgui.txt
+++ b/tests/auto/testlib/selftests/expected_waitwithoutgui.txt
diff --git a/tests/auto/selftests/expected_waitwithoutgui.xml b/tests/auto/testlib/selftests/expected_waitwithoutgui.xml
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/selftests/expected_waitwithoutgui.xml
+++ b/tests/auto/testlib/selftests/expected_waitwithoutgui.xml
diff --git a/tests/auto/selftests/expected_waitwithoutgui.xunitxml b/tests/auto/testlib/selftests/expected_waitwithoutgui.xunitxml
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/selftests/expected_waitwithoutgui.xunitxml
+++ b/tests/auto/testlib/selftests/expected_waitwithoutgui.xunitxml
diff --git a/tests/auto/selftests/expected_warnings.lightxml b/tests/auto/testlib/selftests/expected_warnings.lightxml
index 116156ed8a..116156ed8a 100644
--- a/tests/auto/selftests/expected_warnings.lightxml
+++ b/tests/auto/testlib/selftests/expected_warnings.lightxml
diff --git a/tests/auto/selftests/expected_warnings.txt b/tests/auto/testlib/selftests/expected_warnings.txt
index 0a9437f47c..0a9437f47c 100644
--- a/tests/auto/selftests/expected_warnings.txt
+++ b/tests/auto/testlib/selftests/expected_warnings.txt
diff --git a/tests/auto/selftests/expected_warnings.xml b/tests/auto/testlib/selftests/expected_warnings.xml
index 13e6c1df79..13e6c1df79 100644
--- a/tests/auto/selftests/expected_warnings.xml
+++ b/tests/auto/testlib/selftests/expected_warnings.xml
diff --git a/tests/auto/selftests/expected_warnings.xunitxml b/tests/auto/testlib/selftests/expected_warnings.xunitxml
index a96393d648..a96393d648 100644
--- a/tests/auto/selftests/expected_warnings.xunitxml
+++ b/tests/auto/testlib/selftests/expected_warnings.xunitxml
diff --git a/tests/auto/selftests/expected_xunit.lightxml b/tests/auto/testlib/selftests/expected_xunit.lightxml
index 92772015c8..92772015c8 100644
--- a/tests/auto/selftests/expected_xunit.lightxml
+++ b/tests/auto/testlib/selftests/expected_xunit.lightxml
diff --git a/tests/auto/selftests/expected_xunit.txt b/tests/auto/testlib/selftests/expected_xunit.txt
index ac8c0dba23..ac8c0dba23 100644
--- a/tests/auto/selftests/expected_xunit.txt
+++ b/tests/auto/testlib/selftests/expected_xunit.txt
diff --git a/tests/auto/selftests/expected_xunit.xml b/tests/auto/testlib/selftests/expected_xunit.xml
index 8992f49993..8992f49993 100644
--- a/tests/auto/selftests/expected_xunit.xml
+++ b/tests/auto/testlib/selftests/expected_xunit.xml
diff --git a/tests/auto/selftests/expected_xunit.xunitxml b/tests/auto/testlib/selftests/expected_xunit.xunitxml
index e77004f819..e77004f819 100644
--- a/tests/auto/selftests/expected_xunit.xunitxml
+++ b/tests/auto/testlib/selftests/expected_xunit.xunitxml
diff --git a/tests/auto/selftests/expectfail/expectfail.pro b/tests/auto/testlib/selftests/expectfail/expectfail.pro
index 1e96018825..1e96018825 100644
--- a/tests/auto/selftests/expectfail/expectfail.pro
+++ b/tests/auto/testlib/selftests/expectfail/expectfail.pro
diff --git a/tests/auto/selftests/expectfail/tst_expectfail.cpp b/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp
index 04aef02cc7..04aef02cc7 100644
--- a/tests/auto/selftests/expectfail/tst_expectfail.cpp
+++ b/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp
diff --git a/tests/auto/selftests/failinit/failinit.pro b/tests/auto/testlib/selftests/failinit/failinit.pro
index 0eedd06427..0eedd06427 100644
--- a/tests/auto/selftests/failinit/failinit.pro
+++ b/tests/auto/testlib/selftests/failinit/failinit.pro
diff --git a/tests/auto/selftests/failinit/tst_failinit.cpp b/tests/auto/testlib/selftests/failinit/tst_failinit.cpp
index 0bf448f428..0bf448f428 100644
--- a/tests/auto/selftests/failinit/tst_failinit.cpp
+++ b/tests/auto/testlib/selftests/failinit/tst_failinit.cpp
diff --git a/tests/auto/selftests/failinitdata/failinitdata.pro b/tests/auto/testlib/selftests/failinitdata/failinitdata.pro
index 61f393771b..61f393771b 100644
--- a/tests/auto/selftests/failinitdata/failinitdata.pro
+++ b/tests/auto/testlib/selftests/failinitdata/failinitdata.pro
diff --git a/tests/auto/selftests/failinitdata/tst_failinitdata.cpp b/tests/auto/testlib/selftests/failinitdata/tst_failinitdata.cpp
index 00e4d12256..00e4d12256 100644
--- a/tests/auto/selftests/failinitdata/tst_failinitdata.cpp
+++ b/tests/auto/testlib/selftests/failinitdata/tst_failinitdata.cpp
diff --git a/tests/auto/selftests/fetchbogus/fetchbogus.pro b/tests/auto/testlib/selftests/fetchbogus/fetchbogus.pro
index 9a5e095d0c..9a5e095d0c 100644
--- a/tests/auto/selftests/fetchbogus/fetchbogus.pro
+++ b/tests/auto/testlib/selftests/fetchbogus/fetchbogus.pro
diff --git a/tests/auto/selftests/fetchbogus/tst_fetchbogus.cpp b/tests/auto/testlib/selftests/fetchbogus/tst_fetchbogus.cpp
index 65d10c180c..65d10c180c 100644
--- a/tests/auto/selftests/fetchbogus/tst_fetchbogus.cpp
+++ b/tests/auto/testlib/selftests/fetchbogus/tst_fetchbogus.cpp
diff --git a/tests/auto/selftests/globaldata/globaldata.pro b/tests/auto/testlib/selftests/globaldata/globaldata.pro
index 71a243f680..71a243f680 100644
--- a/tests/auto/selftests/globaldata/globaldata.pro
+++ b/tests/auto/testlib/selftests/globaldata/globaldata.pro
diff --git a/tests/auto/selftests/globaldata/tst_globaldata.cpp b/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp
index 296f4d674a..296f4d674a 100644
--- a/tests/auto/selftests/globaldata/tst_globaldata.cpp
+++ b/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp
diff --git a/tests/auto/selftests/longstring/longstring.pro b/tests/auto/testlib/selftests/longstring/longstring.pro
index d496691e60..d496691e60 100644
--- a/tests/auto/selftests/longstring/longstring.pro
+++ b/tests/auto/testlib/selftests/longstring/longstring.pro
diff --git a/tests/auto/selftests/longstring/tst_longstring.cpp b/tests/auto/testlib/selftests/longstring/tst_longstring.cpp
index 99dac95ba1..99dac95ba1 100644
--- a/tests/auto/selftests/longstring/tst_longstring.cpp
+++ b/tests/auto/testlib/selftests/longstring/tst_longstring.cpp
diff --git a/tests/auto/selftests/maxwarnings/maxwarnings.cpp b/tests/auto/testlib/selftests/maxwarnings/maxwarnings.cpp
index 398d0d8e4a..398d0d8e4a 100644
--- a/tests/auto/selftests/maxwarnings/maxwarnings.cpp
+++ b/tests/auto/testlib/selftests/maxwarnings/maxwarnings.cpp
diff --git a/tests/auto/selftests/maxwarnings/maxwarnings.pro b/tests/auto/testlib/selftests/maxwarnings/maxwarnings.pro
index 42a122d02a..42a122d02a 100644
--- a/tests/auto/selftests/maxwarnings/maxwarnings.pro
+++ b/tests/auto/testlib/selftests/maxwarnings/maxwarnings.pro
diff --git a/tests/auto/selftests/multiexec/multiexec.pro b/tests/auto/testlib/selftests/multiexec/multiexec.pro
index 5a3f5affaf..5a3f5affaf 100644
--- a/tests/auto/selftests/multiexec/multiexec.pro
+++ b/tests/auto/testlib/selftests/multiexec/multiexec.pro
diff --git a/tests/auto/selftests/multiexec/tst_multiexec.cpp b/tests/auto/testlib/selftests/multiexec/tst_multiexec.cpp
index 0480714c77..0480714c77 100644
--- a/tests/auto/selftests/multiexec/tst_multiexec.cpp
+++ b/tests/auto/testlib/selftests/multiexec/tst_multiexec.cpp
diff --git a/tests/auto/selftests/qexecstringlist/qexecstringlist.pro b/tests/auto/testlib/selftests/qexecstringlist/qexecstringlist.pro
index d994ceabf3..d994ceabf3 100644
--- a/tests/auto/selftests/qexecstringlist/qexecstringlist.pro
+++ b/tests/auto/testlib/selftests/qexecstringlist/qexecstringlist.pro
diff --git a/tests/auto/selftests/qexecstringlist/tst_qexecstringlist.cpp b/tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp
index aacfab76f1..aacfab76f1 100644
--- a/tests/auto/selftests/qexecstringlist/tst_qexecstringlist.cpp
+++ b/tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp
diff --git a/tests/auto/selftests/selftests.pro b/tests/auto/testlib/selftests/selftests.pro
index 2f1c327e34..2f1c327e34 100644
--- a/tests/auto/selftests/selftests.pro
+++ b/tests/auto/testlib/selftests/selftests.pro
diff --git a/tests/auto/selftests/selftests.qrc b/tests/auto/testlib/selftests/selftests.qrc
index f82722b0e2..f82722b0e2 100644
--- a/tests/auto/selftests/selftests.qrc
+++ b/tests/auto/testlib/selftests/selftests.qrc
diff --git a/tests/auto/selftests/singleskip/singleskip.pro b/tests/auto/testlib/selftests/singleskip/singleskip.pro
index 34a0f72568..34a0f72568 100644
--- a/tests/auto/selftests/singleskip/singleskip.pro
+++ b/tests/auto/testlib/selftests/singleskip/singleskip.pro
diff --git a/tests/auto/selftests/singleskip/tst_singleskip.cpp b/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp
index 5567b88022..5567b88022 100644
--- a/tests/auto/selftests/singleskip/tst_singleskip.cpp
+++ b/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp
diff --git a/tests/auto/selftests/skip/skip.pro b/tests/auto/testlib/selftests/skip/skip.pro
index 4f4b486ed4..4f4b486ed4 100644
--- a/tests/auto/selftests/skip/skip.pro
+++ b/tests/auto/testlib/selftests/skip/skip.pro
diff --git a/tests/auto/selftests/skip/tst_skip.cpp b/tests/auto/testlib/selftests/skip/tst_skip.cpp
index b5b53884b7..b5b53884b7 100644
--- a/tests/auto/selftests/skip/tst_skip.cpp
+++ b/tests/auto/testlib/selftests/skip/tst_skip.cpp
diff --git a/tests/auto/selftests/skipglobal/skipglobal.pro b/tests/auto/testlib/selftests/skipglobal/skipglobal.pro
index fb8d40cbd9..fb8d40cbd9 100644
--- a/tests/auto/selftests/skipglobal/skipglobal.pro
+++ b/tests/auto/testlib/selftests/skipglobal/skipglobal.pro
diff --git a/tests/auto/selftests/skipglobal/tst_skipglobal.cpp b/tests/auto/testlib/selftests/skipglobal/tst_skipglobal.cpp
index aec32ed0c0..aec32ed0c0 100644
--- a/tests/auto/selftests/skipglobal/tst_skipglobal.cpp
+++ b/tests/auto/testlib/selftests/skipglobal/tst_skipglobal.cpp
diff --git a/tests/auto/selftests/skipinit/skipinit.pro b/tests/auto/testlib/selftests/skipinit/skipinit.pro
index 3d458f3669..3d458f3669 100644
--- a/tests/auto/selftests/skipinit/skipinit.pro
+++ b/tests/auto/testlib/selftests/skipinit/skipinit.pro
diff --git a/tests/auto/selftests/skipinit/tst_skipinit.cpp b/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp
index 4cd882f747..4cd882f747 100644
--- a/tests/auto/selftests/skipinit/tst_skipinit.cpp
+++ b/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp
diff --git a/tests/auto/selftests/skipinitdata/skipinitdata.pro b/tests/auto/testlib/selftests/skipinitdata/skipinitdata.pro
index 26119eb70c..26119eb70c 100644
--- a/tests/auto/selftests/skipinitdata/skipinitdata.pro
+++ b/tests/auto/testlib/selftests/skipinitdata/skipinitdata.pro
diff --git a/tests/auto/selftests/skipinitdata/tst_skipinitdata.cpp b/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp
index fb97fc978d..fb97fc978d 100644
--- a/tests/auto/selftests/skipinitdata/tst_skipinitdata.cpp
+++ b/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp
diff --git a/tests/auto/selftests/sleep/sleep.pro b/tests/auto/testlib/selftests/sleep/sleep.pro
index d963e73ed2..d963e73ed2 100644
--- a/tests/auto/selftests/sleep/sleep.pro
+++ b/tests/auto/testlib/selftests/sleep/sleep.pro
diff --git a/tests/auto/selftests/sleep/tst_sleep.cpp b/tests/auto/testlib/selftests/sleep/tst_sleep.cpp
index e509954b5d..e509954b5d 100644
--- a/tests/auto/selftests/sleep/tst_sleep.cpp
+++ b/tests/auto/testlib/selftests/sleep/tst_sleep.cpp
diff --git a/tests/auto/selftests/strcmp/strcmp.pro b/tests/auto/testlib/selftests/strcmp/strcmp.pro
index 8cf1caa906..8cf1caa906 100644
--- a/tests/auto/selftests/strcmp/strcmp.pro
+++ b/tests/auto/testlib/selftests/strcmp/strcmp.pro
diff --git a/tests/auto/selftests/strcmp/tst_strcmp.cpp b/tests/auto/testlib/selftests/strcmp/tst_strcmp.cpp
index 89689bb3bc..89689bb3bc 100644
--- a/tests/auto/selftests/strcmp/tst_strcmp.cpp
+++ b/tests/auto/testlib/selftests/strcmp/tst_strcmp.cpp
diff --git a/tests/auto/selftests/subtest/subtest.pro b/tests/auto/testlib/selftests/subtest/subtest.pro
index ac237790d2..ac237790d2 100644
--- a/tests/auto/selftests/subtest/subtest.pro
+++ b/tests/auto/testlib/selftests/subtest/subtest.pro
diff --git a/tests/auto/selftests/subtest/tst_subtest.cpp b/tests/auto/testlib/selftests/subtest/tst_subtest.cpp
index 4404a5103f..4404a5103f 100644
--- a/tests/auto/selftests/subtest/tst_subtest.cpp
+++ b/tests/auto/testlib/selftests/subtest/tst_subtest.cpp
diff --git a/tests/auto/testlib/selftests/test/test.pro b/tests/auto/testlib/selftests/test/test.pro
new file mode 100644
index 0000000000..af3370bac0
--- /dev/null
+++ b/tests/auto/testlib/selftests/test/test.pro
@@ -0,0 +1,17 @@
+load(qttest_p4)
+SOURCES += ../tst_selftests.cpp
+QT += core xml testlib-private
+
+TARGET = ../tst_selftests
+
+win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_selftests
+} else {
+ TARGET = ../../release/tst_selftests
+ }
+}
+
+RESOURCES += ../selftests.qrc
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/selftests/tst_selftests.cpp b/tests/auto/testlib/selftests/tst_selftests.cpp
index 138e47927f..138e47927f 100644
--- a/tests/auto/selftests/tst_selftests.cpp
+++ b/tests/auto/testlib/selftests/tst_selftests.cpp
diff --git a/tests/auto/selftests/waitwithoutgui/tst_waitwithoutgui.cpp b/tests/auto/testlib/selftests/waitwithoutgui/tst_waitwithoutgui.cpp
index 9c0bb862b3..9c0bb862b3 100644
--- a/tests/auto/selftests/waitwithoutgui/tst_waitwithoutgui.cpp
+++ b/tests/auto/testlib/selftests/waitwithoutgui/tst_waitwithoutgui.cpp
diff --git a/tests/auto/selftests/waitwithoutgui/waitwithoutgui.pro b/tests/auto/testlib/selftests/waitwithoutgui/waitwithoutgui.pro
index 6c28390da9..6c28390da9 100644
--- a/tests/auto/selftests/waitwithoutgui/waitwithoutgui.pro
+++ b/tests/auto/testlib/selftests/waitwithoutgui/waitwithoutgui.pro
diff --git a/tests/auto/selftests/warnings/tst_warnings.cpp b/tests/auto/testlib/selftests/warnings/tst_warnings.cpp
index 52a992c763..52a992c763 100644
--- a/tests/auto/selftests/warnings/tst_warnings.cpp
+++ b/tests/auto/testlib/selftests/warnings/tst_warnings.cpp
diff --git a/tests/auto/selftests/warnings/warnings.pro b/tests/auto/testlib/selftests/warnings/warnings.pro
index 147d96a02f..147d96a02f 100644
--- a/tests/auto/selftests/warnings/warnings.pro
+++ b/tests/auto/testlib/selftests/warnings/warnings.pro
diff --git a/tests/auto/selftests/xunit/tst_xunit.cpp b/tests/auto/testlib/selftests/xunit/tst_xunit.cpp
index 8f2f712426..8f2f712426 100644
--- a/tests/auto/selftests/xunit/tst_xunit.cpp
+++ b/tests/auto/testlib/selftests/xunit/tst_xunit.cpp
diff --git a/tests/auto/selftests/xunit/xunit.pro b/tests/auto/testlib/selftests/xunit/xunit.pro
index e523520ed6..e523520ed6 100644
--- a/tests/auto/selftests/xunit/xunit.pro
+++ b/tests/auto/testlib/selftests/xunit/xunit.pro
diff --git a/tests/auto/testlib/testlib.pro b/tests/auto/testlib/testlib.pro
new file mode 100644
index 0000000000..3a66f8cc6c
--- /dev/null
+++ b/tests/auto/testlib/testlib.pro
@@ -0,0 +1,5 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qsignalspy \
+ selftests \
+
diff --git a/tests/auto/moc/.gitattributes b/tests/auto/tools/moc/.gitattributes
index ccf34c31a4..ccf34c31a4 100644
--- a/tests/auto/moc/.gitattributes
+++ b/tests/auto/tools/moc/.gitattributes
diff --git a/tests/auto/moc/.gitignore b/tests/auto/tools/moc/.gitignore
index 86a604a776..86a604a776 100644
--- a/tests/auto/moc/.gitignore
+++ b/tests/auto/tools/moc/.gitignore
diff --git a/tests/auto/moc/Header b/tests/auto/tools/moc/Header
index b7066b7635..b7066b7635 100644
--- a/tests/auto/moc/Header
+++ b/tests/auto/tools/moc/Header
diff --git a/tests/auto/moc/Test.framework/Headers/testinterface.h b/tests/auto/tools/moc/Test.framework/Headers/testinterface.h
index 9662a02bc3..9662a02bc3 100644
--- a/tests/auto/moc/Test.framework/Headers/testinterface.h
+++ b/tests/auto/tools/moc/Test.framework/Headers/testinterface.h
diff --git a/tests/auto/moc/assign-namespace.h b/tests/auto/tools/moc/assign-namespace.h
index fc6631c18b..fc6631c18b 100644
--- a/tests/auto/moc/assign-namespace.h
+++ b/tests/auto/tools/moc/assign-namespace.h
diff --git a/tests/auto/moc/backslash-newlines.h b/tests/auto/tools/moc/backslash-newlines.h
index d65c15c6d5..d65c15c6d5 100644
--- a/tests/auto/moc/backslash-newlines.h
+++ b/tests/auto/tools/moc/backslash-newlines.h
diff --git a/tests/auto/moc/c-comments.h b/tests/auto/tools/moc/c-comments.h
index 8c0709338d..8c0709338d 100644
--- a/tests/auto/moc/c-comments.h
+++ b/tests/auto/tools/moc/c-comments.h
diff --git a/tests/auto/moc/cstyle-enums.h b/tests/auto/tools/moc/cstyle-enums.h
index 59076a535f..59076a535f 100644
--- a/tests/auto/moc/cstyle-enums.h
+++ b/tests/auto/tools/moc/cstyle-enums.h
diff --git a/tests/auto/moc/dir-in-include-path.h b/tests/auto/tools/moc/dir-in-include-path.h
index b69514ec74..b69514ec74 100644
--- a/tests/auto/moc/dir-in-include-path.h
+++ b/tests/auto/tools/moc/dir-in-include-path.h
diff --git a/tests/auto/moc/error-on-wrong-notify.h b/tests/auto/tools/moc/error-on-wrong-notify.h
index 381932a265..381932a265 100644
--- a/tests/auto/moc/error-on-wrong-notify.h
+++ b/tests/auto/tools/moc/error-on-wrong-notify.h
diff --git a/tests/auto/moc/escapes-in-string-literals.h b/tests/auto/tools/moc/escapes-in-string-literals.h
index 437ceae82b..437ceae82b 100644
--- a/tests/auto/moc/escapes-in-string-literals.h
+++ b/tests/auto/tools/moc/escapes-in-string-literals.h
diff --git a/tests/auto/moc/extraqualification.h b/tests/auto/tools/moc/extraqualification.h
index b2b028eb03..b2b028eb03 100644
--- a/tests/auto/moc/extraqualification.h
+++ b/tests/auto/tools/moc/extraqualification.h
diff --git a/tests/auto/moc/forgotten-qinterface.h b/tests/auto/tools/moc/forgotten-qinterface.h
index e52a63e4df..e52a63e4df 100644
--- a/tests/auto/moc/forgotten-qinterface.h
+++ b/tests/auto/tools/moc/forgotten-qinterface.h
diff --git a/tests/auto/moc/gadgetwithnoenums.h b/tests/auto/tools/moc/gadgetwithnoenums.h
index c5ec939b3a..c5ec939b3a 100644
--- a/tests/auto/moc/gadgetwithnoenums.h
+++ b/tests/auto/tools/moc/gadgetwithnoenums.h
diff --git a/tests/auto/moc/interface-from-framework.h b/tests/auto/tools/moc/interface-from-framework.h
index 242d9f2286..242d9f2286 100644
--- a/tests/auto/moc/interface-from-framework.h
+++ b/tests/auto/tools/moc/interface-from-framework.h
diff --git a/tests/auto/moc/macro-on-cmdline.h b/tests/auto/tools/moc/macro-on-cmdline.h
index a1c162d10b..a1c162d10b 100644
--- a/tests/auto/moc/macro-on-cmdline.h
+++ b/tests/auto/tools/moc/macro-on-cmdline.h
diff --git a/tests/auto/tools/moc/moc.pro b/tests/auto/tools/moc/moc.pro
new file mode 100644
index 0000000000..f91c2f5b85
--- /dev/null
+++ b/tests/auto/tools/moc/moc.pro
@@ -0,0 +1,29 @@
+load(qttest_p4)
+
+#exists(/usr/include/boost/spirit.hpp) {
+# message("including boost headers in test")
+# DEFINES += PARSE_BOOST
+# # need to add explicitly so that it ends up in moc's search path
+# INCLUDEPATH += /usr/include
+#}
+
+INCLUDEPATH += testproject/include testproject
+
+DEFINES += SRCDIR=\\\"$$PWD\\\"
+cross_compile: DEFINES += MOC_CROSS_COMPILED
+
+HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-newlines.h oldstyle-casts.h \
+ slots-with-void-template.h qinvokable.h namespaced-flags.h trigraphs.h \
+ escapes-in-string-literals.h cstyle-enums.h qprivateslots.h gadgetwithnoenums.h \
+ dir-in-include-path.h single_function_keyword.h task192552.h task189996.h \
+ task234909.h task240368.h pure-virtual-signals.h
+if(*-g++*|*-icc*|*-clang|*-llvm):!irix-*:!win32-*: HEADERS += os9-newlines.h win-newlines.h
+SOURCES += tst_moc.cpp
+
+QT += sql network
+contains(QT_CONFIG, dbus){
+ DEFINES += WITH_DBUS
+ QT += dbus
+}
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/moc/namespaced-flags.h b/tests/auto/tools/moc/namespaced-flags.h
index b1c10792c1..b1c10792c1 100644
--- a/tests/auto/moc/namespaced-flags.h
+++ b/tests/auto/tools/moc/namespaced-flags.h
diff --git a/tests/auto/moc/no-keywords.h b/tests/auto/tools/moc/no-keywords.h
index 2da7100aeb..2da7100aeb 100644
--- a/tests/auto/moc/no-keywords.h
+++ b/tests/auto/tools/moc/no-keywords.h
diff --git a/tests/auto/moc/oldstyle-casts.h b/tests/auto/tools/moc/oldstyle-casts.h
index 2754bb4e18..2754bb4e18 100644
--- a/tests/auto/moc/oldstyle-casts.h
+++ b/tests/auto/tools/moc/oldstyle-casts.h
diff --git a/tests/auto/moc/os9-newlines.h b/tests/auto/tools/moc/os9-newlines.h
index 335724d808..335724d808 100644
--- a/tests/auto/moc/os9-newlines.h
+++ b/tests/auto/tools/moc/os9-newlines.h
diff --git a/tests/auto/moc/parse-boost.h b/tests/auto/tools/moc/parse-boost.h
index 9453f7f2bf..9453f7f2bf 100644
--- a/tests/auto/moc/parse-boost.h
+++ b/tests/auto/tools/moc/parse-boost.h
diff --git a/tests/auto/moc/pure-virtual-signals.h b/tests/auto/tools/moc/pure-virtual-signals.h
index a70370c5bc..a70370c5bc 100644
--- a/tests/auto/moc/pure-virtual-signals.h
+++ b/tests/auto/tools/moc/pure-virtual-signals.h
diff --git a/tests/auto/moc/qinvokable.h b/tests/auto/tools/moc/qinvokable.h
index 313a49d7a8..313a49d7a8 100644
--- a/tests/auto/moc/qinvokable.h
+++ b/tests/auto/tools/moc/qinvokable.h
diff --git a/tests/auto/moc/qprivateslots.h b/tests/auto/tools/moc/qprivateslots.h
index 4713b41522..4713b41522 100644
--- a/tests/auto/moc/qprivateslots.h
+++ b/tests/auto/tools/moc/qprivateslots.h
diff --git a/tests/auto/moc/single_function_keyword.h b/tests/auto/tools/moc/single_function_keyword.h
index 1ce2517e4c..1ce2517e4c 100644
--- a/tests/auto/moc/single_function_keyword.h
+++ b/tests/auto/tools/moc/single_function_keyword.h
diff --git a/tests/auto/moc/slots-with-void-template.h b/tests/auto/tools/moc/slots-with-void-template.h
index 62eb42e13d..62eb42e13d 100644
--- a/tests/auto/moc/slots-with-void-template.h
+++ b/tests/auto/tools/moc/slots-with-void-template.h
diff --git a/tests/auto/moc/task189996.h b/tests/auto/tools/moc/task189996.h
index 6f8701f008..6f8701f008 100644
--- a/tests/auto/moc/task189996.h
+++ b/tests/auto/tools/moc/task189996.h
diff --git a/tests/auto/moc/task192552.h b/tests/auto/tools/moc/task192552.h
index 016d12a12a..016d12a12a 100644
--- a/tests/auto/moc/task192552.h
+++ b/tests/auto/tools/moc/task192552.h
diff --git a/tests/auto/moc/task234909.h b/tests/auto/tools/moc/task234909.h
index a24e0b301a..a24e0b301a 100644
--- a/tests/auto/moc/task234909.h
+++ b/tests/auto/tools/moc/task234909.h
diff --git a/tests/auto/moc/task240368.h b/tests/auto/tools/moc/task240368.h
index 320cad3ff8..320cad3ff8 100644
--- a/tests/auto/moc/task240368.h
+++ b/tests/auto/tools/moc/task240368.h
diff --git a/tests/auto/qdiriterator/entrylist/directory/dummy b/tests/auto/tools/moc/task71021/dummy
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qdiriterator/entrylist/directory/dummy
+++ b/tests/auto/tools/moc/task71021/dummy
diff --git a/tests/auto/moc/task87883.h b/tests/auto/tools/moc/task87883.h
index aedbd386c9..aedbd386c9 100644
--- a/tests/auto/moc/task87883.h
+++ b/tests/auto/tools/moc/task87883.h
diff --git a/tests/auto/moc/template-gtgt.h b/tests/auto/tools/moc/template-gtgt.h
index 42aae6e633..42aae6e633 100644
--- a/tests/auto/moc/template-gtgt.h
+++ b/tests/auto/tools/moc/template-gtgt.h
diff --git a/tests/auto/moc/testproject/Plugin/Plugin.h b/tests/auto/tools/moc/testproject/Plugin/Plugin.h
index 6c8cffe7d9..6c8cffe7d9 100644
--- a/tests/auto/moc/testproject/Plugin/Plugin.h
+++ b/tests/auto/tools/moc/testproject/Plugin/Plugin.h
diff --git a/tests/auto/moc/testproject/include/Plugin b/tests/auto/tools/moc/testproject/include/Plugin
index d63149c930..d63149c930 100644
--- a/tests/auto/moc/testproject/include/Plugin
+++ b/tests/auto/tools/moc/testproject/include/Plugin
diff --git a/tests/auto/moc/trigraphs.h b/tests/auto/tools/moc/trigraphs.h
index cb074e7dcd..cb074e7dcd 100644
--- a/tests/auto/moc/trigraphs.h
+++ b/tests/auto/tools/moc/trigraphs.h
diff --git a/tests/auto/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp
index f3107b9c85..f3107b9c85 100644
--- a/tests/auto/moc/tst_moc.cpp
+++ b/tests/auto/tools/moc/tst_moc.cpp
diff --git a/tests/auto/moc/using-namespaces.h b/tests/auto/tools/moc/using-namespaces.h
index 6be9c283a3..6be9c283a3 100644
--- a/tests/auto/moc/using-namespaces.h
+++ b/tests/auto/tools/moc/using-namespaces.h
diff --git a/tests/auto/moc/warn-on-multiple-qobject-subclasses.h b/tests/auto/tools/moc/warn-on-multiple-qobject-subclasses.h
index a72f86a7cc..a72f86a7cc 100644
--- a/tests/auto/moc/warn-on-multiple-qobject-subclasses.h
+++ b/tests/auto/tools/moc/warn-on-multiple-qobject-subclasses.h
diff --git a/tests/auto/moc/warn-on-property-without-read.h b/tests/auto/tools/moc/warn-on-property-without-read.h
index 77fbedab14..77fbedab14 100644
--- a/tests/auto/moc/warn-on-property-without-read.h
+++ b/tests/auto/tools/moc/warn-on-property-without-read.h
diff --git a/tests/auto/moc/win-newlines.h b/tests/auto/tools/moc/win-newlines.h
index 568cd300f7..568cd300f7 100644
--- a/tests/auto/moc/win-newlines.h
+++ b/tests/auto/tools/moc/win-newlines.h
diff --git a/tests/auto/qmake/.gitignore b/tests/auto/tools/qmake/.gitignore
index bac457d34d..bac457d34d 100644
--- a/tests/auto/qmake/.gitignore
+++ b/tests/auto/tools/qmake/.gitignore
diff --git a/tests/auto/tools/qmake/qmake.pro b/tests/auto/tools/qmake/qmake.pro
new file mode 100644
index 0000000000..40cf5a81b6
--- /dev/null
+++ b/tests/auto/tools/qmake/qmake.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+HEADERS += testcompiler.h
+SOURCES += tst_qmake.cpp testcompiler.cpp
+QT -= gui
+
+cross_compile: DEFINES += QMAKE_CROSS_COMPILED
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/qmake/testcompiler.cpp b/tests/auto/tools/qmake/testcompiler.cpp
index 1f21713b99..1f21713b99 100644
--- a/tests/auto/qmake/testcompiler.cpp
+++ b/tests/auto/tools/qmake/testcompiler.cpp
diff --git a/tests/auto/qmake/testcompiler.h b/tests/auto/tools/qmake/testcompiler.h
index fa827685f7..fa827685f7 100644
--- a/tests/auto/qmake/testcompiler.h
+++ b/tests/auto/tools/qmake/testcompiler.h
diff --git a/tests/auto/qmake/testdata/bundle-spaces/bundle-spaces.pro b/tests/auto/tools/qmake/testdata/bundle-spaces/bundle-spaces.pro
index 644a817a8e..644a817a8e 100644
--- a/tests/auto/qmake/testdata/bundle-spaces/bundle-spaces.pro
+++ b/tests/auto/tools/qmake/testdata/bundle-spaces/bundle-spaces.pro
diff --git a/tests/auto/qmake/testdata/bundle-spaces/existing file b/tests/auto/tools/qmake/testdata/bundle-spaces/existing file
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qmake/testdata/bundle-spaces/existing file
+++ b/tests/auto/tools/qmake/testdata/bundle-spaces/existing file
diff --git a/tests/auto/qmake/testdata/bundle-spaces/main.cpp b/tests/auto/tools/qmake/testdata/bundle-spaces/main.cpp
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qmake/testdata/bundle-spaces/main.cpp
+++ b/tests/auto/tools/qmake/testdata/bundle-spaces/main.cpp
diff --git a/tests/auto/qmake/testdata/bundle-spaces/some-file b/tests/auto/tools/qmake/testdata/bundle-spaces/some-file
index 9975dba4ba..9975dba4ba 100644
--- a/tests/auto/qmake/testdata/bundle-spaces/some-file
+++ b/tests/auto/tools/qmake/testdata/bundle-spaces/some-file
diff --git a/tests/auto/qmake/testdata/comments/comments.pro b/tests/auto/tools/qmake/testdata/comments/comments.pro
index 5f1ac083fa..5f1ac083fa 100644
--- a/tests/auto/qmake/testdata/comments/comments.pro
+++ b/tests/auto/tools/qmake/testdata/comments/comments.pro
diff --git a/tests/auto/qmake/testdata/duplicateLibraryEntries/duplib.pro b/tests/auto/tools/qmake/testdata/duplicateLibraryEntries/duplib.pro
index 3c30bbbdcd..3c30bbbdcd 100644
--- a/tests/auto/qmake/testdata/duplicateLibraryEntries/duplib.pro
+++ b/tests/auto/tools/qmake/testdata/duplicateLibraryEntries/duplib.pro
diff --git a/tests/auto/qmake/testdata/export_across_file_boundaries/.qmake.cache b/tests/auto/tools/qmake/testdata/export_across_file_boundaries/.qmake.cache
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qmake/testdata/export_across_file_boundaries/.qmake.cache
+++ b/tests/auto/tools/qmake/testdata/export_across_file_boundaries/.qmake.cache
diff --git a/tests/auto/qmake/testdata/export_across_file_boundaries/features/default_pre.prf b/tests/auto/tools/qmake/testdata/export_across_file_boundaries/features/default_pre.prf
index 123f9bc53d..123f9bc53d 100644
--- a/tests/auto/qmake/testdata/export_across_file_boundaries/features/default_pre.prf
+++ b/tests/auto/tools/qmake/testdata/export_across_file_boundaries/features/default_pre.prf
diff --git a/tests/auto/qmake/testdata/export_across_file_boundaries/foo.pro b/tests/auto/tools/qmake/testdata/export_across_file_boundaries/foo.pro
index c3196cbceb..c3196cbceb 100644
--- a/tests/auto/qmake/testdata/export_across_file_boundaries/foo.pro
+++ b/tests/auto/tools/qmake/testdata/export_across_file_boundaries/foo.pro
diff --git a/tests/auto/qmake/testdata/export_across_file_boundaries/oink.pri b/tests/auto/tools/qmake/testdata/export_across_file_boundaries/oink.pri
index cbd2d0f7d0..cbd2d0f7d0 100644
--- a/tests/auto/qmake/testdata/export_across_file_boundaries/oink.pri
+++ b/tests/auto/tools/qmake/testdata/export_across_file_boundaries/oink.pri
diff --git a/tests/auto/qmake/testdata/findDeps/findDeps.pro b/tests/auto/tools/qmake/testdata/findDeps/findDeps.pro
index 43577b5122..43577b5122 100644
--- a/tests/auto/qmake/testdata/findDeps/findDeps.pro
+++ b/tests/auto/tools/qmake/testdata/findDeps/findDeps.pro
diff --git a/tests/auto/qmake/testdata/findDeps/main.cpp b/tests/auto/tools/qmake/testdata/findDeps/main.cpp
index f203909aa4..f203909aa4 100644
--- a/tests/auto/qmake/testdata/findDeps/main.cpp
+++ b/tests/auto/tools/qmake/testdata/findDeps/main.cpp
diff --git a/tests/auto/qmake/testdata/findDeps/object1.h b/tests/auto/tools/qmake/testdata/findDeps/object1.h
index fe29c9d5d8..fe29c9d5d8 100644
--- a/tests/auto/qmake/testdata/findDeps/object1.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object1.h
diff --git a/tests/auto/qmake/testdata/findDeps/object2.h b/tests/auto/tools/qmake/testdata/findDeps/object2.h
index c03434a7a7..c03434a7a7 100644
--- a/tests/auto/qmake/testdata/findDeps/object2.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object2.h
diff --git a/tests/auto/qmake/testdata/findDeps/object3.h b/tests/auto/tools/qmake/testdata/findDeps/object3.h
index 63fd98248a..63fd98248a 100644
--- a/tests/auto/qmake/testdata/findDeps/object3.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object3.h
diff --git a/tests/auto/qmake/testdata/findDeps/object4.h b/tests/auto/tools/qmake/testdata/findDeps/object4.h
index d1191b72cb..d1191b72cb 100644
--- a/tests/auto/qmake/testdata/findDeps/object4.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object4.h
diff --git a/tests/auto/qmake/testdata/findDeps/object5.h b/tests/auto/tools/qmake/testdata/findDeps/object5.h
index 3bce90fa0b..3bce90fa0b 100644
--- a/tests/auto/qmake/testdata/findDeps/object5.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object5.h
diff --git a/tests/auto/qmake/testdata/findDeps/object6.h b/tests/auto/tools/qmake/testdata/findDeps/object6.h
index 1c4bbd22b5..1c4bbd22b5 100644
--- a/tests/auto/qmake/testdata/findDeps/object6.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object6.h
diff --git a/tests/auto/qmake/testdata/findDeps/object7.h b/tests/auto/tools/qmake/testdata/findDeps/object7.h
index 8b0f328a30..8b0f328a30 100644
--- a/tests/auto/qmake/testdata/findDeps/object7.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object7.h
diff --git a/tests/auto/qmake/testdata/findDeps/object8.h b/tests/auto/tools/qmake/testdata/findDeps/object8.h
index d768e1d9b5..d768e1d9b5 100644
--- a/tests/auto/qmake/testdata/findDeps/object8.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object8.h
diff --git a/tests/auto/qmake/testdata/findDeps/object9.h b/tests/auto/tools/qmake/testdata/findDeps/object9.h
index 734437ad6f..734437ad6f 100644
--- a/tests/auto/qmake/testdata/findDeps/object9.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object9.h
diff --git a/tests/auto/qmake/testdata/findMocs/findMocs.pro b/tests/auto/tools/qmake/testdata/findMocs/findMocs.pro
index 1469b4c5c3..1469b4c5c3 100644
--- a/tests/auto/qmake/testdata/findMocs/findMocs.pro
+++ b/tests/auto/tools/qmake/testdata/findMocs/findMocs.pro
diff --git a/tests/auto/qmake/testdata/findMocs/main.cpp b/tests/auto/tools/qmake/testdata/findMocs/main.cpp
index 2413dcc2a1..2413dcc2a1 100644
--- a/tests/auto/qmake/testdata/findMocs/main.cpp
+++ b/tests/auto/tools/qmake/testdata/findMocs/main.cpp
diff --git a/tests/auto/qmake/testdata/findMocs/object1.h b/tests/auto/tools/qmake/testdata/findMocs/object1.h
index c62b314e14..c62b314e14 100644
--- a/tests/auto/qmake/testdata/findMocs/object1.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object1.h
diff --git a/tests/auto/qmake/testdata/findMocs/object2.h b/tests/auto/tools/qmake/testdata/findMocs/object2.h
index 8a873c3875..8a873c3875 100644
--- a/tests/auto/qmake/testdata/findMocs/object2.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object2.h
diff --git a/tests/auto/qmake/testdata/findMocs/object3.h b/tests/auto/tools/qmake/testdata/findMocs/object3.h
index 6e61f1cb5f..6e61f1cb5f 100644
--- a/tests/auto/qmake/testdata/findMocs/object3.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object3.h
diff --git a/tests/auto/qmake/testdata/findMocs/object4.h b/tests/auto/tools/qmake/testdata/findMocs/object4.h
index 2e51228476..2e51228476 100644
--- a/tests/auto/qmake/testdata/findMocs/object4.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object4.h
diff --git a/tests/auto/qmake/testdata/findMocs/object5.h b/tests/auto/tools/qmake/testdata/findMocs/object5.h
index d3addb2ddf..d3addb2ddf 100644
--- a/tests/auto/qmake/testdata/findMocs/object5.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object5.h
diff --git a/tests/auto/qmake/testdata/findMocs/object6.h b/tests/auto/tools/qmake/testdata/findMocs/object6.h
index 17b56ac2ed..17b56ac2ed 100644
--- a/tests/auto/qmake/testdata/findMocs/object6.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object6.h
diff --git a/tests/auto/qmake/testdata/findMocs/object7.h b/tests/auto/tools/qmake/testdata/findMocs/object7.h
index 981a3d5689..981a3d5689 100644
--- a/tests/auto/qmake/testdata/findMocs/object7.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object7.h
diff --git a/tests/auto/qmake/testdata/func_export/func_export.pro b/tests/auto/tools/qmake/testdata/func_export/func_export.pro
index 0cff1f830e..0cff1f830e 100644
--- a/tests/auto/qmake/testdata/func_export/func_export.pro
+++ b/tests/auto/tools/qmake/testdata/func_export/func_export.pro
diff --git a/tests/auto/qmake/testdata/func_variables/func_variables.pro b/tests/auto/tools/qmake/testdata/func_variables/func_variables.pro
index 9b786f7eda..9b786f7eda 100644
--- a/tests/auto/qmake/testdata/func_variables/func_variables.pro
+++ b/tests/auto/tools/qmake/testdata/func_variables/func_variables.pro
diff --git a/tests/auto/qmake/testdata/functions/1.cpp b/tests/auto/tools/qmake/testdata/functions/1.cpp
index df92035b61..df92035b61 100644
--- a/tests/auto/qmake/testdata/functions/1.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/1.cpp
diff --git a/tests/auto/qmake/testdata/functions/2.cpp b/tests/auto/tools/qmake/testdata/functions/2.cpp
index df92035b61..df92035b61 100644
--- a/tests/auto/qmake/testdata/functions/2.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/2.cpp
diff --git a/tests/auto/qmake/testdata/functions/functions.pro b/tests/auto/tools/qmake/testdata/functions/functions.pro
index ad66ee863d..ad66ee863d 100644
--- a/tests/auto/qmake/testdata/functions/functions.pro
+++ b/tests/auto/tools/qmake/testdata/functions/functions.pro
diff --git a/tests/auto/qmake/testdata/functions/infiletest.pro b/tests/auto/tools/qmake/testdata/functions/infiletest.pro
index b2492e19d9..b2492e19d9 100644
--- a/tests/auto/qmake/testdata/functions/infiletest.pro
+++ b/tests/auto/tools/qmake/testdata/functions/infiletest.pro
diff --git a/tests/auto/qmake/testdata/functions/one/1.cpp b/tests/auto/tools/qmake/testdata/functions/one/1.cpp
index df92035b61..df92035b61 100644
--- a/tests/auto/qmake/testdata/functions/one/1.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/one/1.cpp
diff --git a/tests/auto/qmake/testdata/functions/one/2.cpp b/tests/auto/tools/qmake/testdata/functions/one/2.cpp
index df92035b61..df92035b61 100644
--- a/tests/auto/qmake/testdata/functions/one/2.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/one/2.cpp
diff --git a/tests/auto/qmake/testdata/functions/three/wildcard21.cpp b/tests/auto/tools/qmake/testdata/functions/three/wildcard21.cpp
index df92035b61..df92035b61 100644
--- a/tests/auto/qmake/testdata/functions/three/wildcard21.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/three/wildcard21.cpp
diff --git a/tests/auto/qmake/testdata/functions/three/wildcard22.cpp b/tests/auto/tools/qmake/testdata/functions/three/wildcard22.cpp
index df92035b61..df92035b61 100644
--- a/tests/auto/qmake/testdata/functions/three/wildcard22.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/three/wildcard22.cpp
diff --git a/tests/auto/qmake/testdata/functions/two/1.cpp b/tests/auto/tools/qmake/testdata/functions/two/1.cpp
index df92035b61..df92035b61 100644
--- a/tests/auto/qmake/testdata/functions/two/1.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/two/1.cpp
diff --git a/tests/auto/qmake/testdata/functions/two/2.cpp b/tests/auto/tools/qmake/testdata/functions/two/2.cpp
index df92035b61..df92035b61 100644
--- a/tests/auto/qmake/testdata/functions/two/2.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/two/2.cpp
diff --git a/tests/auto/qmake/testdata/functions/wildcard21.cpp b/tests/auto/tools/qmake/testdata/functions/wildcard21.cpp
index df92035b61..df92035b61 100644
--- a/tests/auto/qmake/testdata/functions/wildcard21.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/wildcard21.cpp
diff --git a/tests/auto/qmake/testdata/functions/wildcard22.cpp b/tests/auto/tools/qmake/testdata/functions/wildcard22.cpp
index df92035b61..df92035b61 100644
--- a/tests/auto/qmake/testdata/functions/wildcard22.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/wildcard22.cpp
diff --git a/tests/auto/qmake/testdata/include_dir/foo.pro b/tests/auto/tools/qmake/testdata/include_dir/foo.pro
index ff4a5cd158..ff4a5cd158 100644
--- a/tests/auto/qmake/testdata/include_dir/foo.pro
+++ b/tests/auto/tools/qmake/testdata/include_dir/foo.pro
diff --git a/tests/auto/qmake/testdata/include_dir/main.cpp b/tests/auto/tools/qmake/testdata/include_dir/main.cpp
index 8471e367e9..8471e367e9 100644
--- a/tests/auto/qmake/testdata/include_dir/main.cpp
+++ b/tests/auto/tools/qmake/testdata/include_dir/main.cpp
diff --git a/tests/auto/qmake/testdata/include_dir/test_file.cpp b/tests/auto/tools/qmake/testdata/include_dir/test_file.cpp
index 43807d0867..43807d0867 100644
--- a/tests/auto/qmake/testdata/include_dir/test_file.cpp
+++ b/tests/auto/tools/qmake/testdata/include_dir/test_file.cpp
diff --git a/tests/auto/qmake/testdata/include_dir/test_file.h b/tests/auto/tools/qmake/testdata/include_dir/test_file.h
index 994874284e..994874284e 100644
--- a/tests/auto/qmake/testdata/include_dir/test_file.h
+++ b/tests/auto/tools/qmake/testdata/include_dir/test_file.h
diff --git a/tests/auto/qmake/testdata/include_dir/untitled.ui b/tests/auto/tools/qmake/testdata/include_dir/untitled.ui
index 2aecd3c943..2aecd3c943 100644
--- a/tests/auto/qmake/testdata/include_dir/untitled.ui
+++ b/tests/auto/tools/qmake/testdata/include_dir/untitled.ui
diff --git a/tests/auto/qmake/testdata/include_dir_build/README b/tests/auto/tools/qmake/testdata/include_dir_build/README
index 46017fc43e..46017fc43e 100644
--- a/tests/auto/qmake/testdata/include_dir_build/README
+++ b/tests/auto/tools/qmake/testdata/include_dir_build/README
diff --git a/tests/auto/qmake/testdata/include_function/existing_file.pri b/tests/auto/tools/qmake/testdata/include_function/existing_file.pri
index 8b9aaca340..8b9aaca340 100644
--- a/tests/auto/qmake/testdata/include_function/existing_file.pri
+++ b/tests/auto/tools/qmake/testdata/include_function/existing_file.pri
diff --git a/tests/auto/qmake/testdata/include_function/include_existing_file.pro b/tests/auto/tools/qmake/testdata/include_function/include_existing_file.pro
index 424062a9ac..424062a9ac 100644
--- a/tests/auto/qmake/testdata/include_function/include_existing_file.pro
+++ b/tests/auto/tools/qmake/testdata/include_function/include_existing_file.pro
diff --git a/tests/auto/qmake/testdata/include_function/include_missing_file.pro b/tests/auto/tools/qmake/testdata/include_function/include_missing_file.pro
index 0b59981240..0b59981240 100644
--- a/tests/auto/qmake/testdata/include_function/include_missing_file.pro
+++ b/tests/auto/tools/qmake/testdata/include_function/include_missing_file.pro
diff --git a/tests/auto/qmake/testdata/include_function/include_missing_file2.pro b/tests/auto/tools/qmake/testdata/include_function/include_missing_file2.pro
index 542b9ff516..542b9ff516 100644
--- a/tests/auto/qmake/testdata/include_function/include_missing_file2.pro
+++ b/tests/auto/tools/qmake/testdata/include_function/include_missing_file2.pro
diff --git a/tests/auto/qmake/testdata/include_function/main.cpp b/tests/auto/tools/qmake/testdata/include_function/main.cpp
index 67224bf860..67224bf860 100644
--- a/tests/auto/qmake/testdata/include_function/main.cpp
+++ b/tests/auto/tools/qmake/testdata/include_function/main.cpp
diff --git a/tests/auto/qmake/testdata/install_depends/foo.pro b/tests/auto/tools/qmake/testdata/install_depends/foo.pro
index 357216bff8..357216bff8 100644
--- a/tests/auto/qmake/testdata/install_depends/foo.pro
+++ b/tests/auto/tools/qmake/testdata/install_depends/foo.pro
diff --git a/tests/auto/qmake/testdata/install_depends/main.cpp b/tests/auto/tools/qmake/testdata/install_depends/main.cpp
index 8471e367e9..8471e367e9 100644
--- a/tests/auto/qmake/testdata/install_depends/main.cpp
+++ b/tests/auto/tools/qmake/testdata/install_depends/main.cpp
diff --git a/tests/auto/qmake/testdata/install_depends/test1 b/tests/auto/tools/qmake/testdata/install_depends/test1
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qmake/testdata/install_depends/test1
+++ b/tests/auto/tools/qmake/testdata/install_depends/test1
diff --git a/tests/auto/qmake/testdata/install_depends/test2 b/tests/auto/tools/qmake/testdata/install_depends/test2
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qmake/testdata/install_depends/test2
+++ b/tests/auto/tools/qmake/testdata/install_depends/test2
diff --git a/tests/auto/qmake/testdata/install_depends/test_file.cpp b/tests/auto/tools/qmake/testdata/install_depends/test_file.cpp
index 0dc2d5b263..0dc2d5b263 100644
--- a/tests/auto/qmake/testdata/install_depends/test_file.cpp
+++ b/tests/auto/tools/qmake/testdata/install_depends/test_file.cpp
diff --git a/tests/auto/qmake/testdata/install_depends/test_file.h b/tests/auto/tools/qmake/testdata/install_depends/test_file.h
index d7f12ddbad..d7f12ddbad 100644
--- a/tests/auto/qmake/testdata/install_depends/test_file.h
+++ b/tests/auto/tools/qmake/testdata/install_depends/test_file.h
diff --git a/tests/auto/qmake/testdata/one_space/main.cpp b/tests/auto/tools/qmake/testdata/one_space/main.cpp
index 52daa0ed03..52daa0ed03 100644
--- a/tests/auto/qmake/testdata/one_space/main.cpp
+++ b/tests/auto/tools/qmake/testdata/one_space/main.cpp
diff --git a/tests/auto/qmake/testdata/one_space/one_space.pro b/tests/auto/tools/qmake/testdata/one_space/one_space.pro
index 247bd27096..247bd27096 100644
--- a/tests/auto/qmake/testdata/one_space/one_space.pro
+++ b/tests/auto/tools/qmake/testdata/one_space/one_space.pro
diff --git a/tests/auto/qmake/testdata/operators/operators.pro b/tests/auto/tools/qmake/testdata/operators/operators.pro
index 5285c1a982..5285c1a982 100644
--- a/tests/auto/qmake/testdata/operators/operators.pro
+++ b/tests/auto/tools/qmake/testdata/operators/operators.pro
diff --git a/tests/auto/qmake/testdata/prompt/prompt.pro b/tests/auto/tools/qmake/testdata/prompt/prompt.pro
index 238022c755..238022c755 100644
--- a/tests/auto/qmake/testdata/prompt/prompt.pro
+++ b/tests/auto/tools/qmake/testdata/prompt/prompt.pro
diff --git a/tests/auto/qmake/testdata/quotedfilenames/main.cpp b/tests/auto/tools/qmake/testdata/quotedfilenames/main.cpp
index d1d1144c4f..d1d1144c4f 100644
--- a/tests/auto/qmake/testdata/quotedfilenames/main.cpp
+++ b/tests/auto/tools/qmake/testdata/quotedfilenames/main.cpp
diff --git a/tests/auto/qmake/testdata/quotedfilenames/quotedfilenames.pro b/tests/auto/tools/qmake/testdata/quotedfilenames/quotedfilenames.pro
index 7f22f437c2..7f22f437c2 100644
--- a/tests/auto/qmake/testdata/quotedfilenames/quotedfilenames.pro
+++ b/tests/auto/tools/qmake/testdata/quotedfilenames/quotedfilenames.pro
diff --git a/tests/auto/qmake/testdata/quotedfilenames/rc folder/logo.png b/tests/auto/tools/qmake/testdata/quotedfilenames/rc folder/logo.png
index bb07d76816..bb07d76816 100644
--- a/tests/auto/qmake/testdata/quotedfilenames/rc folder/logo.png
+++ b/tests/auto/tools/qmake/testdata/quotedfilenames/rc folder/logo.png
Binary files differ
diff --git a/tests/auto/qmake/testdata/quotedfilenames/rc folder/test.qrc b/tests/auto/tools/qmake/testdata/quotedfilenames/rc folder/test.qrc
index 54ec5dcfc5..54ec5dcfc5 100644
--- a/tests/auto/qmake/testdata/quotedfilenames/rc folder/test.qrc
+++ b/tests/auto/tools/qmake/testdata/quotedfilenames/rc folder/test.qrc
diff --git a/tests/auto/qmake/testdata/shadow_files/foo.pro b/tests/auto/tools/qmake/testdata/shadow_files/foo.pro
index fc1e7e586d..fc1e7e586d 100644
--- a/tests/auto/qmake/testdata/shadow_files/foo.pro
+++ b/tests/auto/tools/qmake/testdata/shadow_files/foo.pro
diff --git a/tests/auto/qmake/testdata/shadow_files/main.cpp b/tests/auto/tools/qmake/testdata/shadow_files/main.cpp
index 8471e367e9..8471e367e9 100644
--- a/tests/auto/qmake/testdata/shadow_files/main.cpp
+++ b/tests/auto/tools/qmake/testdata/shadow_files/main.cpp
diff --git a/tests/auto/qmake/testdata/shadow_files/test.txt b/tests/auto/tools/qmake/testdata/shadow_files/test.txt
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qmake/testdata/shadow_files/test.txt
+++ b/tests/auto/tools/qmake/testdata/shadow_files/test.txt
diff --git a/tests/auto/qmake/testdata/shadow_files/test_file.cpp b/tests/auto/tools/qmake/testdata/shadow_files/test_file.cpp
index 0dc2d5b263..0dc2d5b263 100644
--- a/tests/auto/qmake/testdata/shadow_files/test_file.cpp
+++ b/tests/auto/tools/qmake/testdata/shadow_files/test_file.cpp
diff --git a/tests/auto/qmake/testdata/shadow_files/test_file.h b/tests/auto/tools/qmake/testdata/shadow_files/test_file.h
index d7f12ddbad..d7f12ddbad 100644
--- a/tests/auto/qmake/testdata/shadow_files/test_file.h
+++ b/tests/auto/tools/qmake/testdata/shadow_files/test_file.h
diff --git a/tests/auto/qmake/testdata/shadow_files_build/README b/tests/auto/tools/qmake/testdata/shadow_files_build/README
index 15e48c043e..15e48c043e 100644
--- a/tests/auto/qmake/testdata/shadow_files_build/README
+++ b/tests/auto/tools/qmake/testdata/shadow_files_build/README
diff --git a/tests/auto/qmake/testdata/shadow_files_build/foo.bar b/tests/auto/tools/qmake/testdata/shadow_files_build/foo.bar
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qmake/testdata/shadow_files_build/foo.bar
+++ b/tests/auto/tools/qmake/testdata/shadow_files_build/foo.bar
diff --git a/tests/auto/qmake/testdata/simple_app/build/README b/tests/auto/tools/qmake/testdata/simple_app/build/README
index acfd9d9226..acfd9d9226 100644
--- a/tests/auto/qmake/testdata/simple_app/build/README
+++ b/tests/auto/tools/qmake/testdata/simple_app/build/README
diff --git a/tests/auto/qmake/testdata/simple_app/main.cpp b/tests/auto/tools/qmake/testdata/simple_app/main.cpp
index 9ce4f108e5..9ce4f108e5 100644
--- a/tests/auto/qmake/testdata/simple_app/main.cpp
+++ b/tests/auto/tools/qmake/testdata/simple_app/main.cpp
diff --git a/tests/auto/qmake/testdata/simple_app/simple_app.pro b/tests/auto/tools/qmake/testdata/simple_app/simple_app.pro
index a8c4ad613d..a8c4ad613d 100644
--- a/tests/auto/qmake/testdata/simple_app/simple_app.pro
+++ b/tests/auto/tools/qmake/testdata/simple_app/simple_app.pro
diff --git a/tests/auto/qmake/testdata/simple_app/test.qrc b/tests/auto/tools/qmake/testdata/simple_app/test.qrc
index decde3dd24..decde3dd24 100644
--- a/tests/auto/qmake/testdata/simple_app/test.qrc
+++ b/tests/auto/tools/qmake/testdata/simple_app/test.qrc
diff --git a/tests/auto/qmake/testdata/simple_app/test_file.cpp b/tests/auto/tools/qmake/testdata/simple_app/test_file.cpp
index 0dc2d5b263..0dc2d5b263 100644
--- a/tests/auto/qmake/testdata/simple_app/test_file.cpp
+++ b/tests/auto/tools/qmake/testdata/simple_app/test_file.cpp
diff --git a/tests/auto/qmake/testdata/simple_app/test_file.h b/tests/auto/tools/qmake/testdata/simple_app/test_file.h
index d7f12ddbad..d7f12ddbad 100644
--- a/tests/auto/qmake/testdata/simple_app/test_file.h
+++ b/tests/auto/tools/qmake/testdata/simple_app/test_file.h
diff --git a/tests/auto/qmake/testdata/simple_app_build/README b/tests/auto/tools/qmake/testdata/simple_app_build/README
index 81dc596e5b..81dc596e5b 100644
--- a/tests/auto/qmake/testdata/simple_app_build/README
+++ b/tests/auto/tools/qmake/testdata/simple_app_build/README
diff --git a/tests/auto/qmake/testdata/simple_dll/simple.cpp b/tests/auto/tools/qmake/testdata/simple_dll/simple.cpp
index 539725eb0b..539725eb0b 100644
--- a/tests/auto/qmake/testdata/simple_dll/simple.cpp
+++ b/tests/auto/tools/qmake/testdata/simple_dll/simple.cpp
diff --git a/tests/auto/qmake/testdata/simple_dll/simple.h b/tests/auto/tools/qmake/testdata/simple_dll/simple.h
index 1a76482985..1a76482985 100644
--- a/tests/auto/qmake/testdata/simple_dll/simple.h
+++ b/tests/auto/tools/qmake/testdata/simple_dll/simple.h
diff --git a/tests/auto/qmake/testdata/simple_dll/simple_dll.pro b/tests/auto/tools/qmake/testdata/simple_dll/simple_dll.pro
index 9af38ecce6..9af38ecce6 100644
--- a/tests/auto/qmake/testdata/simple_dll/simple_dll.pro
+++ b/tests/auto/tools/qmake/testdata/simple_dll/simple_dll.pro
diff --git a/tests/auto/qmake/testdata/simple_lib/simple.cpp b/tests/auto/tools/qmake/testdata/simple_lib/simple.cpp
index 539725eb0b..539725eb0b 100644
--- a/tests/auto/qmake/testdata/simple_lib/simple.cpp
+++ b/tests/auto/tools/qmake/testdata/simple_lib/simple.cpp
diff --git a/tests/auto/qmake/testdata/simple_lib/simple.h b/tests/auto/tools/qmake/testdata/simple_lib/simple.h
index 912f028ced..912f028ced 100644
--- a/tests/auto/qmake/testdata/simple_lib/simple.h
+++ b/tests/auto/tools/qmake/testdata/simple_lib/simple.h
diff --git a/tests/auto/qmake/testdata/simple_lib/simple_lib.pro b/tests/auto/tools/qmake/testdata/simple_lib/simple_lib.pro
index 209bba6348..209bba6348 100644
--- a/tests/auto/qmake/testdata/simple_lib/simple_lib.pro
+++ b/tests/auto/tools/qmake/testdata/simple_lib/simple_lib.pro
diff --git a/tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/simple/main.cpp b/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/simple/main.cpp
index 5597ef22cc..5597ef22cc 100644
--- a/tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/simple/main.cpp
+++ b/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/simple/main.cpp
diff --git a/tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/simple/simple.pro b/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/simple/simple.pro
index 2db08a29af..2db08a29af 100644
--- a/tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/simple/simple.pro
+++ b/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/simple/simple.pro
diff --git a/tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/subdir.pro b/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/subdir.pro
index be0d80adf0..be0d80adf0 100644
--- a/tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/subdir.pro
+++ b/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/subdir.pro
diff --git a/tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/subdir_via_pro_file_extra_target.pro b/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/subdir_via_pro_file_extra_target.pro
index 7c07859ae4..7c07859ae4 100644
--- a/tests/auto/qmake/testdata/subdir_via_pro_file_extra_target/subdir_via_pro_file_extra_target.pro
+++ b/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/subdir_via_pro_file_extra_target.pro
diff --git a/tests/auto/qmake/testdata/subdirs/simple_app/main.cpp b/tests/auto/tools/qmake/testdata/subdirs/simple_app/main.cpp
index 9ce4f108e5..9ce4f108e5 100644
--- a/tests/auto/qmake/testdata/subdirs/simple_app/main.cpp
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_app/main.cpp
diff --git a/tests/auto/qmake/testdata/subdirs/simple_app/simple_app.pro b/tests/auto/tools/qmake/testdata/subdirs/simple_app/simple_app.pro
index f496d5bb8e..f496d5bb8e 100644
--- a/tests/auto/qmake/testdata/subdirs/simple_app/simple_app.pro
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_app/simple_app.pro
diff --git a/tests/auto/qmake/testdata/subdirs/simple_app/test_file.cpp b/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.cpp
index 0dc2d5b263..0dc2d5b263 100644
--- a/tests/auto/qmake/testdata/subdirs/simple_app/test_file.cpp
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.cpp
diff --git a/tests/auto/qmake/testdata/subdirs/simple_app/test_file.h b/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.h
index d7f12ddbad..d7f12ddbad 100644
--- a/tests/auto/qmake/testdata/subdirs/simple_app/test_file.h
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.h
diff --git a/tests/auto/qmake/testdata/subdirs/simple_dll/simple.cpp b/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.cpp
index 539725eb0b..539725eb0b 100644
--- a/tests/auto/qmake/testdata/subdirs/simple_dll/simple.cpp
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.cpp
diff --git a/tests/auto/qmake/testdata/subdirs/simple_dll/simple.h b/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.h
index 1a76482985..1a76482985 100644
--- a/tests/auto/qmake/testdata/subdirs/simple_dll/simple.h
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.h
diff --git a/tests/auto/qmake/testdata/subdirs/simple_dll/simple_dll.pro b/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple_dll.pro
index a54a07a0e7..a54a07a0e7 100644
--- a/tests/auto/qmake/testdata/subdirs/simple_dll/simple_dll.pro
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple_dll.pro
diff --git a/tests/auto/qmake/testdata/subdirs/subdirs.pro b/tests/auto/tools/qmake/testdata/subdirs/subdirs.pro
index 5da200eabb..5da200eabb 100644
--- a/tests/auto/qmake/testdata/subdirs/subdirs.pro
+++ b/tests/auto/tools/qmake/testdata/subdirs/subdirs.pro
diff --git a/tests/auto/qmake/testdata/substitutes/sub/test2.in b/tests/auto/tools/qmake/testdata/substitutes/sub/test2.in
index 78a60695ae..78a60695ae 100644
--- a/tests/auto/qmake/testdata/substitutes/sub/test2.in
+++ b/tests/auto/tools/qmake/testdata/substitutes/sub/test2.in
diff --git a/tests/auto/qmake/testdata/substitutes/test.in b/tests/auto/tools/qmake/testdata/substitutes/test.in
index 2fa05e0110..2fa05e0110 100644
--- a/tests/auto/qmake/testdata/substitutes/test.in
+++ b/tests/auto/tools/qmake/testdata/substitutes/test.in
diff --git a/tests/auto/qmake/testdata/substitutes/test.pro b/tests/auto/tools/qmake/testdata/substitutes/test.pro
index 26b02722e8..26b02722e8 100644
--- a/tests/auto/qmake/testdata/substitutes/test.pro
+++ b/tests/auto/tools/qmake/testdata/substitutes/test.pro
diff --git a/tests/auto/qmake/testdata/substitutes/test3.txt b/tests/auto/tools/qmake/testdata/substitutes/test3.txt
index ce01362503..ce01362503 100644
--- a/tests/auto/qmake/testdata/substitutes/test3.txt
+++ b/tests/auto/tools/qmake/testdata/substitutes/test3.txt
diff --git a/tests/auto/qmake/testdata/substitutes_build/README b/tests/auto/tools/qmake/testdata/substitutes_build/README
index 81dc596e5b..81dc596e5b 100644
--- a/tests/auto/qmake/testdata/substitutes_build/README
+++ b/tests/auto/tools/qmake/testdata/substitutes_build/README
diff --git a/tests/auto/qmake/testdata/variables/variables.pro b/tests/auto/tools/qmake/testdata/variables/variables.pro
index cefcddf0fb..cefcddf0fb 100644
--- a/tests/auto/qmake/testdata/variables/variables.pro
+++ b/tests/auto/tools/qmake/testdata/variables/variables.pro
diff --git a/tests/auto/qmake/tst_qmake.cpp b/tests/auto/tools/qmake/tst_qmake.cpp
index 2775b5380b..2775b5380b 100644
--- a/tests/auto/qmake/tst_qmake.cpp
+++ b/tests/auto/tools/qmake/tst_qmake.cpp
diff --git a/tests/auto/rcc/.gitignore b/tests/auto/tools/rcc/.gitignore
index 1da39dbd88..1da39dbd88 100644
--- a/tests/auto/rcc/.gitignore
+++ b/tests/auto/tools/rcc/.gitignore
diff --git a/tests/auto/rcc/data/images.bin.expected b/tests/auto/tools/rcc/data/images.bin.expected
index cb67a25477..cb67a25477 100644
--- a/tests/auto/rcc/data/images.bin.expected
+++ b/tests/auto/tools/rcc/data/images.bin.expected
Binary files differ
diff --git a/tests/auto/rcc/data/images.expected b/tests/auto/tools/rcc/data/images.expected
index 71be819310..71be819310 100644
--- a/tests/auto/rcc/data/images.expected
+++ b/tests/auto/tools/rcc/data/images.expected
diff --git a/tests/auto/rcc/data/images.qrc b/tests/auto/tools/rcc/data/images.qrc
index 773baef3e5..773baef3e5 100644
--- a/tests/auto/rcc/data/images.qrc
+++ b/tests/auto/tools/rcc/data/images.qrc
diff --git a/tests/auto/rcc/data/images/circle.png b/tests/auto/tools/rcc/data/images/circle.png
index dc392cb3f7..dc392cb3f7 100644
--- a/tests/auto/rcc/data/images/circle.png
+++ b/tests/auto/tools/rcc/data/images/circle.png
Binary files differ
diff --git a/tests/auto/rcc/data/images/square.png b/tests/auto/tools/rcc/data/images/square.png
index c0fd2d540a..c0fd2d540a 100644
--- a/tests/auto/rcc/data/images/square.png
+++ b/tests/auto/tools/rcc/data/images/square.png
Binary files differ
diff --git a/tests/auto/rcc/data/images/subdir/triangle.png b/tests/auto/tools/rcc/data/images/subdir/triangle.png
index 2ee15f8f1f..2ee15f8f1f 100644
--- a/tests/auto/rcc/data/images/subdir/triangle.png
+++ b/tests/auto/tools/rcc/data/images/subdir/triangle.png
Binary files differ
diff --git a/tests/auto/rcc/rcc.pro b/tests/auto/tools/rcc/rcc.pro
index 1759b48a0e..1759b48a0e 100644
--- a/tests/auto/rcc/rcc.pro
+++ b/tests/auto/tools/rcc/rcc.pro
diff --git a/tests/auto/rcc/tst_rcc.cpp b/tests/auto/tools/rcc/tst_rcc.cpp
index 90baf36b35..90baf36b35 100644
--- a/tests/auto/rcc/tst_rcc.cpp
+++ b/tests/auto/tools/rcc/tst_rcc.cpp
diff --git a/tests/auto/tools/tools.pro b/tests/auto/tools/tools.pro
new file mode 100644
index 0000000000..6bf6ddf64f
--- /dev/null
+++ b/tests/auto/tools/tools.pro
@@ -0,0 +1,7 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qmake \
+ uic \
+ moc \
+ rcc \
+
diff --git a/tests/auto/uic/.gitignore b/tests/auto/tools/uic/.gitignore
index e77c4d05a3..e77c4d05a3 100644
--- a/tests/auto/uic/.gitignore
+++ b/tests/auto/tools/uic/.gitignore
diff --git a/tests/auto/uic/baseline/.gitattributes b/tests/auto/tools/uic/baseline/.gitattributes
index 4ea9d0282a..4ea9d0282a 100644
--- a/tests/auto/uic/baseline/.gitattributes
+++ b/tests/auto/tools/uic/baseline/.gitattributes
diff --git a/tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui b/tests/auto/tools/uic/baseline/Dialog_with_Buttons_Bottom.ui
index 18d31ab915..18d31ab915 100644
--- a/tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui
+++ b/tests/auto/tools/uic/baseline/Dialog_with_Buttons_Bottom.ui
diff --git a/tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui.h b/tests/auto/tools/uic/baseline/Dialog_with_Buttons_Bottom.ui.h
index ecbfd30a34..ecbfd30a34 100644
--- a/tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui.h
+++ b/tests/auto/tools/uic/baseline/Dialog_with_Buttons_Bottom.ui.h
diff --git a/tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui b/tests/auto/tools/uic/baseline/Dialog_with_Buttons_Right.ui
index 703d594f4f..703d594f4f 100644
--- a/tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui
+++ b/tests/auto/tools/uic/baseline/Dialog_with_Buttons_Right.ui
diff --git a/tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui.h b/tests/auto/tools/uic/baseline/Dialog_with_Buttons_Right.ui.h
index aa42d5cd7d..aa42d5cd7d 100644
--- a/tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui.h
+++ b/tests/auto/tools/uic/baseline/Dialog_with_Buttons_Right.ui.h
diff --git a/tests/auto/uic/baseline/Dialog_without_Buttons.ui b/tests/auto/tools/uic/baseline/Dialog_without_Buttons.ui
index 1be629818c..1be629818c 100644
--- a/tests/auto/uic/baseline/Dialog_without_Buttons.ui
+++ b/tests/auto/tools/uic/baseline/Dialog_without_Buttons.ui
diff --git a/tests/auto/uic/baseline/Dialog_without_Buttons.ui.h b/tests/auto/tools/uic/baseline/Dialog_without_Buttons.ui.h
index 7d876e146c..7d876e146c 100644
--- a/tests/auto/uic/baseline/Dialog_without_Buttons.ui.h
+++ b/tests/auto/tools/uic/baseline/Dialog_without_Buttons.ui.h
diff --git a/tests/auto/uic/baseline/Main_Window.ui b/tests/auto/tools/uic/baseline/Main_Window.ui
index e324db8292..e324db8292 100644
--- a/tests/auto/uic/baseline/Main_Window.ui
+++ b/tests/auto/tools/uic/baseline/Main_Window.ui
diff --git a/tests/auto/uic/baseline/Main_Window.ui.h b/tests/auto/tools/uic/baseline/Main_Window.ui.h
index b54e4a6302..b54e4a6302 100644
--- a/tests/auto/uic/baseline/Main_Window.ui.h
+++ b/tests/auto/tools/uic/baseline/Main_Window.ui.h
diff --git a/tests/auto/uic/baseline/Widget.ui b/tests/auto/tools/uic/baseline/Widget.ui
index ab94733dcc..ab94733dcc 100644
--- a/tests/auto/uic/baseline/Widget.ui
+++ b/tests/auto/tools/uic/baseline/Widget.ui
diff --git a/tests/auto/uic/baseline/Widget.ui.h b/tests/auto/tools/uic/baseline/Widget.ui.h
index 362d283039..362d283039 100644
--- a/tests/auto/uic/baseline/Widget.ui.h
+++ b/tests/auto/tools/uic/baseline/Widget.ui.h
diff --git a/tests/auto/uic/baseline/addlinkdialog.ui b/tests/auto/tools/uic/baseline/addlinkdialog.ui
index 3171159f97..3171159f97 100644
--- a/tests/auto/uic/baseline/addlinkdialog.ui
+++ b/tests/auto/tools/uic/baseline/addlinkdialog.ui
diff --git a/tests/auto/uic/baseline/addlinkdialog.ui.h b/tests/auto/tools/uic/baseline/addlinkdialog.ui.h
index 230bc5daec..230bc5daec 100644
--- a/tests/auto/uic/baseline/addlinkdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/addlinkdialog.ui.h
diff --git a/tests/auto/uic/baseline/addtorrentform.ui b/tests/auto/tools/uic/baseline/addtorrentform.ui
index 950bb67119..950bb67119 100644
--- a/tests/auto/uic/baseline/addtorrentform.ui
+++ b/tests/auto/tools/uic/baseline/addtorrentform.ui
diff --git a/tests/auto/uic/baseline/addtorrentform.ui.h b/tests/auto/tools/uic/baseline/addtorrentform.ui.h
index c075e8a28b..c075e8a28b 100644
--- a/tests/auto/uic/baseline/addtorrentform.ui.h
+++ b/tests/auto/tools/uic/baseline/addtorrentform.ui.h
diff --git a/tests/auto/uic/baseline/authenticationdialog.ui b/tests/auto/tools/uic/baseline/authenticationdialog.ui
index 82d908cffb..82d908cffb 100644
--- a/tests/auto/uic/baseline/authenticationdialog.ui
+++ b/tests/auto/tools/uic/baseline/authenticationdialog.ui
diff --git a/tests/auto/uic/baseline/authenticationdialog.ui.h b/tests/auto/tools/uic/baseline/authenticationdialog.ui.h
index 9f35586ee3..9f35586ee3 100644
--- a/tests/auto/uic/baseline/authenticationdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/authenticationdialog.ui.h
diff --git a/tests/auto/uic/baseline/backside.ui b/tests/auto/tools/uic/baseline/backside.ui
index afa488c6f4..afa488c6f4 100644
--- a/tests/auto/uic/baseline/backside.ui
+++ b/tests/auto/tools/uic/baseline/backside.ui
diff --git a/tests/auto/uic/baseline/backside.ui.h b/tests/auto/tools/uic/baseline/backside.ui.h
index 0fd710af6f..0fd710af6f 100644
--- a/tests/auto/uic/baseline/backside.ui.h
+++ b/tests/auto/tools/uic/baseline/backside.ui.h
diff --git a/tests/auto/uic/baseline/batchtranslation.ui b/tests/auto/tools/uic/baseline/batchtranslation.ui
index 6cb2943606..6cb2943606 100644
--- a/tests/auto/uic/baseline/batchtranslation.ui
+++ b/tests/auto/tools/uic/baseline/batchtranslation.ui
diff --git a/tests/auto/uic/baseline/batchtranslation.ui.h b/tests/auto/tools/uic/baseline/batchtranslation.ui.h
index 4071b5055c..4071b5055c 100644
--- a/tests/auto/uic/baseline/batchtranslation.ui.h
+++ b/tests/auto/tools/uic/baseline/batchtranslation.ui.h
diff --git a/tests/auto/uic/baseline/bookmarkdialog.ui b/tests/auto/tools/uic/baseline/bookmarkdialog.ui
index 2d6470c54c..2d6470c54c 100644
--- a/tests/auto/uic/baseline/bookmarkdialog.ui
+++ b/tests/auto/tools/uic/baseline/bookmarkdialog.ui
diff --git a/tests/auto/uic/baseline/bookmarkdialog.ui.h b/tests/auto/tools/uic/baseline/bookmarkdialog.ui.h
index 098614c409..098614c409 100644
--- a/tests/auto/uic/baseline/bookmarkdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/bookmarkdialog.ui.h
diff --git a/tests/auto/uic/baseline/bookwindow.ui b/tests/auto/tools/uic/baseline/bookwindow.ui
index 659d324564..659d324564 100644
--- a/tests/auto/uic/baseline/bookwindow.ui
+++ b/tests/auto/tools/uic/baseline/bookwindow.ui
diff --git a/tests/auto/uic/baseline/bookwindow.ui.h b/tests/auto/tools/uic/baseline/bookwindow.ui.h
index e6c9280965..e6c9280965 100644
--- a/tests/auto/uic/baseline/bookwindow.ui.h
+++ b/tests/auto/tools/uic/baseline/bookwindow.ui.h
diff --git a/tests/auto/uic/baseline/browserwidget.ui b/tests/auto/tools/uic/baseline/browserwidget.ui
index 20946f0ede..20946f0ede 100644
--- a/tests/auto/uic/baseline/browserwidget.ui
+++ b/tests/auto/tools/uic/baseline/browserwidget.ui
diff --git a/tests/auto/uic/baseline/browserwidget.ui.h b/tests/auto/tools/uic/baseline/browserwidget.ui.h
index 556d672e47..556d672e47 100644
--- a/tests/auto/uic/baseline/browserwidget.ui.h
+++ b/tests/auto/tools/uic/baseline/browserwidget.ui.h
diff --git a/tests/auto/uic/baseline/calculator.ui b/tests/auto/tools/uic/baseline/calculator.ui
index bb519ba2a6..bb519ba2a6 100644
--- a/tests/auto/uic/baseline/calculator.ui
+++ b/tests/auto/tools/uic/baseline/calculator.ui
diff --git a/tests/auto/uic/baseline/calculator.ui.h b/tests/auto/tools/uic/baseline/calculator.ui.h
index b2cf2363b9..b2cf2363b9 100644
--- a/tests/auto/uic/baseline/calculator.ui.h
+++ b/tests/auto/tools/uic/baseline/calculator.ui.h
diff --git a/tests/auto/uic/baseline/calculatorform.ui b/tests/auto/tools/uic/baseline/calculatorform.ui
index dda0e62ddd..dda0e62ddd 100644
--- a/tests/auto/uic/baseline/calculatorform.ui
+++ b/tests/auto/tools/uic/baseline/calculatorform.ui
diff --git a/tests/auto/uic/baseline/calculatorform.ui.h b/tests/auto/tools/uic/baseline/calculatorform.ui.h
index f2cf2531d6..f2cf2531d6 100644
--- a/tests/auto/uic/baseline/calculatorform.ui.h
+++ b/tests/auto/tools/uic/baseline/calculatorform.ui.h
diff --git a/tests/auto/uic/baseline/certificateinfo.ui b/tests/auto/tools/uic/baseline/certificateinfo.ui
index 3761fe8f50..3761fe8f50 100644
--- a/tests/auto/uic/baseline/certificateinfo.ui
+++ b/tests/auto/tools/uic/baseline/certificateinfo.ui
diff --git a/tests/auto/uic/baseline/certificateinfo.ui.h b/tests/auto/tools/uic/baseline/certificateinfo.ui.h
index 53d54c4930..53d54c4930 100644
--- a/tests/auto/uic/baseline/certificateinfo.ui.h
+++ b/tests/auto/tools/uic/baseline/certificateinfo.ui.h
diff --git a/tests/auto/uic/baseline/chatdialog.ui b/tests/auto/tools/uic/baseline/chatdialog.ui
index c85e0d0f55..c85e0d0f55 100644
--- a/tests/auto/uic/baseline/chatdialog.ui
+++ b/tests/auto/tools/uic/baseline/chatdialog.ui
diff --git a/tests/auto/uic/baseline/chatdialog.ui.h b/tests/auto/tools/uic/baseline/chatdialog.ui.h
index 4152d3652e..4152d3652e 100644
--- a/tests/auto/uic/baseline/chatdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/chatdialog.ui.h
diff --git a/tests/auto/uic/baseline/chatmainwindow.ui b/tests/auto/tools/uic/baseline/chatmainwindow.ui
index 0616dcb137..0616dcb137 100644
--- a/tests/auto/uic/baseline/chatmainwindow.ui
+++ b/tests/auto/tools/uic/baseline/chatmainwindow.ui
diff --git a/tests/auto/uic/baseline/chatmainwindow.ui.h b/tests/auto/tools/uic/baseline/chatmainwindow.ui.h
index 932f1dd1a2..932f1dd1a2 100644
--- a/tests/auto/uic/baseline/chatmainwindow.ui.h
+++ b/tests/auto/tools/uic/baseline/chatmainwindow.ui.h
diff --git a/tests/auto/uic/baseline/chatsetnickname.ui b/tests/auto/tools/uic/baseline/chatsetnickname.ui
index fb9894e09f..fb9894e09f 100644
--- a/tests/auto/uic/baseline/chatsetnickname.ui
+++ b/tests/auto/tools/uic/baseline/chatsetnickname.ui
diff --git a/tests/auto/uic/baseline/chatsetnickname.ui.h b/tests/auto/tools/uic/baseline/chatsetnickname.ui.h
index 9a52aa5355..9a52aa5355 100644
--- a/tests/auto/uic/baseline/chatsetnickname.ui.h
+++ b/tests/auto/tools/uic/baseline/chatsetnickname.ui.h
diff --git a/tests/auto/uic/baseline/config.ui b/tests/auto/tools/uic/baseline/config.ui
index bebe17b41f..bebe17b41f 100644
--- a/tests/auto/uic/baseline/config.ui
+++ b/tests/auto/tools/uic/baseline/config.ui
diff --git a/tests/auto/uic/baseline/config.ui.h b/tests/auto/tools/uic/baseline/config.ui.h
index ed756ab918..ed756ab918 100644
--- a/tests/auto/uic/baseline/config.ui.h
+++ b/tests/auto/tools/uic/baseline/config.ui.h
diff --git a/tests/auto/uic/baseline/connectdialog.ui b/tests/auto/tools/uic/baseline/connectdialog.ui
index bd062ebaaf..bd062ebaaf 100644
--- a/tests/auto/uic/baseline/connectdialog.ui
+++ b/tests/auto/tools/uic/baseline/connectdialog.ui
diff --git a/tests/auto/uic/baseline/connectdialog.ui.h b/tests/auto/tools/uic/baseline/connectdialog.ui.h
index ceafddc28b..ceafddc28b 100644
--- a/tests/auto/uic/baseline/connectdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/connectdialog.ui.h
diff --git a/tests/auto/uic/baseline/controller.ui b/tests/auto/tools/uic/baseline/controller.ui
index 379015bf30..379015bf30 100644
--- a/tests/auto/uic/baseline/controller.ui
+++ b/tests/auto/tools/uic/baseline/controller.ui
diff --git a/tests/auto/uic/baseline/controller.ui.h b/tests/auto/tools/uic/baseline/controller.ui.h
index 583a3537b2..583a3537b2 100644
--- a/tests/auto/uic/baseline/controller.ui.h
+++ b/tests/auto/tools/uic/baseline/controller.ui.h
diff --git a/tests/auto/uic/baseline/cookies.ui b/tests/auto/tools/uic/baseline/cookies.ui
index c4bccc5483..c4bccc5483 100644
--- a/tests/auto/uic/baseline/cookies.ui
+++ b/tests/auto/tools/uic/baseline/cookies.ui
diff --git a/tests/auto/uic/baseline/cookies.ui.h b/tests/auto/tools/uic/baseline/cookies.ui.h
index 83946bbeca..83946bbeca 100644
--- a/tests/auto/uic/baseline/cookies.ui.h
+++ b/tests/auto/tools/uic/baseline/cookies.ui.h
diff --git a/tests/auto/uic/baseline/cookiesexceptions.ui b/tests/auto/tools/uic/baseline/cookiesexceptions.ui
index 3d9ef62414..3d9ef62414 100644
--- a/tests/auto/uic/baseline/cookiesexceptions.ui
+++ b/tests/auto/tools/uic/baseline/cookiesexceptions.ui
diff --git a/tests/auto/uic/baseline/cookiesexceptions.ui.h b/tests/auto/tools/uic/baseline/cookiesexceptions.ui.h
index 2f4a7fbdfe..2f4a7fbdfe 100644
--- a/tests/auto/uic/baseline/cookiesexceptions.ui.h
+++ b/tests/auto/tools/uic/baseline/cookiesexceptions.ui.h
diff --git a/tests/auto/uic/baseline/default.ui b/tests/auto/tools/uic/baseline/default.ui
index 431a40956e..431a40956e 100644
--- a/tests/auto/uic/baseline/default.ui
+++ b/tests/auto/tools/uic/baseline/default.ui
diff --git a/tests/auto/uic/baseline/default.ui.h b/tests/auto/tools/uic/baseline/default.ui.h
index 4c6b489f83..4c6b489f83 100644
--- a/tests/auto/uic/baseline/default.ui.h
+++ b/tests/auto/tools/uic/baseline/default.ui.h
diff --git a/tests/auto/uic/baseline/dialog.ui b/tests/auto/tools/uic/baseline/dialog.ui
index e99d6fb3c4..e99d6fb3c4 100644
--- a/tests/auto/uic/baseline/dialog.ui
+++ b/tests/auto/tools/uic/baseline/dialog.ui
diff --git a/tests/auto/uic/baseline/dialog.ui.h b/tests/auto/tools/uic/baseline/dialog.ui.h
index cd92679488..cd92679488 100644
--- a/tests/auto/uic/baseline/dialog.ui.h
+++ b/tests/auto/tools/uic/baseline/dialog.ui.h
diff --git a/tests/auto/uic/baseline/downloaditem.ui b/tests/auto/tools/uic/baseline/downloaditem.ui
index 4a0a0fd9aa..4a0a0fd9aa 100644
--- a/tests/auto/uic/baseline/downloaditem.ui
+++ b/tests/auto/tools/uic/baseline/downloaditem.ui
diff --git a/tests/auto/uic/baseline/downloaditem.ui.h b/tests/auto/tools/uic/baseline/downloaditem.ui.h
index d856e2099e..d856e2099e 100644
--- a/tests/auto/uic/baseline/downloaditem.ui.h
+++ b/tests/auto/tools/uic/baseline/downloaditem.ui.h
diff --git a/tests/auto/uic/baseline/downloads.ui b/tests/auto/tools/uic/baseline/downloads.ui
index a2e256935b..a2e256935b 100644
--- a/tests/auto/uic/baseline/downloads.ui
+++ b/tests/auto/tools/uic/baseline/downloads.ui
diff --git a/tests/auto/uic/baseline/downloads.ui.h b/tests/auto/tools/uic/baseline/downloads.ui.h
index dd960d2ced..dd960d2ced 100644
--- a/tests/auto/uic/baseline/downloads.ui.h
+++ b/tests/auto/tools/uic/baseline/downloads.ui.h
diff --git a/tests/auto/uic/baseline/embeddeddialog.ui b/tests/auto/tools/uic/baseline/embeddeddialog.ui
index f967b10085..f967b10085 100644
--- a/tests/auto/uic/baseline/embeddeddialog.ui
+++ b/tests/auto/tools/uic/baseline/embeddeddialog.ui
diff --git a/tests/auto/uic/baseline/embeddeddialog.ui.h b/tests/auto/tools/uic/baseline/embeddeddialog.ui.h
index a6cfbb1a73..a6cfbb1a73 100644
--- a/tests/auto/uic/baseline/embeddeddialog.ui.h
+++ b/tests/auto/tools/uic/baseline/embeddeddialog.ui.h
diff --git a/tests/auto/uic/baseline/filespage.ui b/tests/auto/tools/uic/baseline/filespage.ui
index d308b96646..d308b96646 100644
--- a/tests/auto/uic/baseline/filespage.ui
+++ b/tests/auto/tools/uic/baseline/filespage.ui
diff --git a/tests/auto/uic/baseline/filespage.ui.h b/tests/auto/tools/uic/baseline/filespage.ui.h
index 12d8554ff8..12d8554ff8 100644
--- a/tests/auto/uic/baseline/filespage.ui.h
+++ b/tests/auto/tools/uic/baseline/filespage.ui.h
diff --git a/tests/auto/uic/baseline/filternamedialog.ui b/tests/auto/tools/uic/baseline/filternamedialog.ui
index be6f17dfb6..be6f17dfb6 100644
--- a/tests/auto/uic/baseline/filternamedialog.ui
+++ b/tests/auto/tools/uic/baseline/filternamedialog.ui
diff --git a/tests/auto/uic/baseline/filternamedialog.ui.h b/tests/auto/tools/uic/baseline/filternamedialog.ui.h
index 163a6d2954..163a6d2954 100644
--- a/tests/auto/uic/baseline/filternamedialog.ui.h
+++ b/tests/auto/tools/uic/baseline/filternamedialog.ui.h
diff --git a/tests/auto/uic/baseline/filterpage.ui b/tests/auto/tools/uic/baseline/filterpage.ui
index 7cda3d9bed..7cda3d9bed 100644
--- a/tests/auto/uic/baseline/filterpage.ui
+++ b/tests/auto/tools/uic/baseline/filterpage.ui
diff --git a/tests/auto/uic/baseline/filterpage.ui.h b/tests/auto/tools/uic/baseline/filterpage.ui.h
index f3a2268556..f3a2268556 100644
--- a/tests/auto/uic/baseline/filterpage.ui.h
+++ b/tests/auto/tools/uic/baseline/filterpage.ui.h
diff --git a/tests/auto/uic/baseline/finddialog.ui b/tests/auto/tools/uic/baseline/finddialog.ui
index 913a868ad1..913a868ad1 100644
--- a/tests/auto/uic/baseline/finddialog.ui
+++ b/tests/auto/tools/uic/baseline/finddialog.ui
diff --git a/tests/auto/uic/baseline/finddialog.ui.h b/tests/auto/tools/uic/baseline/finddialog.ui.h
index fb6d120d46..fb6d120d46 100644
--- a/tests/auto/uic/baseline/finddialog.ui.h
+++ b/tests/auto/tools/uic/baseline/finddialog.ui.h
diff --git a/tests/auto/uic/baseline/form.ui b/tests/auto/tools/uic/baseline/form.ui
index e5be1d911f..e5be1d911f 100644
--- a/tests/auto/uic/baseline/form.ui
+++ b/tests/auto/tools/uic/baseline/form.ui
diff --git a/tests/auto/uic/baseline/form.ui.h b/tests/auto/tools/uic/baseline/form.ui.h
index da2cecbb73..da2cecbb73 100644
--- a/tests/auto/uic/baseline/form.ui.h
+++ b/tests/auto/tools/uic/baseline/form.ui.h
diff --git a/tests/auto/uic/baseline/formwindowsettings.ui b/tests/auto/tools/uic/baseline/formwindowsettings.ui
index fea18fe873..fea18fe873 100644
--- a/tests/auto/uic/baseline/formwindowsettings.ui
+++ b/tests/auto/tools/uic/baseline/formwindowsettings.ui
diff --git a/tests/auto/uic/baseline/formwindowsettings.ui.h b/tests/auto/tools/uic/baseline/formwindowsettings.ui.h
index da8657b5e3..da8657b5e3 100644
--- a/tests/auto/uic/baseline/formwindowsettings.ui.h
+++ b/tests/auto/tools/uic/baseline/formwindowsettings.ui.h
diff --git a/tests/auto/uic/baseline/generalpage.ui b/tests/auto/tools/uic/baseline/generalpage.ui
index 9c2babb0ae..9c2babb0ae 100644
--- a/tests/auto/uic/baseline/generalpage.ui
+++ b/tests/auto/tools/uic/baseline/generalpage.ui
diff --git a/tests/auto/uic/baseline/generalpage.ui.h b/tests/auto/tools/uic/baseline/generalpage.ui.h
index ecad72393d..ecad72393d 100644
--- a/tests/auto/uic/baseline/generalpage.ui.h
+++ b/tests/auto/tools/uic/baseline/generalpage.ui.h
diff --git a/tests/auto/uic/baseline/gridalignment.ui b/tests/auto/tools/uic/baseline/gridalignment.ui
index 11c28b1372..11c28b1372 100644
--- a/tests/auto/uic/baseline/gridalignment.ui
+++ b/tests/auto/tools/uic/baseline/gridalignment.ui
diff --git a/tests/auto/uic/baseline/gridalignment.ui.h b/tests/auto/tools/uic/baseline/gridalignment.ui.h
index b49a5aa74d..b49a5aa74d 100644
--- a/tests/auto/uic/baseline/gridalignment.ui.h
+++ b/tests/auto/tools/uic/baseline/gridalignment.ui.h
diff --git a/tests/auto/uic/baseline/gridpanel.ui b/tests/auto/tools/uic/baseline/gridpanel.ui
index adfdd3684a..adfdd3684a 100644
--- a/tests/auto/uic/baseline/gridpanel.ui
+++ b/tests/auto/tools/uic/baseline/gridpanel.ui
diff --git a/tests/auto/uic/baseline/gridpanel.ui.h b/tests/auto/tools/uic/baseline/gridpanel.ui.h
index e60e22d31c..e60e22d31c 100644
--- a/tests/auto/uic/baseline/gridpanel.ui.h
+++ b/tests/auto/tools/uic/baseline/gridpanel.ui.h
diff --git a/tests/auto/uic/baseline/helpdialog.ui b/tests/auto/tools/uic/baseline/helpdialog.ui
index 133f3d2af4..133f3d2af4 100644
--- a/tests/auto/uic/baseline/helpdialog.ui
+++ b/tests/auto/tools/uic/baseline/helpdialog.ui
diff --git a/tests/auto/uic/baseline/helpdialog.ui.h b/tests/auto/tools/uic/baseline/helpdialog.ui.h
index f89af71caf..f89af71caf 100644
--- a/tests/auto/uic/baseline/helpdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/helpdialog.ui.h
diff --git a/tests/auto/uic/baseline/history.ui b/tests/auto/tools/uic/baseline/history.ui
index 0944940e74..0944940e74 100644
--- a/tests/auto/uic/baseline/history.ui
+++ b/tests/auto/tools/uic/baseline/history.ui
diff --git a/tests/auto/uic/baseline/history.ui.h b/tests/auto/tools/uic/baseline/history.ui.h
index 8787279919..8787279919 100644
--- a/tests/auto/uic/baseline/history.ui.h
+++ b/tests/auto/tools/uic/baseline/history.ui.h
diff --git a/tests/auto/uic/baseline/icontheme.ui b/tests/auto/tools/uic/baseline/icontheme.ui
index a21463561b..a21463561b 100644
--- a/tests/auto/uic/baseline/icontheme.ui
+++ b/tests/auto/tools/uic/baseline/icontheme.ui
diff --git a/tests/auto/uic/baseline/icontheme.ui.h b/tests/auto/tools/uic/baseline/icontheme.ui.h
index e51be85bfb..e51be85bfb 100644
--- a/tests/auto/uic/baseline/icontheme.ui.h
+++ b/tests/auto/tools/uic/baseline/icontheme.ui.h
diff --git a/tests/auto/uic/baseline/identifierpage.ui b/tests/auto/tools/uic/baseline/identifierpage.ui
index cd0df75638..cd0df75638 100644
--- a/tests/auto/uic/baseline/identifierpage.ui
+++ b/tests/auto/tools/uic/baseline/identifierpage.ui
diff --git a/tests/auto/uic/baseline/identifierpage.ui.h b/tests/auto/tools/uic/baseline/identifierpage.ui.h
index d7e9cee42c..d7e9cee42c 100644
--- a/tests/auto/uic/baseline/identifierpage.ui.h
+++ b/tests/auto/tools/uic/baseline/identifierpage.ui.h
diff --git a/tests/auto/uic/baseline/imagedialog.ui b/tests/auto/tools/uic/baseline/imagedialog.ui
index 1c5e546f2c..1c5e546f2c 100644
--- a/tests/auto/uic/baseline/imagedialog.ui
+++ b/tests/auto/tools/uic/baseline/imagedialog.ui
diff --git a/tests/auto/uic/baseline/imagedialog.ui.h b/tests/auto/tools/uic/baseline/imagedialog.ui.h
index 8011a2204e..8011a2204e 100644
--- a/tests/auto/uic/baseline/imagedialog.ui.h
+++ b/tests/auto/tools/uic/baseline/imagedialog.ui.h
diff --git a/tests/auto/uic/baseline/inputpage.ui b/tests/auto/tools/uic/baseline/inputpage.ui
index e7cd3a0fad..e7cd3a0fad 100644
--- a/tests/auto/uic/baseline/inputpage.ui
+++ b/tests/auto/tools/uic/baseline/inputpage.ui
diff --git a/tests/auto/uic/baseline/inputpage.ui.h b/tests/auto/tools/uic/baseline/inputpage.ui.h
index 0ca3cce87e..0ca3cce87e 100644
--- a/tests/auto/uic/baseline/inputpage.ui.h
+++ b/tests/auto/tools/uic/baseline/inputpage.ui.h
diff --git a/tests/auto/uic/baseline/installdialog.ui b/tests/auto/tools/uic/baseline/installdialog.ui
index 21a05da77e..21a05da77e 100644
--- a/tests/auto/uic/baseline/installdialog.ui
+++ b/tests/auto/tools/uic/baseline/installdialog.ui
diff --git a/tests/auto/uic/baseline/installdialog.ui.h b/tests/auto/tools/uic/baseline/installdialog.ui.h
index 9228e08632..9228e08632 100644
--- a/tests/auto/uic/baseline/installdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/installdialog.ui.h
diff --git a/tests/auto/uic/baseline/languagesdialog.ui b/tests/auto/tools/uic/baseline/languagesdialog.ui
index 93b490e9ed..93b490e9ed 100644
--- a/tests/auto/uic/baseline/languagesdialog.ui
+++ b/tests/auto/tools/uic/baseline/languagesdialog.ui
diff --git a/tests/auto/uic/baseline/languagesdialog.ui.h b/tests/auto/tools/uic/baseline/languagesdialog.ui.h
index 5062775944..5062775944 100644
--- a/tests/auto/uic/baseline/languagesdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/languagesdialog.ui.h
diff --git a/tests/auto/uic/baseline/listwidgeteditor.ui b/tests/auto/tools/uic/baseline/listwidgeteditor.ui
index fa7d962bdb..fa7d962bdb 100644
--- a/tests/auto/uic/baseline/listwidgeteditor.ui
+++ b/tests/auto/tools/uic/baseline/listwidgeteditor.ui
diff --git a/tests/auto/uic/baseline/listwidgeteditor.ui.h b/tests/auto/tools/uic/baseline/listwidgeteditor.ui.h
index 3fe00d40ad..3fe00d40ad 100644
--- a/tests/auto/uic/baseline/listwidgeteditor.ui.h
+++ b/tests/auto/tools/uic/baseline/listwidgeteditor.ui.h
diff --git a/tests/auto/uic/baseline/mainwindow.ui b/tests/auto/tools/uic/baseline/mainwindow.ui
index f6eda4fdd6..f6eda4fdd6 100644
--- a/tests/auto/uic/baseline/mainwindow.ui
+++ b/tests/auto/tools/uic/baseline/mainwindow.ui
diff --git a/tests/auto/uic/baseline/mainwindow.ui.h b/tests/auto/tools/uic/baseline/mainwindow.ui.h
index ae0a45d696..ae0a45d696 100644
--- a/tests/auto/uic/baseline/mainwindow.ui.h
+++ b/tests/auto/tools/uic/baseline/mainwindow.ui.h
diff --git a/tests/auto/uic/baseline/mydialog.ui b/tests/auto/tools/uic/baseline/mydialog.ui
index d765b30760..d765b30760 100644
--- a/tests/auto/uic/baseline/mydialog.ui
+++ b/tests/auto/tools/uic/baseline/mydialog.ui
diff --git a/tests/auto/uic/baseline/mydialog.ui.h b/tests/auto/tools/uic/baseline/mydialog.ui.h
index 474684988e..474684988e 100644
--- a/tests/auto/uic/baseline/mydialog.ui.h
+++ b/tests/auto/tools/uic/baseline/mydialog.ui.h
diff --git a/tests/auto/uic/baseline/myform.ui b/tests/auto/tools/uic/baseline/myform.ui
index 00702e860a..00702e860a 100644
--- a/tests/auto/uic/baseline/myform.ui
+++ b/tests/auto/tools/uic/baseline/myform.ui
diff --git a/tests/auto/uic/baseline/myform.ui.h b/tests/auto/tools/uic/baseline/myform.ui.h
index 99e1cdae99..99e1cdae99 100644
--- a/tests/auto/uic/baseline/myform.ui.h
+++ b/tests/auto/tools/uic/baseline/myform.ui.h
diff --git a/tests/auto/uic/baseline/newactiondialog.ui b/tests/auto/tools/uic/baseline/newactiondialog.ui
index ae6212f868..ae6212f868 100644
--- a/tests/auto/uic/baseline/newactiondialog.ui
+++ b/tests/auto/tools/uic/baseline/newactiondialog.ui
diff --git a/tests/auto/uic/baseline/newactiondialog.ui.h b/tests/auto/tools/uic/baseline/newactiondialog.ui.h
index 77ab64ca00..77ab64ca00 100644
--- a/tests/auto/uic/baseline/newactiondialog.ui.h
+++ b/tests/auto/tools/uic/baseline/newactiondialog.ui.h
diff --git a/tests/auto/uic/baseline/newdynamicpropertydialog.ui b/tests/auto/tools/uic/baseline/newdynamicpropertydialog.ui
index 2aa91f3e9e..2aa91f3e9e 100644
--- a/tests/auto/uic/baseline/newdynamicpropertydialog.ui
+++ b/tests/auto/tools/uic/baseline/newdynamicpropertydialog.ui
diff --git a/tests/auto/uic/baseline/newdynamicpropertydialog.ui.h b/tests/auto/tools/uic/baseline/newdynamicpropertydialog.ui.h
index 9aafed487f..9aafed487f 100644
--- a/tests/auto/uic/baseline/newdynamicpropertydialog.ui.h
+++ b/tests/auto/tools/uic/baseline/newdynamicpropertydialog.ui.h
diff --git a/tests/auto/uic/baseline/newform.ui b/tests/auto/tools/uic/baseline/newform.ui
index 3f0a92dfb1..3f0a92dfb1 100644
--- a/tests/auto/uic/baseline/newform.ui
+++ b/tests/auto/tools/uic/baseline/newform.ui
diff --git a/tests/auto/uic/baseline/newform.ui.h b/tests/auto/tools/uic/baseline/newform.ui.h
index bb443f9650..bb443f9650 100644
--- a/tests/auto/uic/baseline/newform.ui.h
+++ b/tests/auto/tools/uic/baseline/newform.ui.h
diff --git a/tests/auto/uic/baseline/orderdialog.ui b/tests/auto/tools/uic/baseline/orderdialog.ui
index b44824778f..b44824778f 100644
--- a/tests/auto/uic/baseline/orderdialog.ui
+++ b/tests/auto/tools/uic/baseline/orderdialog.ui
diff --git a/tests/auto/uic/baseline/orderdialog.ui.h b/tests/auto/tools/uic/baseline/orderdialog.ui.h
index b54c256dc0..b54c256dc0 100644
--- a/tests/auto/uic/baseline/orderdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/orderdialog.ui.h
diff --git a/tests/auto/uic/baseline/outputpage.ui b/tests/auto/tools/uic/baseline/outputpage.ui
index 755f818085..755f818085 100644
--- a/tests/auto/uic/baseline/outputpage.ui
+++ b/tests/auto/tools/uic/baseline/outputpage.ui
diff --git a/tests/auto/uic/baseline/outputpage.ui.h b/tests/auto/tools/uic/baseline/outputpage.ui.h
index b10101fa1b..b10101fa1b 100644
--- a/tests/auto/uic/baseline/outputpage.ui.h
+++ b/tests/auto/tools/uic/baseline/outputpage.ui.h
diff --git a/tests/auto/uic/baseline/pagefold.ui b/tests/auto/tools/uic/baseline/pagefold.ui
index 7ae313c331..7ae313c331 100644
--- a/tests/auto/uic/baseline/pagefold.ui
+++ b/tests/auto/tools/uic/baseline/pagefold.ui
diff --git a/tests/auto/uic/baseline/pagefold.ui.h b/tests/auto/tools/uic/baseline/pagefold.ui.h
index 3efad22aad..3efad22aad 100644
--- a/tests/auto/uic/baseline/pagefold.ui.h
+++ b/tests/auto/tools/uic/baseline/pagefold.ui.h
diff --git a/tests/auto/uic/baseline/paletteeditor.ui b/tests/auto/tools/uic/baseline/paletteeditor.ui
index 1cc6a18583..1cc6a18583 100644
--- a/tests/auto/uic/baseline/paletteeditor.ui
+++ b/tests/auto/tools/uic/baseline/paletteeditor.ui
diff --git a/tests/auto/uic/baseline/paletteeditor.ui.h b/tests/auto/tools/uic/baseline/paletteeditor.ui.h
index bafd0ee0d9..bafd0ee0d9 100644
--- a/tests/auto/uic/baseline/paletteeditor.ui.h
+++ b/tests/auto/tools/uic/baseline/paletteeditor.ui.h
diff --git a/tests/auto/uic/baseline/passworddialog.ui b/tests/auto/tools/uic/baseline/passworddialog.ui
index 7c1665867a..7c1665867a 100644
--- a/tests/auto/uic/baseline/passworddialog.ui
+++ b/tests/auto/tools/uic/baseline/passworddialog.ui
diff --git a/tests/auto/uic/baseline/passworddialog.ui.h b/tests/auto/tools/uic/baseline/passworddialog.ui.h
index 1cf2efc443..1cf2efc443 100644
--- a/tests/auto/uic/baseline/passworddialog.ui.h
+++ b/tests/auto/tools/uic/baseline/passworddialog.ui.h
diff --git a/tests/auto/uic/baseline/pathpage.ui b/tests/auto/tools/uic/baseline/pathpage.ui
index 89083915dd..89083915dd 100644
--- a/tests/auto/uic/baseline/pathpage.ui
+++ b/tests/auto/tools/uic/baseline/pathpage.ui
diff --git a/tests/auto/uic/baseline/pathpage.ui.h b/tests/auto/tools/uic/baseline/pathpage.ui.h
index cc7a99045f..cc7a99045f 100644
--- a/tests/auto/uic/baseline/pathpage.ui.h
+++ b/tests/auto/tools/uic/baseline/pathpage.ui.h
diff --git a/tests/auto/uic/baseline/phrasebookbox.ui b/tests/auto/tools/uic/baseline/phrasebookbox.ui
index 66558ea28a..66558ea28a 100644
--- a/tests/auto/uic/baseline/phrasebookbox.ui
+++ b/tests/auto/tools/uic/baseline/phrasebookbox.ui
diff --git a/tests/auto/uic/baseline/phrasebookbox.ui.h b/tests/auto/tools/uic/baseline/phrasebookbox.ui.h
index 21e1a4a74d..21e1a4a74d 100644
--- a/tests/auto/uic/baseline/phrasebookbox.ui.h
+++ b/tests/auto/tools/uic/baseline/phrasebookbox.ui.h
diff --git a/tests/auto/uic/baseline/plugindialog.ui b/tests/auto/tools/uic/baseline/plugindialog.ui
index d4bec98834..d4bec98834 100644
--- a/tests/auto/uic/baseline/plugindialog.ui
+++ b/tests/auto/tools/uic/baseline/plugindialog.ui
diff --git a/tests/auto/uic/baseline/plugindialog.ui.h b/tests/auto/tools/uic/baseline/plugindialog.ui.h
index b5e34b7ade..b5e34b7ade 100644
--- a/tests/auto/uic/baseline/plugindialog.ui.h
+++ b/tests/auto/tools/uic/baseline/plugindialog.ui.h
diff --git a/tests/auto/uic/baseline/preferencesdialog.ui b/tests/auto/tools/uic/baseline/preferencesdialog.ui
index 3092fcb53c..3092fcb53c 100644
--- a/tests/auto/uic/baseline/preferencesdialog.ui
+++ b/tests/auto/tools/uic/baseline/preferencesdialog.ui
diff --git a/tests/auto/uic/baseline/preferencesdialog.ui.h b/tests/auto/tools/uic/baseline/preferencesdialog.ui.h
index 33b7e6880c..33b7e6880c 100644
--- a/tests/auto/uic/baseline/preferencesdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/preferencesdialog.ui.h
diff --git a/tests/auto/uic/baseline/previewconfigurationwidget.ui b/tests/auto/tools/uic/baseline/previewconfigurationwidget.ui
index 2f18766ff7..2f18766ff7 100644
--- a/tests/auto/uic/baseline/previewconfigurationwidget.ui
+++ b/tests/auto/tools/uic/baseline/previewconfigurationwidget.ui
diff --git a/tests/auto/uic/baseline/previewconfigurationwidget.ui.h b/tests/auto/tools/uic/baseline/previewconfigurationwidget.ui.h
index 951792dd44..951792dd44 100644
--- a/tests/auto/uic/baseline/previewconfigurationwidget.ui.h
+++ b/tests/auto/tools/uic/baseline/previewconfigurationwidget.ui.h
diff --git a/tests/auto/uic/baseline/previewdialogbase.ui b/tests/auto/tools/uic/baseline/previewdialogbase.ui
index 593ee33577..593ee33577 100644
--- a/tests/auto/uic/baseline/previewdialogbase.ui
+++ b/tests/auto/tools/uic/baseline/previewdialogbase.ui
diff --git a/tests/auto/uic/baseline/previewdialogbase.ui.h b/tests/auto/tools/uic/baseline/previewdialogbase.ui.h
index 4fe450153b..4fe450153b 100644
--- a/tests/auto/uic/baseline/previewdialogbase.ui.h
+++ b/tests/auto/tools/uic/baseline/previewdialogbase.ui.h
diff --git a/tests/auto/uic/baseline/previewwidget.ui b/tests/auto/tools/uic/baseline/previewwidget.ui
index d38ab7cf30..d38ab7cf30 100644
--- a/tests/auto/uic/baseline/previewwidget.ui
+++ b/tests/auto/tools/uic/baseline/previewwidget.ui
diff --git a/tests/auto/uic/baseline/previewwidget.ui.h b/tests/auto/tools/uic/baseline/previewwidget.ui.h
index 02786f152c..02786f152c 100644
--- a/tests/auto/uic/baseline/previewwidget.ui.h
+++ b/tests/auto/tools/uic/baseline/previewwidget.ui.h
diff --git a/tests/auto/uic/baseline/proxy.ui b/tests/auto/tools/uic/baseline/proxy.ui
index 62a8be6273..62a8be6273 100644
--- a/tests/auto/uic/baseline/proxy.ui
+++ b/tests/auto/tools/uic/baseline/proxy.ui
diff --git a/tests/auto/uic/baseline/proxy.ui.h b/tests/auto/tools/uic/baseline/proxy.ui.h
index 19822a805e..19822a805e 100644
--- a/tests/auto/uic/baseline/proxy.ui.h
+++ b/tests/auto/tools/uic/baseline/proxy.ui.h
diff --git a/tests/auto/uic/baseline/qfiledialog.ui b/tests/auto/tools/uic/baseline/qfiledialog.ui
index 85f5991722..85f5991722 100644
--- a/tests/auto/uic/baseline/qfiledialog.ui
+++ b/tests/auto/tools/uic/baseline/qfiledialog.ui
diff --git a/tests/auto/uic/baseline/qfiledialog.ui.h b/tests/auto/tools/uic/baseline/qfiledialog.ui.h
index 3bebe74c12..3bebe74c12 100644
--- a/tests/auto/uic/baseline/qfiledialog.ui.h
+++ b/tests/auto/tools/uic/baseline/qfiledialog.ui.h
diff --git a/tests/auto/uic/baseline/qpagesetupwidget.ui b/tests/auto/tools/uic/baseline/qpagesetupwidget.ui
index ace2ab8f44..ace2ab8f44 100644
--- a/tests/auto/uic/baseline/qpagesetupwidget.ui
+++ b/tests/auto/tools/uic/baseline/qpagesetupwidget.ui
diff --git a/tests/auto/uic/baseline/qpagesetupwidget.ui.h b/tests/auto/tools/uic/baseline/qpagesetupwidget.ui.h
index 6d0a3b4483..6d0a3b4483 100644
--- a/tests/auto/uic/baseline/qpagesetupwidget.ui.h
+++ b/tests/auto/tools/uic/baseline/qpagesetupwidget.ui.h
diff --git a/tests/auto/uic/baseline/qprintpropertieswidget.ui b/tests/auto/tools/uic/baseline/qprintpropertieswidget.ui
index 26fa09599e..26fa09599e 100644
--- a/tests/auto/uic/baseline/qprintpropertieswidget.ui
+++ b/tests/auto/tools/uic/baseline/qprintpropertieswidget.ui
diff --git a/tests/auto/uic/baseline/qprintpropertieswidget.ui.h b/tests/auto/tools/uic/baseline/qprintpropertieswidget.ui.h
index 512fcecb66..512fcecb66 100644
--- a/tests/auto/uic/baseline/qprintpropertieswidget.ui.h
+++ b/tests/auto/tools/uic/baseline/qprintpropertieswidget.ui.h
diff --git a/tests/auto/uic/baseline/qprintsettingsoutput.ui b/tests/auto/tools/uic/baseline/qprintsettingsoutput.ui
index de8f4faeeb..de8f4faeeb 100644
--- a/tests/auto/uic/baseline/qprintsettingsoutput.ui
+++ b/tests/auto/tools/uic/baseline/qprintsettingsoutput.ui
diff --git a/tests/auto/uic/baseline/qprintsettingsoutput.ui.h b/tests/auto/tools/uic/baseline/qprintsettingsoutput.ui.h
index 13ee6eec7d..13ee6eec7d 100644
--- a/tests/auto/uic/baseline/qprintsettingsoutput.ui.h
+++ b/tests/auto/tools/uic/baseline/qprintsettingsoutput.ui.h
diff --git a/tests/auto/uic/baseline/qprintwidget.ui b/tests/auto/tools/uic/baseline/qprintwidget.ui
index 8a4f3bde0a..8a4f3bde0a 100644
--- a/tests/auto/uic/baseline/qprintwidget.ui
+++ b/tests/auto/tools/uic/baseline/qprintwidget.ui
diff --git a/tests/auto/uic/baseline/qprintwidget.ui.h b/tests/auto/tools/uic/baseline/qprintwidget.ui.h
index 4437935efb..4437935efb 100644
--- a/tests/auto/uic/baseline/qprintwidget.ui.h
+++ b/tests/auto/tools/uic/baseline/qprintwidget.ui.h
diff --git a/tests/auto/uic/baseline/qsqlconnectiondialog.ui b/tests/auto/tools/uic/baseline/qsqlconnectiondialog.ui
index 91a8700579..91a8700579 100644
--- a/tests/auto/uic/baseline/qsqlconnectiondialog.ui
+++ b/tests/auto/tools/uic/baseline/qsqlconnectiondialog.ui
diff --git a/tests/auto/uic/baseline/qsqlconnectiondialog.ui.h b/tests/auto/tools/uic/baseline/qsqlconnectiondialog.ui.h
index ed428fdcc7..ed428fdcc7 100644
--- a/tests/auto/uic/baseline/qsqlconnectiondialog.ui.h
+++ b/tests/auto/tools/uic/baseline/qsqlconnectiondialog.ui.h
diff --git a/tests/auto/uic/baseline/qtgradientdialog.ui b/tests/auto/tools/uic/baseline/qtgradientdialog.ui
index 0c5578fd0b..0c5578fd0b 100644
--- a/tests/auto/uic/baseline/qtgradientdialog.ui
+++ b/tests/auto/tools/uic/baseline/qtgradientdialog.ui
diff --git a/tests/auto/uic/baseline/qtgradientdialog.ui.h b/tests/auto/tools/uic/baseline/qtgradientdialog.ui.h
index de7690d87a..de7690d87a 100644
--- a/tests/auto/uic/baseline/qtgradientdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/qtgradientdialog.ui.h
diff --git a/tests/auto/uic/baseline/qtgradienteditor.ui b/tests/auto/tools/uic/baseline/qtgradienteditor.ui
index 472066b7fa..472066b7fa 100644
--- a/tests/auto/uic/baseline/qtgradienteditor.ui
+++ b/tests/auto/tools/uic/baseline/qtgradienteditor.ui
diff --git a/tests/auto/uic/baseline/qtgradienteditor.ui.h b/tests/auto/tools/uic/baseline/qtgradienteditor.ui.h
index ff46126ea4..ff46126ea4 100644
--- a/tests/auto/uic/baseline/qtgradienteditor.ui.h
+++ b/tests/auto/tools/uic/baseline/qtgradienteditor.ui.h
diff --git a/tests/auto/uic/baseline/qtgradientview.ui b/tests/auto/tools/uic/baseline/qtgradientview.ui
index af7267ea2b..af7267ea2b 100644
--- a/tests/auto/uic/baseline/qtgradientview.ui
+++ b/tests/auto/tools/uic/baseline/qtgradientview.ui
diff --git a/tests/auto/uic/baseline/qtgradientview.ui.h b/tests/auto/tools/uic/baseline/qtgradientview.ui.h
index 6787c8d60b..6787c8d60b 100644
--- a/tests/auto/uic/baseline/qtgradientview.ui.h
+++ b/tests/auto/tools/uic/baseline/qtgradientview.ui.h
diff --git a/tests/auto/uic/baseline/qtgradientviewdialog.ui b/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui
index c84907289b..c84907289b 100644
--- a/tests/auto/uic/baseline/qtgradientviewdialog.ui
+++ b/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui
diff --git a/tests/auto/uic/baseline/qtgradientviewdialog.ui.h b/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui.h
index b07cd4ca68..b07cd4ca68 100644
--- a/tests/auto/uic/baseline/qtgradientviewdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui.h
diff --git a/tests/auto/uic/baseline/qtresourceeditordialog.ui b/tests/auto/tools/uic/baseline/qtresourceeditordialog.ui
index 2205da4d50..2205da4d50 100644
--- a/tests/auto/uic/baseline/qtresourceeditordialog.ui
+++ b/tests/auto/tools/uic/baseline/qtresourceeditordialog.ui
diff --git a/tests/auto/uic/baseline/qtresourceeditordialog.ui.h b/tests/auto/tools/uic/baseline/qtresourceeditordialog.ui.h
index d434af782d..d434af782d 100644
--- a/tests/auto/uic/baseline/qtresourceeditordialog.ui.h
+++ b/tests/auto/tools/uic/baseline/qtresourceeditordialog.ui.h
diff --git a/tests/auto/uic/baseline/qttoolbardialog.ui b/tests/auto/tools/uic/baseline/qttoolbardialog.ui
index c4ad934f80..c4ad934f80 100644
--- a/tests/auto/uic/baseline/qttoolbardialog.ui
+++ b/tests/auto/tools/uic/baseline/qttoolbardialog.ui
diff --git a/tests/auto/uic/baseline/qttoolbardialog.ui.h b/tests/auto/tools/uic/baseline/qttoolbardialog.ui.h
index 35a40c3340..35a40c3340 100644
--- a/tests/auto/uic/baseline/qttoolbardialog.ui.h
+++ b/tests/auto/tools/uic/baseline/qttoolbardialog.ui.h
diff --git a/tests/auto/uic/baseline/querywidget.ui b/tests/auto/tools/uic/baseline/querywidget.ui
index 53fa62227b..53fa62227b 100644
--- a/tests/auto/uic/baseline/querywidget.ui
+++ b/tests/auto/tools/uic/baseline/querywidget.ui
diff --git a/tests/auto/uic/baseline/querywidget.ui.h b/tests/auto/tools/uic/baseline/querywidget.ui.h
index c628457368..c628457368 100644
--- a/tests/auto/uic/baseline/querywidget.ui.h
+++ b/tests/auto/tools/uic/baseline/querywidget.ui.h
diff --git a/tests/auto/uic/baseline/remotecontrol.ui b/tests/auto/tools/uic/baseline/remotecontrol.ui
index 1cfc7f5400..1cfc7f5400 100644
--- a/tests/auto/uic/baseline/remotecontrol.ui
+++ b/tests/auto/tools/uic/baseline/remotecontrol.ui
diff --git a/tests/auto/uic/baseline/remotecontrol.ui.h b/tests/auto/tools/uic/baseline/remotecontrol.ui.h
index b970fca2a0..b970fca2a0 100644
--- a/tests/auto/uic/baseline/remotecontrol.ui.h
+++ b/tests/auto/tools/uic/baseline/remotecontrol.ui.h
diff --git a/tests/auto/uic/baseline/saveformastemplate.ui b/tests/auto/tools/uic/baseline/saveformastemplate.ui
index 81d55d3b63..81d55d3b63 100644
--- a/tests/auto/uic/baseline/saveformastemplate.ui
+++ b/tests/auto/tools/uic/baseline/saveformastemplate.ui
diff --git a/tests/auto/uic/baseline/saveformastemplate.ui.h b/tests/auto/tools/uic/baseline/saveformastemplate.ui.h
index 64a3c78907..64a3c78907 100644
--- a/tests/auto/uic/baseline/saveformastemplate.ui.h
+++ b/tests/auto/tools/uic/baseline/saveformastemplate.ui.h
diff --git a/tests/auto/uic/baseline/settings.ui b/tests/auto/tools/uic/baseline/settings.ui
index fcf698ba85..fcf698ba85 100644
--- a/tests/auto/uic/baseline/settings.ui
+++ b/tests/auto/tools/uic/baseline/settings.ui
diff --git a/tests/auto/uic/baseline/settings.ui.h b/tests/auto/tools/uic/baseline/settings.ui.h
index e09b7df6e7..e09b7df6e7 100644
--- a/tests/auto/uic/baseline/settings.ui.h
+++ b/tests/auto/tools/uic/baseline/settings.ui.h
diff --git a/tests/auto/uic/baseline/signalslotdialog.ui b/tests/auto/tools/uic/baseline/signalslotdialog.ui
index 1a8a8d9219..1a8a8d9219 100644
--- a/tests/auto/uic/baseline/signalslotdialog.ui
+++ b/tests/auto/tools/uic/baseline/signalslotdialog.ui
diff --git a/tests/auto/uic/baseline/signalslotdialog.ui.h b/tests/auto/tools/uic/baseline/signalslotdialog.ui.h
index 7bbe74ce14..7bbe74ce14 100644
--- a/tests/auto/uic/baseline/signalslotdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/signalslotdialog.ui.h
diff --git a/tests/auto/uic/baseline/sslclient.ui b/tests/auto/tools/uic/baseline/sslclient.ui
index 5a24751168..5a24751168 100644
--- a/tests/auto/uic/baseline/sslclient.ui
+++ b/tests/auto/tools/uic/baseline/sslclient.ui
diff --git a/tests/auto/uic/baseline/sslclient.ui.h b/tests/auto/tools/uic/baseline/sslclient.ui.h
index ef324627c7..ef324627c7 100644
--- a/tests/auto/uic/baseline/sslclient.ui.h
+++ b/tests/auto/tools/uic/baseline/sslclient.ui.h
diff --git a/tests/auto/uic/baseline/sslerrors.ui b/tests/auto/tools/uic/baseline/sslerrors.ui
index 4aac18cddb..4aac18cddb 100644
--- a/tests/auto/uic/baseline/sslerrors.ui
+++ b/tests/auto/tools/uic/baseline/sslerrors.ui
diff --git a/tests/auto/uic/baseline/sslerrors.ui.h b/tests/auto/tools/uic/baseline/sslerrors.ui.h
index ef83595025..ef83595025 100644
--- a/tests/auto/uic/baseline/sslerrors.ui.h
+++ b/tests/auto/tools/uic/baseline/sslerrors.ui.h
diff --git a/tests/auto/uic/baseline/statistics.ui b/tests/auto/tools/uic/baseline/statistics.ui
index ba752e386a..ba752e386a 100644
--- a/tests/auto/uic/baseline/statistics.ui
+++ b/tests/auto/tools/uic/baseline/statistics.ui
diff --git a/tests/auto/uic/baseline/statistics.ui.h b/tests/auto/tools/uic/baseline/statistics.ui.h
index a7d256866f..a7d256866f 100644
--- a/tests/auto/uic/baseline/statistics.ui.h
+++ b/tests/auto/tools/uic/baseline/statistics.ui.h
diff --git a/tests/auto/uic/baseline/stringlisteditor.ui b/tests/auto/tools/uic/baseline/stringlisteditor.ui
index 96fff1c3ea..96fff1c3ea 100644
--- a/tests/auto/uic/baseline/stringlisteditor.ui
+++ b/tests/auto/tools/uic/baseline/stringlisteditor.ui
diff --git a/tests/auto/uic/baseline/stringlisteditor.ui.h b/tests/auto/tools/uic/baseline/stringlisteditor.ui.h
index db5d4417c1..db5d4417c1 100644
--- a/tests/auto/uic/baseline/stringlisteditor.ui.h
+++ b/tests/auto/tools/uic/baseline/stringlisteditor.ui.h
diff --git a/tests/auto/uic/baseline/stylesheeteditor.ui b/tests/auto/tools/uic/baseline/stylesheeteditor.ui
index 34cd7f6d04..34cd7f6d04 100644
--- a/tests/auto/uic/baseline/stylesheeteditor.ui
+++ b/tests/auto/tools/uic/baseline/stylesheeteditor.ui
diff --git a/tests/auto/uic/baseline/stylesheeteditor.ui.h b/tests/auto/tools/uic/baseline/stylesheeteditor.ui.h
index ea635a14f2..ea635a14f2 100644
--- a/tests/auto/uic/baseline/stylesheeteditor.ui.h
+++ b/tests/auto/tools/uic/baseline/stylesheeteditor.ui.h
diff --git a/tests/auto/uic/baseline/tabbedbrowser.ui b/tests/auto/tools/uic/baseline/tabbedbrowser.ui
index 6bb608f79f..6bb608f79f 100644
--- a/tests/auto/uic/baseline/tabbedbrowser.ui
+++ b/tests/auto/tools/uic/baseline/tabbedbrowser.ui
diff --git a/tests/auto/uic/baseline/tabbedbrowser.ui.h b/tests/auto/tools/uic/baseline/tabbedbrowser.ui.h
index 73f7af75a6..73f7af75a6 100644
--- a/tests/auto/uic/baseline/tabbedbrowser.ui.h
+++ b/tests/auto/tools/uic/baseline/tabbedbrowser.ui.h
diff --git a/tests/auto/uic/baseline/tablewidgeteditor.ui b/tests/auto/tools/uic/baseline/tablewidgeteditor.ui
index ebd15a2f80..ebd15a2f80 100644
--- a/tests/auto/uic/baseline/tablewidgeteditor.ui
+++ b/tests/auto/tools/uic/baseline/tablewidgeteditor.ui
diff --git a/tests/auto/uic/baseline/tablewidgeteditor.ui.h b/tests/auto/tools/uic/baseline/tablewidgeteditor.ui.h
index 080fd209c1..080fd209c1 100644
--- a/tests/auto/uic/baseline/tablewidgeteditor.ui.h
+++ b/tests/auto/tools/uic/baseline/tablewidgeteditor.ui.h
diff --git a/tests/auto/uic/baseline/tetrixwindow.ui b/tests/auto/tools/uic/baseline/tetrixwindow.ui
index a13f538aa8..a13f538aa8 100644
--- a/tests/auto/uic/baseline/tetrixwindow.ui
+++ b/tests/auto/tools/uic/baseline/tetrixwindow.ui
diff --git a/tests/auto/uic/baseline/tetrixwindow.ui.h b/tests/auto/tools/uic/baseline/tetrixwindow.ui.h
index cd2f2cf11c..cd2f2cf11c 100644
--- a/tests/auto/uic/baseline/tetrixwindow.ui.h
+++ b/tests/auto/tools/uic/baseline/tetrixwindow.ui.h
diff --git a/tests/auto/uic/baseline/textfinder.ui b/tests/auto/tools/uic/baseline/textfinder.ui
index af05192dbd..af05192dbd 100644
--- a/tests/auto/uic/baseline/textfinder.ui
+++ b/tests/auto/tools/uic/baseline/textfinder.ui
diff --git a/tests/auto/uic/baseline/textfinder.ui.h b/tests/auto/tools/uic/baseline/textfinder.ui.h
index 2b2141281e..2b2141281e 100644
--- a/tests/auto/uic/baseline/textfinder.ui.h
+++ b/tests/auto/tools/uic/baseline/textfinder.ui.h
diff --git a/tests/auto/uic/baseline/topicchooser.ui b/tests/auto/tools/uic/baseline/topicchooser.ui
index d4c90bb4b3..d4c90bb4b3 100644
--- a/tests/auto/uic/baseline/topicchooser.ui
+++ b/tests/auto/tools/uic/baseline/topicchooser.ui
diff --git a/tests/auto/uic/baseline/topicchooser.ui.h b/tests/auto/tools/uic/baseline/topicchooser.ui.h
index 04ceede911..04ceede911 100644
--- a/tests/auto/uic/baseline/topicchooser.ui.h
+++ b/tests/auto/tools/uic/baseline/topicchooser.ui.h
diff --git a/tests/auto/uic/baseline/translatedialog.ui b/tests/auto/tools/uic/baseline/translatedialog.ui
index b1cd99cbe7..b1cd99cbe7 100644
--- a/tests/auto/uic/baseline/translatedialog.ui
+++ b/tests/auto/tools/uic/baseline/translatedialog.ui
diff --git a/tests/auto/uic/baseline/translatedialog.ui.h b/tests/auto/tools/uic/baseline/translatedialog.ui.h
index 737fe1e196..737fe1e196 100644
--- a/tests/auto/uic/baseline/translatedialog.ui.h
+++ b/tests/auto/tools/uic/baseline/translatedialog.ui.h
diff --git a/tests/auto/uic/baseline/translationsettings.ui b/tests/auto/tools/uic/baseline/translationsettings.ui
index 4bd4be9e09..4bd4be9e09 100644
--- a/tests/auto/uic/baseline/translationsettings.ui
+++ b/tests/auto/tools/uic/baseline/translationsettings.ui
diff --git a/tests/auto/uic/baseline/translationsettings.ui.h b/tests/auto/tools/uic/baseline/translationsettings.ui.h
index 2105b09ede..2105b09ede 100644
--- a/tests/auto/uic/baseline/translationsettings.ui.h
+++ b/tests/auto/tools/uic/baseline/translationsettings.ui.h
diff --git a/tests/auto/uic/baseline/treewidgeteditor.ui b/tests/auto/tools/uic/baseline/treewidgeteditor.ui
index 1256a0a2fa..1256a0a2fa 100644
--- a/tests/auto/uic/baseline/treewidgeteditor.ui
+++ b/tests/auto/tools/uic/baseline/treewidgeteditor.ui
diff --git a/tests/auto/uic/baseline/treewidgeteditor.ui.h b/tests/auto/tools/uic/baseline/treewidgeteditor.ui.h
index 4a3a48c145..4a3a48c145 100644
--- a/tests/auto/uic/baseline/treewidgeteditor.ui.h
+++ b/tests/auto/tools/uic/baseline/treewidgeteditor.ui.h
diff --git a/tests/auto/uic/baseline/trpreviewtool.ui b/tests/auto/tools/uic/baseline/trpreviewtool.ui
index 03441139ed..03441139ed 100644
--- a/tests/auto/uic/baseline/trpreviewtool.ui
+++ b/tests/auto/tools/uic/baseline/trpreviewtool.ui
diff --git a/tests/auto/uic/baseline/trpreviewtool.ui.h b/tests/auto/tools/uic/baseline/trpreviewtool.ui.h
index da1d268d82..da1d268d82 100644
--- a/tests/auto/uic/baseline/trpreviewtool.ui.h
+++ b/tests/auto/tools/uic/baseline/trpreviewtool.ui.h
diff --git a/tests/auto/uic/baseline/validators.ui b/tests/auto/tools/uic/baseline/validators.ui
index f05b96fbe0..f05b96fbe0 100644
--- a/tests/auto/uic/baseline/validators.ui
+++ b/tests/auto/tools/uic/baseline/validators.ui
diff --git a/tests/auto/uic/baseline/validators.ui.h b/tests/auto/tools/uic/baseline/validators.ui.h
index 27b5482627..27b5482627 100644
--- a/tests/auto/uic/baseline/validators.ui.h
+++ b/tests/auto/tools/uic/baseline/validators.ui.h
diff --git a/tests/auto/uic/baseline/wateringconfigdialog.ui b/tests/auto/tools/uic/baseline/wateringconfigdialog.ui
index a7f5349d78..a7f5349d78 100644
--- a/tests/auto/uic/baseline/wateringconfigdialog.ui
+++ b/tests/auto/tools/uic/baseline/wateringconfigdialog.ui
diff --git a/tests/auto/uic/baseline/wateringconfigdialog.ui.h b/tests/auto/tools/uic/baseline/wateringconfigdialog.ui.h
index 9e586f02b6..9e586f02b6 100644
--- a/tests/auto/uic/baseline/wateringconfigdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/wateringconfigdialog.ui.h
diff --git a/tests/auto/uic/generated_ui/placeholder b/tests/auto/tools/uic/generated_ui/placeholder
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/uic/generated_ui/placeholder
+++ b/tests/auto/tools/uic/generated_ui/placeholder
diff --git a/tests/auto/uic/tst_uic.cpp b/tests/auto/tools/uic/tst_uic.cpp
index 754fa6e01b..754fa6e01b 100644
--- a/tests/auto/uic/tst_uic.cpp
+++ b/tests/auto/tools/uic/tst_uic.cpp
diff --git a/tests/auto/tools/uic/uic.pro b/tests/auto/tools/uic/uic.pro
new file mode 100644
index 0000000000..37c9a1e430
--- /dev/null
+++ b/tests/auto/tools/uic/uic.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+
+SOURCES += tst_uic.cpp
+TARGET = tst_uic
+
+# This test is not run on wince (I think)
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/uic/uic.pro b/tests/auto/uic/uic.pro
deleted file mode 100644
index 0045015457..0000000000
--- a/tests/auto/uic/uic.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-load(qttest_p4)
-
-SOURCES += tst_uic.cpp
-TARGET = tst_uic
-
-# This test is not run on wince (I think)
-DEFINES += SRCDIR=\\\"$$PWD/\\\"
diff --git a/tests/auto/uiloader/uiloader/uiloader.pro b/tests/auto/uiloader/uiloader/uiloader.pro
index b959d438b7..12624703ff 100644
--- a/tests/auto/uiloader/uiloader/uiloader.pro
+++ b/tests/auto/uiloader/uiloader/uiloader.pro
@@ -13,7 +13,7 @@ win32 {
}
}
-QT += xml svg network
+QT += widgets network
wince*|symbian: {
configuration.files = ../*.ini
diff --git a/tests/auto/v8/v8.pro b/tests/auto/v8/v8.pro
index feda53bf50..599aeef9c6 100644
--- a/tests/auto/v8/v8.pro
+++ b/tests/auto/v8/v8.pro
@@ -7,3 +7,5 @@ HEADERS += v8test.h
CONFIG += parallel_test
QT += v8-private
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/windowsmobile/test/test.pro b/tests/auto/windowsmobile/test/test.pro
index b0536a5e79..595a619d2a 100644
--- a/tests/auto/windowsmobile/test/test.pro
+++ b/tests/auto/windowsmobile/test/test.pro
@@ -1,6 +1,6 @@
load(qttest_p4)
-
+QT += widgets
HEADERS += ddhelper.h
SOURCES += tst_windowsmobile.cpp ddhelper.cpp
RESOURCES += windowsmobile.qrc
diff --git a/tests/auto/windowsmobile/testQMenuBar/testQMenuBar.pro b/tests/auto/windowsmobile/testQMenuBar/testQMenuBar.pro
index 87986e4d96..6b84ae937c 100644
--- a/tests/auto/windowsmobile/testQMenuBar/testQMenuBar.pro
+++ b/tests/auto/windowsmobile/testQMenuBar/testQMenuBar.pro
@@ -1,3 +1,4 @@
SOURCES += main.cpp
+QT += widgets
TARGET = ../testQMenuBar
diff --git a/tests/auto/xml.pro b/tests/auto/xml.pro
deleted file mode 100644
index 76afec89cd..0000000000
--- a/tests/auto/xml.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-TEMPLATE=subdirs
-SUBDIRS=\
- qdom \
- qxml \
- qxmlinputsource \
- qxmlsimplereader \
- qxmlstream \
-
diff --git a/tests/auto/xml/dom/dom.pro b/tests/auto/xml/dom/dom.pro
new file mode 100644
index 0000000000..17cfafcea7
--- /dev/null
+++ b/tests/auto/xml/dom/dom.pro
@@ -0,0 +1,4 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qdom \
+
diff --git a/tests/auto/qdom/.gitattributes b/tests/auto/xml/dom/qdom/.gitattributes
index 68f316ef6f..68f316ef6f 100644
--- a/tests/auto/qdom/.gitattributes
+++ b/tests/auto/xml/dom/qdom/.gitattributes
diff --git a/tests/auto/qdom/.gitignore b/tests/auto/xml/dom/qdom/.gitignore
index 79b84c36bb..79b84c36bb 100644
--- a/tests/auto/qdom/.gitignore
+++ b/tests/auto/xml/dom/qdom/.gitignore
diff --git a/tests/auto/qdom/doubleNamespaces.xml b/tests/auto/xml/dom/qdom/doubleNamespaces.xml
index c809aa17d3..c809aa17d3 100644
--- a/tests/auto/qdom/doubleNamespaces.xml
+++ b/tests/auto/xml/dom/qdom/doubleNamespaces.xml
diff --git a/tests/auto/qdom/qdom.pro b/tests/auto/xml/dom/qdom/qdom.pro
index 0a3c167a4b..0a3c167a4b 100644
--- a/tests/auto/qdom/qdom.pro
+++ b/tests/auto/xml/dom/qdom/qdom.pro
diff --git a/tests/auto/qdom/testdata/excludedCodecs.txt b/tests/auto/xml/dom/qdom/testdata/excludedCodecs.txt
index 1f0d871563..1f0d871563 100644
--- a/tests/auto/qdom/testdata/excludedCodecs.txt
+++ b/tests/auto/xml/dom/qdom/testdata/excludedCodecs.txt
diff --git a/tests/auto/qdom/testdata/toString_01/doc01.xml b/tests/auto/xml/dom/qdom/testdata/toString_01/doc01.xml
index 1ac45429fb..1ac45429fb 100644
--- a/tests/auto/qdom/testdata/toString_01/doc01.xml
+++ b/tests/auto/xml/dom/qdom/testdata/toString_01/doc01.xml
diff --git a/tests/auto/qdom/testdata/toString_01/doc02.xml b/tests/auto/xml/dom/qdom/testdata/toString_01/doc02.xml
index 3fb9aff884..3fb9aff884 100644
--- a/tests/auto/qdom/testdata/toString_01/doc02.xml
+++ b/tests/auto/xml/dom/qdom/testdata/toString_01/doc02.xml
diff --git a/tests/auto/qdom/testdata/toString_01/doc03.xml b/tests/auto/xml/dom/qdom/testdata/toString_01/doc03.xml
index 6121f70e25..6121f70e25 100644
--- a/tests/auto/qdom/testdata/toString_01/doc03.xml
+++ b/tests/auto/xml/dom/qdom/testdata/toString_01/doc03.xml
diff --git a/tests/auto/qdom/testdata/toString_01/doc04.xml b/tests/auto/xml/dom/qdom/testdata/toString_01/doc04.xml
index 541c44e31b..541c44e31b 100644
--- a/tests/auto/qdom/testdata/toString_01/doc04.xml
+++ b/tests/auto/xml/dom/qdom/testdata/toString_01/doc04.xml
diff --git a/tests/auto/qdom/testdata/toString_01/doc05.xml b/tests/auto/xml/dom/qdom/testdata/toString_01/doc05.xml
index 76fce8b0ab..76fce8b0ab 100644
--- a/tests/auto/qdom/testdata/toString_01/doc05.xml
+++ b/tests/auto/xml/dom/qdom/testdata/toString_01/doc05.xml
diff --git a/tests/auto/qdom/testdata/toString_01/doc_euc-jp.xml b/tests/auto/xml/dom/qdom/testdata/toString_01/doc_euc-jp.xml
index 887ab5ec30..887ab5ec30 100644
--- a/tests/auto/qdom/testdata/toString_01/doc_euc-jp.xml
+++ b/tests/auto/xml/dom/qdom/testdata/toString_01/doc_euc-jp.xml
diff --git a/tests/auto/qdom/testdata/toString_01/doc_iso-2022-jp.xml b/tests/auto/xml/dom/qdom/testdata/toString_01/doc_iso-2022-jp.xml
index 9a8e8545ac..9a8e8545ac 100644
--- a/tests/auto/qdom/testdata/toString_01/doc_iso-2022-jp.xml
+++ b/tests/auto/xml/dom/qdom/testdata/toString_01/doc_iso-2022-jp.xml
diff --git a/tests/auto/qdom/testdata/toString_01/doc_little-endian.xml b/tests/auto/xml/dom/qdom/testdata/toString_01/doc_little-endian.xml
index 81f72e59e8..81f72e59e8 100644
--- a/tests/auto/qdom/testdata/toString_01/doc_little-endian.xml
+++ b/tests/auto/xml/dom/qdom/testdata/toString_01/doc_little-endian.xml
Binary files differ
diff --git a/tests/auto/qdom/testdata/toString_01/doc_utf-16.xml b/tests/auto/xml/dom/qdom/testdata/toString_01/doc_utf-16.xml
index 6c8622aa43..6c8622aa43 100644
--- a/tests/auto/qdom/testdata/toString_01/doc_utf-16.xml
+++ b/tests/auto/xml/dom/qdom/testdata/toString_01/doc_utf-16.xml
Binary files differ
diff --git a/tests/auto/qdom/testdata/toString_01/doc_utf-8.xml b/tests/auto/xml/dom/qdom/testdata/toString_01/doc_utf-8.xml
index 402c163c5f..402c163c5f 100644
--- a/tests/auto/qdom/testdata/toString_01/doc_utf-8.xml
+++ b/tests/auto/xml/dom/qdom/testdata/toString_01/doc_utf-8.xml
diff --git a/tests/auto/qdom/tst_qdom.cpp b/tests/auto/xml/dom/qdom/tst_qdom.cpp
index 4093010855..4093010855 100644
--- a/tests/auto/qdom/tst_qdom.cpp
+++ b/tests/auto/xml/dom/qdom/tst_qdom.cpp
diff --git a/tests/auto/qdom/umlaut.xml b/tests/auto/xml/dom/qdom/umlaut.xml
index 4b1dbe43ab..4b1dbe43ab 100644
--- a/tests/auto/qdom/umlaut.xml
+++ b/tests/auto/xml/dom/qdom/umlaut.xml
diff --git a/tests/auto/qxml/.gitignore b/tests/auto/xml/sax/qxml/.gitignore
index 6506151df0..6506151df0 100644
--- a/tests/auto/qxml/.gitignore
+++ b/tests/auto/xml/sax/qxml/.gitignore
diff --git a/tests/auto/qxml/0x010D.xml b/tests/auto/xml/sax/qxml/0x010D.xml
index 5f2fe4d940..5f2fe4d940 100644
--- a/tests/auto/qxml/0x010D.xml
+++ b/tests/auto/xml/sax/qxml/0x010D.xml
diff --git a/tests/auto/qxml/qxml.pro b/tests/auto/xml/sax/qxml/qxml.pro
index c87518a7ff..c87518a7ff 100644
--- a/tests/auto/qxml/qxml.pro
+++ b/tests/auto/xml/sax/qxml/qxml.pro
diff --git a/tests/auto/qxml/tst_qxml.cpp b/tests/auto/xml/sax/qxml/tst_qxml.cpp
index 7b62b3deb8..7b62b3deb8 100644
--- a/tests/auto/qxml/tst_qxml.cpp
+++ b/tests/auto/xml/sax/qxml/tst_qxml.cpp
diff --git a/tests/auto/qxmlinputsource/.gitignore b/tests/auto/xml/sax/qxmlinputsource/.gitignore
index 09ea68aa90..09ea68aa90 100644
--- a/tests/auto/qxmlinputsource/.gitignore
+++ b/tests/auto/xml/sax/qxmlinputsource/.gitignore
diff --git a/tests/auto/qxmlinputsource/qxmlinputsource.pro b/tests/auto/xml/sax/qxmlinputsource/qxmlinputsource.pro
index ec83f4729a..ec83f4729a 100644
--- a/tests/auto/qxmlinputsource/qxmlinputsource.pro
+++ b/tests/auto/xml/sax/qxmlinputsource/qxmlinputsource.pro
diff --git a/tests/auto/qxmlinputsource/tst_qxmlinputsource.cpp b/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp
index 9d31b34772..9d31b34772 100644
--- a/tests/auto/qxmlinputsource/tst_qxmlinputsource.cpp
+++ b/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp
diff --git a/tests/auto/qxmlsimplereader/.gitattributes b/tests/auto/xml/sax/qxmlsimplereader/.gitattributes
index 5521239fbe..5521239fbe 100644
--- a/tests/auto/qxmlsimplereader/.gitattributes
+++ b/tests/auto/xml/sax/qxmlsimplereader/.gitattributes
diff --git a/tests/auto/qxmlsimplereader/.gitignore b/tests/auto/xml/sax/qxmlsimplereader/.gitignore
index 31b604faaf..31b604faaf 100644
--- a/tests/auto/qxmlsimplereader/.gitignore
+++ b/tests/auto/xml/sax/qxmlsimplereader/.gitignore
diff --git a/tests/auto/qxmlsimplereader/encodings/doc_euc-jp.xml b/tests/auto/xml/sax/qxmlsimplereader/encodings/doc_euc-jp.xml
index 887ab5ec30..887ab5ec30 100644
--- a/tests/auto/qxmlsimplereader/encodings/doc_euc-jp.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/encodings/doc_euc-jp.xml
diff --git a/tests/auto/qxmlsimplereader/encodings/doc_iso-2022-jp.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/encodings/doc_iso-2022-jp.xml.ref
index 28dcdd98c4..28dcdd98c4 100644
--- a/tests/auto/qxmlsimplereader/encodings/doc_iso-2022-jp.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/encodings/doc_iso-2022-jp.xml.ref
diff --git a/tests/auto/qxmlsimplereader/encodings/doc_little-endian.xml b/tests/auto/xml/sax/qxmlsimplereader/encodings/doc_little-endian.xml
index 81f72e59e8..81f72e59e8 100644
--- a/tests/auto/qxmlsimplereader/encodings/doc_little-endian.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/encodings/doc_little-endian.xml
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/encodings/doc_utf-16.xml b/tests/auto/xml/sax/qxmlsimplereader/encodings/doc_utf-16.xml
index 6c8622aa43..6c8622aa43 100644
--- a/tests/auto/qxmlsimplereader/encodings/doc_utf-16.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/encodings/doc_utf-16.xml
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/encodings/doc_utf-8.xml b/tests/auto/xml/sax/qxmlsimplereader/encodings/doc_utf-8.xml
index 402c163c5f..402c163c5f 100644
--- a/tests/auto/qxmlsimplereader/encodings/doc_utf-8.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/encodings/doc_utf-8.xml
diff --git a/tests/auto/qxmlsimplereader/generate_ref_files.sh b/tests/auto/xml/sax/qxmlsimplereader/generate_ref_files.sh
index ae2a5ffb5c..ae2a5ffb5c 100755
--- a/tests/auto/qxmlsimplereader/generate_ref_files.sh
+++ b/tests/auto/xml/sax/qxmlsimplereader/generate_ref_files.sh
diff --git a/tests/auto/qxmlsimplereader/parser/main.cpp b/tests/auto/xml/sax/qxmlsimplereader/parser/main.cpp
index 05d9ce6754..05d9ce6754 100644
--- a/tests/auto/qxmlsimplereader/parser/main.cpp
+++ b/tests/auto/xml/sax/qxmlsimplereader/parser/main.cpp
diff --git a/tests/auto/qxmlsimplereader/parser/parser.cpp b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp
index d1f1c3cfda..d1f1c3cfda 100644
--- a/tests/auto/qxmlsimplereader/parser/parser.cpp
+++ b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp
diff --git a/tests/auto/qxmlsimplereader/parser/parser.h b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.h
index e3d95ce811..e3d95ce811 100644
--- a/tests/auto/qxmlsimplereader/parser/parser.h
+++ b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.h
diff --git a/tests/auto/qxmlsimplereader/parser/parser.pro b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.pro
index 93167f81c8..93167f81c8 100644
--- a/tests/auto/qxmlsimplereader/parser/parser.pro
+++ b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.pro
diff --git a/tests/auto/qxmlsimplereader/qxmlsimplereader.pro b/tests/auto/xml/sax/qxmlsimplereader/qxmlsimplereader.pro
index bc3cbd2dfd..bc3cbd2dfd 100644
--- a/tests/auto/qxmlsimplereader/qxmlsimplereader.pro
+++ b/tests/auto/xml/sax/qxmlsimplereader/qxmlsimplereader.pro
diff --git a/tests/auto/qxmlsimplereader/tst_qxmlsimplereader.cpp b/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp
index f2a973c78e..f2a973c78e 100644
--- a/tests/auto/qxmlsimplereader/tst_qxmlsimplereader.cpp
+++ b/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/001.xml
index d33ec68dcd..d33ec68dcd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/001.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/001.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/001.xml.ref
index e0fa20f83d..e0fa20f83d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/001.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/001.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/002.xml
index 0a64d52428..0a64d52428 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/002.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/002.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/002.xml.ref
index 8ebfac2a80..8ebfac2a80 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/002.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/002.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/003.xml
index e0b8bae4a4..e0b8bae4a4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/003.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/003.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/003.xml.ref
index 988690b883..988690b883 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/003.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/003.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/004.xml
index e85bc96e56..e85bc96e56 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/004.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/004.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/004.xml.ref
index 0085dfefe6..0085dfefe6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/004.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/004.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/005.xml
index 7cd44ef10c..7cd44ef10c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/005.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/005.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/005.xml.ref
index 0085dfefe6..0085dfefe6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/005.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/005.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/006.xml
index 8594c35cc7..8594c35cc7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/006.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/006.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/006.xml.ref
index 3d07b93d8e..3d07b93d8e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/006.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/006.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/007.xml
index 286756fdd5..286756fdd5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/007.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/007.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/007.xml.ref
index bbd182b7f7..bbd182b7f7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/007.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/007.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/008.xml
index 29ef40306b..29ef40306b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/008.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/008.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/008.xml.ref
index 19d21b4b3e..19d21b4b3e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/008.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/008.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/009.xml
index 8e3ff7de10..8e3ff7de10 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/009.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/009.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/009.xml.ref
index a885634000..a885634000 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/009.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/009.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/010.xml
index a6790846c9..a6790846c9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/010.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/010.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/010.xml.ref
index 7db0ddb551..7db0ddb551 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/010.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/010.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/011.xml
index 57eaf9fc48..57eaf9fc48 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/011.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/011.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/011.xml.ref
index bb837957be..bb837957be 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/011.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/011.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/012.xml
index 1b2539ffa6..1b2539ffa6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/012.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/012.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/012.xml.ref
index 333fb0db76..333fb0db76 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/012.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/012.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/013.xml
index 3540df9143..3540df9143 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/013.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/013.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/013.xml.ref
index 1fececc438..1fececc438 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/013.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/013.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/014.xml
index a613115609..a613115609 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/014.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/014.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/014.xml.ref
index a9230f2d7c..a9230f2d7c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/014.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/014.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/015.xml
index f2baf947b5..f2baf947b5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/015.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/015.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/015.xml.ref
index 333fb0db76..333fb0db76 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/015.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/015.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/016.xml
index 22d4b2e265..22d4b2e265 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/016.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/016.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/016.xml.ref
index e47a79ca68..e47a79ca68 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/016.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/016.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/017.xml
index a76f5929e9..a76f5929e9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/017.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/017.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/017.xml.ref
index 0085dfefe6..0085dfefe6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/017.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/017.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/018.xml
index 66e204acc4..66e204acc4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/018.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/018.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/018.xml.ref
index 651fa05573..651fa05573 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/018.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/018.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/019.xml
index b835c2d752..b835c2d752 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/019.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/019.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/019.xml.ref
index 9196faad6d..9196faad6d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/019.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/019.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/020.xml
index b30cfcfc10..b30cfcfc10 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/020.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/020.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/020.xml.ref
index f52f775f12..f52f775f12 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/020.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/020.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/021.xml
index 1bfa84aa64..1bfa84aa64 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/021.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/021.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/021.xml.ref
index 02ae4699b6..02ae4699b6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/021.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/021.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/022.xml
index 44c803bf1b..44c803bf1b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/022.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/022.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/022.xml.ref
index 42bf38f488..42bf38f488 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/022.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/022.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/023.xml
index b877ae2a6b..b877ae2a6b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/023.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/023.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/023.xml.ref
index 94f5cfa68c..94f5cfa68c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/023.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/023.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/024.xml
index cf68f2c073..cf68f2c073 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/024.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/024.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/024.xml.ref
index 8ebfac2a80..8ebfac2a80 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/024.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/024.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/025.xml
index 6cba95cd78..6cba95cd78 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/025.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/025.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/025.xml.ref
index 8f5d812e49..8f5d812e49 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/025.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/025.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/026.xml
index 347984fa73..347984fa73 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/026.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/026.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/026.xml.ref
index 3d0c743f13..3d0c743f13 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/026.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/026.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/027.xml
index cfafaf0d70..cfafaf0d70 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/027.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/027.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/027.xml.ref
index 178563e3d9..178563e3d9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/027.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/027.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/028.xml
index 522714993a..522714993a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/028.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/028.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/028.xml.ref
index 45a61328b0..45a61328b0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/028.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/028.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/029.xml
index 9a8008bc9f..9a8008bc9f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/029.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/029.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/029.xml.ref
index da043096c0..da043096c0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/029.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/029.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/030.xml
index 25861fa19b..25861fa19b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/030.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/030.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/030.xml.ref
index 3d7b2fd5f0..3d7b2fd5f0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/030.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/030.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/031.xml
index f946536f39..f946536f39 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/031.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/031.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/031.xml.ref
index 240d633529..240d633529 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/031.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/031.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/032.xml
index 75952017ca..75952017ca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/032.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/032.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/032.xml.ref
index a85cab71f0..a85cab71f0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/032.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/032.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/033.xml
index afd2328402..afd2328402 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/033.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/033.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/033.xml.ref
index a059f8e0b2..a059f8e0b2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/033.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/033.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/034.xml
index d74a77719b..d74a77719b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/034.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/034.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/034.xml.ref
index 723dc1aa00..723dc1aa00 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/034.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/034.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/035.xml
index e1fc920522..e1fc920522 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/035.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/035.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/035.xml.ref
index 6ca9412864..6ca9412864 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/035.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/035.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/036.xml
index b8ecb21ba1..b8ecb21ba1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/036.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/036.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/036.xml.ref
index 5341fe5c8a..5341fe5c8a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/036.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/036.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/037.xml
index 2e02662926..2e02662926 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/037.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/037.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/037.xml.ref
index 5341fe5c8a..5341fe5c8a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/037.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/037.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/038.xml
index 68b2803f82..68b2803f82 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/038.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/038.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/038.xml.ref
index 914f7edc6a..914f7edc6a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/038.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/038.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/039.xml
index 80429e3e40..80429e3e40 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/039.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/039.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/039.xml.ref
index 82a67116c1..82a67116c1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/039.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/039.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/040.xml
index dc8ba5a434..dc8ba5a434 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/040.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/040.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/040.xml.ref
index a28c24ab56..a28c24ab56 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/040.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/040.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/041.xml
index 30bcdd6bfe..30bcdd6bfe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/041.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/041.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/041.xml.ref
index a28c24ab56..a28c24ab56 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/041.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/041.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/042.xml
index 4ae50efc7b..4ae50efc7b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/042.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/042.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/042.xml.ref
index 493c67a337..493c67a337 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/042.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/042.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/043.xml
index 41824eee4b..41824eee4b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/043.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/043.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/043.xml.ref
index 5341fe5c8a..5341fe5c8a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/043.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/043.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/044.xml
index 3fc232dc37..3fc232dc37 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/044.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/044.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/044.xml.ref
index 493c67a337..493c67a337 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/044.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/044.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/045.xml
index 00c10f00bf..00c10f00bf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/045.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/045.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/045.xml.ref
index d030deb272..d030deb272 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/045.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/045.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/046.xml
index 265cb15301..265cb15301 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/046.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/046.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/046.xml.ref
index d030deb272..d030deb272 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/046.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/046.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/047.xml
index d18a4a4440..d18a4a4440 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/047.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/047.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/047.xml.ref
index 4693ac42c3..4693ac42c3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/047.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/047.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/048.xml
index 67419c1ed5..67419c1ed5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/048.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/048.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/048.xml.ref
index f8e19b6108..f8e19b6108 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/048.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/048.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/049.xml
index 3cf0e79422..3cf0e79422 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/049.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/049.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/049.xml.ref
index 1d89054d77..1d89054d77 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/049.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/049.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/050.xml
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/050.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/050.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/050.xml.ref
index 2a3b59e093..2a3b59e093 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/050.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/050.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/051.xml
index b52df12cc4..b52df12cc4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/051.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/051.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/051.xml.ref
index 71c3e0d2f9..71c3e0d2f9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/051.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/051.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/052.xml
index 8283895990..8283895990 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/052.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/052.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/052.xml.ref
index 42126fdb25..42126fdb25 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/052.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/052.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/053.xml
index 9d7f36920f..9d7f36920f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/053.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/053.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/053.xml.ref
index 515dd0b446..515dd0b446 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/053.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/053.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/054.xml
index eda553c6d3..eda553c6d3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/054.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/054.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/054.xml.ref
index 18412e39b2..18412e39b2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/054.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/054.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/055.xml
index cbb3683a9d..cbb3683a9d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/055.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/055.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/055.xml.ref
index 3e1e132b5e..3e1e132b5e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/055.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/055.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/056.xml
index a681684c58..a681684c58 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/056.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/056.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/056.xml.ref
index 938a47c172..938a47c172 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/056.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/056.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/057.xml
index 848d347120..848d347120 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/057.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/057.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/057.xml.ref
index 28576a7fdf..28576a7fdf 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/057.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/057.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/058.xml
index daba266af2..daba266af2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/058.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/058.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/058.xml.ref
index aa3101b7ef..aa3101b7ef 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/058.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/058.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/059.xml
index 316083dc25..316083dc25 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/059.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/059.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/059.xml.ref
index d0c60b2bf5..d0c60b2bf5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/059.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/059.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/060.xml
index 9a610fd38f..9a610fd38f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/060.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/060.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/060.xml.ref
index 22f1636205..22f1636205 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/060.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/060.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/061.xml
index 59181e706f..59181e706f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/061.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/061.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/061.xml.ref
index d49ec689aa..d49ec689aa 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/061.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/061.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/062.xml
index e62e9cd370..e62e9cd370 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/062.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/062.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/062.xml.ref
index 2388c50c2b..2388c50c2b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/062.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/062.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/063.xml
index 98675b9040..98675b9040 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/063.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/063.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/063.xml.ref
index c0c9152f3e..c0c9152f3e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/063.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/063.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/064.xml
index 3888c46b8b..3888c46b8b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/064.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/064.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/064.xml.ref
index 11ba2bdc47..11ba2bdc47 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/064.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/064.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/065.xml
index da9cafd137..da9cafd137 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/065.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/065.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/065.xml.ref
index c91f8597df..c91f8597df 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/065.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/065.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/066.xml
index 9c09eb4e5d..9c09eb4e5d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/066.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/066.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/066.xml.ref
index f044a71dd9..f044a71dd9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/066.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/066.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/067.xml
index 7e0809bd34..7e0809bd34 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/067.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/067.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/067.xml.ref
index 519e67fc02..519e67fc02 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/067.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/067.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/068.xml
index 53a80a83a8..53a80a83a8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/068.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/068.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/068.xml.ref
index aa7a9e3957..aa7a9e3957 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/068.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/068.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/069.xml
index 6f891dd5e1..6f891dd5e1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/069.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/069.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/069.xml.ref
index 4d729c5075..4d729c5075 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/069.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/069.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/070.xml
index faf4b0ae4c..faf4b0ae4c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/070.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/070.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/070.xml.ref
index f24226f8e5..f24226f8e5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/070.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/070.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/071.xml
index 5bd3908968..5bd3908968 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/071.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/071.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/071.xml.ref
index da8c9347b2..da8c9347b2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/071.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/071.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/072.xml
index 743ba79429..743ba79429 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/072.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/072.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/072.xml.ref
index 48fd72baf3..48fd72baf3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/072.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/072.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/073.xml
index 2578af42ec..2578af42ec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/073.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/073.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/073.xml.ref
index b60c7d49ac..b60c7d49ac 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/073.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/073.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/074.xml
index f8abaeb22c..f8abaeb22c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/074.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/074.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/074.xml.ref
index df8552d646..df8552d646 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/074.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/074.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/075.xml
index d3dbf50ed6..d3dbf50ed6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/075.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/075.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/075.xml.ref
index 5d8b1797b5..5d8b1797b5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/075.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/075.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/076.xml
index 60546720e7..60546720e7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/076.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/076.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/076.xml.ref
index 6a8b31965b..6a8b31965b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/076.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/076.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/077.xml
index f8ac23a5a2..f8ac23a5a2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/077.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/077.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/077.xml.ref
index 4458152467..4458152467 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/077.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/077.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/078.xml
index 446cd85ef9..446cd85ef9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/078.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/078.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/078.xml.ref
index 985f71ca2b..985f71ca2b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/078.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/078.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/079.xml
index da016fd3b2..da016fd3b2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/079.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/079.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/079.xml.ref
index a59833714d..a59833714d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/079.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/079.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/080.xml
index fa4b9e428d..fa4b9e428d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/080.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/080.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/080.xml.ref
index 13ee47bdf4..13ee47bdf4 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/080.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/080.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/081.xml
index d676100e8a..d676100e8a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/081.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/081.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/081.xml.ref
index 4d386e4f34..4d386e4f34 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/081.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/081.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/082.xml
index 3217d6f8b4..3217d6f8b4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/082.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/082.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/082.xml.ref
index eb81754e50..eb81754e50 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/082.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/082.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/083.xml
index 469d43fd42..469d43fd42 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/083.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/083.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/083.xml.ref
index ac1caa8f9c..ac1caa8f9c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/083.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/083.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/084.xml
index abbbcdea69..abbbcdea69 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/084.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/084.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/084.xml.ref
index 9f69b94ccf..9f69b94ccf 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/084.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/084.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/085.xml
index ac0aeca3e4..ac0aeca3e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/085.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/085.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/085.xml.ref
index 4db671e035..4db671e035 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/085.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/085.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/086.xml
index df6adfd884..df6adfd884 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/086.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/086.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/086.xml.ref
index 6254d59e0f..6254d59e0f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/086.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/086.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/087.xml
index ed49492a7a..ed49492a7a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/087.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/087.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/087.xml.ref
index 8ec0ab3a12..8ec0ab3a12 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/087.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/087.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/088.xml
index da0a68c401..da0a68c401 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/088.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/088.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/088.xml.ref
index 27ed4e589d..27ed4e589d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/088.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/088.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/089.xml
index 0c6cf404c2..0c6cf404c2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/089.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/089.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/089.xml.ref
index 910213bf13..910213bf13 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/089.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/089.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/090.xml
index 3fb72f3cc0..3fb72f3cc0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/090.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/090.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/090.xml.ref
index bc4280aa82..bc4280aa82 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/090.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/090.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/091.xml
index a61d0914f8..a61d0914f8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/091.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/091.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/091.xml.ref
index c89444077e..c89444077e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/091.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/091.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/092.xml
index be5266dada..be5266dada 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/092.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/092.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/092.xml.ref
index 4469beb325..4469beb325 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/092.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/092.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/093.xml
index 4af61bc645..4af61bc645 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/093.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/093.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/093.xml.ref
index a885634000..a885634000 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/093.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/093.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/094.xml
index bdec7a4660..bdec7a4660 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/094.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/094.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/094.xml.ref
index f37fb5877f..f37fb5877f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/094.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/094.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/095.xml
index 090b8b4eec..090b8b4eec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/095.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/095.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/095.xml.ref
index 8852f79579..8852f79579 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/095.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/095.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/096.xml
index d806c3b952..d806c3b952 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/096.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/096.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/096.xml.ref
index ddca718431..ddca718431 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/096.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/096.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/097.xml
index d4def544b0..d4def544b0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/097.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/097.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/097.xml.ref
index 962de94d11..962de94d11 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/097.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/097.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/098.xml
index 9798496aa3..9798496aa3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/098.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/098.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/098.xml.ref
index c1665a4f03..c1665a4f03 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/098.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/098.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/099.xml
index d5be08eff0..d5be08eff0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/099.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/099.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/099.xml.ref
index 2d4e8516bc..2d4e8516bc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/099.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/099.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/100.xml
index 51e06231c2..51e06231c2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/100.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/100.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/100.xml.ref
index eba06f283c..eba06f283c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/100.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/100.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/101.xml
index afa5a455fc..afa5a455fc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/101.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/101.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/101.xml.ref
index 068a6ae657..068a6ae657 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/101.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/101.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/102.xml
index 8734adaa6e..8734adaa6e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/102.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/102.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/102.xml.ref
index 86b6ce0d3a..86b6ce0d3a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/102.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/102.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/103.xml
index 6c4716798f..6c4716798f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/103.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/103.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/103.xml.ref
index 7a82f96305..7a82f96305 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/103.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/103.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/104.xml
index dd57396239..dd57396239 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/104.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/104.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/104.xml.ref
index 8059be12c8..8059be12c8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/104.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/104.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/105.xml
index 809e705870..809e705870 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/105.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/105.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/105.xml.ref
index ff94b32716..ff94b32716 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/105.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/105.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/106.xml
index d32319ef09..d32319ef09 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/106.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/106.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/106.xml.ref
index e5c6c6b6a7..e5c6c6b6a7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/106.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/106.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/107.xml
index 3dfd8200e2..3dfd8200e2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/107.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/107.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/107.xml.ref
index c0c9152f3e..c0c9152f3e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/107.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/107.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/108.xml
index af5cf50d48..af5cf50d48 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/108.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/108.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/108.xml.ref
index 3be3623019..3be3623019 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/108.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/108.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/109.xml
index 5afc03e8db..5afc03e8db 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/109.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/109.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/109.xml.ref
index 13140d8022..13140d8022 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/109.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/109.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/110.xml
index cf54ebe5c0..cf54ebe5c0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/110.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/110.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/110.xml.ref
index aa5b66c13f..aa5b66c13f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/110.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/110.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/111.xml
index 84a469f5d1..84a469f5d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/111.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/111.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/111.xml.ref
index d611ecd0df..d611ecd0df 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/111.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/111.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/112.xml
index 0c5c1a4341..0c5c1a4341 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/112.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/112.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/112.xml.ref
index db6c1f3fe7..db6c1f3fe7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/112.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/112.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/113.xml
index 04fc9d2318..04fc9d2318 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/113.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/113.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/113.xml.ref
index af3a1378d1..af3a1378d1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/113.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/113.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/114.xml
index 1261ee49e1..1261ee49e1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/114.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/114.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/114.xml.ref
index 611a07b6a7..611a07b6a7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/114.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/114.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/115.xml
index f111dbe153..f111dbe153 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/115.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/115.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/115.xml.ref
index d4a1b97e12..d4a1b97e12 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/115.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/115.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/116.xml
index 84bb762fdf..84bb762fdf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/116.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/116.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/116.xml.ref
index f69ee0b24e..f69ee0b24e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/116.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/116.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/117.xml
index e4a5e572ef..e4a5e572ef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/117.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/117.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/117.xml.ref
index 9c54b53b28..9c54b53b28 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/117.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/117.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/118.xml
index 494d53d208..494d53d208 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/118.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/118.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/118.xml.ref
index 714b497120..714b497120 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/118.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/118.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/119.xml
index aefaa44a1c..aefaa44a1c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/119.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/119.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/119.xml.ref
index 625f318be6..625f318be6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/119.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/119.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/120.xml
index b7d6ff9ce9..b7d6ff9ce9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/120.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/120.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/120.xml.ref
index 56edb37c66..56edb37c66 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/120.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/120.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/121.xml
index 2b4adcc6b4..2b4adcc6b4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/121.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/121.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/121.xml.ref
index a9f2c8f68d..a9f2c8f68d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/121.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/121.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/122.xml
index ef0b057cee..ef0b057cee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/122.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/122.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/122.xml.ref
index 37b53fc0b3..37b53fc0b3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/122.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/122.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/123.xml
index 06d65f045b..06d65f045b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/123.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/123.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/123.xml.ref
index 66978b93a8..66978b93a8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/123.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/123.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/124.xml
index 3bbe0f91a6..3bbe0f91a6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/124.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/124.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/124.xml.ref
index dc05a44ce5..dc05a44ce5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/124.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/124.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/125.xml
index 5f9c22c0c6..5f9c22c0c6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/125.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/125.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/125.xml.ref
index b60c5515b1..b60c5515b1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/125.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/125.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/126.xml
index 13e74d6d5e..13e74d6d5e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/126.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/126.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/126.xml.ref
index 03465a21d5..03465a21d5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/126.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/126.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/127.xml
index a379b9e539..a379b9e539 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/127.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/127.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/127.xml.ref
index 03465a21d5..03465a21d5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/127.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/127.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/128.xml
index dd706bb21f..dd706bb21f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/128.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/128.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/128.xml.ref
index 45764a1653..45764a1653 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/128.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/128.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/129.xml
index d4e4461a6d..d4e4461a6d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/129.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/129.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/129.xml.ref
index 45764a1653..45764a1653 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/129.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/129.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/130.xml
index fa7be641f1..fa7be641f1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/130.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/130.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/130.xml.ref
index ad943c6e9e..ad943c6e9e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/130.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/130.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/131.xml
index f34ed453b5..f34ed453b5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/131.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/131.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/131.xml.ref
index ad943c6e9e..ad943c6e9e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/131.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/131.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/132.xml
index ab6cc416e9..ab6cc416e9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/132.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/132.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/132.xml.ref
index 37b53fc0b3..37b53fc0b3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/132.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/132.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/133.xml
index d2aa604e9f..d2aa604e9f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/133.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/133.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/133.xml.ref
index d0b59c54cc..d0b59c54cc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/133.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/133.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/134.xml
index c8919c5ef8..c8919c5ef8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/134.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/134.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/134.xml.ref
index 9da787c53b..9da787c53b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/134.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/134.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/135.xml
index e639e8b6ea..e639e8b6ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/135.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/135.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/135.xml.ref
index d0b59c54cc..d0b59c54cc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/135.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/135.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/136.xml
index 499e68bcea..499e68bcea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/136.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/136.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/136.xml.ref
index 45764a1653..45764a1653 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/136.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/136.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/137.xml
index 723b77f776..723b77f776 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/137.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/137.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/137.xml.ref
index 58b922aec8..58b922aec8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/137.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/137.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/138.xml
index 16934cc88e..16934cc88e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/138.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/138.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/138.xml.ref
index 51b93a743e..51b93a743e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/138.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/138.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/139.xml
index 34df52ed93..34df52ed93 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/139.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/139.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/139.xml.ref
index 5344a45ef8..5344a45ef8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/139.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/139.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/140.xml
index 467d5ed301..467d5ed301 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/140.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/140.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/140.xml.ref
index 123df1a99c..123df1a99c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/140.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/140.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/141.xml
index 409d0a7568..409d0a7568 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/141.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/141.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/141.xml.ref
index 1b6d92115a..1b6d92115a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/141.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/141.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/142.xml
index 20e88f88b3..20e88f88b3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/142.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/142.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/142.xml.ref
index 7ce4da6a06..7ce4da6a06 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/142.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/142.xml.ref
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/143.xml
index 0ee1c614f8..0ee1c614f8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/143.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/143.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/143.xml.ref
index 664bfb7111..664bfb7111 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/143.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/143.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/144.xml
index 437548c0ba..437548c0ba 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/144.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/144.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/144.xml.ref
index 8d3143070d..8d3143070d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/144.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/144.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/145.xml
index 71b187a933..71b187a933 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/145.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/145.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/145.xml.ref
index 279ece7657..279ece7657 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/145.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/145.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/146.xml
index d0bfbca723..d0bfbca723 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/146.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/146.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/146.xml.ref
index 7ce4da6a06..7ce4da6a06 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/146.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/146.xml.ref
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/147.xml
index 3b6145615f..3b6145615f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/147.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/147.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/147.xml.ref
index dd85a80374..dd85a80374 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/147.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/147.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/148.xml
index 774dce18fd..774dce18fd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/148.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/148.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/148.xml.ref
index 9b58eb0b49..9b58eb0b49 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/148.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/148.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/149.xml
index 725eea0dec..725eea0dec 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/149.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/149.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/149.xml.ref
index aa73988e09..aa73988e09 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/149.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/149.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/150.xml
index 44f6b6df92..44f6b6df92 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/150.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/150.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/150.xml.ref
index 2bc5abe271..2bc5abe271 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/150.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/150.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/151.xml
index fecc4f24e3..fecc4f24e3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/151.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/151.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/151.xml.ref
index e5d98b1232..e5d98b1232 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/151.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/151.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/152.xml
index b5c5cb26ae..b5c5cb26ae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/152.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/152.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/152.xml.ref
index 8852f79579..8852f79579 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/152.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/152.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/153.xml
index 5e2973707e..5e2973707e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/153.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/153.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/153.xml.ref
index 1198fe07c6..1198fe07c6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/153.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/153.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/154.xml
index 96e01d63f5..96e01d63f5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/154.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/154.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/154.xml.ref
index 74a9eb1488..74a9eb1488 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/154.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/154.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/155.xml
index 4f16d0f163..4f16d0f163 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/155.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/155.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/155.xml.ref
index 74a9eb1488..74a9eb1488 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/155.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/155.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/156.xml
index c6d93fd312..c6d93fd312 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/156.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/156.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/156.xml.ref
index 2bc5abe271..2bc5abe271 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/156.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/156.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/157.xml
index 2f058dac3e..2f058dac3e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/157.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/157.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/157.xml.ref
index 2bc5abe271..2bc5abe271 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/157.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/157.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/158.xml
index 32b90b722d..32b90b722d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/158.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/158.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/158.xml.ref
index 38210c24da..38210c24da 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/158.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/158.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/159.xml
index 066244cb91..066244cb91 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/159.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/159.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/159.xml.ref
index f044a71dd9..f044a71dd9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/159.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/159.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/160.xml
index 85424acb1b..85424acb1b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/160.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/160.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/160.xml.ref
index 0c1afe80b8..0c1afe80b8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/160.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/160.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/161.xml
index 4f8a5b7b6b..4f8a5b7b6b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/161.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/161.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/161.xml.ref
index 35ee5e8c6c..35ee5e8c6c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/161.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/161.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/162.xml
index efae4b190e..efae4b190e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/162.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/162.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/162.xml.ref
index a802c74aed..a802c74aed 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/162.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/162.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/163.xml
index e14fb76c31..e14fb76c31 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/163.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/163.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/163.xml.ref
index e4c32252dd..e4c32252dd 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/163.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/163.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/164.xml
index 98dd267c21..98dd267c21 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/164.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/164.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/164.xml.ref
index 80314341d6..80314341d6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/164.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/164.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/165.xml
index 36c04618ef..36c04618ef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/165.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/165.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/165.xml.ref
index 64fd8b4d0d..64fd8b4d0d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/165.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/165.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/166.xml
index ee2ce28630..ee2ce28630 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/166.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/166.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/166.xml.ref
index dca4f7b1cd..dca4f7b1cd 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/166.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/166.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/167.xml
index 9bdc6c1278..9bdc6c1278 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/167.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/167.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/167.xml.ref
index dca4f7b1cd..dca4f7b1cd 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/167.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/167.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/168.xml
index f83221a3ad..f83221a3ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/168.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/168.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/168.xml.ref
index 61659843c1..61659843c1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/168.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/168.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/169.xml
index 310029b976..310029b976 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/169.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/169.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/169.xml.ref
index 78385bd8bc..78385bd8bc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/169.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/169.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/170.xml
index cfa0aee155..cfa0aee155 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/170.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/170.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/170.xml.ref
index 0508ee88c7..0508ee88c7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/170.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/170.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/171.xml
index 48b5c7d3bc..48b5c7d3bc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/171.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/171.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/171.xml.ref
index f729ad3da3..f729ad3da3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/171.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/171.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/172.xml
index 6651d4d299..6651d4d299 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/172.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/172.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/172.xml.ref
index f729ad3da3..f729ad3da3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/172.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/172.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/173.xml
index f9f9f42023..f9f9f42023 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/173.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/173.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/173.xml.ref
index cda5d63d26..cda5d63d26 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/173.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/173.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/174.xml
index 42bef861c6..42bef861c6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/174.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/174.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/174.xml.ref
index 5f23fbdcdb..5f23fbdcdb 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/174.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/174.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/175.xml
index 69912f36d2..69912f36d2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/175.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/175.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/175.xml.ref
index 27549bc7de..27549bc7de 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/175.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/175.xml.ref
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/176.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/176.xml
index 39153ad5a8..39153ad5a8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/176.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/176.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/176.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/176.xml.ref
index 4348506993..4348506993 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/176.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/176.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/177.xml
index 6bc8228879..6bc8228879 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/177.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/177.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/177.xml.ref
index 94f3c3b9e5..94f3c3b9e5 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/177.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/177.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/178.xml
index e8f2d18eed..e8f2d18eed 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/178.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/178.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/178.xml.ref
index 5aae44a1bf..5aae44a1bf 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/178.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/178.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/179.xml
index e8f1f419db..e8f1f419db 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/179.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/179.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/179.xml.ref
index a4c6cffd5d..a4c6cffd5d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/179.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/179.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/180.xml
index 569d553a8c..569d553a8c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/180.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/180.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/180.xml.ref
index 42542d990e..42542d990e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/180.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/180.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/181.xml
index 4341d99ee2..4341d99ee2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/181.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/181.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/181.xml.ref
index 8e1b4457fc..8e1b4457fc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/181.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/181.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/182.xml
index 920f431666..920f431666 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/182.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/182.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/182.xml.ref
index abb11afa92..abb11afa92 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/182.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/182.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/183.xml
index 7a5677de54..7a5677de54 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/183.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/183.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/183.xml.ref
index d49ec689aa..d49ec689aa 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/183.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/183.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/184.xml
index 103384a06e..103384a06e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/184.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/184.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/184.xml.ref
index 8d879bf2e6..8d879bf2e6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/184.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/184.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/185.ent
index e557426454..e557426454 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/185.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/185.xml
index 81d5ef4bcd..81d5ef4bcd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/185.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/185.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/185.xml.ref
index 7f5838399b..7f5838399b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/185.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/185.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/186.xml
index 85b26ec0a2..85b26ec0a2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/186.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/186.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/186.xml.ref
index 63d0d3e3f6..63d0d3e3f6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/not-wf/sa/186.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/186.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/null.ent
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/not-wf/sa/null.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/001.ent
index 1cff3fd44f..1cff3fd44f 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/001.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml
index 147d70d2d1..147d70d2d1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml.ref
index 355c937e11..355c937e11 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/001.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/002.ent
index 45f6d8e74e..45f6d8e74e 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/002.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml
index 9eaf91724f..9eaf91724f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml.ref
index f843995646..f843995646 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/002.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/003.ent
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/003.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml
index bb60b663ef..bb60b663ef 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml.ref
index 79d3531637..79d3531637 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/003.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/004.ent
index 3436f20001..3436f20001 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/004.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml
index 074498ce19..074498ce19 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml.ref
index 38abcb2fc6..38abcb2fc6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/004.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/005.ent
index c6e97f821f..c6e97f821f 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/005.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml
index 82a6228205..82a6228205 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml.ref
index 2601030f2a..2601030f2a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/005.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/006.ent
index 4df2f0c2ac..4df2f0c2ac 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/006.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml
index 0b326cad4c..0b326cad4c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml.ref
index 17fd238b67..17fd238b67 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/006.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/007.ent
index ab1d696dd7..ab1d696dd7 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/007.ent
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml
index 825e3b286a..825e3b286a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml.ref
index 81e7ccdaf3..81e7ccdaf3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/007.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/008.ent
index c6ca61f9c8..c6ca61f9c8 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/008.ent
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml
index 3c001b6cb3..3c001b6cb3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml.ref
index eb7f1086e1..eb7f1086e1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/008.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/009.ent
index 67c3297611..67c3297611 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/009.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml
index a5866e5a77..a5866e5a77 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml.ref
index 5c294de017..5c294de017 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/009.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/010.ent
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/010.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml
index 418e9b0141..418e9b0141 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml.ref
index 4dc03c6dba..4dc03c6dba 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/010.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/011.ent
index b19be3a497..b19be3a497 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/011.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml
index 2ceefa1d21..2ceefa1d21 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml.ref
index c078139d84..c078139d84 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/011.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/012.ent
index 8eb1fb9c41..8eb1fb9c41 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/012.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml
index 5a8f009b4a..5a8f009b4a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml.ref
index 2af77a3b99..2af77a3b99 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/012.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/013.ent
index 7f25c502dd..7f25c502dd 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/013.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml
index 7717c97afe..7717c97afe 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml.ref
index 92fb65a2d2..92fb65a2d2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/013.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/014.ent
index 470fd6fe44..470fd6fe44 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/014.ent
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml
index 816fd1e796..816fd1e796 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml.ref
index a087786e69..a087786e69 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/014.xml.ref
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml
index e91a10895e..e91a10895e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml.ref
index 67f1fbe808..67f1fbe808 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_1.xml.ref
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml
index a1fb393371..a1fb393371 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml.ref
index a7ed3a2848..a7ed3a2848 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_2.xml.ref
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml
index ae745d4da1..ae745d4da1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml.ref
index 09f8e96b9c..09f8e96b9c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/ext-sa/undef_entity_3.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/001.ent
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/001.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/001.xml
index 2d6f41a137..2d6f41a137 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/001.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/001.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/001.xml.ref
index eea47ce41b..eea47ce41b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/001.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/001.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/002.ent
index 67c3297611..67c3297611 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/002.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/002.xml
index 023fce8499..023fce8499 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/002.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/002.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/002.xml.ref
index cbaf6dc22d..cbaf6dc22d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/002.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/002.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003-1.ent
index 931f3ad6d8..931f3ad6d8 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003-1.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003-2.ent
index e69de29bb2..e69de29bb2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003-2.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003.xml
index 63a5e8bdfc..63a5e8bdfc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003.xml.ref
index 4f83c741fb..4f83c741fb 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/003.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/003.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004-1.ent
index 40f7ff58a2..40f7ff58a2 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004-1.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004-2.ent
index 61def75cb7..61def75cb7 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004-2.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004.xml
index adc9201496..adc9201496 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004.xml.ref
index e2d3af888e..e2d3af888e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/004.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/004.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005-1.ent
index ade9599032..ade9599032 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005-1.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005-2.ent
index bef50b1f38..bef50b1f38 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005-2.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005.xml
index 6bd44cfee0..6bd44cfee0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005.xml.ref
index 8057322cf2..8057322cf2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/005.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/005.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/006.ent
index 8f305a82bd..8f305a82bd 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/006.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/006.xml
index eb80bb7409..eb80bb7409 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/006.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/006.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/006.xml.ref
index e2e2584353..e2e2584353 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/006.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/006.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/007.ent
index fbf4ca4947..fbf4ca4947 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/007.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/007.xml
index 38897e34ea..38897e34ea 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/007.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/007.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/007.xml.ref
index d96790fb37..d96790fb37 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/007.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/007.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/008.ent
index fbf4ca4947..fbf4ca4947 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/008.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/008.xml
index bf777a7ff2..bf777a7ff2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/008.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/008.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/008.xml.ref
index 08ba9c035b..08ba9c035b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/008.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/008.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/009.ent
index fbf4ca4947..fbf4ca4947 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/009.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/009.xml
index c17562fe68..c17562fe68 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/009.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/009.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/009.xml.ref
index d789785173..d789785173 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/009.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/009.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/010.ent
index 52a28f5deb..52a28f5deb 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/010.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/010.xml
index 2786b328f3..2786b328f3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/010.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/010.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/010.xml.ref
index 6045d46296..6045d46296 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/010.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/010.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/011.ent
index fbf4ca4947..fbf4ca4947 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/011.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/011.xml
index 03b482bbb6..03b482bbb6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/011.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/011.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/011.xml.ref
index 09fd89bd38..09fd89bd38 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/011.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/011.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/012.ent
index 7e372e65e9..7e372e65e9 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/012.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/012.xml
index 1967edbba7..1967edbba7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/012.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/012.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/012.xml.ref
index 8d90b187dd..8d90b187dd 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/012.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/012.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/013.ent
index a3691d9f08..a3691d9f08 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/013.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/013.xml
index cf44f2600a..cf44f2600a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/013.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/013.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/013.xml.ref
index d84839e625..d84839e625 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/013.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/013.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/014.ent
index 6eaf779329..6eaf779329 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/014.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/014.xml
index bd08502489..bd08502489 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/014.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/014.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/014.xml.ref
index f9c8220bbb..f9c8220bbb 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/014.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/014.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/015.ent
index 00d2f30e1d..00d2f30e1d 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/015.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/015.xml
index e04e75ffca..e04e75ffca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/015.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/015.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/015.xml.ref
index de94a45356..de94a45356 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/015.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/015.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/016.ent
index bf77ef8336..bf77ef8336 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/016.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/016.xml
index 4ccf4af350..4ccf4af350 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/016.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/016.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/016.xml.ref
index 7c234cfc5f..7c234cfc5f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/016.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/016.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/017.ent
index ffd9adde61..ffd9adde61 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/017.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/017.xml
index 7fe18f4c7a..7fe18f4c7a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/017.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/017.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/017.xml.ref
index 25cc198610..25cc198610 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/017.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/017.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/018.ent
index 2d46f76fc3..2d46f76fc3 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/018.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/018.xml
index 31e90f2405..31e90f2405 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/018.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/018.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/018.xml.ref
index 3db7bc846b..3db7bc846b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/018.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/018.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/019.ent
index d18201a98b..d18201a98b 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/019.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/019.xml
index b7a18faba0..b7a18faba0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/019.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/019.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/019.xml.ref
index 9961aa93b4..9961aa93b4 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/019.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/019.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/020.ent
index 815291c6d2..815291c6d2 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/020.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/020.xml
index d70892f7ad..d70892f7ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/020.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/020.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/020.xml.ref
index fc9a0535c1..fc9a0535c1 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/020.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/020.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/021.ent
index 9f8f2afd2b..9f8f2afd2b 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/021.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/021.xml
index 70c28730db..70c28730db 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/021.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/021.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/021.xml.ref
index e6d91722d3..e6d91722d3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/021.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/021.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/022.ent
index 26f2d8beb2..26f2d8beb2 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/022.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/022.xml
index b639f2551c..b639f2551c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/022.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/022.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/022.xml.ref
index de3ddf732f..de3ddf732f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/022.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/022.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/023.ent
index e3268819f7..e3268819f7 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/023.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/023.xml
index 1c2484b70b..1c2484b70b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/023.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/023.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/023.xml.ref
index a150bde52a..a150bde52a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/023.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/023.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/024.ent
index aa6d0eccac..aa6d0eccac 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/024.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/024.xml
index 96e1ecb61b..96e1ecb61b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/024.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/024.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/024.xml.ref
index e97c61bd94..e97c61bd94 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/024.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/024.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/025.ent
index 389d259eb1..389d259eb1 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/025.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/025.xml
index 8fdbc14c47..8fdbc14c47 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/025.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/025.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/025.xml.ref
index 1eca607181..1eca607181 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/025.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/025.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/026.ent
index bdc93af639..bdc93af639 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/026.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/026.xml
index 7b109c0913..7b109c0913 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/026.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/026.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/026.xml.ref
index 1bea883d9c..1bea883d9c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/026.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/026.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/027.ent
index 712cce3700..712cce3700 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/027.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/027.xml
index d0c8c7abb5..d0c8c7abb5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/027.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/027.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/027.xml.ref
index d010327624..d010327624 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/027.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/027.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/028.ent
index ac249d7b2c..ac249d7b2c 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/028.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/028.xml
index 50e5248cbf..50e5248cbf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/028.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/028.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/028.xml.ref
index 8466141897..8466141897 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/028.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/028.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/029.ent
index df94df5560..df94df5560 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/029.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/029.xml
index 07e226c1d7..07e226c1d7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/029.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/029.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/029.xml.ref
index 0bffc4aaa7..0bffc4aaa7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/029.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/029.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/030.ent
index e3864460df..e3864460df 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/030.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/030.xml
index 01fc2be4ca..01fc2be4ca 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/030.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/030.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/030.xml.ref
index 51e7f033f9..51e7f033f9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/030.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/030.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031-1.ent
index f7f94ab152..f7f94ab152 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031-1.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031-2.ent
index bef50b1f38..bef50b1f38 100644..100755
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031-2.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031.xml
index c3fe5fca71..c3fe5fca71 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031.xml.ref
index 72ab9d974f..72ab9d974f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/not-sa/031.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/not-sa/031.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/001.xml
index 7fbef49502..7fbef49502 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/001.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/001.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/001.xml.ref
index 37b53fc0b3..37b53fc0b3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/001.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/001.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/002.xml
index 2e3f1d81dd..2e3f1d81dd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/002.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/002.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/002.xml.ref
index 37b53fc0b3..37b53fc0b3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/002.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/002.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/003.xml
index c841b81784..c841b81784 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/003.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/003.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/003.xml.ref
index 37b53fc0b3..37b53fc0b3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/003.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/003.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/004.xml
index a9c5756933..a9c5756933 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/004.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/004.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/004.xml.ref
index 2d7bfdfd73..2d7bfdfd73 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/004.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/004.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/005.xml
index b069efe727..b069efe727 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/005.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/005.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/005.xml.ref
index 2d7bfdfd73..2d7bfdfd73 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/005.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/005.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/006.xml
index 39a346342f..39a346342f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/006.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/006.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/006.xml.ref
index 2d7bfdfd73..2d7bfdfd73 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/006.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/006.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/007.xml
index cc3dc53166..cc3dc53166 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/007.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/007.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/007.xml.ref
index 016a577ded..016a577ded 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/007.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/007.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/008.xml
index b3370eb1cc..b3370eb1cc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/008.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/008.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/008.xml.ref
index 2c879a43a9..2c879a43a9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/008.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/008.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/009.xml
index 0fa183eccf..0fa183eccf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/009.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/009.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/009.xml.ref
index 016a577ded..016a577ded 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/009.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/009.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/010.xml
index eb64d18590..eb64d18590 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/010.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/010.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/010.xml.ref
index 2d7bfdfd73..2d7bfdfd73 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/010.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/010.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/011.xml
index 4cac44b4e4..4cac44b4e4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/011.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/011.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/011.xml.ref
index 9fc96fdb80..9fc96fdb80 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/011.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/011.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/012.xml
index 6ce2a3eae2..6ce2a3eae2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/012.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/012.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/012.xml.ref
index 00c76deaf9..00c76deaf9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/012.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/012.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/013.xml
index 2f4aae4e28..2f4aae4e28 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/013.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/013.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/013.xml.ref
index ef2903d87a..ef2903d87a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/013.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/013.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/014.xml
index 47f1f723e3..47f1f723e3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/014.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/014.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/014.xml.ref
index bbf1ff75e7..bbf1ff75e7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/014.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/014.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/015.xml
index 861df8a610..861df8a610 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/015.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/015.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/015.xml.ref
index 882da5a6fd..882da5a6fd 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/015.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/015.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/016.xml
index 66b1973c5d..66b1973c5d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/016.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/016.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/016.xml.ref
index 32c60b28a7..32c60b28a7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/016.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/016.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/017.xml
index 827ba963bf..827ba963bf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/017.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/017.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/017.xml.ref
index 604d975e15..604d975e15 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/017.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/017.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/018.xml
index 4570903fee..4570903fee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/018.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/018.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/018.xml.ref
index 21117d22b4..21117d22b4 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/018.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/018.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/019.xml
index 3e6b74cbf2..3e6b74cbf2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/019.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/019.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/019.xml.ref
index f95f625b33..f95f625b33 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/019.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/019.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/020.xml
index f749551a1b..f749551a1b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/020.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/020.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/020.xml.ref
index ff6ff3683c..ff6ff3683c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/020.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/020.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/021.xml
index 13dda8c8a5..13dda8c8a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/021.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/021.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/021.xml.ref
index 52bf68a717..52bf68a717 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/021.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/021.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/022.xml
index 41d300e950..41d300e950 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/022.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/022.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/022.xml.ref
index b299ce71ee..b299ce71ee 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/022.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/022.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/023.xml
index 3837b831ad..3837b831ad 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/023.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/023.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/023.xml.ref
index b59c216593..b59c216593 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/023.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/023.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/024.xml
index b0655c634c..b0655c634c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/024.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/024.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/024.xml.ref
index 00f7fce160..00f7fce160 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/024.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/024.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/025.xml
index ed01f36d89..ed01f36d89 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/025.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/025.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/025.xml.ref
index 6a7605c082..6a7605c082 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/025.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/025.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/026.xml
index 1ba033c1a7..1ba033c1a7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/026.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/026.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/026.xml.ref
index 6a7605c082..6a7605c082 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/026.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/026.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/027.xml
index ee02439051..ee02439051 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/027.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/027.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/027.xml.ref
index 6a7605c082..6a7605c082 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/027.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/027.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/028.xml
index 3d95747913..3d95747913 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/028.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/028.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/028.xml.ref
index dcda37de1e..dcda37de1e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/028.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/028.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/029.xml
index 909f6ff712..909f6ff712 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/029.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/029.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/029.xml.ref
index dcda37de1e..dcda37de1e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/029.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/029.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/030.xml
index 3a7ddaa716..3a7ddaa716 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/030.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/030.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/030.xml.ref
index dcda37de1e..dcda37de1e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/030.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/030.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/031.xml
index a58e05867f..a58e05867f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/031.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/031.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/031.xml.ref
index 7d81068e24..7d81068e24 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/031.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/031.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/032.xml
index be55c8d721..be55c8d721 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/032.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/032.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/032.xml.ref
index 96d8f1014d..96d8f1014d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/032.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/032.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/033.xml
index a3f9053868..a3f9053868 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/033.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/033.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/033.xml.ref
index d56d96d584..d56d96d584 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/033.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/033.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/034.xml
index 7d52f31c0e..7d52f31c0e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/034.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/034.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/034.xml.ref
index 37b53fc0b3..37b53fc0b3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/034.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/034.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/035.xml
index f109a8b782..f109a8b782 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/035.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/035.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/035.xml.ref
index 37b53fc0b3..37b53fc0b3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/035.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/035.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/036.xml
index 8ab2b3fb16..8ab2b3fb16 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/036.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/036.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/036.xml.ref
index db2cbb1e8d..db2cbb1e8d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/036.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/036.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/037.xml
index f9b2113940..f9b2113940 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/037.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/037.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/037.xml.ref
index 12d6a77cad..12d6a77cad 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/037.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/037.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/038.xml
index d14f41bfe2..d14f41bfe2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/038.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/038.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/038.xml.ref
index d24c10b495..d24c10b495 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/038.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/038.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/039.xml
index 0897316e46..0897316e46 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/039.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/039.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/039.xml.ref
index 9eb38b42bb..9eb38b42bb 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/039.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/039.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/040.xml
index 12c419b65b..12c419b65b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/040.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/040.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/040.xml.ref
index 81409bdc13..81409bdc13 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/040.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/040.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/041.xml
index a59f536277..a59f536277 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/041.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/041.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/041.xml.ref
index 13f83dffcf..13f83dffcf 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/041.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/041.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/042.xml
index 5d7c650944..5d7c650944 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/042.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/042.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/042.xml.ref
index ed02b8c709..ed02b8c709 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/042.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/042.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/043.xml
index a8095dfe28..a8095dfe28 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/043.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/043.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/043.xml.ref
index 3f898a182a..3f898a182a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/043.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/043.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/044.xml
index bee1d23e1a..bee1d23e1a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/044.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/044.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/044.xml.ref
index daab693b31..daab693b31 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/044.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/044.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/045.xml
index e2567f532d..e2567f532d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/045.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/045.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/045.xml.ref
index 566221ae0d..566221ae0d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/045.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/045.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/046.xml
index c50a2846f9..c50a2846f9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/046.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/046.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/046.xml.ref
index 7b1a28d90c..7b1a28d90c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/046.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/046.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/047.xml
index a4c688cf1a..a4c688cf1a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/047.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/047.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/047.xml.ref
index 3af5bf2d74..3af5bf2d74 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/047.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/047.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/048.xml
index c6b2dedbba..c6b2dedbba 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/048.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/048.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/048.xml.ref
index 0e8482350f..0e8482350f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/048.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/048.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/049.xml
index c3cc797b59..c3cc797b59 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/049.xml
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/049.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/049.xml.ref
index 72897d1943..72897d1943 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/049.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/049.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/050.xml
index 12303b1af2..12303b1af2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/050.xml
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/050.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/050.xml.ref
index 8f39355258..8f39355258 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/050.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/050.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/051.xml
index 7ae8f6c73a..7ae8f6c73a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/051.xml
Binary files differ
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/051.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/051.xml.ref
index 71a89a922c..71a89a922c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/051.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/051.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/052.xml
index 3f33a4c760..3f33a4c760 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/052.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/052.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/052.xml.ref
index 0b806c96a8..0b806c96a8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/052.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/052.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/053.xml
index 0d88f28718..0d88f28718 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/053.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/053.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/053.xml.ref
index 2aa90a79d0..2aa90a79d0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/053.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/053.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/054.xml
index 5d1c88b946..5d1c88b946 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/054.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/054.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/054.xml.ref
index 37b53fc0b3..37b53fc0b3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/054.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/054.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/055.xml
index da0292c5bc..da0292c5bc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/055.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/055.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/055.xml.ref
index dc3312be38..dc3312be38 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/055.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/055.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/056.xml
index 144871b2a3..144871b2a3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/056.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/056.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/056.xml.ref
index ed02b8c709..ed02b8c709 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/056.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/056.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/057.xml
index c1ac849ed1..c1ac849ed1 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/057.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/057.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/057.xml.ref
index 37b53fc0b3..37b53fc0b3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/057.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/057.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/058.xml
index 2ff23b233f..2ff23b233f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/058.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/058.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/058.xml.ref
index 0acf5f4acd..0acf5f4acd 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/058.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/058.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/059.xml
index 2171480ecf..2171480ecf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/059.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/059.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/059.xml.ref
index 8a73895f0d..8a73895f0d 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/059.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/059.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/060.xml
index 6cd6b4386b..6cd6b4386b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/060.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/060.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/060.xml.ref
index ea1cbd40c0..ea1cbd40c0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/060.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/060.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/061.xml
index bbdc152492..bbdc152492 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/061.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/061.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/061.xml.ref
index 72897d1943..72897d1943 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/061.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/061.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/062.xml
index f4ba53090a..f4ba53090a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/062.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/062.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/062.xml.ref
index 8f39355258..8f39355258 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/062.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/062.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/063.xml
index 9668f2da73..9668f2da73 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/063.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/063.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/063.xml.ref
index 71a89a922c..71a89a922c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/063.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/063.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/064.xml
index 74a97aa431..74a97aa431 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/064.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/064.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/064.xml.ref
index 579aeb52f6..579aeb52f6 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/064.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/064.xml.ref
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/065.xml
index f708f2bc17..f708f2bc17 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/065.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/065.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/065.xml.ref
index ba31414499..ba31414499 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/065.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/065.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/066.xml
index a27340b9a7..a27340b9a7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/066.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/066.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/066.xml.ref
index d650af13d3..d650af13d3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/066.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/066.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/067.xml
index a0ccf772a5..a0ccf772a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/067.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/067.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/067.xml.ref
index 9a2358d700..9a2358d700 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/067.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/067.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/068.xml
index 8ed806b9a3..8ed806b9a3 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/068.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/068.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/068.xml.ref
index 8ebf150e48..8ebf150e48 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/068.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/068.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/069.xml
index 2437f60530..2437f60530 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/069.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/069.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/069.xml.ref
index c5685c6d7a..c5685c6d7a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/069.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/069.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/070.xml
index eef097df76..eef097df76 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/070.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/070.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/070.xml.ref
index 2525ef6ae3..2525ef6ae3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/070.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/070.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/071.xml
index ebfba230a4..ebfba230a4 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/071.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/071.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/071.xml.ref
index 0b8e512b33..0b8e512b33 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/071.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/071.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/072.xml
index 6ef39dc49e..6ef39dc49e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/072.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/072.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/072.xml.ref
index 0b8e512b33..0b8e512b33 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/072.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/072.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/073.xml
index 217476d9a9..217476d9a9 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/073.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/073.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/073.xml.ref
index 0b8e512b33..0b8e512b33 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/073.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/073.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/074.xml
index 8b2354ff73..8b2354ff73 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/074.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/074.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/074.xml.ref
index 0b8e512b33..0b8e512b33 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/074.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/074.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/075.xml
index 33c012441a..33c012441a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/075.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/075.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/075.xml.ref
index 0b8e512b33..0b8e512b33 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/075.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/075.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/076.xml
index 65b731cf6d..65b731cf6d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/076.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/076.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/076.xml.ref
index 3145f641b2..3145f641b2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/076.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/076.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/077.xml
index e5f301eac8..e5f301eac8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/077.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/077.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/077.xml.ref
index 0b8e512b33..0b8e512b33 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/077.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/077.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/078.xml
index b31f40f94e..b31f40f94e 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/078.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/078.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/078.xml.ref
index 6b4e3c4f31..6b4e3c4f31 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/078.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/078.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/079.xml
index a3290d6cbb..a3290d6cbb 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/079.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/079.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/079.xml.ref
index 6b4e3c4f31..6b4e3c4f31 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/079.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/079.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/080.xml
index 3208fa9aa5..3208fa9aa5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/080.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/080.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/080.xml.ref
index 0b8e512b33..0b8e512b33 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/080.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/080.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/081.xml
index 51ee1a375c..51ee1a375c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/081.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/081.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/081.xml.ref
index 1bc73000f8..1bc73000f8 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/081.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/081.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/082.xml
index d5245ac51a..d5245ac51a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/082.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/082.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/082.xml.ref
index a333feb826..a333feb826 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/082.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/082.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/083.xml
index 937cfc0bdd..937cfc0bdd 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/083.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/083.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/083.xml.ref
index d52b5aa8b9..d52b5aa8b9 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/083.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/083.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/084.xml
index 82760767aa..82760767aa 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/084.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/084.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/084.xml.ref
index 37b53fc0b3..37b53fc0b3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/084.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/084.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/085.xml
index cf5834f2a5..cf5834f2a5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/085.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/085.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/085.xml.ref
index 8f9cdcc6d0..8f9cdcc6d0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/085.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/085.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/086.xml
index bbc3080db6..bbc3080db6 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/086.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/086.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/086.xml.ref
index b59c216593..b59c216593 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/086.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/086.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/087.xml
index 34797a67d7..34797a67d7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/087.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/087.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/087.xml.ref
index 33d23092ef..33d23092ef 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/087.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/087.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/088.xml
index f97d96848d..f97d96848d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/088.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/088.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/088.xml.ref
index db24f3408f..db24f3408f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/088.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/088.xml.ref
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/089.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/089.xml
index 2d80c8f3fb..2d80c8f3fb 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/089.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/089.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/089.xml.bak b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/089.xml.bak
index 2d80c8f3fb..2d80c8f3fb 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/089.xml.bak
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/089.xml.bak
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/089.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/089.xml.ref
index 7c68c32286..7c68c32286 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/089.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/089.xml.ref
Binary files differ
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/090.xml
index c392c96084..c392c96084 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/090.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/090.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/090.xml.ref
index 1cc0f1e082..1cc0f1e082 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/090.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/090.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/091.xml
index 7343d0f795..7343d0f795 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/091.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/091.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/091.xml.ref
index da92a9d906..da92a9d906 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/091.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/091.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/092.xml
index 627b74ecdf..627b74ecdf 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/092.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/092.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/092.xml.ref
index 3b9e06dc9e..3b9e06dc9e 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/092.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/092.xml.ref
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/093.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/093.xml
index 968acb628f..968acb628f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/093.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/093.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/093.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/093.xml.ref
index 2e8bee6814..2e8bee6814 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/093.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/093.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/094.xml
index 5726e7db6f..5726e7db6f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/094.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/094.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/094.xml.ref
index 4f42980c0b..4f42980c0b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/094.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/094.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/095.xml
index 1fe69596da..1fe69596da 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/095.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/095.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/095.xml.ref
index 567feee5ad..567feee5ad 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/095.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/095.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/096.xml
index a6f8f43620..a6f8f43620 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/096.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/096.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/096.xml.ref
index 1e3200f48c..1e3200f48c 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/096.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/096.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/097.ent
index e06554ace2..e06554ace2 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/097.ent
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/097.xml
index c606afa97f..c606afa97f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/097.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/097.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/097.xml.ref
index b211a094ed..b211a094ed 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/097.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/097.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/098.xml
index 33a64ce5ae..33a64ce5ae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/098.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/098.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/098.xml.ref
index 5108be0763..5108be0763 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/098.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/098.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/099.xml
index 1b7214a137..1b7214a137 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/099.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/099.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/099.xml.ref
index 21cd9bced2..21cd9bced2 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/099.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/099.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/100.xml
index 5b839e76bc..5b839e76bc 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/100.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/100.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/100.xml.ref
index aaeec27038..aaeec27038 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/100.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/100.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/101.xml
index f464484bf5..f464484bf5 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/101.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/101.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/101.xml.ref
index 5b7646c82f..5b7646c82f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/101.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/101.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/102.xml
index f239ff5fee..f239ff5fee 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/102.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/102.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/102.xml.ref
index 75b25052de..75b25052de 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/102.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/102.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/103.xml
index 1dbbd5bb7c..1dbbd5bb7c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/103.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/103.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/103.xml.ref
index 63526243dc..63526243dc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/103.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/103.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/104.xml
index 666f43de0f..666f43de0f 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/104.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/104.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/104.xml.ref
index 2bccd0e3c7..2bccd0e3c7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/104.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/104.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/105.xml
index 6b3af2b847..6b3af2b847 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/105.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/105.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/105.xml.ref
index 2bccd0e3c7..2bccd0e3c7 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/105.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/105.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/106.xml
index 8757c0a5ae..8757c0a5ae 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/106.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/106.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/106.xml.ref
index 1e9cc0949b..1e9cc0949b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/106.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/106.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/107.xml
index 3d2c2566a7..3d2c2566a7 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/107.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/107.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/107.xml.ref
index 803dbc297b..803dbc297b 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/107.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/107.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/108.xml
index e919bf229a..e919bf229a 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/108.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/108.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/108.xml.ref
index 2199bd8fb3..2199bd8fb3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/108.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/108.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/109.xml
index 33fa38e13b..33fa38e13b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/109.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/109.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/109.xml.ref
index 789cb33821..789cb33821 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/109.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/109.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/110.xml
index 0c61c65119..0c61c65119 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/110.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/110.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/110.xml.ref
index 2199bd8fb3..2199bd8fb3 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/110.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/110.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/111.xml
index cb56f264b0..cb56f264b0 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/111.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/111.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/111.xml.ref
index 152e284e58..152e284e58 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/111.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/111.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/112.xml
index 27b6a4c793..27b6a4c793 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/112.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/112.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/112.xml.ref
index f82c6dca3f..f82c6dca3f 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/112.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/112.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/113.xml
index d2edd0f01d..d2edd0f01d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/113.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/113.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/113.xml.ref
index 6342ccc536..6342ccc536 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/113.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/113.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/114.xml
index 52e207096d..52e207096d 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/114.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/114.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/114.xml.ref
index b11750e4b0..b11750e4b0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/114.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/114.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/115.xml
index d939a67010..d939a67010 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/115.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/115.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/115.xml.ref
index 5b09ebd425..5b09ebd425 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/115.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/115.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/116.xml
index 55ab49620b..55ab49620b 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/116.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/116.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/116.xml.ref
index 9bdec9e5cc..9bdec9e5cc 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/116.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/116.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/117.xml
index e4f02b14c8..e4f02b14c8 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/117.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/117.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/117.xml.ref
index 78dd11416a..78dd11416a 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/117.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/117.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/118.xml
index fba6c44668..fba6c44668 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/118.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/118.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/118.xml.ref
index c84da55fe0..c84da55fe0 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/118.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/118.xml.ref
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/119.xml
index 876e74730c..876e74730c 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/119.xml
diff --git a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/119.xml.ref b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/119.xml.ref
index d1c643ee03..d1c643ee03 100644
--- a/tests/auto/qxmlsimplereader/xmldocs/valid/sa/119.xml.ref
+++ b/tests/auto/xml/sax/qxmlsimplereader/xmldocs/valid/sa/119.xml.ref
diff --git a/tests/auto/xml/sax/sax.pro b/tests/auto/xml/sax/sax.pro
new file mode 100644
index 0000000000..13aeb21d07
--- /dev/null
+++ b/tests/auto/xml/sax/sax.pro
@@ -0,0 +1,6 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qxmlinputsource \
+ qxml \
+ qxmlsimplereader \
+
diff --git a/tests/auto/xml/xml.pro b/tests/auto/xml/xml.pro
new file mode 100644
index 0000000000..4b90ffbe13
--- /dev/null
+++ b/tests/auto/xml/xml.pro
@@ -0,0 +1,5 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ dom \
+ sax \
+
diff --git a/tests/benchmarks/benchmarks.pro b/tests/benchmarks/benchmarks.pro
index 0831e6257e..60d7e6f639 100644
--- a/tests/benchmarks/benchmarks.pro
+++ b/tests/benchmarks/benchmarks.pro
@@ -4,7 +4,7 @@ SUBDIRS = \
gui \
network \
-contains(QT_CONFIG, opengl): SUBDIRS += opengl
+# removed-by-refactor contains(QT_CONFIG, opengl): SUBDIRS += opengl
contains(QT_CONFIG, dbus): SUBDIRS += dbus
check-trusted.CONFIG += recursive
diff --git a/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp b/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp
index 79615c67ff..4214a41f5c 100644
--- a/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp
+++ b/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
#include <QtCore>
-#include <QtGui>
+#include <QtWidgets/QTreeView>
#include <qtest.h>
class LotsOfSignals : public QObject
diff --git a/tests/benchmarks/corelib/kernel/qobject/main.cpp b/tests/benchmarks/corelib/kernel/qobject/main.cpp
index 33f1ac7d1c..7ca4144a19 100644
--- a/tests/benchmarks/corelib/kernel/qobject/main.cpp
+++ b/tests/benchmarks/corelib/kernel/qobject/main.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
#include <QtCore>
-#include <QtGui>
+#include <QtWidgets/QTreeView>
#include <qtest.h>
#include "object.h"
#include <qcoreapplication.h>
diff --git a/tests/benchmarks/corelib/kernel/qobject/qobject.pro b/tests/benchmarks/corelib/kernel/qobject/qobject.pro
index f54fae5059..991c965f56 100644
--- a/tests/benchmarks/corelib/kernel/qobject/qobject.pro
+++ b/tests/benchmarks/corelib/kernel/qobject/qobject.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/animation/qanimation/main.cpp b/tests/benchmarks/gui/animation/qanimation/main.cpp
index 7132bd7c78..9c016ba765 100644
--- a/tests/benchmarks/gui/animation/qanimation/main.cpp
+++ b/tests/benchmarks/gui/animation/qanimation/main.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include <QtGui>
+#include <QtWidgets>
#include <qtest.h>
#include "dummyobject.h"
diff --git a/tests/benchmarks/gui/animation/qanimation/qanimation.pro b/tests/benchmarks/gui/animation/qanimation/qanimation.pro
index ce4853f510..c18c7b077a 100644
--- a/tests/benchmarks/gui/animation/qanimation/qanimation.pro
+++ b/tests/benchmarks/gui/animation/qanimation/qanimation.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/qgraphicsanchorlayout.pro b/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
index b5de1c3f7a..f888b45e81 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
index 8edd1232a7..2380ed3e6c 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
@@ -40,10 +40,10 @@
****************************************************************************/
#include <QtTest/QtTest>
-#include <QtGui/qgraphicsanchorlayout.h>
-#include <QtGui/qgraphicslinearlayout.h>
-#include <QtGui/qgraphicswidget.h>
-#include <QtGui/qgraphicsview.h>
+#include <QtWidgets/qgraphicsanchorlayout.h>
+#include <QtWidgets/qgraphicslinearlayout.h>
+#include <QtWidgets/qgraphicswidget.h>
+#include <QtWidgets/qgraphicsview.h>
class tst_QGraphicsAnchorLayout : public QObject
{
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsitem/qgraphicsitem.pro b/tests/benchmarks/gui/graphicsview/qgraphicsitem/qgraphicsitem.pro
index f15ac530a4..f0049fca91 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsitem/qgraphicsitem.pro
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsitem/qgraphicsitem.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsscene/qgraphicsscene.pro b/tests/benchmarks/gui/graphicsview/qgraphicsscene/qgraphicsscene.pro
index 795fbcd171..223e63126b 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsscene/qgraphicsscene.pro
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsscene/qgraphicsscene.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp
index 6ffcbbfee1..62ddcfc5ef 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp
@@ -41,7 +41,7 @@
#include "chip.h"
-#include <QtGui>
+#include <QtWidgets>
Chip::Chip(const QColor &color, int x, int y)
{
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h
index b6338d9916..3e4ef6fe24 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h
@@ -43,7 +43,7 @@
#define CHIP_H
#include <QtGui/QColor>
-#include <QtGui/QGraphicsItem>
+#include <QtWidgets/QGraphicsItem>
class Chip : public QGraphicsItem
{
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
index 4c75a67fd2..bcab432092 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
@@ -42,7 +42,9 @@
#ifndef CHIPTESTER_H
#define CHIPTESTER_H
-#include <QtGui>
+#include <QtWidgets/QGraphicsView>
+#include <QtCore/QEventLoop>
+#include <QtCore/QTime>
QT_FORWARD_DECLARE_CLASS(QGraphicsScene)
QT_FORWARD_DECLARE_CLASS(QGraphicsView)
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.pri b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.pri
index a9e0bf8272..8d02504b73 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.pri
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.pri
@@ -9,4 +9,5 @@ HEADERS += \
RESOURCES += \
chiptester/images.qrc
+QT += widgets
contains(QT_CONFIG, opengl) QT += opengl
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro b/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro
index 2227887053..1d46ab9407 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
index 3b690da6e1..4ff6b15fae 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
@@ -40,11 +40,13 @@
****************************************************************************/
#include <qtest.h>
-#include <QDebug>
-#include <QGraphicsItem>
-#include <QGraphicsScene>
-#include <QGraphicsView>
-#include <QImage>
+#include <QtCore/QDebug>
+#include <QtWidgets/QGraphicsItem>
+#include <QtWidgets/QGraphicsScene>
+#include <QtWidgets/QGraphicsView>
+#include <QtGui/QImage>
+#include <QtGui/QPixmapCache>
+#include <QtWidgets/QDesktopWidget>
#include "chiptester/chiptester.h"
//#define CALLGRIND_DEBUG
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicswidget/qgraphicswidget.pro b/tests/benchmarks/gui/graphicsview/qgraphicswidget/qgraphicswidget.pro
index 2d2f47983d..6e191a767e 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicswidget/qgraphicswidget.pro
+++ b/tests/benchmarks/gui/graphicsview/qgraphicswidget/qgraphicswidget.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/gui.pro b/tests/benchmarks/gui/gui.pro
index d8254583c5..9cf701fa33 100644
--- a/tests/benchmarks/gui/gui.pro
+++ b/tests/benchmarks/gui/gui.pro
@@ -15,4 +15,4 @@ TRUSTED_BENCHMARKS += \
graphicsview/qgraphicsview \
painting/qtracebench
-include(../trusted-benchmarks.pri) \ No newline at end of file
+include(../trusted-benchmarks.pri)
diff --git a/tests/benchmarks/gui/image/qimagereader/qimagereader.pro b/tests/benchmarks/gui/image/qimagereader/qimagereader.pro
index 37f150ea50..9334ee1374 100644
--- a/tests/benchmarks/gui/image/qimagereader/qimagereader.pro
+++ b/tests/benchmarks/gui/image/qimagereader/qimagereader.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp b/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp
index 2ea6d23ba3..904177bff7 100644
--- a/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp
+++ b/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp
@@ -76,8 +76,8 @@ Q_DECLARE_METATYPE(Qt::TransformationMode)
QPixmap rasterPixmap(int width, int height)
{
- QPixmapData *data =
- new QRasterPixmapData(QPixmapData::PixmapType);
+ QPlatformPixmap *data =
+ new QRasterPlatformPixmap(QPlatformPixmap::PixmapType);
data->resize(width, height);
@@ -91,8 +91,8 @@ QPixmap rasterPixmap(const QSize &size)
QPixmap rasterPixmap(const QImage &image)
{
- QPixmapData *data =
- new QRasterPixmapData(QPixmapData::PixmapType);
+ QPlatformPixmap *data =
+ new QRasterPlatformPixmap(QPlatformPixmap::PixmapType);
data->fromImage(image, Qt::AutoColor);
diff --git a/tests/benchmarks/gui/itemviews/qtableview/qtableview.pro b/tests/benchmarks/gui/itemviews/qtableview/qtableview.pro
index 1bdbe0199d..800ce8f756 100644
--- a/tests/benchmarks/gui/itemviews/qtableview/qtableview.pro
+++ b/tests/benchmarks/gui/itemviews/qtableview/qtableview.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/kernel/qapplication/qapplication.pro b/tests/benchmarks/gui/kernel/qapplication/qapplication.pro
index 0a5a394eb8..33f90bd228 100644
--- a/tests/benchmarks/gui/kernel/qapplication/qapplication.pro
+++ b/tests/benchmarks/gui/kernel/qapplication/qapplication.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/kernel/qwidget/qwidget.pro b/tests/benchmarks/gui/kernel/qwidget/qwidget.pro
index 0be7f07a43..ea68f942b5 100644
--- a/tests/benchmarks/gui/kernel/qwidget/qwidget.pro
+++ b/tests/benchmarks/gui/kernel/qwidget/qwidget.pro
@@ -1,5 +1,6 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp b/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
index 1912b97ab1..841036b8bc 100644
--- a/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
@@ -40,7 +40,9 @@
****************************************************************************/
#include <qtest.h>
-#include <QtGui>
+
+#include <QtWidgets/QLayout>
+#include <QtGui/QPainter>
static void processEvents()
{
diff --git a/tests/benchmarks/gui/painting/qpainter/qpainter.pro b/tests/benchmarks/gui/painting/qpainter/qpainter.pro
index 9f5fdf44ca..8d3d7c9549 100644
--- a/tests/benchmarks/gui/painting/qpainter/qpainter.pro
+++ b/tests/benchmarks/gui/painting/qpainter/qpainter.pro
@@ -1,10 +1,10 @@
load(qttest_p4)
+QT += widgets
+QT += gui-private widgets-private
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
-QT += gui-private
-
TEMPLATE = app
TARGET = tst_bench_qpainter
diff --git a/tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp b/tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp
index 27e307b8bc..37a8329151 100644
--- a/tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp
+++ b/tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp
@@ -45,6 +45,7 @@
#include <QDialog>
#include <QImage>
#include <QPaintEngine>
+#include <QTileRules>
#include <math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
@@ -129,8 +130,8 @@ struct PrimitiveSet {
QPixmap rasterPixmap(int width, int height)
{
- QPixmapData *data =
- new QRasterPixmapData(QPixmapData::PixmapType);
+ QPlatformPixmap *data =
+ new QRasterPlatformPixmap(QPlatformPixmap::PixmapType);
data->resize(width, height);
@@ -144,8 +145,8 @@ QPixmap rasterPixmap(const QSize &size)
QPixmap rasterPixmap(const QImage &image)
{
- QPixmapData *data =
- new QRasterPixmapData(QPixmapData::PixmapType);
+ QPlatformPixmap *data =
+ new QRasterPlatformPixmap(QPlatformPixmap::PixmapType);
data->fromImage(image, Qt::AutoColor);
diff --git a/tests/benchmarks/gui/painting/qtbench/qtbench.pro b/tests/benchmarks/gui/painting/qtbench/qtbench.pro
index 21ed8e0121..8c76c587b0 100644
--- a/tests/benchmarks/gui/painting/qtbench/qtbench.pro
+++ b/tests/benchmarks/gui/painting/qtbench/qtbench.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
+QT += widgets
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
diff --git a/tests/benchmarks/gui/painting/qtracebench/qtracebench.pro b/tests/benchmarks/gui/painting/qtracebench/qtracebench.pro
index 6d2c783746..64c1c58293 100644
--- a/tests/benchmarks/gui/painting/qtracebench/qtracebench.pro
+++ b/tests/benchmarks/gui/painting/qtracebench/qtracebench.pro
@@ -1,10 +1,10 @@
load(qttest_p4)
+QT += widgets
+QT += core-private gui-private widgets-private
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
-QT += core-private gui-private
-
TEMPLATE = app
TARGET = tst_qtracebench
diff --git a/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp b/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
index 72f5ea531f..106247806d 100644
--- a/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
+++ b/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
@@ -40,7 +40,16 @@
****************************************************************************/
// This file contains benchmarks for QRect/QRectF functions.
-#include <QtGui>
+#include <QtWidgets/QWidget>
+#include <QtWidgets/QGridLayout>
+#include <QtWidgets/QPushButton>
+#include <QtWidgets/QComboBox>
+#include <QtWidgets/QSpinBox>
+#include <QtWidgets/QCheckBox>
+#include <QtWidgets/QRadioButton>
+#include <QtWidgets/QLabel>
+#include <QtWidgets/QProgressBar>
+#include <QtWidgets/QLineEdit>
#include <qtest.h>
class tst_qstylesheetstyle : public QObject
diff --git a/tests/benchmarks/gui/text/qtext/qtext.pro b/tests/benchmarks/gui/text/qtext/qtext.pro
index 602cc54c57..b1daf69210 100644
--- a/tests/benchmarks/gui/text/qtext/qtext.pro
+++ b/tests/benchmarks/gui/text/qtext/qtext.pro
@@ -1,10 +1,10 @@
load(qttest_p4)
+QT += widgets
+QT += gui-private widgets-private
# do not run benchmarks by default in 'make check'
CONFIG -= testcase
-QT += gui-private
-
TEMPLATE = app
TARGET = tst_bench_QText
diff --git a/tests/benchmarks/network/network.pro b/tests/benchmarks/network/network.pro
index 692a0a1b7e..ec812407f7 100644
--- a/tests/benchmarks/network/network.pro
+++ b/tests/benchmarks/network/network.pro
@@ -2,12 +2,16 @@ TEMPLATE = subdirs
SUBDIRS = \
access \
kernel \
- ssl \
socket
TRUSTED_BENCHMARKS += \
kernel/qhostinfo \
- socket/qtcpserver \
- ssl/qsslsocket
+ socket/qtcpserver
+
+contains(QT_CONFIG, openssl) {
+ SUBDIRS += ssl
+ TRUSTED_BENCHMARKS += ssl/qsslsocket
+}
+
+include(../trusted-benchmarks.pri)
-include(../trusted-benchmarks.pri) \ No newline at end of file